From 7d2aefb366624398d27e0a7a4dab0a7470035ccb Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Wed, 10 Jul 2024 14:50:12 +0200 Subject: [PATCH 01/66] Update documentation for open source release --- .github/config/.licenserc.yaml | 2 + .github/workflows/license.yaml | 2 + LICENSE | 201 +++++++++++++++++++++++++++++++++ README.md | 45 +++++--- 4 files changed, 235 insertions(+), 15 deletions(-) create mode 100644 LICENSE diff --git a/.github/config/.licenserc.yaml b/.github/config/.licenserc.yaml index 4655bb8..51936f2 100644 --- a/.github/config/.licenserc.yaml +++ b/.github/config/.licenserc.yaml @@ -11,6 +11,8 @@ header: - '.github' - '.docker' - '**/*.{md,MD}' + - 'LICENSE' + - 'NOTICE' - 'go.mod' - 'go.sum' diff --git a/.github/workflows/license.yaml b/.github/workflows/license.yaml index 9a2d00b..7e4ff4d 100644 --- a/.github/workflows/license.yaml +++ b/.github/workflows/license.yaml @@ -14,3 +14,5 @@ jobs: license: uses: zaphiro-technologies/github-workflows/.github/workflows/license.yaml@main secrets: inherit + with: + skip-fix: false diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index a9ff1e5..4c0dc4d 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,12 @@ -# Proto Buf +# SynchroGuard's Protocol Buffers -This repository includes the [Protocol Buffer](https://protobuf.dev/) used in -Zaphiro's platform. - -## Requirements +In SynchroGuard, real-time data exchange relies on protocol buffer messages +exchanged over [RabbitMQ](https://www.rabbitmq.com/). Thus, consuming and/or +publishing protocol buffer messages on RabbitMQ is the preferred way to +integrate third parties with SynchroGuard for real-time data exchange. -1. [Golang](https://go.dev/doc/install) -1. [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/) -1. [Go plugins for the protocol compiler](https://grpc.io/docs/languages/go/quickstart/#prerequisites) -1. [Buf](https://buf.build/docs/installation) -1. [proto-gen-md-diagrams](https://github.com/GoogleCloudPlatform/proto-gen-md-diagrams) +This repository includes the [Protocol Buffer](https://protobuf.dev/) used in +Zaphiro's platform and the generated code for GO and Python. ## Available Protocol Buffer @@ -45,18 +42,16 @@ packages: - `Conf2Frame`: a Protocol Buffer used to store PMU configuration frames. - `Stat`: a Protocol Buffer used to store PMU measurement Stat. -## Protocol Buffers Management - All protocol buffers are documented in [docs](./docs). -### Installation +## Installation Currently code is generated for: - [go](go) - [python](python) -#### Python +### Python Installation was tested with poetry: @@ -64,12 +59,32 @@ Installation was tested with poetry: poetry add git+https://github.com/zaphiro-technologies/protobuf.git#v0.0.5 ``` -#### Go +### Go ```bash go install github.com/zaphiro-technologies/protobuf/go@v0.0.5 ``` +## Contributing to Protocol Buffers + +Should you need to modify the protocol buffer message or add new ones, you will +need to set-up the dependencies listed in [Requirements](#requirements). + +Protocol buffers are versioned (current version is v1), and should be developed +following best practices, as implemented by [Buf](https://buf.build) and defined +in [Protobuf programming +guides](https://protobuf.dev/programming-guides/dos-donts/). +In particular, it is important - even more within the same version - to preserve +compatibility, to avoid services breaking up. + +## Requirements + +1. [Golang](https://go.dev/doc/install) +1. [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/) +1. [Go plugins for the protocol compiler](https://grpc.io/docs/languages/go/quickstart/#prerequisites) +1. [Buf](https://buf.build/docs/installation) +1. [proto-gen-md-diagrams](https://github.com/GoogleCloudPlatform/proto-gen-md-diagrams) + ### Generate Code from Protocol Buffers ```bash From a199d3b989702e66ab0dae612d78260608216412 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Wed, 10 Jul 2024 16:05:25 +0200 Subject: [PATCH 02/66] Update golang.yaml --- .github/workflows/golang.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/golang.yaml b/.github/workflows/golang.yaml index 3b01f5b..d7971b6 100644 --- a/.github/workflows/golang.yaml +++ b/.github/workflows/golang.yaml @@ -6,6 +6,7 @@ concurrency: permissions: contents: write + pull-requests: read on: workflow_dispatch: From 6db3a162ed39c65d1970563364d2b03f80f3432e Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 08:18:01 +0200 Subject: [PATCH 03/66] add measurements example go --- .docker/docker-compose.yml | 32 + .docker/rabbitmq/enabled_plugins.conf | 1 + .docker/rabbitmq/init.sh | 62 ++ .docker/rabbitmq/rabbitmq.conf | 1131 +++++++++++++++++++++++++ .vscode/launch.json | 15 + CONTRIBUTING.md | 19 + Makefile | 18 + README.md | 39 +- examples/go/go.mod | 21 + examples/go/go.sum | 57 ++ examples/go/measurements.go | 168 ++++ 11 files changed, 1558 insertions(+), 5 deletions(-) create mode 100644 .docker/docker-compose.yml create mode 100644 .docker/rabbitmq/enabled_plugins.conf create mode 100755 .docker/rabbitmq/init.sh create mode 100644 .docker/rabbitmq/rabbitmq.conf create mode 100644 .vscode/launch.json create mode 100644 CONTRIBUTING.md create mode 100644 examples/go/go.mod create mode 100644 examples/go/go.sum create mode 100644 examples/go/measurements.go diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml new file mode 100644 index 0000000..593711d --- /dev/null +++ b/.docker/docker-compose.yml @@ -0,0 +1,32 @@ +services: + rabbitmq: + image: rabbitmq:3.12.4-management-alpine + container_name: "rabbitmq" + hostname: "rabbitmq" + restart: always + sysctls: + net.core.somaxconn: 4096 + net.ipv4.tcp_max_syn_backlog: 8192 + environment: + - RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_stream advertised_host rabbitmq -rabbit loopback_users "none" + volumes: + - ./rabbitmq/init.sh:/init.sh + - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf + - ./rabbitmq/enabled_plugins.conf:/etc/rabbitmq/enabled_plugins + ports: + - 5672:5672 + - 15672:15672 + - 5552:5552 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:15672"] + interval: 1s + timeout: 2s + retries: 20 + networks: + net: + aliases: + - rabbitmq + +networks: + net: + name: net diff --git a/.docker/rabbitmq/enabled_plugins.conf b/.docker/rabbitmq/enabled_plugins.conf new file mode 100644 index 0000000..cf3b214 --- /dev/null +++ b/.docker/rabbitmq/enabled_plugins.conf @@ -0,0 +1 @@ +[rabbitmq_management,rabbitmq_management_agent,rabbitmq_stream, rabbitmq_stream_management]. \ No newline at end of file diff --git a/.docker/rabbitmq/init.sh b/.docker/rabbitmq/init.sh new file mode 100755 index 0000000..bb5b6a0 --- /dev/null +++ b/.docker/rabbitmq/init.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# config +CONFIG_STREAM="c37-118-configuration" +MEASUREMENT_STREAM="measurement" +NOTIFICATION_EXCHANGE_TYPE="headers" +NOTIFICATION_EXCHANGE="notification" +DEAD_LETTER_EXCHANGE="notification-unprocessed" +NOTIFICATION_QUEUE="notification-data-labview" +TRIGGER_QUEUE="notification-trigger-labview" +TIMEOUT=$((10*60*1000)) +NOTIFICATION_QUEUE_ARGUMENTS="{\"exclusive\":false,\"x-message-ttl\":$TIMEOUT, \"x-dead-letter-exchange\":\"$DEAD_LETTER_EXCHANGE\"}" +BYTES=$((100 * 1000000)) +NOTIFICATION_QUEUE_BINDING_1_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":1}' +NOTIFICATION_QUEUE_BINDING_2_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":2}' +NOTIFICATION_QUEUE_BINDING_3_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":3}' +TRIGGER_QUEUE_BINDING_1_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":4}' +ASYNC_QUEUE_BINDING_1_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":0}' +RABBITMQ_FAULT_EXCHANGE_NAME=fault +RABBITMQ_FAULT_CONSUMER_TAG=fault-storer +RABBITMQ_ESTIMATION_EXCHANGE_NAME=estimated-measurements +RABBITMQ_ESTIMATION_CONSUMER_TAG=estimated-measurements +RABBITMQ_TOPOLOGY_EXCHANGE_NAME=topology +RABBITMQ_TOPOLOGY_CONSUMER_TAG=topology +RABBITMQ_EVENT_EXCHANGE_NAME=event +RABBITMQ_EVENT_CONSUMER_TAG=event-storer +RABBITMQ_STAT_STREAM_NAME=stat +RABBITMQ_STAT_LABVIEW_EXCHANGE_NAME=stat-labview +RABBITMQ_STAT_LABVIEW_QUEUE_NAME=stat-labview +RABBITMQ_ASYNC_QUEUE_NAME=async-measurements + +# Declare the streams and queues +rabbitmqadmin declare queue name="$CONFIG_STREAM" queue_type=stream arguments="{\"x-max-length-bytes\":$BYTES}" +rabbitmqadmin declare queue name="$MEASUREMENT_STREAM" queue_type=stream arguments="{\"x-max-length-bytes\":$BYTES}" +rabbitmqadmin declare queue name="$RABBITMQ_STAT_STREAM_NAME" queue_type=stream arguments="{\"x-max-length-bytes\":$BYTES}" +rabbitmqadmin declare exchange name="$NOTIFICATION_EXCHANGE" type="$NOTIFICATION_EXCHANGE_TYPE" +rabbitmqadmin declare exchange name="$DEAD_LETTER_EXCHANGE" type="fanout" +rabbitmqctl set_policy DLX ".*" "{\"dead-letter-exchange\":\"$DEAD_LETTER_EXCHANGE\"}" --apply-to queues +rabbitmqadmin declare queue name="$NOTIFICATION_QUEUE" durable=true +rabbitmqadmin declare queue name="$TRIGGER_QUEUE" durable=true +rabbitmqadmin declare queue name="$RABBITMQ_ASYNC_QUEUE_NAME" durable=true +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$NOTIFICATION_QUEUE" arguments="$NOTIFICATION_QUEUE_BINDING_1_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$NOTIFICATION_QUEUE" arguments="$NOTIFICATION_QUEUE_BINDING_2_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$NOTIFICATION_QUEUE" arguments="$NOTIFICATION_QUEUE_BINDING_3_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$TRIGGER_QUEUE" arguments="$TRIGGER_QUEUE_BINDING_1_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$RABBITMQ_ASYNC_QUEUE_NAME" arguments="$ASYNC_QUEUE_BINDING_1_ARGUMENTS" +rabbitmqadmin declare exchange name="$RABBITMQ_FAULT_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_FAULT_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_FAULT_EXCHANGE_NAME" destination="$RABBITMQ_FAULT_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_ESTIMATION_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_ESTIMATION_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_ESTIMATION_EXCHANGE_NAME" destination="$RABBITMQ_ESTIMATION_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_TOPOLOGY_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_TOPOLOGY_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_TOPOLOGY_EXCHANGE_NAME" destination="$RABBITMQ_TOPOLOGY_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_EVENT_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_EVENT_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_EVENT_EXCHANGE_NAME" destination="$RABBITMQ_EVENT_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_STAT_LABVIEW_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_STAT_LABVIEW_QUEUE_NAME" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_STAT_LABVIEW_EXCHANGE_NAME" destination="$RABBITMQ_STAT_LABVIEW_QUEUE_NAME" destination_type=queue routing_key="" + diff --git a/.docker/rabbitmq/rabbitmq.conf b/.docker/rabbitmq/rabbitmq.conf new file mode 100644 index 0000000..b018f9e --- /dev/null +++ b/.docker/rabbitmq/rabbitmq.conf @@ -0,0 +1,1131 @@ +## This example configuration file demonstrates various settings +## available via rabbitmq.conf. It primarily focuses core broker settings +## but some tier 1 plugin settings are also covered. +## +## This file is AN EXAMPLE. It is NOT MEANT TO BE USED IN PRODUCTION. Instead of +## copying the entire (large!) file, create or generate a new rabbitmq.conf for the target system +## and populate it with the necessary settings. +## +## See https://rabbitmq.com/configure.html to learn about how to configure RabbitMQ, +## the ini-style format used by rabbitmq.conf, how it is different from `advanced.config`, +## how to verify effective configuration, and so on. +## +## See https://rabbitmq.com/documentation.html for the rest of RabbitMQ documentation. +## +## In case you have questions, please use RabbitMQ community Slack and the rabbitmq-users Google group +## instead of GitHub issues. + +# ====================================== +# Core broker section +# ====================================== + + +## Networking +## ==================== +##x +## Related doc guide: https://rabbitmq.com/networking.html. +## +## By default, RabbitMQ will listen on all interfaces, using +## the standard (reserved) AMQP 0-9-1 and 1.0 port. +## +# listeners.tcp.default = 5672 + + +## To listen on a specific interface, provide an IP address with port. +## For example, to listen only on localhost for both IPv4 and IPv6: +## +# IPv4 +# listeners.tcp.local = 127.0.0.1:5672 +# IPv6 +# listeners.tcp.local_v6 = ::1:5672 + +## You can define multiple listeners using listener names +# listeners.tcp.other_port = 5673 +# listeners.tcp.other_ip = 10.10.10.10:5672 + + +## TLS listeners are configured in the same fashion as TCP listeners, +## including the option to control the choice of interface. +## +# listeners.ssl.default = 5671 + +## It is possible to disable regular TCP (non-TLS) listeners. Clients +## not configured to use TLS and the correct TLS-enabled port won't be able +## to connect to this node. +# listeners.tcp = none + +## Number of Erlang processes that will accept connections for the TCP +## and TLS listeners. +## +# num_acceptors.tcp = 10 +# num_acceptors.ssl = 10 + +## Socket writer will force GC every so many bytes transferred. +## Default is 1 GiB (`1000000000`). Set to 'off' to disable. +## +# socket_writer.gc_threshold = 1000000000 +# +## To disable: +# socket_writer.gc_threshold = off + +## Maximum amount of time allowed for the AMQP 0-9-1 and AMQP 1.0 handshake +## (performed after socket connection and TLS handshake) to complete, in milliseconds. +## +# handshake_timeout = 10000 + +## Set to 'true' to perform reverse DNS lookups when accepting a +## connection. rabbitmqctl and management UI will then display hostnames +## instead of IP addresses. Default value is `false`. +## +# reverse_dns_lookups = false + +## +## Security, Access Control +## ============== +## + +## Related doc guide: https://rabbitmq.com/access-control.html. + +## The default "guest" user is only permitted to access the server +## via a loopback interface (e.g. localhost). +## {loopback_users, [<<"guest">>]}, +## +# loopback_users.guest = true + +## Uncomment the following line if you want to allow access to the +## guest user from anywhere on the network. +# loopback_users.guest = false + +## TLS configuration. +## +## Related doc guide: https://rabbitmq.com/ssl.html. +## +# listeners.ssl.1 = 5671 +# +# ssl_options.verify = verify_peer +# ssl_options.fail_if_no_peer_cert = false +# ssl_options.cacertfile = /path/to/cacert.pem +# ssl_options.certfile = /path/to/cert.pem +# ssl_options.keyfile = /path/to/key.pem +# +# ssl_options.honor_cipher_order = true +# ssl_options.honor_ecc_order = true +# +## These are highly recommended for TLSv1.2 but cannot be used +## with TLSv1.3. If TLSv1.3 is enabled, these lines MUST be removed. +# ssl_options.client_renegotiation = false +# ssl_options.secure_renegotiate = true +# +## Limits what TLS versions the server enables for client TLS +## connections. See https://www.rabbitmq.com/ssl.html#tls-versions for details. +## +## Cutting edge TLS version which requires recent client runtime +## versions and has no cipher suite in common with earlier TLS versions. +# ssl_options.versions.1 = tlsv1.3 +## Enables TLSv1.2 for best compatibility +# ssl_options.versions.2 = tlsv1.2 +## Older TLS versions have known vulnerabilities and are being phased out +## from wide use. + +## Limits what cipher suites the server will use for client TLS +## connections. Narrowing this down can prevent some clients +## from connecting. +## If TLSv1.3 is enabled and cipher suites are overridden, TLSv1.3-specific +## cipher suites must also be explicitly enabled. +## See https://www.rabbitmq.com/ssl.html#cipher-suites and https://wiki.openssl.org/index.php/TLS1.3#Ciphersuites +## for details. +# +## The example below uses TLSv1.3 cipher suites only +# +# ssl_options.ciphers.1 = TLS_AES_256_GCM_SHA384 +# ssl_options.ciphers.2 = TLS_AES_128_GCM_SHA256 +# ssl_options.ciphers.3 = TLS_CHACHA20_POLY1305_SHA256 +# ssl_options.ciphers.4 = TLS_AES_128_CCM_SHA256 +# ssl_options.ciphers.5 = TLS_AES_128_CCM_8_SHA256 +# +## The example below uses TLSv1.2 cipher suites only +# +# ssl_options.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384 +# ssl_options.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384 +# ssl_options.ciphers.3 = ECDHE-ECDSA-AES256-SHA384 +# ssl_options.ciphers.4 = ECDHE-RSA-AES256-SHA384 +# ssl_options.ciphers.5 = ECDH-ECDSA-AES256-GCM-SHA384 +# ssl_options.ciphers.6 = ECDH-RSA-AES256-GCM-SHA384 +# ssl_options.ciphers.7 = ECDH-ECDSA-AES256-SHA384 +# ssl_options.ciphers.8 = ECDH-RSA-AES256-SHA384 +# ssl_options.ciphers.9 = DHE-RSA-AES256-GCM-SHA384 +# ssl_options.ciphers.10 = DHE-DSS-AES256-GCM-SHA384 +# ssl_options.ciphers.11 = DHE-RSA-AES256-SHA256 +# ssl_options.ciphers.12 = DHE-DSS-AES256-SHA256 +# ssl_options.ciphers.13 = ECDHE-ECDSA-AES128-GCM-SHA256 +# ssl_options.ciphers.14 = ECDHE-RSA-AES128-GCM-SHA256 +# ssl_options.ciphers.15 = ECDHE-ECDSA-AES128-SHA256 +# ssl_options.ciphers.16 = ECDHE-RSA-AES128-SHA256 +# ssl_options.ciphers.17 = ECDH-ECDSA-AES128-GCM-SHA256 +# ssl_options.ciphers.18 = ECDH-RSA-AES128-GCM-SHA256 +# ssl_options.ciphers.19 = ECDH-ECDSA-AES128-SHA256 +# ssl_options.ciphers.20 = ECDH-RSA-AES128-SHA256 +# ssl_options.ciphers.21 = DHE-RSA-AES128-GCM-SHA256 +# ssl_options.ciphers.22 = DHE-DSS-AES128-GCM-SHA256 +# ssl_options.ciphers.23 = DHE-RSA-AES128-SHA256 +# ssl_options.ciphers.24 = DHE-DSS-AES128-SHA256 +# ssl_options.ciphers.25 = ECDHE-ECDSA-AES256-SHA +# ssl_options.ciphers.26 = ECDHE-RSA-AES256-SHA +# ssl_options.ciphers.27 = DHE-RSA-AES256-SHA +# ssl_options.ciphers.28 = DHE-DSS-AES256-SHA +# ssl_options.ciphers.29 = ECDH-ECDSA-AES256-SHA +# ssl_options.ciphers.30 = ECDH-RSA-AES256-SHA +# ssl_options.ciphers.31 = ECDHE-ECDSA-AES128-SHA +# ssl_options.ciphers.32 = ECDHE-RSA-AES128-SHA +# ssl_options.ciphers.33 = DHE-RSA-AES128-SHA +# ssl_options.ciphers.34 = DHE-DSS-AES128-SHA +# ssl_options.ciphers.35 = ECDH-ECDSA-AES128-SHA +# ssl_options.ciphers.36 = ECDH-RSA-AES128-SHA + +# ssl_options.bypass_pem_cache = true + +## Select an authentication/authorisation backend to use. +## +## Alternative backends are provided by plugins, such as rabbitmq-auth-backend-ldap. +## +## NB: These settings require certain plugins to be enabled. +## +## Related doc guides: +## +## * https://rabbitmq.com/plugins.html +## * https://rabbitmq.com/access-control.html +## + +# auth_backends.1 = rabbit_auth_backend_internal + +## uses separate backends for authentication and authorisation, +## see below. +# auth_backends.1.authn = rabbit_auth_backend_ldap +# auth_backends.1.authz = rabbit_auth_backend_internal + +## The rabbitmq_auth_backend_ldap plugin allows the broker to +## perform authentication and authorisation by deferring to an +## external LDAP server. +## +## Relevant doc guides: +## +## * https://rabbitmq.com/ldap.html +## * https://rabbitmq.com/access-control.html +## +## uses LDAP for both authentication and authorisation +# auth_backends.1 = rabbit_auth_backend_ldap + +## uses HTTP service for both authentication and +## authorisation +# auth_backends.1 = rabbit_auth_backend_http + +## uses two backends in a chain: HTTP first, then internal +# auth_backends.1 = rabbit_auth_backend_http +# auth_backends.2 = rabbit_auth_backend_internal + +## Authentication +## The built-in mechanisms are 'PLAIN', +## 'AMQPLAIN', and 'EXTERNAL' Additional mechanisms can be added via +## plugins. +## +## Related doc guide: https://rabbitmq.com/authentication.html. +## +# auth_mechanisms.1 = PLAIN +# auth_mechanisms.2 = AMQPLAIN + +## The rabbitmq-auth-mechanism-ssl plugin makes it possible to +## authenticate a user based on the client's x509 (TLS) certificate. +## Related doc guide: https://rabbitmq.com/authentication.html. +## +## To use auth-mechanism-ssl, the EXTERNAL mechanism should +## be enabled: +## +# auth_mechanisms.1 = PLAIN +# auth_mechanisms.2 = AMQPLAIN +# auth_mechanisms.3 = EXTERNAL + +## To force x509 certificate-based authentication on all clients, +## exclude all other mechanisms (note: this will disable password-based +## authentication even for the management UI!): +## +# auth_mechanisms.1 = EXTERNAL + +## This pertains to both the rabbitmq-auth-mechanism-ssl plugin and +## STOMP ssl_cert_login configurations. See the RabbitMQ STOMP plugin +## configuration section later in this file and the README in +## https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl for further +## details. +## +## To use the TLS cert's CN instead of its DN as the username +## +# ssl_cert_login_from = common_name + +## TLS handshake timeout, in milliseconds. +## +# ssl_handshake_timeout = 5000 + + +## +## Loading Definitions +## ==================== +## +## Relevant documentation: https://www.rabbitmq.com/definitions.html#import-on-boot +## +## To import definitions from a local file on node boot, set the +## load_definitions config key to a path of a previously exported +## JSON file with definitions. Does not require management plugin +## to be enabled. +## +# load_definitions = /path/to/definitions/file.json + + +## +## Cluster name +## ==================== +## +# cluster_name = dev3.eng.megacorp.local + +## Password hashing implementation. Will only affect newly +## created users. To recalculate hash for an existing user +## it's necessary to update her password. +## +## To use SHA-512, set to rabbit_password_hashing_sha512. +## +# password_hashing_module = rabbit_password_hashing_sha256 + +## When importing definitions exported from versions earlier +## than 3.6.0, it is possible to go back to MD5 (only do this +## as a temporary measure!) by setting this to rabbit_password_hashing_md5. +## +# password_hashing_module = rabbit_password_hashing_md5 + +## +## Default User / VHost +## ==================== +## + +## On first start RabbitMQ will create a vhost and a user. These +## config items control what gets created. +## Relevant doc guide: https://rabbitmq.com/access-control.html +## +# default_vhost = / +# default_user = guest +# default_pass = guest + +# default_permissions.configure = .* +# default_permissions.read = .* +# default_permissions.write = .* + +## Tags for default user +## +## For more details about tags, see the documentation for the +## Management Plugin at https://rabbitmq.com/management.html. +## +# default_user_tags.administrator = true + +## Define other tags like this: +# default_user_tags.management = true +# default_user_tags.custom_tag = true + +## +## Additional network and protocol related configuration +## ===================================================== +## + +## Set the server AMQP 0-9-1 heartbeat timeout in seconds. +## RabbitMQ nodes will send heartbeat frames at roughly +## the (timeout / 2) interval. Two missed heartbeats from +## a client will close its connection. +## +## Values lower than 6 seconds are very likely to produce +## false positives and are not recommended. +## +## Related doc guides: +## +## * https://rabbitmq.com/heartbeats.html +## * https://rabbitmq.com/networking.html +## +# heartbeat = 60 + +## Set the max permissible size of an AMQP frame (in bytes). +## +# frame_max = 131072 + +## Set the max frame size the server will accept before connection +## tuning occurs +## +# initial_frame_max = 4096 + +## Set the max permissible number of channels per connection. +## 0 means "no limit". +## +# channel_max = 128 + +## Customising TCP Listener (Socket) Configuration. +## +## Related doc guides: +## +## * https://rabbitmq.com/networking.html +## * https://www.erlang.org/doc/man/inet.html#setopts-2 +## + +# tcp_listen_options.backlog = 128 +# tcp_listen_options.nodelay = true +# tcp_listen_options.exit_on_close = false +# +# tcp_listen_options.keepalive = true +# tcp_listen_options.send_timeout = 15000 +# +# tcp_listen_options.buffer = 196608 +# tcp_listen_options.sndbuf = 196608 +# tcp_listen_options.recbuf = 196608 + +## +## Resource Limits & Flow Control +## ============================== +## +## Related doc guide: https://rabbitmq.com/memory.html. + +## Memory-based Flow Control threshold. +## +# vm_memory_high_watermark.relative = 0.4 + +## Alternatively, we can set a limit (in bytes) of RAM used by the node. +## +# vm_memory_high_watermark.absolute = 1073741824 + +## Or you can set absolute value using memory units (with RabbitMQ 3.6.0+). +## Absolute watermark will be ignored if relative is defined! +## +# vm_memory_high_watermark.absolute = 2GB +## +## Supported unit symbols: +## +## k, kiB: kibibytes (2^10 - 1,024 bytes) +## M, MiB: mebibytes (2^20 - 1,048,576 bytes) +## G, GiB: gibibytes (2^30 - 1,073,741,824 bytes) +## kB: kilobytes (10^3 - 1,000 bytes) +## MB: megabytes (10^6 - 1,000,000 bytes) +## GB: gigabytes (10^9 - 1,000,000,000 bytes) + + + +## Fraction of the high watermark limit at which queues start to +## page message out to disc in order to free up memory. +## For example, when vm_memory_high_watermark is set to 0.4 and this value is set to 0.5, +## paging can begin as early as when 20% of total available RAM is used by the node. +## +## Values greater than 1.0 can be dangerous and should be used carefully. +## +## One alternative to this is to use durable queues and publish messages +## as persistent (delivery mode = 2). With this combination queues will +## move messages to disk much more rapidly. +## +## Another alternative is to configure queues to page all messages (both +## persistent and transient) to disk as quickly +## as possible, see https://rabbitmq.com/lazy-queues.html. +## +# vm_memory_high_watermark_paging_ratio = 0.5 + +## Selects Erlang VM memory consumption calculation strategy. Can be `allocated`, `rss` or `legacy` (aliased as `erlang`), +## Introduced in 3.6.11. `rss` is the default as of 3.6.12. +## See https://github.com/rabbitmq/rabbitmq-server/issues/1223 and rabbitmq/rabbitmq-common#224 for background. +# vm_memory_calculation_strategy = rss + +## Interval (in milliseconds) at which we perform the check of the memory +## levels against the watermarks. +## +# memory_monitor_interval = 2500 + +## The total memory available can be calculated from the OS resources +## - default option - or provided as a configuration parameter. +# total_memory_available_override_value = 2GB + +## Set disk free limit (in bytes). Once free disk space reaches this +## lower bound, a disk alarm will be set - see the documentation +## listed above for more details. +## +## Absolute watermark will be ignored if relative is defined! +# disk_free_limit.absolute = 50000 + +## Or you can set it using memory units (same as in vm_memory_high_watermark) +## with RabbitMQ 3.6.0+. +# disk_free_limit.absolute = 500KB +# disk_free_limit.absolute = 50mb +# disk_free_limit.absolute = 5GB + +## Alternatively, we can set a limit relative to total available RAM. +## +## Values lower than 1.0 can be dangerous and should be used carefully. +# disk_free_limit.relative = 2.0 + +## +## Clustering +## ===================== +## +# cluster_partition_handling = ignore + +## Pauses all nodes on the minority side of a partition. The cluster +## MUST have an odd number of nodes (3, 5, etc) +# cluster_partition_handling = pause_minority + +## pause_if_all_down strategy require additional configuration +# cluster_partition_handling = pause_if_all_down + +## Recover strategy. Can be either 'autoheal' or 'ignore' +# cluster_partition_handling.pause_if_all_down.recover = ignore + +## Node names to check +# cluster_partition_handling.pause_if_all_down.nodes.1 = rabbit@localhost +# cluster_partition_handling.pause_if_all_down.nodes.2 = hare@localhost + +## Mirror sync batch size, in messages. Increasing this will speed +## up syncing but total batch size in bytes must not exceed 2 GiB. +## Available in RabbitMQ 3.6.0 or later. +## +# mirroring_sync_batch_size = 4096 + +## Make clustering happen *automatically* at startup. Only applied +## to nodes that have just been reset or started for the first time. +## +## Relevant doc guide: https://rabbitmq.com//cluster-formation.html +## + +# cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config +# +# cluster_formation.classic_config.nodes.1 = rabbit1@hostname +# cluster_formation.classic_config.nodes.2 = rabbit2@hostname +# cluster_formation.classic_config.nodes.3 = rabbit3@hostname +# cluster_formation.classic_config.nodes.4 = rabbit4@hostname + +## DNS-based peer discovery. This backend will list A records +## of the configured hostname and perform reverse lookups for +## the addresses returned. + +# cluster_formation.peer_discovery_backend = rabbit_peer_discovery_dns +# cluster_formation.dns.hostname = discovery.eng.example.local + +## This node's type can be configured. If you are not sure +## what node type to use, always use 'disc'. +# cluster_formation.node_type = disc + +## Interval (in milliseconds) at which we send keepalive messages +## to other cluster members. Note that this is not the same thing +## as net_ticktime; missed keepalive messages will not cause nodes +## to be considered down. +## +# cluster_keepalive_interval = 10000 + +## +## Statistics Collection +## ===================== +## + +## Statistics collection interval (in milliseconds). Increasing +## this will reduce the load on management database. +## +# collect_statistics_interval = 5000 + +## Fine vs. coarse statistics +# +# This value is no longer meant to be configured directly. +# +# See https://www.rabbitmq.com/management.html#fine-stats. + +## +## Ra Settings +## ===================== +## +# raft.segment_max_entries = 65536 +# raft.wal_max_size_bytes = 1048576 +# raft.wal_max_batch_size = 4096 +# raft.snapshot_chunk_size = 1000000 + +## +## Misc/Advanced Options +## ===================== +## +## NB: Change these only if you understand what you are doing! +## + +## To permit or deny a deprecated feature when it is in its +## `permitted_by_default` or `denied_by_default` deprecation phase, the +## default state can be overriden from the configuration. +## +## When a deprecated feature is permitted by default (first phase of the +## deprecation period), it means the feature is available by default and can +## be turned off by setting it to false in the configuration. +## +## When a deprecated feature is denied by default (second phase of the +## deprecation period), it means the feature is unavailable by default but can +## be turned back on by setting it to true in the configuration. +## +## When a deprecated feature is "disconnected" or "removed" (last two phases +## of the deprecation period), it is no longer possible to turn it back on +## from the configuration. +## +# deprecated_features.permit.a_deprecated_feature = true +# deprecated_features.permit.another_deprecated_feature = false + +## Timeout used when waiting for Mnesia tables in a cluster to +## become available. +## +# mnesia_table_loading_retry_timeout = 30000 + +## Retries when waiting for Mnesia tables in the cluster startup. Note that +## this setting is not applied to Mnesia upgrades or node deletions. +## +# mnesia_table_loading_retry_limit = 10 + +## Size in bytes below which to embed messages in the queue index. +## Related doc guide: https://rabbitmq.com/persistence-conf.html +## +# queue_index_embed_msgs_below = 4096 + +## You can also set this size in memory units +## +# queue_index_embed_msgs_below = 4kb + +## Whether or not to enable background periodic forced GC runs for all +## Erlang processes on the node in "waiting" state. +## +## Disabling background GC may reduce latency for client operations, +## keeping it enabled may reduce median RAM usage by the binary heap +## (see https://www.erlang-solutions.com/blog/erlang-garbage-collector.html). +## +## Before trying this option, please take a look at the memory +## breakdown (https://www.rabbitmq.com/memory-use.html). +## +# background_gc_enabled = false + +## Target (desired) interval (in milliseconds) at which we run background GC. +## The actual interval will vary depending on how long it takes to execute +## the operation (can be higher than this interval). Values less than +## 30000 milliseconds are not recommended. +## +# background_gc_target_interval = 60000 + +## Whether or not to enable proxy protocol support. +## Once enabled, clients cannot directly connect to the broker +## anymore. They must connect through a load balancer that sends the +## proxy protocol header to the broker at connection time. +## This setting applies only to AMQP clients, other protocols +## like MQTT or STOMP have their own setting to enable proxy protocol. +## See the plugins documentation for more information. +## +# proxy_protocol = false + +## Overriden product name and version. +## They are set to "RabbitMQ" and the release version by default. +# product.name = RabbitMQ +# product.version = 1.2.3 + +## "Message of the day" file. +## Its content is used to expand the logged and printed banners. +## Default to /etc/rabbitmq/motd on Unix, %APPDATA%\RabbitMQ\motd.txt +## on Windows. +# motd_file = /etc/rabbitmq/motd + +## Consumer timeout +## If a message delivered to a consumer has not been acknowledge before this timer +## triggers the channel will be force closed by the broker. This ensure that +## faultly consumers that never ack will not hold on to messages indefinitely. +## +# consumer_timeout = 900000 + +## ---------------------------------------------------------------------------- +## Advanced Erlang Networking/Clustering Options. +## +## Related doc guide: https://rabbitmq.com/clustering.html +## ---------------------------------------------------------------------------- + +# ====================================== +# Kernel section +# ====================================== + +## Timeout used to detect peer unavailability, including CLI tools. +## Related doc guide: https://www.rabbitmq.com/nettick.html. +## +# net_ticktime = 60 + +## Inter-node communication port range. +## The parameters inet_dist_listen_min and inet_dist_listen_max +## can be configured in the classic config format only. +## Related doc guide: https://www.rabbitmq.com/networking.html#epmd-inet-dist-port-range. + + +## ---------------------------------------------------------------------------- +## RabbitMQ Management Plugin +## +## Related doc guide: https://rabbitmq.com/management.html. +## ---------------------------------------------------------------------------- + +# ======================================= +# Management section +# ======================================= + +## Preload schema definitions from the following JSON file. +## Related doc guide: https://rabbitmq.com/management.html#load-definitions. +## +# management.load_definitions = /path/to/exported/definitions.json + +## Log all requests to the management HTTP API to a file. +## +# management.http_log_dir = /path/to/access.log + +## HTTP listener and embedded Web server settings. +# ## See https://rabbitmq.com/management.html for details. +# +# management.tcp.port = 15672 +# management.tcp.ip = 0.0.0.0 +# +# management.tcp.shutdown_timeout = 7000 +# management.tcp.max_keepalive = 120 +# management.tcp.idle_timeout = 120 +# management.tcp.inactivity_timeout = 120 +# management.tcp.request_timeout = 120 +# management.tcp.compress = true + +## HTTPS listener settings. +## See https://rabbitmq.com/management.html and https://rabbitmq.com/ssl.html for details. +## +# management.ssl.port = 15671 +# management.ssl.cacertfile = /path/to/ca_certificate.pem +# management.ssl.certfile = /path/to/server_certificate.pem +# management.ssl.keyfile = /path/to/server_key.pem + +## More TLS options +# management.ssl.honor_cipher_order = true +# management.ssl.honor_ecc_order = true + +## These are highly recommended for TLSv1.2 but cannot be used +## with TLSv1.3. If TLSv1.3 is enabled, these lines MUST be removed. +# management.ssl.client_renegotiation = false +# management.ssl.secure_renegotiate = true + +## Supported TLS versions +# management.ssl.versions.1 = tlsv1.2 + +## Cipher suites the server is allowed to use +# management.ssl.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384 +# management.ssl.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384 +# management.ssl.ciphers.3 = ECDHE-ECDSA-AES256-SHA384 +# management.ssl.ciphers.4 = ECDHE-RSA-AES256-SHA384 +# management.ssl.ciphers.5 = ECDH-ECDSA-AES256-GCM-SHA384 +# management.ssl.ciphers.6 = ECDH-RSA-AES256-GCM-SHA384 +# management.ssl.ciphers.7 = ECDH-ECDSA-AES256-SHA384 +# management.ssl.ciphers.8 = ECDH-RSA-AES256-SHA384 +# management.ssl.ciphers.9 = DHE-RSA-AES256-GCM-SHA384 + +## URL path prefix for HTTP API and management UI +# management.path_prefix = /a-prefix + +## One of 'basic', 'detailed' or 'none'. See +## https://rabbitmq.com/management.html#fine-stats for more details. +# management.rates_mode = basic + +## Configure how long aggregated data (such as message rates and queue +## lengths) is retained. Please read the plugin's documentation in +## https://rabbitmq.com/management.html#configuration for more +## details. +## Your can use 'minute', 'hour' and 'day' keys or integer key (in seconds) +# management.sample_retention_policies.global.minute = 5 +# management.sample_retention_policies.global.hour = 60 +# management.sample_retention_policies.global.day = 1200 + +# management.sample_retention_policies.basic.minute = 5 +# management.sample_retention_policies.basic.hour = 60 + +# management.sample_retention_policies.detailed.10 = 5 + +## ---------------------------------------------------------------------------- +## RabbitMQ Shovel Plugin +## +## Related doc guide: https://rabbitmq.com/shovel.html +## ---------------------------------------------------------------------------- + +## See advanced.config.example for a Shovel plugin example + + +## ---------------------------------------------------------------------------- +## RabbitMQ STOMP Plugin +## +## Related doc guide: https://rabbitmq.com/stomp.html +## ---------------------------------------------------------------------------- + +# ======================================= +# STOMP section +# ======================================= + +## See https://rabbitmq.com/stomp.html for details. + +## TCP listeners. +## +# stomp.listeners.tcp.1 = 127.0.0.1:61613 +# stomp.listeners.tcp.2 = ::1:61613 + +## TCP listener settings +## +# stomp.tcp_listen_options.backlog = 2048 +# stomp.tcp_listen_options.recbuf = 131072 +# stomp.tcp_listen_options.sndbuf = 131072 +# +# stomp.tcp_listen_options.keepalive = true +# stomp.tcp_listen_options.nodelay = true +# +# stomp.tcp_listen_options.exit_on_close = true +# stomp.tcp_listen_options.send_timeout = 120000 + +## Proxy protocol support +## +# stomp.proxy_protocol = false + +## TLS listeners +## See https://rabbitmq.com/stomp.html and https://rabbitmq.com/ssl.html for details. +# stomp.listeners.ssl.default = 61614 +# +# ssl_options.cacertfile = path/to/cacert.pem +# ssl_options.certfile = path/to/cert.pem +# ssl_options.keyfile = path/to/key.pem +# ssl_options.verify = verify_peer +# ssl_options.fail_if_no_peer_cert = true + + +## Number of Erlang processes that will accept connections for the TCP +## and TLS listeners. +## +# stomp.num_acceptors.tcp = 10 +# stomp.num_acceptors.ssl = 1 + +## Additional TLS options + +## Extract a name from the client's certificate when using TLS. +## +# stomp.ssl_cert_login = true + +## Set a default user name and password. This is used as the default login +## whenever a CONNECT frame omits the login and passcode headers. +## +## Please note that setting this will allow clients to connect without +## authenticating! +## +# stomp.default_user = guest +# stomp.default_pass = guest + +## If a default user is configured, or you have configured use TLS client +## certificate based authentication, you can choose to allow clients to +## omit the CONNECT frame entirely. If set to true, the client is +## automatically connected as the default user or user supplied in the +## TLS certificate whenever the first frame sent on a session is not a +## CONNECT frame. +## +# stomp.implicit_connect = true + +## Whether or not to enable proxy protocol support. +## Once enabled, clients cannot directly connect to the broker +## anymore. They must connect through a load balancer that sends the +## proxy protocol header to the broker at connection time. +## This setting applies only to STOMP clients, other protocols +## like MQTT or AMQP have their own setting to enable proxy protocol. +## See the plugins or broker documentation for more information. +## +# stomp.proxy_protocol = false + +## ---------------------------------------------------------------------------- +## RabbitMQ MQTT Adapter +## +## See https://github.com/rabbitmq/rabbitmq-mqtt/blob/stable/README.md +## for details +## ---------------------------------------------------------------------------- + +# ======================================= +# MQTT section +# ======================================= + +## TCP listener settings. +## +# mqtt.listeners.tcp.1 = 127.0.0.1:61613 +# mqtt.listeners.tcp.2 = ::1:61613 + +## TCP listener options (as per the broker configuration). +## +# mqtt.tcp_listen_options.backlog = 4096 +# mqtt.tcp_listen_options.recbuf = 131072 +# mqtt.tcp_listen_options.sndbuf = 131072 +# +# mqtt.tcp_listen_options.keepalive = true +# mqtt.tcp_listen_options.nodelay = true +# +# mqtt.tcp_listen_options.exit_on_close = true +# mqtt.tcp_listen_options.send_timeout = 120000 + +## TLS listener settings +## ## See https://rabbitmq.com/mqtt.html and https://rabbitmq.com/ssl.html for details. +# +# mqtt.listeners.ssl.default = 8883 +# +# ssl_options.cacertfile = /path/to/tls/ca_certificate_bundle.pem +# ssl_options.certfile = /path/to/tls/server_certificate.pem +# ssl_options.keyfile = /path/to/tls/server_key.pem +# ssl_options.verify = verify_peer +# ssl_options.fail_if_no_peer_cert = true +# + + +## Number of Erlang processes that will accept connections for the TCP +## and TLS listeners. +## +# mqtt.num_acceptors.tcp = 10 +# mqtt.num_acceptors.ssl = 10 + +## Whether or not to enable proxy protocol support. +## Once enabled, clients cannot directly connect to the broker +## anymore. They must connect through a load balancer that sends the +## proxy protocol header to the broker at connection time. +## This setting applies only to STOMP clients, other protocols +## like STOMP or AMQP have their own setting to enable proxy protocol. +## See the plugins or broker documentation for more information. +## +# mqtt.proxy_protocol = false + +## Set the default user name and password used for anonymous connections (when client +## provides no credentials). Anonymous connections are highly discouraged! +## +# mqtt.default_user = guest +# mqtt.default_pass = guest + +## Enable anonymous connections. If this is set to false, clients MUST provide +## credentials in order to connect. See also the mqtt.default_user/mqtt.default_pass +## keys. Anonymous connections are highly discouraged! +## +# mqtt.allow_anonymous = true + +## If you have multiple vhosts, specify the one to which the +## adapter connects. +## +# mqtt.vhost = / + +## Specify the exchange to which messages from MQTT clients are published. +## +# mqtt.exchange = amq.topic + +## Define the maximum Session Expiry Interval in seconds allowed by the server. +## 'infinity' means the session does not expire. +## An MQTT 5.0 client can choose a lower value. +## +# mqtt.max_session_expiry_interval_seconds = 1800 + +## Set the prefetch count (governing the maximum number of unacknowledged +## messages that will be delivered). +## +# mqtt.prefetch = 10 + +## Sets the durable queue type to be used for QoS 1 subscriptions. +## +## Supported types are: +## +## * classic +## * quorum +## +## IMPORTANT: changing this setting requires all existing queues used by +## the MQTT plugin to be DELETED or clients will fail to subscribe. +## So this setting should be used for new clusters. +## +# mqtt.durable_queue_type = classic + + + +## ---------------------------------------------------------------------------- +## RabbitMQ AMQP 1.0 Support +## +## See https://github.com/rabbitmq/rabbitmq-amqp1.0/blob/stable/README.md. +## ---------------------------------------------------------------------------- + +# ======================================= +# AMQP 1.0 section +# ======================================= + + +## Connections that are not authenticated with SASL will connect as this +## account. See the README for more information. +## +## Please note that setting this will allow clients to connect without +## authenticating! +## +# amqp1_0.default_user = guest + +## Enable protocol strict mode. See the README for more information. +## +# amqp1_0.protocol_strict_mode = false + +## Logging settings. +## +## See https://rabbitmq.com/logging.html for details. +## + +## Log directory, taken from the RABBITMQ_LOG_BASE env variable by default. +## +# log.dir = /var/log/rabbitmq + +## Logging to file. Can be false or a filename. +## Default: +# log.file = rabbit.log + +## To disable logging to a file +# log.file = false + +## Log level for file logging +## +# log.file.level = info + +## File rotation config. No rotation by default. +## DO NOT SET rotation date to ''. Leave the value unset if "" is the desired value +# log.file.rotation.date = $D0 +# log.file.rotation.size = 0 + +## Logging to console (can be true or false) +## +# log.console = false + +## Log level for console logging +## +# log.console.level = info + +## Logging to the amq.rabbitmq.log exchange (can be true or false) +## +# log.exchange = false + +## Log level to use when logging to the amq.rabbitmq.log exchange +## +# log.exchange.level = info + + + +## ---------------------------------------------------------------------------- +## RabbitMQ LDAP Plugin +## +## Related doc guide: https://rabbitmq.com/ldap.html. +## +## ---------------------------------------------------------------------------- + +# ======================================= +# LDAP section +# ======================================= + +## +## Connecting to the LDAP server(s) +## ================================ +## + +## Specify servers to bind to. You *must* set this in order for the plugin +## to work properly. +## +# auth_ldap.servers.1 = your-server-name-goes-here + +## You can define multiple servers +# auth_ldap.servers.2 = your-other-server + +## Connect to the LDAP server using TLS +## +# auth_ldap.use_ssl = false + +## Specify the LDAP port to connect to +## +# auth_ldap.port = 389 + +## LDAP connection timeout, in milliseconds or 'infinity' +## +# auth_ldap.timeout = infinity + +## Or number +# auth_ldap.timeout = 500 + +## Enable logging of LDAP queries. +## One of +## - false (no logging is performed) +## - true (verbose logging of the logic used by the plugin) +## - network (as true, but additionally logs LDAP network traffic) +## +## Defaults to false. +## +# auth_ldap.log = false + +## Also can be true or network +# auth_ldap.log = true +# auth_ldap.log = network + +## +## Authentication +## ============== +## + +## Pattern to convert the username given through AMQP to a DN before +## binding +## +# auth_ldap.user_dn_pattern = cn=${username},ou=People,dc=example,dc=com + +## Alternatively, you can convert a username to a Distinguished +## Name via an LDAP lookup after binding. See the documentation for +## full details. + +## When converting a username to a dn via a lookup, set these to +## the name of the attribute that represents the user name, and the +## base DN for the lookup query. +## +# auth_ldap.dn_lookup_attribute = userPrincipalName +# auth_ldap.dn_lookup_base = DC=gopivotal,DC=com + +## Controls how to bind for authorisation queries and also to +## retrieve the details of users logging in without presenting a +## password (e.g., SASL EXTERNAL). +## One of +## - as_user (to bind as the authenticated user - requires a password) +## - anon (to bind anonymously) +## - {UserDN, Password} (to bind with a specified user name and password) +## +## Defaults to 'as_user'. +## +# auth_ldap.other_bind = as_user + +## Or can be more complex: +# auth_ldap.other_bind.user_dn = User +# auth_ldap.other_bind.password = Password + +## If user_dn and password defined - other options is ignored. + +# ----------------------------- +# Too complex section of LDAP +# ----------------------------- + +## +## Authorisation +## ============= +## + +## The LDAP plugin can perform a variety of queries against your +## LDAP server to determine questions of authorisation. +## +## Related doc guide: https://rabbitmq.com/ldap.html#authorisation. + +## Following configuration should be defined in advanced.config file +## DO NOT UNCOMMENT THESE LINES! + +## Set the query to use when determining vhost access +## +## {vhost_access_query, {in_group, +## "ou=${vhost}-users,ou=vhosts,dc=example,dc=com"}}, + +## Set the query to use when determining resource (e.g., queue) access +## +## {resource_access_query, {constant, true}}, + +## Set queries to determine which tags a user has +## +## {tag_queries, []} +# ]}, +# ----------------------------- + +# stream +stream.initial_credits = 100000 +stream.credits_required_for_unblocking = 25000 +stream.frame_max = 2097152 \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..608d3c6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${fileDirname}" + } + ] +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..eab6034 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# CONTRIBUTING + +If you have never made an open source contribution before, here it's a quick +guide: + +1. Find an issue that you are interested in addressing or a feature that you would like to add. +1. Fork the repository associated with the issue to your local GitHub organization. This means that you will have a copy of the repository under your-GitHub-username/repository-name. +1. Clone the repository to your local machine using `git clone https://github.com/github-username/repository-name.git`. +1. Create a new branch for your fix using `git checkout -b branch-name-here`. +1. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. +1. Use `git add insert-paths-of-changed-files-here` to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index. +1. Use `git commit -m "Insert a short message of the changes made here"` to store the contents of the index with a descriptive message. +1. Push the changes to the remote repository using `git push origin branch-name-here`. +1. Submit a pull request to the upstream repository. +1. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so *"Added more log outputting to resolve #4352"*. +1. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! +1. Wait for the pull request to be reviewed by a maintainer. +1. Make changes to the pull request if the reviewing maintainer recommends them. +1. Celebrate your success after your pull request is merged! diff --git a/Makefile b/Makefile index 25c6f13..f85e0f1 100644 --- a/Makefile +++ b/Makefile @@ -31,6 +31,24 @@ docs: proto-lint: buf lint +docker-compose: + docker compose -f .docker/docker-compose.yml up -d + +.PHONY: docker-start +docker-start: docker-compose sleep create-rabbit-defaults + +.PHONY: docker-stop +docker-stop: + docker compose -f .docker/docker-compose.yml down -v + +.PHONY: sleep +sleep: + sleep 10 + +.PHONY: create-rabbit-defaults +create-rabbit-defaults: + docker exec rabbitmq ./init.sh + # Mandatory ci-test: cov # Mandatory if benchmark enabled diff --git a/README.md b/README.md index 4c0dc4d..ba64ddc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# SynchroGuard's Protocol Buffers +# SynchroGuard's Protocol Buffer Messages In SynchroGuard, real-time data exchange relies on protocol buffer messages exchanged over [RabbitMQ](https://www.rabbitmq.com/). Thus, consuming and/or @@ -8,7 +8,7 @@ integrate third parties with SynchroGuard for real-time data exchange. This repository includes the [Protocol Buffer](https://protobuf.dev/) used in Zaphiro's platform and the generated code for GO and Python. -## Available Protocol Buffer +## Available Protocol Buffer Messages At the time being this repository includes the following Protocol Buffer packages: @@ -56,15 +56,42 @@ Currently code is generated for: Installation was tested with poetry: ```bash -poetry add git+https://github.com/zaphiro-technologies/protobuf.git#v0.0.5 +poetry add git+https://github.com/zaphiro-technologies/protobuf.git#v0.0.7 ``` ### Go ```bash -go install github.com/zaphiro-technologies/protobuf/go@v0.0.5 +go get -v github.com/zaphiro-technologies/protobuf/go@v0.0.7 ``` +## Examples + +For your convenience, in the [examples](examples) folder we provide both for +Python and Go, code to: + +- Produce and consume measurements (uses RabbitMQ streams). +- Produce and consume faults (uses RabbitMQ exchanges). + +### Requirements + +- Python 3.12 or Golang 1.21 +- [Docker](https://docs.docker.com/get-docker/) + +### Produce and consume measurements + +#### Python + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the producer `make produce-measurements-python` +1. Launch the consumer `make consume-measurements-python` + +#### Go + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the producer `make produce-measurements-go` +1. Launch the consumer `make consume-measurements-go` + ## Contributing to Protocol Buffers Should you need to modify the protocol buffer message or add new ones, you will @@ -77,7 +104,9 @@ guides](https://protobuf.dev/programming-guides/dos-donts/). In particular, it is important - even more within the same version - to preserve compatibility, to avoid services breaking up. -## Requirements +You find contributing guidelines [here](CONTRIBUTING.md). + +### Requirements 1. [Golang](https://go.dev/doc/install) 1. [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/) diff --git a/examples/go/go.mod b/examples/go/go.mod new file mode 100644 index 0000000..53d6929 --- /dev/null +++ b/examples/go/go.mod @@ -0,0 +1,21 @@ +module github.com/zaphiro-technologies/protobuf/examples/go + +go 1.22.1 + +require ( + github.com/google/uuid v1.6.0 + github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 +) + +require google.golang.org/protobuf v1.34.2 + +require github.com/spaolacci/murmur3 v1.1.0 // indirect + +require ( + github.com/golang/snappy v0.0.4 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/zaphiro-technologies/protobuf v0.0.7 +) diff --git a/examples/go/go.sum b/examples/go/go.sum new file mode 100644 index 0000000..84a82d3 --- /dev/null +++ b/examples/go/go.sum @@ -0,0 +1,57 @@ +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 h1:pUa4ghanp6q4IJHwE9RwLgmVFfReJN+KbQ8ExNEUUoQ= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= +github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= +github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 h1:aStxoALHUFdUouWWtG6f82rW0VE6885q2SGLKGOCZ50= +github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6/go.mod h1:CDeYQ8E+cC96SWnkmdDc5NVEWjmtRBA9JAQrMG/y+MI= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/zaphiro-technologies/protobuf v0.0.7 h1:77G8EcuMQVdRoxPOxb5WUiLEg8uQkVlAx2GzxwGzCEo= +github.com/zaphiro-technologies/protobuf v0.0.7/go.mod h1:/CDMGG5KN/dWrdk0p6BPWKCvRasZYVIAzpamTDRTUQk= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/examples/go/measurements.go b/examples/go/measurements.go new file mode 100644 index 0000000..06027b1 --- /dev/null +++ b/examples/go/measurements.go @@ -0,0 +1,168 @@ +package main + +import ( + "bufio" + "fmt" + "math" + "os" + "time" + + "github.com/google/uuid" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream" + grid "github.com/zaphiro-technologies/protobuf/go/grid/v1" + "google.golang.org/protobuf/proto" +) + +func CheckErr(err error) { + if err != nil { + fmt.Printf("%s ", err) + os.Exit(1) + } +} + +func consumerClose(channelClose stream.ChannelClose) { + event := <-channelClose + fmt.Printf("Consumer: %s closed on the stream: %s, reason: %s \n", event.Name, event.StreamName, event.Reason) +} + +func generateDataID(pmuId int, nMeasures int) map[string]*grid.Data { + dataID := map[string]*grid.Data{} + for k := 0; k < nMeasures; k++ { + id := fmt.Sprintf("Dev%04d-%04d", pmuId, k) + dataTypeInt := 0 + switch { + case k < 1: + dataTypeInt = 13 + case k < 2: + dataTypeInt = 28 + case k < 4: + dataTypeInt = 21 + case k < 9: + dataTypeInt = 20 + case k < 11: + dataTypeInt = 44 + case k < 15: + dataTypeInt = 30 + case k < 18: + dataTypeInt = 31 + case k%2 == 0: + dataTypeInt = 43 + case k%2 == 1: + dataTypeInt = 44 + } + dataType := grid.DataType(dataTypeInt) + dataID[id] = &grid.Data{ + DataType: dataType, + Value: new(uint64), + MeasuredAt: time.Now().UnixMilli(), + } + } + return dataID +} + +func generatePmuDataID(nPmu int, nMeasures int) []*grid.DataSet { + pmuData := []*grid.DataSet{} + for k := 0; k < nPmu; k++ { + id := fmt.Sprintf("Dev%04d", k) + pmuData = append( + pmuData, + &grid.DataSet{ProducerId: id, Data: generateDataID(k, nMeasures)}, + ) + } + return pmuData +} + +func main() { + reader := bufio.NewReader(os.Stdin) + // Set log level, not mandatory by default is INFO + // you cn set DEBUG for more information + // stream.SetLevelInfo(logs.DEBUG) + + fmt.Println("Getting started with Streaming client for RabbitMQ") + fmt.Println("Connecting to RabbitMQ streaming ...") + + // Connect to the broker ( or brokers ) + + env, err := stream.NewEnvironment( + stream.NewEnvironmentOptions(). + SetHost("localhost"). + SetPort(5552). + SetUser("guest"). + SetPassword("guest")) + CheckErr(err) + + // The default stream for measurements in a prod set-up, you don't have to + // create it + + streamName := "measurements" + err = env.DeclareStream(streamName, + &stream.StreamOptions{ + MaxLengthBytes: stream.ByteCapacity{}.GB(2), + }, + ) + + CheckErr(err) + + // Get a new producer for a stream + producer, err := env.NewProducer(streamName, nil) + CheckErr(err) + + // the send method automatically aggregates the messages + // based on batch size + for i := 0; i < 10; i++ { + data := generatePmuDataID(1, 10)[0] + buf, _ := proto.Marshal(data) + message := amqp.NewMessage(buf) + messageProperties := make(map[string]interface{}) + messageProperties["Id"] = uuid.New().String() + messageProperties["type"] = "DataSet" + messageProperties["timestampId"] = int64(math.Round(float64(time.Now().UnixMilli())/20) * 20) + messageProperties["producerId"] = data.GetProducerId() + message.ApplicationProperties = messageProperties + err := producer.Send(message) + CheckErr(err) + } + + // this sleep is not mandatory, just to show the confirmed messages + time.Sleep(1 * time.Second) + err = producer.Close() + CheckErr(err) + + fmt.Println("Sent 10 messages") + + handleMessages := func(consumerContext stream.ConsumerContext, message *amqp.Message) { + + data := &grid.DataSet{} + err := proto.Unmarshal(message.GetData(), data) + for measurement_id, measurement := range data.GetData() { + fmt.Printf("consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", + consumerContext.Consumer.GetName(), measurement_id, measurement.DataType, *measurement.Value, measurement.MeasuredAt) + } + CheckErr(err) + } + + consumer, err := env.NewConsumer( + streamName, + handleMessages, + stream.NewConsumerOptions(). + SetClientProvidedName("my_consumer"). // connection name + SetConsumerName("my_consumer"). // set a consumer name + SetOffset(stream.OffsetSpecification{}.First())) // start consuming from the beginning + + CheckErr(err) + channelClose := consumer.NotifyClose() + // channelClose receives all the closing events, here you can handle the + // client reconnection or just log + defer consumerClose(channelClose) + + fmt.Println("Press any key to stop ") + _, _ = reader.ReadString('\n') + err = consumer.Close() + time.Sleep(200 * time.Millisecond) + CheckErr(err) + err = env.DeleteStream(streamName) + CheckErr(err) + err = env.Close() + CheckErr(err) +} From b9140c9af5c5f64b7c81b51945b7a042768c2211 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 06:19:25 +0000 Subject: [PATCH 04/66] Automated lint fixes [dependabot skip] --- examples/go/measurements.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/examples/go/measurements.go b/examples/go/measurements.go index 06027b1..1100bbd 100644 --- a/examples/go/measurements.go +++ b/examples/go/measurements.go @@ -23,7 +23,12 @@ func CheckErr(err error) { func consumerClose(channelClose stream.ChannelClose) { event := <-channelClose - fmt.Printf("Consumer: %s closed on the stream: %s, reason: %s \n", event.Name, event.StreamName, event.Reason) + fmt.Printf( + "Consumer: %s closed on the stream: %s, reason: %s \n", + event.Name, + event.StreamName, + event.Reason, + ) } func generateDataID(pmuId int, nMeasures int) map[string]*grid.Data { @@ -117,7 +122,9 @@ func main() { messageProperties := make(map[string]interface{}) messageProperties["Id"] = uuid.New().String() messageProperties["type"] = "DataSet" - messageProperties["timestampId"] = int64(math.Round(float64(time.Now().UnixMilli())/20) * 20) + messageProperties["timestampId"] = int64( + math.Round(float64(time.Now().UnixMilli())/20) * 20, + ) messageProperties["producerId"] = data.GetProducerId() message.ApplicationProperties = messageProperties err := producer.Send(message) @@ -136,8 +143,14 @@ func main() { data := &grid.DataSet{} err := proto.Unmarshal(message.GetData(), data) for measurement_id, measurement := range data.GetData() { - fmt.Printf("consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", - consumerContext.Consumer.GetName(), measurement_id, measurement.DataType, *measurement.Value, measurement.MeasuredAt) + fmt.Printf( + "consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", + consumerContext.Consumer.GetName(), + measurement_id, + measurement.DataType, + *measurement.Value, + measurement.MeasuredAt, + ) } CheckErr(err) } From e33283c4d45db7aca2a095a74d79547d5c5fd4db Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 08:24:39 +0200 Subject: [PATCH 05/66] Update docker-compose.yml --- .docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index 593711d..091da9f 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -8,7 +8,7 @@ services: net.core.somaxconn: 4096 net.ipv4.tcp_max_syn_backlog: 8192 environment: - - RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_stream advertised_host rabbitmq -rabbit loopback_users "none" + - RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_stream advertised_host localhost -rabbit loopback_users "none" volumes: - ./rabbitmq/init.sh:/init.sh - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf From f0f009596f26904a40c42ed167ad4df566ba4224 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 12:58:44 +0200 Subject: [PATCH 06/66] add fault example --- Makefile | 8 + README.md | 4 +- examples/go/faults/__debug_bin293364222 | Bin 0 -> 8722434 bytes examples/go/faults/main.go | 202 + examples/go/go.mod | 1 + examples/go/go.sum | 4 + .../{measurements.go => measurements/main.go} | 15 +- .../github.com/golang/snappy/.gitignore | 16 + .../vendor/github.com/golang/snappy/AUTHORS | 18 + .../github.com/golang/snappy/CONTRIBUTORS | 41 + .../vendor/github.com/golang/snappy/LICENSE | 27 + .../go/vendor/github.com/golang/snappy/README | 107 + .../vendor/github.com/golang/snappy/decode.go | 264 + .../github.com/golang/snappy/decode_amd64.s | 490 ++ .../github.com/golang/snappy/decode_arm64.s | 494 ++ .../github.com/golang/snappy/decode_asm.go | 15 + .../github.com/golang/snappy/decode_other.go | 115 + .../vendor/github.com/golang/snappy/encode.go | 289 + .../github.com/golang/snappy/encode_amd64.s | 730 +++ .../github.com/golang/snappy/encode_arm64.s | 722 +++ .../github.com/golang/snappy/encode_asm.go | 30 + .../github.com/golang/snappy/encode_other.go | 238 + .../vendor/github.com/golang/snappy/snappy.go | 98 + .../github.com/google/uuid/CHANGELOG.md | 41 + .../github.com/google/uuid/CONTRIBUTING.md | 26 + .../github.com/google/uuid/CONTRIBUTORS | 9 + .../go/vendor/github.com/google/uuid/LICENSE | 27 + .../vendor/github.com/google/uuid/README.md | 21 + .../go/vendor/github.com/google/uuid/dce.go | 80 + .../go/vendor/github.com/google/uuid/doc.go | 12 + .../go/vendor/github.com/google/uuid/hash.go | 59 + .../vendor/github.com/google/uuid/marshal.go | 38 + .../go/vendor/github.com/google/uuid/node.go | 90 + .../vendor/github.com/google/uuid/node_js.go | 12 + .../vendor/github.com/google/uuid/node_net.go | 33 + .../go/vendor/github.com/google/uuid/null.go | 118 + .../go/vendor/github.com/google/uuid/sql.go | 59 + .../go/vendor/github.com/google/uuid/time.go | 134 + .../go/vendor/github.com/google/uuid/util.go | 43 + .../go/vendor/github.com/google/uuid/uuid.go | 365 ++ .../vendor/github.com/google/uuid/version1.go | 44 + .../vendor/github.com/google/uuid/version4.go | 76 + .../vendor/github.com/google/uuid/version6.go | 56 + .../vendor/github.com/google/uuid/version7.go | 104 + .../klauspost/compress/.gitattributes | 2 + .../github.com/klauspost/compress/.gitignore | 32 + .../klauspost/compress/.goreleaser.yml | 123 + .../github.com/klauspost/compress/LICENSE | 304 + .../github.com/klauspost/compress/README.md | 700 ++ .../github.com/klauspost/compress/SECURITY.md | 25 + .../klauspost/compress/compressible.go | 85 + .../klauspost/compress/fse/README.md | 79 + .../klauspost/compress/fse/bitreader.go | 122 + .../klauspost/compress/fse/bitwriter.go | 167 + .../klauspost/compress/fse/bytereader.go | 47 + .../klauspost/compress/fse/compress.go | 683 ++ .../klauspost/compress/fse/decompress.go | 376 ++ .../github.com/klauspost/compress/fse/fse.go | 144 + .../github.com/klauspost/compress/gen.sh | 4 + .../klauspost/compress/huff0/.gitignore | 1 + .../klauspost/compress/huff0/README.md | 89 + .../klauspost/compress/huff0/bitreader.go | 229 + .../klauspost/compress/huff0/bitwriter.go | 102 + .../klauspost/compress/huff0/compress.go | 742 +++ .../klauspost/compress/huff0/decompress.go | 1167 ++++ .../compress/huff0/decompress_amd64.go | 226 + .../compress/huff0/decompress_amd64.s | 830 +++ .../compress/huff0/decompress_generic.go | 299 + .../klauspost/compress/huff0/huff0.go | 337 + .../compress/internal/cpuinfo/cpuinfo.go | 34 + .../internal/cpuinfo/cpuinfo_amd64.go | 11 + .../compress/internal/cpuinfo/cpuinfo_amd64.s | 36 + .../compress/internal/snapref/LICENSE | 27 + .../compress/internal/snapref/decode.go | 264 + .../compress/internal/snapref/decode_other.go | 113 + .../compress/internal/snapref/encode.go | 289 + .../compress/internal/snapref/encode_other.go | 250 + .../compress/internal/snapref/snappy.go | 98 + .../github.com/klauspost/compress/s2sx.mod | 4 + .../github.com/klauspost/compress/s2sx.sum | 0 .../klauspost/compress/zstd/README.md | 441 ++ .../klauspost/compress/zstd/bitreader.go | 136 + .../klauspost/compress/zstd/bitwriter.go | 112 + .../klauspost/compress/zstd/blockdec.go | 729 +++ .../klauspost/compress/zstd/blockenc.go | 909 +++ .../compress/zstd/blocktype_string.go | 85 + .../klauspost/compress/zstd/bytebuf.go | 131 + .../klauspost/compress/zstd/bytereader.go | 82 + .../klauspost/compress/zstd/decodeheader.go | 261 + .../klauspost/compress/zstd/decoder.go | 948 +++ .../compress/zstd/decoder_options.go | 169 + .../klauspost/compress/zstd/dict.go | 565 ++ .../klauspost/compress/zstd/enc_base.go | 173 + .../klauspost/compress/zstd/enc_best.go | 560 ++ .../klauspost/compress/zstd/enc_better.go | 1252 ++++ .../klauspost/compress/zstd/enc_dfast.go | 1123 ++++ .../klauspost/compress/zstd/enc_fast.go | 891 +++ .../klauspost/compress/zstd/encoder.go | 619 ++ .../compress/zstd/encoder_options.go | 339 + .../klauspost/compress/zstd/framedec.go | 413 ++ .../klauspost/compress/zstd/frameenc.go | 137 + .../klauspost/compress/zstd/fse_decoder.go | 307 + .../compress/zstd/fse_decoder_amd64.go | 65 + .../compress/zstd/fse_decoder_amd64.s | 126 + .../compress/zstd/fse_decoder_generic.go | 73 + .../klauspost/compress/zstd/fse_encoder.go | 701 ++ .../klauspost/compress/zstd/fse_predefined.go | 158 + .../klauspost/compress/zstd/hash.go | 35 + .../klauspost/compress/zstd/history.go | 116 + .../compress/zstd/internal/xxhash/LICENSE.txt | 22 + .../compress/zstd/internal/xxhash/README.md | 71 + .../compress/zstd/internal/xxhash/xxhash.go | 230 + .../zstd/internal/xxhash/xxhash_amd64.s | 210 + .../zstd/internal/xxhash/xxhash_arm64.s | 184 + .../zstd/internal/xxhash/xxhash_asm.go | 16 + .../zstd/internal/xxhash/xxhash_other.go | 76 + .../zstd/internal/xxhash/xxhash_safe.go | 11 + .../klauspost/compress/zstd/matchlen_amd64.go | 16 + .../klauspost/compress/zstd/matchlen_amd64.s | 66 + .../compress/zstd/matchlen_generic.go | 33 + .../klauspost/compress/zstd/seqdec.go | 503 ++ .../klauspost/compress/zstd/seqdec_amd64.go | 394 ++ .../klauspost/compress/zstd/seqdec_amd64.s | 4151 ++++++++++++ .../klauspost/compress/zstd/seqdec_generic.go | 237 + .../klauspost/compress/zstd/seqenc.go | 114 + .../klauspost/compress/zstd/snappy.go | 434 ++ .../github.com/klauspost/compress/zstd/zip.go | 141 + .../klauspost/compress/zstd/zstd.go | 121 + .../vendor/github.com/pierrec/lz4/.gitignore | 34 + .../vendor/github.com/pierrec/lz4/.travis.yml | 24 + .../go/vendor/github.com/pierrec/lz4/LICENSE | 28 + .../vendor/github.com/pierrec/lz4/README.md | 90 + .../go/vendor/github.com/pierrec/lz4/block.go | 413 ++ .../go/vendor/github.com/pierrec/lz4/debug.go | 23 + .../github.com/pierrec/lz4/debug_stub.go | 7 + .../github.com/pierrec/lz4/decode_amd64.go | 8 + .../github.com/pierrec/lz4/decode_amd64.s | 375 ++ .../github.com/pierrec/lz4/decode_other.go | 98 + .../vendor/github.com/pierrec/lz4/errors.go | 30 + .../pierrec/lz4/internal/xxh32/xxh32zero.go | 223 + .../go/vendor/github.com/pierrec/lz4/lz4.go | 116 + .../github.com/pierrec/lz4/lz4_go1.10.go | 29 + .../github.com/pierrec/lz4/lz4_notgo1.10.go | 29 + .../vendor/github.com/pierrec/lz4/reader.go | 335 + .../github.com/pierrec/lz4/reader_legacy.go | 207 + .../vendor/github.com/pierrec/lz4/writer.go | 422 ++ .../github.com/pierrec/lz4/writer_legacy.go | 182 + .../vendor/github.com/pkg/errors/.gitignore | 24 + .../vendor/github.com/pkg/errors/.travis.yml | 10 + .../go/vendor/github.com/pkg/errors/LICENSE | 23 + .../go/vendor/github.com/pkg/errors/Makefile | 44 + .../go/vendor/github.com/pkg/errors/README.md | 59 + .../vendor/github.com/pkg/errors/appveyor.yml | 32 + .../go/vendor/github.com/pkg/errors/errors.go | 288 + .../go/vendor/github.com/pkg/errors/go113.go | 38 + .../go/vendor/github.com/pkg/errors/stack.go | 177 + .../github.com/rabbitmq/amqp091-go/.gitignore | 6 + .../rabbitmq/amqp091-go/.golangci.yml | 3 + .../rabbitmq/amqp091-go/CHANGELOG.md | 363 ++ .../rabbitmq/amqp091-go/CODE_OF_CONDUCT.md | 77 + .../rabbitmq/amqp091-go/CONTRIBUTING.md | 62 + .../github.com/rabbitmq/amqp091-go/LICENSE | 25 + .../github.com/rabbitmq/amqp091-go/Makefile | 57 + .../github.com/rabbitmq/amqp091-go/README.md | 105 + .../github.com/rabbitmq/amqp091-go/RELEASE.md | 16 + .../rabbitmq/amqp091-go/allocator.go | 119 + .../github.com/rabbitmq/amqp091-go/auth.go | 83 + .../github.com/rabbitmq/amqp091-go/certs.sh | 159 + .../rabbitmq/amqp091-go/change_version.sh | 4 + .../github.com/rabbitmq/amqp091-go/channel.go | 1828 ++++++ .../rabbitmq/amqp091-go/confirms.go | 238 + .../rabbitmq/amqp091-go/connection.go | 1172 ++++ .../rabbitmq/amqp091-go/consumers.go | 169 + .../rabbitmq/amqp091-go/delivery.go | 173 + .../github.com/rabbitmq/amqp091-go/doc.go | 160 + .../github.com/rabbitmq/amqp091-go/fuzz.go | 23 + .../github.com/rabbitmq/amqp091-go/gen.ps1 | 14 + .../github.com/rabbitmq/amqp091-go/gen.sh | 2 + .../github.com/rabbitmq/amqp091-go/log.go | 23 + .../github.com/rabbitmq/amqp091-go/read.go | 450 ++ .../github.com/rabbitmq/amqp091-go/return.go | 64 + .../github.com/rabbitmq/amqp091-go/spec091.go | 3382 ++++++++++ .../github.com/rabbitmq/amqp091-go/types.go | 568 ++ .../github.com/rabbitmq/amqp091-go/uri.go | 254 + .../github.com/rabbitmq/amqp091-go/write.go | 426 ++ .../rabbitmq-stream-go-client/LICENSE | 25 + .../pkg/amqp/buffer.go | 157 + .../pkg/amqp/decode.go | 1156 ++++ .../pkg/amqp/encode.go | 589 ++ .../pkg/amqp/error_stdlib.go | 39 + .../pkg/amqp/types.go | 2676 ++++++++ .../rabbitmq-stream-go-client/pkg/logs/log.go | 31 + .../pkg/message/interface.go | 19 + .../pkg/stream/aggregation.go | 360 ++ .../pkg/stream/available_features.go | 149 + .../pkg/stream/brokers.go | 190 + .../pkg/stream/buffer_reader.go | 64 + .../pkg/stream/buffer_writer.go | 159 + .../pkg/stream/client.go | 1121 ++++ .../pkg/stream/constants.go | 232 + .../pkg/stream/consumer.go | 521 ++ .../pkg/stream/converters.go | 85 + .../pkg/stream/coordinator.go | 305 + .../pkg/stream/environment.go | 867 +++ .../pkg/stream/environment_debug.go | 57 + .../pkg/stream/exchange_commands.go | 48 + .../pkg/stream/listeners.go | 20 + .../pkg/stream/producer.go | 703 ++ .../pkg/stream/server_frame.go | 662 ++ .../pkg/stream/socket.go | 83 + .../pkg/stream/stream_options.go | 60 + .../pkg/stream/stream_stats.go | 50 + .../pkg/stream/super_stream.go | 180 + .../pkg/stream/super_stream_consumer.go | 270 + .../pkg/stream/super_stream_producer.go | 416 ++ .../pkg/stream/utils.go | 59 + .../github.com/spaolacci/murmur3/.gitignore | 22 + .../github.com/spaolacci/murmur3/.travis.yml | 7 + .../github.com/spaolacci/murmur3/LICENSE | 24 + .../github.com/spaolacci/murmur3/README.md | 86 + .../github.com/spaolacci/murmur3/murmur.go | 64 + .../github.com/spaolacci/murmur3/murmur128.go | 203 + .../github.com/spaolacci/murmur3/murmur32.go | 167 + .../github.com/spaolacci/murmur3/murmur64.go | 57 + .../protobuf/go/grid/v1/FullGrid_TP.xml | 1137 ++++ .../protobuf/go/grid/v1/data.pb.go | 551 ++ .../protobuf/go/grid/v1/device_event.pb.go | 662 ++ .../protobuf/go/grid/v1/event.pb.go | 343 + .../protobuf/go/grid/v1/fault.pb.go | 821 +++ .../protobuf/go/grid/v1/grid_event.pb.go | 1272 ++++ .../protobuf/go/grid/v1/topology.pb.go | 547 ++ .../vendor/google.golang.org/protobuf/LICENSE | 27 + .../vendor/google.golang.org/protobuf/PATENTS | 22 + .../protobuf/encoding/prototext/decode.go | 772 +++ .../protobuf/encoding/prototext/doc.go | 7 + .../protobuf/encoding/prototext/encode.go | 380 ++ .../protobuf/encoding/protowire/wire.go | 547 ++ .../protobuf/internal/descfmt/stringer.go | 414 ++ .../protobuf/internal/descopts/options.go | 29 + .../protobuf/internal/detrand/rand.go | 69 + .../internal/editiondefaults/defaults.go | 12 + .../editiondefaults/editions_defaults.binpb | Bin 0 -> 93 bytes .../internal/encoding/defval/default.go | 213 + .../encoding/messageset/messageset.go | 242 + .../protobuf/internal/encoding/tag/tag.go | 207 + .../protobuf/internal/encoding/text/decode.go | 686 ++ .../internal/encoding/text/decode_number.go | 211 + .../internal/encoding/text/decode_string.go | 161 + .../internal/encoding/text/decode_token.go | 373 ++ .../protobuf/internal/encoding/text/doc.go | 29 + .../protobuf/internal/encoding/text/encode.go | 272 + .../protobuf/internal/errors/errors.go | 104 + .../protobuf/internal/errors/is_go112.go | 40 + .../protobuf/internal/errors/is_go113.go | 13 + .../protobuf/internal/filedesc/build.go | 157 + .../protobuf/internal/filedesc/desc.go | 733 +++ .../protobuf/internal/filedesc/desc_init.go | 558 ++ .../protobuf/internal/filedesc/desc_lazy.go | 701 ++ .../protobuf/internal/filedesc/desc_list.go | 457 ++ .../internal/filedesc/desc_list_gen.go | 367 ++ .../protobuf/internal/filedesc/editions.go | 156 + .../protobuf/internal/filedesc/placeholder.go | 110 + .../protobuf/internal/filetype/build.go | 296 + .../protobuf/internal/flags/flags.go | 24 + .../internal/flags/proto_legacy_disable.go | 10 + .../internal/flags/proto_legacy_enable.go | 10 + .../protobuf/internal/genid/any_gen.go | 34 + .../protobuf/internal/genid/api_gen.go | 106 + .../protobuf/internal/genid/descriptor_gen.go | 1270 ++++ .../protobuf/internal/genid/doc.go | 11 + .../protobuf/internal/genid/duration_gen.go | 34 + .../protobuf/internal/genid/empty_gen.go | 19 + .../protobuf/internal/genid/field_mask_gen.go | 31 + .../internal/genid/go_features_gen.go | 31 + .../protobuf/internal/genid/goname.go | 25 + .../protobuf/internal/genid/map_entry.go | 16 + .../internal/genid/source_context_gen.go | 31 + .../protobuf/internal/genid/struct_gen.go | 121 + .../protobuf/internal/genid/timestamp_gen.go | 34 + .../protobuf/internal/genid/type_gen.go | 228 + .../protobuf/internal/genid/wrappers.go | 13 + .../protobuf/internal/genid/wrappers_gen.go | 175 + .../protobuf/internal/impl/api_export.go | 177 + .../protobuf/internal/impl/checkinit.go | 141 + .../protobuf/internal/impl/codec_extension.go | 237 + .../protobuf/internal/impl/codec_field.go | 860 +++ .../protobuf/internal/impl/codec_gen.go | 5724 +++++++++++++++++ .../protobuf/internal/impl/codec_map.go | 399 ++ .../protobuf/internal/impl/codec_map_go111.go | 38 + .../protobuf/internal/impl/codec_map_go112.go | 12 + .../protobuf/internal/impl/codec_message.go | 217 + .../internal/impl/codec_messageset.go | 145 + .../protobuf/internal/impl/codec_reflect.go | 210 + .../protobuf/internal/impl/codec_tables.go | 557 ++ .../protobuf/internal/impl/codec_unsafe.go | 18 + .../protobuf/internal/impl/convert.go | 495 ++ .../protobuf/internal/impl/convert_list.go | 141 + .../protobuf/internal/impl/convert_map.go | 121 + .../protobuf/internal/impl/decode.go | 285 + .../protobuf/internal/impl/encode.go | 237 + .../protobuf/internal/impl/enum.go | 21 + .../protobuf/internal/impl/extension.go | 156 + .../protobuf/internal/impl/legacy_enum.go | 219 + .../protobuf/internal/impl/legacy_export.go | 92 + .../internal/impl/legacy_extension.go | 176 + .../protobuf/internal/impl/legacy_file.go | 81 + .../protobuf/internal/impl/legacy_message.go | 572 ++ .../protobuf/internal/impl/merge.go | 176 + .../protobuf/internal/impl/merge_gen.go | 209 + .../protobuf/internal/impl/message.go | 284 + .../protobuf/internal/impl/message_reflect.go | 462 ++ .../internal/impl/message_reflect_field.go | 543 ++ .../internal/impl/message_reflect_gen.go | 271 + .../protobuf/internal/impl/pointer_reflect.go | 215 + .../protobuf/internal/impl/pointer_unsafe.go | 215 + .../protobuf/internal/impl/validate.go | 576 ++ .../protobuf/internal/impl/weak.go | 74 + .../protobuf/internal/order/order.go | 89 + .../protobuf/internal/order/range.go | 115 + .../protobuf/internal/pragma/pragma.go | 29 + .../protobuf/internal/set/ints.go | 58 + .../protobuf/internal/strs/strings.go | 196 + .../protobuf/internal/strs/strings_pure.go | 28 + .../internal/strs/strings_unsafe_go120.go | 95 + .../internal/strs/strings_unsafe_go121.go | 74 + .../protobuf/internal/version/version.go | 79 + .../protobuf/proto/checkinit.go | 71 + .../protobuf/proto/decode.go | 296 + .../protobuf/proto/decode_gen.go | 603 ++ .../google.golang.org/protobuf/proto/doc.go | 86 + .../protobuf/proto/encode.go | 354 + .../protobuf/proto/encode_gen.go | 97 + .../google.golang.org/protobuf/proto/equal.go | 57 + .../protobuf/proto/extension.go | 95 + .../google.golang.org/protobuf/proto/merge.go | 139 + .../protobuf/proto/messageset.go | 98 + .../google.golang.org/protobuf/proto/proto.go | 45 + .../protobuf/proto/proto_methods.go | 20 + .../protobuf/proto/proto_reflect.go | 20 + .../google.golang.org/protobuf/proto/reset.go | 43 + .../google.golang.org/protobuf/proto/size.go | 103 + .../protobuf/proto/size_gen.go | 55 + .../protobuf/proto/wrappers.go | 29 + .../protobuf/reflect/protoreflect/methods.go | 78 + .../protobuf/reflect/protoreflect/proto.go | 513 ++ .../protobuf/reflect/protoreflect/source.go | 129 + .../reflect/protoreflect/source_gen.go | 573 ++ .../protobuf/reflect/protoreflect/type.go | 672 ++ .../protobuf/reflect/protoreflect/value.go | 285 + .../reflect/protoreflect/value_equal.go | 168 + .../reflect/protoreflect/value_pure.go | 60 + .../reflect/protoreflect/value_union.go | 438 ++ .../protoreflect/value_unsafe_go120.go | 99 + .../protoreflect/value_unsafe_go121.go | 87 + .../reflect/protoregistry/registry.go | 882 +++ .../protobuf/runtime/protoiface/legacy.go | 15 + .../protobuf/runtime/protoiface/methods.go | 168 + .../protobuf/runtime/protoimpl/impl.go | 44 + .../protobuf/runtime/protoimpl/version.go | 60 + examples/go/vendor/modules.txt | 67 + 360 files changed, 95060 insertions(+), 7 deletions(-) create mode 100755 examples/go/faults/__debug_bin293364222 create mode 100644 examples/go/faults/main.go rename examples/go/{measurements.go => measurements/main.go} (93%) create mode 100644 examples/go/vendor/github.com/golang/snappy/.gitignore create mode 100644 examples/go/vendor/github.com/golang/snappy/AUTHORS create mode 100644 examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS create mode 100644 examples/go/vendor/github.com/golang/snappy/LICENSE create mode 100644 examples/go/vendor/github.com/golang/snappy/README create mode 100644 examples/go/vendor/github.com/golang/snappy/decode.go create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_amd64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_arm64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_asm.go create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_other.go create mode 100644 examples/go/vendor/github.com/golang/snappy/encode.go create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_amd64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_arm64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_asm.go create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_other.go create mode 100644 examples/go/vendor/github.com/golang/snappy/snappy.go create mode 100644 examples/go/vendor/github.com/google/uuid/CHANGELOG.md create mode 100644 examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md create mode 100644 examples/go/vendor/github.com/google/uuid/CONTRIBUTORS create mode 100644 examples/go/vendor/github.com/google/uuid/LICENSE create mode 100644 examples/go/vendor/github.com/google/uuid/README.md create mode 100644 examples/go/vendor/github.com/google/uuid/dce.go create mode 100644 examples/go/vendor/github.com/google/uuid/doc.go create mode 100644 examples/go/vendor/github.com/google/uuid/hash.go create mode 100644 examples/go/vendor/github.com/google/uuid/marshal.go create mode 100644 examples/go/vendor/github.com/google/uuid/node.go create mode 100644 examples/go/vendor/github.com/google/uuid/node_js.go create mode 100644 examples/go/vendor/github.com/google/uuid/node_net.go create mode 100644 examples/go/vendor/github.com/google/uuid/null.go create mode 100644 examples/go/vendor/github.com/google/uuid/sql.go create mode 100644 examples/go/vendor/github.com/google/uuid/time.go create mode 100644 examples/go/vendor/github.com/google/uuid/util.go create mode 100644 examples/go/vendor/github.com/google/uuid/uuid.go create mode 100644 examples/go/vendor/github.com/google/uuid/version1.go create mode 100644 examples/go/vendor/github.com/google/uuid/version4.go create mode 100644 examples/go/vendor/github.com/google/uuid/version6.go create mode 100644 examples/go/vendor/github.com/google/uuid/version7.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/.gitattributes create mode 100644 examples/go/vendor/github.com/klauspost/compress/.gitignore create mode 100644 examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml create mode 100644 examples/go/vendor/github.com/klauspost/compress/LICENSE create mode 100644 examples/go/vendor/github.com/klauspost/compress/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/SECURITY.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/compressible.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/compress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/decompress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/fse.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/gen.sh create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/compress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/s2sx.mod create mode 100644 examples/go/vendor/github.com/klauspost/compress/s2sx.sum create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/dict.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/hash.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/history.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/zip.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/.gitignore create mode 100644 examples/go/vendor/github.com/pierrec/lz4/.travis.yml create mode 100644 examples/go/vendor/github.com/pierrec/lz4/LICENSE create mode 100644 examples/go/vendor/github.com/pierrec/lz4/README.md create mode 100644 examples/go/vendor/github.com/pierrec/lz4/block.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/debug.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/debug_stub.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s create mode 100644 examples/go/vendor/github.com/pierrec/lz4/decode_other.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/errors.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/lz4.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/reader.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/writer.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go create mode 100644 examples/go/vendor/github.com/pkg/errors/.gitignore create mode 100644 examples/go/vendor/github.com/pkg/errors/.travis.yml create mode 100644 examples/go/vendor/github.com/pkg/errors/LICENSE create mode 100644 examples/go/vendor/github.com/pkg/errors/Makefile create mode 100644 examples/go/vendor/github.com/pkg/errors/README.md create mode 100644 examples/go/vendor/github.com/pkg/errors/appveyor.yml create mode 100644 examples/go/vendor/github.com/pkg/errors/errors.go create mode 100644 examples/go/vendor/github.com/pkg/errors/go113.go create mode 100644 examples/go/vendor/github.com/pkg/errors/stack.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/.gitignore create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/LICENSE create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/README.md create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/LICENSE create mode 100644 examples/go/vendor/google.golang.org/protobuf/PATENTS create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/order/order.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/order/range.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/version/version.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/equal.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/merge.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/messageset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/proto.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/reset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/size.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go create mode 100644 examples/go/vendor/modules.txt diff --git a/Makefile b/Makefile index f85e0f1..869fb48 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,14 @@ sleep: create-rabbit-defaults: docker exec rabbitmq ./init.sh +.PHONY: example-measurements-go +example-measurements-go: + cd examples/go/measurements && go run main.go + +.PHONY: example-faults-go +example-faults-go: + cd examples/go/faults && go run main.go + # Mandatory ci-test: cov # Mandatory if benchmark enabled diff --git a/README.md b/README.md index ba64ddc..b0300ae 100644 --- a/README.md +++ b/README.md @@ -89,8 +89,8 @@ Python and Go, code to: #### Go 1. Set-up the infrastructure using `make docker-start`. -1. Launch the producer `make produce-measurements-go` -1. Launch the consumer `make consume-measurements-go` +1. Launch the example `make example-measurements-go` +1. Press any key to stop ## Contributing to Protocol Buffers diff --git a/examples/go/faults/__debug_bin293364222 b/examples/go/faults/__debug_bin293364222 new file mode 100755 index 0000000000000000000000000000000000000000..976d22c5987bd7542336ee0dc8e5b59df63ae01e GIT binary patch literal 8722434 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 J=1g9-QT5 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.WLt$s&WtfY>d@DLj2?G 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�SOmOkL<8Jm&LkrcF$=8%l*!2mn3r?~D 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 z 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%0AEeLF{a6Jv?Y^Ol^nIjn!6xjd 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 m)d=r^ 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

BhWVJs--|+p)Y{p$`;m)L5G4W@eC8 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

C1!Tj(=PnsQ>B^HyZdfcXpm7wC%%UL0Is)Y5j+ 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

m3d>ZybHV_(nN^^f(&pI@1a^@^8!^sRh# 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

E4H+2W`0d;(vf|Y=Y<24q?tLbAtIPQ#Q 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 M;LwBt+UCx7M+8Lv3tV& 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
  • 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

    {91|{aQAz?{4VkPM`+$aw3>YHmyuCE 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

    XuWbtEV2NOC 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

    Mq@ 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±=JPik?iPRCKk*1u* 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

      em&VteEZU>mdB9&=AMv*5(-X!3}I*BwOc3t_w5Z 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≧O7?0-Z4M3nb{=f&7y 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 z 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�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%0A<>+ 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%0DwNgXt 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

        v3{09%&H|~~LvawzMqJBHR_quX7j_GTY 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 C91blbCc+*}6(SWH@AWlm4opI7gvzXVKS6 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 BNXU{y62R*vY57lZj2KNh{@dk0 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

        JeWKm_%tB9kWm0z||q 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≧R(AWhkJvAR_=!V=?FOws4Zvr0 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

        5sNKSOT1?0>D~JT>8GDFewcq1+ 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

          WrER6PU?W#%&JRn^^ML1E?rlL7b;iG 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 literal 0 HcmV?d00001 diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go new file mode 100644 index 0000000..cd53350 --- /dev/null +++ b/examples/go/faults/main.go @@ -0,0 +1,202 @@ +package main + +import ( + "bufio" + "context" + "fmt" + "math" + "math/rand" + "os" + "time" + + "github.com/google/uuid" + amqp "github.com/rabbitmq/amqp091-go" + grid "github.com/zaphiro-technologies/protobuf/go/grid/v1" + "google.golang.org/protobuf/proto" +) + +func CheckErr(err error) { + if err != nil { + fmt.Printf("%s ", err) + os.Exit(1) + } +} + +func generateFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.Fault { + description := "Example fault" + + tm := math.Round(float64(time.Now().UnixMilli())/20) * 20 + + fault := grid.Fault{ + Description: &description, + Id: fault_id, + Kind: grid.PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND, + Phases: grid.PhaseCode_PHASE_CODE_ABC, + UpdatedAt: int64(tm), + FaultEventType: event_type, + FaultyEquipmentId: faulty_equipment, + MeasurementTimestamp: &measurement_timestamp, + FaultCurrent: &fault_current, + UsedMeasurementIds: used_measurements, + LocationProbability: location_probability, + ImpactedEquipmentIds: impacted_equipments, + } + + return &fault +} + +func generateLineFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.LineFault { + + fault := generateFault(fault_id, event_type, measurement_timestamp, fault_current, location_probability, used_measurements, impacted_equipments, faulty_equipment) + + length_from_terminal1 := rand.Float32() + length_uncertainty := float32(100.0) + + lineFault := grid.LineFault{Fault: fault, LengthFromTerminal1: &length_from_terminal1, LengthUncertainty: &length_uncertainty} + + return &lineFault +} + +func publishMessage(ch *amqp.Channel, ctx context.Context, header amqp.Table, buf []byte) { + err := ch.PublishWithContext(ctx, + "fault", // exchange + "", // routing key + false, // mandatory + false, + amqp.Publishing{ + Headers: header, + DeliveryMode: amqp.Persistent, + Body: buf, + }) + CheckErr(err) +} + +func main() { + reader := bufio.NewReader(os.Stdin) + // Set log level, not mandatory by default is INFO + // you cn set DEBUG for more information + // stream.SetLevelInfo(logs.DEBUG) + + fmt.Println("Getting started with AMPQ client for RabbitMQ") + fmt.Println("Connecting to RabbitMQ ...") + + // Connect to the broker ( or brokers ) + + conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") + CheckErr(err) + defer conn.Close() + ch, err := conn.Channel() + CheckErr(err) + defer ch.Close() + + err = ch.ExchangeDeclare( + "fault", // name + "headers", // type + true, // durable + false, // auto-deleted + false, // internal + false, // no-wait + nil, // arguments + ) + + ctx := context.Background() + + q, err := ch.QueueDeclare( + "fault-storer", // name + true, // durable + false, // delete when unused + false, // exclusive + false, // no-wait + nil, // arguments + ) + + msgs, err := ch.Consume( + q.Name, // queue + "", // consumer + true, // auto-ack + false, // exclusive + false, // no-local + false, // no-wait + nil, // args + ) + CheckErr(err) + + go func() { + for d := range msgs { + + if d.Headers["type"] == "Fault" { + data := &grid.Fault{} + err := proto.Unmarshal(d.Body, data) + CheckErr(err) + fmt.Printf("Received a fault message: %s, event: %s\n", data.Id, data.FaultEventType) + } + + if d.Headers["type"] == "LineFault" { + data := &grid.LineFault{} + err := proto.Unmarshal(d.Body, data) + CheckErr(err) + fmt.Printf("Received a fault message: %s, event: %s\n", data.Fault.Id, data.Fault.FaultEventType) + } + } + }() + + //send messsages + + fault_id := uuid.Must(uuid.NewRandom()).String() + mt := int64(math.Round(float64(time.Now().UnixMilli())/20) * 20) + fault_current := float32(100000.0) + fault_equipment := new(string) + location_probability := new(float32) + impacted_equipments := []string{"EQ-1", "EQ-2", "EQ-3"} + used_measurements := []*grid.FaultMeasurement{{PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}} + + startFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_STARTED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + + header := amqp.Table{ + "id": fault_id, + "producerId": "FL", + "type": "Fault", + } + buf, _ := proto.Marshal(startFaultEvent) + publishMessage(ch, ctx, header, buf) + + time.Sleep(20 * time.Millisecond) + + endFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_ENDED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + buf, _ = proto.Marshal(endFaultEvent) + publishMessage(ch, ctx, header, buf) + + // first potential location + equipment := "EQ-1" + probability := float32(0.33) + header = amqp.Table{ + "id": fault_id, + "producerId": "FL", + "type": "LineFault", + } + + location := generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + buf, _ = proto.Marshal(location) + publishMessage(ch, ctx, header, buf) + + // second potential location + equipment = "EQ-2" + + location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + buf, _ = proto.Marshal(location) + publishMessage(ch, ctx, header, buf) + + // third potential location + equipment = "EQ-3" + + location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + buf, _ = proto.Marshal(location) + publishMessage(ch, ctx, header, buf) + + fmt.Println("Press any key to stop\n") + _, _ = reader.ReadString('\n') + channelCloseQueue := make(chan *amqp.Error) + ch.NotifyClose(channelCloseQueue) + time.Sleep(200 * time.Millisecond) + CheckErr(err) +} diff --git a/examples/go/go.mod b/examples/go/go.mod index 53d6929..adfa21d 100644 --- a/examples/go/go.mod +++ b/examples/go/go.mod @@ -4,6 +4,7 @@ go 1.22.1 require ( github.com/google/uuid v1.6.0 + github.com/rabbitmq/amqp091-go v1.10.0 github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 ) diff --git a/examples/go/go.sum b/examples/go/go.sum index 84a82d3..e45ded3 100644 --- a/examples/go/go.sum +++ b/examples/go/go.sum @@ -32,6 +32,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw= +github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o= github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 h1:aStxoALHUFdUouWWtG6f82rW0VE6885q2SGLKGOCZ50= github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6/go.mod h1:CDeYQ8E+cC96SWnkmdDc5NVEWjmtRBA9JAQrMG/y+MI= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -43,6 +45,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/zaphiro-technologies/protobuf v0.0.7 h1:77G8EcuMQVdRoxPOxb5WUiLEg8uQkVlAx2GzxwGzCEo= github.com/zaphiro-technologies/protobuf v0.0.7/go.mod h1:/CDMGG5KN/dWrdk0p6BPWKCvRasZYVIAzpamTDRTUQk= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= diff --git a/examples/go/measurements.go b/examples/go/measurements/main.go similarity index 93% rename from examples/go/measurements.go rename to examples/go/measurements/main.go index 1100bbd..5fae202 100644 --- a/examples/go/measurements.go +++ b/examples/go/measurements/main.go @@ -4,6 +4,7 @@ import ( "bufio" "fmt" "math" + "math/rand" "os" "time" @@ -57,10 +58,13 @@ func generateDataID(pmuId int, nMeasures int) map[string]*grid.Data { dataTypeInt = 44 } dataType := grid.DataType(dataTypeInt) + // values are stored as uint64 + value := uint64(math.Float64bits(rand.Float64())) + tm := math.Round(float64(time.Now().UnixMilli())/20) * 20 dataID[id] = &grid.Data{ DataType: dataType, - Value: new(uint64), - MeasuredAt: time.Now().UnixMilli(), + Value: &value, + MeasuredAt: int64(tm), } } return dataID @@ -147,9 +151,9 @@ func main() { "consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", consumerContext.Consumer.GetName(), measurement_id, - measurement.DataType, - *measurement.Value, measurement.MeasuredAt, + measurement.DataType.Number(), + *measurement.Value, ) } CheckErr(err) @@ -169,11 +173,12 @@ func main() { // client reconnection or just log defer consumerClose(channelClose) - fmt.Println("Press any key to stop ") + fmt.Println("Press any key to stop\n") _, _ = reader.ReadString('\n') err = consumer.Close() time.Sleep(200 * time.Millisecond) CheckErr(err) + //of course in prod, don't delete the stream :) err = env.DeleteStream(streamName) CheckErr(err) err = env.Close() diff --git a/examples/go/vendor/github.com/golang/snappy/.gitignore b/examples/go/vendor/github.com/golang/snappy/.gitignore new file mode 100644 index 0000000..042091d --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/.gitignore @@ -0,0 +1,16 @@ +cmd/snappytool/snappytool +testdata/bench + +# These explicitly listed benchmark data files are for an obsolete version of +# snappy_test.go. +testdata/alice29.txt +testdata/asyoulik.txt +testdata/fireworks.jpeg +testdata/geo.protodata +testdata/html +testdata/html_x_4 +testdata/kppkn.gtb +testdata/lcet10.txt +testdata/paper-100k.pdf +testdata/plrabn12.txt +testdata/urls.10K diff --git a/examples/go/vendor/github.com/golang/snappy/AUTHORS b/examples/go/vendor/github.com/golang/snappy/AUTHORS new file mode 100644 index 0000000..52ccb5a --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/AUTHORS @@ -0,0 +1,18 @@ +# This is the official list of Snappy-Go authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as +# Name or Organization +# The email address is not required for organizations. + +# Please keep the list sorted. + +Amazon.com, Inc +Damian Gryski +Eric Buth +Google Inc. +Jan Mercl <0xjnml@gmail.com> +Klaus Post +Rodolfo Carvalho +Sebastien Binet diff --git a/examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS b/examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS new file mode 100644 index 0000000..ea6524d --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS @@ -0,0 +1,41 @@ +# This is the official list of people who can contribute +# (and typically have contributed) code to the Snappy-Go repository. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# The submission process automatically checks to make sure +# that people submitting code are listed in this file (by email address). +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# http://code.google.com/legal/individual-cla-v1.0.html +# http://code.google.com/legal/corporate-cla-v1.0.html +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. + +# Names should be added to this file like so: +# Name + +# Please keep the list sorted. + +Alex Legg +Damian Gryski +Eric Buth +Jan Mercl <0xjnml@gmail.com> +Jonathan Swinney +Kai Backman +Klaus Post +Marc-Antoine Ruel +Nigel Tao +Rob Pike +Rodolfo Carvalho +Russ Cox +Sebastien Binet diff --git a/examples/go/vendor/github.com/golang/snappy/LICENSE b/examples/go/vendor/github.com/golang/snappy/LICENSE new file mode 100644 index 0000000..6050c10 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/golang/snappy/README b/examples/go/vendor/github.com/golang/snappy/README new file mode 100644 index 0000000..cea1287 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/README @@ -0,0 +1,107 @@ +The Snappy compression format in the Go programming language. + +To download and install from source: +$ go get github.com/golang/snappy + +Unless otherwise noted, the Snappy-Go source files are distributed +under the BSD-style license found in the LICENSE file. + + + +Benchmarks. + +The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten +or so files, the same set used by the C++ Snappy code (github.com/google/snappy +and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @ +3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29: + +"go test -test.bench=." + +_UFlat0-8 2.19GB/s ± 0% html +_UFlat1-8 1.41GB/s ± 0% urls +_UFlat2-8 23.5GB/s ± 2% jpg +_UFlat3-8 1.91GB/s ± 0% jpg_200 +_UFlat4-8 14.0GB/s ± 1% pdf +_UFlat5-8 1.97GB/s ± 0% html4 +_UFlat6-8 814MB/s ± 0% txt1 +_UFlat7-8 785MB/s ± 0% txt2 +_UFlat8-8 857MB/s ± 0% txt3 +_UFlat9-8 719MB/s ± 1% txt4 +_UFlat10-8 2.84GB/s ± 0% pb +_UFlat11-8 1.05GB/s ± 0% gaviota + +_ZFlat0-8 1.04GB/s ± 0% html +_ZFlat1-8 534MB/s ± 0% urls +_ZFlat2-8 15.7GB/s ± 1% jpg +_ZFlat3-8 740MB/s ± 3% jpg_200 +_ZFlat4-8 9.20GB/s ± 1% pdf +_ZFlat5-8 991MB/s ± 0% html4 +_ZFlat6-8 379MB/s ± 0% txt1 +_ZFlat7-8 352MB/s ± 0% txt2 +_ZFlat8-8 396MB/s ± 1% txt3 +_ZFlat9-8 327MB/s ± 1% txt4 +_ZFlat10-8 1.33GB/s ± 1% pb +_ZFlat11-8 605MB/s ± 1% gaviota + + + +"go test -test.bench=. -tags=noasm" + +_UFlat0-8 621MB/s ± 2% html +_UFlat1-8 494MB/s ± 1% urls +_UFlat2-8 23.2GB/s ± 1% jpg +_UFlat3-8 1.12GB/s ± 1% jpg_200 +_UFlat4-8 4.35GB/s ± 1% pdf +_UFlat5-8 609MB/s ± 0% html4 +_UFlat6-8 296MB/s ± 0% txt1 +_UFlat7-8 288MB/s ± 0% txt2 +_UFlat8-8 309MB/s ± 1% txt3 +_UFlat9-8 280MB/s ± 1% txt4 +_UFlat10-8 753MB/s ± 0% pb +_UFlat11-8 400MB/s ± 0% gaviota + +_ZFlat0-8 409MB/s ± 1% html +_ZFlat1-8 250MB/s ± 1% urls +_ZFlat2-8 12.3GB/s ± 1% jpg +_ZFlat3-8 132MB/s ± 0% jpg_200 +_ZFlat4-8 2.92GB/s ± 0% pdf +_ZFlat5-8 405MB/s ± 1% html4 +_ZFlat6-8 179MB/s ± 1% txt1 +_ZFlat7-8 170MB/s ± 1% txt2 +_ZFlat8-8 189MB/s ± 1% txt3 +_ZFlat9-8 164MB/s ± 1% txt4 +_ZFlat10-8 479MB/s ± 1% pb +_ZFlat11-8 270MB/s ± 1% gaviota + + + +For comparison (Go's encoded output is byte-for-byte identical to C++'s), here +are the numbers from C++ Snappy's + +make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log + +BM_UFlat/0 2.4GB/s html +BM_UFlat/1 1.4GB/s urls +BM_UFlat/2 21.8GB/s jpg +BM_UFlat/3 1.5GB/s jpg_200 +BM_UFlat/4 13.3GB/s pdf +BM_UFlat/5 2.1GB/s html4 +BM_UFlat/6 1.0GB/s txt1 +BM_UFlat/7 959.4MB/s txt2 +BM_UFlat/8 1.0GB/s txt3 +BM_UFlat/9 864.5MB/s txt4 +BM_UFlat/10 2.9GB/s pb +BM_UFlat/11 1.2GB/s gaviota + +BM_ZFlat/0 944.3MB/s html (22.31 %) +BM_ZFlat/1 501.6MB/s urls (47.78 %) +BM_ZFlat/2 14.3GB/s jpg (99.95 %) +BM_ZFlat/3 538.3MB/s jpg_200 (73.00 %) +BM_ZFlat/4 8.3GB/s pdf (83.30 %) +BM_ZFlat/5 903.5MB/s html4 (22.52 %) +BM_ZFlat/6 336.0MB/s txt1 (57.88 %) +BM_ZFlat/7 312.3MB/s txt2 (61.91 %) +BM_ZFlat/8 353.1MB/s txt3 (54.99 %) +BM_ZFlat/9 289.9MB/s txt4 (66.26 %) +BM_ZFlat/10 1.2GB/s pb (19.68 %) +BM_ZFlat/11 527.4MB/s gaviota (37.72 %) diff --git a/examples/go/vendor/github.com/golang/snappy/decode.go b/examples/go/vendor/github.com/golang/snappy/decode.go new file mode 100644 index 0000000..23c6e26 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode.go @@ -0,0 +1,264 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt reports that the input is invalid. + ErrCorrupt = errors.New("snappy: corrupt input") + // ErrTooLarge reports that the uncompressed length is too large. + ErrTooLarge = errors.New("snappy: decoded block is too large") + // ErrUnsupported reports that the input isn't supported. + ErrUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// DecodedLen returns the length of the decoded block. +func DecodedLen(src []byte) (int, error) { + v, _, err := decodedLen(src) + return v, err +} + +// decodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func decodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrTooLarge + } + return int(v), n, nil +} + +const ( + decodeErrCodeCorrupt = 1 + decodeErrCodeUnsupportedLiteralLength = 2 +) + +// Decode returns the decoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire decoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Decode handles the Snappy block format, not the Snappy stream format. +func Decode(dst, src []byte) ([]byte, error) { + dLen, s, err := decodedLen(src) + if err != nil { + return nil, err + } + if dLen <= len(dst) { + dst = dst[:dLen] + } else { + dst = make([]byte, dLen) + } + switch decode(dst, src[s:]) { + case 0: + return dst, nil + case decodeErrCodeUnsupportedLiteralLength: + return nil, errUnsupportedLiteralLength + } + return nil, ErrCorrupt +} + +// NewReader returns a new Reader that decompresses from r, using the framing +// format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +func NewReader(r io.Reader) *Reader { + return &Reader{ + r: r, + decoded: make([]byte, maxBlockSize), + buf: make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), + } +} + +// Reader is an io.Reader that can read Snappy-compressed bytes. +// +// Reader handles the Snappy stream format, not the Snappy block format. +type Reader struct { + r io.Reader + err error + decoded []byte + buf []byte + // decoded[i:j] contains decoded bytes that have not yet been passed on. + i, j int + readHeader bool +} + +// Reset discards any buffered data, resets all state, and switches the Snappy +// reader to read from r. This permits reusing a Reader rather than allocating +// a new one. +func (r *Reader) Reset(reader io.Reader) { + r.r = reader + r.err = nil + r.i = 0 + r.j = 0 + r.readHeader = false +} + +func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrCorrupt + } + return false + } + return true +} + +func (r *Reader) fill() error { + for r.i >= r.j { + if !r.readFull(r.buf[:4], true) { + return r.err + } + chunkType := r.buf[0] + if !r.readHeader { + if chunkType != chunkTypeStreamIdentifier { + r.err = ErrCorrupt + return r.err + } + r.readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + r.err = ErrUnsupported + return r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[checksumSize:] + + n, err := DecodedLen(buf) + if err != nil { + r.err = err + return r.err + } + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if _, err := Decode(r.decoded, buf); err != nil { + r.err = err + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeUncompressedData: + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:checksumSize] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - checksumSize + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.decoded[:n], false) { + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeStreamIdentifier: + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(magicBody) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.buf[:len(magicBody)], false) { + return r.err + } + for i := 0; i < len(magicBody); i++ { + if r.buf[i] != magicBody[i] { + r.err = ErrCorrupt + return r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + r.err = ErrUnsupported + return r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return r.err + } + } + + return nil +} + +// Read satisfies the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + n := copy(p, r.decoded[r.i:r.j]) + r.i += n + return n, nil +} + +// ReadByte satisfies the io.ByteReader interface. +func (r *Reader) ReadByte() (byte, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + c := r.decoded[r.i] + r.i++ + return c, nil +} diff --git a/examples/go/vendor/github.com/golang/snappy/decode_amd64.s b/examples/go/vendor/github.com/golang/snappy/decode_amd64.s new file mode 100644 index 0000000..e6179f6 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_amd64.s @@ -0,0 +1,490 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - AX scratch +// - BX scratch +// - CX length or x +// - DX offset +// - SI &src[s] +// - DI &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly DI - R8, and len(dst)-d is R10 - DI. +// The s variable is implicitly SI - R11, and len(src)-s is R13 - SI. +TEXT ·decode(SB), NOSPLIT, $48-56 + // Initialize SI, DI and R8-R13. + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, DI + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, SI + MOVQ R11, R13 + ADDQ R12, R13 + +loop: + // for s < len(src) + CMPQ SI, R13 + JEQ end + + // CX = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBLZX (SI), CX + MOVL CX, BX + ANDL $3, BX + CMPL BX, $1 + JAE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + SHRL $2, CX + CMPL CX, $60 + JAE tagLit60Plus + + // case x < 60: + // s++ + INCQ SI + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that CX == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // CX can hold 64 bits, so the increment cannot overflow. + INCQ CX + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // AX = len(dst) - d + // BX = len(src) - s + MOVQ R10, AX + SUBQ DI, AX + MOVQ R13, BX + SUBQ SI, BX + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMPQ CX, $16 + JGT callMemmove + CMPQ AX, $16 + JLT callMemmove + CMPQ BX, $16 + JLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(SI), X0 + MOVOU X0, 0(DI) + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMPQ CX, AX + JGT errCorrupt + CMPQ CX, BX + JGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // DI, SI and CX as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVQ DI, 0(SP) + MOVQ SI, 8(SP) + MOVQ CX, 16(SP) + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, R13 + ADDQ R12, R13 + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADDQ CX, SI + SUBQ $58, SI + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // case x == 60: + CMPL CX, $61 + JEQ tagLit61 + JA tagLit62Plus + + // x = uint32(src[s-1]) + MOVBLZX -1(SI), CX + JMP doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVWLZX -2(SI), CX + JMP doLit + +tagLit62Plus: + CMPL CX, $62 + JA tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVWLZX -3(SI), CX + MOVBLZX -1(SI), BX + SHLL $16, BX + ORL BX, CX + JMP doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVL -4(SI), CX + JMP doLit + +// The code above handles literal tags. +// ---------------------------------------- +// The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADDQ $5, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-5])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVLQZX -4(SI), DX + JMP doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADDQ $3, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-3])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVWQZX -2(SI), DX + JMP doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - BX == src[s] & 0x03 + // - CX == src[s] + CMPQ BX, $2 + JEQ tagCopy2 + JA tagCopy4 + + // case tagCopy1: + // s += 2 + ADDQ $2, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVQ CX, DX + ANDQ $0xe0, DX + SHLQ $3, DX + MOVBQZX -1(SI), BX + ORQ BX, DX + + // length = 4 + int(src[s-2])>>2&0x7 + SHRQ $2, CX + ANDQ $7, CX + ADDQ $4, CX + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - CX == length && CX > 0 + // - DX == offset + + // if offset <= 0 { etc } + CMPQ DX, $0 + JLE errCorrupt + + // if d < offset { etc } + MOVQ DI, BX + SUBQ R8, BX + CMPQ BX, DX + JLT errCorrupt + + // if length > len(dst)-d { etc } + MOVQ R10, BX + SUBQ DI, BX + CMPQ CX, BX + JGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVQ R10, R14 + SUBQ DI, R14 + MOVQ DI, R15 + SUBQ DX, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMPQ CX, $16 + JGT slowForwardCopy + CMPQ DX, $8 + JLT slowForwardCopy + CMPQ R14, $16 + JLT slowForwardCopy + MOVQ 0(R15), AX + MOVQ AX, 0(DI) + MOVQ 8(R15), BX + MOVQ BX, 8(DI) + ADDQ CX, DI + JMP loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUBQ $10, R14 + CMPQ CX, R14 + JGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMPQ DX, $8 + JGE fixUpSlowForwardCopy + MOVQ (R15), BX + MOVQ BX, (DI) + SUBQ DX, CX + ADDQ DX, DI + ADDQ DX, DX + JMP makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by DI being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save DI to AX so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVQ DI, AX + ADDQ CX, DI + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + CMPQ CX, $0 + JLE loop + MOVQ (R15), BX + MOVQ BX, (AX) + ADDQ $8, R15 + ADDQ $8, AX + SUBQ $8, CX + JMP finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), BX + MOVB BX, (DI) + INCQ R15 + INCQ DI + DECQ CX + JNZ verySlowForwardCopy + JMP loop + +// The code above handles copy tags. +// ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMPQ DI, R10 + JNE errCorrupt + + // return 0 + MOVQ $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVQ $1, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/decode_arm64.s b/examples/go/vendor/github.com/golang/snappy/decode_arm64.s new file mode 100644 index 0000000..7a3ead1 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_arm64.s @@ -0,0 +1,494 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - R2 scratch +// - R3 scratch +// - R4 length or x +// - R5 offset +// - R6 &src[s] +// - R7 &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly R7 - R8, and len(dst)-d is R10 - R7. +// The s variable is implicitly R6 - R11, and len(src)-s is R13 - R6. +TEXT ·decode(SB), NOSPLIT, $56-56 + // Initialize R6, R7 and R8-R13. + MOVD dst_base+0(FP), R8 + MOVD dst_len+8(FP), R9 + MOVD R8, R7 + MOVD R8, R10 + ADD R9, R10, R10 + MOVD src_base+24(FP), R11 + MOVD src_len+32(FP), R12 + MOVD R11, R6 + MOVD R11, R13 + ADD R12, R13, R13 + +loop: + // for s < len(src) + CMP R13, R6 + BEQ end + + // R4 = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBU (R6), R4 + MOVW R4, R3 + ANDW $3, R3 + MOVW $1, R1 + CMPW R1, R3 + BGE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + MOVW $60, R1 + LSRW $2, R4, R4 + CMPW R4, R1 + BLS tagLit60Plus + + // case x < 60: + // s++ + ADD $1, R6, R6 + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that R4 == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // R4 can hold 64 bits, so the increment cannot overflow. + ADD $1, R4, R4 + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // R2 = len(dst) - d + // R3 = len(src) - s + MOVD R10, R2 + SUB R7, R2, R2 + MOVD R13, R3 + SUB R6, R3, R3 + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMP $16, R4 + BGT callMemmove + CMP $16, R2 + BLT callMemmove + CMP $16, R3 + BLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + LDP 0(R6), (R14, R15) + STP (R14, R15), 0(R7) + + // d += length + // s += length + ADD R4, R7, R7 + ADD R4, R6, R6 + B loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMP R2, R4 + BGT errCorrupt + CMP R3, R4 + BGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // R7, R6 and R4 as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVD R7, 8(RSP) + MOVD R6, 16(RSP) + MOVD R4, 24(RSP) + MOVD R7, 32(RSP) + MOVD R6, 40(RSP) + MOVD R4, 48(RSP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVD 32(RSP), R7 + MOVD 40(RSP), R6 + MOVD 48(RSP), R4 + MOVD dst_base+0(FP), R8 + MOVD dst_len+8(FP), R9 + MOVD R8, R10 + ADD R9, R10, R10 + MOVD src_base+24(FP), R11 + MOVD src_len+32(FP), R12 + MOVD R11, R13 + ADD R12, R13, R13 + + // d += length + // s += length + ADD R4, R7, R7 + ADD R4, R6, R6 + B loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADD R4, R6, R6 + SUB $58, R6, R6 + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // case x == 60: + MOVW $61, R1 + CMPW R1, R4 + BEQ tagLit61 + BGT tagLit62Plus + + // x = uint32(src[s-1]) + MOVBU -1(R6), R4 + B doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVHU -2(R6), R4 + B doLit + +tagLit62Plus: + CMPW $62, R4 + BHI tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVHU -3(R6), R4 + MOVBU -1(R6), R3 + ORR R3<<16, R4 + B doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVWU -4(R6), R4 + B doLit + + // The code above handles literal tags. + // ---------------------------------------- + // The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADD $5, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // length = 1 + int(src[s-5])>>2 + MOVD $1, R1 + ADD R4>>2, R1, R4 + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVWU -4(R6), R5 + B doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADD $3, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // length = 1 + int(src[s-3])>>2 + MOVD $1, R1 + ADD R4>>2, R1, R4 + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVHU -2(R6), R5 + B doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - R3 == src[s] & 0x03 + // - R4 == src[s] + CMP $2, R3 + BEQ tagCopy2 + BGT tagCopy4 + + // case tagCopy1: + // s += 2 + ADD $2, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVD R4, R5 + AND $0xe0, R5 + MOVBU -1(R6), R3 + ORR R5<<3, R3, R5 + + // length = 4 + int(src[s-2])>>2&0x7 + MOVD $7, R1 + AND R4>>2, R1, R4 + ADD $4, R4, R4 + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - R4 == length && R4 > 0 + // - R5 == offset + + // if offset <= 0 { etc } + MOVD $0, R1 + CMP R1, R5 + BLE errCorrupt + + // if d < offset { etc } + MOVD R7, R3 + SUB R8, R3, R3 + CMP R5, R3 + BLT errCorrupt + + // if length > len(dst)-d { etc } + MOVD R10, R3 + SUB R7, R3, R3 + CMP R3, R4 + BGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVD R10, R14 + SUB R7, R14, R14 + MOVD R7, R15 + SUB R5, R15, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMP $16, R4 + BGT slowForwardCopy + CMP $8, R5 + BLT slowForwardCopy + CMP $16, R14 + BLT slowForwardCopy + MOVD 0(R15), R2 + MOVD R2, 0(R7) + MOVD 8(R15), R3 + MOVD R3, 8(R7) + ADD R4, R7, R7 + B loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUB $10, R14, R14 + CMP R14, R4 + BGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMP $8, R5 + BGE fixUpSlowForwardCopy + MOVD (R15), R3 + MOVD R3, (R7) + SUB R5, R4, R4 + ADD R5, R7, R7 + ADD R5, R5, R5 + B makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by R7 being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save R7 to R2 so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVD R7, R2 + ADD R4, R7, R7 + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + MOVD $0, R1 + CMP R1, R4 + BLE loop + MOVD (R15), R3 + MOVD R3, (R2) + ADD $8, R15, R15 + ADD $8, R2, R2 + SUB $8, R4, R4 + B finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), R3 + MOVB R3, (R7) + ADD $1, R15, R15 + ADD $1, R7, R7 + SUB $1, R4, R4 + CBNZ R4, verySlowForwardCopy + B loop + + // The code above handles copy tags. + // ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMP R10, R7 + BNE errCorrupt + + // return 0 + MOVD $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVD $1, R2 + MOVD R2, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/decode_asm.go b/examples/go/vendor/github.com/golang/snappy/decode_asm.go new file mode 100644 index 0000000..7082b34 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_asm.go @@ -0,0 +1,15 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm +// +build amd64 arm64 + +package snappy + +// decode has the same semantics as in decode_other.go. +// +//go:noescape +func decode(dst, src []byte) int diff --git a/examples/go/vendor/github.com/golang/snappy/decode_other.go b/examples/go/vendor/github.com/golang/snappy/decode_other.go new file mode 100644 index 0000000..2f672be --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_other.go @@ -0,0 +1,115 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!arm64 appengine !gc noasm + +package snappy + +// decode writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read, and that len(dst) +// equals that length. +// +// It returns 0 on success or a decodeErrCodeXxx error code on failure. +func decode(dst, src []byte) int { + var d, s, offset, length int + for s < len(src) { + switch src[s] & 0x03 { + case tagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + length = int(x) + 1 + if length <= 0 { + return decodeErrCodeUnsupportedLiteralLength + } + if length > len(dst)-d || length > len(src)-s { + return decodeErrCodeCorrupt + } + copy(dst[d:], src[s:s+length]) + d += length + s += length + continue + + case tagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + + case tagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + + case tagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + } + + if offset <= 0 || d < offset || length > len(dst)-d { + return decodeErrCodeCorrupt + } + // Copy from an earlier sub-slice of dst to a later sub-slice. + // If no overlap, use the built-in copy: + if offset >= length { + copy(dst[d:d+length], dst[d-offset:]) + d += length + continue + } + + // Unlike the built-in copy function, this byte-by-byte copy always runs + // forwards, even if the slices overlap. Conceptually, this is: + // + // d += forwardCopy(dst[d:d+length], dst[d-offset:]) + // + // We align the slices into a and b and show the compiler they are the same size. + // This allows the loop to run without bounds checks. + a := dst[d : d+length] + b := dst[d-offset:] + b = b[:len(a)] + for i := range a { + a[i] = b[i] + } + d += length + } + if d != len(dst) { + return decodeErrCodeCorrupt + } + return 0 +} diff --git a/examples/go/vendor/github.com/golang/snappy/encode.go b/examples/go/vendor/github.com/golang/snappy/encode.go new file mode 100644 index 0000000..7f23657 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode.go @@ -0,0 +1,289 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +// Encode returns the encoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire encoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Encode handles the Snappy block format, not the Snappy stream format. +func Encode(dst, src []byte) []byte { + if n := MaxEncodedLen(len(src)); n < 0 { + panic(ErrTooLarge) + } else if len(dst) < n { + dst = make([]byte, n) + } + + // The block starts with the varint-encoded length of the decompressed bytes. + d := binary.PutUvarint(dst, uint64(len(src))) + + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return dst[:d] +} + +// inputMargin is the minimum number of extra input bytes to keep, inside +// encodeBlock's inner loop. On some architectures, this margin lets us +// implement a fast path for emitLiteral, where the copy of short (<= 16 byte) +// literals can be implemented as a single load to and store from a 16-byte +// register. That literal's actual length can be as short as 1 byte, so this +// can copy up to 15 bytes too much, but that's OK as subsequent iterations of +// the encoding loop will fix up the copy overrun, and this inputMargin ensures +// that we don't overrun the dst and src buffers. +const inputMargin = 16 - 1 + +// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that +// could be encoded with a copy tag. This is the minimum with respect to the +// algorithm used by encodeBlock, not a minimum enforced by the file format. +// +// The encoded output must start with at least a 1 byte literal, as there are +// no previous bytes to copy. A minimal (1 byte) copy after that, generated +// from an emitCopy call in encodeBlock's main loop, would require at least +// another inputMargin bytes, for the reason above: we want any emitLiteral +// calls inside encodeBlock's main loop to use the fast path if possible, which +// requires being able to overrun by inputMargin bytes. Thus, +// minNonLiteralBlockSize equals 1 + 1 + inputMargin. +// +// The C++ code doesn't use this exact threshold, but it could, as discussed at +// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion +// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an +// optimization. It should not affect the encoded form. This is tested by +// TestSameEncodingAsCppShortCopies. +const minNonLiteralBlockSize = 1 + 1 + inputMargin + +// MaxEncodedLen returns the maximum length of a snappy block, given its +// uncompressed length. +// +// It will return a negative value if srcLen is too large to encode. +func MaxEncodedLen(srcLen int) int { + n := uint64(srcLen) + if n > 0xffffffff { + return -1 + } + // Compressed data can be defined as: + // compressed := item* literal* + // item := literal* copy + // + // The trailing literal sequence has a space blowup of at most 62/60 + // since a literal of length 60 needs one tag byte + one extra byte + // for length information. + // + // Item blowup is trickier to measure. Suppose the "copy" op copies + // 4 bytes of data. Because of a special check in the encoding code, + // we produce a 4-byte copy only if the offset is < 65536. Therefore + // the copy op takes 3 bytes to encode, and this type of item leads + // to at most the 62/60 blowup for representing literals. + // + // Suppose the "copy" op copies 5 bytes of data. If the offset is big + // enough, it will take 5 bytes to encode the copy op. Therefore the + // worst case here is a one-byte literal followed by a five-byte copy. + // That is, 6 bytes of input turn into 7 bytes of "compressed" data. + // + // This last factor dominates the blowup, so the final estimate is: + n = 32 + n + n/6 + if n > 0xffffffff { + return -1 + } + return int(n) +} + +var errClosed = errors.New("snappy: Writer is closed") + +// NewWriter returns a new Writer that compresses to w. +// +// The Writer returned does not buffer writes. There is no need to Flush or +// Close such a Writer. +// +// Deprecated: the Writer returned is not suitable for many small writes, only +// for few large writes. Use NewBufferedWriter instead, which is efficient +// regardless of the frequency and shape of the writes, and remember to Close +// that Writer when done. +func NewWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + obuf: make([]byte, obufLen), + } +} + +// NewBufferedWriter returns a new Writer that compresses to w, using the +// framing format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +// +// The Writer returned buffers writes. Users must call Close to guarantee all +// data has been forwarded to the underlying io.Writer. They may also call +// Flush zero or more times before calling Close. +func NewBufferedWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + ibuf: make([]byte, 0, maxBlockSize), + obuf: make([]byte, obufLen), + } +} + +// Writer is an io.Writer that can write Snappy-compressed bytes. +// +// Writer handles the Snappy stream format, not the Snappy block format. +type Writer struct { + w io.Writer + err error + + // ibuf is a buffer for the incoming (uncompressed) bytes. + // + // Its use is optional. For backwards compatibility, Writers created by the + // NewWriter function have ibuf == nil, do not buffer incoming bytes, and + // therefore do not need to be Flush'ed or Close'd. + ibuf []byte + + // obuf is a buffer for the outgoing (compressed) bytes. + obuf []byte + + // wroteStreamHeader is whether we have written the stream header. + wroteStreamHeader bool +} + +// Reset discards the writer's state and switches the Snappy writer to write to +// w. This permits reusing a Writer rather than allocating a new one. +func (w *Writer) Reset(writer io.Writer) { + w.w = writer + w.err = nil + if w.ibuf != nil { + w.ibuf = w.ibuf[:0] + } + w.wroteStreamHeader = false +} + +// Write satisfies the io.Writer interface. +func (w *Writer) Write(p []byte) (nRet int, errRet error) { + if w.ibuf == nil { + // Do not buffer incoming bytes. This does not perform or compress well + // if the caller of Writer.Write writes many small slices. This + // behavior is therefore deprecated, but still supported for backwards + // compatibility with code that doesn't explicitly Flush or Close. + return w.write(p) + } + + // The remainder of this method is based on bufio.Writer.Write from the + // standard library. + + for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { + var n int + if len(w.ibuf) == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, _ = w.write(p) + } else { + n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + w.Flush() + } + nRet += n + p = p[n:] + } + if w.err != nil { + return nRet, w.err + } + n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + nRet += n + return nRet, nil +} + +func (w *Writer) write(p []byte) (nRet int, errRet error) { + if w.err != nil { + return 0, w.err + } + for len(p) > 0 { + obufStart := len(magicChunk) + if !w.wroteStreamHeader { + w.wroteStreamHeader = true + copy(w.obuf, magicChunk) + obufStart = 0 + } + + var uncompressed []byte + if len(p) > maxBlockSize { + uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] + } else { + uncompressed, p = p, nil + } + checksum := crc(uncompressed) + + // Compress the buffer, discarding the result if the improvement + // isn't at least 12.5%. + compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) + chunkType := uint8(chunkTypeCompressedData) + chunkLen := 4 + len(compressed) + obufEnd := obufHeaderLen + len(compressed) + if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { + chunkType = chunkTypeUncompressedData + chunkLen = 4 + len(uncompressed) + obufEnd = obufHeaderLen + } + + // Fill in the per-chunk header that comes before the body. + w.obuf[len(magicChunk)+0] = chunkType + w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) + w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) + w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) + w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) + w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) + w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) + w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) + + if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { + w.err = err + return nRet, err + } + if chunkType == chunkTypeUncompressedData { + if _, err := w.w.Write(uncompressed); err != nil { + w.err = err + return nRet, err + } + } + nRet += len(uncompressed) + } + return nRet, nil +} + +// Flush flushes the Writer to its underlying io.Writer. +func (w *Writer) Flush() error { + if w.err != nil { + return w.err + } + if len(w.ibuf) == 0 { + return nil + } + w.write(w.ibuf) + w.ibuf = w.ibuf[:0] + return w.err +} + +// Close calls Flush and then closes the Writer. +func (w *Writer) Close() error { + w.Flush() + ret := w.err + if w.err == nil { + w.err = errClosed + } + return ret +} diff --git a/examples/go/vendor/github.com/golang/snappy/encode_amd64.s b/examples/go/vendor/github.com/golang/snappy/encode_amd64.s new file mode 100644 index 0000000..adfd979 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_amd64.s @@ -0,0 +1,730 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The XXX lines assemble on Go 1.4, 1.5 and 1.7, but not 1.6, due to a +// Go toolchain regression. See https://github.com/golang/go/issues/15426 and +// https://github.com/golang/snappy/issues/29 +// +// As a workaround, the package was built with a known good assembler, and +// those instructions were disassembled by "objdump -d" to yield the +// 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 +// style comments, in AT&T asm syntax. Note that rsp here is a physical +// register, not Go/asm's SP pseudo-register (see https://golang.org/doc/asm). +// The instructions were then encoded as "BYTE $0x.." sequences, which assemble +// fine on Go 1.6. + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - AX len(lit) +// - BX n +// - DX return value +// - DI &dst[i] +// - R10 &lit[0] +// +// The 24 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $24-56 + MOVQ dst_base+0(FP), DI + MOVQ lit_base+24(FP), R10 + MOVQ lit_len+32(FP), AX + MOVQ AX, DX + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT oneByte + CMPL BX, $256 + JLT twoBytes + +threeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + ADDQ $3, DX + JMP memmove + +twoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + ADDQ $2, DX + JMP memmove + +oneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + ADDQ $1, DX + +memmove: + MOVQ DX, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - AX length +// - SI &dst[0] +// - DI &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVQ dst_base+0(FP), DI + MOVQ DI, SI + MOVQ offset+24(FP), R11 + MOVQ length+32(FP), AX + +loop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP loop0 + +step1: + // if length > 64 { etc } + CMPL AX, $64 + JLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMPL AX, $12 + JGE step3 + CMPL R11, $2048 + JGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - DX &src[0] +// - SI &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVQ src_base+0(FP), DX + MOVQ src_len+8(FP), R14 + MOVQ i+24(FP), R15 + MOVQ j+32(FP), SI + ADDQ DX, R14 + ADDQ DX, R15 + ADDQ DX, SI + MOVQ R14, R13 + SUBQ $8, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA cmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE bsf + ADDQ $8, R15 + ADDQ $8, SI + JMP cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE extendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE extendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - AX . . +// - BX . . +// - CX 56 shift (note that amd64 shifts by non-immediates must use CX). +// - DX 64 &src[0], tableSize +// - SI 72 &src[s] +// - DI 80 &dst[d] +// - R9 88 sLimit +// - R10 . &src[nextEmit] +// - R11 96 prevHash, currHash, nextHash, offset +// - R12 104 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 112 candidate +// +// The second column (56, 64, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 56 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 56 + 64 = 32888. +TEXT ·encodeBlock(SB), 0, $32888-56 + MOVQ dst_base+0(FP), DI + MOVQ src_base+24(FP), SI + MOVQ src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVQ $24, CX + MOVQ $256, DX + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + CMPQ DX, $16384 + JGE varTable + CMPQ DX, R14 + JGE varTable + SUBQ $1, CX + SHLQ $1, DX + JMP calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each MOVOU + // writes 16 bytes, so we can do only tableSize/8 writes instead of the + // 2048 writes that would zero-initialize all of table's 32768 bytes. + SHRQ $3, DX + LEAQ table-32768(SP), BX + PXOR X0, X0 + +memclr: + MOVOU X0, 0(BX) + ADDQ $16, BX + SUBQ $1, DX + JNZ memclr + + // !!! DX = &src[0] + MOVQ SI, DX + + // sLimit := len(src) - inputMargin + MOVQ R14, R9 + SUBQ $15, R9 + + // !!! Pre-emptively spill CX, DX and R9 to the stack. Their values don't + // change for the rest of the function. + MOVQ CX, 56(SP) + MOVQ DX, 64(SP) + MOVQ R9, 88(SP) + + // nextEmit := 0 + MOVQ DX, R10 + + // s := 1 + ADDQ $1, SI + + // nextHash := hash(load32(src, s), shift) + MOVL 0(SI), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + +outer: + // for { etc } + + // skip := 32 + MOVQ $32, R12 + + // nextS := s + MOVQ SI, R13 + + // candidate := 0 + MOVQ $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVQ R13, SI + + // bytesBetweenHashLookups := skip >> 5 + MOVQ R12, R14 + SHRQ $5, R14 + + // nextS = s + bytesBetweenHashLookups + ADDQ R14, R13 + + // skip += bytesBetweenHashLookups + ADDQ R14, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVQ R13, AX + SUBQ DX, AX + CMPQ AX, R9 + JA emitRemainder + + // candidate = int(table[nextHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[nextHash] = uint16(s) + MOVQ SI, AX + SUBQ DX, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // nextHash = hash(load32(src, nextS), shift) + MOVL 0(R13), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVL 0(SI), AX + MOVL (DX)(R15*1), BX + CMPL AX, BX + JNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVQ SI, AX + SUBQ R10, AX + CMPQ AX, $16 + JLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT inlineEmitLiteralOneByte + CMPL BX, $256 + JLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + ADDQ AX, DI // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVQ SI, 72(SP) + MOVQ DI, 80(SP) + MOVQ R15, 112(SP) + CALL runtime·memmove(SB) + MOVQ 56(SP), CX + MOVQ 64(SP), DX + MOVQ 72(SP), SI + MOVQ 80(SP), DI + MOVQ 88(SP), R9 + MOVQ 112(SP), R15 + JMP inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB AX, BX + SUBB $1, BX + SHLB $2, BX + MOVB BX, (DI) + ADDQ $1, DI + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(R10), X0 + MOVOU X0, 0(DI) + ADDQ AX, DI + +inner1: + // for { etc } + + // base := s + MOVQ SI, R12 + + // !!! offset := base - candidate + MOVQ R12, R11 + SUBQ R15, R11 + SUBQ DX, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVQ src_len+32(FP), R14 + ADDQ DX, R14 + + // !!! R13 = &src[len(src) - 8] + MOVQ R14, R13 + SUBQ $8, R13 + + // !!! R15 = &src[candidate + 4] + ADDQ $4, R15 + ADDQ DX, R15 + + // !!! s += 4 + ADDQ $4, SI + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA inlineExtendMatchCmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE inlineExtendMatchBSF + ADDQ $8, R15 + ADDQ $8, SI + JMP inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + JMP inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE inlineExtendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE inlineExtendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVQ SI, AX + SUBQ R12, AX + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + CMPL AX, $64 + JLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + CMPL AX, $12 + JGE inlineEmitCopyStep3 + CMPL R11, $2048 + JGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + JMP inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVQ SI, R10 + + // if s >= sLimit { goto emitRemainder } + MOVQ SI, AX + SUBQ DX, AX + CMPQ AX, R9 + JAE emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVQ -1(SI), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // table[prevHash] = uint16(s-1) + MOVQ SI, AX + SUBQ DX, AX + SUBQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // currHash := hash(uint32(x>>8), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // candidate = int(table[currHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[currHash] = uint16(s) + ADDQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVL (DX)(R15*1), BX + CMPL R14, BX + JEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // s++ + ADDQ $1, SI + + // break out of the inner1 for loop, i.e. continue the outer loop. + JMP outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVQ src_len+32(FP), AX + ADDQ DX, AX + CMPQ R10, AX + JEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVQ DI, 0(SP) + MOVQ $0, 8(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ $0, 16(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ R10, 24(SP) + SUBQ R10, AX + MOVQ AX, 32(SP) + MOVQ AX, 40(SP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVQ DI, 80(SP) + CALL ·emitLiteral(SB) + MOVQ 80(SP), DI + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADDQ 48(SP), DI + +encodeBlockEnd: + MOVQ dst_base+0(FP), AX + SUBQ AX, DI + MOVQ DI, d+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/encode_arm64.s b/examples/go/vendor/github.com/golang/snappy/encode_arm64.s new file mode 100644 index 0000000..f8d54ad --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_arm64.s @@ -0,0 +1,722 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - R3 len(lit) +// - R4 n +// - R6 return value +// - R8 &dst[i] +// - R10 &lit[0] +// +// The 32 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $32-56 + MOVD dst_base+0(FP), R8 + MOVD lit_base+24(FP), R10 + MOVD lit_len+32(FP), R3 + MOVD R3, R6 + MOVW R3, R4 + SUBW $1, R4, R4 + + CMPW $60, R4 + BLT oneByte + CMPW $256, R4 + BLT twoBytes + +threeBytes: + MOVD $0xf4, R2 + MOVB R2, 0(R8) + MOVW R4, 1(R8) + ADD $3, R8, R8 + ADD $3, R6, R6 + B memmove + +twoBytes: + MOVD $0xf0, R2 + MOVB R2, 0(R8) + MOVB R4, 1(R8) + ADD $2, R8, R8 + ADD $2, R6, R6 + B memmove + +oneByte: + LSLW $2, R4, R4 + MOVB R4, 0(R8) + ADD $1, R8, R8 + ADD $1, R6, R6 + +memmove: + MOVD R6, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // R8, R10 and R3 as arguments. + MOVD R8, 8(RSP) + MOVD R10, 16(RSP) + MOVD R3, 24(RSP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - R3 length +// - R7 &dst[0] +// - R8 &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVD dst_base+0(FP), R8 + MOVD R8, R7 + MOVD offset+24(FP), R11 + MOVD length+32(FP), R3 + +loop0: + // for length >= 68 { etc } + CMPW $68, R3 + BLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVD $0xfe, R2 + MOVB R2, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUB $64, R3, R3 + B loop0 + +step1: + // if length > 64 { etc } + CMP $64, R3 + BLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVD $0xee, R2 + MOVB R2, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUB $60, R3, R3 + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMP $12, R3 + BGE step3 + CMPW $2048, R11 + BGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(R8) + LSRW $3, R11, R11 + AND $0xe0, R11, R11 + SUB $4, R3, R3 + LSLW $2, R3 + AND $0xff, R3, R3 + ORRW R3, R11, R11 + ORRW $1, R11, R11 + MOVB R11, 0(R8) + ADD $2, R8, R8 + + // Return the number of bytes written. + SUB R7, R8, R8 + MOVD R8, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUB $1, R3, R3 + AND $0xff, R3, R3 + LSLW $2, R3, R3 + ORRW $2, R3, R3 + MOVB R3, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + + // Return the number of bytes written. + SUB R7, R8, R8 + MOVD R8, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - R6 &src[0] +// - R7 &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVD src_base+0(FP), R6 + MOVD src_len+8(FP), R14 + MOVD i+24(FP), R15 + MOVD j+32(FP), R7 + ADD R6, R14, R14 + ADD R6, R15, R15 + ADD R6, R7, R7 + MOVD R14, R13 + SUB $8, R13, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMP R13, R7 + BHI cmp1 + MOVD (R15), R3 + MOVD (R7), R4 + CMP R4, R3 + BNE bsf + ADD $8, R15, R15 + ADD $8, R7, R7 + B cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. + // RBIT reverses the bit order, then CLZ counts the leading zeros, the + // combination of which finds the least significant bit which is set. + // The arm64 architecture is little-endian, and the shift by 3 converts + // a bit index to a byte index. + EOR R3, R4, R4 + RBIT R4, R4 + CLZ R4, R4 + ADD R4>>3, R7, R7 + + // Convert from &src[ret] to ret. + SUB R6, R7, R7 + MOVD R7, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMP R7, R14 + BLS extendMatchEnd + MOVB (R15), R3 + MOVB (R7), R4 + CMP R4, R3 + BNE extendMatchEnd + ADD $1, R15, R15 + ADD $1, R7, R7 + B cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUB R6, R7, R7 + MOVD R7, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - R3 . . +// - R4 . . +// - R5 64 shift +// - R6 72 &src[0], tableSize +// - R7 80 &src[s] +// - R8 88 &dst[d] +// - R9 96 sLimit +// - R10 . &src[nextEmit] +// - R11 104 prevHash, currHash, nextHash, offset +// - R12 112 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 120 candidate +// - R16 . hash constant, 0x1e35a7bd +// - R17 . &table +// - . 128 table +// +// The second column (64, 72, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 64 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 64 + 64 = 32896. +TEXT ·encodeBlock(SB), 0, $32896-56 + MOVD dst_base+0(FP), R8 + MOVD src_base+24(FP), R7 + MOVD src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVD $24, R5 + MOVD $256, R6 + MOVW $0xa7bd, R16 + MOVKW $(0x1e35<<16), R16 + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + MOVD $16384, R2 + CMP R2, R6 + BGE varTable + CMP R14, R6 + BGE varTable + SUB $1, R5, R5 + LSL $1, R6, R6 + B calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each + // iterations writes 64 bytes, so we can do only tableSize/32 writes + // instead of the 2048 writes that would zero-initialize all of table's + // 32768 bytes. This clear could overrun the first tableSize elements, but + // it won't overrun the allocated stack size. + ADD $128, RSP, R17 + MOVD R17, R4 + + // !!! R6 = &src[tableSize] + ADD R6<<1, R17, R6 + +memclr: + STP.P (ZR, ZR), 64(R4) + STP (ZR, ZR), -48(R4) + STP (ZR, ZR), -32(R4) + STP (ZR, ZR), -16(R4) + CMP R4, R6 + BHI memclr + + // !!! R6 = &src[0] + MOVD R7, R6 + + // sLimit := len(src) - inputMargin + MOVD R14, R9 + SUB $15, R9, R9 + + // !!! Pre-emptively spill R5, R6 and R9 to the stack. Their values don't + // change for the rest of the function. + MOVD R5, 64(RSP) + MOVD R6, 72(RSP) + MOVD R9, 96(RSP) + + // nextEmit := 0 + MOVD R6, R10 + + // s := 1 + ADD $1, R7, R7 + + // nextHash := hash(load32(src, s), shift) + MOVW 0(R7), R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + +outer: + // for { etc } + + // skip := 32 + MOVD $32, R12 + + // nextS := s + MOVD R7, R13 + + // candidate := 0 + MOVD $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVD R13, R7 + + // bytesBetweenHashLookups := skip >> 5 + MOVD R12, R14 + LSR $5, R14, R14 + + // nextS = s + bytesBetweenHashLookups + ADD R14, R13, R13 + + // skip += bytesBetweenHashLookups + ADD R14, R12, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVD R13, R3 + SUB R6, R3, R3 + CMP R9, R3 + BHI emitRemainder + + // candidate = int(table[nextHash]) + MOVHU 0(R17)(R11<<1), R15 + + // table[nextHash] = uint16(s) + MOVD R7, R3 + SUB R6, R3, R3 + + MOVH R3, 0(R17)(R11<<1) + + // nextHash = hash(load32(src, nextS), shift) + MOVW 0(R13), R11 + MULW R16, R11 + LSRW R5, R11, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVW 0(R7), R3 + MOVW (R6)(R15), R4 + CMPW R4, R3 + BNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVD R7, R3 + SUB R10, R3, R3 + CMP $16, R3 + BLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVW R3, R4 + SUBW $1, R4, R4 + + MOVW $60, R2 + CMPW R2, R4 + BLT inlineEmitLiteralOneByte + MOVW $256, R2 + CMPW R2, R4 + BLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVD $0xf4, R1 + MOVB R1, 0(R8) + MOVW R4, 1(R8) + ADD $3, R8, R8 + B inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVD $0xf0, R1 + MOVB R1, 0(R8) + MOVB R4, 1(R8) + ADD $2, R8, R8 + B inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + LSLW $2, R4, R4 + MOVB R4, 0(R8) + ADD $1, R8, R8 + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // R8, R10 and R3 as arguments. + MOVD R8, 8(RSP) + MOVD R10, 16(RSP) + MOVD R3, 24(RSP) + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADD R3, R8, R8 + MOVD R7, 80(RSP) + MOVD R8, 88(RSP) + MOVD R15, 120(RSP) + CALL runtime·memmove(SB) + MOVD 64(RSP), R5 + MOVD 72(RSP), R6 + MOVD 80(RSP), R7 + MOVD 88(RSP), R8 + MOVD 96(RSP), R9 + MOVD 120(RSP), R15 + ADD $128, RSP, R17 + MOVW $0xa7bd, R16 + MOVKW $(0x1e35<<16), R16 + B inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB R3, R4 + SUBW $1, R4, R4 + AND $0xff, R4, R4 + LSLW $2, R4, R4 + MOVB R4, (R8) + ADD $1, R8, R8 + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + LDP 0(R10), (R0, R1) + STP (R0, R1), 0(R8) + ADD R3, R8, R8 + +inner1: + // for { etc } + + // base := s + MOVD R7, R12 + + // !!! offset := base - candidate + MOVD R12, R11 + SUB R15, R11, R11 + SUB R6, R11, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVD src_len+32(FP), R14 + ADD R6, R14, R14 + + // !!! R13 = &src[len(src) - 8] + MOVD R14, R13 + SUB $8, R13, R13 + + // !!! R15 = &src[candidate + 4] + ADD $4, R15, R15 + ADD R6, R15, R15 + + // !!! s += 4 + ADD $4, R7, R7 + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMP R13, R7 + BHI inlineExtendMatchCmp1 + MOVD (R15), R3 + MOVD (R7), R4 + CMP R4, R3 + BNE inlineExtendMatchBSF + ADD $8, R15, R15 + ADD $8, R7, R7 + B inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. + // RBIT reverses the bit order, then CLZ counts the leading zeros, the + // combination of which finds the least significant bit which is set. + // The arm64 architecture is little-endian, and the shift by 3 converts + // a bit index to a byte index. + EOR R3, R4, R4 + RBIT R4, R4 + CLZ R4, R4 + ADD R4>>3, R7, R7 + B inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMP R7, R14 + BLS inlineExtendMatchEnd + MOVB (R15), R3 + MOVB (R7), R4 + CMP R4, R3 + BNE inlineExtendMatchEnd + ADD $1, R15, R15 + ADD $1, R7, R7 + B inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVD R7, R3 + SUB R12, R3, R3 + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + MOVW $68, R2 + CMPW R2, R3 + BLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVD $0xfe, R1 + MOVB R1, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUBW $64, R3, R3 + B inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + MOVW $64, R2 + CMPW R2, R3 + BLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVD $0xee, R1 + MOVB R1, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUBW $60, R3, R3 + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + MOVW $12, R2 + CMPW R2, R3 + BGE inlineEmitCopyStep3 + MOVW $2048, R2 + CMPW R2, R11 + BGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(R8) + LSRW $8, R11, R11 + LSLW $5, R11, R11 + SUBW $4, R3, R3 + AND $0xff, R3, R3 + LSLW $2, R3, R3 + ORRW R3, R11, R11 + ORRW $1, R11, R11 + MOVB R11, 0(R8) + ADD $2, R8, R8 + B inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBW $1, R3, R3 + LSLW $2, R3, R3 + ORRW $2, R3, R3 + MOVB R3, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVD R7, R10 + + // if s >= sLimit { goto emitRemainder } + MOVD R7, R3 + SUB R6, R3, R3 + CMP R3, R9 + BLS emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVD -1(R7), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // table[prevHash] = uint16(s-1) + MOVD R7, R3 + SUB R6, R3, R3 + SUB $1, R3, R3 + + MOVHU R3, 0(R17)(R11<<1) + + // currHash := hash(uint32(x>>8), shift) + LSR $8, R14, R14 + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // candidate = int(table[currHash]) + MOVHU 0(R17)(R11<<1), R15 + + // table[currHash] = uint16(s) + ADD $1, R3, R3 + MOVHU R3, 0(R17)(R11<<1) + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVW (R6)(R15), R4 + CMPW R4, R14 + BEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + LSR $8, R14, R14 + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // s++ + ADD $1, R7, R7 + + // break out of the inner1 for loop, i.e. continue the outer loop. + B outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVD src_len+32(FP), R3 + ADD R6, R3, R3 + CMP R3, R10 + BEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVD R8, 8(RSP) + MOVD $0, 16(RSP) // Unnecessary, as the callee ignores it, but conservative. + MOVD $0, 24(RSP) // Unnecessary, as the callee ignores it, but conservative. + MOVD R10, 32(RSP) + SUB R10, R3, R3 + MOVD R3, 40(RSP) + MOVD R3, 48(RSP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVD R8, 88(RSP) + CALL ·emitLiteral(SB) + MOVD 88(RSP), R8 + + // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVD 56(RSP), R1 + ADD R1, R8, R8 + +encodeBlockEnd: + MOVD dst_base+0(FP), R3 + SUB R3, R8, R8 + MOVD R8, d+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/encode_asm.go b/examples/go/vendor/github.com/golang/snappy/encode_asm.go new file mode 100644 index 0000000..107c1e7 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_asm.go @@ -0,0 +1,30 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm +// +build amd64 arm64 + +package snappy + +// emitLiteral has the same semantics as in encode_other.go. +// +//go:noescape +func emitLiteral(dst, lit []byte) int + +// emitCopy has the same semantics as in encode_other.go. +// +//go:noescape +func emitCopy(dst []byte, offset, length int) int + +// extendMatch has the same semantics as in encode_other.go. +// +//go:noescape +func extendMatch(src []byte, i, j int) int + +// encodeBlock has the same semantics as in encode_other.go. +// +//go:noescape +func encodeBlock(dst, src []byte) (d int) diff --git a/examples/go/vendor/github.com/golang/snappy/encode_other.go b/examples/go/vendor/github.com/golang/snappy/encode_other.go new file mode 100644 index 0000000..296d7f0 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_other.go @@ -0,0 +1,238 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!arm64 appengine !gc noasm + +package snappy + +func load32(b []byte, i int) uint32 { + b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func load64(b []byte, i int) uint64 { + b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +// emitLiteral writes a literal chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= len(lit) && len(lit) <= 65536 +func emitLiteral(dst, lit []byte) int { + i, n := 0, uint(len(lit)-1) + switch { + case n < 60: + dst[0] = uint8(n)<<2 | tagLiteral + i = 1 + case n < 1<<8: + dst[0] = 60<<2 | tagLiteral + dst[1] = uint8(n) + i = 2 + default: + dst[0] = 61<<2 | tagLiteral + dst[1] = uint8(n) + dst[2] = uint8(n >> 8) + i = 3 + } + return i + copy(dst[i:], lit) +} + +// emitCopy writes a copy chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= offset && offset <= 65535 +// 4 <= length && length <= 65535 +func emitCopy(dst []byte, offset, length int) int { + i := 0 + // The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The + // threshold for this loop is a little higher (at 68 = 64 + 4), and the + // length emitted down below is is a little lower (at 60 = 64 - 4), because + // it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed + // by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as + // a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as + // 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a + // tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an + // encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. + for length >= 68 { + // Emit a length 64 copy, encoded as 3 bytes. + dst[i+0] = 63<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 64 + } + if length > 64 { + // Emit a length 60 copy, encoded as 3 bytes. + dst[i+0] = 59<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 60 + } + if length >= 12 || offset >= 2048 { + // Emit the remaining copy, encoded as 3 bytes. + dst[i+0] = uint8(length-1)<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + return i + 3 + } + // Emit the remaining copy, encoded as 2 bytes. + dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 + dst[i+1] = uint8(offset) + return i + 2 +} + +// extendMatch returns the largest k such that k <= len(src) and that +// src[i:i+k-j] and src[j:k] have the same contents. +// +// It assumes that: +// 0 <= i && i < j && j <= len(src) +func extendMatch(src []byte, i, j int) int { + for ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 { + } + return j +} + +func hash(u, shift uint32) uint32 { + return (u * 0x1e35a7bd) >> shift +} + +// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It +// assumes that the varint-encoded length of the decompressed bytes has already +// been written. +// +// It also assumes that: +// len(dst) >= MaxEncodedLen(len(src)) && +// minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize +func encodeBlock(dst, src []byte) (d int) { + // Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. + // The table element type is uint16, as s < sLimit and sLimit < len(src) + // and len(src) <= maxBlockSize and maxBlockSize == 65536. + const ( + maxTableSize = 1 << 14 + // tableMask is redundant, but helps the compiler eliminate bounds + // checks. + tableMask = maxTableSize - 1 + ) + shift := uint32(32 - 8) + for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + shift-- + } + // In Go, all array elements are zero-initialized, so there is no advantage + // to a smaller tableSize per se. However, it matches the C++ algorithm, + // and in the asm versions of this code, we can get away with zeroing only + // the first tableSize elements. + var table [maxTableSize]uint16 + + // sLimit is when to stop looking for offset/length copies. The inputMargin + // lets us use a fast path for emitLiteral in the main loop, while we are + // looking for copies. + sLimit := len(src) - inputMargin + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := 0 + + // The encoded form must start with a literal, as there are no previous + // bytes to copy, so we start looking for hash matches at s == 1. + s := 1 + nextHash := hash(load32(src, s), shift) + + for { + // Copied from the C++ snappy implementation: + // + // Heuristic match skipping: If 32 bytes are scanned with no matches + // found, start looking only at every other byte. If 32 more bytes are + // scanned (or skipped), look at every third byte, etc.. When a match + // is found, immediately go back to looking at every byte. This is a + // small loss (~5% performance, ~0.1% density) for compressible data + // due to more bookkeeping, but for non-compressible data (such as + // JPEG) it's a huge win since the compressor quickly "realizes" the + // data is incompressible and doesn't bother looking for matches + // everywhere. + // + // The "skip" variable keeps track of how many bytes there are since + // the last match; dividing it by 32 (ie. right-shifting by five) gives + // the number of bytes to move ahead for each iteration. + skip := 32 + + nextS := s + candidate := 0 + for { + s = nextS + bytesBetweenHashLookups := skip >> 5 + nextS = s + bytesBetweenHashLookups + skip += bytesBetweenHashLookups + if nextS > sLimit { + goto emitRemainder + } + candidate = int(table[nextHash&tableMask]) + table[nextHash&tableMask] = uint16(s) + nextHash = hash(load32(src, nextS), shift) + if load32(src, s) == load32(src, candidate) { + break + } + } + + // A 4-byte match has been found. We'll later see if more than 4 bytes + // match. But, prior to the match, src[nextEmit:s] are unmatched. Emit + // them as literal bytes. + d += emitLiteral(dst[d:], src[nextEmit:s]) + + // Call emitCopy, and then see if another emitCopy could be our next + // move. Repeat until we find no match for the input immediately after + // what was consumed by the last emitCopy call. + // + // If we exit this loop normally then we need to call emitLiteral next, + // though we don't yet know how big the literal will be. We handle that + // by proceeding to the next iteration of the main loop. We also can + // exit this loop via goto if we get close to exhausting the input. + for { + // Invariant: we have a 4-byte match at s, and no need to emit any + // literal bytes prior to s. + base := s + + // Extend the 4-byte match as long as possible. + // + // This is an inlined version of: + // s = extendMatch(src, candidate+4, s+4) + s += 4 + for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { + } + + d += emitCopy(dst[d:], base-candidate, s-base) + nextEmit = s + if s >= sLimit { + goto emitRemainder + } + + // We could immediately start working at s now, but to improve + // compression we first update the hash table at s-1 and at s. If + // another emitCopy is not our next move, also calculate nextHash + // at s+1. At least on GOARCH=amd64, these three hash calculations + // are faster as one load64 call (with some shifts) instead of + // three load32 calls. + x := load64(src, s-1) + prevHash := hash(uint32(x>>0), shift) + table[prevHash&tableMask] = uint16(s - 1) + currHash := hash(uint32(x>>8), shift) + candidate = int(table[currHash&tableMask]) + table[currHash&tableMask] = uint16(s) + if uint32(x>>8) != load32(src, candidate) { + nextHash = hash(uint32(x>>16), shift) + s++ + break + } + } + } + +emitRemainder: + if nextEmit < len(src) { + d += emitLiteral(dst[d:], src[nextEmit:]) + } + return d +} diff --git a/examples/go/vendor/github.com/golang/snappy/snappy.go b/examples/go/vendor/github.com/golang/snappy/snappy.go new file mode 100644 index 0000000..ece692e --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/snappy.go @@ -0,0 +1,98 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package snappy implements the Snappy compression format. It aims for very +// high speeds and reasonable compression. +// +// There are actually two Snappy formats: block and stream. They are related, +// but different: trying to decompress block-compressed data as a Snappy stream +// will fail, and vice versa. The block format is the Decode and Encode +// functions and the stream format is the Reader and Writer types. +// +// The block format, the more common case, is used when the complete size (the +// number of bytes) of the original data is known upfront, at the time +// compression starts. The stream format, also known as the framing format, is +// for when that isn't always true. +// +// The canonical, C++ implementation is at https://github.com/google/snappy and +// it only implements the block format. +package snappy // import "github.com/golang/snappy" + +import ( + "hash/crc32" +) + +/* +Each encoded block begins with the varint-encoded length of the decoded data, +followed by a sequence of chunks. Chunks begin and end on byte boundaries. The +first byte of each chunk is broken into its 2 least and 6 most significant bits +called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag. +Zero means a literal tag. All other values mean a copy tag. + +For literal tags: + - If m < 60, the next 1 + m bytes are literal bytes. + - Otherwise, let n be the little-endian unsigned integer denoted by the next + m - 59 bytes. The next 1 + n bytes after that are literal bytes. + +For copy tags, length bytes are copied from offset bytes ago, in the style of +Lempel-Ziv compression algorithms. In particular: + - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12). + The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10 + of the offset. The next byte is bits 0-7 of the offset. + - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65). + The length is 1 + m. The offset is the little-endian unsigned integer + denoted by the next 2 bytes. + - For l == 3, this tag is a legacy format that is no longer issued by most + encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in + [1, 65). The length is 1 + m. The offset is the little-endian unsigned + integer denoted by the next 4 bytes. +*/ +const ( + tagLiteral = 0x00 + tagCopy1 = 0x01 + tagCopy2 = 0x02 + tagCopy4 = 0x03 +) + +const ( + checksumSize = 4 + chunkHeaderSize = 4 + magicChunk = "\xff\x06\x00\x00" + magicBody + magicBody = "sNaPpY" + + // maxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + maxBlockSize = 65536 + + // maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + maxEncodedLenOfMaxBlockSize = 76490 + + obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize + obufLen = obufHeaderLen + maxEncodedLenOfMaxBlockSize +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func crc(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return uint32(c>>15|c<<17) + 0xa282ead8 +} diff --git a/examples/go/vendor/github.com/google/uuid/CHANGELOG.md b/examples/go/vendor/github.com/google/uuid/CHANGELOG.md new file mode 100644 index 0000000..7ec5ac7 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/CHANGELOG.md @@ -0,0 +1,41 @@ +# Changelog + +## [1.6.0](https://github.com/google/uuid/compare/v1.5.0...v1.6.0) (2024-01-16) + + +### Features + +* add Max UUID constant ([#149](https://github.com/google/uuid/issues/149)) ([c58770e](https://github.com/google/uuid/commit/c58770eb495f55fe2ced6284f93c5158a62e53e3)) + + +### Bug Fixes + +* fix typo in version 7 uuid documentation ([#153](https://github.com/google/uuid/issues/153)) ([016b199](https://github.com/google/uuid/commit/016b199544692f745ffc8867b914129ecb47ef06)) +* Monotonicity in UUIDv7 ([#150](https://github.com/google/uuid/issues/150)) ([a2b2b32](https://github.com/google/uuid/commit/a2b2b32373ff0b1a312b7fdf6d38a977099698a6)) + +## [1.5.0](https://github.com/google/uuid/compare/v1.4.0...v1.5.0) (2023-12-12) + + +### Features + +* Validate UUID without creating new UUID ([#141](https://github.com/google/uuid/issues/141)) ([9ee7366](https://github.com/google/uuid/commit/9ee7366e66c9ad96bab89139418a713dc584ae29)) + +## [1.4.0](https://github.com/google/uuid/compare/v1.3.1...v1.4.0) (2023-10-26) + + +### Features + +* UUIDs slice type with Strings() convenience method ([#133](https://github.com/google/uuid/issues/133)) ([cd5fbbd](https://github.com/google/uuid/commit/cd5fbbdd02f3e3467ac18940e07e062be1f864b4)) + +### Fixes + +* Clarify that Parse's job is to parse but not necessarily validate strings. (Documents current behavior) + +## [1.3.1](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) (2023-08-18) + + +### Bug Fixes + +* Use .EqualFold() to parse urn prefixed UUIDs ([#118](https://github.com/google/uuid/issues/118)) ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0)) + +## Changelog diff --git a/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md b/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md new file mode 100644 index 0000000..a502fdc --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# How to contribute + +We definitely welcome patches and contribution to this project! + +### Tips + +Commits must be formatted according to the [Conventional Commits Specification](https://www.conventionalcommits.org). + +Always try to include a test case! If it is not possible or not necessary, +please explain why in the pull request description. + +### Releasing + +Commits that would precipitate a SemVer change, as described in the Conventional +Commits Specification, will trigger [`release-please`](https://github.com/google-github-actions/release-please-action) +to create a release candidate pull request. Once submitted, `release-please` +will create a release. + +For tips on how to work with `release-please`, see its documentation. + +### Legal requirements + +In order to protect both you and ourselves, you will need to sign the +[Contributor License Agreement](https://cla.developers.google.com/clas). + +You may have already signed it for other Google projects. diff --git a/examples/go/vendor/github.com/google/uuid/CONTRIBUTORS b/examples/go/vendor/github.com/google/uuid/CONTRIBUTORS new file mode 100644 index 0000000..b4bb97f --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/CONTRIBUTORS @@ -0,0 +1,9 @@ +Paul Borman +bmatsuo +shawnps +theory +jboverfelt +dsymonds +cd1 +wallclockbuilder +dansouza diff --git a/examples/go/vendor/github.com/google/uuid/LICENSE b/examples/go/vendor/github.com/google/uuid/LICENSE new file mode 100644 index 0000000..5dc6826 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009,2014 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/google/uuid/README.md b/examples/go/vendor/github.com/google/uuid/README.md new file mode 100644 index 0000000..3e9a618 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/README.md @@ -0,0 +1,21 @@ +# uuid +The uuid package generates and inspects UUIDs based on +[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122) +and DCE 1.1: Authentication and Security Services. + +This package is based on the github.com/pborman/uuid package (previously named +code.google.com/p/go-uuid). It differs from these earlier packages in that +a UUID is a 16 byte array rather than a byte slice. One loss due to this +change is the ability to represent an invalid UUID (vs a NIL UUID). + +###### Install +```sh +go get github.com/google/uuid +``` + +###### Documentation +[![Go Reference](https://pkg.go.dev/badge/github.com/google/uuid.svg)](https://pkg.go.dev/github.com/google/uuid) + +Full `go doc` style documentation for the package can be viewed online without +installing this package by using the GoDoc site here: +http://pkg.go.dev/github.com/google/uuid diff --git a/examples/go/vendor/github.com/google/uuid/dce.go b/examples/go/vendor/github.com/google/uuid/dce.go new file mode 100644 index 0000000..fa820b9 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/dce.go @@ -0,0 +1,80 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "fmt" + "os" +) + +// A Domain represents a Version 2 domain +type Domain byte + +// Domain constants for DCE Security (Version 2) UUIDs. +const ( + Person = Domain(0) + Group = Domain(1) + Org = Domain(2) +) + +// NewDCESecurity returns a DCE Security (Version 2) UUID. +// +// The domain should be one of Person, Group or Org. +// On a POSIX system the id should be the users UID for the Person +// domain and the users GID for the Group. The meaning of id for +// the domain Org or on non-POSIX systems is site defined. +// +// For a given domain/id pair the same token may be returned for up to +// 7 minutes and 10 seconds. +func NewDCESecurity(domain Domain, id uint32) (UUID, error) { + uuid, err := NewUUID() + if err == nil { + uuid[6] = (uuid[6] & 0x0f) | 0x20 // Version 2 + uuid[9] = byte(domain) + binary.BigEndian.PutUint32(uuid[0:], id) + } + return uuid, err +} + +// NewDCEPerson returns a DCE Security (Version 2) UUID in the person +// domain with the id returned by os.Getuid. +// +// NewDCESecurity(Person, uint32(os.Getuid())) +func NewDCEPerson() (UUID, error) { + return NewDCESecurity(Person, uint32(os.Getuid())) +} + +// NewDCEGroup returns a DCE Security (Version 2) UUID in the group +// domain with the id returned by os.Getgid. +// +// NewDCESecurity(Group, uint32(os.Getgid())) +func NewDCEGroup() (UUID, error) { + return NewDCESecurity(Group, uint32(os.Getgid())) +} + +// Domain returns the domain for a Version 2 UUID. Domains are only defined +// for Version 2 UUIDs. +func (uuid UUID) Domain() Domain { + return Domain(uuid[9]) +} + +// ID returns the id for a Version 2 UUID. IDs are only defined for Version 2 +// UUIDs. +func (uuid UUID) ID() uint32 { + return binary.BigEndian.Uint32(uuid[0:4]) +} + +func (d Domain) String() string { + switch d { + case Person: + return "Person" + case Group: + return "Group" + case Org: + return "Org" + } + return fmt.Sprintf("Domain%d", int(d)) +} diff --git a/examples/go/vendor/github.com/google/uuid/doc.go b/examples/go/vendor/github.com/google/uuid/doc.go new file mode 100644 index 0000000..5b8a4b9 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/doc.go @@ -0,0 +1,12 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package uuid generates and inspects UUIDs. +// +// UUIDs are based on RFC 4122 and DCE 1.1: Authentication and Security +// Services. +// +// A UUID is a 16 byte (128 bit) array. UUIDs may be used as keys to +// maps or compared directly. +package uuid diff --git a/examples/go/vendor/github.com/google/uuid/hash.go b/examples/go/vendor/github.com/google/uuid/hash.go new file mode 100644 index 0000000..dc60082 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/hash.go @@ -0,0 +1,59 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "crypto/md5" + "crypto/sha1" + "hash" +) + +// Well known namespace IDs and UUIDs +var ( + NameSpaceDNS = Must(Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceURL = Must(Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceOID = Must(Parse("6ba7b812-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceX500 = Must(Parse("6ba7b814-9dad-11d1-80b4-00c04fd430c8")) + Nil UUID // empty UUID, all zeros + + // The Max UUID is special form of UUID that is specified to have all 128 bits set to 1. + Max = UUID{ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + } +) + +// NewHash returns a new UUID derived from the hash of space concatenated with +// data generated by h. The hash should be at least 16 byte in length. The +// first 16 bytes of the hash are used to form the UUID. The version of the +// UUID will be the lower 4 bits of version. NewHash is used to implement +// NewMD5 and NewSHA1. +func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID { + h.Reset() + h.Write(space[:]) //nolint:errcheck + h.Write(data) //nolint:errcheck + s := h.Sum(nil) + var uuid UUID + copy(uuid[:], s) + uuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4) + uuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant + return uuid +} + +// NewMD5 returns a new MD5 (Version 3) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(md5.New(), space, data, 3) +func NewMD5(space UUID, data []byte) UUID { + return NewHash(md5.New(), space, data, 3) +} + +// NewSHA1 returns a new SHA1 (Version 5) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(sha1.New(), space, data, 5) +func NewSHA1(space UUID, data []byte) UUID { + return NewHash(sha1.New(), space, data, 5) +} diff --git a/examples/go/vendor/github.com/google/uuid/marshal.go b/examples/go/vendor/github.com/google/uuid/marshal.go new file mode 100644 index 0000000..14bd340 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/marshal.go @@ -0,0 +1,38 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "fmt" + +// MarshalText implements encoding.TextMarshaler. +func (uuid UUID) MarshalText() ([]byte, error) { + var js [36]byte + encodeHex(js[:], uuid) + return js[:], nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (uuid *UUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err != nil { + return err + } + *uuid = id + return nil +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (uuid UUID) MarshalBinary() ([]byte, error) { + return uuid[:], nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (uuid *UUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(uuid[:], data) + return nil +} diff --git a/examples/go/vendor/github.com/google/uuid/node.go b/examples/go/vendor/github.com/google/uuid/node.go new file mode 100644 index 0000000..d651a2b --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/node.go @@ -0,0 +1,90 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "sync" +) + +var ( + nodeMu sync.Mutex + ifname string // name of interface being used + nodeID [6]byte // hardware for version 1 UUIDs + zeroID [6]byte // nodeID with only 0's +) + +// NodeInterface returns the name of the interface from which the NodeID was +// derived. The interface "user" is returned if the NodeID was set by +// SetNodeID. +func NodeInterface() string { + defer nodeMu.Unlock() + nodeMu.Lock() + return ifname +} + +// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs. +// If name is "" then the first usable interface found will be used or a random +// Node ID will be generated. If a named interface cannot be found then false +// is returned. +// +// SetNodeInterface never fails when name is "". +func SetNodeInterface(name string) bool { + defer nodeMu.Unlock() + nodeMu.Lock() + return setNodeInterface(name) +} + +func setNodeInterface(name string) bool { + iname, addr := getHardwareInterface(name) // null implementation for js + if iname != "" && addr != nil { + ifname = iname + copy(nodeID[:], addr) + return true + } + + // We found no interfaces with a valid hardware address. If name + // does not specify a specific interface generate a random Node ID + // (section 4.1.6) + if name == "" { + ifname = "random" + randomBits(nodeID[:]) + return true + } + return false +} + +// NodeID returns a slice of a copy of the current Node ID, setting the Node ID +// if not already set. +func NodeID() []byte { + defer nodeMu.Unlock() + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + nid := nodeID + return nid[:] +} + +// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes +// of id are used. If id is less than 6 bytes then false is returned and the +// Node ID is not set. +func SetNodeID(id []byte) bool { + if len(id) < 6 { + return false + } + defer nodeMu.Unlock() + nodeMu.Lock() + copy(nodeID[:], id) + ifname = "user" + return true +} + +// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is +// not valid. The NodeID is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) NodeID() []byte { + var node [6]byte + copy(node[:], uuid[10:]) + return node[:] +} diff --git a/examples/go/vendor/github.com/google/uuid/node_js.go b/examples/go/vendor/github.com/google/uuid/node_js.go new file mode 100644 index 0000000..b2a0bc8 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/node_js.go @@ -0,0 +1,12 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build js + +package uuid + +// getHardwareInterface returns nil values for the JS version of the code. +// This removes the "net" dependency, because it is not used in the browser. +// Using the "net" library inflates the size of the transpiled JS code by 673k bytes. +func getHardwareInterface(name string) (string, []byte) { return "", nil } diff --git a/examples/go/vendor/github.com/google/uuid/node_net.go b/examples/go/vendor/github.com/google/uuid/node_net.go new file mode 100644 index 0000000..0cbbcdd --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/node_net.go @@ -0,0 +1,33 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !js + +package uuid + +import "net" + +var interfaces []net.Interface // cached list of interfaces + +// getHardwareInterface returns the name and hardware address of interface name. +// If name is "" then the name and hardware address of one of the system's +// interfaces is returned. If no interfaces are found (name does not exist or +// there are no interfaces) then "", nil is returned. +// +// Only addresses of at least 6 bytes are returned. +func getHardwareInterface(name string) (string, []byte) { + if interfaces == nil { + var err error + interfaces, err = net.Interfaces() + if err != nil { + return "", nil + } + } + for _, ifs := range interfaces { + if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) { + return ifs.Name, ifs.HardwareAddr + } + } + return "", nil +} diff --git a/examples/go/vendor/github.com/google/uuid/null.go b/examples/go/vendor/github.com/google/uuid/null.go new file mode 100644 index 0000000..d7fcbf2 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/null.go @@ -0,0 +1,118 @@ +// Copyright 2021 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "database/sql/driver" + "encoding/json" + "fmt" +) + +var jsonNull = []byte("null") + +// NullUUID represents a UUID that may be null. +// NullUUID implements the SQL driver.Scanner interface so +// it can be used as a scan destination: +// +// var u uuid.NullUUID +// err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&u) +// ... +// if u.Valid { +// // use u.UUID +// } else { +// // NULL value +// } +// +type NullUUID struct { + UUID UUID + Valid bool // Valid is true if UUID is not NULL +} + +// Scan implements the SQL driver.Scanner interface. +func (nu *NullUUID) Scan(value interface{}) error { + if value == nil { + nu.UUID, nu.Valid = Nil, false + return nil + } + + err := nu.UUID.Scan(value) + if err != nil { + nu.Valid = false + return err + } + + nu.Valid = true + return nil +} + +// Value implements the driver Valuer interface. +func (nu NullUUID) Value() (driver.Value, error) { + if !nu.Valid { + return nil, nil + } + // Delegate to UUID Value function + return nu.UUID.Value() +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (nu NullUUID) MarshalBinary() ([]byte, error) { + if nu.Valid { + return nu.UUID[:], nil + } + + return []byte(nil), nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (nu *NullUUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(nu.UUID[:], data) + nu.Valid = true + return nil +} + +// MarshalText implements encoding.TextMarshaler. +func (nu NullUUID) MarshalText() ([]byte, error) { + if nu.Valid { + return nu.UUID.MarshalText() + } + + return jsonNull, nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (nu *NullUUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err != nil { + nu.Valid = false + return err + } + nu.UUID = id + nu.Valid = true + return nil +} + +// MarshalJSON implements json.Marshaler. +func (nu NullUUID) MarshalJSON() ([]byte, error) { + if nu.Valid { + return json.Marshal(nu.UUID) + } + + return jsonNull, nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (nu *NullUUID) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, jsonNull) { + *nu = NullUUID{} + return nil // valid null UUID + } + err := json.Unmarshal(data, &nu.UUID) + nu.Valid = err == nil + return err +} diff --git a/examples/go/vendor/github.com/google/uuid/sql.go b/examples/go/vendor/github.com/google/uuid/sql.go new file mode 100644 index 0000000..2e02ec0 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/sql.go @@ -0,0 +1,59 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "database/sql/driver" + "fmt" +) + +// Scan implements sql.Scanner so UUIDs can be read from databases transparently. +// Currently, database types that map to string and []byte are supported. Please +// consult database-specific driver documentation for matching types. +func (uuid *UUID) Scan(src interface{}) error { + switch src := src.(type) { + case nil: + return nil + + case string: + // if an empty UUID comes from a table, we return a null UUID + if src == "" { + return nil + } + + // see Parse for required string format + u, err := Parse(src) + if err != nil { + return fmt.Errorf("Scan: %v", err) + } + + *uuid = u + + case []byte: + // if an empty UUID comes from a table, we return a null UUID + if len(src) == 0 { + return nil + } + + // assumes a simple slice of bytes if 16 bytes + // otherwise attempts to parse + if len(src) != 16 { + return uuid.Scan(string(src)) + } + copy((*uuid)[:], src) + + default: + return fmt.Errorf("Scan: unable to scan type %T into UUID", src) + } + + return nil +} + +// Value implements sql.Valuer so that UUIDs can be written to databases +// transparently. Currently, UUIDs map to strings. Please consult +// database-specific driver documentation for matching types. +func (uuid UUID) Value() (driver.Value, error) { + return uuid.String(), nil +} diff --git a/examples/go/vendor/github.com/google/uuid/time.go b/examples/go/vendor/github.com/google/uuid/time.go new file mode 100644 index 0000000..c351129 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/time.go @@ -0,0 +1,134 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "sync" + "time" +) + +// A Time represents a time as the number of 100's of nanoseconds since 15 Oct +// 1582. +type Time int64 + +const ( + lillian = 2299160 // Julian day of 15 Oct 1582 + unix = 2440587 // Julian day of 1 Jan 1970 + epoch = unix - lillian // Days between epochs + g1582 = epoch * 86400 // seconds between epochs + g1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs +) + +var ( + timeMu sync.Mutex + lasttime uint64 // last time we returned + clockSeq uint16 // clock sequence for this run + + timeNow = time.Now // for testing +) + +// UnixTime converts t the number of seconds and nanoseconds using the Unix +// epoch of 1 Jan 1970. +func (t Time) UnixTime() (sec, nsec int64) { + sec = int64(t - g1582ns100) + nsec = (sec % 10000000) * 100 + sec /= 10000000 + return sec, nsec +} + +// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and +// clock sequence as well as adjusting the clock sequence as needed. An error +// is returned if the current time cannot be determined. +func GetTime() (Time, uint16, error) { + defer timeMu.Unlock() + timeMu.Lock() + return getTime() +} + +func getTime() (Time, uint16, error) { + t := timeNow() + + // If we don't have a clock sequence already, set one. + if clockSeq == 0 { + setClockSequence(-1) + } + now := uint64(t.UnixNano()/100) + g1582ns100 + + // If time has gone backwards with this clock sequence then we + // increment the clock sequence + if now <= lasttime { + clockSeq = ((clockSeq + 1) & 0x3fff) | 0x8000 + } + lasttime = now + return Time(now), clockSeq, nil +} + +// ClockSequence returns the current clock sequence, generating one if not +// already set. The clock sequence is only used for Version 1 UUIDs. +// +// The uuid package does not use global static storage for the clock sequence or +// the last time a UUID was generated. Unless SetClockSequence is used, a new +// random clock sequence is generated the first time a clock sequence is +// requested by ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) +func ClockSequence() int { + defer timeMu.Unlock() + timeMu.Lock() + return clockSequence() +} + +func clockSequence() int { + if clockSeq == 0 { + setClockSequence(-1) + } + return int(clockSeq & 0x3fff) +} + +// SetClockSequence sets the clock sequence to the lower 14 bits of seq. Setting to +// -1 causes a new sequence to be generated. +func SetClockSequence(seq int) { + defer timeMu.Unlock() + timeMu.Lock() + setClockSequence(seq) +} + +func setClockSequence(seq int) { + if seq == -1 { + var b [2]byte + randomBits(b[:]) // clock sequence + seq = int(b[0])<<8 | int(b[1]) + } + oldSeq := clockSeq + clockSeq = uint16(seq&0x3fff) | 0x8000 // Set our variant + if oldSeq != clockSeq { + lasttime = 0 + } +} + +// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in +// uuid. The time is only defined for version 1, 2, 6 and 7 UUIDs. +func (uuid UUID) Time() Time { + var t Time + switch uuid.Version() { + case 6: + time := binary.BigEndian.Uint64(uuid[:8]) // Ignore uuid[6] version b0110 + t = Time(time) + case 7: + time := binary.BigEndian.Uint64(uuid[:8]) + t = Time((time>>16)*10000 + g1582ns100) + default: // forward compatible + time := int64(binary.BigEndian.Uint32(uuid[0:4])) + time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32 + time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48 + t = Time(time) + } + return t +} + +// ClockSequence returns the clock sequence encoded in uuid. +// The clock sequence is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) ClockSequence() int { + return int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff +} diff --git a/examples/go/vendor/github.com/google/uuid/util.go b/examples/go/vendor/github.com/google/uuid/util.go new file mode 100644 index 0000000..5ea6c73 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/util.go @@ -0,0 +1,43 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "io" +) + +// randomBits completely fills slice b with random data. +func randomBits(b []byte) { + if _, err := io.ReadFull(rander, b); err != nil { + panic(err.Error()) // rand should never fail + } +} + +// xvalues returns the value of a byte as a hexadecimal digit or 255. +var xvalues = [256]byte{ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +} + +// xtob converts hex characters x1 and x2 into a byte. +func xtob(x1, x2 byte) (byte, bool) { + b1 := xvalues[x1] + b2 := xvalues[x2] + return (b1 << 4) | b2, b1 != 255 && b2 != 255 +} diff --git a/examples/go/vendor/github.com/google/uuid/uuid.go b/examples/go/vendor/github.com/google/uuid/uuid.go new file mode 100644 index 0000000..5232b48 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/uuid.go @@ -0,0 +1,365 @@ +// Copyright 2018 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "crypto/rand" + "encoding/hex" + "errors" + "fmt" + "io" + "strings" + "sync" +) + +// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC +// 4122. +type UUID [16]byte + +// A Version represents a UUID's version. +type Version byte + +// A Variant represents a UUID's variant. +type Variant byte + +// Constants returned by Variant. +const ( + Invalid = Variant(iota) // Invalid UUID + RFC4122 // The variant specified in RFC4122 + Reserved // Reserved, NCS backward compatibility. + Microsoft // Reserved, Microsoft Corporation backward compatibility. + Future // Reserved for future definition. +) + +const randPoolSize = 16 * 16 + +var ( + rander = rand.Reader // random function + poolEnabled = false + poolMu sync.Mutex + poolPos = randPoolSize // protected with poolMu + pool [randPoolSize]byte // protected with poolMu +) + +type invalidLengthError struct{ len int } + +func (err invalidLengthError) Error() string { + return fmt.Sprintf("invalid UUID length: %d", err.len) +} + +// IsInvalidLengthError is matcher function for custom error invalidLengthError +func IsInvalidLengthError(err error) bool { + _, ok := err.(invalidLengthError) + return ok +} + +// Parse decodes s into a UUID or returns an error if it cannot be parsed. Both +// the standard UUID forms defined in RFC 4122 +// (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) are decoded. In addition, +// Parse accepts non-standard strings such as the raw hex encoding +// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx and 38 byte "Microsoft style" encodings, +// e.g. {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. Only the middle 36 bytes are +// examined in the latter case. Parse should not be used to validate strings as +// it parses non-standard encodings as indicated above. +func Parse(s string) (UUID, error) { + var uuid UUID + switch len(s) { + // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36: + + // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36 + 9: + if !strings.EqualFold(s[:9], "urn:uuid:") { + return uuid, fmt.Errorf("invalid urn prefix: %q", s[:9]) + } + s = s[9:] + + // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + case 36 + 2: + s = s[1:] + + // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + case 32: + var ok bool + for i := range uuid { + uuid[i], ok = xtob(s[i*2], s[i*2+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, invalidLengthError{len(s)} + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34, + } { + v, ok := xtob(s[x], s[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// ParseBytes is like Parse, except it parses a byte slice instead of a string. +func ParseBytes(b []byte) (UUID, error) { + var uuid UUID + switch len(b) { + case 36: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36 + 9: // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if !bytes.EqualFold(b[:9], []byte("urn:uuid:")) { + return uuid, fmt.Errorf("invalid urn prefix: %q", b[:9]) + } + b = b[9:] + case 36 + 2: // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + b = b[1:] + case 32: // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + var ok bool + for i := 0; i < 32; i += 2 { + uuid[i/2], ok = xtob(b[i], b[i+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, invalidLengthError{len(b)} + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if b[8] != '-' || b[13] != '-' || b[18] != '-' || b[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34, + } { + v, ok := xtob(b[x], b[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// MustParse is like Parse but panics if the string cannot be parsed. +// It simplifies safe initialization of global variables holding compiled UUIDs. +func MustParse(s string) UUID { + uuid, err := Parse(s) + if err != nil { + panic(`uuid: Parse(` + s + `): ` + err.Error()) + } + return uuid +} + +// FromBytes creates a new UUID from a byte slice. Returns an error if the slice +// does not have a length of 16. The bytes are copied from the slice. +func FromBytes(b []byte) (uuid UUID, err error) { + err = uuid.UnmarshalBinary(b) + return uuid, err +} + +// Must returns uuid if err is nil and panics otherwise. +func Must(uuid UUID, err error) UUID { + if err != nil { + panic(err) + } + return uuid +} + +// Validate returns an error if s is not a properly formatted UUID in one of the following formats: +// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +// {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} +// It returns an error if the format is invalid, otherwise nil. +func Validate(s string) error { + switch len(s) { + // Standard UUID format + case 36: + + // UUID with "urn:uuid:" prefix + case 36 + 9: + if !strings.EqualFold(s[:9], "urn:uuid:") { + return fmt.Errorf("invalid urn prefix: %q", s[:9]) + } + s = s[9:] + + // UUID enclosed in braces + case 36 + 2: + if s[0] != '{' || s[len(s)-1] != '}' { + return fmt.Errorf("invalid bracketed UUID format") + } + s = s[1 : len(s)-1] + + // UUID without hyphens + case 32: + for i := 0; i < len(s); i += 2 { + _, ok := xtob(s[i], s[i+1]) + if !ok { + return errors.New("invalid UUID format") + } + } + + default: + return invalidLengthError{len(s)} + } + + // Check for standard UUID format + if len(s) == 36 { + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return errors.New("invalid UUID format") + } + for _, x := range []int{0, 2, 4, 6, 9, 11, 14, 16, 19, 21, 24, 26, 28, 30, 32, 34} { + if _, ok := xtob(s[x], s[x+1]); !ok { + return errors.New("invalid UUID format") + } + } + } + + return nil +} + +// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// , or "" if uuid is invalid. +func (uuid UUID) String() string { + var buf [36]byte + encodeHex(buf[:], uuid) + return string(buf[:]) +} + +// URN returns the RFC 2141 URN form of uuid, +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid. +func (uuid UUID) URN() string { + var buf [36 + 9]byte + copy(buf[:], "urn:uuid:") + encodeHex(buf[9:], uuid) + return string(buf[:]) +} + +func encodeHex(dst []byte, uuid UUID) { + hex.Encode(dst, uuid[:4]) + dst[8] = '-' + hex.Encode(dst[9:13], uuid[4:6]) + dst[13] = '-' + hex.Encode(dst[14:18], uuid[6:8]) + dst[18] = '-' + hex.Encode(dst[19:23], uuid[8:10]) + dst[23] = '-' + hex.Encode(dst[24:], uuid[10:]) +} + +// Variant returns the variant encoded in uuid. +func (uuid UUID) Variant() Variant { + switch { + case (uuid[8] & 0xc0) == 0x80: + return RFC4122 + case (uuid[8] & 0xe0) == 0xc0: + return Microsoft + case (uuid[8] & 0xe0) == 0xe0: + return Future + default: + return Reserved + } +} + +// Version returns the version of uuid. +func (uuid UUID) Version() Version { + return Version(uuid[6] >> 4) +} + +func (v Version) String() string { + if v > 15 { + return fmt.Sprintf("BAD_VERSION_%d", v) + } + return fmt.Sprintf("VERSION_%d", v) +} + +func (v Variant) String() string { + switch v { + case RFC4122: + return "RFC4122" + case Reserved: + return "Reserved" + case Microsoft: + return "Microsoft" + case Future: + return "Future" + case Invalid: + return "Invalid" + } + return fmt.Sprintf("BadVariant%d", int(v)) +} + +// SetRand sets the random number generator to r, which implements io.Reader. +// If r.Read returns an error when the package requests random data then +// a panic will be issued. +// +// Calling SetRand with nil sets the random number generator to the default +// generator. +func SetRand(r io.Reader) { + if r == nil { + rander = rand.Reader + return + } + rander = r +} + +// EnableRandPool enables internal randomness pool used for Random +// (Version 4) UUID generation. The pool contains random bytes read from +// the random number generator on demand in batches. Enabling the pool +// may improve the UUID generation throughput significantly. +// +// Since the pool is stored on the Go heap, this feature may be a bad fit +// for security sensitive applications. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func EnableRandPool() { + poolEnabled = true +} + +// DisableRandPool disables the randomness pool if it was previously +// enabled with EnableRandPool. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func DisableRandPool() { + poolEnabled = false + defer poolMu.Unlock() + poolMu.Lock() + poolPos = randPoolSize +} + +// UUIDs is a slice of UUID types. +type UUIDs []UUID + +// Strings returns a string slice containing the string form of each UUID in uuids. +func (uuids UUIDs) Strings() []string { + var uuidStrs = make([]string, len(uuids)) + for i, uuid := range uuids { + uuidStrs[i] = uuid.String() + } + return uuidStrs +} diff --git a/examples/go/vendor/github.com/google/uuid/version1.go b/examples/go/vendor/github.com/google/uuid/version1.go new file mode 100644 index 0000000..4631096 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version1.go @@ -0,0 +1,44 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" +) + +// NewUUID returns a Version 1 UUID based on the current NodeID and clock +// sequence, and the current time. If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically. If the NodeID cannot +// be set NewUUID returns nil. If clock sequence has not been set by +// SetClockSequence then it will be set automatically. If GetTime fails to +// return the current NewUUID returns nil and an error. +// +// In most cases, New should be used. +func NewUUID() (UUID, error) { + var uuid UUID + now, seq, err := GetTime() + if err != nil { + return uuid, err + } + + timeLow := uint32(now & 0xffffffff) + timeMid := uint16((now >> 32) & 0xffff) + timeHi := uint16((now >> 48) & 0x0fff) + timeHi |= 0x1000 // Version 1 + + binary.BigEndian.PutUint32(uuid[0:], timeLow) + binary.BigEndian.PutUint16(uuid[4:], timeMid) + binary.BigEndian.PutUint16(uuid[6:], timeHi) + binary.BigEndian.PutUint16(uuid[8:], seq) + + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + copy(uuid[10:], nodeID[:]) + nodeMu.Unlock() + + return uuid, nil +} diff --git a/examples/go/vendor/github.com/google/uuid/version4.go b/examples/go/vendor/github.com/google/uuid/version4.go new file mode 100644 index 0000000..7697802 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version4.go @@ -0,0 +1,76 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "io" + +// New creates a new random UUID or panics. New is equivalent to +// the expression +// +// uuid.Must(uuid.NewRandom()) +func New() UUID { + return Must(NewRandom()) +} + +// NewString creates a new random UUID and returns it as a string or panics. +// NewString is equivalent to the expression +// +// uuid.New().String() +func NewString() string { + return Must(NewRandom()).String() +} + +// NewRandom returns a Random (Version 4) UUID. +// +// The strength of the UUIDs is based on the strength of the crypto/rand +// package. +// +// Uses the randomness pool if it was enabled with EnableRandPool. +// +// A note about uniqueness derived from the UUID Wikipedia entry: +// +// Randomly generated UUIDs have 122 random bits. One's annual risk of being +// hit by a meteorite is estimated to be one chance in 17 billion, that +// means the probability is about 0.00000000006 (6 × 10−11), +// equivalent to the odds of creating a few tens of trillions of UUIDs in a +// year and having one duplicate. +func NewRandom() (UUID, error) { + if !poolEnabled { + return NewRandomFromReader(rander) + } + return newRandomFromPool() +} + +// NewRandomFromReader returns a UUID based on bytes read from a given io.Reader. +func NewRandomFromReader(r io.Reader) (UUID, error) { + var uuid UUID + _, err := io.ReadFull(r, uuid[:]) + if err != nil { + return Nil, err + } + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} + +func newRandomFromPool() (UUID, error) { + var uuid UUID + poolMu.Lock() + if poolPos == randPoolSize { + _, err := io.ReadFull(rander, pool[:]) + if err != nil { + poolMu.Unlock() + return Nil, err + } + poolPos = 0 + } + copy(uuid[:], pool[poolPos:(poolPos+16)]) + poolPos += 16 + poolMu.Unlock() + + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} diff --git a/examples/go/vendor/github.com/google/uuid/version6.go b/examples/go/vendor/github.com/google/uuid/version6.go new file mode 100644 index 0000000..339a959 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version6.go @@ -0,0 +1,56 @@ +// Copyright 2023 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "encoding/binary" + +// UUID version 6 is a field-compatible version of UUIDv1, reordered for improved DB locality. +// It is expected that UUIDv6 will primarily be used in contexts where there are existing v1 UUIDs. +// Systems that do not involve legacy UUIDv1 SHOULD consider using UUIDv7 instead. +// +// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#uuidv6 +// +// NewV6 returns a Version 6 UUID based on the current NodeID and clock +// sequence, and the current time. If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically. If the NodeID cannot +// be set NewV6 set NodeID is random bits automatically . If clock sequence has not been set by +// SetClockSequence then it will be set automatically. If GetTime fails to +// return the current NewV6 returns Nil and an error. +func NewV6() (UUID, error) { + var uuid UUID + now, seq, err := GetTime() + if err != nil { + return uuid, err + } + + /* + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | time_high | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | time_mid | time_low_and_version | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |clk_seq_hi_res | clk_seq_low | node (0-1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | node (2-5) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ + + binary.BigEndian.PutUint64(uuid[0:], uint64(now)) + binary.BigEndian.PutUint16(uuid[8:], seq) + + uuid[6] = 0x60 | (uuid[6] & 0x0F) + uuid[8] = 0x80 | (uuid[8] & 0x3F) + + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + copy(uuid[10:], nodeID[:]) + nodeMu.Unlock() + + return uuid, nil +} diff --git a/examples/go/vendor/github.com/google/uuid/version7.go b/examples/go/vendor/github.com/google/uuid/version7.go new file mode 100644 index 0000000..3167b64 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version7.go @@ -0,0 +1,104 @@ +// Copyright 2023 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "io" +) + +// UUID version 7 features a time-ordered value field derived from the widely +// implemented and well known Unix Epoch timestamp source, +// the number of milliseconds seconds since midnight 1 Jan 1970 UTC, leap seconds excluded. +// As well as improved entropy characteristics over versions 1 or 6. +// +// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#name-uuid-version-7 +// +// Implementations SHOULD utilize UUID version 7 over UUID version 1 and 6 if possible. +// +// NewV7 returns a Version 7 UUID based on the current time(Unix Epoch). +// Uses the randomness pool if it was enabled with EnableRandPool. +// On error, NewV7 returns Nil and an error +func NewV7() (UUID, error) { + uuid, err := NewRandom() + if err != nil { + return uuid, err + } + makeV7(uuid[:]) + return uuid, nil +} + +// NewV7FromReader returns a Version 7 UUID based on the current time(Unix Epoch). +// it use NewRandomFromReader fill random bits. +// On error, NewV7FromReader returns Nil and an error. +func NewV7FromReader(r io.Reader) (UUID, error) { + uuid, err := NewRandomFromReader(r) + if err != nil { + return uuid, err + } + + makeV7(uuid[:]) + return uuid, nil +} + +// makeV7 fill 48 bits time (uuid[0] - uuid[5]), set version b0111 (uuid[6]) +// uuid[8] already has the right version number (Variant is 10) +// see function NewV7 and NewV7FromReader +func makeV7(uuid []byte) { + /* + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | unix_ts_ms | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | unix_ts_ms | ver | rand_a (12 bit seq) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |var| rand_b | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | rand_b | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ + _ = uuid[15] // bounds check + + t, s := getV7Time() + + uuid[0] = byte(t >> 40) + uuid[1] = byte(t >> 32) + uuid[2] = byte(t >> 24) + uuid[3] = byte(t >> 16) + uuid[4] = byte(t >> 8) + uuid[5] = byte(t) + + uuid[6] = 0x70 | (0x0F & byte(s>>8)) + uuid[7] = byte(s) +} + +// lastV7time is the last time we returned stored as: +// +// 52 bits of time in milliseconds since epoch +// 12 bits of (fractional nanoseconds) >> 8 +var lastV7time int64 + +const nanoPerMilli = 1000000 + +// getV7Time returns the time in milliseconds and nanoseconds / 256. +// The returned (milli << 12 + seq) is guarenteed to be greater than +// (milli << 12 + seq) returned by any previous call to getV7Time. +func getV7Time() (milli, seq int64) { + timeMu.Lock() + defer timeMu.Unlock() + + nano := timeNow().UnixNano() + milli = nano / nanoPerMilli + // Sequence number is between 0 and 3906 (nanoPerMilli>>8) + seq = (nano - milli*nanoPerMilli) >> 8 + now := milli<<12 + seq + if now <= lastV7time { + now = lastV7time + 1 + milli = now >> 12 + seq = now & 0xfff + } + lastV7time = now + return milli, seq +} diff --git a/examples/go/vendor/github.com/klauspost/compress/.gitattributes b/examples/go/vendor/github.com/klauspost/compress/.gitattributes new file mode 100644 index 0000000..4024335 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/.gitattributes @@ -0,0 +1,2 @@ +* -text +*.bin -text -diff diff --git a/examples/go/vendor/github.com/klauspost/compress/.gitignore b/examples/go/vendor/github.com/klauspost/compress/.gitignore new file mode 100644 index 0000000..d31b378 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/.gitignore @@ -0,0 +1,32 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof +/s2/cmd/_s2sx/sfx-exe + +# Linux perf files +perf.data +perf.data.old + +# gdb history +.gdb_history diff --git a/examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml b/examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml new file mode 100644 index 0000000..a229538 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml @@ -0,0 +1,123 @@ +# This is an example goreleaser.yaml file with some sane defaults. +# Make sure to check the documentation at http://goreleaser.com +before: + hooks: + - ./gen.sh + +builds: + - + id: "s2c" + binary: s2c + main: ./s2/cmd/s2c/main.go + flags: + - -trimpath + env: + - CGO_ENABLED=0 + goos: + - aix + - linux + - freebsd + - netbsd + - windows + - darwin + goarch: + - 386 + - amd64 + - arm + - arm64 + - ppc64 + - ppc64le + - mips64 + - mips64le + goarm: + - 7 + - + id: "s2d" + binary: s2d + main: ./s2/cmd/s2d/main.go + flags: + - -trimpath + env: + - CGO_ENABLED=0 + goos: + - aix + - linux + - freebsd + - netbsd + - windows + - darwin + goarch: + - 386 + - amd64 + - arm + - arm64 + - ppc64 + - ppc64le + - mips64 + - mips64le + goarm: + - 7 + - + id: "s2sx" + binary: s2sx + main: ./s2/cmd/_s2sx/main.go + flags: + - -modfile=s2sx.mod + - -trimpath + env: + - CGO_ENABLED=0 + goos: + - aix + - linux + - freebsd + - netbsd + - windows + - darwin + goarch: + - 386 + - amd64 + - arm + - arm64 + - ppc64 + - ppc64le + - mips64 + - mips64le + goarm: + - 7 + +archives: + - + id: s2-binaries + name_template: "s2-{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + format_overrides: + - goos: windows + format: zip + files: + - unpack/* + - s2/LICENSE + - s2/README.md +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ .Tag }}-next" +changelog: + sort: asc + filters: + exclude: + - '^doc:' + - '^docs:' + - '^test:' + - '^tests:' + - '^Update\sREADME.md' + +nfpms: + - + file_name_template: "s2_package__{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + vendor: Klaus Post + homepage: https://github.com/klauspost/compress + maintainer: Klaus Post + description: S2 Compression Tool + license: BSD 3-Clause + formats: + - deb + - rpm diff --git a/examples/go/vendor/github.com/klauspost/compress/LICENSE b/examples/go/vendor/github.com/klauspost/compress/LICENSE new file mode 100644 index 0000000..87d5574 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/LICENSE @@ -0,0 +1,304 @@ +Copyright (c) 2012 The Go Authors. All rights reserved. +Copyright (c) 2019 Klaus Post. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------ + +Files: gzhttp/* + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2016-2017 The New York Times Company + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +------------------ + +Files: s2/cmd/internal/readahead/* + +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--------------------- +Files: snappy/* +Files: internal/snapref/* + +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------- + +Files: s2/cmd/internal/filepathx/* + +Copyright 2016 The filepathx Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/examples/go/vendor/github.com/klauspost/compress/README.md b/examples/go/vendor/github.com/klauspost/compress/README.md new file mode 100644 index 0000000..05c7359 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/README.md @@ -0,0 +1,700 @@ +# compress + +This package provides various compression algorithms. + +* [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression in pure Go. +* [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) is a high performance replacement for Snappy. +* Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). +* [snappy](https://github.com/klauspost/compress/tree/master/snappy) is a drop-in replacement for `github.com/golang/snappy` offering better compression and concurrent streams. +* [huff0](https://github.com/klauspost/compress/tree/master/huff0) and [FSE](https://github.com/klauspost/compress/tree/master/fse) implementations for raw entropy encoding. +* [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp) Provides client and server wrappers for handling gzipped requests efficiently. +* [pgzip](https://github.com/klauspost/pgzip) is a separate package that provides a very fast parallel gzip implementation. + +[![Go Reference](https://pkg.go.dev/badge/klauspost/compress.svg)](https://pkg.go.dev/github.com/klauspost/compress?tab=subdirectories) +[![Go](https://github.com/klauspost/compress/actions/workflows/go.yml/badge.svg)](https://github.com/klauspost/compress/actions/workflows/go.yml) +[![Sourcegraph Badge](https://sourcegraph.com/github.com/klauspost/compress/-/badge.svg)](https://sourcegraph.com/github.com/klauspost/compress?badge) + +# changelog + +* Feb 5th, 2024 - [1.17.6](https://github.com/klauspost/compress/releases/tag/v1.17.6) + * zstd: Fix incorrect repeat coding in best mode https://github.com/klauspost/compress/pull/923 + * s2: Fix DecodeConcurrent deadlock on errors https://github.com/klauspost/compress/pull/925 + +* Jan 26th, 2024 - [v1.17.5](https://github.com/klauspost/compress/releases/tag/v1.17.5) + * flate: Fix reset with dictionary on custom window encodes https://github.com/klauspost/compress/pull/912 + * zstd: Add Frame header encoding and stripping https://github.com/klauspost/compress/pull/908 + * zstd: Limit better/best default window to 8MB https://github.com/klauspost/compress/pull/913 + * zstd: Speed improvements by @greatroar in https://github.com/klauspost/compress/pull/896 https://github.com/klauspost/compress/pull/910 + * s2: Fix callbacks for skippable blocks and disallow 0xfe (Padding) by @Jille in https://github.com/klauspost/compress/pull/916 https://github.com/klauspost/compress/pull/917 +https://github.com/klauspost/compress/pull/919 https://github.com/klauspost/compress/pull/918 + +* Dec 1st, 2023 - [v1.17.4](https://github.com/klauspost/compress/releases/tag/v1.17.4) + * huff0: Speed up symbol counting by @greatroar in https://github.com/klauspost/compress/pull/887 + * huff0: Remove byteReader by @greatroar in https://github.com/klauspost/compress/pull/886 + * gzhttp: Allow overriding decompression on transport https://github.com/klauspost/compress/pull/892 + * gzhttp: Clamp compression level https://github.com/klauspost/compress/pull/890 + * gzip: Error out if reserved bits are set https://github.com/klauspost/compress/pull/891 + +* Nov 15th, 2023 - [v1.17.3](https://github.com/klauspost/compress/releases/tag/v1.17.3) + * fse: Fix max header size https://github.com/klauspost/compress/pull/881 + * zstd: Improve better/best compression https://github.com/klauspost/compress/pull/877 + * gzhttp: Fix missing content type on Close https://github.com/klauspost/compress/pull/883 + +* Oct 22nd, 2023 - [v1.17.2](https://github.com/klauspost/compress/releases/tag/v1.17.2) + * zstd: Fix rare *CORRUPTION* output in "best" mode. See https://github.com/klauspost/compress/pull/876 + +* Oct 14th, 2023 - [v1.17.1](https://github.com/klauspost/compress/releases/tag/v1.17.1) + * s2: Fix S2 "best" dictionary wrong encoding by @klauspost in https://github.com/klauspost/compress/pull/871 + * flate: Reduce allocations in decompressor and minor code improvements by @fakefloordiv in https://github.com/klauspost/compress/pull/869 + * s2: Fix EstimateBlockSize on 6&7 length input by @klauspost in https://github.com/klauspost/compress/pull/867 + +* Sept 19th, 2023 - [v1.17.0](https://github.com/klauspost/compress/releases/tag/v1.17.0) + * Add experimental dictionary builder https://github.com/klauspost/compress/pull/853 + * Add xerial snappy read/writer https://github.com/klauspost/compress/pull/838 + * flate: Add limited window compression https://github.com/klauspost/compress/pull/843 + * s2: Do 2 overlapping match checks https://github.com/klauspost/compress/pull/839 + * flate: Add amd64 assembly matchlen https://github.com/klauspost/compress/pull/837 + * gzip: Copy bufio.Reader on Reset by @thatguystone in https://github.com/klauspost/compress/pull/860 + +

          + See changes to v1.16.x + + +* July 1st, 2023 - [v1.16.7](https://github.com/klauspost/compress/releases/tag/v1.16.7) + * zstd: Fix default level first dictionary encode https://github.com/klauspost/compress/pull/829 + * s2: add GetBufferCapacity() method by @GiedriusS in https://github.com/klauspost/compress/pull/832 + +* June 13, 2023 - [v1.16.6](https://github.com/klauspost/compress/releases/tag/v1.16.6) + * zstd: correctly ignore WithEncoderPadding(1) by @ianlancetaylor in https://github.com/klauspost/compress/pull/806 + * zstd: Add amd64 match length assembly https://github.com/klauspost/compress/pull/824 + * gzhttp: Handle informational headers by @rtribotte in https://github.com/klauspost/compress/pull/815 + * s2: Improve Better compression slightly https://github.com/klauspost/compress/pull/663 + +* Apr 16, 2023 - [v1.16.5](https://github.com/klauspost/compress/releases/tag/v1.16.5) + * zstd: readByte needs to use io.ReadFull by @jnoxon in https://github.com/klauspost/compress/pull/802 + * gzip: Fix WriterTo after initial read https://github.com/klauspost/compress/pull/804 + +* Apr 5, 2023 - [v1.16.4](https://github.com/klauspost/compress/releases/tag/v1.16.4) + * zstd: Improve zstd best efficiency by @greatroar and @klauspost in https://github.com/klauspost/compress/pull/784 + * zstd: Respect WithAllLitEntropyCompression https://github.com/klauspost/compress/pull/792 + * zstd: Fix amd64 not always detecting corrupt data https://github.com/klauspost/compress/pull/785 + * zstd: Various minor improvements by @greatroar in https://github.com/klauspost/compress/pull/788 https://github.com/klauspost/compress/pull/794 https://github.com/klauspost/compress/pull/795 + * s2: Fix huge block overflow https://github.com/klauspost/compress/pull/779 + * s2: Allow CustomEncoder fallback https://github.com/klauspost/compress/pull/780 + * gzhttp: Suppport ResponseWriter Unwrap() in gzhttp handler by @jgimenez in https://github.com/klauspost/compress/pull/799 + +* Mar 13, 2023 - [v1.16.1](https://github.com/klauspost/compress/releases/tag/v1.16.1) + * zstd: Speed up + improve best encoder by @greatroar in https://github.com/klauspost/compress/pull/776 + * gzhttp: Add optional [BREACH mitigation](https://github.com/klauspost/compress/tree/master/gzhttp#breach-mitigation). https://github.com/klauspost/compress/pull/762 https://github.com/klauspost/compress/pull/768 https://github.com/klauspost/compress/pull/769 https://github.com/klauspost/compress/pull/770 https://github.com/klauspost/compress/pull/767 + * s2: Add Intel LZ4s converter https://github.com/klauspost/compress/pull/766 + * zstd: Minor bug fixes https://github.com/klauspost/compress/pull/771 https://github.com/klauspost/compress/pull/772 https://github.com/klauspost/compress/pull/773 + * huff0: Speed up compress1xDo by @greatroar in https://github.com/klauspost/compress/pull/774 + +* Feb 26, 2023 - [v1.16.0](https://github.com/klauspost/compress/releases/tag/v1.16.0) + * s2: Add [Dictionary](https://github.com/klauspost/compress/tree/master/s2#dictionaries) support. https://github.com/klauspost/compress/pull/685 + * s2: Add Compression Size Estimate. https://github.com/klauspost/compress/pull/752 + * s2: Add support for custom stream encoder. https://github.com/klauspost/compress/pull/755 + * s2: Add LZ4 block converter. https://github.com/klauspost/compress/pull/748 + * s2: Support io.ReaderAt in ReadSeeker. https://github.com/klauspost/compress/pull/747 + * s2c/s2sx: Use concurrent decoding. https://github.com/klauspost/compress/pull/746 +
          + +
          + See changes to v1.15.x + +* Jan 21st, 2023 (v1.15.15) + * deflate: Improve level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/739 + * zstd: Add delta encoding support by @greatroar in https://github.com/klauspost/compress/pull/728 + * zstd: Various speed improvements by @greatroar https://github.com/klauspost/compress/pull/741 https://github.com/klauspost/compress/pull/734 https://github.com/klauspost/compress/pull/736 https://github.com/klauspost/compress/pull/744 https://github.com/klauspost/compress/pull/743 https://github.com/klauspost/compress/pull/745 + * gzhttp: Add SuffixETag() and DropETag() options to prevent ETag collisions on compressed responses by @willbicks in https://github.com/klauspost/compress/pull/740 + +* Jan 3rd, 2023 (v1.15.14) + + * flate: Improve speed in big stateless blocks https://github.com/klauspost/compress/pull/718 + * zstd: Minor speed tweaks by @greatroar in https://github.com/klauspost/compress/pull/716 https://github.com/klauspost/compress/pull/720 + * export NoGzipResponseWriter for custom ResponseWriter wrappers by @harshavardhana in https://github.com/klauspost/compress/pull/722 + * s2: Add example for indexing and existing stream https://github.com/klauspost/compress/pull/723 + +* Dec 11, 2022 (v1.15.13) + * zstd: Add [MaxEncodedSize](https://pkg.go.dev/github.com/klauspost/compress@v1.15.13/zstd#Encoder.MaxEncodedSize) to encoder https://github.com/klauspost/compress/pull/691 + * zstd: Various tweaks and improvements https://github.com/klauspost/compress/pull/693 https://github.com/klauspost/compress/pull/695 https://github.com/klauspost/compress/pull/696 https://github.com/klauspost/compress/pull/701 https://github.com/klauspost/compress/pull/702 https://github.com/klauspost/compress/pull/703 https://github.com/klauspost/compress/pull/704 https://github.com/klauspost/compress/pull/705 https://github.com/klauspost/compress/pull/706 https://github.com/klauspost/compress/pull/707 https://github.com/klauspost/compress/pull/708 + +* Oct 26, 2022 (v1.15.12) + + * zstd: Tweak decoder allocs. https://github.com/klauspost/compress/pull/680 + * gzhttp: Always delete `HeaderNoCompression` https://github.com/klauspost/compress/pull/683 + +* Sept 26, 2022 (v1.15.11) + + * flate: Improve level 1-3 compression https://github.com/klauspost/compress/pull/678 + * zstd: Improve "best" compression by @nightwolfz in https://github.com/klauspost/compress/pull/677 + * zstd: Fix+reduce decompression allocations https://github.com/klauspost/compress/pull/668 + * zstd: Fix non-effective noescape tag https://github.com/klauspost/compress/pull/667 + +* Sept 16, 2022 (v1.15.10) + + * zstd: Add [WithDecodeAllCapLimit](https://pkg.go.dev/github.com/klauspost/compress@v1.15.10/zstd#WithDecodeAllCapLimit) https://github.com/klauspost/compress/pull/649 + * Add Go 1.19 - deprecate Go 1.16 https://github.com/klauspost/compress/pull/651 + * flate: Improve level 5+6 compression https://github.com/klauspost/compress/pull/656 + * zstd: Improve "better" compresssion https://github.com/klauspost/compress/pull/657 + * s2: Improve "best" compression https://github.com/klauspost/compress/pull/658 + * s2: Improve "better" compression. https://github.com/klauspost/compress/pull/635 + * s2: Slightly faster non-assembly decompression https://github.com/klauspost/compress/pull/646 + * Use arrays for constant size copies https://github.com/klauspost/compress/pull/659 + +* July 21, 2022 (v1.15.9) + + * zstd: Fix decoder crash on amd64 (no BMI) on invalid input https://github.com/klauspost/compress/pull/645 + * zstd: Disable decoder extended memory copies (amd64) due to possible crashes https://github.com/klauspost/compress/pull/644 + * zstd: Allow single segments up to "max decoded size" by @klauspost in https://github.com/klauspost/compress/pull/643 + +* July 13, 2022 (v1.15.8) + + * gzip: fix stack exhaustion bug in Reader.Read https://github.com/klauspost/compress/pull/641 + * s2: Add Index header trim/restore https://github.com/klauspost/compress/pull/638 + * zstd: Optimize seqdeq amd64 asm by @greatroar in https://github.com/klauspost/compress/pull/636 + * zstd: Improve decoder memcopy https://github.com/klauspost/compress/pull/637 + * huff0: Pass a single bitReader pointer to asm by @greatroar in https://github.com/klauspost/compress/pull/634 + * zstd: Branchless getBits for amd64 w/o BMI2 by @greatroar in https://github.com/klauspost/compress/pull/640 + * gzhttp: Remove header before writing https://github.com/klauspost/compress/pull/639 + +* June 29, 2022 (v1.15.7) + + * s2: Fix absolute forward seeks https://github.com/klauspost/compress/pull/633 + * zip: Merge upstream https://github.com/klauspost/compress/pull/631 + * zip: Re-add zip64 fix https://github.com/klauspost/compress/pull/624 + * zstd: translate fseDecoder.buildDtable into asm by @WojciechMula in https://github.com/klauspost/compress/pull/598 + * flate: Faster histograms https://github.com/klauspost/compress/pull/620 + * deflate: Use compound hcode https://github.com/klauspost/compress/pull/622 + +* June 3, 2022 (v1.15.6) + * s2: Improve coding for long, close matches https://github.com/klauspost/compress/pull/613 + * s2c: Add Snappy/S2 stream recompression https://github.com/klauspost/compress/pull/611 + * zstd: Always use configured block size https://github.com/klauspost/compress/pull/605 + * zstd: Fix incorrect hash table placement for dict encoding in default https://github.com/klauspost/compress/pull/606 + * zstd: Apply default config to ZipDecompressor without options https://github.com/klauspost/compress/pull/608 + * gzhttp: Exclude more common archive formats https://github.com/klauspost/compress/pull/612 + * s2: Add ReaderIgnoreCRC https://github.com/klauspost/compress/pull/609 + * s2: Remove sanity load on index creation https://github.com/klauspost/compress/pull/607 + * snappy: Use dedicated function for scoring https://github.com/klauspost/compress/pull/614 + * s2c+s2d: Use official snappy framed extension https://github.com/klauspost/compress/pull/610 + +* May 25, 2022 (v1.15.5) + * s2: Add concurrent stream decompression https://github.com/klauspost/compress/pull/602 + * s2: Fix final emit oob read crash on amd64 https://github.com/klauspost/compress/pull/601 + * huff0: asm implementation of Decompress1X by @WojciechMula https://github.com/klauspost/compress/pull/596 + * zstd: Use 1 less goroutine for stream decoding https://github.com/klauspost/compress/pull/588 + * zstd: Copy literal in 16 byte blocks when possible https://github.com/klauspost/compress/pull/592 + * zstd: Speed up when WithDecoderLowmem(false) https://github.com/klauspost/compress/pull/599 + * zstd: faster next state update in BMI2 version of decode by @WojciechMula in https://github.com/klauspost/compress/pull/593 + * huff0: Do not check max size when reading table. https://github.com/klauspost/compress/pull/586 + * flate: Inplace hashing for level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/590 + + +* May 11, 2022 (v1.15.4) + * huff0: decompress directly into output by @WojciechMula in [#577](https://github.com/klauspost/compress/pull/577) + * inflate: Keep dict on stack [#581](https://github.com/klauspost/compress/pull/581) + * zstd: Faster decoding memcopy in asm [#583](https://github.com/klauspost/compress/pull/583) + * zstd: Fix ignored crc [#580](https://github.com/klauspost/compress/pull/580) + +* May 5, 2022 (v1.15.3) + * zstd: Allow to ignore checksum checking by @WojciechMula [#572](https://github.com/klauspost/compress/pull/572) + * s2: Fix incorrect seek for io.SeekEnd in [#575](https://github.com/klauspost/compress/pull/575) + +* Apr 26, 2022 (v1.15.2) + * zstd: Add x86-64 assembly for decompression on streams and blocks. Contributed by [@WojciechMula](https://github.com/WojciechMula). Typically 2x faster. [#528](https://github.com/klauspost/compress/pull/528) [#531](https://github.com/klauspost/compress/pull/531) [#545](https://github.com/klauspost/compress/pull/545) [#537](https://github.com/klauspost/compress/pull/537) + * zstd: Add options to ZipDecompressor and fixes [#539](https://github.com/klauspost/compress/pull/539) + * s2: Use sorted search for index [#555](https://github.com/klauspost/compress/pull/555) + * Minimum version is Go 1.16, added CI test on 1.18. + +* Mar 11, 2022 (v1.15.1) + * huff0: Add x86 assembly of Decode4X by @WojciechMula in [#512](https://github.com/klauspost/compress/pull/512) + * zstd: Reuse zip decoders in [#514](https://github.com/klauspost/compress/pull/514) + * zstd: Detect extra block data and report as corrupted in [#520](https://github.com/klauspost/compress/pull/520) + * zstd: Handle zero sized frame content size stricter in [#521](https://github.com/klauspost/compress/pull/521) + * zstd: Add stricter block size checks in [#523](https://github.com/klauspost/compress/pull/523) + +* Mar 3, 2022 (v1.15.0) + * zstd: Refactor decoder by @klauspost in [#498](https://github.com/klauspost/compress/pull/498) + * zstd: Add stream encoding without goroutines by @klauspost in [#505](https://github.com/klauspost/compress/pull/505) + * huff0: Prevent single blocks exceeding 16 bits by @klauspost in[#507](https://github.com/klauspost/compress/pull/507) + * flate: Inline literal emission by @klauspost in [#509](https://github.com/klauspost/compress/pull/509) + * gzhttp: Add zstd to transport by @klauspost in [#400](https://github.com/klauspost/compress/pull/400) + * gzhttp: Make content-type optional by @klauspost in [#510](https://github.com/klauspost/compress/pull/510) + +Both compression and decompression now supports "synchronous" stream operations. This means that whenever "concurrency" is set to 1, they will operate without spawning goroutines. + +Stream decompression is now faster on asynchronous, since the goroutine allocation much more effectively splits the workload. On typical streams this will typically use 2 cores fully for decompression. When a stream has finished decoding no goroutines will be left over, so decoders can now safely be pooled and still be garbage collected. + +While the release has been extensively tested, it is recommended to testing when upgrading. + +
          + +
          + See changes to v1.14.x + +* Feb 22, 2022 (v1.14.4) + * flate: Fix rare huffman only (-2) corruption. [#503](https://github.com/klauspost/compress/pull/503) + * zip: Update deprecated CreateHeaderRaw to correctly call CreateRaw by @saracen in [#502](https://github.com/klauspost/compress/pull/502) + * zip: don't read data descriptor early by @saracen in [#501](https://github.com/klauspost/compress/pull/501) #501 + * huff0: Use static decompression buffer up to 30% faster by @klauspost in [#499](https://github.com/klauspost/compress/pull/499) [#500](https://github.com/klauspost/compress/pull/500) + +* Feb 17, 2022 (v1.14.3) + * flate: Improve fastest levels compression speed ~10% more throughput. [#482](https://github.com/klauspost/compress/pull/482) [#489](https://github.com/klauspost/compress/pull/489) [#490](https://github.com/klauspost/compress/pull/490) [#491](https://github.com/klauspost/compress/pull/491) [#494](https://github.com/klauspost/compress/pull/494) [#478](https://github.com/klauspost/compress/pull/478) + * flate: Faster decompression speed, ~5-10%. [#483](https://github.com/klauspost/compress/pull/483) + * s2: Faster compression with Go v1.18 and amd64 microarch level 3+. [#484](https://github.com/klauspost/compress/pull/484) [#486](https://github.com/klauspost/compress/pull/486) + +* Jan 25, 2022 (v1.14.2) + * zstd: improve header decoder by @dsnet [#476](https://github.com/klauspost/compress/pull/476) + * zstd: Add bigger default blocks [#469](https://github.com/klauspost/compress/pull/469) + * zstd: Remove unused decompression buffer [#470](https://github.com/klauspost/compress/pull/470) + * zstd: Fix logically dead code by @ningmingxiao [#472](https://github.com/klauspost/compress/pull/472) + * flate: Improve level 7-9 [#471](https://github.com/klauspost/compress/pull/471) [#473](https://github.com/klauspost/compress/pull/473) + * zstd: Add noasm tag for xxhash [#475](https://github.com/klauspost/compress/pull/475) + +* Jan 11, 2022 (v1.14.1) + * s2: Add stream index in [#462](https://github.com/klauspost/compress/pull/462) + * flate: Speed and efficiency improvements in [#439](https://github.com/klauspost/compress/pull/439) [#461](https://github.com/klauspost/compress/pull/461) [#455](https://github.com/klauspost/compress/pull/455) [#452](https://github.com/klauspost/compress/pull/452) [#458](https://github.com/klauspost/compress/pull/458) + * zstd: Performance improvement in [#420]( https://github.com/klauspost/compress/pull/420) [#456](https://github.com/klauspost/compress/pull/456) [#437](https://github.com/klauspost/compress/pull/437) [#467](https://github.com/klauspost/compress/pull/467) [#468](https://github.com/klauspost/compress/pull/468) + * zstd: add arm64 xxhash assembly in [#464](https://github.com/klauspost/compress/pull/464) + * Add garbled for binaries for s2 in [#445](https://github.com/klauspost/compress/pull/445) +
          + +
          + See changes to v1.13.x + +* Aug 30, 2021 (v1.13.5) + * gz/zlib/flate: Alias stdlib errors [#425](https://github.com/klauspost/compress/pull/425) + * s2: Add block support to commandline tools [#413](https://github.com/klauspost/compress/pull/413) + * zstd: pooledZipWriter should return Writers to the same pool [#426](https://github.com/klauspost/compress/pull/426) + * Removed golang/snappy as external dependency for tests [#421](https://github.com/klauspost/compress/pull/421) + +* Aug 12, 2021 (v1.13.4) + * Add [snappy replacement package](https://github.com/klauspost/compress/tree/master/snappy). + * zstd: Fix incorrect encoding in "best" mode [#415](https://github.com/klauspost/compress/pull/415) + +* Aug 3, 2021 (v1.13.3) + * zstd: Improve Best compression [#404](https://github.com/klauspost/compress/pull/404) + * zstd: Fix WriteTo error forwarding [#411](https://github.com/klauspost/compress/pull/411) + * gzhttp: Return http.HandlerFunc instead of http.Handler. Unlikely breaking change. [#406](https://github.com/klauspost/compress/pull/406) + * s2sx: Fix max size error [#399](https://github.com/klauspost/compress/pull/399) + * zstd: Add optional stream content size on reset [#401](https://github.com/klauspost/compress/pull/401) + * zstd: use SpeedBestCompression for level >= 10 [#410](https://github.com/klauspost/compress/pull/410) + +* Jun 14, 2021 (v1.13.1) + * s2: Add full Snappy output support [#396](https://github.com/klauspost/compress/pull/396) + * zstd: Add configurable [Decoder window](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithDecoderMaxWindow) size [#394](https://github.com/klauspost/compress/pull/394) + * gzhttp: Add header to skip compression [#389](https://github.com/klauspost/compress/pull/389) + * s2: Improve speed with bigger output margin [#395](https://github.com/klauspost/compress/pull/395) + +* Jun 3, 2021 (v1.13.0) + * Added [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp#gzip-handler) which allows wrapping HTTP servers and clients with GZIP compressors. + * zstd: Detect short invalid signatures [#382](https://github.com/klauspost/compress/pull/382) + * zstd: Spawn decoder goroutine only if needed. [#380](https://github.com/klauspost/compress/pull/380) +
          + + +
          + See changes to v1.12.x + +* May 25, 2021 (v1.12.3) + * deflate: Better/faster Huffman encoding [#374](https://github.com/klauspost/compress/pull/374) + * deflate: Allocate less for history. [#375](https://github.com/klauspost/compress/pull/375) + * zstd: Forward read errors [#373](https://github.com/klauspost/compress/pull/373) + +* Apr 27, 2021 (v1.12.2) + * zstd: Improve better/best compression [#360](https://github.com/klauspost/compress/pull/360) [#364](https://github.com/klauspost/compress/pull/364) [#365](https://github.com/klauspost/compress/pull/365) + * zstd: Add helpers to compress/decompress zstd inside zip files [#363](https://github.com/klauspost/compress/pull/363) + * deflate: Improve level 5+6 compression [#367](https://github.com/klauspost/compress/pull/367) + * s2: Improve better/best compression [#358](https://github.com/klauspost/compress/pull/358) [#359](https://github.com/klauspost/compress/pull/358) + * s2: Load after checking src limit on amd64. [#362](https://github.com/klauspost/compress/pull/362) + * s2sx: Limit max executable size [#368](https://github.com/klauspost/compress/pull/368) + +* Apr 14, 2021 (v1.12.1) + * snappy package removed. Upstream added as dependency. + * s2: Better compression in "best" mode [#353](https://github.com/klauspost/compress/pull/353) + * s2sx: Add stdin input and detect pre-compressed from signature [#352](https://github.com/klauspost/compress/pull/352) + * s2c/s2d: Add http as possible input [#348](https://github.com/klauspost/compress/pull/348) + * s2c/s2d/s2sx: Always truncate when writing files [#352](https://github.com/klauspost/compress/pull/352) + * zstd: Reduce memory usage further when using [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) [#346](https://github.com/klauspost/compress/pull/346) + * s2: Fix potential problem with amd64 assembly and profilers [#349](https://github.com/klauspost/compress/pull/349) +
          + +
          + See changes to v1.11.x + +* Mar 26, 2021 (v1.11.13) + * zstd: Big speedup on small dictionary encodes [#344](https://github.com/klauspost/compress/pull/344) [#345](https://github.com/klauspost/compress/pull/345) + * zstd: Add [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) encoder option [#336](https://github.com/klauspost/compress/pull/336) + * deflate: Improve entropy compression [#338](https://github.com/klauspost/compress/pull/338) + * s2: Clean up and minor performance improvement in best [#341](https://github.com/klauspost/compress/pull/341) + +* Mar 5, 2021 (v1.11.12) + * s2: Add `s2sx` binary that creates [self extracting archives](https://github.com/klauspost/compress/tree/master/s2#s2sx-self-extracting-archives). + * s2: Speed up decompression on non-assembly platforms [#328](https://github.com/klauspost/compress/pull/328) + +* Mar 1, 2021 (v1.11.9) + * s2: Add ARM64 decompression assembly. Around 2x output speed. [#324](https://github.com/klauspost/compress/pull/324) + * s2: Improve "better" speed and efficiency. [#325](https://github.com/klauspost/compress/pull/325) + * s2: Fix binaries. + +* Feb 25, 2021 (v1.11.8) + * s2: Fixed occational out-of-bounds write on amd64. Upgrade recommended. + * s2: Add AMD64 assembly for better mode. 25-50% faster. [#315](https://github.com/klauspost/compress/pull/315) + * s2: Less upfront decoder allocation. [#322](https://github.com/klauspost/compress/pull/322) + * zstd: Faster "compression" of incompressible data. [#314](https://github.com/klauspost/compress/pull/314) + * zip: Fix zip64 headers. [#313](https://github.com/klauspost/compress/pull/313) + +* Jan 14, 2021 (v1.11.7) + * Use Bytes() interface to get bytes across packages. [#309](https://github.com/klauspost/compress/pull/309) + * s2: Add 'best' compression option. [#310](https://github.com/klauspost/compress/pull/310) + * s2: Add ReaderMaxBlockSize, changes `s2.NewReader` signature to include varargs. [#311](https://github.com/klauspost/compress/pull/311) + * s2: Fix crash on small better buffers. [#308](https://github.com/klauspost/compress/pull/308) + * s2: Clean up decoder. [#312](https://github.com/klauspost/compress/pull/312) + +* Jan 7, 2021 (v1.11.6) + * zstd: Make decoder allocations smaller [#306](https://github.com/klauspost/compress/pull/306) + * zstd: Free Decoder resources when Reset is called with a nil io.Reader [#305](https://github.com/klauspost/compress/pull/305) + +* Dec 20, 2020 (v1.11.4) + * zstd: Add Best compression mode [#304](https://github.com/klauspost/compress/pull/304) + * Add header decoder [#299](https://github.com/klauspost/compress/pull/299) + * s2: Add uncompressed stream option [#297](https://github.com/klauspost/compress/pull/297) + * Simplify/speed up small blocks with known max size. [#300](https://github.com/klauspost/compress/pull/300) + * zstd: Always reset literal dict encoder [#303](https://github.com/klauspost/compress/pull/303) + +* Nov 15, 2020 (v1.11.3) + * inflate: 10-15% faster decompression [#293](https://github.com/klauspost/compress/pull/293) + * zstd: Tweak DecodeAll default allocation [#295](https://github.com/klauspost/compress/pull/295) + +* Oct 11, 2020 (v1.11.2) + * s2: Fix out of bounds read in "better" block compression [#291](https://github.com/klauspost/compress/pull/291) + +* Oct 1, 2020 (v1.11.1) + * zstd: Set allLitEntropy true in default configuration [#286](https://github.com/klauspost/compress/pull/286) + +* Sept 8, 2020 (v1.11.0) + * zstd: Add experimental compression [dictionaries](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) [#281](https://github.com/klauspost/compress/pull/281) + * zstd: Fix mixed Write and ReadFrom calls [#282](https://github.com/klauspost/compress/pull/282) + * inflate/gz: Limit variable shifts, ~5% faster decompression [#274](https://github.com/klauspost/compress/pull/274) +
          + +
          + See changes to v1.10.x + +* July 8, 2020 (v1.10.11) + * zstd: Fix extra block when compressing with ReadFrom. [#278](https://github.com/klauspost/compress/pull/278) + * huff0: Also populate compression table when reading decoding table. [#275](https://github.com/klauspost/compress/pull/275) + +* June 23, 2020 (v1.10.10) + * zstd: Skip entropy compression in fastest mode when no matches. [#270](https://github.com/klauspost/compress/pull/270) + +* June 16, 2020 (v1.10.9): + * zstd: API change for specifying dictionaries. See [#268](https://github.com/klauspost/compress/pull/268) + * zip: update CreateHeaderRaw to handle zip64 fields. [#266](https://github.com/klauspost/compress/pull/266) + * Fuzzit tests removed. The service has been purchased and is no longer available. + +* June 5, 2020 (v1.10.8): + * 1.15x faster zstd block decompression. [#265](https://github.com/klauspost/compress/pull/265) + +* June 1, 2020 (v1.10.7): + * Added zstd decompression [dictionary support](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) + * Increase zstd decompression speed up to 1.19x. [#259](https://github.com/klauspost/compress/pull/259) + * Remove internal reset call in zstd compression and reduce allocations. [#263](https://github.com/klauspost/compress/pull/263) + +* May 21, 2020: (v1.10.6) + * zstd: Reduce allocations while decoding. [#258](https://github.com/klauspost/compress/pull/258), [#252](https://github.com/klauspost/compress/pull/252) + * zstd: Stricter decompression checks. + +* April 12, 2020: (v1.10.5) + * s2-commands: Flush output when receiving SIGINT. [#239](https://github.com/klauspost/compress/pull/239) + +* Apr 8, 2020: (v1.10.4) + * zstd: Minor/special case optimizations. [#251](https://github.com/klauspost/compress/pull/251), [#250](https://github.com/klauspost/compress/pull/250), [#249](https://github.com/klauspost/compress/pull/249), [#247](https://github.com/klauspost/compress/pull/247) +* Mar 11, 2020: (v1.10.3) + * s2: Use S2 encoder in pure Go mode for Snappy output as well. [#245](https://github.com/klauspost/compress/pull/245) + * s2: Fix pure Go block encoder. [#244](https://github.com/klauspost/compress/pull/244) + * zstd: Added "better compression" mode. [#240](https://github.com/klauspost/compress/pull/240) + * zstd: Improve speed of fastest compression mode by 5-10% [#241](https://github.com/klauspost/compress/pull/241) + * zstd: Skip creating encoders when not needed. [#238](https://github.com/klauspost/compress/pull/238) + +* Feb 27, 2020: (v1.10.2) + * Close to 50% speedup in inflate (gzip/zip decompression). [#236](https://github.com/klauspost/compress/pull/236) [#234](https://github.com/klauspost/compress/pull/234) [#232](https://github.com/klauspost/compress/pull/232) + * Reduce deflate level 1-6 memory usage up to 59%. [#227](https://github.com/klauspost/compress/pull/227) + +* Feb 18, 2020: (v1.10.1) + * Fix zstd crash when resetting multiple times without sending data. [#226](https://github.com/klauspost/compress/pull/226) + * deflate: Fix dictionary use on level 1-6. [#224](https://github.com/klauspost/compress/pull/224) + * Remove deflate writer reference when closing. [#224](https://github.com/klauspost/compress/pull/224) + +* Feb 4, 2020: (v1.10.0) + * Add optional dictionary to [stateless deflate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc#StatelessDeflate). Breaking change, send `nil` for previous behaviour. [#216](https://github.com/klauspost/compress/pull/216) + * Fix buffer overflow on repeated small block deflate. [#218](https://github.com/klauspost/compress/pull/218) + * Allow copying content from an existing ZIP file without decompressing+compressing. [#214](https://github.com/klauspost/compress/pull/214) + * Added [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) AMD64 assembler and various optimizations. Stream speed >10GB/s. [#186](https://github.com/klauspost/compress/pull/186) + +
          + +
          + See changes prior to v1.10.0 + +* Jan 20,2020 (v1.9.8) Optimize gzip/deflate with better size estimates and faster table generation. [#207](https://github.com/klauspost/compress/pull/207) by [luyu6056](https://github.com/luyu6056), [#206](https://github.com/klauspost/compress/pull/206). +* Jan 11, 2020: S2 Encode/Decode will use provided buffer if capacity is big enough. [#204](https://github.com/klauspost/compress/pull/204) +* Jan 5, 2020: (v1.9.7) Fix another zstd regression in v1.9.5 - v1.9.6 removed. +* Jan 4, 2020: (v1.9.6) Regression in v1.9.5 fixed causing corrupt zstd encodes in rare cases. +* Jan 4, 2020: Faster IO in [s2c + s2d commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) compression/decompression. [#192](https://github.com/klauspost/compress/pull/192) +* Dec 29, 2019: Removed v1.9.5 since fuzz tests showed a compatibility problem with the reference zstandard decoder. +* Dec 29, 2019: (v1.9.5) zstd: 10-20% faster block compression. [#199](https://github.com/klauspost/compress/pull/199) +* Dec 29, 2019: [zip](https://godoc.org/github.com/klauspost/compress/zip) package updated with latest Go features +* Dec 29, 2019: zstd: Single segment flag condintions tweaked. [#197](https://github.com/klauspost/compress/pull/197) +* Dec 18, 2019: s2: Faster compression when ReadFrom is used. [#198](https://github.com/klauspost/compress/pull/198) +* Dec 10, 2019: s2: Fix repeat length output when just above at 16MB limit. +* Dec 10, 2019: zstd: Add function to get decoder as io.ReadCloser. [#191](https://github.com/klauspost/compress/pull/191) +* Dec 3, 2019: (v1.9.4) S2: limit max repeat length. [#188](https://github.com/klauspost/compress/pull/188) +* Dec 3, 2019: Add [WithNoEntropyCompression](https://godoc.org/github.com/klauspost/compress/zstd#WithNoEntropyCompression) to zstd [#187](https://github.com/klauspost/compress/pull/187) +* Dec 3, 2019: Reduce memory use for tests. Check for leaked goroutines. +* Nov 28, 2019 (v1.9.3) Less allocations in stateless deflate. +* Nov 28, 2019: 5-20% Faster huff0 decode. Impacts zstd as well. [#184](https://github.com/klauspost/compress/pull/184) +* Nov 12, 2019 (v1.9.2) Added [Stateless Compression](#stateless-compression) for gzip/deflate. +* Nov 12, 2019: Fixed zstd decompression of large single blocks. [#180](https://github.com/klauspost/compress/pull/180) +* Nov 11, 2019: Set default [s2c](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) block size to 4MB. +* Nov 11, 2019: Reduce inflate memory use by 1KB. +* Nov 10, 2019: Less allocations in deflate bit writer. +* Nov 10, 2019: Fix inconsistent error returned by zstd decoder. +* Oct 28, 2019 (v1.9.1) ztsd: Fix crash when compressing blocks. [#174](https://github.com/klauspost/compress/pull/174) +* Oct 24, 2019 (v1.9.0) zstd: Fix rare data corruption [#173](https://github.com/klauspost/compress/pull/173) +* Oct 24, 2019 zstd: Fix huff0 out of buffer write [#171](https://github.com/klauspost/compress/pull/171) and always return errors [#172](https://github.com/klauspost/compress/pull/172) +* Oct 10, 2019: Big deflate rewrite, 30-40% faster with better compression [#105](https://github.com/klauspost/compress/pull/105) + +
          + +
          + See changes prior to v1.9.0 + +* Oct 10, 2019: (v1.8.6) zstd: Allow partial reads to get flushed data. [#169](https://github.com/klauspost/compress/pull/169) +* Oct 3, 2019: Fix inconsistent results on broken zstd streams. +* Sep 25, 2019: Added `-rm` (remove source files) and `-q` (no output except errors) to `s2c` and `s2d` [commands](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) +* Sep 16, 2019: (v1.8.4) Add `s2c` and `s2d` [commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools). +* Sep 10, 2019: (v1.8.3) Fix s2 decoder [Skip](https://godoc.org/github.com/klauspost/compress/s2#Reader.Skip). +* Sep 7, 2019: zstd: Added [WithWindowSize](https://godoc.org/github.com/klauspost/compress/zstd#WithWindowSize), contributed by [ianwilkes](https://github.com/ianwilkes). +* Sep 5, 2019: (v1.8.2) Add [WithZeroFrames](https://godoc.org/github.com/klauspost/compress/zstd#WithZeroFrames) which adds full zero payload block encoding option. +* Sep 5, 2019: Lazy initialization of zstandard predefined en/decoder tables. +* Aug 26, 2019: (v1.8.1) S2: 1-2% compression increase in "better" compression mode. +* Aug 26, 2019: zstd: Check maximum size of Huffman 1X compressed literals while decoding. +* Aug 24, 2019: (v1.8.0) Added [S2 compression](https://github.com/klauspost/compress/tree/master/s2#s2-compression), a high performance replacement for Snappy. +* Aug 21, 2019: (v1.7.6) Fixed minor issues found by fuzzer. One could lead to zstd not decompressing. +* Aug 18, 2019: Add [fuzzit](https://fuzzit.dev/) continuous fuzzing. +* Aug 14, 2019: zstd: Skip incompressible data 2x faster. [#147](https://github.com/klauspost/compress/pull/147) +* Aug 4, 2019 (v1.7.5): Better literal compression. [#146](https://github.com/klauspost/compress/pull/146) +* Aug 4, 2019: Faster zstd compression. [#143](https://github.com/klauspost/compress/pull/143) [#144](https://github.com/klauspost/compress/pull/144) +* Aug 4, 2019: Faster zstd decompression. [#145](https://github.com/klauspost/compress/pull/145) [#143](https://github.com/klauspost/compress/pull/143) [#142](https://github.com/klauspost/compress/pull/142) +* July 15, 2019 (v1.7.4): Fix double EOF block in rare cases on zstd encoder. +* July 15, 2019 (v1.7.3): Minor speedup/compression increase in default zstd encoder. +* July 14, 2019: zstd decoder: Fix decompression error on multiple uses with mixed content. +* July 7, 2019 (v1.7.2): Snappy update, zstd decoder potential race fix. +* June 17, 2019: zstd decompression bugfix. +* June 17, 2019: fix 32 bit builds. +* June 17, 2019: Easier use in modules (less dependencies). +* June 9, 2019: New stronger "default" [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression mode. Matches zstd default compression ratio. +* June 5, 2019: 20-40% throughput in [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and better compression. +* June 5, 2019: deflate/gzip compression: Reduce memory usage of lower compression levels. +* June 2, 2019: Added [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression! +* May 25, 2019: deflate/gzip: 10% faster bit writer, mostly visible in lower levels. +* Apr 22, 2019: [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) decompression added. +* Aug 1, 2018: Added [huff0 README](https://github.com/klauspost/compress/tree/master/huff0#huff0-entropy-compression). +* Jul 8, 2018: Added [Performance Update 2018](#performance-update-2018) below. +* Jun 23, 2018: Merged [Go 1.11 inflate optimizations](https://go-review.googlesource.com/c/go/+/102235). Go 1.9 is now required. Backwards compatible version tagged with [v1.3.0](https://github.com/klauspost/compress/releases/tag/v1.3.0). +* Apr 2, 2018: Added [huff0](https://godoc.org/github.com/klauspost/compress/huff0) en/decoder. Experimental for now, API may change. +* Mar 4, 2018: Added [FSE Entropy](https://godoc.org/github.com/klauspost/compress/fse) en/decoder. Experimental for now, API may change. +* Nov 3, 2017: Add compression [Estimate](https://godoc.org/github.com/klauspost/compress#Estimate) function. +* May 28, 2017: Reduce allocations when resetting decoder. +* Apr 02, 2017: Change back to official crc32, since changes were merged in Go 1.7. +* Jan 14, 2017: Reduce stack pressure due to array copies. See [Issue #18625](https://github.com/golang/go/issues/18625). +* Oct 25, 2016: Level 2-4 have been rewritten and now offers significantly better performance than before. +* Oct 20, 2016: Port zlib changes from Go 1.7 to fix zlib writer issue. Please update. +* Oct 16, 2016: Go 1.7 changes merged. Apples to apples this package is a few percent faster, but has a significantly better balance between speed and compression per level. +* Mar 24, 2016: Always attempt Huffman encoding on level 4-7. This improves base 64 encoded data compression. +* Mar 24, 2016: Small speedup for level 1-3. +* Feb 19, 2016: Faster bit writer, level -2 is 15% faster, level 1 is 4% faster. +* Feb 19, 2016: Handle small payloads faster in level 1-3. +* Feb 19, 2016: Added faster level 2 + 3 compression modes. +* Feb 19, 2016: [Rebalanced compression levels](https://blog.klauspost.com/rebalancing-deflate-compression-levels/), so there is a more even progresssion in terms of compression. New default level is 5. +* Feb 14, 2016: Snappy: Merge upstream changes. +* Feb 14, 2016: Snappy: Fix aggressive skipping. +* Feb 14, 2016: Snappy: Update benchmark. +* Feb 13, 2016: Deflate: Fixed assembler problem that could lead to sub-optimal compression. +* Feb 12, 2016: Snappy: Added AMD64 SSE 4.2 optimizations to matching, which makes easy to compress material run faster. Typical speedup is around 25%. +* Feb 9, 2016: Added Snappy package fork. This version is 5-7% faster, much more on hard to compress content. +* Jan 30, 2016: Optimize level 1 to 3 by not considering static dictionary or storing uncompressed. ~4-5% speedup. +* Jan 16, 2016: Optimization on deflate level 1,2,3 compression. +* Jan 8 2016: Merge [CL 18317](https://go-review.googlesource.com/#/c/18317): fix reading, writing of zip64 archives. +* Dec 8 2015: Make level 1 and -2 deterministic even if write size differs. +* Dec 8 2015: Split encoding functions, so hashing and matching can potentially be inlined. 1-3% faster on AMD64. 5% faster on other platforms. +* Dec 8 2015: Fixed rare [one byte out-of bounds read](https://github.com/klauspost/compress/issues/20). Please update! +* Nov 23 2015: Optimization on token writer. ~2-4% faster. Contributed by [@dsnet](https://github.com/dsnet). +* Nov 20 2015: Small optimization to bit writer on 64 bit systems. +* Nov 17 2015: Fixed out-of-bound errors if the underlying Writer returned an error. See [#15](https://github.com/klauspost/compress/issues/15). +* Nov 12 2015: Added [io.WriterTo](https://golang.org/pkg/io/#WriterTo) support to gzip/inflate. +* Nov 11 2015: Merged [CL 16669](https://go-review.googlesource.com/#/c/16669/4): archive/zip: enable overriding (de)compressors per file +* Oct 15 2015: Added skipping on uncompressible data. Random data speed up >5x. + +
          + +# deflate usage + +The packages are drop-in replacements for standard libraries. Simply replace the import path to use them: + +| old import | new import | Documentation +|--------------------|-----------------------------------------|--------------------| +| `compress/gzip` | `github.com/klauspost/compress/gzip` | [gzip](https://pkg.go.dev/github.com/klauspost/compress/gzip?tab=doc) +| `compress/zlib` | `github.com/klauspost/compress/zlib` | [zlib](https://pkg.go.dev/github.com/klauspost/compress/zlib?tab=doc) +| `archive/zip` | `github.com/klauspost/compress/zip` | [zip](https://pkg.go.dev/github.com/klauspost/compress/zip?tab=doc) +| `compress/flate` | `github.com/klauspost/compress/flate` | [flate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc) + +* Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). + +You may also be interested in [pgzip](https://github.com/klauspost/pgzip), which is a drop in replacement for gzip, which support multithreaded compression on big files and the optimized [crc32](https://github.com/klauspost/crc32) package used by these packages. + +The packages contains the same as the standard library, so you can use the godoc for that: [gzip](http://golang.org/pkg/compress/gzip/), [zip](http://golang.org/pkg/archive/zip/), [zlib](http://golang.org/pkg/compress/zlib/), [flate](http://golang.org/pkg/compress/flate/). + +Currently there is only minor speedup on decompression (mostly CRC32 calculation). + +Memory usage is typically 1MB for a Writer. stdlib is in the same range. +If you expect to have a lot of concurrently allocated Writers consider using +the stateless compress described below. + +For compression performance, see: [this spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). + +To disable all assembly add `-tags=noasm`. This works across all packages. + +# Stateless compression + +This package offers stateless compression as a special option for gzip/deflate. +It will do compression but without maintaining any state between Write calls. + +This means there will be no memory kept between Write calls, but compression and speed will be suboptimal. + +This is only relevant in cases where you expect to run many thousands of compressors concurrently, +but with very little activity. This is *not* intended for regular web servers serving individual requests. + +Because of this, the size of actual Write calls will affect output size. + +In gzip, specify level `-3` / `gzip.StatelessCompression` to enable. + +For direct deflate use, NewStatelessWriter and StatelessDeflate are available. See [documentation](https://godoc.org/github.com/klauspost/compress/flate#NewStatelessWriter) + +A `bufio.Writer` can of course be used to control write sizes. For example, to use a 4KB buffer: + +```go + // replace 'ioutil.Discard' with your output. + gzw, err := gzip.NewWriterLevel(ioutil.Discard, gzip.StatelessCompression) + if err != nil { + return err + } + defer gzw.Close() + + w := bufio.NewWriterSize(gzw, 4096) + defer w.Flush() + + // Write to 'w' +``` + +This will only use up to 4KB in memory when the writer is idle. + +Compression is almost always worse than the fastest compression level +and each write will allocate (a little) memory. + +# Performance Update 2018 + +It has been a while since we have been looking at the speed of this package compared to the standard library, so I thought I would re-do my tests and give some overall recommendations based on the current state. All benchmarks have been performed with Go 1.10 on my Desktop Intel(R) Core(TM) i7-2600 CPU @3.40GHz. Since I last ran the tests, I have gotten more RAM, which means tests with big files are no longer limited by my SSD. + +The raw results are in my [updated spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). Due to cgo changes and upstream updates i could not get the cgo version of gzip to compile. Instead I included the [zstd](https://github.com/datadog/zstd) cgo implementation. If I get cgo gzip to work again, I might replace the results in the sheet. + +The columns to take note of are: *MB/s* - the throughput. *Reduction* - the data size reduction in percent of the original. *Rel Speed* relative speed compared to the standard library at the same level. *Smaller* - how many percent smaller is the compressed output compared to stdlib. Negative means the output was bigger. *Loss* means the loss (or gain) in compression as a percentage difference of the input. + +The `gzstd` (standard library gzip) and `gzkp` (this package gzip) only uses one CPU core. [`pgzip`](https://github.com/klauspost/pgzip), [`bgzf`](https://github.com/biogo/hts/tree/master/bgzf) uses all 4 cores. [`zstd`](https://github.com/DataDog/zstd) uses one core, and is a beast (but not Go, yet). + + +## Overall differences. + +There appears to be a roughly 5-10% speed advantage over the standard library when comparing at similar compression levels. + +The biggest difference you will see is the result of [re-balancing](https://blog.klauspost.com/rebalancing-deflate-compression-levels/) the compression levels. I wanted by library to give a smoother transition between the compression levels than the standard library. + +This package attempts to provide a more smooth transition, where "1" is taking a lot of shortcuts, "5" is the reasonable trade-off and "9" is the "give me the best compression", and the values in between gives something reasonable in between. The standard library has big differences in levels 1-4, but levels 5-9 having no significant gains - often spending a lot more time than can be justified by the achieved compression. + +There are links to all the test data in the [spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing) in the top left field on each tab. + +## Web Content + +This test set aims to emulate typical use in a web server. The test-set is 4GB data in 53k files, and is a mixture of (mostly) HTML, JS, CSS. + +Since level 1 and 9 are close to being the same code, they are quite close. But looking at the levels in-between the differences are quite big. + +Looking at level 6, this package is 88% faster, but will output about 6% more data. For a web server, this means you can serve 88% more data, but have to pay for 6% more bandwidth. You can draw your own conclusions on what would be the most expensive for your case. + +## Object files + +This test is for typical data files stored on a server. In this case it is a collection of Go precompiled objects. They are very compressible. + +The picture is similar to the web content, but with small differences since this is very compressible. Levels 2-3 offer good speed, but is sacrificing quite a bit of compression. + +The standard library seems suboptimal on level 3 and 4 - offering both worse compression and speed than level 6 & 7 of this package respectively. + +## Highly Compressible File + +This is a JSON file with very high redundancy. The reduction starts at 95% on level 1, so in real life terms we are dealing with something like a highly redundant stream of data, etc. + +It is definitely visible that we are dealing with specialized content here, so the results are very scattered. This package does not do very well at levels 1-4, but picks up significantly at level 5 and levels 7 and 8 offering great speed for the achieved compression. + +So if you know you content is extremely compressible you might want to go slightly higher than the defaults. The standard library has a huge gap between levels 3 and 4 in terms of speed (2.75x slowdown), so it offers little "middle ground". + +## Medium-High Compressible + +This is a pretty common test corpus: [enwik9](http://mattmahoney.net/dc/textdata.html). It contains the first 10^9 bytes of the English Wikipedia dump on Mar. 3, 2006. This is a very good test of typical text based compression and more data heavy streams. + +We see a similar picture here as in "Web Content". On equal levels some compression is sacrificed for more speed. Level 5 seems to be the best trade-off between speed and size, beating stdlib level 3 in both. + +## Medium Compressible + +I will combine two test sets, one [10GB file set](http://mattmahoney.net/dc/10gb.html) and a VM disk image (~8GB). Both contain different data types and represent a typical backup scenario. + +The most notable thing is how quickly the standard library drops to very low compression speeds around level 5-6 without any big gains in compression. Since this type of data is fairly common, this does not seem like good behavior. + + +## Un-compressible Content + +This is mainly a test of how good the algorithms are at detecting un-compressible input. The standard library only offers this feature with very conservative settings at level 1. Obviously there is no reason for the algorithms to try to compress input that cannot be compressed. The only downside is that it might skip some compressible data on false detections. + + +## Huffman only compression + +This compression library adds a special compression level, named `HuffmanOnly`, which allows near linear time compression. This is done by completely disabling matching of previous data, and only reduce the number of bits to represent each character. + +This means that often used characters, like 'e' and ' ' (space) in text use the fewest bits to represent, and rare characters like '¤' takes more bits to represent. For more information see [wikipedia](https://en.wikipedia.org/wiki/Huffman_coding) or this nice [video](https://youtu.be/ZdooBTdW5bM). + +Since this type of compression has much less variance, the compression speed is mostly unaffected by the input data, and is usually more than *180MB/s* for a single core. + +The downside is that the compression ratio is usually considerably worse than even the fastest conventional compression. The compression ratio can never be better than 8:1 (12.5%). + +The linear time compression can be used as a "better than nothing" mode, where you cannot risk the encoder to slow down on some content. For comparison, the size of the "Twain" text is *233460 bytes* (+29% vs. level 1) and encode speed is 144MB/s (4.5x level 1). So in this case you trade a 30% size increase for a 4 times speedup. + +For more information see my blog post on [Fast Linear Time Compression](http://blog.klauspost.com/constant-time-gzipzip-compression/). + +This is implemented on Go 1.7 as "Huffman Only" mode, though not exposed for gzip. + +# Other packages + +Here are other packages of good quality and pure Go (no cgo wrappers or autoconverted code): + +* [github.com/pierrec/lz4](https://github.com/pierrec/lz4) - strong multithreaded LZ4 compression. +* [github.com/cosnicolaou/pbzip2](https://github.com/cosnicolaou/pbzip2) - multithreaded bzip2 decompression. +* [github.com/dsnet/compress](https://github.com/dsnet/compress) - brotli decompression, bzip2 writer. +* [github.com/ronanh/intcomp](https://github.com/ronanh/intcomp) - Integer compression. +* [github.com/spenczar/fpc](https://github.com/spenczar/fpc) - Float compression. +* [github.com/minio/zipindex](https://github.com/minio/zipindex) - External ZIP directory index. +* [github.com/ybirader/pzip](https://github.com/ybirader/pzip) - Fast concurrent zip archiver and extractor. + +# license + +This code is licensed under the same conditions as the original Go code. See LICENSE file. diff --git a/examples/go/vendor/github.com/klauspost/compress/SECURITY.md b/examples/go/vendor/github.com/klauspost/compress/SECURITY.md new file mode 100644 index 0000000..ca6685e --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/SECURITY.md @@ -0,0 +1,25 @@ +# Security Policy + +## Supported Versions + +Security updates are applied only to the latest release. + +## Vulnerability Definition + +A security vulnerability is a bug that with certain input triggers a crash or an infinite loop. Most calls will have varying execution time and only in rare cases will slow operation be considered a security vulnerability. + +Corrupted output generally is not considered a security vulnerability, unless independent operations are able to affect each other. Note that not all functionality is re-entrant and safe to use concurrently. + +Out-of-memory crashes only applies if the en/decoder uses an abnormal amount of memory, with appropriate options applied, to limit maximum window size, concurrency, etc. However, if you are in doubt you are welcome to file a security issue. + +It is assumed that all callers are trusted, meaning internal data exposed through reflection or inspection of returned data structures is not considered a vulnerability. + +Vulnerabilities resulting from compiler/assembler errors should be reported upstream. Depending on the severity this package may or may not implement a workaround. + +## Reporting a Vulnerability + +If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. + +Please disclose it at [security advisory](https://github.com/klauspost/compress/security/advisories/new). If possible please provide a minimal reproducer. If the issue only applies to a single platform, it would be helpful to provide access to that. + +This project is maintained by a team of volunteers on a reasonable-effort basis. As such, vulnerabilities will be disclosed in a best effort base. diff --git a/examples/go/vendor/github.com/klauspost/compress/compressible.go b/examples/go/vendor/github.com/klauspost/compress/compressible.go new file mode 100644 index 0000000..ea5a692 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/compressible.go @@ -0,0 +1,85 @@ +package compress + +import "math" + +// Estimate returns a normalized compressibility estimate of block b. +// Values close to zero are likely uncompressible. +// Values above 0.1 are likely to be compressible. +// Values above 0.5 are very compressible. +// Very small lengths will return 0. +func Estimate(b []byte) float64 { + if len(b) < 16 { + return 0 + } + + // Correctly predicted order 1 + hits := 0 + lastMatch := false + var o1 [256]byte + var hist [256]int + c1 := byte(0) + for _, c := range b { + if c == o1[c1] { + // We only count a hit if there was two correct predictions in a row. + if lastMatch { + hits++ + } + lastMatch = true + } else { + lastMatch = false + } + o1[c1] = c + c1 = c + hist[c]++ + } + + // Use x^0.6 to give better spread + prediction := math.Pow(float64(hits)/float64(len(b)), 0.6) + + // Calculate histogram distribution + variance := float64(0) + avg := float64(len(b)) / 256 + + for _, v := range hist { + Δ := float64(v) - avg + variance += Δ * Δ + } + + stddev := math.Sqrt(float64(variance)) / float64(len(b)) + exp := math.Sqrt(1 / float64(len(b))) + + // Subtract expected stddev + stddev -= exp + if stddev < 0 { + stddev = 0 + } + stddev *= 1 + exp + + // Use x^0.4 to give better spread + entropy := math.Pow(stddev, 0.4) + + // 50/50 weight between prediction and histogram distribution + return math.Pow((prediction+entropy)/2, 0.9) +} + +// ShannonEntropyBits returns the number of bits minimum required to represent +// an entropy encoding of the input bytes. +// https://en.wiktionary.org/wiki/Shannon_entropy +func ShannonEntropyBits(b []byte) int { + if len(b) == 0 { + return 0 + } + var hist [256]int + for _, c := range b { + hist[c]++ + } + shannon := float64(0) + invTotal := 1.0 / float64(len(b)) + for _, v := range hist[:] { + if v > 0 { + n := float64(v) + shannon += math.Ceil(-math.Log2(n*invTotal) * n) + } + } + return int(math.Ceil(shannon)) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/README.md b/examples/go/vendor/github.com/klauspost/compress/fse/README.md new file mode 100644 index 0000000..ea7324d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/README.md @@ -0,0 +1,79 @@ +# Finite State Entropy + +This package provides Finite State Entropy encoding and decoding. + +Finite State Entropy (also referenced as [tANS](https://en.wikipedia.org/wiki/Asymmetric_numeral_systems#tANS)) +encoding provides a fast near-optimal symbol encoding/decoding +for byte blocks as implemented in [zstandard](https://github.com/facebook/zstd). + +This can be used for compressing input with a lot of similar input values to the smallest number of bytes. +This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, +but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding. + +* [Godoc documentation](https://godoc.org/github.com/klauspost/compress/fse) + +## News + + * Feb 2018: First implementation released. Consider this beta software for now. + +# Usage + +This package provides a low level interface that allows to compress single independent blocks. + +Each block is separate, and there is no built in integrity checks. +This means that the caller should keep track of block sizes and also do checksums if needed. + +Compressing a block is done via the [`Compress`](https://godoc.org/github.com/klauspost/compress/fse#Compress) function. +You must provide input and will receive the output and maybe an error. + +These error values can be returned: + +| Error | Description | +|---------------------|-----------------------------------------------------------------------------| +| `` | Everything ok, output is returned | +| `ErrIncompressible` | Returned when input is judged to be too hard to compress | +| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | +| `(error)` | An internal error occurred. | + +As can be seen above there are errors that will be returned even under normal operation so it is important to handle these. + +To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/fse#Scratch) object +that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same +object can be used for both. + +Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this +you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. + +Decompressing is done by calling the [`Decompress`](https://godoc.org/github.com/klauspost/compress/fse#Decompress) function. +You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back +your input was likely corrupted. + +It is important to note that a successful decoding does *not* mean your output matches your original input. +There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. + +For more detailed usage, see examples in the [godoc documentation](https://godoc.org/github.com/klauspost/compress/fse#pkg-examples). + +# Performance + +A lot of factors are affecting speed. Block sizes and compressibility of the material are primary factors. +All compression functions are currently only running on the calling goroutine so only one core will be used per block. + +The compressor is significantly faster if symbols are kept as small as possible. The highest byte value of the input +is used to reduce some of the processing, so if all your input is above byte value 64 for instance, it may be +beneficial to transpose all your input values down by 64. + +With moderate block sizes around 64k speed are typically 200MB/s per core for compression and +around 300MB/s decompression speed. + +The same hardware typically does Huffman (deflate) encoding at 125MB/s and decompression at 100MB/s. + +# Plans + +At one point, more internals will be exposed to facilitate more "expert" usage of the components. + +A streaming interface is also likely to be implemented. Likely compatible with [FSE stream format](https://github.com/Cyan4973/FiniteStateEntropy/blob/dev/programs/fileio.c#L261). + +# Contributing + +Contributions are always welcome. Be aware that adding public functions will require good justification and breaking +changes will likely not be accepted. If in doubt open an issue before writing the PR. \ No newline at end of file diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go b/examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go new file mode 100644 index 0000000..f65eb39 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go @@ -0,0 +1,122 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +import ( + "encoding/binary" + "errors" + "io" +) + +// bitReader reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReader struct { + in []byte + off uint // next byte to read is at in[off - 1] + value uint64 + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReader) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + b.off = uint(len(in)) + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.bitsRead += 8 - uint8(highBits(uint32(v))) + return nil +} + +// getBits will return n bits. n can be 0. +func (b *bitReader) getBits(n uint8) uint16 { + if n == 0 || b.bitsRead >= 64 { + return 0 + } + return b.getBitsFast(n) +} + +// getBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReader) getBitsFast(n uint8) uint16 { + const regMask = 64 - 1 + v := uint16((b.value << (b.bitsRead & regMask)) >> ((regMask + 1 - n) & regMask)) + b.bitsRead += n + return v +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReader) fillFast() { + if b.bitsRead < 32 { + return + } + // 2 bounds checks. + v := b.in[b.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + b.off -= 4 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReader) fill() { + if b.bitsRead < 32 { + return + } + if b.off > 4 { + v := b.in[b.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + b.off -= 4 + return + } + for b.off > 0 { + b.value = (b.value << 8) | uint64(b.in[b.off-1]) + b.bitsRead -= 8 + b.off-- + } +} + +// fillFastStart() assumes the bitreader is empty and there is at least 8 bytes to read. +func (b *bitReader) fillFastStart() { + // Do single re-slice to avoid bounds checks. + b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) + b.bitsRead = 0 + b.off -= 8 +} + +// finished returns true if all bits have been read from the bit stream. +func (b *bitReader) finished() bool { + return b.bitsRead >= 64 && b.off == 0 +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReader) close() error { + // Release reference. + b.in = nil + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go b/examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go new file mode 100644 index 0000000..e82fa3b --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go @@ -0,0 +1,167 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +import "fmt" + +// bitWriter will write bits. +// First bit will be LSB of the first byte of output. +type bitWriter struct { + bitContainer uint64 + nBits uint8 + out []byte +} + +// bitMask16 is bitmasks. Has extra to avoid bounds check. +var bitMask16 = [32]uint16{ + 0, 1, 3, 7, 0xF, 0x1F, + 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, + 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF} /* up to 16 bits */ + +// addBits16NC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16NC(value uint16, bits uint8) { + b.bitContainer |= uint64(value&bitMask16[bits&31]) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16ZeroNC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +// This is fastest if bits can be zero. +func (b *bitWriter) addBits16ZeroNC(value uint16, bits uint8) { + if bits == 0 { + return + } + value <<= (16 - bits) & 15 + value >>= (16 - bits) & 15 + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// flush will flush all pending full bytes. +// There will be at least 56 bits available for writing when this has been called. +// Using flush32 is faster, but leaves less space for writing. +func (b *bitWriter) flush() { + v := b.nBits >> 3 + switch v { + case 0: + case 1: + b.out = append(b.out, + byte(b.bitContainer), + ) + case 2: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + ) + case 3: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + ) + case 4: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + ) + case 5: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + ) + case 6: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + ) + case 7: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + byte(b.bitContainer>>48), + ) + case 8: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + byte(b.bitContainer>>48), + byte(b.bitContainer>>56), + ) + default: + panic(fmt.Errorf("bits (%d) > 64", b.nBits)) + } + b.bitContainer >>= v << 3 + b.nBits &= 7 +} + +// flush32 will flush out, so there are at least 32 bits available for writing. +func (b *bitWriter) flush32() { + if b.nBits < 32 { + return + } + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24)) + b.nBits -= 32 + b.bitContainer >>= 32 +} + +// flushAlign will flush remaining full bytes and align to next byte boundary. +func (b *bitWriter) flushAlign() { + nbBytes := (b.nBits + 7) >> 3 + for i := uint8(0); i < nbBytes; i++ { + b.out = append(b.out, byte(b.bitContainer>>(i*8))) + } + b.nBits = 0 + b.bitContainer = 0 +} + +// close will write the alignment bit and write the final byte(s) +// to the output. +func (b *bitWriter) close() { + // End mark + b.addBits16Clean(1, 1) + // flush until next byte. + b.flushAlign() +} + +// reset and continue writing by appending to out. +func (b *bitWriter) reset(out []byte) { + b.bitContainer = 0 + b.nBits = 0 + b.out = out +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go b/examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go new file mode 100644 index 0000000..abade2d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go @@ -0,0 +1,47 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +// byteReader provides a byte reader that reads +// little endian values from a byte stream. +// The input stream is manually advanced. +// The reader performs no bounds checks. +type byteReader struct { + b []byte + off int +} + +// init will initialize the reader and set the input. +func (b *byteReader) init(in []byte) { + b.b = in + b.off = 0 +} + +// advance the stream b n bytes. +func (b *byteReader) advance(n uint) { + b.off += int(n) +} + +// Uint32 returns a little endian uint32 starting at current offset. +func (b byteReader) Uint32() uint32 { + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := uint32(b2[3]) + v2 := uint32(b2[2]) + v1 := uint32(b2[1]) + v0 := uint32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// unread returns the unread portion of the input. +func (b byteReader) unread() []byte { + return b.b[b.off:] +} + +// remain will return the number of bytes remaining. +func (b byteReader) remain() int { + return len(b.b) - b.off +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/compress.go b/examples/go/vendor/github.com/klauspost/compress/fse/compress.go new file mode 100644 index 0000000..074018d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/compress.go @@ -0,0 +1,683 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +import ( + "errors" + "fmt" +) + +// Compress the input bytes. Input must be < 2GB. +// Provide a Scratch buffer to avoid memory allocations. +// Note that the output is also kept in the scratch buffer. +// If input is too hard to compress, ErrIncompressible is returned. +// If input is a single byte value repeated ErrUseRLE is returned. +func Compress(in []byte, s *Scratch) ([]byte, error) { + if len(in) <= 1 { + return nil, ErrIncompressible + } + if len(in) > (2<<30)-1 { + return nil, errors.New("input too big, must be < 2GB") + } + s, err := s.prepare(in) + if err != nil { + return nil, err + } + + // Create histogram, if none was provided. + maxCount := s.maxCount + if maxCount == 0 { + maxCount = s.countSimple(in) + } + // Reset for next run. + s.clearCount = true + s.maxCount = 0 + if maxCount == len(in) { + // One symbol, use RLE + return nil, ErrUseRLE + } + if maxCount == 1 || maxCount < (len(in)>>7) { + // Each symbol present maximum once or too well distributed. + return nil, ErrIncompressible + } + s.optimalTableLog() + err = s.normalizeCount() + if err != nil { + return nil, err + } + err = s.writeCount() + if err != nil { + return nil, err + } + + if false { + err = s.validateNorm() + if err != nil { + return nil, err + } + } + + err = s.buildCTable() + if err != nil { + return nil, err + } + err = s.compress(in) + if err != nil { + return nil, err + } + s.Out = s.bw.out + // Check if we compressed. + if len(s.Out) >= len(in) { + return nil, ErrIncompressible + } + return s.Out, nil +} + +// cState contains the compression state of a stream. +type cState struct { + bw *bitWriter + stateTable []uint16 + state uint16 +} + +// init will initialize the compression state to the first symbol of the stream. +func (c *cState) init(bw *bitWriter, ct *cTable, tableLog uint8, first symbolTransform) { + c.bw = bw + c.stateTable = ct.stateTable + + nbBitsOut := (first.deltaNbBits + (1 << 15)) >> 16 + im := int32((nbBitsOut << 16) - first.deltaNbBits) + lu := (im >> nbBitsOut) + first.deltaFindState + c.state = c.stateTable[lu] +} + +// encode the output symbol provided and write it to the bitstream. +func (c *cState) encode(symbolTT symbolTransform) { + nbBitsOut := (uint32(c.state) + symbolTT.deltaNbBits) >> 16 + dstState := int32(c.state>>(nbBitsOut&15)) + symbolTT.deltaFindState + c.bw.addBits16NC(c.state, uint8(nbBitsOut)) + c.state = c.stateTable[dstState] +} + +// encode the output symbol provided and write it to the bitstream. +func (c *cState) encodeZero(symbolTT symbolTransform) { + nbBitsOut := (uint32(c.state) + symbolTT.deltaNbBits) >> 16 + dstState := int32(c.state>>(nbBitsOut&15)) + symbolTT.deltaFindState + c.bw.addBits16ZeroNC(c.state, uint8(nbBitsOut)) + c.state = c.stateTable[dstState] +} + +// flush will write the tablelog to the output and flush the remaining full bytes. +func (c *cState) flush(tableLog uint8) { + c.bw.flush32() + c.bw.addBits16NC(c.state, tableLog) + c.bw.flush() +} + +// compress is the main compression loop that will encode the input from the last byte to the first. +func (s *Scratch) compress(src []byte) error { + if len(src) <= 2 { + return errors.New("compress: src too small") + } + tt := s.ct.symbolTT[:256] + s.bw.reset(s.Out) + + // Our two states each encodes every second byte. + // Last byte encoded (first byte decoded) will always be encoded by c1. + var c1, c2 cState + + // Encode so remaining size is divisible by 4. + ip := len(src) + if ip&1 == 1 { + c1.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-1]]) + c2.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-2]]) + c1.encodeZero(tt[src[ip-3]]) + ip -= 3 + } else { + c2.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-1]]) + c1.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-2]]) + ip -= 2 + } + if ip&2 != 0 { + c2.encodeZero(tt[src[ip-1]]) + c1.encodeZero(tt[src[ip-2]]) + ip -= 2 + } + src = src[:ip] + + // Main compression loop. + switch { + case !s.zeroBits && s.actualTableLog <= 8: + // We can encode 4 symbols without requiring a flush. + // We do not need to check if any output is 0 bits. + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encode(tt[v0]) + c1.encode(tt[v1]) + c2.encode(tt[v2]) + c1.encode(tt[v3]) + } + case !s.zeroBits: + // We do not need to check if any output is 0 bits. + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encode(tt[v0]) + c1.encode(tt[v1]) + s.bw.flush32() + c2.encode(tt[v2]) + c1.encode(tt[v3]) + } + case s.actualTableLog <= 8: + // We can encode 4 symbols without requiring a flush + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encodeZero(tt[v0]) + c1.encodeZero(tt[v1]) + c2.encodeZero(tt[v2]) + c1.encodeZero(tt[v3]) + } + default: + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encodeZero(tt[v0]) + c1.encodeZero(tt[v1]) + s.bw.flush32() + c2.encodeZero(tt[v2]) + c1.encodeZero(tt[v3]) + } + } + + // Flush final state. + // Used to initialize state when decoding. + c2.flush(s.actualTableLog) + c1.flush(s.actualTableLog) + + s.bw.close() + return nil +} + +// writeCount will write the normalized histogram count to header. +// This is read back by readNCount. +func (s *Scratch) writeCount() error { + var ( + tableLog = s.actualTableLog + tableSize = 1 << tableLog + previous0 bool + charnum uint16 + + maxHeaderSize = ((int(s.symbolLen)*int(tableLog) + 4 + 2) >> 3) + 3 + + // Write Table Size + bitStream = uint32(tableLog - minTablelog) + bitCount = uint(4) + remaining = int16(tableSize + 1) /* +1 for extra accuracy */ + threshold = int16(tableSize) + nbBits = uint(tableLog + 1) + ) + if cap(s.Out) < maxHeaderSize { + s.Out = make([]byte, 0, s.br.remain()+maxHeaderSize) + } + outP := uint(0) + out := s.Out[:maxHeaderSize] + + // stops at 1 + for remaining > 1 { + if previous0 { + start := charnum + for s.norm[charnum] == 0 { + charnum++ + } + for charnum >= start+24 { + start += 24 + bitStream += uint32(0xFFFF) << bitCount + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + } + for charnum >= start+3 { + start += 3 + bitStream += 3 << bitCount + bitCount += 2 + } + bitStream += uint32(charnum-start) << bitCount + bitCount += 2 + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + count := s.norm[charnum] + charnum++ + max := (2*threshold - 1) - remaining + if count < 0 { + remaining += count + } else { + remaining -= count + } + count++ // +1 for extra accuracy + if count >= threshold { + count += max // [0..max[ [max..threshold[ (...) [threshold+max 2*threshold[ + } + bitStream += uint32(count) << bitCount + bitCount += nbBits + if count < max { + bitCount-- + } + + previous0 = count == 1 + if remaining < 1 { + return errors.New("internal error: remaining<1") + } + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += (bitCount + 7) / 8 + + if charnum > s.symbolLen { + return errors.New("internal error: charnum > s.symbolLen") + } + s.Out = out[:outP] + return nil +} + +// symbolTransform contains the state transform for a symbol. +type symbolTransform struct { + deltaFindState int32 + deltaNbBits uint32 +} + +// String prints values as a human readable string. +func (s symbolTransform) String() string { + return fmt.Sprintf("dnbits: %08x, fs:%d", s.deltaNbBits, s.deltaFindState) +} + +// cTable contains tables used for compression. +type cTable struct { + tableSymbol []byte + stateTable []uint16 + symbolTT []symbolTransform +} + +// allocCtable will allocate tables needed for compression. +// If existing tables a re big enough, they are simply re-used. +func (s *Scratch) allocCtable() { + tableSize := 1 << s.actualTableLog + // get tableSymbol that is big enough. + if cap(s.ct.tableSymbol) < tableSize { + s.ct.tableSymbol = make([]byte, tableSize) + } + s.ct.tableSymbol = s.ct.tableSymbol[:tableSize] + + ctSize := tableSize + if cap(s.ct.stateTable) < ctSize { + s.ct.stateTable = make([]uint16, ctSize) + } + s.ct.stateTable = s.ct.stateTable[:ctSize] + + if cap(s.ct.symbolTT) < 256 { + s.ct.symbolTT = make([]symbolTransform, 256) + } + s.ct.symbolTT = s.ct.symbolTT[:256] +} + +// buildCTable will populate the compression table so it is ready to be used. +func (s *Scratch) buildCTable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + var cumul [maxSymbolValue + 2]int16 + + s.allocCtable() + tableSymbol := s.ct.tableSymbol[:tableSize] + // symbol start positions + { + cumul[0] = 0 + for ui, v := range s.norm[:s.symbolLen-1] { + u := byte(ui) // one less than reference + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = u + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + } + // Encode last symbol separately to avoid overflowing u + u := int(s.symbolLen - 1) + v := s.norm[s.symbolLen-1] + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = byte(u) + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + if uint32(cumul[s.symbolLen]) != tableSize { + return fmt.Errorf("internal error: expected cumul[s.symbolLen] (%d) == tableSize (%d)", cumul[s.symbolLen], tableSize) + } + cumul[s.symbolLen] = int16(tableSize) + 1 + } + // Spread symbols + s.zeroBits = false + { + step := tableStep(tableSize) + tableMask := tableSize - 1 + var position uint32 + // if any symbol > largeLimit, we may have 0 bits output. + largeLimit := int16(1 << (s.actualTableLog - 1)) + for ui, v := range s.norm[:s.symbolLen] { + symbol := byte(ui) + if v > largeLimit { + s.zeroBits = true + } + for nbOccurrences := int16(0); nbOccurrences < v; nbOccurrences++ { + tableSymbol[position] = symbol + position = (position + step) & tableMask + for position > highThreshold { + position = (position + step) & tableMask + } /* Low proba area */ + } + } + + // Check if we have gone through all positions + if position != 0 { + return errors.New("position!=0") + } + } + + // Build table + table := s.ct.stateTable + { + tsi := int(tableSize) + for u, v := range tableSymbol { + // TableU16 : sorted by symbol order; gives next state value + table[cumul[v]] = uint16(tsi + u) + cumul[v]++ + } + } + + // Build Symbol Transformation Table + { + total := int16(0) + symbolTT := s.ct.symbolTT[:s.symbolLen] + tableLog := s.actualTableLog + tl := (uint32(tableLog) << 16) - (1 << tableLog) + for i, v := range s.norm[:s.symbolLen] { + switch v { + case 0: + case -1, 1: + symbolTT[i].deltaNbBits = tl + symbolTT[i].deltaFindState = int32(total - 1) + total++ + default: + maxBitsOut := uint32(tableLog) - highBits(uint32(v-1)) + minStatePlus := uint32(v) << maxBitsOut + symbolTT[i].deltaNbBits = (maxBitsOut << 16) - minStatePlus + symbolTT[i].deltaFindState = int32(total - v) + total += v + } + } + if total != int16(tableSize) { + return fmt.Errorf("total mismatch %d (got) != %d (want)", total, tableSize) + } + } + return nil +} + +// countSimple will create a simple histogram in s.count. +// Returns the biggest count. +// Does not update s.clearCount. +func (s *Scratch) countSimple(in []byte) (max int) { + for _, v := range in { + s.count[v]++ + } + m, symlen := uint32(0), s.symbolLen + for i, v := range s.count[:] { + if v == 0 { + continue + } + if v > m { + m = v + } + symlen = uint16(i) + 1 + } + s.symbolLen = symlen + return int(m) +} + +// minTableLog provides the minimum logSize to safely represent a distribution. +func (s *Scratch) minTableLog() uint8 { + minBitsSrc := highBits(uint32(s.br.remain()-1)) + 1 + minBitsSymbols := highBits(uint32(s.symbolLen-1)) + 2 + if minBitsSrc < minBitsSymbols { + return uint8(minBitsSrc) + } + return uint8(minBitsSymbols) +} + +// optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog +func (s *Scratch) optimalTableLog() { + tableLog := s.TableLog + minBits := s.minTableLog() + maxBitsSrc := uint8(highBits(uint32(s.br.remain()-1))) - 2 + if maxBitsSrc < tableLog { + // Accuracy can be reduced + tableLog = maxBitsSrc + } + if minBits > tableLog { + tableLog = minBits + } + // Need a minimum to safely represent all symbol values + if tableLog < minTablelog { + tableLog = minTablelog + } + if tableLog > maxTableLog { + tableLog = maxTableLog + } + s.actualTableLog = tableLog +} + +var rtbTable = [...]uint32{0, 473195, 504333, 520860, 550000, 700000, 750000, 830000} + +// normalizeCount will normalize the count of the symbols so +// the total is equal to the table size. +func (s *Scratch) normalizeCount() error { + var ( + tableLog = s.actualTableLog + scale = 62 - uint64(tableLog) + step = (1 << 62) / uint64(s.br.remain()) + vStep = uint64(1) << (scale - 20) + stillToDistribute = int16(1 << tableLog) + largest int + largestP int16 + lowThreshold = (uint32)(s.br.remain() >> tableLog) + ) + + for i, cnt := range s.count[:s.symbolLen] { + // already handled + // if (count[s] == s.length) return 0; /* rle special case */ + + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + stillToDistribute-- + } else { + proba := (int16)((uint64(cnt) * step) >> scale) + if proba < 8 { + restToBeat := vStep * uint64(rtbTable[proba]) + v := uint64(cnt)*step - (uint64(proba) << scale) + if v > restToBeat { + proba++ + } + } + if proba > largestP { + largestP = proba + largest = i + } + s.norm[i] = proba + stillToDistribute -= proba + } + } + + if -stillToDistribute >= (s.norm[largest] >> 1) { + // corner case, need another normalization method + return s.normalizeCount2() + } + s.norm[largest] += stillToDistribute + return nil +} + +// Secondary normalization method. +// To be used when primary method fails. +func (s *Scratch) normalizeCount2() error { + const notYetAssigned = -2 + var ( + distributed uint32 + total = uint32(s.br.remain()) + tableLog = s.actualTableLog + lowThreshold = total >> tableLog + lowOne = (total * 3) >> (tableLog + 1) + ) + for i, cnt := range s.count[:s.symbolLen] { + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + distributed++ + total -= cnt + continue + } + if cnt <= lowOne { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + s.norm[i] = notYetAssigned + } + toDistribute := (1 << tableLog) - distributed + + if (total / toDistribute) > lowOne { + // risk of rounding to zero + lowOne = (total * 3) / (toDistribute * 2) + for i, cnt := range s.count[:s.symbolLen] { + if (s.norm[i] == notYetAssigned) && (cnt <= lowOne) { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + } + toDistribute = (1 << tableLog) - distributed + } + if distributed == uint32(s.symbolLen)+1 { + // all values are pretty poor; + // probably incompressible data (should have already been detected); + // find max, then give all remaining points to max + var maxV int + var maxC uint32 + for i, cnt := range s.count[:s.symbolLen] { + if cnt > maxC { + maxV = i + maxC = cnt + } + } + s.norm[maxV] += int16(toDistribute) + return nil + } + + if total == 0 { + // all of the symbols were low enough for the lowOne or lowThreshold + for i := uint32(0); toDistribute > 0; i = (i + 1) % (uint32(s.symbolLen)) { + if s.norm[i] > 0 { + toDistribute-- + s.norm[i]++ + } + } + return nil + } + + var ( + vStepLog = 62 - uint64(tableLog) + mid = uint64((1 << (vStepLog - 1)) - 1) + rStep = (((1 << vStepLog) * uint64(toDistribute)) + mid) / uint64(total) // scale on remaining + tmpTotal = mid + ) + for i, cnt := range s.count[:s.symbolLen] { + if s.norm[i] == notYetAssigned { + var ( + end = tmpTotal + uint64(cnt)*rStep + sStart = uint32(tmpTotal >> vStepLog) + sEnd = uint32(end >> vStepLog) + weight = sEnd - sStart + ) + if weight < 1 { + return errors.New("weight < 1") + } + s.norm[i] = int16(weight) + tmpTotal = end + } + } + return nil +} + +// validateNorm validates the normalized histogram table. +func (s *Scratch) validateNorm() (err error) { + var total int + for _, v := range s.norm[:s.symbolLen] { + if v >= 0 { + total += int(v) + } else { + total -= int(v) + } + } + defer func() { + if err == nil { + return + } + fmt.Printf("selected TableLog: %d, Symbol length: %d\n", s.actualTableLog, s.symbolLen) + for i, v := range s.norm[:s.symbolLen] { + fmt.Printf("%3d: %5d -> %4d \n", i, s.count[i], v) + } + }() + if total != (1 << s.actualTableLog) { + return fmt.Errorf("warning: Total == %d != %d", total, 1< tablelogAbsoluteMax { + return errors.New("tableLog too large") + } + bitStream >>= 4 + bitCount := uint(4) + + s.actualTableLog = uint8(nbBits) + remaining := int32((1 << nbBits) + 1) + threshold := int32(1 << nbBits) + gotTotal := int32(0) + nbBits++ + + for remaining > 1 { + if previous0 { + n0 := charnum + for (bitStream & 0xFFFF) == 0xFFFF { + n0 += 24 + if b.off < iend-5 { + b.advance(2) + bitStream = b.Uint32() >> bitCount + } else { + bitStream >>= 16 + bitCount += 16 + } + } + for (bitStream & 3) == 3 { + n0 += 3 + bitStream >>= 2 + bitCount += 2 + } + n0 += uint16(bitStream & 3) + bitCount += 2 + if n0 > maxSymbolValue { + return errors.New("maxSymbolValue too small") + } + for charnum < n0 { + s.norm[charnum&0xff] = 0 + charnum++ + } + + if b.off <= iend-7 || b.off+int(bitCount>>3) <= iend-4 { + b.advance(bitCount >> 3) + bitCount &= 7 + bitStream = b.Uint32() >> bitCount + } else { + bitStream >>= 2 + } + } + + max := (2*(threshold) - 1) - (remaining) + var count int32 + + if (int32(bitStream) & (threshold - 1)) < max { + count = int32(bitStream) & (threshold - 1) + bitCount += nbBits - 1 + } else { + count = int32(bitStream) & (2*threshold - 1) + if count >= threshold { + count -= max + } + bitCount += nbBits + } + + count-- // extra accuracy + if count < 0 { + // -1 means +1 + remaining += count + gotTotal -= count + } else { + remaining -= count + gotTotal += count + } + s.norm[charnum&0xff] = int16(count) + charnum++ + previous0 = count == 0 + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + if b.off <= iend-7 || b.off+int(bitCount>>3) <= iend-4 { + b.advance(bitCount >> 3) + bitCount &= 7 + } else { + bitCount -= (uint)(8 * (len(b.b) - 4 - b.off)) + b.off = len(b.b) - 4 + } + bitStream = b.Uint32() >> (bitCount & 31) + } + s.symbolLen = charnum + + if s.symbolLen <= 1 { + return fmt.Errorf("symbolLen (%d) too small", s.symbolLen) + } + if s.symbolLen > maxSymbolValue+1 { + return fmt.Errorf("symbolLen (%d) too big", s.symbolLen) + } + if remaining != 1 { + return fmt.Errorf("corruption detected (remaining %d != 1)", remaining) + } + if bitCount > 32 { + return fmt.Errorf("corruption detected (bitCount %d > 32)", bitCount) + } + if gotTotal != 1<> 3) + return nil +} + +// decSymbol contains information about a state entry, +// Including the state offset base, the output symbol and +// the number of bits to read for the low part of the destination state. +type decSymbol struct { + newState uint16 + symbol uint8 + nbBits uint8 +} + +// allocDtable will allocate decoding tables if they are not big enough. +func (s *Scratch) allocDtable() { + tableSize := 1 << s.actualTableLog + if cap(s.decTable) < tableSize { + s.decTable = make([]decSymbol, tableSize) + } + s.decTable = s.decTable[:tableSize] + + if cap(s.ct.tableSymbol) < 256 { + s.ct.tableSymbol = make([]byte, 256) + } + s.ct.tableSymbol = s.ct.tableSymbol[:256] + + if cap(s.ct.stateTable) < 256 { + s.ct.stateTable = make([]uint16, 256) + } + s.ct.stateTable = s.ct.stateTable[:256] +} + +// buildDtable will build the decoding table. +func (s *Scratch) buildDtable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + s.allocDtable() + symbolNext := s.ct.stateTable[:256] + + // Init, lay down lowprob symbols + s.zeroBits = false + { + largeLimit := int16(1 << (s.actualTableLog - 1)) + for i, v := range s.norm[:s.symbolLen] { + if v == -1 { + s.decTable[highThreshold].symbol = uint8(i) + highThreshold-- + symbolNext[i] = 1 + } else { + if v >= largeLimit { + s.zeroBits = true + } + symbolNext[i] = uint16(v) + } + } + } + // Spread symbols + { + tableMask := tableSize - 1 + step := tableStep(tableSize) + position := uint32(0) + for ss, v := range s.norm[:s.symbolLen] { + for i := 0; i < int(v); i++ { + s.decTable[position].symbol = uint8(ss) + position = (position + step) & tableMask + for position > highThreshold { + // lowprob area + position = (position + step) & tableMask + } + } + } + if position != 0 { + // position must reach all cells once, otherwise normalizedCounter is incorrect + return errors.New("corrupted input (position != 0)") + } + } + + // Build Decoding table + { + tableSize := uint16(1 << s.actualTableLog) + for u, v := range s.decTable { + symbol := v.symbol + nextState := symbolNext[symbol] + symbolNext[symbol] = nextState + 1 + nBits := s.actualTableLog - byte(highBits(uint32(nextState))) + s.decTable[u].nbBits = nBits + newState := (nextState << nBits) - tableSize + if newState >= tableSize { + return fmt.Errorf("newState (%d) outside table size (%d)", newState, tableSize) + } + if newState == uint16(u) && nBits == 0 { + // Seems weird that this is possible with nbits > 0. + return fmt.Errorf("newState (%d) == oldState (%d) and no bits", newState, u) + } + s.decTable[u].newState = newState + } + } + return nil +} + +// decompress will decompress the bitstream. +// If the buffer is over-read an error is returned. +func (s *Scratch) decompress() error { + br := &s.bits + if err := br.init(s.br.unread()); err != nil { + return err + } + + var s1, s2 decoder + // Initialize and decode first state and symbol. + s1.init(br, s.decTable, s.actualTableLog) + s2.init(br, s.decTable, s.actualTableLog) + + // Use temp table to avoid bound checks/append penalty. + var tmp = s.ct.tableSymbol[:256] + var off uint8 + + // Main part + if !s.zeroBits { + for br.off >= 8 { + br.fillFast() + tmp[off+0] = s1.nextFast() + tmp[off+1] = s2.nextFast() + br.fillFast() + tmp[off+2] = s1.nextFast() + tmp[off+3] = s2.nextFast() + off += 4 + // When off is 0, we have overflowed and should write. + if off == 0 { + s.Out = append(s.Out, tmp...) + if len(s.Out) >= s.DecompressLimit { + return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) + } + } + } + } else { + for br.off >= 8 { + br.fillFast() + tmp[off+0] = s1.next() + tmp[off+1] = s2.next() + br.fillFast() + tmp[off+2] = s1.next() + tmp[off+3] = s2.next() + off += 4 + if off == 0 { + s.Out = append(s.Out, tmp...) + // When off is 0, we have overflowed and should write. + if len(s.Out) >= s.DecompressLimit { + return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) + } + } + } + } + s.Out = append(s.Out, tmp[:off]...) + + // Final bits, a bit more expensive check + for { + if s1.finished() { + s.Out = append(s.Out, s1.final(), s2.final()) + break + } + br.fill() + s.Out = append(s.Out, s1.next()) + if s2.finished() { + s.Out = append(s.Out, s2.final(), s1.final()) + break + } + s.Out = append(s.Out, s2.next()) + if len(s.Out) >= s.DecompressLimit { + return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) + } + } + return br.close() +} + +// decoder keeps track of the current state and updates it from the bitstream. +type decoder struct { + state uint16 + br *bitReader + dt []decSymbol +} + +// init will initialize the decoder and read the first state from the stream. +func (d *decoder) init(in *bitReader, dt []decSymbol, tableLog uint8) { + d.dt = dt + d.br = in + d.state = in.getBits(tableLog) +} + +// next returns the next symbol and sets the next state. +// At least tablelog bits must be available in the bit reader. +func (d *decoder) next() uint8 { + n := &d.dt[d.state] + lowBits := d.br.getBits(n.nbBits) + d.state = n.newState + lowBits + return n.symbol +} + +// finished returns true if all bits have been read from the bitstream +// and the next state would require reading bits from the input. +func (d *decoder) finished() bool { + return d.br.finished() && d.dt[d.state].nbBits > 0 +} + +// final returns the current state symbol without decoding the next. +func (d *decoder) final() uint8 { + return d.dt[d.state].symbol +} + +// nextFast returns the next symbol and sets the next state. +// This can only be used if no symbols are 0 bits. +// At least tablelog bits must be available in the bit reader. +func (d *decoder) nextFast() uint8 { + n := d.dt[d.state] + lowBits := d.br.getBitsFast(n.nbBits) + d.state = n.newState + lowBits + return n.symbol +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/fse.go b/examples/go/vendor/github.com/klauspost/compress/fse/fse.go new file mode 100644 index 0000000..535cbad --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/fse.go @@ -0,0 +1,144 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +// Package fse provides Finite State Entropy encoding and decoding. +// +// Finite State Entropy encoding provides a fast near-optimal symbol encoding/decoding +// for byte blocks as implemented in zstd. +// +// See https://github.com/klauspost/compress/tree/master/fse for more information. +package fse + +import ( + "errors" + "fmt" + "math/bits" +) + +const ( + /*!MEMORY_USAGE : + * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) + * Increasing memory usage improves compression ratio + * Reduced memory usage can improve speed, due to cache effect + * Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */ + maxMemoryUsage = 14 + defaultMemoryUsage = 13 + + maxTableLog = maxMemoryUsage - 2 + maxTablesize = 1 << maxTableLog + defaultTablelog = defaultMemoryUsage - 2 + minTablelog = 5 + maxSymbolValue = 255 +) + +var ( + // ErrIncompressible is returned when input is judged to be too hard to compress. + ErrIncompressible = errors.New("input is not compressible") + + // ErrUseRLE is returned from the compressor when the input is a single byte value repeated. + ErrUseRLE = errors.New("input is single value repeated") +) + +// Scratch provides temporary storage for compression and decompression. +type Scratch struct { + // Private + count [maxSymbolValue + 1]uint32 + norm [maxSymbolValue + 1]int16 + br byteReader + bits bitReader + bw bitWriter + ct cTable // Compression tables. + decTable []decSymbol // Decompression table. + maxCount int // count of the most probable symbol + + // Per block parameters. + // These can be used to override compression parameters of the block. + // Do not touch, unless you know what you are doing. + + // Out is output buffer. + // If the scratch is re-used before the caller is done processing the output, + // set this field to nil. + // Otherwise the output buffer will be re-used for next Compression/Decompression step + // and allocation will be avoided. + Out []byte + + // DecompressLimit limits the maximum decoded size acceptable. + // If > 0 decompression will stop when approximately this many bytes + // has been decoded. + // If 0, maximum size will be 2GB. + DecompressLimit int + + symbolLen uint16 // Length of active part of the symbol table. + actualTableLog uint8 // Selected tablelog. + zeroBits bool // no bits has prob > 50%. + clearCount bool // clear count + + // MaxSymbolValue will override the maximum symbol value of the next block. + MaxSymbolValue uint8 + + // TableLog will attempt to override the tablelog for the next block. + TableLog uint8 +} + +// Histogram allows to populate the histogram and skip that step in the compression, +// It otherwise allows to inspect the histogram when compression is done. +// To indicate that you have populated the histogram call HistogramFinished +// with the value of the highest populated symbol, as well as the number of entries +// in the most populated entry. These are accepted at face value. +// The returned slice will always be length 256. +func (s *Scratch) Histogram() []uint32 { + return s.count[:] +} + +// HistogramFinished can be called to indicate that the histogram has been populated. +// maxSymbol is the index of the highest set symbol of the next data segment. +// maxCount is the number of entries in the most populated entry. +// These are accepted at face value. +func (s *Scratch) HistogramFinished(maxSymbol uint8, maxCount int) { + s.maxCount = maxCount + s.symbolLen = uint16(maxSymbol) + 1 + s.clearCount = maxCount != 0 +} + +// prepare will prepare and allocate scratch tables used for both compression and decompression. +func (s *Scratch) prepare(in []byte) (*Scratch, error) { + if s == nil { + s = &Scratch{} + } + if s.MaxSymbolValue == 0 { + s.MaxSymbolValue = 255 + } + if s.TableLog == 0 { + s.TableLog = defaultTablelog + } + if s.TableLog > maxTableLog { + return nil, fmt.Errorf("tableLog (%d) > maxTableLog (%d)", s.TableLog, maxTableLog) + } + if cap(s.Out) == 0 { + s.Out = make([]byte, 0, len(in)) + } + if s.clearCount && s.maxCount == 0 { + for i := range s.count { + s.count[i] = 0 + } + s.clearCount = false + } + s.br.init(in) + if s.DecompressLimit == 0 { + // Max size 2GB. + s.DecompressLimit = (2 << 30) - 1 + } + + return s, nil +} + +// tableStep returns the next table index. +func tableStep(tableSize uint32) uint32 { + return (tableSize >> 1) + (tableSize >> 3) + 3 +} + +func highBits(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/gen.sh b/examples/go/vendor/github.com/klauspost/compress/gen.sh new file mode 100644 index 0000000..aff9422 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/gen.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd s2/cmd/_s2sx/ || exit 1 +go generate . diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore b/examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore new file mode 100644 index 0000000..b3d2629 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore @@ -0,0 +1 @@ +/huff0-fuzz.zip diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/README.md b/examples/go/vendor/github.com/klauspost/compress/huff0/README.md new file mode 100644 index 0000000..8b6e5c6 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/README.md @@ -0,0 +1,89 @@ +# Huff0 entropy compression + +This package provides Huff0 encoding and decoding as used in zstd. + +[Huff0](https://github.com/Cyan4973/FiniteStateEntropy#new-generation-entropy-coders), +a Huffman codec designed for modern CPU, featuring OoO (Out of Order) operations on multiple ALU +(Arithmetic Logic Unit), achieving extremely fast compression and decompression speeds. + +This can be used for compressing input with a lot of similar input values to the smallest number of bytes. +This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, +but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding. + +* [Godoc documentation](https://godoc.org/github.com/klauspost/compress/huff0) + +## News + +This is used as part of the [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression package. + +This ensures that most functionality is well tested. + +# Usage + +This package provides a low level interface that allows to compress single independent blocks. + +Each block is separate, and there is no built in integrity checks. +This means that the caller should keep track of block sizes and also do checksums if needed. + +Compressing a block is done via the [`Compress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress1X) and +[`Compress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress4X) functions. +You must provide input and will receive the output and maybe an error. + +These error values can be returned: + +| Error | Description | +|---------------------|-----------------------------------------------------------------------------| +| `` | Everything ok, output is returned | +| `ErrIncompressible` | Returned when input is judged to be too hard to compress | +| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | +| `ErrTooBig` | Returned if the input block exceeds the maximum allowed size (128 Kib) | +| `(error)` | An internal error occurred. | + + +As can be seen above some of there are errors that will be returned even under normal operation so it is important to handle these. + +To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object +that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same +object can be used for both. + +Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this +you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. + +The `Scratch` object will retain state that allows to re-use previous tables for encoding and decoding. + +## Tables and re-use + +Huff0 allows for reusing tables from the previous block to save space if that is expected to give better/faster results. + +The Scratch object allows you to set a [`ReusePolicy`](https://godoc.org/github.com/klauspost/compress/huff0#ReusePolicy) +that controls this behaviour. See the documentation for details. This can be altered between each block. + +Do however note that this information is *not* stored in the output block and it is up to the users of the package to +record whether [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable) should be called, +based on the boolean reported back from the CompressXX call. + +If you want to store the table separate from the data, you can access them as `OutData` and `OutTable` on the +[`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object. + +## Decompressing + +The first part of decoding is to initialize the decoding table through [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable). +This will initialize the decoding tables. +You can supply the complete block to `ReadTable` and it will return the data part of the block +which can be given to the decompressor. + +Decompressing is done by calling the [`Decompress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress1X) +or [`Decompress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress4X) function. + +For concurrently decompressing content with a fixed table a stateless [`Decoder`](https://godoc.org/github.com/klauspost/compress/huff0#Decoder) can be requested which will remain correct as long as the scratch is unchanged. The capacity of the provided slice indicates the expected output size. + +You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back +your input was likely corrupted. + +It is important to note that a successful decoding does *not* mean your output matches your original input. +There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. + +# Contributing + +Contributions are always welcome. Be aware that adding public functions will require good justification and breaking +changes will likely not be accepted. If in doubt open an issue before writing the PR. diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go b/examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go new file mode 100644 index 0000000..e36d974 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go @@ -0,0 +1,229 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package huff0 + +import ( + "encoding/binary" + "errors" + "fmt" + "io" +) + +// bitReader reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReaderBytes struct { + in []byte + off uint // next byte to read is at in[off - 1] + value uint64 + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReaderBytes) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + b.off = uint(len(in)) + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.advance(8 - uint8(highBit32(uint32(v)))) + return nil +} + +// peekBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReaderBytes) peekByteFast() uint8 { + got := uint8(b.value >> 56) + return got +} + +func (b *bitReaderBytes) advance(n uint8) { + b.bitsRead += n + b.value <<= n & 63 +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReaderBytes) fillFast() { + if b.bitsRead < 32 { + return + } + + // 2 bounds checks. + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << (b.bitsRead - 32) + b.bitsRead -= 32 + b.off -= 4 +} + +// fillFastStart() assumes the bitReaderBytes is empty and there is at least 8 bytes to read. +func (b *bitReaderBytes) fillFastStart() { + // Do single re-slice to avoid bounds checks. + b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) + b.bitsRead = 0 + b.off -= 8 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReaderBytes) fill() { + if b.bitsRead < 32 { + return + } + if b.off > 4 { + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << (b.bitsRead - 32) + b.bitsRead -= 32 + b.off -= 4 + return + } + for b.off > 0 { + b.value |= uint64(b.in[b.off-1]) << (b.bitsRead - 8) + b.bitsRead -= 8 + b.off-- + } +} + +// finished returns true if all bits have been read from the bit stream. +func (b *bitReaderBytes) finished() bool { + return b.off == 0 && b.bitsRead >= 64 +} + +func (b *bitReaderBytes) remaining() uint { + return b.off*8 + uint(64-b.bitsRead) +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReaderBytes) close() error { + // Release reference. + b.in = nil + if b.remaining() > 0 { + return fmt.Errorf("corrupt input: %d bits remain on stream", b.remaining()) + } + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} + +// bitReaderShifted reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReaderShifted struct { + in []byte + off uint // next byte to read is at in[off - 1] + value uint64 + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReaderShifted) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + b.off = uint(len(in)) + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.advance(8 - uint8(highBit32(uint32(v)))) + return nil +} + +// peekBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReaderShifted) peekBitsFast(n uint8) uint16 { + return uint16(b.value >> ((64 - n) & 63)) +} + +func (b *bitReaderShifted) advance(n uint8) { + b.bitsRead += n + b.value <<= n & 63 +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReaderShifted) fillFast() { + if b.bitsRead < 32 { + return + } + + // 2 bounds checks. + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << ((b.bitsRead - 32) & 63) + b.bitsRead -= 32 + b.off -= 4 +} + +// fillFastStart() assumes the bitReaderShifted is empty and there is at least 8 bytes to read. +func (b *bitReaderShifted) fillFastStart() { + // Do single re-slice to avoid bounds checks. + b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) + b.bitsRead = 0 + b.off -= 8 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReaderShifted) fill() { + if b.bitsRead < 32 { + return + } + if b.off > 4 { + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << ((b.bitsRead - 32) & 63) + b.bitsRead -= 32 + b.off -= 4 + return + } + for b.off > 0 { + b.value |= uint64(b.in[b.off-1]) << ((b.bitsRead - 8) & 63) + b.bitsRead -= 8 + b.off-- + } +} + +func (b *bitReaderShifted) remaining() uint { + return b.off*8 + uint(64-b.bitsRead) +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReaderShifted) close() error { + // Release reference. + b.in = nil + if b.remaining() > 0 { + return fmt.Errorf("corrupt input: %d bits remain on stream", b.remaining()) + } + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go b/examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go new file mode 100644 index 0000000..0ebc9aa --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go @@ -0,0 +1,102 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package huff0 + +// bitWriter will write bits. +// First bit will be LSB of the first byte of output. +type bitWriter struct { + bitContainer uint64 + nBits uint8 + out []byte +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// encSymbol will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) encSymbol(ct cTable, symbol byte) { + enc := ct[symbol] + b.bitContainer |= uint64(enc.val) << (b.nBits & 63) + if false { + if enc.nBits == 0 { + panic("nbits 0") + } + } + b.nBits += enc.nBits +} + +// encTwoSymbols will add up to 32 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) encTwoSymbols(ct cTable, av, bv byte) { + encA := ct[av] + encB := ct[bv] + sh := b.nBits & 63 + combined := uint64(encA.val) | (uint64(encB.val) << (encA.nBits & 63)) + b.bitContainer |= combined << sh + if false { + if encA.nBits == 0 { + panic("nbitsA 0") + } + if encB.nBits == 0 { + panic("nbitsB 0") + } + } + b.nBits += encA.nBits + encB.nBits +} + +// encFourSymbols adds up to 32 bits from four symbols. +// It will not check if there is space for them, +// so the caller must ensure that b has been flushed recently. +func (b *bitWriter) encFourSymbols(encA, encB, encC, encD cTableEntry) { + bitsA := encA.nBits + bitsB := bitsA + encB.nBits + bitsC := bitsB + encC.nBits + bitsD := bitsC + encD.nBits + combined := uint64(encA.val) | + (uint64(encB.val) << (bitsA & 63)) | + (uint64(encC.val) << (bitsB & 63)) | + (uint64(encD.val) << (bitsC & 63)) + b.bitContainer |= combined << (b.nBits & 63) + b.nBits += bitsD +} + +// flush32 will flush out, so there are at least 32 bits available for writing. +func (b *bitWriter) flush32() { + if b.nBits < 32 { + return + } + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24)) + b.nBits -= 32 + b.bitContainer >>= 32 +} + +// flushAlign will flush remaining full bytes and align to next byte boundary. +func (b *bitWriter) flushAlign() { + nbBytes := (b.nBits + 7) >> 3 + for i := uint8(0); i < nbBytes; i++ { + b.out = append(b.out, byte(b.bitContainer>>(i*8))) + } + b.nBits = 0 + b.bitContainer = 0 +} + +// close will write the alignment bit and write the final byte(s) +// to the output. +func (b *bitWriter) close() { + // End mark + b.addBits16Clean(1, 1) + // flush until next byte. + b.flushAlign() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/compress.go b/examples/go/vendor/github.com/klauspost/compress/huff0/compress.go new file mode 100644 index 0000000..84aa3d1 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/compress.go @@ -0,0 +1,742 @@ +package huff0 + +import ( + "fmt" + "math" + "runtime" + "sync" +) + +// Compress1X will compress the input. +// The output can be decoded using Decompress1X. +// Supply a Scratch object. The scratch object contains state about re-use, +// So when sharing across independent encodes, be sure to set the re-use policy. +func Compress1X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { + s, err = s.prepare(in) + if err != nil { + return nil, false, err + } + return compress(in, s, s.compress1X) +} + +// Compress4X will compress the input. The input is split into 4 independent blocks +// and compressed similar to Compress1X. +// The output can be decoded using Decompress4X. +// Supply a Scratch object. The scratch object contains state about re-use, +// So when sharing across independent encodes, be sure to set the re-use policy. +func Compress4X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { + s, err = s.prepare(in) + if err != nil { + return nil, false, err + } + if false { + // TODO: compress4Xp only slightly faster. + const parallelThreshold = 8 << 10 + if len(in) < parallelThreshold || runtime.GOMAXPROCS(0) == 1 { + return compress(in, s, s.compress4X) + } + return compress(in, s, s.compress4Xp) + } + return compress(in, s, s.compress4X) +} + +func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)) (out []byte, reUsed bool, err error) { + // Nuke previous table if we cannot reuse anyway. + if s.Reuse == ReusePolicyNone { + s.prevTable = s.prevTable[:0] + } + + // Create histogram, if none was provided. + maxCount := s.maxCount + var canReuse = false + if maxCount == 0 { + maxCount, canReuse = s.countSimple(in) + } else { + canReuse = s.canUseTable(s.prevTable) + } + + // We want the output size to be less than this: + wantSize := len(in) + if s.WantLogLess > 0 { + wantSize -= wantSize >> s.WantLogLess + } + + // Reset for next run. + s.clearCount = true + s.maxCount = 0 + if maxCount >= len(in) { + if maxCount > len(in) { + return nil, false, fmt.Errorf("maxCount (%d) > length (%d)", maxCount, len(in)) + } + if len(in) == 1 { + return nil, false, ErrIncompressible + } + // One symbol, use RLE + return nil, false, ErrUseRLE + } + if maxCount == 1 || maxCount < (len(in)>>7) { + // Each symbol present maximum once or too well distributed. + return nil, false, ErrIncompressible + } + if s.Reuse == ReusePolicyMust && !canReuse { + // We must reuse, but we can't. + return nil, false, ErrIncompressible + } + if (s.Reuse == ReusePolicyPrefer || s.Reuse == ReusePolicyMust) && canReuse { + keepTable := s.cTable + keepTL := s.actualTableLog + s.cTable = s.prevTable + s.actualTableLog = s.prevTableLog + s.Out, err = compressor(in) + s.cTable = keepTable + s.actualTableLog = keepTL + if err == nil && len(s.Out) < wantSize { + s.OutData = s.Out + return s.Out, true, nil + } + if s.Reuse == ReusePolicyMust { + return nil, false, ErrIncompressible + } + // Do not attempt to re-use later. + s.prevTable = s.prevTable[:0] + } + + // Calculate new table. + err = s.buildCTable() + if err != nil { + return nil, false, err + } + + if false && !s.canUseTable(s.cTable) { + panic("invalid table generated") + } + + if s.Reuse == ReusePolicyAllow && canReuse { + hSize := len(s.Out) + oldSize := s.prevTable.estimateSize(s.count[:s.symbolLen]) + newSize := s.cTable.estimateSize(s.count[:s.symbolLen]) + if oldSize <= hSize+newSize || hSize+12 >= wantSize { + // Retain cTable even if we re-use. + keepTable := s.cTable + keepTL := s.actualTableLog + + s.cTable = s.prevTable + s.actualTableLog = s.prevTableLog + s.Out, err = compressor(in) + + // Restore ctable. + s.cTable = keepTable + s.actualTableLog = keepTL + if err != nil { + return nil, false, err + } + if len(s.Out) >= wantSize { + return nil, false, ErrIncompressible + } + s.OutData = s.Out + return s.Out, true, nil + } + } + + // Use new table + err = s.cTable.write(s) + if err != nil { + s.OutTable = nil + return nil, false, err + } + s.OutTable = s.Out + + // Compress using new table + s.Out, err = compressor(in) + if err != nil { + s.OutTable = nil + return nil, false, err + } + if len(s.Out) >= wantSize { + s.OutTable = nil + return nil, false, ErrIncompressible + } + // Move current table into previous. + s.prevTable, s.prevTableLog, s.cTable = s.cTable, s.actualTableLog, s.prevTable[:0] + s.OutData = s.Out[len(s.OutTable):] + return s.Out, false, nil +} + +// EstimateSizes will estimate the data sizes +func EstimateSizes(in []byte, s *Scratch) (tableSz, dataSz, reuseSz int, err error) { + s, err = s.prepare(in) + if err != nil { + return 0, 0, 0, err + } + + // Create histogram, if none was provided. + tableSz, dataSz, reuseSz = -1, -1, -1 + maxCount := s.maxCount + var canReuse = false + if maxCount == 0 { + maxCount, canReuse = s.countSimple(in) + } else { + canReuse = s.canUseTable(s.prevTable) + } + + // We want the output size to be less than this: + wantSize := len(in) + if s.WantLogLess > 0 { + wantSize -= wantSize >> s.WantLogLess + } + + // Reset for next run. + s.clearCount = true + s.maxCount = 0 + if maxCount >= len(in) { + if maxCount > len(in) { + return 0, 0, 0, fmt.Errorf("maxCount (%d) > length (%d)", maxCount, len(in)) + } + if len(in) == 1 { + return 0, 0, 0, ErrIncompressible + } + // One symbol, use RLE + return 0, 0, 0, ErrUseRLE + } + if maxCount == 1 || maxCount < (len(in)>>7) { + // Each symbol present maximum once or too well distributed. + return 0, 0, 0, ErrIncompressible + } + + // Calculate new table. + err = s.buildCTable() + if err != nil { + return 0, 0, 0, err + } + + if false && !s.canUseTable(s.cTable) { + panic("invalid table generated") + } + + tableSz, err = s.cTable.estTableSize(s) + if err != nil { + return 0, 0, 0, err + } + if canReuse { + reuseSz = s.prevTable.estimateSize(s.count[:s.symbolLen]) + } + dataSz = s.cTable.estimateSize(s.count[:s.symbolLen]) + + // Restore + return tableSz, dataSz, reuseSz, nil +} + +func (s *Scratch) compress1X(src []byte) ([]byte, error) { + return s.compress1xDo(s.Out, src), nil +} + +func (s *Scratch) compress1xDo(dst, src []byte) []byte { + var bw = bitWriter{out: dst} + + // N is length divisible by 4. + n := len(src) + n -= n & 3 + cTable := s.cTable[:256] + + // Encode last bytes. + for i := len(src) & 3; i > 0; i-- { + bw.encSymbol(cTable, src[n+i-1]) + } + n -= 4 + if s.actualTableLog <= 8 { + for ; n >= 0; n -= 4 { + tmp := src[n : n+4] + // tmp should be len 4 + bw.flush32() + bw.encFourSymbols(cTable[tmp[3]], cTable[tmp[2]], cTable[tmp[1]], cTable[tmp[0]]) + } + } else { + for ; n >= 0; n -= 4 { + tmp := src[n : n+4] + // tmp should be len 4 + bw.flush32() + bw.encTwoSymbols(cTable, tmp[3], tmp[2]) + bw.flush32() + bw.encTwoSymbols(cTable, tmp[1], tmp[0]) + } + } + bw.close() + return bw.out +} + +var sixZeros [6]byte + +func (s *Scratch) compress4X(src []byte) ([]byte, error) { + if len(src) < 12 { + return nil, ErrIncompressible + } + segmentSize := (len(src) + 3) / 4 + + // Add placeholder for output length + offsetIdx := len(s.Out) + s.Out = append(s.Out, sixZeros[:]...) + + for i := 0; i < 4; i++ { + toDo := src + if len(toDo) > segmentSize { + toDo = toDo[:segmentSize] + } + src = src[len(toDo):] + + idx := len(s.Out) + s.Out = s.compress1xDo(s.Out, toDo) + if len(s.Out)-idx > math.MaxUint16 { + // We cannot store the size in the jump table + return nil, ErrIncompressible + } + // Write compressed length as little endian before block. + if i < 3 { + // Last length is not written. + length := len(s.Out) - idx + s.Out[i*2+offsetIdx] = byte(length) + s.Out[i*2+offsetIdx+1] = byte(length >> 8) + } + } + + return s.Out, nil +} + +// compress4Xp will compress 4 streams using separate goroutines. +func (s *Scratch) compress4Xp(src []byte) ([]byte, error) { + if len(src) < 12 { + return nil, ErrIncompressible + } + // Add placeholder for output length + s.Out = s.Out[:6] + + segmentSize := (len(src) + 3) / 4 + var wg sync.WaitGroup + wg.Add(4) + for i := 0; i < 4; i++ { + toDo := src + if len(toDo) > segmentSize { + toDo = toDo[:segmentSize] + } + src = src[len(toDo):] + + // Separate goroutine for each block. + go func(i int) { + s.tmpOut[i] = s.compress1xDo(s.tmpOut[i][:0], toDo) + wg.Done() + }(i) + } + wg.Wait() + for i := 0; i < 4; i++ { + o := s.tmpOut[i] + if len(o) > math.MaxUint16 { + // We cannot store the size in the jump table + return nil, ErrIncompressible + } + // Write compressed length as little endian before block. + if i < 3 { + // Last length is not written. + s.Out[i*2] = byte(len(o)) + s.Out[i*2+1] = byte(len(o) >> 8) + } + + // Write output. + s.Out = append(s.Out, o...) + } + return s.Out, nil +} + +// countSimple will create a simple histogram in s.count. +// Returns the biggest count. +// Does not update s.clearCount. +func (s *Scratch) countSimple(in []byte) (max int, reuse bool) { + reuse = true + _ = s.count // Assert that s != nil to speed up the following loop. + for _, v := range in { + s.count[v]++ + } + m := uint32(0) + if len(s.prevTable) > 0 { + for i, v := range s.count[:] { + if v == 0 { + continue + } + if v > m { + m = v + } + s.symbolLen = uint16(i) + 1 + if i >= len(s.prevTable) { + reuse = false + } else if s.prevTable[i].nBits == 0 { + reuse = false + } + } + return int(m), reuse + } + for i, v := range s.count[:] { + if v == 0 { + continue + } + if v > m { + m = v + } + s.symbolLen = uint16(i) + 1 + } + return int(m), false +} + +func (s *Scratch) canUseTable(c cTable) bool { + if len(c) < int(s.symbolLen) { + return false + } + for i, v := range s.count[:s.symbolLen] { + if v != 0 && c[i].nBits == 0 { + return false + } + } + return true +} + +//lint:ignore U1000 used for debugging +func (s *Scratch) validateTable(c cTable) bool { + if len(c) < int(s.symbolLen) { + return false + } + for i, v := range s.count[:s.symbolLen] { + if v != 0 { + if c[i].nBits == 0 { + return false + } + if c[i].nBits > s.actualTableLog { + return false + } + } + } + return true +} + +// minTableLog provides the minimum logSize to safely represent a distribution. +func (s *Scratch) minTableLog() uint8 { + minBitsSrc := highBit32(uint32(s.srcLen)) + 1 + minBitsSymbols := highBit32(uint32(s.symbolLen-1)) + 2 + if minBitsSrc < minBitsSymbols { + return uint8(minBitsSrc) + } + return uint8(minBitsSymbols) +} + +// optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog +func (s *Scratch) optimalTableLog() { + tableLog := s.TableLog + minBits := s.minTableLog() + maxBitsSrc := uint8(highBit32(uint32(s.srcLen-1))) - 1 + if maxBitsSrc < tableLog { + // Accuracy can be reduced + tableLog = maxBitsSrc + } + if minBits > tableLog { + tableLog = minBits + } + // Need a minimum to safely represent all symbol values + if tableLog < minTablelog { + tableLog = minTablelog + } + if tableLog > tableLogMax { + tableLog = tableLogMax + } + s.actualTableLog = tableLog +} + +type cTableEntry struct { + val uint16 + nBits uint8 + // We have 8 bits extra +} + +const huffNodesMask = huffNodesLen - 1 + +func (s *Scratch) buildCTable() error { + s.optimalTableLog() + s.huffSort() + if cap(s.cTable) < maxSymbolValue+1 { + s.cTable = make([]cTableEntry, s.symbolLen, maxSymbolValue+1) + } else { + s.cTable = s.cTable[:s.symbolLen] + for i := range s.cTable { + s.cTable[i] = cTableEntry{} + } + } + + var startNode = int16(s.symbolLen) + nonNullRank := s.symbolLen - 1 + + nodeNb := startNode + huffNode := s.nodes[1 : huffNodesLen+1] + + // This overlays the slice above, but allows "-1" index lookups. + // Different from reference implementation. + huffNode0 := s.nodes[0 : huffNodesLen+1] + + for huffNode[nonNullRank].count() == 0 { + nonNullRank-- + } + + lowS := int16(nonNullRank) + nodeRoot := nodeNb + lowS - 1 + lowN := nodeNb + huffNode[nodeNb].setCount(huffNode[lowS].count() + huffNode[lowS-1].count()) + huffNode[lowS].setParent(nodeNb) + huffNode[lowS-1].setParent(nodeNb) + nodeNb++ + lowS -= 2 + for n := nodeNb; n <= nodeRoot; n++ { + huffNode[n].setCount(1 << 30) + } + // fake entry, strong barrier + huffNode0[0].setCount(1 << 31) + + // create parents + for nodeNb <= nodeRoot { + var n1, n2 int16 + if huffNode0[lowS+1].count() < huffNode0[lowN+1].count() { + n1 = lowS + lowS-- + } else { + n1 = lowN + lowN++ + } + if huffNode0[lowS+1].count() < huffNode0[lowN+1].count() { + n2 = lowS + lowS-- + } else { + n2 = lowN + lowN++ + } + + huffNode[nodeNb].setCount(huffNode0[n1+1].count() + huffNode0[n2+1].count()) + huffNode0[n1+1].setParent(nodeNb) + huffNode0[n2+1].setParent(nodeNb) + nodeNb++ + } + + // distribute weights (unlimited tree height) + huffNode[nodeRoot].setNbBits(0) + for n := nodeRoot - 1; n >= startNode; n-- { + huffNode[n].setNbBits(huffNode[huffNode[n].parent()].nbBits() + 1) + } + for n := uint16(0); n <= nonNullRank; n++ { + huffNode[n].setNbBits(huffNode[huffNode[n].parent()].nbBits() + 1) + } + s.actualTableLog = s.setMaxHeight(int(nonNullRank)) + maxNbBits := s.actualTableLog + + // fill result into tree (val, nbBits) + if maxNbBits > tableLogMax { + return fmt.Errorf("internal error: maxNbBits (%d) > tableLogMax (%d)", maxNbBits, tableLogMax) + } + var nbPerRank [tableLogMax + 1]uint16 + var valPerRank [16]uint16 + for _, v := range huffNode[:nonNullRank+1] { + nbPerRank[v.nbBits()]++ + } + // determine stating value per rank + { + min := uint16(0) + for n := maxNbBits; n > 0; n-- { + // get starting value within each rank + valPerRank[n] = min + min += nbPerRank[n] + min >>= 1 + } + } + + // push nbBits per symbol, symbol order + for _, v := range huffNode[:nonNullRank+1] { + s.cTable[v.symbol()].nBits = v.nbBits() + } + + // assign value within rank, symbol order + t := s.cTable[:s.symbolLen] + for n, val := range t { + nbits := val.nBits & 15 + v := valPerRank[nbits] + t[n].val = v + valPerRank[nbits] = v + 1 + } + + return nil +} + +// huffSort will sort symbols, decreasing order. +func (s *Scratch) huffSort() { + type rankPos struct { + base uint32 + current uint32 + } + + // Clear nodes + nodes := s.nodes[:huffNodesLen+1] + s.nodes = nodes + nodes = nodes[1 : huffNodesLen+1] + + // Sort into buckets based on length of symbol count. + var rank [32]rankPos + for _, v := range s.count[:s.symbolLen] { + r := highBit32(v+1) & 31 + rank[r].base++ + } + // maxBitLength is log2(BlockSizeMax) + 1 + const maxBitLength = 18 + 1 + for n := maxBitLength; n > 0; n-- { + rank[n-1].base += rank[n].base + } + for n := range rank[:maxBitLength] { + rank[n].current = rank[n].base + } + for n, c := range s.count[:s.symbolLen] { + r := (highBit32(c+1) + 1) & 31 + pos := rank[r].current + rank[r].current++ + prev := nodes[(pos-1)&huffNodesMask] + for pos > rank[r].base && c > prev.count() { + nodes[pos&huffNodesMask] = prev + pos-- + prev = nodes[(pos-1)&huffNodesMask] + } + nodes[pos&huffNodesMask] = makeNodeElt(c, byte(n)) + } +} + +func (s *Scratch) setMaxHeight(lastNonNull int) uint8 { + maxNbBits := s.actualTableLog + huffNode := s.nodes[1 : huffNodesLen+1] + //huffNode = huffNode[: huffNodesLen] + + largestBits := huffNode[lastNonNull].nbBits() + + // early exit : no elt > maxNbBits + if largestBits <= maxNbBits { + return largestBits + } + totalCost := int(0) + baseCost := int(1) << (largestBits - maxNbBits) + n := uint32(lastNonNull) + + for huffNode[n].nbBits() > maxNbBits { + totalCost += baseCost - (1 << (largestBits - huffNode[n].nbBits())) + huffNode[n].setNbBits(maxNbBits) + n-- + } + // n stops at huffNode[n].nbBits <= maxNbBits + + for huffNode[n].nbBits() == maxNbBits { + n-- + } + // n end at index of smallest symbol using < maxNbBits + + // renorm totalCost + totalCost >>= largestBits - maxNbBits /* note : totalCost is necessarily a multiple of baseCost */ + + // repay normalized cost + { + const noSymbol = 0xF0F0F0F0 + var rankLast [tableLogMax + 2]uint32 + + for i := range rankLast[:] { + rankLast[i] = noSymbol + } + + // Get pos of last (smallest) symbol per rank + { + currentNbBits := maxNbBits + for pos := int(n); pos >= 0; pos-- { + if huffNode[pos].nbBits() >= currentNbBits { + continue + } + currentNbBits = huffNode[pos].nbBits() // < maxNbBits + rankLast[maxNbBits-currentNbBits] = uint32(pos) + } + } + + for totalCost > 0 { + nBitsToDecrease := uint8(highBit32(uint32(totalCost))) + 1 + + for ; nBitsToDecrease > 1; nBitsToDecrease-- { + highPos := rankLast[nBitsToDecrease] + lowPos := rankLast[nBitsToDecrease-1] + if highPos == noSymbol { + continue + } + if lowPos == noSymbol { + break + } + highTotal := huffNode[highPos].count() + lowTotal := 2 * huffNode[lowPos].count() + if highTotal <= lowTotal { + break + } + } + // only triggered when no more rank 1 symbol left => find closest one (note : there is necessarily at least one !) + // HUF_MAX_TABLELOG test just to please gcc 5+; but it should not be necessary + // FIXME: try to remove + for (nBitsToDecrease <= tableLogMax) && (rankLast[nBitsToDecrease] == noSymbol) { + nBitsToDecrease++ + } + totalCost -= 1 << (nBitsToDecrease - 1) + if rankLast[nBitsToDecrease-1] == noSymbol { + // this rank is no longer empty + rankLast[nBitsToDecrease-1] = rankLast[nBitsToDecrease] + } + huffNode[rankLast[nBitsToDecrease]].setNbBits(1 + + huffNode[rankLast[nBitsToDecrease]].nbBits()) + if rankLast[nBitsToDecrease] == 0 { + /* special case, reached largest symbol */ + rankLast[nBitsToDecrease] = noSymbol + } else { + rankLast[nBitsToDecrease]-- + if huffNode[rankLast[nBitsToDecrease]].nbBits() != maxNbBits-nBitsToDecrease { + rankLast[nBitsToDecrease] = noSymbol /* this rank is now empty */ + } + } + } + + for totalCost < 0 { /* Sometimes, cost correction overshoot */ + if rankLast[1] == noSymbol { /* special case : no rank 1 symbol (using maxNbBits-1); let's create one from largest rank 0 (using maxNbBits) */ + for huffNode[n].nbBits() == maxNbBits { + n-- + } + huffNode[n+1].setNbBits(huffNode[n+1].nbBits() - 1) + rankLast[1] = n + 1 + totalCost++ + continue + } + huffNode[rankLast[1]+1].setNbBits(huffNode[rankLast[1]+1].nbBits() - 1) + rankLast[1]++ + totalCost++ + } + } + return maxNbBits +} + +// A nodeElt is the fields +// +// count uint32 +// parent uint16 +// symbol byte +// nbBits uint8 +// +// in some order, all squashed into an integer so that the compiler +// always loads and stores entire nodeElts instead of separate fields. +type nodeElt uint64 + +func makeNodeElt(count uint32, symbol byte) nodeElt { + return nodeElt(count) | nodeElt(symbol)<<48 +} + +func (e *nodeElt) count() uint32 { return uint32(*e) } +func (e *nodeElt) parent() uint16 { return uint16(*e >> 32) } +func (e *nodeElt) symbol() byte { return byte(*e >> 48) } +func (e *nodeElt) nbBits() uint8 { return uint8(*e >> 56) } + +func (e *nodeElt) setCount(c uint32) { *e = (*e)&0xffffffff00000000 | nodeElt(c) } +func (e *nodeElt) setParent(p int16) { *e = (*e)&0xffff0000ffffffff | nodeElt(uint16(p))<<32 } +func (e *nodeElt) setNbBits(n uint8) { *e = (*e)&0x00ffffffffffffff | nodeElt(n)<<56 } diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go new file mode 100644 index 0000000..54bd08b --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go @@ -0,0 +1,1167 @@ +package huff0 + +import ( + "errors" + "fmt" + "io" + "sync" + + "github.com/klauspost/compress/fse" +) + +type dTable struct { + single []dEntrySingle +} + +// single-symbols decoding +type dEntrySingle struct { + entry uint16 +} + +// Uses special code for all tables that are < 8 bits. +const use8BitTables = true + +// ReadTable will read a table from the input. +// The size of the input may be larger than the table definition. +// Any content remaining after the table definition will be returned. +// If no Scratch is provided a new one is allocated. +// The returned Scratch can be used for encoding or decoding input using this table. +func ReadTable(in []byte, s *Scratch) (s2 *Scratch, remain []byte, err error) { + s, err = s.prepare(nil) + if err != nil { + return s, nil, err + } + if len(in) <= 1 { + return s, nil, errors.New("input too small for table") + } + iSize := in[0] + in = in[1:] + if iSize >= 128 { + // Uncompressed + oSize := iSize - 127 + iSize = (oSize + 1) / 2 + if int(iSize) > len(in) { + return s, nil, errors.New("input too small for table") + } + for n := uint8(0); n < oSize; n += 2 { + v := in[n/2] + s.huffWeight[n] = v >> 4 + s.huffWeight[n+1] = v & 15 + } + s.symbolLen = uint16(oSize) + in = in[iSize:] + } else { + if len(in) < int(iSize) { + return s, nil, fmt.Errorf("input too small for table, want %d bytes, have %d", iSize, len(in)) + } + // FSE compressed weights + s.fse.DecompressLimit = 255 + hw := s.huffWeight[:] + s.fse.Out = hw + b, err := fse.Decompress(in[:iSize], s.fse) + s.fse.Out = nil + if err != nil { + return s, nil, fmt.Errorf("fse decompress returned: %w", err) + } + if len(b) > 255 { + return s, nil, errors.New("corrupt input: output table too large") + } + s.symbolLen = uint16(len(b)) + in = in[iSize:] + } + + // collect weight stats + var rankStats [16]uint32 + weightTotal := uint32(0) + for _, v := range s.huffWeight[:s.symbolLen] { + if v > tableLogMax { + return s, nil, errors.New("corrupt input: weight too large") + } + v2 := v & 15 + rankStats[v2]++ + // (1 << (v2-1)) is slower since the compiler cannot prove that v2 isn't 0. + weightTotal += (1 << v2) >> 1 + } + if weightTotal == 0 { + return s, nil, errors.New("corrupt input: weights zero") + } + + // get last non-null symbol weight (implied, total must be 2^n) + { + tableLog := highBit32(weightTotal) + 1 + if tableLog > tableLogMax { + return s, nil, errors.New("corrupt input: tableLog too big") + } + s.actualTableLog = uint8(tableLog) + // determine last weight + { + total := uint32(1) << tableLog + rest := total - weightTotal + verif := uint32(1) << highBit32(rest) + lastWeight := highBit32(rest) + 1 + if verif != rest { + // last value must be a clean power of 2 + return s, nil, errors.New("corrupt input: last value not power of two") + } + s.huffWeight[s.symbolLen] = uint8(lastWeight) + s.symbolLen++ + rankStats[lastWeight]++ + } + } + + if (rankStats[1] < 2) || (rankStats[1]&1 != 0) { + // by construction : at least 2 elts of rank 1, must be even + return s, nil, errors.New("corrupt input: min elt size, even check failed ") + } + + // TODO: Choose between single/double symbol decoding + + // Calculate starting value for each rank + { + var nextRankStart uint32 + for n := uint8(1); n < s.actualTableLog+1; n++ { + current := nextRankStart + nextRankStart += rankStats[n] << (n - 1) + rankStats[n] = current + } + } + + // fill DTable (always full size) + tSize := 1 << tableLogMax + if len(s.dt.single) != tSize { + s.dt.single = make([]dEntrySingle, tSize) + } + cTable := s.prevTable + if cap(cTable) < maxSymbolValue+1 { + cTable = make([]cTableEntry, 0, maxSymbolValue+1) + } + cTable = cTable[:maxSymbolValue+1] + s.prevTable = cTable[:s.symbolLen] + s.prevTableLog = s.actualTableLog + + for n, w := range s.huffWeight[:s.symbolLen] { + if w == 0 { + cTable[n] = cTableEntry{ + val: 0, + nBits: 0, + } + continue + } + length := (uint32(1) << w) >> 1 + d := dEntrySingle{ + entry: uint16(s.actualTableLog+1-w) | (uint16(n) << 8), + } + + rank := &rankStats[w] + cTable[n] = cTableEntry{ + val: uint16(*rank >> (w - 1)), + nBits: uint8(d.entry), + } + + single := s.dt.single[*rank : *rank+length] + for i := range single { + single[i] = d + } + *rank += length + } + + return s, in, nil +} + +// Decompress1X will decompress a 1X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// Before this is called, the table must be initialized with ReadTable unless +// the encoder re-used the table. +// deprecated: Use the stateless Decoder() to get a concurrent version. +func (s *Scratch) Decompress1X(in []byte) (out []byte, err error) { + if cap(s.Out) < s.MaxDecodedSize { + s.Out = make([]byte, s.MaxDecodedSize) + } + s.Out = s.Out[:0:s.MaxDecodedSize] + s.Out, err = s.Decoder().Decompress1X(s.Out, in) + return s.Out, err +} + +// Decompress4X will decompress a 4X encoded stream. +// Before this is called, the table must be initialized with ReadTable unless +// the encoder re-used the table. +// The length of the supplied input must match the end of a block exactly. +// The destination size of the uncompressed data must be known and provided. +// deprecated: Use the stateless Decoder() to get a concurrent version. +func (s *Scratch) Decompress4X(in []byte, dstSize int) (out []byte, err error) { + if dstSize > s.MaxDecodedSize { + return nil, ErrMaxDecodedSizeExceeded + } + if cap(s.Out) < dstSize { + s.Out = make([]byte, s.MaxDecodedSize) + } + s.Out = s.Out[:0:dstSize] + s.Out, err = s.Decoder().Decompress4X(s.Out, in) + return s.Out, err +} + +// Decoder will return a stateless decoder that can be used by multiple +// decompressors concurrently. +// Before this is called, the table must be initialized with ReadTable. +// The Decoder is still linked to the scratch buffer so that cannot be reused. +// However, it is safe to discard the scratch. +func (s *Scratch) Decoder() *Decoder { + return &Decoder{ + dt: s.dt, + actualTableLog: s.actualTableLog, + bufs: &s.decPool, + } +} + +// Decoder provides stateless decoding. +type Decoder struct { + dt dTable + actualTableLog uint8 + bufs *sync.Pool +} + +func (d *Decoder) buffer() *[4][256]byte { + buf, ok := d.bufs.Get().(*[4][256]byte) + if ok { + return buf + } + return &[4][256]byte{} +} + +// decompress1X8Bit will decompress a 1X encoded stream with tablelog <= 8. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) decompress1X8Bit(dst, src []byte) ([]byte, error) { + if d.actualTableLog == 8 { + return d.decompress1X8BitExactly(dst, src) + } + var br bitReaderBytes + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:0] + + // Avoid bounds check by always having full sized table. + dt := d.dt.single[:256] + + // Use temp table to avoid bound checks/append penalty. + bufs := d.buffer() + buf := &bufs[0] + var off uint8 + + switch d.actualTableLog { + case 8: + const shift = 0 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 7: + const shift = 8 - 7 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 6: + const shift = 8 - 6 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 5: + const shift = 8 - 5 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 4: + const shift = 8 - 4 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 3: + const shift = 8 - 3 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 2: + const shift = 8 - 2 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 1: + const shift = 8 - 1 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + default: + d.bufs.Put(bufs) + return nil, fmt.Errorf("invalid tablelog: %d", d.actualTableLog) + } + + if len(dst)+int(off) > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:off]...) + + // br < 4, so uint8 is fine + bitsLeft := int8(uint8(br.off)*8 + (64 - br.bitsRead)) + shift := (8 - d.actualTableLog) & 7 + + for bitsLeft > 0 { + if br.bitsRead >= 64-8 { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + if len(dst) >= maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + v := dt[br.peekByteFast()>>shift] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= int8(nBits) + dst = append(dst, uint8(v.entry>>8)) + } + d.bufs.Put(bufs) + return dst, br.close() +} + +// decompress1X8Bit will decompress a 1X encoded stream with tablelog <= 8. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) decompress1X8BitExactly(dst, src []byte) ([]byte, error) { + var br bitReaderBytes + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:0] + + // Avoid bounds check by always having full sized table. + dt := d.dt.single[:256] + + // Use temp table to avoid bound checks/append penalty. + bufs := d.buffer() + buf := &bufs[0] + var off uint8 + + const shift = 56 + + //fmt.Printf("mask: %b, tl:%d\n", mask, d.actualTableLog) + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + + if len(dst)+int(off) > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:off]...) + + // br < 4, so uint8 is fine + bitsLeft := int8(uint8(br.off)*8 + (64 - br.bitsRead)) + for bitsLeft > 0 { + if br.bitsRead >= 64-8 { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + if len(dst) >= maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + v := dt[br.peekByteFast()] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= int8(nBits) + dst = append(dst, uint8(v.entry>>8)) + } + d.bufs.Put(bufs) + return dst, br.close() +} + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) decompress4X8bit(dst, src []byte) ([]byte, error) { + if d.actualTableLog == 8 { + return d.decompress4X8bitExactly(dst, src) + } + + var br [4]bitReaderBytes + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + shift := (56 + (8 - d.actualTableLog)) & 63 + + const tlSize = 1 << 8 + single := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + buf := d.buffer() + var off uint8 + var decoded int + + // Decode 4 values from each decoder/loop. + const bufoff = 256 + for { + if br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4 { + break + } + + { + // Interleave 2 decodes. + const stream = 0 + const stream2 = 1 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + { + const stream = 2 + const stream2 = 3 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + off += 4 + + if off == 0 { + if bufoff > dstEvery { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 1") + } + // There must at least be 3 buffers left. + if len(out)-bufoff < dstEvery*3 { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 2") + } + //copy(out, buf[0][:]) + //copy(out[dstEvery:], buf[1][:]) + //copy(out[dstEvery*2:], buf[2][:]) + *(*[bufoff]byte)(out) = buf[0] + *(*[bufoff]byte)(out[dstEvery:]) = buf[1] + *(*[bufoff]byte)(out[dstEvery*2:]) = buf[2] + *(*[bufoff]byte)(out[dstEvery*3:]) = buf[3] + out = out[bufoff:] + decoded += bufoff * 4 + } + } + if off > 0 { + ioff := int(off) + if len(out) < dstEvery*3+ioff { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 3") + } + copy(out, buf[0][:off]) + copy(out[dstEvery:], buf[1][:off]) + copy(out[dstEvery*2:], buf[2][:off]) + copy(out[dstEvery*3:], buf[3][:off]) + decoded += int(off) * 4 + out = out[off:] + } + + // Decode remaining. + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + if br.finished() { + d.bufs.Put(buf) + return nil, io.ErrUnexpectedEOF + } + if br.bitsRead >= 56 { + if br.off >= 4 { + v := br.in[br.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + br.value |= uint64(low) << (br.bitsRead - 32) + br.bitsRead -= 32 + br.off -= 4 + } else { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + } + // end inline... + if offset >= endsAt { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + v := single[uint8(br.value>>shift)].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + d.bufs.Put(buf) + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + d.bufs.Put(buf) + return nil, err + } + } + d.bufs.Put(buf) + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) decompress4X8bitExactly(dst, src []byte) ([]byte, error) { + var br [4]bitReaderBytes + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + const shift = 56 + const tlSize = 1 << 8 + single := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + buf := d.buffer() + var off uint8 + var decoded int + + // Decode 4 values from each decoder/loop. + const bufoff = 256 + for { + if br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4 { + break + } + + { + // Interleave 2 decodes. + const stream = 0 + const stream2 = 1 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + { + const stream = 2 + const stream2 = 3 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + off += 4 + + if off == 0 { + if bufoff > dstEvery { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 1") + } + // There must at least be 3 buffers left. + if len(out)-bufoff < dstEvery*3 { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 2") + } + + //copy(out, buf[0][:]) + //copy(out[dstEvery:], buf[1][:]) + //copy(out[dstEvery*2:], buf[2][:]) + // copy(out[dstEvery*3:], buf[3][:]) + *(*[bufoff]byte)(out) = buf[0] + *(*[bufoff]byte)(out[dstEvery:]) = buf[1] + *(*[bufoff]byte)(out[dstEvery*2:]) = buf[2] + *(*[bufoff]byte)(out[dstEvery*3:]) = buf[3] + out = out[bufoff:] + decoded += bufoff * 4 + } + } + if off > 0 { + ioff := int(off) + if len(out) < dstEvery*3+ioff { + return nil, errors.New("corruption detected: stream overrun 3") + } + copy(out, buf[0][:off]) + copy(out[dstEvery:], buf[1][:off]) + copy(out[dstEvery*2:], buf[2][:off]) + copy(out[dstEvery*3:], buf[3][:off]) + decoded += int(off) * 4 + out = out[off:] + } + + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + if br.finished() { + d.bufs.Put(buf) + return nil, io.ErrUnexpectedEOF + } + if br.bitsRead >= 56 { + if br.off >= 4 { + v := br.in[br.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + br.value |= uint64(low) << (br.bitsRead - 32) + br.bitsRead -= 32 + br.off -= 4 + } else { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + } + // end inline... + if offset >= endsAt { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + v := single[br.peekByteFast()].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + d.bufs.Put(buf) + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + d.bufs.Put(buf) + return nil, err + } + } + d.bufs.Put(buf) + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// matches will compare a decoding table to a coding table. +// Errors are written to the writer. +// Nothing will be written if table is ok. +func (s *Scratch) matches(ct cTable, w io.Writer) { + if s == nil || len(s.dt.single) == 0 { + return + } + dt := s.dt.single[:1<>8) == byte(sym) { + fmt.Fprintf(w, "symbol %x has decoder, but no encoder\n", sym) + errs++ + break + } + } + if errs == 0 { + broken-- + } + continue + } + // Unused bits in input + ub := tablelog - enc.nBits + top := enc.val << ub + // decoder looks at top bits. + dec := dt[top] + if uint8(dec.entry) != enc.nBits { + fmt.Fprintf(w, "symbol 0x%x bit size mismatch (enc: %d, dec:%d).\n", sym, enc.nBits, uint8(dec.entry)) + errs++ + } + if uint8(dec.entry>>8) != uint8(sym) { + fmt.Fprintf(w, "symbol 0x%x decoder output mismatch (enc: %d, dec:%d).\n", sym, sym, uint8(dec.entry>>8)) + errs++ + } + if errs > 0 { + fmt.Fprintf(w, "%d errros in base, stopping\n", errs) + continue + } + // Ensure that all combinations are covered. + for i := uint16(0); i < (1 << ub); i++ { + vval := top | i + dec := dt[vval] + if uint8(dec.entry) != enc.nBits { + fmt.Fprintf(w, "symbol 0x%x bit size mismatch (enc: %d, dec:%d).\n", vval, enc.nBits, uint8(dec.entry)) + errs++ + } + if uint8(dec.entry>>8) != uint8(sym) { + fmt.Fprintf(w, "symbol 0x%x decoder output mismatch (enc: %d, dec:%d).\n", vval, sym, uint8(dec.entry>>8)) + errs++ + } + if errs > 20 { + fmt.Fprintf(w, "%d errros, stopping\n", errs) + break + } + } + if errs == 0 { + ok++ + broken-- + } + } + if broken > 0 { + fmt.Fprintf(w, "%d broken, %d ok\n", broken, ok) + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go new file mode 100644 index 0000000..ba7e8e6 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go @@ -0,0 +1,226 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +// This file contains the specialisation of Decoder.Decompress4X +// and Decoder.Decompress1X that use an asm implementation of thir main loops. +package huff0 + +import ( + "errors" + "fmt" + + "github.com/klauspost/compress/internal/cpuinfo" +) + +// decompress4x_main_loop_x86 is an x86 assembler implementation +// of Decompress4X when tablelog > 8. +// +//go:noescape +func decompress4x_main_loop_amd64(ctx *decompress4xContext) + +// decompress4x_8b_loop_x86 is an x86 assembler implementation +// of Decompress4X when tablelog <= 8 which decodes 4 entries +// per loop. +// +//go:noescape +func decompress4x_8b_main_loop_amd64(ctx *decompress4xContext) + +// fallback8BitSize is the size where using Go version is faster. +const fallback8BitSize = 800 + +type decompress4xContext struct { + pbr *[4]bitReaderShifted + peekBits uint8 + out *byte + dstEvery int + tbl *dEntrySingle + decoded int + limit *byte +} + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) Decompress4X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + if len(src) < 6+(4*1) { + return nil, errors.New("input too small") + } + + use8BitTables := d.actualTableLog <= 8 + if cap(dst) < fallback8BitSize && use8BitTables { + return d.decompress4X8bit(dst, src) + } + + var br [4]bitReaderShifted + // Decode "jump table" + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + single := d.dt.single[:tlSize] + + var decoded int + + if len(out) > 4*4 && !(br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4) { + ctx := decompress4xContext{ + pbr: &br, + peekBits: uint8((64 - d.actualTableLog) & 63), // see: bitReaderShifted.peekBitsFast() + out: &out[0], + dstEvery: dstEvery, + tbl: &single[0], + limit: &out[dstEvery-4], // Always stop decoding when first buffer gets here to avoid writing OOB on last. + } + if use8BitTables { + decompress4x_8b_main_loop_amd64(&ctx) + } else { + decompress4x_main_loop_amd64(&ctx) + } + + decoded = ctx.decoded + out = out[decoded/4:] + } + + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + br.fill() + if offset >= endsAt { + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + val := br.peekBitsFast(d.actualTableLog) + v := single[val&tlMask].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + return nil, err + } + } + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// decompress4x_main_loop_x86 is an x86 assembler implementation +// of Decompress1X when tablelog > 8. +// +//go:noescape +func decompress1x_main_loop_amd64(ctx *decompress1xContext) + +// decompress4x_main_loop_x86 is an x86 with BMI2 assembler implementation +// of Decompress1X when tablelog > 8. +// +//go:noescape +func decompress1x_main_loop_bmi2(ctx *decompress1xContext) + +type decompress1xContext struct { + pbr *bitReaderShifted + peekBits uint8 + out *byte + outCap int + tbl *dEntrySingle + decoded int +} + +// Error reported by asm implementations +const error_max_decoded_size_exeeded = -1 + +// Decompress1X will decompress a 1X encoded stream. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) Decompress1X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + var br bitReaderShifted + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:maxDecodedSize] + + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + + if maxDecodedSize >= 4 { + ctx := decompress1xContext{ + pbr: &br, + out: &dst[0], + outCap: maxDecodedSize, + peekBits: uint8((64 - d.actualTableLog) & 63), // see: bitReaderShifted.peekBitsFast() + tbl: &d.dt.single[0], + } + + if cpuinfo.HasBMI2() { + decompress1x_main_loop_bmi2(&ctx) + } else { + decompress1x_main_loop_amd64(&ctx) + } + if ctx.decoded == error_max_decoded_size_exeeded { + return nil, ErrMaxDecodedSizeExceeded + } + + dst = dst[:ctx.decoded] + } + + // br < 8, so uint8 is fine + bitsLeft := uint8(br.off)*8 + 64 - br.bitsRead + for bitsLeft > 0 { + br.fill() + if len(dst) >= maxDecodedSize { + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + v := d.dt.single[br.peekBitsFast(d.actualTableLog)&tlMask] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= nBits + dst = append(dst, uint8(v.entry>>8)) + } + return dst, br.close() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s new file mode 100644 index 0000000..c4c7ab2 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s @@ -0,0 +1,830 @@ +// Code generated by command: go run gen.go -out ../decompress_amd64.s -pkg=huff0. DO NOT EDIT. + +//go:build amd64 && !appengine && !noasm && gc + +// func decompress4x_main_loop_amd64(ctx *decompress4xContext) +TEXT ·decompress4x_main_loop_amd64(SB), $0-8 + // Preload values + MOVQ ctx+0(FP), AX + MOVBQZX 8(AX), DI + MOVQ 16(AX), BX + MOVQ 48(AX), SI + MOVQ 24(AX), R8 + MOVQ 32(AX), R9 + MOVQ (AX), R10 + + // Main loop +main_loop: + XORL DX, DX + CMPQ BX, SI + SETGE DL + + // br0.fillFast32() + MOVQ 32(R10), R11 + MOVBQZX 40(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill0 + MOVQ 24(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ (R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 24(R10) + ORQ R13, R11 + + // exhausted += (br0.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill0: + // val0 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br0.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + MOVW AX, (BX) + + // update the bitreader structure + MOVQ R11, 32(R10) + MOVB R12, 40(R10) + + // br1.fillFast32() + MOVQ 80(R10), R11 + MOVBQZX 88(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill1 + MOVQ 72(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ 48(R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 72(R10) + ORQ R13, R11 + + // exhausted += (br1.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill1: + // val0 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br1.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + MOVW AX, (BX)(R8*1) + + // update the bitreader structure + MOVQ R11, 80(R10) + MOVB R12, 88(R10) + + // br2.fillFast32() + MOVQ 128(R10), R11 + MOVBQZX 136(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill2 + MOVQ 120(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ 96(R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 120(R10) + ORQ R13, R11 + + // exhausted += (br2.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill2: + // val0 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br2.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + MOVW AX, (BX)(R8*2) + + // update the bitreader structure + MOVQ R11, 128(R10) + MOVB R12, 136(R10) + + // br3.fillFast32() + MOVQ 176(R10), R11 + MOVBQZX 184(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill3 + MOVQ 168(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ 144(R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 168(R10) + ORQ R13, R11 + + // exhausted += (br3.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill3: + // val0 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br3.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + LEAQ (R8)(R8*2), CX + MOVW AX, (BX)(CX*1) + + // update the bitreader structure + MOVQ R11, 176(R10) + MOVB R12, 184(R10) + ADDQ $0x02, BX + TESTB DL, DL + JZ main_loop + MOVQ ctx+0(FP), AX + SUBQ 16(AX), BX + SHLQ $0x02, BX + MOVQ BX, 40(AX) + RET + +// func decompress4x_8b_main_loop_amd64(ctx *decompress4xContext) +TEXT ·decompress4x_8b_main_loop_amd64(SB), $0-8 + // Preload values + MOVQ ctx+0(FP), CX + MOVBQZX 8(CX), DI + MOVQ 16(CX), BX + MOVQ 48(CX), SI + MOVQ 24(CX), R8 + MOVQ 32(CX), R9 + MOVQ (CX), R10 + + // Main loop +main_loop: + XORL DX, DX + CMPQ BX, SI + SETGE DL + + // br0.fillFast32() + MOVQ 32(R10), R11 + MOVBQZX 40(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill0 + MOVQ 24(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ (R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 24(R10) + ORQ R14, R11 + + // exhausted += (br0.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill0: + // val0 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + MOVL AX, (BX) + + // update the bitreader structure + MOVQ R11, 32(R10) + MOVB R12, 40(R10) + + // br1.fillFast32() + MOVQ 80(R10), R11 + MOVBQZX 88(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill1 + MOVQ 72(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ 48(R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 72(R10) + ORQ R14, R11 + + // exhausted += (br1.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill1: + // val0 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + MOVL AX, (BX)(R8*1) + + // update the bitreader structure + MOVQ R11, 80(R10) + MOVB R12, 88(R10) + + // br2.fillFast32() + MOVQ 128(R10), R11 + MOVBQZX 136(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill2 + MOVQ 120(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ 96(R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 120(R10) + ORQ R14, R11 + + // exhausted += (br2.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill2: + // val0 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + MOVL AX, (BX)(R8*2) + + // update the bitreader structure + MOVQ R11, 128(R10) + MOVB R12, 136(R10) + + // br3.fillFast32() + MOVQ 176(R10), R11 + MOVBQZX 184(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill3 + MOVQ 168(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ 144(R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 168(R10) + ORQ R14, R11 + + // exhausted += (br3.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill3: + // val0 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + LEAQ (R8)(R8*2), CX + MOVL AX, (BX)(CX*1) + + // update the bitreader structure + MOVQ R11, 176(R10) + MOVB R12, 184(R10) + ADDQ $0x04, BX + TESTB DL, DL + JZ main_loop + MOVQ ctx+0(FP), AX + SUBQ 16(AX), BX + SHLQ $0x02, BX + MOVQ BX, 40(AX) + RET + +// func decompress1x_main_loop_amd64(ctx *decompress1xContext) +TEXT ·decompress1x_main_loop_amd64(SB), $0-8 + MOVQ ctx+0(FP), CX + MOVQ 16(CX), DX + MOVQ 24(CX), BX + CMPQ BX, $0x04 + JB error_max_decoded_size_exceeded + LEAQ (DX)(BX*1), BX + MOVQ (CX), SI + MOVQ (SI), R8 + MOVQ 24(SI), R9 + MOVQ 32(SI), R10 + MOVBQZX 40(SI), R11 + MOVQ 32(CX), SI + MOVBQZX 8(CX), DI + JMP loop_condition + +main_loop: + // Check if we have room for 4 bytes in the output buffer + LEAQ 4(DX), CX + CMPQ CX, BX + JGE error_max_decoded_size_exceeded + + // Decode 4 values + CMPQ R11, $0x20 + JL bitReader_fillFast_1_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), R12 + MOVQ R11, CX + SHLQ CL, R12 + ORQ R12, R10 + +bitReader_fillFast_1_end: + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + BSWAPL AX + CMPQ R11, $0x20 + JL bitReader_fillFast_2_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), R12 + MOVQ R11, CX + SHLQ CL, R12 + ORQ R12, R10 + +bitReader_fillFast_2_end: + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + BSWAPL AX + + // Store the decoded values + MOVL AX, (DX) + ADDQ $0x04, DX + +loop_condition: + CMPQ R9, $0x08 + JGE main_loop + + // Update ctx structure + MOVQ ctx+0(FP), AX + SUBQ 16(AX), DX + MOVQ DX, 40(AX) + MOVQ (AX), AX + MOVQ R9, 24(AX) + MOVQ R10, 32(AX) + MOVB R11, 40(AX) + RET + + // Report error +error_max_decoded_size_exceeded: + MOVQ ctx+0(FP), AX + MOVQ $-1, CX + MOVQ CX, 40(AX) + RET + +// func decompress1x_main_loop_bmi2(ctx *decompress1xContext) +// Requires: BMI2 +TEXT ·decompress1x_main_loop_bmi2(SB), $0-8 + MOVQ ctx+0(FP), CX + MOVQ 16(CX), DX + MOVQ 24(CX), BX + CMPQ BX, $0x04 + JB error_max_decoded_size_exceeded + LEAQ (DX)(BX*1), BX + MOVQ (CX), SI + MOVQ (SI), R8 + MOVQ 24(SI), R9 + MOVQ 32(SI), R10 + MOVBQZX 40(SI), R11 + MOVQ 32(CX), SI + MOVBQZX 8(CX), DI + JMP loop_condition + +main_loop: + // Check if we have room for 4 bytes in the output buffer + LEAQ 4(DX), CX + CMPQ CX, BX + JGE error_max_decoded_size_exceeded + + // Decode 4 values + CMPQ R11, $0x20 + JL bitReader_fillFast_1_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), CX + SHLXQ R11, CX, CX + ORQ CX, R10 + +bitReader_fillFast_1_end: + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + BSWAPL AX + CMPQ R11, $0x20 + JL bitReader_fillFast_2_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), CX + SHLXQ R11, CX, CX + ORQ CX, R10 + +bitReader_fillFast_2_end: + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + BSWAPL AX + + // Store the decoded values + MOVL AX, (DX) + ADDQ $0x04, DX + +loop_condition: + CMPQ R9, $0x08 + JGE main_loop + + // Update ctx structure + MOVQ ctx+0(FP), AX + SUBQ 16(AX), DX + MOVQ DX, 40(AX) + MOVQ (AX), AX + MOVQ R9, 24(AX) + MOVQ R10, 32(AX) + MOVB R11, 40(AX) + RET + + // Report error +error_max_decoded_size_exceeded: + MOVQ ctx+0(FP), AX + MOVQ $-1, CX + MOVQ CX, 40(AX) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go new file mode 100644 index 0000000..908c17d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go @@ -0,0 +1,299 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +// This file contains a generic implementation of Decoder.Decompress4X. +package huff0 + +import ( + "errors" + "fmt" +) + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) Decompress4X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + if len(src) < 6+(4*1) { + return nil, errors.New("input too small") + } + if use8BitTables && d.actualTableLog <= 8 { + return d.decompress4X8bit(dst, src) + } + + var br [4]bitReaderShifted + // Decode "jump table" + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + single := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + buf := d.buffer() + var off uint8 + var decoded int + + // Decode 2 values from each decoder/loop. + const bufoff = 256 + for { + if br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4 { + break + } + + { + const stream = 0 + const stream2 = 1 + br[stream].fillFast() + br[stream2].fillFast() + + val := br[stream].peekBitsFast(d.actualTableLog) + val2 := br[stream2].peekBitsFast(d.actualTableLog) + v := single[val&tlMask] + v2 := single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off] = uint8(v.entry >> 8) + buf[stream2][off] = uint8(v2.entry >> 8) + + val = br[stream].peekBitsFast(d.actualTableLog) + val2 = br[stream2].peekBitsFast(d.actualTableLog) + v = single[val&tlMask] + v2 = single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off+1] = uint8(v.entry >> 8) + buf[stream2][off+1] = uint8(v2.entry >> 8) + } + + { + const stream = 2 + const stream2 = 3 + br[stream].fillFast() + br[stream2].fillFast() + + val := br[stream].peekBitsFast(d.actualTableLog) + val2 := br[stream2].peekBitsFast(d.actualTableLog) + v := single[val&tlMask] + v2 := single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off] = uint8(v.entry >> 8) + buf[stream2][off] = uint8(v2.entry >> 8) + + val = br[stream].peekBitsFast(d.actualTableLog) + val2 = br[stream2].peekBitsFast(d.actualTableLog) + v = single[val&tlMask] + v2 = single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off+1] = uint8(v.entry >> 8) + buf[stream2][off+1] = uint8(v2.entry >> 8) + } + + off += 2 + + if off == 0 { + if bufoff > dstEvery { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 1") + } + // There must at least be 3 buffers left. + if len(out)-bufoff < dstEvery*3 { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 2") + } + //copy(out, buf[0][:]) + //copy(out[dstEvery:], buf[1][:]) + //copy(out[dstEvery*2:], buf[2][:]) + //copy(out[dstEvery*3:], buf[3][:]) + *(*[bufoff]byte)(out) = buf[0] + *(*[bufoff]byte)(out[dstEvery:]) = buf[1] + *(*[bufoff]byte)(out[dstEvery*2:]) = buf[2] + *(*[bufoff]byte)(out[dstEvery*3:]) = buf[3] + out = out[bufoff:] + decoded += bufoff * 4 + } + } + if off > 0 { + ioff := int(off) + if len(out) < dstEvery*3+ioff { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 3") + } + copy(out, buf[0][:off]) + copy(out[dstEvery:], buf[1][:off]) + copy(out[dstEvery*2:], buf[2][:off]) + copy(out[dstEvery*3:], buf[3][:off]) + decoded += int(off) * 4 + out = out[off:] + } + + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + br.fill() + if offset >= endsAt { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + val := br.peekBitsFast(d.actualTableLog) + v := single[val&tlMask].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + d.bufs.Put(buf) + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + return nil, err + } + } + d.bufs.Put(buf) + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// Decompress1X will decompress a 1X encoded stream. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) Decompress1X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + if use8BitTables && d.actualTableLog <= 8 { + return d.decompress1X8Bit(dst, src) + } + var br bitReaderShifted + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:0] + + // Avoid bounds check by always having full sized table. + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + dt := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + bufs := d.buffer() + buf := &bufs[0] + var off uint8 + + for br.off >= 8 { + br.fillFast() + v := dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + // Refill + br.fillFast() + + v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + + if len(dst)+int(off) > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:off]...) + + // br < 8, so uint8 is fine + bitsLeft := uint8(br.off)*8 + 64 - br.bitsRead + for bitsLeft > 0 { + br.fill() + if false && br.bitsRead >= 32 { + if br.off >= 4 { + v := br.in[br.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + br.value = (br.value << 32) | uint64(low) + br.bitsRead -= 32 + br.off -= 4 + } else { + for br.off > 0 { + br.value = (br.value << 8) | uint64(br.in[br.off-1]) + br.bitsRead -= 8 + br.off-- + } + } + } + if len(dst) >= maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + v := d.dt.single[br.peekBitsFast(d.actualTableLog)&tlMask] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= nBits + dst = append(dst, uint8(v.entry>>8)) + } + d.bufs.Put(bufs) + return dst, br.close() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go b/examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go new file mode 100644 index 0000000..77ecd68 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go @@ -0,0 +1,337 @@ +// Package huff0 provides fast huffman encoding as used in zstd. +// +// See README.md at https://github.com/klauspost/compress/tree/master/huff0 for details. +package huff0 + +import ( + "errors" + "fmt" + "math" + "math/bits" + "sync" + + "github.com/klauspost/compress/fse" +) + +const ( + maxSymbolValue = 255 + + // zstandard limits tablelog to 11, see: + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#huffman-tree-description + tableLogMax = 11 + tableLogDefault = 11 + minTablelog = 5 + huffNodesLen = 512 + + // BlockSizeMax is maximum input size for a single block uncompressed. + BlockSizeMax = 1<<18 - 1 +) + +var ( + // ErrIncompressible is returned when input is judged to be too hard to compress. + ErrIncompressible = errors.New("input is not compressible") + + // ErrUseRLE is returned from the compressor when the input is a single byte value repeated. + ErrUseRLE = errors.New("input is single value repeated") + + // ErrTooBig is return if input is too large for a single block. + ErrTooBig = errors.New("input too big") + + // ErrMaxDecodedSizeExceeded is return if input is too large for a single block. + ErrMaxDecodedSizeExceeded = errors.New("maximum output size exceeded") +) + +type ReusePolicy uint8 + +const ( + // ReusePolicyAllow will allow reuse if it produces smaller output. + ReusePolicyAllow ReusePolicy = iota + + // ReusePolicyPrefer will re-use aggressively if possible. + // This will not check if a new table will produce smaller output, + // except if the current table is impossible to use or + // compressed output is bigger than input. + ReusePolicyPrefer + + // ReusePolicyNone will disable re-use of tables. + // This is slightly faster than ReusePolicyAllow but may produce larger output. + ReusePolicyNone + + // ReusePolicyMust must allow reuse and produce smaller output. + ReusePolicyMust +) + +type Scratch struct { + count [maxSymbolValue + 1]uint32 + + // Per block parameters. + // These can be used to override compression parameters of the block. + // Do not touch, unless you know what you are doing. + + // Out is output buffer. + // If the scratch is re-used before the caller is done processing the output, + // set this field to nil. + // Otherwise the output buffer will be re-used for next Compression/Decompression step + // and allocation will be avoided. + Out []byte + + // OutTable will contain the table data only, if a new table has been generated. + // Slice of the returned data. + OutTable []byte + + // OutData will contain the compressed data. + // Slice of the returned data. + OutData []byte + + // MaxDecodedSize will set the maximum allowed output size. + // This value will automatically be set to BlockSizeMax if not set. + // Decoders will return ErrMaxDecodedSizeExceeded is this limit is exceeded. + MaxDecodedSize int + + srcLen int + + // MaxSymbolValue will override the maximum symbol value of the next block. + MaxSymbolValue uint8 + + // TableLog will attempt to override the tablelog for the next block. + // Must be <= 11 and >= 5. + TableLog uint8 + + // Reuse will specify the reuse policy + Reuse ReusePolicy + + // WantLogLess allows to specify a log 2 reduction that should at least be achieved, + // otherwise the block will be returned as incompressible. + // The reduction should then at least be (input size >> WantLogLess) + // If WantLogLess == 0 any improvement will do. + WantLogLess uint8 + + symbolLen uint16 // Length of active part of the symbol table. + maxCount int // count of the most probable symbol + clearCount bool // clear count + actualTableLog uint8 // Selected tablelog. + prevTableLog uint8 // Tablelog for previous table + prevTable cTable // Table used for previous compression. + cTable cTable // compression table + dt dTable // decompression table + nodes []nodeElt + tmpOut [4][]byte + fse *fse.Scratch + decPool sync.Pool // *[4][256]byte buffers. + huffWeight [maxSymbolValue + 1]byte +} + +// TransferCTable will transfer the previously used compression table. +func (s *Scratch) TransferCTable(src *Scratch) { + if cap(s.prevTable) < len(src.prevTable) { + s.prevTable = make(cTable, 0, maxSymbolValue+1) + } + s.prevTable = s.prevTable[:len(src.prevTable)] + copy(s.prevTable, src.prevTable) + s.prevTableLog = src.prevTableLog +} + +func (s *Scratch) prepare(in []byte) (*Scratch, error) { + if len(in) > BlockSizeMax { + return nil, ErrTooBig + } + if s == nil { + s = &Scratch{} + } + if s.MaxSymbolValue == 0 { + s.MaxSymbolValue = maxSymbolValue + } + if s.TableLog == 0 { + s.TableLog = tableLogDefault + } + if s.TableLog > tableLogMax || s.TableLog < minTablelog { + return nil, fmt.Errorf(" invalid tableLog %d (%d -> %d)", s.TableLog, minTablelog, tableLogMax) + } + if s.MaxDecodedSize <= 0 || s.MaxDecodedSize > BlockSizeMax { + s.MaxDecodedSize = BlockSizeMax + } + if s.clearCount && s.maxCount == 0 { + for i := range s.count { + s.count[i] = 0 + } + s.clearCount = false + } + if cap(s.Out) == 0 { + s.Out = make([]byte, 0, len(in)) + } + s.Out = s.Out[:0] + + s.OutTable = nil + s.OutData = nil + if cap(s.nodes) < huffNodesLen+1 { + s.nodes = make([]nodeElt, 0, huffNodesLen+1) + } + s.nodes = s.nodes[:0] + if s.fse == nil { + s.fse = &fse.Scratch{} + } + s.srcLen = len(in) + + return s, nil +} + +type cTable []cTableEntry + +func (c cTable) write(s *Scratch) error { + var ( + // precomputed conversion table + bitsToWeight [tableLogMax + 1]byte + huffLog = s.actualTableLog + // last weight is not saved. + maxSymbolValue = uint8(s.symbolLen - 1) + huffWeight = s.huffWeight[:256] + ) + const ( + maxFSETableLog = 6 + ) + // convert to weight + bitsToWeight[0] = 0 + for n := uint8(1); n < huffLog+1; n++ { + bitsToWeight[n] = huffLog + 1 - n + } + + // Acquire histogram for FSE. + hist := s.fse.Histogram() + hist = hist[:256] + for i := range hist[:16] { + hist[i] = 0 + } + for n := uint8(0); n < maxSymbolValue; n++ { + v := bitsToWeight[c[n].nBits] & 15 + huffWeight[n] = v + hist[v]++ + } + + // FSE compress if feasible. + if maxSymbolValue >= 2 { + huffMaxCnt := uint32(0) + huffMax := uint8(0) + for i, v := range hist[:16] { + if v == 0 { + continue + } + huffMax = byte(i) + if v > huffMaxCnt { + huffMaxCnt = v + } + } + s.fse.HistogramFinished(huffMax, int(huffMaxCnt)) + s.fse.TableLog = maxFSETableLog + b, err := fse.Compress(huffWeight[:maxSymbolValue], s.fse) + if err == nil && len(b) < int(s.symbolLen>>1) { + s.Out = append(s.Out, uint8(len(b))) + s.Out = append(s.Out, b...) + return nil + } + // Unable to compress (RLE/uncompressible) + } + // write raw values as 4-bits (max : 15) + if maxSymbolValue > (256 - 128) { + // should not happen : likely means source cannot be compressed + return ErrIncompressible + } + op := s.Out + // special case, pack weights 4 bits/weight. + op = append(op, 128|(maxSymbolValue-1)) + // be sure it doesn't cause msan issue in final combination + huffWeight[maxSymbolValue] = 0 + for n := uint16(0); n < uint16(maxSymbolValue); n += 2 { + op = append(op, (huffWeight[n]<<4)|huffWeight[n+1]) + } + s.Out = op + return nil +} + +func (c cTable) estTableSize(s *Scratch) (sz int, err error) { + var ( + // precomputed conversion table + bitsToWeight [tableLogMax + 1]byte + huffLog = s.actualTableLog + // last weight is not saved. + maxSymbolValue = uint8(s.symbolLen - 1) + huffWeight = s.huffWeight[:256] + ) + const ( + maxFSETableLog = 6 + ) + // convert to weight + bitsToWeight[0] = 0 + for n := uint8(1); n < huffLog+1; n++ { + bitsToWeight[n] = huffLog + 1 - n + } + + // Acquire histogram for FSE. + hist := s.fse.Histogram() + hist = hist[:256] + for i := range hist[:16] { + hist[i] = 0 + } + for n := uint8(0); n < maxSymbolValue; n++ { + v := bitsToWeight[c[n].nBits] & 15 + huffWeight[n] = v + hist[v]++ + } + + // FSE compress if feasible. + if maxSymbolValue >= 2 { + huffMaxCnt := uint32(0) + huffMax := uint8(0) + for i, v := range hist[:16] { + if v == 0 { + continue + } + huffMax = byte(i) + if v > huffMaxCnt { + huffMaxCnt = v + } + } + s.fse.HistogramFinished(huffMax, int(huffMaxCnt)) + s.fse.TableLog = maxFSETableLog + b, err := fse.Compress(huffWeight[:maxSymbolValue], s.fse) + if err == nil && len(b) < int(s.symbolLen>>1) { + sz += 1 + len(b) + return sz, nil + } + // Unable to compress (RLE/uncompressible) + } + // write raw values as 4-bits (max : 15) + if maxSymbolValue > (256 - 128) { + // should not happen : likely means source cannot be compressed + return 0, ErrIncompressible + } + // special case, pack weights 4 bits/weight. + sz += 1 + int(maxSymbolValue/2) + return sz, nil +} + +// estimateSize returns the estimated size in bytes of the input represented in the +// histogram supplied. +func (c cTable) estimateSize(hist []uint32) int { + nbBits := uint32(7) + for i, v := range c[:len(hist)] { + nbBits += uint32(v.nBits) * hist[i] + } + return int(nbBits >> 3) +} + +// minSize returns the minimum possible size considering the shannon limit. +func (s *Scratch) minSize(total int) int { + nbBits := float64(7) + fTotal := float64(total) + for _, v := range s.count[:s.symbolLen] { + n := float64(v) + if n > 0 { + nbBits += math.Log2(fTotal/n) * n + } + } + return int(nbBits) >> 3 +} + +func highBit32(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go new file mode 100644 index 0000000..3954c51 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go @@ -0,0 +1,34 @@ +// Package cpuinfo gives runtime info about the current CPU. +// +// This is a very limited module meant for use internally +// in this project. For more versatile solution check +// https://github.com/klauspost/cpuid. +package cpuinfo + +// HasBMI1 checks whether an x86 CPU supports the BMI1 extension. +func HasBMI1() bool { + return hasBMI1 +} + +// HasBMI2 checks whether an x86 CPU supports the BMI2 extension. +func HasBMI2() bool { + return hasBMI2 +} + +// DisableBMI2 will disable BMI2, for testing purposes. +// Call returned function to restore previous state. +func DisableBMI2() func() { + old := hasBMI2 + hasBMI2 = false + return func() { + hasBMI2 = old + } +} + +// HasBMI checks whether an x86 CPU supports both BMI1 and BMI2 extensions. +func HasBMI() bool { + return HasBMI1() && HasBMI2() +} + +var hasBMI1 bool +var hasBMI2 bool diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go new file mode 100644 index 0000000..e802579 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go @@ -0,0 +1,11 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +package cpuinfo + +// go:noescape +func x86extensions() (bmi1, bmi2 bool) + +func init() { + hasBMI1, hasBMI2 = x86extensions() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s new file mode 100644 index 0000000..4465fbe --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s @@ -0,0 +1,36 @@ +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" +#include "funcdata.h" +#include "go_asm.h" + +TEXT ·x86extensions(SB), NOSPLIT, $0 + // 1. determine max EAX value + XORQ AX, AX + CPUID + + CMPQ AX, $7 + JB unsupported + + // 2. EAX = 7, ECX = 0 --- see Table 3-8 "Information Returned by CPUID Instruction" + MOVQ $7, AX + MOVQ $0, CX + CPUID + + BTQ $3, BX // bit 3 = BMI1 + SETCS AL + + BTQ $8, BX // bit 8 = BMI2 + SETCS AH + + MOVB AL, bmi1+0(FP) + MOVB AH, bmi2+1(FP) + RET + +unsupported: + XORQ AX, AX + MOVB AL, bmi1+0(FP) + MOVB AL, bmi2+1(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE new file mode 100644 index 0000000..6050c10 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go new file mode 100644 index 0000000..40796a4 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go @@ -0,0 +1,264 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt reports that the input is invalid. + ErrCorrupt = errors.New("snappy: corrupt input") + // ErrTooLarge reports that the uncompressed length is too large. + ErrTooLarge = errors.New("snappy: decoded block is too large") + // ErrUnsupported reports that the input isn't supported. + ErrUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// DecodedLen returns the length of the decoded block. +func DecodedLen(src []byte) (int, error) { + v, _, err := decodedLen(src) + return v, err +} + +// decodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func decodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrTooLarge + } + return int(v), n, nil +} + +const ( + decodeErrCodeCorrupt = 1 + decodeErrCodeUnsupportedLiteralLength = 2 +) + +// Decode returns the decoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire decoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Decode handles the Snappy block format, not the Snappy stream format. +func Decode(dst, src []byte) ([]byte, error) { + dLen, s, err := decodedLen(src) + if err != nil { + return nil, err + } + if dLen <= len(dst) { + dst = dst[:dLen] + } else { + dst = make([]byte, dLen) + } + switch decode(dst, src[s:]) { + case 0: + return dst, nil + case decodeErrCodeUnsupportedLiteralLength: + return nil, errUnsupportedLiteralLength + } + return nil, ErrCorrupt +} + +// NewReader returns a new Reader that decompresses from r, using the framing +// format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +func NewReader(r io.Reader) *Reader { + return &Reader{ + r: r, + decoded: make([]byte, maxBlockSize), + buf: make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), + } +} + +// Reader is an io.Reader that can read Snappy-compressed bytes. +// +// Reader handles the Snappy stream format, not the Snappy block format. +type Reader struct { + r io.Reader + err error + decoded []byte + buf []byte + // decoded[i:j] contains decoded bytes that have not yet been passed on. + i, j int + readHeader bool +} + +// Reset discards any buffered data, resets all state, and switches the Snappy +// reader to read from r. This permits reusing a Reader rather than allocating +// a new one. +func (r *Reader) Reset(reader io.Reader) { + r.r = reader + r.err = nil + r.i = 0 + r.j = 0 + r.readHeader = false +} + +func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrCorrupt + } + return false + } + return true +} + +func (r *Reader) fill() error { + for r.i >= r.j { + if !r.readFull(r.buf[:4], true) { + return r.err + } + chunkType := r.buf[0] + if !r.readHeader { + if chunkType != chunkTypeStreamIdentifier { + r.err = ErrCorrupt + return r.err + } + r.readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + r.err = ErrUnsupported + return r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[checksumSize:] + + n, err := DecodedLen(buf) + if err != nil { + r.err = err + return r.err + } + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if _, err := Decode(r.decoded, buf); err != nil { + r.err = err + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeUncompressedData: + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:checksumSize] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - checksumSize + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.decoded[:n], false) { + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeStreamIdentifier: + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(magicBody) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.buf[:len(magicBody)], false) { + return r.err + } + for i := 0; i < len(magicBody); i++ { + if r.buf[i] != magicBody[i] { + r.err = ErrCorrupt + return r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + r.err = ErrUnsupported + return r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return r.err + } + } + + return nil +} + +// Read satisfies the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + n := copy(p, r.decoded[r.i:r.j]) + r.i += n + return n, nil +} + +// ReadByte satisfies the io.ByteReader interface. +func (r *Reader) ReadByte() (byte, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + c := r.decoded[r.i] + r.i++ + return c, nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go new file mode 100644 index 0000000..77395a6 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go @@ -0,0 +1,113 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +// decode writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read, and that len(dst) +// equals that length. +// +// It returns 0 on success or a decodeErrCodeXxx error code on failure. +func decode(dst, src []byte) int { + var d, s, offset, length int + for s < len(src) { + switch src[s] & 0x03 { + case tagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + length = int(x) + 1 + if length <= 0 { + return decodeErrCodeUnsupportedLiteralLength + } + if length > len(dst)-d || length > len(src)-s { + return decodeErrCodeCorrupt + } + copy(dst[d:], src[s:s+length]) + d += length + s += length + continue + + case tagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + + case tagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + + case tagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + } + + if offset <= 0 || d < offset || length > len(dst)-d { + return decodeErrCodeCorrupt + } + // Copy from an earlier sub-slice of dst to a later sub-slice. + // If no overlap, use the built-in copy: + if offset >= length { + copy(dst[d:d+length], dst[d-offset:]) + d += length + continue + } + + // Unlike the built-in copy function, this byte-by-byte copy always runs + // forwards, even if the slices overlap. Conceptually, this is: + // + // d += forwardCopy(dst[d:d+length], dst[d-offset:]) + // + // We align the slices into a and b and show the compiler they are the same size. + // This allows the loop to run without bounds checks. + a := dst[d : d+length] + b := dst[d-offset:] + b = b[:len(a)] + for i := range a { + a[i] = b[i] + } + d += length + } + if d != len(dst) { + return decodeErrCodeCorrupt + } + return 0 +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go new file mode 100644 index 0000000..13c6040 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go @@ -0,0 +1,289 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +import ( + "encoding/binary" + "errors" + "io" +) + +// Encode returns the encoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire encoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Encode handles the Snappy block format, not the Snappy stream format. +func Encode(dst, src []byte) []byte { + if n := MaxEncodedLen(len(src)); n < 0 { + panic(ErrTooLarge) + } else if len(dst) < n { + dst = make([]byte, n) + } + + // The block starts with the varint-encoded length of the decompressed bytes. + d := binary.PutUvarint(dst, uint64(len(src))) + + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return dst[:d] +} + +// inputMargin is the minimum number of extra input bytes to keep, inside +// encodeBlock's inner loop. On some architectures, this margin lets us +// implement a fast path for emitLiteral, where the copy of short (<= 16 byte) +// literals can be implemented as a single load to and store from a 16-byte +// register. That literal's actual length can be as short as 1 byte, so this +// can copy up to 15 bytes too much, but that's OK as subsequent iterations of +// the encoding loop will fix up the copy overrun, and this inputMargin ensures +// that we don't overrun the dst and src buffers. +const inputMargin = 16 - 1 + +// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that +// could be encoded with a copy tag. This is the minimum with respect to the +// algorithm used by encodeBlock, not a minimum enforced by the file format. +// +// The encoded output must start with at least a 1 byte literal, as there are +// no previous bytes to copy. A minimal (1 byte) copy after that, generated +// from an emitCopy call in encodeBlock's main loop, would require at least +// another inputMargin bytes, for the reason above: we want any emitLiteral +// calls inside encodeBlock's main loop to use the fast path if possible, which +// requires being able to overrun by inputMargin bytes. Thus, +// minNonLiteralBlockSize equals 1 + 1 + inputMargin. +// +// The C++ code doesn't use this exact threshold, but it could, as discussed at +// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion +// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an +// optimization. It should not affect the encoded form. This is tested by +// TestSameEncodingAsCppShortCopies. +const minNonLiteralBlockSize = 1 + 1 + inputMargin + +// MaxEncodedLen returns the maximum length of a snappy block, given its +// uncompressed length. +// +// It will return a negative value if srcLen is too large to encode. +func MaxEncodedLen(srcLen int) int { + n := uint64(srcLen) + if n > 0xffffffff { + return -1 + } + // Compressed data can be defined as: + // compressed := item* literal* + // item := literal* copy + // + // The trailing literal sequence has a space blowup of at most 62/60 + // since a literal of length 60 needs one tag byte + one extra byte + // for length information. + // + // Item blowup is trickier to measure. Suppose the "copy" op copies + // 4 bytes of data. Because of a special check in the encoding code, + // we produce a 4-byte copy only if the offset is < 65536. Therefore + // the copy op takes 3 bytes to encode, and this type of item leads + // to at most the 62/60 blowup for representing literals. + // + // Suppose the "copy" op copies 5 bytes of data. If the offset is big + // enough, it will take 5 bytes to encode the copy op. Therefore the + // worst case here is a one-byte literal followed by a five-byte copy. + // That is, 6 bytes of input turn into 7 bytes of "compressed" data. + // + // This last factor dominates the blowup, so the final estimate is: + n = 32 + n + n/6 + if n > 0xffffffff { + return -1 + } + return int(n) +} + +var errClosed = errors.New("snappy: Writer is closed") + +// NewWriter returns a new Writer that compresses to w. +// +// The Writer returned does not buffer writes. There is no need to Flush or +// Close such a Writer. +// +// Deprecated: the Writer returned is not suitable for many small writes, only +// for few large writes. Use NewBufferedWriter instead, which is efficient +// regardless of the frequency and shape of the writes, and remember to Close +// that Writer when done. +func NewWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + obuf: make([]byte, obufLen), + } +} + +// NewBufferedWriter returns a new Writer that compresses to w, using the +// framing format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +// +// The Writer returned buffers writes. Users must call Close to guarantee all +// data has been forwarded to the underlying io.Writer. They may also call +// Flush zero or more times before calling Close. +func NewBufferedWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + ibuf: make([]byte, 0, maxBlockSize), + obuf: make([]byte, obufLen), + } +} + +// Writer is an io.Writer that can write Snappy-compressed bytes. +// +// Writer handles the Snappy stream format, not the Snappy block format. +type Writer struct { + w io.Writer + err error + + // ibuf is a buffer for the incoming (uncompressed) bytes. + // + // Its use is optional. For backwards compatibility, Writers created by the + // NewWriter function have ibuf == nil, do not buffer incoming bytes, and + // therefore do not need to be Flush'ed or Close'd. + ibuf []byte + + // obuf is a buffer for the outgoing (compressed) bytes. + obuf []byte + + // wroteStreamHeader is whether we have written the stream header. + wroteStreamHeader bool +} + +// Reset discards the writer's state and switches the Snappy writer to write to +// w. This permits reusing a Writer rather than allocating a new one. +func (w *Writer) Reset(writer io.Writer) { + w.w = writer + w.err = nil + if w.ibuf != nil { + w.ibuf = w.ibuf[:0] + } + w.wroteStreamHeader = false +} + +// Write satisfies the io.Writer interface. +func (w *Writer) Write(p []byte) (nRet int, errRet error) { + if w.ibuf == nil { + // Do not buffer incoming bytes. This does not perform or compress well + // if the caller of Writer.Write writes many small slices. This + // behavior is therefore deprecated, but still supported for backwards + // compatibility with code that doesn't explicitly Flush or Close. + return w.write(p) + } + + // The remainder of this method is based on bufio.Writer.Write from the + // standard library. + + for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { + var n int + if len(w.ibuf) == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, _ = w.write(p) + } else { + n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + w.Flush() + } + nRet += n + p = p[n:] + } + if w.err != nil { + return nRet, w.err + } + n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + nRet += n + return nRet, nil +} + +func (w *Writer) write(p []byte) (nRet int, errRet error) { + if w.err != nil { + return 0, w.err + } + for len(p) > 0 { + obufStart := len(magicChunk) + if !w.wroteStreamHeader { + w.wroteStreamHeader = true + copy(w.obuf, magicChunk) + obufStart = 0 + } + + var uncompressed []byte + if len(p) > maxBlockSize { + uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] + } else { + uncompressed, p = p, nil + } + checksum := crc(uncompressed) + + // Compress the buffer, discarding the result if the improvement + // isn't at least 12.5%. + compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) + chunkType := uint8(chunkTypeCompressedData) + chunkLen := 4 + len(compressed) + obufEnd := obufHeaderLen + len(compressed) + if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { + chunkType = chunkTypeUncompressedData + chunkLen = 4 + len(uncompressed) + obufEnd = obufHeaderLen + } + + // Fill in the per-chunk header that comes before the body. + w.obuf[len(magicChunk)+0] = chunkType + w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) + w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) + w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) + w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) + w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) + w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) + w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) + + if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { + w.err = err + return nRet, err + } + if chunkType == chunkTypeUncompressedData { + if _, err := w.w.Write(uncompressed); err != nil { + w.err = err + return nRet, err + } + } + nRet += len(uncompressed) + } + return nRet, nil +} + +// Flush flushes the Writer to its underlying io.Writer. +func (w *Writer) Flush() error { + if w.err != nil { + return w.err + } + if len(w.ibuf) == 0 { + return nil + } + w.write(w.ibuf) + w.ibuf = w.ibuf[:0] + return w.err +} + +// Close calls Flush and then closes the Writer. +func (w *Writer) Close() error { + w.Flush() + ret := w.err + if w.err == nil { + w.err = errClosed + } + return ret +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go new file mode 100644 index 0000000..2754bac --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go @@ -0,0 +1,250 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +func load32(b []byte, i int) uint32 { + b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func load64(b []byte, i int) uint64 { + b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +// emitLiteral writes a literal chunk and returns the number of bytes written. +// +// It assumes that: +// +// dst is long enough to hold the encoded bytes +// 1 <= len(lit) && len(lit) <= 65536 +func emitLiteral(dst, lit []byte) int { + i, n := 0, uint(len(lit)-1) + switch { + case n < 60: + dst[0] = uint8(n)<<2 | tagLiteral + i = 1 + case n < 1<<8: + dst[0] = 60<<2 | tagLiteral + dst[1] = uint8(n) + i = 2 + default: + dst[0] = 61<<2 | tagLiteral + dst[1] = uint8(n) + dst[2] = uint8(n >> 8) + i = 3 + } + return i + copy(dst[i:], lit) +} + +// emitCopy writes a copy chunk and returns the number of bytes written. +// +// It assumes that: +// +// dst is long enough to hold the encoded bytes +// 1 <= offset && offset <= 65535 +// 4 <= length && length <= 65535 +func emitCopy(dst []byte, offset, length int) int { + i := 0 + // The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The + // threshold for this loop is a little higher (at 68 = 64 + 4), and the + // length emitted down below is a little lower (at 60 = 64 - 4), because + // it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed + // by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as + // a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as + // 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a + // tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an + // encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. + for length >= 68 { + // Emit a length 64 copy, encoded as 3 bytes. + dst[i+0] = 63<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 64 + } + if length > 64 { + // Emit a length 60 copy, encoded as 3 bytes. + dst[i+0] = 59<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 60 + } + if length >= 12 || offset >= 2048 { + // Emit the remaining copy, encoded as 3 bytes. + dst[i+0] = uint8(length-1)<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + return i + 3 + } + // Emit the remaining copy, encoded as 2 bytes. + dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 + dst[i+1] = uint8(offset) + return i + 2 +} + +func hash(u, shift uint32) uint32 { + return (u * 0x1e35a7bd) >> shift +} + +// EncodeBlockInto exposes encodeBlock but checks dst size. +func EncodeBlockInto(dst, src []byte) (d int) { + if MaxEncodedLen(len(src)) > len(dst) { + return 0 + } + + // encodeBlock breaks on too big blocks, so split. + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return d +} + +// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It +// assumes that the varint-encoded length of the decompressed bytes has already +// been written. +// +// It also assumes that: +// +// len(dst) >= MaxEncodedLen(len(src)) && +// minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize +func encodeBlock(dst, src []byte) (d int) { + // Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. + // The table element type is uint16, as s < sLimit and sLimit < len(src) + // and len(src) <= maxBlockSize and maxBlockSize == 65536. + const ( + maxTableSize = 1 << 14 + // tableMask is redundant, but helps the compiler eliminate bounds + // checks. + tableMask = maxTableSize - 1 + ) + shift := uint32(32 - 8) + for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + shift-- + } + // In Go, all array elements are zero-initialized, so there is no advantage + // to a smaller tableSize per se. However, it matches the C++ algorithm, + // and in the asm versions of this code, we can get away with zeroing only + // the first tableSize elements. + var table [maxTableSize]uint16 + + // sLimit is when to stop looking for offset/length copies. The inputMargin + // lets us use a fast path for emitLiteral in the main loop, while we are + // looking for copies. + sLimit := len(src) - inputMargin + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := 0 + + // The encoded form must start with a literal, as there are no previous + // bytes to copy, so we start looking for hash matches at s == 1. + s := 1 + nextHash := hash(load32(src, s), shift) + + for { + // Copied from the C++ snappy implementation: + // + // Heuristic match skipping: If 32 bytes are scanned with no matches + // found, start looking only at every other byte. If 32 more bytes are + // scanned (or skipped), look at every third byte, etc.. When a match + // is found, immediately go back to looking at every byte. This is a + // small loss (~5% performance, ~0.1% density) for compressible data + // due to more bookkeeping, but for non-compressible data (such as + // JPEG) it's a huge win since the compressor quickly "realizes" the + // data is incompressible and doesn't bother looking for matches + // everywhere. + // + // The "skip" variable keeps track of how many bytes there are since + // the last match; dividing it by 32 (ie. right-shifting by five) gives + // the number of bytes to move ahead for each iteration. + skip := 32 + + nextS := s + candidate := 0 + for { + s = nextS + bytesBetweenHashLookups := skip >> 5 + nextS = s + bytesBetweenHashLookups + skip += bytesBetweenHashLookups + if nextS > sLimit { + goto emitRemainder + } + candidate = int(table[nextHash&tableMask]) + table[nextHash&tableMask] = uint16(s) + nextHash = hash(load32(src, nextS), shift) + if load32(src, s) == load32(src, candidate) { + break + } + } + + // A 4-byte match has been found. We'll later see if more than 4 bytes + // match. But, prior to the match, src[nextEmit:s] are unmatched. Emit + // them as literal bytes. + d += emitLiteral(dst[d:], src[nextEmit:s]) + + // Call emitCopy, and then see if another emitCopy could be our next + // move. Repeat until we find no match for the input immediately after + // what was consumed by the last emitCopy call. + // + // If we exit this loop normally then we need to call emitLiteral next, + // though we don't yet know how big the literal will be. We handle that + // by proceeding to the next iteration of the main loop. We also can + // exit this loop via goto if we get close to exhausting the input. + for { + // Invariant: we have a 4-byte match at s, and no need to emit any + // literal bytes prior to s. + base := s + + // Extend the 4-byte match as long as possible. + // + // This is an inlined version of: + // s = extendMatch(src, candidate+4, s+4) + s += 4 + for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { + } + + d += emitCopy(dst[d:], base-candidate, s-base) + nextEmit = s + if s >= sLimit { + goto emitRemainder + } + + // We could immediately start working at s now, but to improve + // compression we first update the hash table at s-1 and at s. If + // another emitCopy is not our next move, also calculate nextHash + // at s+1. At least on GOARCH=amd64, these three hash calculations + // are faster as one load64 call (with some shifts) instead of + // three load32 calls. + x := load64(src, s-1) + prevHash := hash(uint32(x>>0), shift) + table[prevHash&tableMask] = uint16(s - 1) + currHash := hash(uint32(x>>8), shift) + candidate = int(table[currHash&tableMask]) + table[currHash&tableMask] = uint16(s) + if uint32(x>>8) != load32(src, candidate) { + nextHash = hash(uint32(x>>16), shift) + s++ + break + } + } + } + +emitRemainder: + if nextEmit < len(src) { + d += emitLiteral(dst[d:], src[nextEmit:]) + } + return d +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go new file mode 100644 index 0000000..34d01f4 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go @@ -0,0 +1,98 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package snapref implements the Snappy compression format. It aims for very +// high speeds and reasonable compression. +// +// There are actually two Snappy formats: block and stream. They are related, +// but different: trying to decompress block-compressed data as a Snappy stream +// will fail, and vice versa. The block format is the Decode and Encode +// functions and the stream format is the Reader and Writer types. +// +// The block format, the more common case, is used when the complete size (the +// number of bytes) of the original data is known upfront, at the time +// compression starts. The stream format, also known as the framing format, is +// for when that isn't always true. +// +// The canonical, C++ implementation is at https://github.com/google/snappy and +// it only implements the block format. +package snapref + +import ( + "hash/crc32" +) + +/* +Each encoded block begins with the varint-encoded length of the decoded data, +followed by a sequence of chunks. Chunks begin and end on byte boundaries. The +first byte of each chunk is broken into its 2 least and 6 most significant bits +called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag. +Zero means a literal tag. All other values mean a copy tag. + +For literal tags: + - If m < 60, the next 1 + m bytes are literal bytes. + - Otherwise, let n be the little-endian unsigned integer denoted by the next + m - 59 bytes. The next 1 + n bytes after that are literal bytes. + +For copy tags, length bytes are copied from offset bytes ago, in the style of +Lempel-Ziv compression algorithms. In particular: + - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12). + The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10 + of the offset. The next byte is bits 0-7 of the offset. + - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65). + The length is 1 + m. The offset is the little-endian unsigned integer + denoted by the next 2 bytes. + - For l == 3, this tag is a legacy format that is no longer issued by most + encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in + [1, 65). The length is 1 + m. The offset is the little-endian unsigned + integer denoted by the next 4 bytes. +*/ +const ( + tagLiteral = 0x00 + tagCopy1 = 0x01 + tagCopy2 = 0x02 + tagCopy4 = 0x03 +) + +const ( + checksumSize = 4 + chunkHeaderSize = 4 + magicChunk = "\xff\x06\x00\x00" + magicBody + magicBody = "sNaPpY" + + // maxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + maxBlockSize = 65536 + + // maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + maxEncodedLenOfMaxBlockSize = 76490 + + obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize + obufLen = obufHeaderLen + maxEncodedLenOfMaxBlockSize +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func crc(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return uint32(c>>15|c<<17) + 0xa282ead8 +} diff --git a/examples/go/vendor/github.com/klauspost/compress/s2sx.mod b/examples/go/vendor/github.com/klauspost/compress/s2sx.mod new file mode 100644 index 0000000..5a4412f --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/s2sx.mod @@ -0,0 +1,4 @@ +module github.com/klauspost/compress + +go 1.19 + diff --git a/examples/go/vendor/github.com/klauspost/compress/s2sx.sum b/examples/go/vendor/github.com/klauspost/compress/s2sx.sum new file mode 100644 index 0000000..e69de29 diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/README.md b/examples/go/vendor/github.com/klauspost/compress/zstd/README.md new file mode 100644 index 0000000..92e2347 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/README.md @@ -0,0 +1,441 @@ +# zstd + +[Zstandard](https://facebook.github.io/zstd/) is a real-time compression algorithm, providing high compression ratios. +It offers a very wide range of compression / speed trade-off, while being backed by a very fast decoder. +A high performance compression algorithm is implemented. For now focused on speed. + +This package provides [compression](#Compressor) to and [decompression](#Decompressor) of Zstandard content. + +This package is pure Go and without use of "unsafe". + +The `zstd` package is provided as open source software using a Go standard license. + +Currently the package is heavily optimized for 64 bit processors and will be significantly slower on 32 bit processors. + +For seekable zstd streams, see [this excellent package](https://github.com/SaveTheRbtz/zstd-seekable-format-go). + +## Installation + +Install using `go get -u github.com/klauspost/compress`. The package is located in `github.com/klauspost/compress/zstd`. + +[![Go Reference](https://pkg.go.dev/badge/github.com/klauspost/compress/zstd.svg)](https://pkg.go.dev/github.com/klauspost/compress/zstd) + +## Compressor + +### Status: + +STABLE - there may always be subtle bugs, a wide variety of content has been tested and the library is actively +used by several projects. This library is being [fuzz-tested](https://github.com/klauspost/compress-fuzz) for all updates. + +There may still be specific combinations of data types/size/settings that could lead to edge cases, +so as always, testing is recommended. + +For now, a high speed (fastest) and medium-fast (default) compressor has been implemented. + +* The "Fastest" compression ratio is roughly equivalent to zstd level 1. +* The "Default" compression ratio is roughly equivalent to zstd level 3 (default). +* The "Better" compression ratio is roughly equivalent to zstd level 7. +* The "Best" compression ratio is roughly equivalent to zstd level 11. + +In terms of speed, it is typically 2x as fast as the stdlib deflate/gzip in its fastest mode. +The compression ratio compared to stdlib is around level 3, but usually 3x as fast. + + +### Usage + +An Encoder can be used for either compressing a stream via the +`io.WriteCloser` interface supported by the Encoder or as multiple independent +tasks via the `EncodeAll` function. +Smaller encodes are encouraged to use the EncodeAll function. +Use `NewWriter` to create a new instance that can be used for both. + +To create a writer with default options, do like this: + +```Go +// Compress input to output. +func Compress(in io.Reader, out io.Writer) error { + enc, err := zstd.NewWriter(out) + if err != nil { + return err + } + _, err = io.Copy(enc, in) + if err != nil { + enc.Close() + return err + } + return enc.Close() +} +``` + +Now you can encode by writing data to `enc`. The output will be finished writing when `Close()` is called. +Even if your encode fails, you should still call `Close()` to release any resources that may be held up. + +The above is fine for big encodes. However, whenever possible try to *reuse* the writer. + +To reuse the encoder, you can use the `Reset(io.Writer)` function to change to another output. +This will allow the encoder to reuse all resources and avoid wasteful allocations. + +Currently stream encoding has 'light' concurrency, meaning up to 2 goroutines can be working on part +of a stream. This is independent of the `WithEncoderConcurrency(n)`, but that is likely to change +in the future. So if you want to limit concurrency for future updates, specify the concurrency +you would like. + +If you would like stream encoding to be done without spawning async goroutines, use `WithEncoderConcurrency(1)` +which will compress input as each block is completed, blocking on writes until each has completed. + +You can specify your desired compression level using `WithEncoderLevel()` option. Currently only pre-defined +compression settings can be specified. + +#### Future Compatibility Guarantees + +This will be an evolving project. When using this package it is important to note that both the compression efficiency and speed may change. + +The goal will be to keep the default efficiency at the default zstd (level 3). +However the encoding should never be assumed to remain the same, +and you should not use hashes of compressed output for similarity checks. + +The Encoder can be assumed to produce the same output from the exact same code version. +However, the may be modes in the future that break this, +although they will not be enabled without an explicit option. + +This encoder is not designed to (and will probably never) output the exact same bitstream as the reference encoder. + +Also note, that the cgo decompressor currently does not [report all errors on invalid input](https://github.com/DataDog/zstd/issues/59), +[omits error checks](https://github.com/DataDog/zstd/issues/61), [ignores checksums](https://github.com/DataDog/zstd/issues/43) +and seems to ignore concatenated streams, even though [it is part of the spec](https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frames). + +#### Blocks + +For compressing small blocks, the returned encoder has a function called `EncodeAll(src, dst []byte) []byte`. + +`EncodeAll` will encode all input in src and append it to dst. +This function can be called concurrently. +Each call will only run on a same goroutine as the caller. + +Encoded blocks can be concatenated and the result will be the combined input stream. +Data compressed with EncodeAll can be decoded with the Decoder, using either a stream or `DecodeAll`. + +Especially when encoding blocks you should take special care to reuse the encoder. +This will effectively make it run without allocations after a warmup period. +To make it run completely without allocations, supply a destination buffer with space for all content. + +```Go +import "github.com/klauspost/compress/zstd" + +// Create a writer that caches compressors. +// For this operation type we supply a nil Reader. +var encoder, _ = zstd.NewWriter(nil) + +// Compress a buffer. +// If you have a destination buffer, the allocation in the call can also be eliminated. +func Compress(src []byte) []byte { + return encoder.EncodeAll(src, make([]byte, 0, len(src))) +} +``` + +You can control the maximum number of concurrent encodes using the `WithEncoderConcurrency(n)` +option when creating the writer. + +Using the Encoder for both a stream and individual blocks concurrently is safe. + +### Performance + +I have collected some speed examples to compare speed and compression against other compressors. + +* `file` is the input file. +* `out` is the compressor used. `zskp` is this package. `zstd` is the Datadog cgo library. `gzstd/gzkp` is gzip standard and this library. +* `level` is the compression level used. For `zskp` level 1 is "fastest", level 2 is "default"; 3 is "better", 4 is "best". +* `insize`/`outsize` is the input/output size. +* `millis` is the number of milliseconds used for compression. +* `mb/s` is megabytes (2^20 bytes) per second. + +``` +Silesia Corpus: +http://sun.aei.polsl.pl/~sdeor/corpus/silesia.zip + +This package: +file out level insize outsize millis mb/s +silesia.tar zskp 1 211947520 73821326 634 318.47 +silesia.tar zskp 2 211947520 67655404 1508 133.96 +silesia.tar zskp 3 211947520 64746933 3000 67.37 +silesia.tar zskp 4 211947520 60073508 16926 11.94 + +cgo zstd: +silesia.tar zstd 1 211947520 73605392 543 371.56 +silesia.tar zstd 3 211947520 66793289 864 233.68 +silesia.tar zstd 6 211947520 62916450 1913 105.66 +silesia.tar zstd 9 211947520 60212393 5063 39.92 + +gzip, stdlib/this package: +silesia.tar gzstd 1 211947520 80007735 1498 134.87 +silesia.tar gzkp 1 211947520 80088272 1009 200.31 + +GOB stream of binary data. Highly compressible. +https://files.klauspost.com/compress/gob-stream.7z + +file out level insize outsize millis mb/s +gob-stream zskp 1 1911399616 233948096 3230 564.34 +gob-stream zskp 2 1911399616 203997694 4997 364.73 +gob-stream zskp 3 1911399616 173526523 13435 135.68 +gob-stream zskp 4 1911399616 162195235 47559 38.33 + +gob-stream zstd 1 1911399616 249810424 2637 691.26 +gob-stream zstd 3 1911399616 208192146 3490 522.31 +gob-stream zstd 6 1911399616 193632038 6687 272.56 +gob-stream zstd 9 1911399616 177620386 16175 112.70 + +gob-stream gzstd 1 1911399616 357382013 9046 201.49 +gob-stream gzkp 1 1911399616 359136669 4885 373.08 + +The test data for the Large Text Compression Benchmark is the first +10^9 bytes of the English Wikipedia dump on Mar. 3, 2006. +http://mattmahoney.net/dc/textdata.html + +file out level insize outsize millis mb/s +enwik9 zskp 1 1000000000 343833605 3687 258.64 +enwik9 zskp 2 1000000000 317001237 7672 124.29 +enwik9 zskp 3 1000000000 291915823 15923 59.89 +enwik9 zskp 4 1000000000 261710291 77697 12.27 + +enwik9 zstd 1 1000000000 358072021 3110 306.65 +enwik9 zstd 3 1000000000 313734672 4784 199.35 +enwik9 zstd 6 1000000000 295138875 10290 92.68 +enwik9 zstd 9 1000000000 278348700 28549 33.40 + +enwik9 gzstd 1 1000000000 382578136 8608 110.78 +enwik9 gzkp 1 1000000000 382781160 5628 169.45 + +Highly compressible JSON file. +https://files.klauspost.com/compress/github-june-2days-2019.json.zst + +file out level insize outsize millis mb/s +github-june-2days-2019.json zskp 1 6273951764 697439532 9789 611.17 +github-june-2days-2019.json zskp 2 6273951764 610876538 18553 322.49 +github-june-2days-2019.json zskp 3 6273951764 517662858 44186 135.41 +github-june-2days-2019.json zskp 4 6273951764 464617114 165373 36.18 + +github-june-2days-2019.json zstd 1 6273951764 766284037 8450 708.00 +github-june-2days-2019.json zstd 3 6273951764 661889476 10927 547.57 +github-june-2days-2019.json zstd 6 6273951764 642756859 22996 260.18 +github-june-2days-2019.json zstd 9 6273951764 601974523 52413 114.16 + +github-june-2days-2019.json gzstd 1 6273951764 1164397768 26793 223.32 +github-june-2days-2019.json gzkp 1 6273951764 1120631856 17693 338.16 + +VM Image, Linux mint with a few installed applications: +https://files.klauspost.com/compress/rawstudio-mint14.7z + +file out level insize outsize millis mb/s +rawstudio-mint14.tar zskp 1 8558382592 3718400221 18206 448.29 +rawstudio-mint14.tar zskp 2 8558382592 3326118337 37074 220.15 +rawstudio-mint14.tar zskp 3 8558382592 3163842361 87306 93.49 +rawstudio-mint14.tar zskp 4 8558382592 2970480650 783862 10.41 + +rawstudio-mint14.tar zstd 1 8558382592 3609250104 17136 476.27 +rawstudio-mint14.tar zstd 3 8558382592 3341679997 29262 278.92 +rawstudio-mint14.tar zstd 6 8558382592 3235846406 77904 104.77 +rawstudio-mint14.tar zstd 9 8558382592 3160778861 140946 57.91 + +rawstudio-mint14.tar gzstd 1 8558382592 3926234992 51345 158.96 +rawstudio-mint14.tar gzkp 1 8558382592 3960117298 36722 222.26 + +CSV data: +https://files.klauspost.com/compress/nyc-taxi-data-10M.csv.zst + +file out level insize outsize millis mb/s +nyc-taxi-data-10M.csv zskp 1 3325605752 641319332 9462 335.17 +nyc-taxi-data-10M.csv zskp 2 3325605752 588976126 17570 180.50 +nyc-taxi-data-10M.csv zskp 3 3325605752 529329260 32432 97.79 +nyc-taxi-data-10M.csv zskp 4 3325605752 474949772 138025 22.98 + +nyc-taxi-data-10M.csv zstd 1 3325605752 687399637 8233 385.18 +nyc-taxi-data-10M.csv zstd 3 3325605752 598514411 10065 315.07 +nyc-taxi-data-10M.csv zstd 6 3325605752 570522953 20038 158.27 +nyc-taxi-data-10M.csv zstd 9 3325605752 517554797 64565 49.12 + +nyc-taxi-data-10M.csv gzstd 1 3325605752 928654908 21270 149.11 +nyc-taxi-data-10M.csv gzkp 1 3325605752 922273214 13929 227.68 +``` + +## Decompressor + +Status: STABLE - there may still be subtle bugs, but a wide variety of content has been tested. + +This library is being continuously [fuzz-tested](https://github.com/klauspost/compress-fuzz), +kindly supplied by [fuzzit.dev](https://fuzzit.dev/). +The main purpose of the fuzz testing is to ensure that it is not possible to crash the decoder, +or run it past its limits with ANY input provided. + +### Usage + +The package has been designed for two main usages, big streams of data and smaller in-memory buffers. +There are two main usages of the package for these. Both of them are accessed by creating a `Decoder`. + +For streaming use a simple setup could look like this: + +```Go +import "github.com/klauspost/compress/zstd" + +func Decompress(in io.Reader, out io.Writer) error { + d, err := zstd.NewReader(in) + if err != nil { + return err + } + defer d.Close() + + // Copy content... + _, err = io.Copy(out, d) + return err +} +``` + +It is important to use the "Close" function when you no longer need the Reader to stop running goroutines, +when running with default settings. +Goroutines will exit once an error has been returned, including `io.EOF` at the end of a stream. + +Streams are decoded concurrently in 4 asynchronous stages to give the best possible throughput. +However, if you prefer synchronous decompression, use `WithDecoderConcurrency(1)` which will decompress data +as it is being requested only. + +For decoding buffers, it could look something like this: + +```Go +import "github.com/klauspost/compress/zstd" + +// Create a reader that caches decompressors. +// For this operation type we supply a nil Reader. +var decoder, _ = zstd.NewReader(nil, zstd.WithDecoderConcurrency(0)) + +// Decompress a buffer. We don't supply a destination buffer, +// so it will be allocated by the decoder. +func Decompress(src []byte) ([]byte, error) { + return decoder.DecodeAll(src, nil) +} +``` + +Both of these cases should provide the functionality needed. +The decoder can be used for *concurrent* decompression of multiple buffers. +By default 4 decompressors will be created. + +It will only allow a certain number of concurrent operations to run. +To tweak that yourself use the `WithDecoderConcurrency(n)` option when creating the decoder. +It is possible to use `WithDecoderConcurrency(0)` to create GOMAXPROCS decoders. + +### Dictionaries + +Data compressed with [dictionaries](https://github.com/facebook/zstd#the-case-for-small-data-compression) can be decompressed. + +Dictionaries are added individually to Decoders. +Dictionaries are generated by the `zstd --train` command and contains an initial state for the decoder. +To add a dictionary use the `WithDecoderDicts(dicts ...[]byte)` option with the dictionary data. +Several dictionaries can be added at once. + +The dictionary will be used automatically for the data that specifies them. +A re-used Decoder will still contain the dictionaries registered. + +When registering multiple dictionaries with the same ID, the last one will be used. + +It is possible to use dictionaries when compressing data. + +To enable a dictionary use `WithEncoderDict(dict []byte)`. Here only one dictionary will be used +and it will likely be used even if it doesn't improve compression. + +The used dictionary must be used to decompress the content. + +For any real gains, the dictionary should be built with similar data. +If an unsuitable dictionary is used the output may be slightly larger than using no dictionary. +Use the [zstd commandline tool](https://github.com/facebook/zstd/releases) to build a dictionary from sample data. +For information see [zstd dictionary information](https://github.com/facebook/zstd#the-case-for-small-data-compression). + +For now there is a fixed startup performance penalty for compressing content with dictionaries. +This will likely be improved over time. Just be aware to test performance when implementing. + +### Allocation-less operation + +The decoder has been designed to operate without allocations after a warmup. + +This means that you should *store* the decoder for best performance. +To re-use a stream decoder, use the `Reset(r io.Reader) error` to switch to another stream. +A decoder can safely be re-used even if the previous stream failed. + +To release the resources, you must call the `Close()` function on a decoder. +After this it can *no longer be reused*, but all running goroutines will be stopped. +So you *must* use this if you will no longer need the Reader. + +For decompressing smaller buffers a single decoder can be used. +When decoding buffers, you can supply a destination slice with length 0 and your expected capacity. +In this case no unneeded allocations should be made. + +### Concurrency + +The buffer decoder does everything on the same goroutine and does nothing concurrently. +It can however decode several buffers concurrently. Use `WithDecoderConcurrency(n)` to limit that. + +The stream decoder will create goroutines that: + +1) Reads input and splits the input into blocks. +2) Decompression of literals. +3) Decompression of sequences. +4) Reconstruction of output stream. + +So effectively this also means the decoder will "read ahead" and prepare data to always be available for output. + +The concurrency level will, for streams, determine how many blocks ahead the compression will start. + +Since "blocks" are quite dependent on the output of the previous block stream decoding will only have limited concurrency. + +In practice this means that concurrency is often limited to utilizing about 3 cores effectively. + +### Benchmarks + +The first two are streaming decodes and the last are smaller inputs. + +Running on AMD Ryzen 9 3950X 16-Core Processor. AMD64 assembly used. + +``` +BenchmarkDecoderSilesia-32 5 206878840 ns/op 1024.50 MB/s 49808 B/op 43 allocs/op +BenchmarkDecoderEnwik9-32 1 1271809000 ns/op 786.28 MB/s 72048 B/op 52 allocs/op + +Concurrent blocks, performance: + +BenchmarkDecoder_DecodeAllParallel/kppkn.gtb.zst-32 67356 17857 ns/op 10321.96 MB/s 22.48 pct 102 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/geo.protodata.zst-32 266656 4421 ns/op 26823.21 MB/s 11.89 pct 19 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/plrabn12.txt.zst-32 20992 56842 ns/op 8477.17 MB/s 39.90 pct 754 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/lcet10.txt.zst-32 27456 43932 ns/op 9714.01 MB/s 33.27 pct 524 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/asyoulik.txt.zst-32 78432 15047 ns/op 8319.15 MB/s 40.34 pct 66 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/alice29.txt.zst-32 65800 18436 ns/op 8249.63 MB/s 37.75 pct 88 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/html_x_4.zst-32 102993 11523 ns/op 35546.09 MB/s 3.637 pct 143 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/paper-100k.pdf.zst-32 1000000 1070 ns/op 95720.98 MB/s 80.53 pct 3 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/fireworks.jpeg.zst-32 749802 1752 ns/op 70272.35 MB/s 100.0 pct 5 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/urls.10K.zst-32 22640 52934 ns/op 13263.37 MB/s 26.25 pct 1014 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/html.zst-32 226412 5232 ns/op 19572.27 MB/s 14.49 pct 20 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/comp-data.bin.zst-32 923041 1276 ns/op 3194.71 MB/s 31.26 pct 0 B/op 0 allocs/op +``` + +This reflects the performance around May 2022, but this may be out of date. + +## Zstd inside ZIP files + +It is possible to use zstandard to compress individual files inside zip archives. +While this isn't widely supported it can be useful for internal files. + +To support the compression and decompression of these files you must register a compressor and decompressor. + +It is highly recommended registering the (de)compressors on individual zip Reader/Writer and NOT +use the global registration functions. The main reason for this is that 2 registrations from +different packages will result in a panic. + +It is a good idea to only have a single compressor and decompressor, since they can be used for multiple zip +files concurrently, and using a single instance will allow reusing some resources. + +See [this example](https://pkg.go.dev/github.com/klauspost/compress/zstd#example-ZipCompressor) for +how to compress and decompress files inside zip archives. + +# Contributions + +Contributions are always welcome. +For new features/fixes, remember to add tests and for performance enhancements include benchmarks. + +For general feedback and experience reports, feel free to open an issue or write me on [Twitter](https://twitter.com/sh0dan). + +This package includes the excellent [`github.com/cespare/xxhash`](https://github.com/cespare/xxhash) package Copyright (c) 2016 Caleb Spare. diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go new file mode 100644 index 0000000..25ca983 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go @@ -0,0 +1,136 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "errors" + "fmt" + "io" + "math/bits" +) + +// bitReader reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReader struct { + in []byte + value uint64 // Maybe use [16]byte, but shifting is awkward. + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReader) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.bitsRead += 8 - uint8(highBits(uint32(v))) + return nil +} + +// getBits will return n bits. n can be 0. +func (b *bitReader) getBits(n uint8) int { + if n == 0 /*|| b.bitsRead >= 64 */ { + return 0 + } + return int(b.get32BitsFast(n)) +} + +// get32BitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReader) get32BitsFast(n uint8) uint32 { + const regMask = 64 - 1 + v := uint32((b.value << (b.bitsRead & regMask)) >> ((regMask + 1 - n) & regMask)) + b.bitsRead += n + return v +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReader) fillFast() { + if b.bitsRead < 32 { + return + } + v := b.in[len(b.in)-4:] + b.in = b.in[:len(b.in)-4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 +} + +// fillFastStart() assumes the bitreader is empty and there is at least 8 bytes to read. +func (b *bitReader) fillFastStart() { + v := b.in[len(b.in)-8:] + b.in = b.in[:len(b.in)-8] + b.value = binary.LittleEndian.Uint64(v) + b.bitsRead = 0 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReader) fill() { + if b.bitsRead < 32 { + return + } + if len(b.in) >= 4 { + v := b.in[len(b.in)-4:] + b.in = b.in[:len(b.in)-4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + return + } + + b.bitsRead -= uint8(8 * len(b.in)) + for len(b.in) > 0 { + b.value = (b.value << 8) | uint64(b.in[len(b.in)-1]) + b.in = b.in[:len(b.in)-1] + } +} + +// finished returns true if all bits have been read from the bit stream. +func (b *bitReader) finished() bool { + return len(b.in) == 0 && b.bitsRead >= 64 +} + +// overread returns true if more bits have been requested than is on the stream. +func (b *bitReader) overread() bool { + return b.bitsRead > 64 +} + +// remain returns the number of bits remaining. +func (b *bitReader) remain() uint { + return 8*uint(len(b.in)) + 64 - uint(b.bitsRead) +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReader) close() error { + // Release reference. + b.in = nil + if !b.finished() { + return fmt.Errorf("%d extra bits on block, should be 0", b.remain()) + } + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} + +func highBits(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go new file mode 100644 index 0000000..1952f17 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go @@ -0,0 +1,112 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package zstd + +// bitWriter will write bits. +// First bit will be LSB of the first byte of output. +type bitWriter struct { + bitContainer uint64 + nBits uint8 + out []byte +} + +// bitMask16 is bitmasks. Has extra to avoid bounds check. +var bitMask16 = [32]uint16{ + 0, 1, 3, 7, 0xF, 0x1F, + 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, + 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF} /* up to 16 bits */ + +var bitMask32 = [32]uint32{ + 0, 1, 3, 7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, + 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, + 0x1ffff, 0x3ffff, 0x7FFFF, 0xfFFFF, 0x1fFFFF, 0x3fFFFF, 0x7fFFFF, 0xffFFFF, + 0x1ffFFFF, 0x3ffFFFF, 0x7ffFFFF, 0xfffFFFF, 0x1fffFFFF, 0x3fffFFFF, 0x7fffFFFF, +} // up to 32 bits + +// addBits16NC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16NC(value uint16, bits uint8) { + b.bitContainer |= uint64(value&bitMask16[bits&31]) << (b.nBits & 63) + b.nBits += bits +} + +// addBits32NC will add up to 31 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits32NC(value uint32, bits uint8) { + b.bitContainer |= uint64(value&bitMask32[bits&31]) << (b.nBits & 63) + b.nBits += bits +} + +// addBits64NC will add up to 64 bits. +// There must be space for 32 bits. +func (b *bitWriter) addBits64NC(value uint64, bits uint8) { + if bits <= 31 { + b.addBits32Clean(uint32(value), bits) + return + } + b.addBits32Clean(uint32(value), 32) + b.flush32() + b.addBits32Clean(uint32(value>>32), bits-32) +} + +// addBits32Clean will add up to 32 bits. +// It will not check if there is space for them. +// The input must not contain more bits than specified. +func (b *bitWriter) addBits32Clean(value uint32, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// flush32 will flush out, so there are at least 32 bits available for writing. +func (b *bitWriter) flush32() { + if b.nBits < 32 { + return + } + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24)) + b.nBits -= 32 + b.bitContainer >>= 32 +} + +// flushAlign will flush remaining full bytes and align to next byte boundary. +func (b *bitWriter) flushAlign() { + nbBytes := (b.nBits + 7) >> 3 + for i := uint8(0); i < nbBytes; i++ { + b.out = append(b.out, byte(b.bitContainer>>(i*8))) + } + b.nBits = 0 + b.bitContainer = 0 +} + +// close will write the alignment bit and write the final byte(s) +// to the output. +func (b *bitWriter) close() { + // End mark + b.addBits16Clean(1, 1) + // flush until next byte. + b.flushAlign() +} + +// reset and continue writing by appending to out. +func (b *bitWriter) reset(out []byte) { + b.bitContainer = 0 + b.nBits = 0 + b.out = out +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go b/examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go new file mode 100644 index 0000000..03744fb --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go @@ -0,0 +1,729 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "hash/crc32" + "io" + "os" + "path/filepath" + "sync" + + "github.com/klauspost/compress/huff0" + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +type blockType uint8 + +//go:generate stringer -type=blockType,literalsBlockType,seqCompMode,tableIndex + +const ( + blockTypeRaw blockType = iota + blockTypeRLE + blockTypeCompressed + blockTypeReserved +) + +type literalsBlockType uint8 + +const ( + literalsBlockRaw literalsBlockType = iota + literalsBlockRLE + literalsBlockCompressed + literalsBlockTreeless +) + +const ( + // maxCompressedBlockSize is the biggest allowed compressed block size (128KB) + maxCompressedBlockSize = 128 << 10 + + compressedBlockOverAlloc = 16 + maxCompressedBlockSizeAlloc = 128<<10 + compressedBlockOverAlloc + + // Maximum possible block size (all Raw+Uncompressed). + maxBlockSize = (1 << 21) - 1 + + maxMatchLen = 131074 + maxSequences = 0x7f00 + 0xffff + + // We support slightly less than the reference decoder to be able to + // use ints on 32 bit archs. + maxOffsetBits = 30 +) + +var ( + huffDecoderPool = sync.Pool{New: func() interface{} { + return &huff0.Scratch{} + }} + + fseDecoderPool = sync.Pool{New: func() interface{} { + return &fseDecoder{} + }} +) + +type blockDec struct { + // Raw source data of the block. + data []byte + dataStorage []byte + + // Destination of the decoded data. + dst []byte + + // Buffer for literals data. + literalBuf []byte + + // Window size of the block. + WindowSize uint64 + + err error + + // Check against this crc, if hasCRC is true. + checkCRC uint32 + hasCRC bool + + // Frame to use for singlethreaded decoding. + // Should not be used by the decoder itself since parent may be another frame. + localFrame *frameDec + + sequence []seqVals + + async struct { + newHist *history + literals []byte + seqData []byte + seqSize int // Size of uncompressed sequences + fcs uint64 + } + + // Block is RLE, this is the size. + RLESize uint32 + + Type blockType + + // Is this the last block of a frame? + Last bool + + // Use less memory + lowMem bool +} + +func (b *blockDec) String() string { + if b == nil { + return "" + } + return fmt.Sprintf("Steam Size: %d, Type: %v, Last: %t, Window: %d", len(b.data), b.Type, b.Last, b.WindowSize) +} + +func newBlockDec(lowMem bool) *blockDec { + b := blockDec{ + lowMem: lowMem, + } + return &b +} + +// reset will reset the block. +// Input must be a start of a block and will be at the end of the block when returned. +func (b *blockDec) reset(br byteBuffer, windowSize uint64) error { + b.WindowSize = windowSize + tmp, err := br.readSmall(3) + if err != nil { + println("Reading block header:", err) + return err + } + bh := uint32(tmp[0]) | (uint32(tmp[1]) << 8) | (uint32(tmp[2]) << 16) + b.Last = bh&1 != 0 + b.Type = blockType((bh >> 1) & 3) + // find size. + cSize := int(bh >> 3) + maxSize := maxCompressedBlockSizeAlloc + switch b.Type { + case blockTypeReserved: + return ErrReservedBlockType + case blockTypeRLE: + if cSize > maxCompressedBlockSize || cSize > int(b.WindowSize) { + if debugDecoder { + printf("rle block too big: csize:%d block: %+v\n", uint64(cSize), b) + } + return ErrWindowSizeExceeded + } + b.RLESize = uint32(cSize) + if b.lowMem { + maxSize = cSize + } + cSize = 1 + case blockTypeCompressed: + if debugDecoder { + println("Data size on stream:", cSize) + } + b.RLESize = 0 + maxSize = maxCompressedBlockSizeAlloc + if windowSize < maxCompressedBlockSize && b.lowMem { + maxSize = int(windowSize) + compressedBlockOverAlloc + } + if cSize > maxCompressedBlockSize || uint64(cSize) > b.WindowSize { + if debugDecoder { + printf("compressed block too big: csize:%d block: %+v\n", uint64(cSize), b) + } + return ErrCompressedSizeTooBig + } + // Empty compressed blocks must at least be 2 bytes + // for Literals_Block_Type and one for Sequences_Section_Header. + if cSize < 2 { + return ErrBlockTooSmall + } + case blockTypeRaw: + if cSize > maxCompressedBlockSize || cSize > int(b.WindowSize) { + if debugDecoder { + printf("rle block too big: csize:%d block: %+v\n", uint64(cSize), b) + } + return ErrWindowSizeExceeded + } + + b.RLESize = 0 + // We do not need a destination for raw blocks. + maxSize = -1 + default: + panic("Invalid block type") + } + + // Read block data. + if _, ok := br.(*byteBuf); !ok && cap(b.dataStorage) < cSize { + // byteBuf doesn't need a destination buffer. + if b.lowMem || cSize > maxCompressedBlockSize { + b.dataStorage = make([]byte, 0, cSize+compressedBlockOverAlloc) + } else { + b.dataStorage = make([]byte, 0, maxCompressedBlockSizeAlloc) + } + } + b.data, err = br.readBig(cSize, b.dataStorage) + if err != nil { + if debugDecoder { + println("Reading block:", err, "(", cSize, ")", len(b.data)) + printf("%T", br) + } + return err + } + if cap(b.dst) <= maxSize { + b.dst = make([]byte, 0, maxSize+1) + } + return nil +} + +// sendEOF will make the decoder send EOF on this frame. +func (b *blockDec) sendErr(err error) { + b.Last = true + b.Type = blockTypeReserved + b.err = err +} + +// Close will release resources. +// Closed blockDec cannot be reset. +func (b *blockDec) Close() { +} + +// decodeBuf +func (b *blockDec) decodeBuf(hist *history) error { + switch b.Type { + case blockTypeRLE: + if cap(b.dst) < int(b.RLESize) { + if b.lowMem { + b.dst = make([]byte, b.RLESize) + } else { + b.dst = make([]byte, maxCompressedBlockSize) + } + } + b.dst = b.dst[:b.RLESize] + v := b.data[0] + for i := range b.dst { + b.dst[i] = v + } + hist.appendKeep(b.dst) + return nil + case blockTypeRaw: + hist.appendKeep(b.data) + return nil + case blockTypeCompressed: + saved := b.dst + // Append directly to history + if hist.ignoreBuffer == 0 { + b.dst = hist.b + hist.b = nil + } else { + b.dst = b.dst[:0] + } + err := b.decodeCompressed(hist) + if debugDecoder { + println("Decompressed to total", len(b.dst), "bytes, hash:", xxhash.Sum64(b.dst), "error:", err) + } + if hist.ignoreBuffer == 0 { + hist.b = b.dst + b.dst = saved + } else { + hist.appendKeep(b.dst) + } + return err + case blockTypeReserved: + // Used for returning errors. + return b.err + default: + panic("Invalid block type") + } +} + +func (b *blockDec) decodeLiterals(in []byte, hist *history) (remain []byte, err error) { + // There must be at least one byte for Literals_Block_Type and one for Sequences_Section_Header + if len(in) < 2 { + return in, ErrBlockTooSmall + } + + litType := literalsBlockType(in[0] & 3) + var litRegenSize int + var litCompSize int + sizeFormat := (in[0] >> 2) & 3 + var fourStreams bool + var literals []byte + switch litType { + case literalsBlockRaw, literalsBlockRLE: + switch sizeFormat { + case 0, 2: + // Regenerated_Size uses 5 bits (0-31). Literals_Section_Header uses 1 byte. + litRegenSize = int(in[0] >> 3) + in = in[1:] + case 1: + // Regenerated_Size uses 12 bits (0-4095). Literals_Section_Header uses 2 bytes. + litRegenSize = int(in[0]>>4) + (int(in[1]) << 4) + in = in[2:] + case 3: + // Regenerated_Size uses 20 bits (0-1048575). Literals_Section_Header uses 3 bytes. + if len(in) < 3 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + litRegenSize = int(in[0]>>4) + (int(in[1]) << 4) + (int(in[2]) << 12) + in = in[3:] + } + case literalsBlockCompressed, literalsBlockTreeless: + switch sizeFormat { + case 0, 1: + // Both Regenerated_Size and Compressed_Size use 10 bits (0-1023). + if len(in) < 3 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + n := uint64(in[0]>>4) + (uint64(in[1]) << 4) + (uint64(in[2]) << 12) + litRegenSize = int(n & 1023) + litCompSize = int(n >> 10) + fourStreams = sizeFormat == 1 + in = in[3:] + case 2: + fourStreams = true + if len(in) < 4 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + n := uint64(in[0]>>4) + (uint64(in[1]) << 4) + (uint64(in[2]) << 12) + (uint64(in[3]) << 20) + litRegenSize = int(n & 16383) + litCompSize = int(n >> 14) + in = in[4:] + case 3: + fourStreams = true + if len(in) < 5 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + n := uint64(in[0]>>4) + (uint64(in[1]) << 4) + (uint64(in[2]) << 12) + (uint64(in[3]) << 20) + (uint64(in[4]) << 28) + litRegenSize = int(n & 262143) + litCompSize = int(n >> 18) + in = in[5:] + } + } + if debugDecoder { + println("literals type:", litType, "litRegenSize:", litRegenSize, "litCompSize:", litCompSize, "sizeFormat:", sizeFormat, "4X:", fourStreams) + } + if litRegenSize > int(b.WindowSize) || litRegenSize > maxCompressedBlockSize { + return in, ErrWindowSizeExceeded + } + + switch litType { + case literalsBlockRaw: + if len(in) < litRegenSize { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", litRegenSize) + return in, ErrBlockTooSmall + } + literals = in[:litRegenSize] + in = in[litRegenSize:] + //printf("Found %d uncompressed literals\n", litRegenSize) + case literalsBlockRLE: + if len(in) < 1 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", 1) + return in, ErrBlockTooSmall + } + if cap(b.literalBuf) < litRegenSize { + if b.lowMem { + b.literalBuf = make([]byte, litRegenSize, litRegenSize+compressedBlockOverAlloc) + } else { + b.literalBuf = make([]byte, litRegenSize, maxCompressedBlockSize+compressedBlockOverAlloc) + } + } + literals = b.literalBuf[:litRegenSize] + v := in[0] + for i := range literals { + literals[i] = v + } + in = in[1:] + if debugDecoder { + printf("Found %d RLE compressed literals\n", litRegenSize) + } + case literalsBlockTreeless: + if len(in) < litCompSize { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", litCompSize) + return in, ErrBlockTooSmall + } + // Store compressed literals, so we defer decoding until we get history. + literals = in[:litCompSize] + in = in[litCompSize:] + if debugDecoder { + printf("Found %d compressed literals\n", litCompSize) + } + huff := hist.huffTree + if huff == nil { + return in, errors.New("literal block was treeless, but no history was defined") + } + // Ensure we have space to store it. + if cap(b.literalBuf) < litRegenSize { + if b.lowMem { + b.literalBuf = make([]byte, 0, litRegenSize+compressedBlockOverAlloc) + } else { + b.literalBuf = make([]byte, 0, maxCompressedBlockSize+compressedBlockOverAlloc) + } + } + var err error + // Use our out buffer. + huff.MaxDecodedSize = litRegenSize + if fourStreams { + literals, err = huff.Decoder().Decompress4X(b.literalBuf[:0:litRegenSize], literals) + } else { + literals, err = huff.Decoder().Decompress1X(b.literalBuf[:0:litRegenSize], literals) + } + // Make sure we don't leak our literals buffer + if err != nil { + println("decompressing literals:", err) + return in, err + } + if len(literals) != litRegenSize { + return in, fmt.Errorf("literal output size mismatch want %d, got %d", litRegenSize, len(literals)) + } + + case literalsBlockCompressed: + if len(in) < litCompSize { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", litCompSize) + return in, ErrBlockTooSmall + } + literals = in[:litCompSize] + in = in[litCompSize:] + // Ensure we have space to store it. + if cap(b.literalBuf) < litRegenSize { + if b.lowMem { + b.literalBuf = make([]byte, 0, litRegenSize+compressedBlockOverAlloc) + } else { + b.literalBuf = make([]byte, 0, maxCompressedBlockSize+compressedBlockOverAlloc) + } + } + huff := hist.huffTree + if huff == nil || (hist.dict != nil && huff == hist.dict.litEnc) { + huff = huffDecoderPool.Get().(*huff0.Scratch) + if huff == nil { + huff = &huff0.Scratch{} + } + } + var err error + if debugDecoder { + println("huff table input:", len(literals), "CRC:", crc32.ChecksumIEEE(literals)) + } + huff, literals, err = huff0.ReadTable(literals, huff) + if err != nil { + println("reading huffman table:", err) + return in, err + } + hist.huffTree = huff + huff.MaxDecodedSize = litRegenSize + // Use our out buffer. + if fourStreams { + literals, err = huff.Decoder().Decompress4X(b.literalBuf[:0:litRegenSize], literals) + } else { + literals, err = huff.Decoder().Decompress1X(b.literalBuf[:0:litRegenSize], literals) + } + if err != nil { + println("decoding compressed literals:", err) + return in, err + } + // Make sure we don't leak our literals buffer + if len(literals) != litRegenSize { + return in, fmt.Errorf("literal output size mismatch want %d, got %d", litRegenSize, len(literals)) + } + // Re-cap to get extra size. + literals = b.literalBuf[:len(literals)] + if debugDecoder { + printf("Decompressed %d literals into %d bytes\n", litCompSize, litRegenSize) + } + } + hist.decoders.literals = literals + return in, nil +} + +// decodeCompressed will start decompressing a block. +func (b *blockDec) decodeCompressed(hist *history) error { + in := b.data + in, err := b.decodeLiterals(in, hist) + if err != nil { + return err + } + err = b.prepareSequences(in, hist) + if err != nil { + return err + } + if hist.decoders.nSeqs == 0 { + b.dst = append(b.dst, hist.decoders.literals...) + return nil + } + before := len(hist.decoders.out) + err = hist.decoders.decodeSync(hist.b[hist.ignoreBuffer:]) + if err != nil { + return err + } + if hist.decoders.maxSyncLen > 0 { + hist.decoders.maxSyncLen += uint64(before) + hist.decoders.maxSyncLen -= uint64(len(hist.decoders.out)) + } + b.dst = hist.decoders.out + hist.recentOffsets = hist.decoders.prevOffset + return nil +} + +func (b *blockDec) prepareSequences(in []byte, hist *history) (err error) { + if debugDecoder { + printf("prepareSequences: %d byte(s) input\n", len(in)) + } + // Decode Sequences + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#sequences-section + if len(in) < 1 { + return ErrBlockTooSmall + } + var nSeqs int + seqHeader := in[0] + switch { + case seqHeader < 128: + nSeqs = int(seqHeader) + in = in[1:] + case seqHeader < 255: + if len(in) < 2 { + return ErrBlockTooSmall + } + nSeqs = int(seqHeader-128)<<8 | int(in[1]) + in = in[2:] + case seqHeader == 255: + if len(in) < 3 { + return ErrBlockTooSmall + } + nSeqs = 0x7f00 + int(in[1]) + (int(in[2]) << 8) + in = in[3:] + } + if nSeqs == 0 && len(in) != 0 { + // When no sequences, there should not be any more data... + if debugDecoder { + printf("prepareSequences: 0 sequences, but %d byte(s) left on stream\n", len(in)) + } + return ErrUnexpectedBlockSize + } + + var seqs = &hist.decoders + seqs.nSeqs = nSeqs + if nSeqs > 0 { + if len(in) < 1 { + return ErrBlockTooSmall + } + br := byteReader{b: in, off: 0} + compMode := br.Uint8() + br.advance(1) + if debugDecoder { + printf("Compression modes: 0b%b", compMode) + } + if compMode&3 != 0 { + return errors.New("corrupt block: reserved bits not zero") + } + for i := uint(0); i < 3; i++ { + mode := seqCompMode((compMode >> (6 - i*2)) & 3) + if debugDecoder { + println("Table", tableIndex(i), "is", mode) + } + var seq *sequenceDec + switch tableIndex(i) { + case tableLiteralLengths: + seq = &seqs.litLengths + case tableOffsets: + seq = &seqs.offsets + case tableMatchLengths: + seq = &seqs.matchLengths + default: + panic("unknown table") + } + switch mode { + case compModePredefined: + if seq.fse != nil && !seq.fse.preDefined { + fseDecoderPool.Put(seq.fse) + } + seq.fse = &fsePredef[i] + case compModeRLE: + if br.remain() < 1 { + return ErrBlockTooSmall + } + v := br.Uint8() + br.advance(1) + if seq.fse == nil || seq.fse.preDefined { + seq.fse = fseDecoderPool.Get().(*fseDecoder) + } + symb, err := decSymbolValue(v, symbolTableX[i]) + if err != nil { + printf("RLE Transform table (%v) error: %v", tableIndex(i), err) + return err + } + seq.fse.setRLE(symb) + if debugDecoder { + printf("RLE set to 0x%x, code: %v", symb, v) + } + case compModeFSE: + println("Reading table for", tableIndex(i)) + if seq.fse == nil || seq.fse.preDefined { + seq.fse = fseDecoderPool.Get().(*fseDecoder) + } + err := seq.fse.readNCount(&br, uint16(maxTableSymbol[i])) + if err != nil { + println("Read table error:", err) + return err + } + err = seq.fse.transform(symbolTableX[i]) + if err != nil { + println("Transform table error:", err) + return err + } + if debugDecoder { + println("Read table ok", "symbolLen:", seq.fse.symbolLen) + } + case compModeRepeat: + seq.repeat = true + } + if br.overread() { + return io.ErrUnexpectedEOF + } + } + in = br.unread() + } + if debugDecoder { + println("Literals:", len(seqs.literals), "hash:", xxhash.Sum64(seqs.literals), "and", seqs.nSeqs, "sequences.") + } + + if nSeqs == 0 { + if len(b.sequence) > 0 { + b.sequence = b.sequence[:0] + } + return nil + } + br := seqs.br + if br == nil { + br = &bitReader{} + } + if err := br.init(in); err != nil { + return err + } + + if err := seqs.initialize(br, hist, b.dst); err != nil { + println("initializing sequences:", err) + return err + } + // Extract blocks... + if false && hist.dict == nil { + fatalErr := func(err error) { + if err != nil { + panic(err) + } + } + fn := fmt.Sprintf("n-%d-lits-%d-prev-%d-%d-%d-win-%d.blk", hist.decoders.nSeqs, len(hist.decoders.literals), hist.recentOffsets[0], hist.recentOffsets[1], hist.recentOffsets[2], hist.windowSize) + var buf bytes.Buffer + fatalErr(binary.Write(&buf, binary.LittleEndian, hist.decoders.litLengths.fse)) + fatalErr(binary.Write(&buf, binary.LittleEndian, hist.decoders.matchLengths.fse)) + fatalErr(binary.Write(&buf, binary.LittleEndian, hist.decoders.offsets.fse)) + buf.Write(in) + os.WriteFile(filepath.Join("testdata", "seqs", fn), buf.Bytes(), os.ModePerm) + } + + return nil +} + +func (b *blockDec) decodeSequences(hist *history) error { + if cap(b.sequence) < hist.decoders.nSeqs { + if b.lowMem { + b.sequence = make([]seqVals, 0, hist.decoders.nSeqs) + } else { + b.sequence = make([]seqVals, 0, 0x7F00+0xffff) + } + } + b.sequence = b.sequence[:hist.decoders.nSeqs] + if hist.decoders.nSeqs == 0 { + hist.decoders.seqSize = len(hist.decoders.literals) + return nil + } + hist.decoders.windowSize = hist.windowSize + hist.decoders.prevOffset = hist.recentOffsets + + err := hist.decoders.decode(b.sequence) + hist.recentOffsets = hist.decoders.prevOffset + return err +} + +func (b *blockDec) executeSequences(hist *history) error { + hbytes := hist.b + if len(hbytes) > hist.windowSize { + hbytes = hbytes[len(hbytes)-hist.windowSize:] + // We do not need history anymore. + if hist.dict != nil { + hist.dict.content = nil + } + } + hist.decoders.windowSize = hist.windowSize + hist.decoders.out = b.dst[:0] + err := hist.decoders.execute(b.sequence, hbytes) + if err != nil { + return err + } + return b.updateHistory(hist) +} + +func (b *blockDec) updateHistory(hist *history) error { + if len(b.data) > maxCompressedBlockSize { + return fmt.Errorf("compressed block size too large (%d)", len(b.data)) + } + // Set output and release references. + b.dst = hist.decoders.out + hist.recentOffsets = hist.decoders.prevOffset + + if b.Last { + // if last block we don't care about history. + println("Last block, no history returned") + hist.b = hist.b[:0] + return nil + } else { + hist.append(b.dst) + if debugDecoder { + println("Finished block with ", len(b.sequence), "sequences. Added", len(b.dst), "to history, now length", len(hist.b)) + } + } + hist.decoders.out, hist.decoders.literals = nil, nil + + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go b/examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go new file mode 100644 index 0000000..32a7f40 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go @@ -0,0 +1,909 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "math" + "math/bits" + + "github.com/klauspost/compress/huff0" +) + +type blockEnc struct { + size int + literals []byte + sequences []seq + coders seqCoders + litEnc *huff0.Scratch + dictLitEnc *huff0.Scratch + wr bitWriter + + extraLits int + output []byte + recentOffsets [3]uint32 + prevRecentOffsets [3]uint32 + + last bool + lowMem bool +} + +// init should be used once the block has been created. +// If called more than once, the effect is the same as calling reset. +func (b *blockEnc) init() { + if b.lowMem { + // 1K literals + if cap(b.literals) < 1<<10 { + b.literals = make([]byte, 0, 1<<10) + } + const defSeqs = 20 + if cap(b.sequences) < defSeqs { + b.sequences = make([]seq, 0, defSeqs) + } + // 1K + if cap(b.output) < 1<<10 { + b.output = make([]byte, 0, 1<<10) + } + } else { + if cap(b.literals) < maxCompressedBlockSize { + b.literals = make([]byte, 0, maxCompressedBlockSize) + } + const defSeqs = 2000 + if cap(b.sequences) < defSeqs { + b.sequences = make([]seq, 0, defSeqs) + } + if cap(b.output) < maxCompressedBlockSize { + b.output = make([]byte, 0, maxCompressedBlockSize) + } + } + + if b.coders.mlEnc == nil { + b.coders.mlEnc = &fseEncoder{} + b.coders.mlPrev = &fseEncoder{} + b.coders.ofEnc = &fseEncoder{} + b.coders.ofPrev = &fseEncoder{} + b.coders.llEnc = &fseEncoder{} + b.coders.llPrev = &fseEncoder{} + } + b.litEnc = &huff0.Scratch{WantLogLess: 4} + b.reset(nil) +} + +// initNewEncode can be used to reset offsets and encoders to the initial state. +func (b *blockEnc) initNewEncode() { + b.recentOffsets = [3]uint32{1, 4, 8} + b.litEnc.Reuse = huff0.ReusePolicyNone + b.coders.setPrev(nil, nil, nil) +} + +// reset will reset the block for a new encode, but in the same stream, +// meaning that state will be carried over, but the block content is reset. +// If a previous block is provided, the recent offsets are carried over. +func (b *blockEnc) reset(prev *blockEnc) { + b.extraLits = 0 + b.literals = b.literals[:0] + b.size = 0 + b.sequences = b.sequences[:0] + b.output = b.output[:0] + b.last = false + if prev != nil { + b.recentOffsets = prev.prevRecentOffsets + } + b.dictLitEnc = nil +} + +// reset will reset the block for a new encode, but in the same stream, +// meaning that state will be carried over, but the block content is reset. +// If a previous block is provided, the recent offsets are carried over. +func (b *blockEnc) swapEncoders(prev *blockEnc) { + b.coders.swap(&prev.coders) + b.litEnc, prev.litEnc = prev.litEnc, b.litEnc +} + +// blockHeader contains the information for a block header. +type blockHeader uint32 + +// setLast sets the 'last' indicator on a block. +func (h *blockHeader) setLast(b bool) { + if b { + *h = *h | 1 + } else { + const mask = (1 << 24) - 2 + *h = *h & mask + } +} + +// setSize will store the compressed size of a block. +func (h *blockHeader) setSize(v uint32) { + const mask = 7 + *h = (*h)&mask | blockHeader(v<<3) +} + +// setType sets the block type. +func (h *blockHeader) setType(t blockType) { + const mask = 1 | (((1 << 24) - 1) ^ 7) + *h = (*h & mask) | blockHeader(t<<1) +} + +// appendTo will append the block header to a slice. +func (h blockHeader) appendTo(b []byte) []byte { + return append(b, uint8(h), uint8(h>>8), uint8(h>>16)) +} + +// String returns a string representation of the block. +func (h blockHeader) String() string { + return fmt.Sprintf("Type: %d, Size: %d, Last:%t", (h>>1)&3, h>>3, h&1 == 1) +} + +// literalsHeader contains literals header information. +type literalsHeader uint64 + +// setType can be used to set the type of literal block. +func (h *literalsHeader) setType(t literalsBlockType) { + const mask = math.MaxUint64 - 3 + *h = (*h & mask) | literalsHeader(t) +} + +// setSize can be used to set a single size, for uncompressed and RLE content. +func (h *literalsHeader) setSize(regenLen int) { + inBits := bits.Len32(uint32(regenLen)) + // Only retain 2 bits + const mask = 3 + lh := uint64(*h & mask) + switch { + case inBits < 5: + lh |= (uint64(regenLen) << 3) | (1 << 60) + if debugEncoder { + got := int(lh>>3) & 0xff + if got != regenLen { + panic(fmt.Sprint("litRegenSize = ", regenLen, "(want) != ", got, "(got)")) + } + } + case inBits < 12: + lh |= (1 << 2) | (uint64(regenLen) << 4) | (2 << 60) + case inBits < 20: + lh |= (3 << 2) | (uint64(regenLen) << 4) | (3 << 60) + default: + panic(fmt.Errorf("internal error: block too big (%d)", regenLen)) + } + *h = literalsHeader(lh) +} + +// setSizes will set the size of a compressed literals section and the input length. +func (h *literalsHeader) setSizes(compLen, inLen int, single bool) { + compBits, inBits := bits.Len32(uint32(compLen)), bits.Len32(uint32(inLen)) + // Only retain 2 bits + const mask = 3 + lh := uint64(*h & mask) + switch { + case compBits <= 10 && inBits <= 10: + if !single { + lh |= 1 << 2 + } + lh |= (uint64(inLen) << 4) | (uint64(compLen) << (10 + 4)) | (3 << 60) + if debugEncoder { + const mmask = (1 << 24) - 1 + n := (lh >> 4) & mmask + if int(n&1023) != inLen { + panic(fmt.Sprint("regensize:", int(n&1023), "!=", inLen, inBits)) + } + if int(n>>10) != compLen { + panic(fmt.Sprint("compsize:", int(n>>10), "!=", compLen, compBits)) + } + } + case compBits <= 14 && inBits <= 14: + lh |= (2 << 2) | (uint64(inLen) << 4) | (uint64(compLen) << (14 + 4)) | (4 << 60) + if single { + panic("single stream used with more than 10 bits length.") + } + case compBits <= 18 && inBits <= 18: + lh |= (3 << 2) | (uint64(inLen) << 4) | (uint64(compLen) << (18 + 4)) | (5 << 60) + if single { + panic("single stream used with more than 10 bits length.") + } + default: + panic("internal error: block too big") + } + *h = literalsHeader(lh) +} + +// appendTo will append the literals header to a byte slice. +func (h literalsHeader) appendTo(b []byte) []byte { + size := uint8(h >> 60) + switch size { + case 1: + b = append(b, uint8(h)) + case 2: + b = append(b, uint8(h), uint8(h>>8)) + case 3: + b = append(b, uint8(h), uint8(h>>8), uint8(h>>16)) + case 4: + b = append(b, uint8(h), uint8(h>>8), uint8(h>>16), uint8(h>>24)) + case 5: + b = append(b, uint8(h), uint8(h>>8), uint8(h>>16), uint8(h>>24), uint8(h>>32)) + default: + panic(fmt.Errorf("internal error: literalsHeader has invalid size (%d)", size)) + } + return b +} + +// size returns the output size with currently set values. +func (h literalsHeader) size() int { + return int(h >> 60) +} + +func (h literalsHeader) String() string { + return fmt.Sprintf("Type: %d, SizeFormat: %d, Size: 0x%d, Bytes:%d", literalsBlockType(h&3), (h>>2)&3, h&((1<<60)-1)>>4, h>>60) +} + +// pushOffsets will push the recent offsets to the backup store. +func (b *blockEnc) pushOffsets() { + b.prevRecentOffsets = b.recentOffsets +} + +// pushOffsets will push the recent offsets to the backup store. +func (b *blockEnc) popOffsets() { + b.recentOffsets = b.prevRecentOffsets +} + +// matchOffset will adjust recent offsets and return the adjusted one, +// if it matches a previous offset. +func (b *blockEnc) matchOffset(offset, lits uint32) uint32 { + // Check if offset is one of the recent offsets. + // Adjusts the output offset accordingly. + // Gives a tiny bit of compression, typically around 1%. + if true { + if lits > 0 { + switch offset { + case b.recentOffsets[0]: + offset = 1 + case b.recentOffsets[1]: + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 2 + case b.recentOffsets[2]: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 3 + default: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset += 3 + } + } else { + switch offset { + case b.recentOffsets[1]: + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 1 + case b.recentOffsets[2]: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 2 + case b.recentOffsets[0] - 1: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 3 + default: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset += 3 + } + } + } else { + offset += 3 + } + return offset +} + +// encodeRaw can be used to set the output to a raw representation of supplied bytes. +func (b *blockEnc) encodeRaw(a []byte) { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(uint32(len(a))) + bh.setType(blockTypeRaw) + b.output = bh.appendTo(b.output[:0]) + b.output = append(b.output, a...) + if debugEncoder { + println("Adding RAW block, length", len(a), "last:", b.last) + } +} + +// encodeRaw can be used to set the output to a raw representation of supplied bytes. +func (b *blockEnc) encodeRawTo(dst, src []byte) []byte { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(uint32(len(src))) + bh.setType(blockTypeRaw) + dst = bh.appendTo(dst) + dst = append(dst, src...) + if debugEncoder { + println("Adding RAW block, length", len(src), "last:", b.last) + } + return dst +} + +// encodeLits can be used if the block is only litLen. +func (b *blockEnc) encodeLits(lits []byte, raw bool) error { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(uint32(len(lits))) + + // Don't compress extremely small blocks + if len(lits) < 8 || (len(lits) < 32 && b.dictLitEnc == nil) || raw { + if debugEncoder { + println("Adding RAW block, length", len(lits), "last:", b.last) + } + bh.setType(blockTypeRaw) + b.output = bh.appendTo(b.output) + b.output = append(b.output, lits...) + return nil + } + + var ( + out []byte + reUsed, single bool + err error + ) + if b.dictLitEnc != nil { + b.litEnc.TransferCTable(b.dictLitEnc) + b.litEnc.Reuse = huff0.ReusePolicyAllow + b.dictLitEnc = nil + } + if len(lits) >= 1024 { + // Use 4 Streams. + out, reUsed, err = huff0.Compress4X(lits, b.litEnc) + } else if len(lits) > 16 { + // Use 1 stream + single = true + out, reUsed, err = huff0.Compress1X(lits, b.litEnc) + } else { + err = huff0.ErrIncompressible + } + if err == nil && len(out)+5 > len(lits) { + // If we are close, we may still be worse or equal to raw. + var lh literalsHeader + lh.setSizes(len(out), len(lits), single) + if len(out)+lh.size() >= len(lits) { + err = huff0.ErrIncompressible + } + } + switch err { + case huff0.ErrIncompressible: + if debugEncoder { + println("Adding RAW block, length", len(lits), "last:", b.last) + } + bh.setType(blockTypeRaw) + b.output = bh.appendTo(b.output) + b.output = append(b.output, lits...) + return nil + case huff0.ErrUseRLE: + if debugEncoder { + println("Adding RLE block, length", len(lits)) + } + bh.setType(blockTypeRLE) + b.output = bh.appendTo(b.output) + b.output = append(b.output, lits[0]) + return nil + case nil: + default: + return err + } + // Compressed... + // Now, allow reuse + b.litEnc.Reuse = huff0.ReusePolicyAllow + bh.setType(blockTypeCompressed) + var lh literalsHeader + if reUsed { + if debugEncoder { + println("Reused tree, compressed to", len(out)) + } + lh.setType(literalsBlockTreeless) + } else { + if debugEncoder { + println("New tree, compressed to", len(out), "tree size:", len(b.litEnc.OutTable)) + } + lh.setType(literalsBlockCompressed) + } + // Set sizes + lh.setSizes(len(out), len(lits), single) + bh.setSize(uint32(len(out) + lh.size() + 1)) + + // Write block headers. + b.output = bh.appendTo(b.output) + b.output = lh.appendTo(b.output) + // Add compressed data. + b.output = append(b.output, out...) + // No sequences. + b.output = append(b.output, 0) + return nil +} + +// encodeRLE will encode an RLE block. +func (b *blockEnc) encodeRLE(val byte, length uint32) { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(length) + bh.setType(blockTypeRLE) + b.output = bh.appendTo(b.output) + b.output = append(b.output, val) +} + +// fuzzFseEncoder can be used to fuzz the FSE encoder. +func fuzzFseEncoder(data []byte) int { + if len(data) > maxSequences || len(data) < 2 { + return 0 + } + enc := fseEncoder{} + hist := enc.Histogram() + maxSym := uint8(0) + for i, v := range data { + v = v & 63 + data[i] = v + hist[v]++ + if v > maxSym { + maxSym = v + } + } + if maxSym == 0 { + // All 0 + return 0 + } + maxCount := func(a []uint32) int { + var max uint32 + for _, v := range a { + if v > max { + max = v + } + } + return int(max) + } + cnt := maxCount(hist[:maxSym]) + if cnt == len(data) { + // RLE + return 0 + } + enc.HistogramFinished(maxSym, cnt) + err := enc.normalizeCount(len(data)) + if err != nil { + return 0 + } + _, err = enc.writeCount(nil) + if err != nil { + panic(err) + } + return 1 +} + +// encode will encode the block and append the output in b.output. +// Previous offset codes must be pushed if more blocks are expected. +func (b *blockEnc) encode(org []byte, raw, rawAllLits bool) error { + if len(b.sequences) == 0 { + return b.encodeLits(b.literals, rawAllLits) + } + if len(b.sequences) == 1 && len(org) > 0 && len(b.literals) <= 1 { + // Check common RLE cases. + seq := b.sequences[0] + if seq.litLen == uint32(len(b.literals)) && seq.offset-3 == 1 { + // Offset == 1 and 0 or 1 literals. + b.encodeRLE(org[0], b.sequences[0].matchLen+zstdMinMatch+seq.litLen) + return nil + } + } + + // We want some difference to at least account for the headers. + saved := b.size - len(b.literals) - (b.size >> 6) + if saved < 16 { + if org == nil { + return errIncompressible + } + b.popOffsets() + return b.encodeLits(org, rawAllLits) + } + + var bh blockHeader + var lh literalsHeader + bh.setLast(b.last) + bh.setType(blockTypeCompressed) + // Store offset of the block header. Needed when we know the size. + bhOffset := len(b.output) + b.output = bh.appendTo(b.output) + + var ( + out []byte + reUsed, single bool + err error + ) + if b.dictLitEnc != nil { + b.litEnc.TransferCTable(b.dictLitEnc) + b.litEnc.Reuse = huff0.ReusePolicyAllow + b.dictLitEnc = nil + } + if len(b.literals) >= 1024 && !raw { + // Use 4 Streams. + out, reUsed, err = huff0.Compress4X(b.literals, b.litEnc) + } else if len(b.literals) > 16 && !raw { + // Use 1 stream + single = true + out, reUsed, err = huff0.Compress1X(b.literals, b.litEnc) + } else { + err = huff0.ErrIncompressible + } + + if err == nil && len(out)+5 > len(b.literals) { + // If we are close, we may still be worse or equal to raw. + var lh literalsHeader + lh.setSize(len(b.literals)) + szRaw := lh.size() + lh.setSizes(len(out), len(b.literals), single) + szComp := lh.size() + if len(out)+szComp >= len(b.literals)+szRaw { + err = huff0.ErrIncompressible + } + } + switch err { + case huff0.ErrIncompressible: + lh.setType(literalsBlockRaw) + lh.setSize(len(b.literals)) + b.output = lh.appendTo(b.output) + b.output = append(b.output, b.literals...) + if debugEncoder { + println("Adding literals RAW, length", len(b.literals)) + } + case huff0.ErrUseRLE: + lh.setType(literalsBlockRLE) + lh.setSize(len(b.literals)) + b.output = lh.appendTo(b.output) + b.output = append(b.output, b.literals[0]) + if debugEncoder { + println("Adding literals RLE") + } + case nil: + // Compressed litLen... + if reUsed { + if debugEncoder { + println("reused tree") + } + lh.setType(literalsBlockTreeless) + } else { + if debugEncoder { + println("new tree, size:", len(b.litEnc.OutTable)) + } + lh.setType(literalsBlockCompressed) + if debugEncoder { + _, _, err := huff0.ReadTable(out, nil) + if err != nil { + panic(err) + } + } + } + lh.setSizes(len(out), len(b.literals), single) + if debugEncoder { + printf("Compressed %d literals to %d bytes", len(b.literals), len(out)) + println("Adding literal header:", lh) + } + b.output = lh.appendTo(b.output) + b.output = append(b.output, out...) + b.litEnc.Reuse = huff0.ReusePolicyAllow + if debugEncoder { + println("Adding literals compressed") + } + default: + if debugEncoder { + println("Adding literals ERROR:", err) + } + return err + } + // Sequence compression + + // Write the number of sequences + switch { + case len(b.sequences) < 128: + b.output = append(b.output, uint8(len(b.sequences))) + case len(b.sequences) < 0x7f00: // TODO: this could be wrong + n := len(b.sequences) + b.output = append(b.output, 128+uint8(n>>8), uint8(n)) + default: + n := len(b.sequences) - 0x7f00 + b.output = append(b.output, 255, uint8(n), uint8(n>>8)) + } + if debugEncoder { + println("Encoding", len(b.sequences), "sequences") + } + b.genCodes() + llEnc := b.coders.llEnc + ofEnc := b.coders.ofEnc + mlEnc := b.coders.mlEnc + err = llEnc.normalizeCount(len(b.sequences)) + if err != nil { + return err + } + err = ofEnc.normalizeCount(len(b.sequences)) + if err != nil { + return err + } + err = mlEnc.normalizeCount(len(b.sequences)) + if err != nil { + return err + } + + // Choose the best compression mode for each type. + // Will evaluate the new vs predefined and previous. + chooseComp := func(cur, prev, preDef *fseEncoder) (*fseEncoder, seqCompMode) { + // See if predefined/previous is better + hist := cur.count[:cur.symbolLen] + nSize := cur.approxSize(hist) + cur.maxHeaderSize() + predefSize := preDef.approxSize(hist) + prevSize := prev.approxSize(hist) + + // Add a small penalty for new encoders. + // Don't bother with extremely small (<2 byte gains). + nSize = nSize + (nSize+2*8*16)>>4 + switch { + case predefSize <= prevSize && predefSize <= nSize || forcePreDef: + if debugEncoder { + println("Using predefined", predefSize>>3, "<=", nSize>>3) + } + return preDef, compModePredefined + case prevSize <= nSize: + if debugEncoder { + println("Using previous", prevSize>>3, "<=", nSize>>3) + } + return prev, compModeRepeat + default: + if debugEncoder { + println("Using new, predef", predefSize>>3, ". previous:", prevSize>>3, ">", nSize>>3, "header max:", cur.maxHeaderSize()>>3, "bytes") + println("tl:", cur.actualTableLog, "symbolLen:", cur.symbolLen, "norm:", cur.norm[:cur.symbolLen], "hist", cur.count[:cur.symbolLen]) + } + return cur, compModeFSE + } + } + + // Write compression mode + var mode uint8 + if llEnc.useRLE { + mode |= uint8(compModeRLE) << 6 + llEnc.setRLE(b.sequences[0].llCode) + if debugEncoder { + println("llEnc.useRLE") + } + } else { + var m seqCompMode + llEnc, m = chooseComp(llEnc, b.coders.llPrev, &fsePredefEnc[tableLiteralLengths]) + mode |= uint8(m) << 6 + } + if ofEnc.useRLE { + mode |= uint8(compModeRLE) << 4 + ofEnc.setRLE(b.sequences[0].ofCode) + if debugEncoder { + println("ofEnc.useRLE") + } + } else { + var m seqCompMode + ofEnc, m = chooseComp(ofEnc, b.coders.ofPrev, &fsePredefEnc[tableOffsets]) + mode |= uint8(m) << 4 + } + + if mlEnc.useRLE { + mode |= uint8(compModeRLE) << 2 + mlEnc.setRLE(b.sequences[0].mlCode) + if debugEncoder { + println("mlEnc.useRLE, code: ", b.sequences[0].mlCode, "value", b.sequences[0].matchLen) + } + } else { + var m seqCompMode + mlEnc, m = chooseComp(mlEnc, b.coders.mlPrev, &fsePredefEnc[tableMatchLengths]) + mode |= uint8(m) << 2 + } + b.output = append(b.output, mode) + if debugEncoder { + printf("Compression modes: 0b%b", mode) + } + b.output, err = llEnc.writeCount(b.output) + if err != nil { + return err + } + start := len(b.output) + b.output, err = ofEnc.writeCount(b.output) + if err != nil { + return err + } + if false { + println("block:", b.output[start:], "tablelog", ofEnc.actualTableLog, "maxcount:", ofEnc.maxCount) + fmt.Printf("selected TableLog: %d, Symbol length: %d\n", ofEnc.actualTableLog, ofEnc.symbolLen) + for i, v := range ofEnc.norm[:ofEnc.symbolLen] { + fmt.Printf("%3d: %5d -> %4d \n", i, ofEnc.count[i], v) + } + } + b.output, err = mlEnc.writeCount(b.output) + if err != nil { + return err + } + + // Maybe in block? + wr := &b.wr + wr.reset(b.output) + + var ll, of, ml cState + + // Current sequence + seq := len(b.sequences) - 1 + s := b.sequences[seq] + llEnc.setBits(llBitsTable[:]) + mlEnc.setBits(mlBitsTable[:]) + ofEnc.setBits(nil) + + llTT, ofTT, mlTT := llEnc.ct.symbolTT[:256], ofEnc.ct.symbolTT[:256], mlEnc.ct.symbolTT[:256] + + // We have 3 bounds checks here (and in the loop). + // Since we are iterating backwards it is kinda hard to avoid. + llB, ofB, mlB := llTT[s.llCode], ofTT[s.ofCode], mlTT[s.mlCode] + ll.init(wr, &llEnc.ct, llB) + of.init(wr, &ofEnc.ct, ofB) + wr.flush32() + ml.init(wr, &mlEnc.ct, mlB) + + // Each of these lookups also generates a bounds check. + wr.addBits32NC(s.litLen, llB.outBits) + wr.addBits32NC(s.matchLen, mlB.outBits) + wr.flush32() + wr.addBits32NC(s.offset, ofB.outBits) + if debugSequences { + println("Encoded seq", seq, s, "codes:", s.llCode, s.mlCode, s.ofCode, "states:", ll.state, ml.state, of.state, "bits:", llB, mlB, ofB) + } + seq-- + // Store sequences in reverse... + for seq >= 0 { + s = b.sequences[seq] + + ofB := ofTT[s.ofCode] + wr.flush32() // tablelog max is below 8 for each, so it will fill max 24 bits. + //of.encode(ofB) + nbBitsOut := (uint32(of.state) + ofB.deltaNbBits) >> 16 + dstState := int32(of.state>>(nbBitsOut&15)) + int32(ofB.deltaFindState) + wr.addBits16NC(of.state, uint8(nbBitsOut)) + of.state = of.stateTable[dstState] + + // Accumulate extra bits. + outBits := ofB.outBits & 31 + extraBits := uint64(s.offset & bitMask32[outBits]) + extraBitsN := outBits + + mlB := mlTT[s.mlCode] + //ml.encode(mlB) + nbBitsOut = (uint32(ml.state) + mlB.deltaNbBits) >> 16 + dstState = int32(ml.state>>(nbBitsOut&15)) + int32(mlB.deltaFindState) + wr.addBits16NC(ml.state, uint8(nbBitsOut)) + ml.state = ml.stateTable[dstState] + + outBits = mlB.outBits & 31 + extraBits = extraBits<> 16 + dstState = int32(ll.state>>(nbBitsOut&15)) + int32(llB.deltaFindState) + wr.addBits16NC(ll.state, uint8(nbBitsOut)) + ll.state = ll.stateTable[dstState] + + outBits = llB.outBits & 31 + extraBits = extraBits<= b.size { + // Discard and encode as raw block. + b.output = b.encodeRawTo(b.output[:bhOffset], org) + b.popOffsets() + b.litEnc.Reuse = huff0.ReusePolicyNone + return nil + } + + // Size is output minus block header. + bh.setSize(uint32(len(b.output)-bhOffset) - 3) + if debugEncoder { + println("Rewriting block header", bh) + } + _ = bh.appendTo(b.output[bhOffset:bhOffset]) + b.coders.setPrev(llEnc, mlEnc, ofEnc) + return nil +} + +var errIncompressible = errors.New("incompressible") + +func (b *blockEnc) genCodes() { + if len(b.sequences) == 0 { + // nothing to do + return + } + if len(b.sequences) > math.MaxUint16 { + panic("can only encode up to 64K sequences") + } + // No bounds checks after here: + llH := b.coders.llEnc.Histogram() + ofH := b.coders.ofEnc.Histogram() + mlH := b.coders.mlEnc.Histogram() + for i := range llH { + llH[i] = 0 + } + for i := range ofH { + ofH[i] = 0 + } + for i := range mlH { + mlH[i] = 0 + } + + var llMax, ofMax, mlMax uint8 + for i := range b.sequences { + seq := &b.sequences[i] + v := llCode(seq.litLen) + seq.llCode = v + llH[v]++ + if v > llMax { + llMax = v + } + + v = ofCode(seq.offset) + seq.ofCode = v + ofH[v]++ + if v > ofMax { + ofMax = v + } + + v = mlCode(seq.matchLen) + seq.mlCode = v + mlH[v]++ + if v > mlMax { + mlMax = v + if debugAsserts && mlMax > maxMatchLengthSymbol { + panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d), matchlen: %d", mlMax, seq.matchLen)) + } + } + } + maxCount := func(a []uint32) int { + var max uint32 + for _, v := range a { + if v > max { + max = v + } + } + return int(max) + } + if debugAsserts && mlMax > maxMatchLengthSymbol { + panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d)", mlMax)) + } + if debugAsserts && ofMax > maxOffsetBits { + panic(fmt.Errorf("ofMax > maxOffsetBits (%d)", ofMax)) + } + if debugAsserts && llMax > maxLiteralLengthSymbol { + panic(fmt.Errorf("llMax > maxLiteralLengthSymbol (%d)", llMax)) + } + + b.coders.mlEnc.HistogramFinished(mlMax, maxCount(mlH[:mlMax+1])) + b.coders.ofEnc.HistogramFinished(ofMax, maxCount(ofH[:ofMax+1])) + b.coders.llEnc.HistogramFinished(llMax, maxCount(llH[:llMax+1])) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go b/examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go new file mode 100644 index 0000000..01a01e4 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go @@ -0,0 +1,85 @@ +// Code generated by "stringer -type=blockType,literalsBlockType,seqCompMode,tableIndex"; DO NOT EDIT. + +package zstd + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[blockTypeRaw-0] + _ = x[blockTypeRLE-1] + _ = x[blockTypeCompressed-2] + _ = x[blockTypeReserved-3] +} + +const _blockType_name = "blockTypeRawblockTypeRLEblockTypeCompressedblockTypeReserved" + +var _blockType_index = [...]uint8{0, 12, 24, 43, 60} + +func (i blockType) String() string { + if i >= blockType(len(_blockType_index)-1) { + return "blockType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _blockType_name[_blockType_index[i]:_blockType_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[literalsBlockRaw-0] + _ = x[literalsBlockRLE-1] + _ = x[literalsBlockCompressed-2] + _ = x[literalsBlockTreeless-3] +} + +const _literalsBlockType_name = "literalsBlockRawliteralsBlockRLEliteralsBlockCompressedliteralsBlockTreeless" + +var _literalsBlockType_index = [...]uint8{0, 16, 32, 55, 76} + +func (i literalsBlockType) String() string { + if i >= literalsBlockType(len(_literalsBlockType_index)-1) { + return "literalsBlockType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _literalsBlockType_name[_literalsBlockType_index[i]:_literalsBlockType_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[compModePredefined-0] + _ = x[compModeRLE-1] + _ = x[compModeFSE-2] + _ = x[compModeRepeat-3] +} + +const _seqCompMode_name = "compModePredefinedcompModeRLEcompModeFSEcompModeRepeat" + +var _seqCompMode_index = [...]uint8{0, 18, 29, 40, 54} + +func (i seqCompMode) String() string { + if i >= seqCompMode(len(_seqCompMode_index)-1) { + return "seqCompMode(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _seqCompMode_name[_seqCompMode_index[i]:_seqCompMode_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[tableLiteralLengths-0] + _ = x[tableOffsets-1] + _ = x[tableMatchLengths-2] +} + +const _tableIndex_name = "tableLiteralLengthstableOffsetstableMatchLengths" + +var _tableIndex_index = [...]uint8{0, 19, 31, 48} + +func (i tableIndex) String() string { + if i >= tableIndex(len(_tableIndex_index)-1) { + return "tableIndex(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _tableIndex_name[_tableIndex_index[i]:_tableIndex_index[i+1]] +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go new file mode 100644 index 0000000..55a3885 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go @@ -0,0 +1,131 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "fmt" + "io" +) + +type byteBuffer interface { + // Read up to 8 bytes. + // Returns io.ErrUnexpectedEOF if this cannot be satisfied. + readSmall(n int) ([]byte, error) + + // Read >8 bytes. + // MAY use the destination slice. + readBig(n int, dst []byte) ([]byte, error) + + // Read a single byte. + readByte() (byte, error) + + // Skip n bytes. + skipN(n int64) error +} + +// in-memory buffer +type byteBuf []byte + +func (b *byteBuf) readSmall(n int) ([]byte, error) { + if debugAsserts && n > 8 { + panic(fmt.Errorf("small read > 8 (%d). use readBig", n)) + } + bb := *b + if len(bb) < n { + return nil, io.ErrUnexpectedEOF + } + r := bb[:n] + *b = bb[n:] + return r, nil +} + +func (b *byteBuf) readBig(n int, dst []byte) ([]byte, error) { + bb := *b + if len(bb) < n { + return nil, io.ErrUnexpectedEOF + } + r := bb[:n] + *b = bb[n:] + return r, nil +} + +func (b *byteBuf) readByte() (byte, error) { + bb := *b + if len(bb) < 1 { + return 0, io.ErrUnexpectedEOF + } + r := bb[0] + *b = bb[1:] + return r, nil +} + +func (b *byteBuf) skipN(n int64) error { + bb := *b + if n < 0 { + return fmt.Errorf("negative skip (%d) requested", n) + } + if int64(len(bb)) < n { + return io.ErrUnexpectedEOF + } + *b = bb[n:] + return nil +} + +// wrapper around a reader. +type readerWrapper struct { + r io.Reader + tmp [8]byte +} + +func (r *readerWrapper) readSmall(n int) ([]byte, error) { + if debugAsserts && n > 8 { + panic(fmt.Errorf("small read > 8 (%d). use readBig", n)) + } + n2, err := io.ReadFull(r.r, r.tmp[:n]) + // We only really care about the actual bytes read. + if err != nil { + if err == io.EOF { + return nil, io.ErrUnexpectedEOF + } + if debugDecoder { + println("readSmall: got", n2, "want", n, "err", err) + } + return nil, err + } + return r.tmp[:n], nil +} + +func (r *readerWrapper) readBig(n int, dst []byte) ([]byte, error) { + if cap(dst) < n { + dst = make([]byte, n) + } + n2, err := io.ReadFull(r.r, dst[:n]) + if err == io.EOF && n > 0 { + err = io.ErrUnexpectedEOF + } + return dst[:n2], err +} + +func (r *readerWrapper) readByte() (byte, error) { + n2, err := io.ReadFull(r.r, r.tmp[:1]) + if err != nil { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + return 0, err + } + if n2 != 1 { + return 0, io.ErrUnexpectedEOF + } + return r.tmp[0], nil +} + +func (r *readerWrapper) skipN(n int64) error { + n2, err := io.CopyN(io.Discard, r.r, n) + if n2 != n { + err = io.ErrUnexpectedEOF + } + return err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go new file mode 100644 index 0000000..0e59a24 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go @@ -0,0 +1,82 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +// byteReader provides a byte reader that reads +// little endian values from a byte stream. +// The input stream is manually advanced. +// The reader performs no bounds checks. +type byteReader struct { + b []byte + off int +} + +// advance the stream b n bytes. +func (b *byteReader) advance(n uint) { + b.off += int(n) +} + +// overread returns whether we have advanced too far. +func (b *byteReader) overread() bool { + return b.off > len(b.b) +} + +// Int32 returns a little endian int32 starting at current offset. +func (b byteReader) Int32() int32 { + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := int32(b2[3]) + v2 := int32(b2[2]) + v1 := int32(b2[1]) + v0 := int32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// Uint8 returns the next byte +func (b *byteReader) Uint8() uint8 { + v := b.b[b.off] + return v +} + +// Uint32 returns a little endian uint32 starting at current offset. +func (b byteReader) Uint32() uint32 { + if r := b.remain(); r < 4 { + // Very rare + v := uint32(0) + for i := 1; i <= r; i++ { + v = (v << 8) | uint32(b.b[len(b.b)-i]) + } + return v + } + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := uint32(b2[3]) + v2 := uint32(b2[2]) + v1 := uint32(b2[1]) + v0 := uint32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// Uint32NC returns a little endian uint32 starting at current offset. +// The caller must be sure if there are at least 4 bytes left. +func (b byteReader) Uint32NC() uint32 { + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := uint32(b2[3]) + v2 := uint32(b2[2]) + v1 := uint32(b2[1]) + v0 := uint32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// unread returns the unread portion of the input. +func (b byteReader) unread() []byte { + return b.b[b.off:] +} + +// remain will return the number of bytes remaining. +func (b byteReader) remain() int { + return len(b.b) - b.off +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go b/examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go new file mode 100644 index 0000000..6a5a298 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go @@ -0,0 +1,261 @@ +// Copyright 2020+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +import ( + "encoding/binary" + "errors" + "io" +) + +// HeaderMaxSize is the maximum size of a Frame and Block Header. +// If less is sent to Header.Decode it *may* still contain enough information. +const HeaderMaxSize = 14 + 3 + +// Header contains information about the first frame and block within that. +type Header struct { + // SingleSegment specifies whether the data is to be decompressed into a + // single contiguous memory segment. + // It implies that WindowSize is invalid and that FrameContentSize is valid. + SingleSegment bool + + // WindowSize is the window of data to keep while decoding. + // Will only be set if SingleSegment is false. + WindowSize uint64 + + // Dictionary ID. + // If 0, no dictionary. + DictionaryID uint32 + + // HasFCS specifies whether FrameContentSize has a valid value. + HasFCS bool + + // FrameContentSize is the expected uncompressed size of the entire frame. + FrameContentSize uint64 + + // Skippable will be true if the frame is meant to be skipped. + // This implies that FirstBlock.OK is false. + Skippable bool + + // SkippableID is the user-specific ID for the skippable frame. + // Valid values are between 0 to 15, inclusive. + SkippableID int + + // SkippableSize is the length of the user data to skip following + // the header. + SkippableSize uint32 + + // HeaderSize is the raw size of the frame header. + // + // For normal frames, it includes the size of the magic number and + // the size of the header (per section 3.1.1.1). + // It does not include the size for any data blocks (section 3.1.1.2) nor + // the size for the trailing content checksum. + // + // For skippable frames, this counts the size of the magic number + // along with the size of the size field of the payload. + // It does not include the size of the skippable payload itself. + // The total frame size is the HeaderSize plus the SkippableSize. + HeaderSize int + + // First block information. + FirstBlock struct { + // OK will be set if first block could be decoded. + OK bool + + // Is this the last block of a frame? + Last bool + + // Is the data compressed? + // If true CompressedSize will be populated. + // Unfortunately DecompressedSize cannot be determined + // without decoding the blocks. + Compressed bool + + // DecompressedSize is the expected decompressed size of the block. + // Will be 0 if it cannot be determined. + DecompressedSize int + + // CompressedSize of the data in the block. + // Does not include the block header. + // Will be equal to DecompressedSize if not Compressed. + CompressedSize int + } + + // If set there is a checksum present for the block content. + // The checksum field at the end is always 4 bytes long. + HasCheckSum bool +} + +// Decode the header from the beginning of the stream. +// This will decode the frame header and the first block header if enough bytes are provided. +// It is recommended to provide at least HeaderMaxSize bytes. +// If the frame header cannot be read an error will be returned. +// If there isn't enough input, io.ErrUnexpectedEOF is returned. +// The FirstBlock.OK will indicate if enough information was available to decode the first block header. +func (h *Header) Decode(in []byte) error { + _, err := h.DecodeAndStrip(in) + return err +} + +// DecodeAndStrip will decode the header from the beginning of the stream +// and on success return the remaining bytes. +// This will decode the frame header and the first block header if enough bytes are provided. +// It is recommended to provide at least HeaderMaxSize bytes. +// If the frame header cannot be read an error will be returned. +// If there isn't enough input, io.ErrUnexpectedEOF is returned. +// The FirstBlock.OK will indicate if enough information was available to decode the first block header. +func (h *Header) DecodeAndStrip(in []byte) (remain []byte, err error) { + *h = Header{} + if len(in) < 4 { + return nil, io.ErrUnexpectedEOF + } + h.HeaderSize += 4 + b, in := in[:4], in[4:] + if string(b) != frameMagic { + if string(b[1:4]) != skippableFrameMagic || b[0]&0xf0 != 0x50 { + return nil, ErrMagicMismatch + } + if len(in) < 4 { + return nil, io.ErrUnexpectedEOF + } + h.HeaderSize += 4 + h.Skippable = true + h.SkippableID = int(b[0] & 0xf) + h.SkippableSize = binary.LittleEndian.Uint32(in) + return in[4:], nil + } + + // Read Window_Descriptor + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#window_descriptor + if len(in) < 1 { + return nil, io.ErrUnexpectedEOF + } + fhd, in := in[0], in[1:] + h.HeaderSize++ + h.SingleSegment = fhd&(1<<5) != 0 + h.HasCheckSum = fhd&(1<<2) != 0 + if fhd&(1<<3) != 0 { + return nil, errors.New("reserved bit set on frame header") + } + + if !h.SingleSegment { + if len(in) < 1 { + return nil, io.ErrUnexpectedEOF + } + var wd byte + wd, in = in[0], in[1:] + h.HeaderSize++ + windowLog := 10 + (wd >> 3) + windowBase := uint64(1) << windowLog + windowAdd := (windowBase / 8) * uint64(wd&0x7) + h.WindowSize = windowBase + windowAdd + } + + // Read Dictionary_ID + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary_id + if size := fhd & 3; size != 0 { + if size == 3 { + size = 4 + } + if len(in) < int(size) { + return nil, io.ErrUnexpectedEOF + } + b, in = in[:size], in[size:] + h.HeaderSize += int(size) + switch len(b) { + case 1: + h.DictionaryID = uint32(b[0]) + case 2: + h.DictionaryID = uint32(b[0]) | (uint32(b[1]) << 8) + case 4: + h.DictionaryID = uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + } + } + + // Read Frame_Content_Size + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frame_content_size + var fcsSize int + v := fhd >> 6 + switch v { + case 0: + if h.SingleSegment { + fcsSize = 1 + } + default: + fcsSize = 1 << v + } + + if fcsSize > 0 { + h.HasFCS = true + if len(in) < fcsSize { + return nil, io.ErrUnexpectedEOF + } + b, in = in[:fcsSize], in[fcsSize:] + h.HeaderSize += int(fcsSize) + switch len(b) { + case 1: + h.FrameContentSize = uint64(b[0]) + case 2: + // When FCS_Field_Size is 2, the offset of 256 is added. + h.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) + 256 + case 4: + h.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) | (uint64(b[2]) << 16) | (uint64(b[3]) << 24) + case 8: + d1 := uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + d2 := uint32(b[4]) | (uint32(b[5]) << 8) | (uint32(b[6]) << 16) | (uint32(b[7]) << 24) + h.FrameContentSize = uint64(d1) | (uint64(d2) << 32) + } + } + + // Frame Header done, we will not fail from now on. + if len(in) < 3 { + return in, nil + } + tmp := in[:3] + bh := uint32(tmp[0]) | (uint32(tmp[1]) << 8) | (uint32(tmp[2]) << 16) + h.FirstBlock.Last = bh&1 != 0 + blockType := blockType((bh >> 1) & 3) + // find size. + cSize := int(bh >> 3) + switch blockType { + case blockTypeReserved: + return in, nil + case blockTypeRLE: + h.FirstBlock.Compressed = true + h.FirstBlock.DecompressedSize = cSize + h.FirstBlock.CompressedSize = 1 + case blockTypeCompressed: + h.FirstBlock.Compressed = true + h.FirstBlock.CompressedSize = cSize + case blockTypeRaw: + h.FirstBlock.DecompressedSize = cSize + h.FirstBlock.CompressedSize = cSize + default: + panic("Invalid block type") + } + + h.FirstBlock.OK = true + return in, nil +} + +// AppendTo will append the encoded header to the dst slice. +// There is no error checking performed on the header values. +func (h *Header) AppendTo(dst []byte) ([]byte, error) { + if h.Skippable { + magic := [4]byte{0x50, 0x2a, 0x4d, 0x18} + magic[0] |= byte(h.SkippableID & 0xf) + dst = append(dst, magic[:]...) + f := h.SkippableSize + return append(dst, uint8(f), uint8(f>>8), uint8(f>>16), uint8(f>>24)), nil + } + f := frameHeader{ + ContentSize: h.FrameContentSize, + WindowSize: uint32(h.WindowSize), + SingleSegment: h.SingleSegment, + Checksum: h.HasCheckSum, + DictID: h.DictionaryID, + } + return f.appendTo(dst), nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go new file mode 100644 index 0000000..bbca172 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go @@ -0,0 +1,948 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "context" + "encoding/binary" + "io" + "sync" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +// Decoder provides decoding of zstandard streams. +// The decoder has been designed to operate without allocations after a warmup. +// This means that you should store the decoder for best performance. +// To re-use a stream decoder, use the Reset(r io.Reader) error to switch to another stream. +// A decoder can safely be re-used even if the previous stream failed. +// To release the resources, you must call the Close() function on a decoder. +type Decoder struct { + o decoderOptions + + // Unreferenced decoders, ready for use. + decoders chan *blockDec + + // Current read position used for Reader functionality. + current decoderState + + // sync stream decoding + syncStream struct { + decodedFrame uint64 + br readerWrapper + enabled bool + inFrame bool + dstBuf []byte + } + + frame *frameDec + + // Custom dictionaries. + dicts map[uint32]*dict + + // streamWg is the waitgroup for all streams + streamWg sync.WaitGroup +} + +// decoderState is used for maintaining state when the decoder +// is used for streaming. +type decoderState struct { + // current block being written to stream. + decodeOutput + + // output in order to be written to stream. + output chan decodeOutput + + // cancel remaining output. + cancel context.CancelFunc + + // crc of current frame + crc *xxhash.Digest + + flushed bool +} + +var ( + // Check the interfaces we want to support. + _ = io.WriterTo(&Decoder{}) + _ = io.Reader(&Decoder{}) +) + +// NewReader creates a new decoder. +// A nil Reader can be provided in which case Reset can be used to start a decode. +// +// A Decoder can be used in two modes: +// +// 1) As a stream, or +// 2) For stateless decoding using DecodeAll. +// +// Only a single stream can be decoded concurrently, but the same decoder +// can run multiple concurrent stateless decodes. It is even possible to +// use stateless decodes while a stream is being decoded. +// +// The Reset function can be used to initiate a new stream, which will considerably +// reduce the allocations normally caused by NewReader. +func NewReader(r io.Reader, opts ...DOption) (*Decoder, error) { + initPredefined() + var d Decoder + d.o.setDefault() + for _, o := range opts { + err := o(&d.o) + if err != nil { + return nil, err + } + } + d.current.crc = xxhash.New() + d.current.flushed = true + + if r == nil { + d.current.err = ErrDecoderNilInput + } + + // Transfer option dicts. + d.dicts = make(map[uint32]*dict, len(d.o.dicts)) + for _, dc := range d.o.dicts { + d.dicts[dc.id] = dc + } + d.o.dicts = nil + + // Create decoders + d.decoders = make(chan *blockDec, d.o.concurrent) + for i := 0; i < d.o.concurrent; i++ { + dec := newBlockDec(d.o.lowMem) + dec.localFrame = newFrameDec(d.o) + d.decoders <- dec + } + + if r == nil { + return &d, nil + } + return &d, d.Reset(r) +} + +// Read bytes from the decompressed stream into p. +// Returns the number of bytes written and any error that occurred. +// When the stream is done, io.EOF will be returned. +func (d *Decoder) Read(p []byte) (int, error) { + var n int + for { + if len(d.current.b) > 0 { + filled := copy(p, d.current.b) + p = p[filled:] + d.current.b = d.current.b[filled:] + n += filled + } + if len(p) == 0 { + break + } + if len(d.current.b) == 0 { + // We have an error and no more data + if d.current.err != nil { + break + } + if !d.nextBlock(n == 0) { + return n, d.current.err + } + } + } + if len(d.current.b) > 0 { + if debugDecoder { + println("returning", n, "still bytes left:", len(d.current.b)) + } + // Only return error at end of block + return n, nil + } + if d.current.err != nil { + d.drainOutput() + } + if debugDecoder { + println("returning", n, d.current.err, len(d.decoders)) + } + return n, d.current.err +} + +// Reset will reset the decoder the supplied stream after the current has finished processing. +// Note that this functionality cannot be used after Close has been called. +// Reset can be called with a nil reader to release references to the previous reader. +// After being called with a nil reader, no other operations than Reset or DecodeAll or Close +// should be used. +func (d *Decoder) Reset(r io.Reader) error { + if d.current.err == ErrDecoderClosed { + return d.current.err + } + + d.drainOutput() + + d.syncStream.br.r = nil + if r == nil { + d.current.err = ErrDecoderNilInput + if len(d.current.b) > 0 { + d.current.b = d.current.b[:0] + } + d.current.flushed = true + return nil + } + + // If bytes buffer and < 5MB, do sync decoding anyway. + if bb, ok := r.(byter); ok && bb.Len() < d.o.decodeBufsBelow && !d.o.limitToCap { + bb2 := bb + if debugDecoder { + println("*bytes.Buffer detected, doing sync decode, len:", bb.Len()) + } + b := bb2.Bytes() + var dst []byte + if cap(d.syncStream.dstBuf) > 0 { + dst = d.syncStream.dstBuf[:0] + } + + dst, err := d.DecodeAll(b, dst) + if err == nil { + err = io.EOF + } + // Save output buffer + d.syncStream.dstBuf = dst + d.current.b = dst + d.current.err = err + d.current.flushed = true + if debugDecoder { + println("sync decode to", len(dst), "bytes, err:", err) + } + return nil + } + // Remove current block. + d.stashDecoder() + d.current.decodeOutput = decodeOutput{} + d.current.err = nil + d.current.flushed = false + d.current.d = nil + d.syncStream.dstBuf = nil + + // Ensure no-one else is still running... + d.streamWg.Wait() + if d.frame == nil { + d.frame = newFrameDec(d.o) + } + + if d.o.concurrent == 1 { + return d.startSyncDecoder(r) + } + + d.current.output = make(chan decodeOutput, d.o.concurrent) + ctx, cancel := context.WithCancel(context.Background()) + d.current.cancel = cancel + d.streamWg.Add(1) + go d.startStreamDecoder(ctx, r, d.current.output) + + return nil +} + +// drainOutput will drain the output until errEndOfStream is sent. +func (d *Decoder) drainOutput() { + if d.current.cancel != nil { + if debugDecoder { + println("cancelling current") + } + d.current.cancel() + d.current.cancel = nil + } + if d.current.d != nil { + if debugDecoder { + printf("re-adding current decoder %p, decoders: %d", d.current.d, len(d.decoders)) + } + d.decoders <- d.current.d + d.current.d = nil + d.current.b = nil + } + if d.current.output == nil || d.current.flushed { + println("current already flushed") + return + } + for v := range d.current.output { + if v.d != nil { + if debugDecoder { + printf("re-adding decoder %p", v.d) + } + d.decoders <- v.d + } + } + d.current.output = nil + d.current.flushed = true +} + +// WriteTo writes data to w until there's no more data to write or when an error occurs. +// The return value n is the number of bytes written. +// Any error encountered during the write is also returned. +func (d *Decoder) WriteTo(w io.Writer) (int64, error) { + var n int64 + for { + if len(d.current.b) > 0 { + n2, err2 := w.Write(d.current.b) + n += int64(n2) + if err2 != nil && (d.current.err == nil || d.current.err == io.EOF) { + d.current.err = err2 + } else if n2 != len(d.current.b) { + d.current.err = io.ErrShortWrite + } + } + if d.current.err != nil { + break + } + d.nextBlock(true) + } + err := d.current.err + if err != nil { + d.drainOutput() + } + if err == io.EOF { + err = nil + } + return n, err +} + +// DecodeAll allows stateless decoding of a blob of bytes. +// Output will be appended to dst, so if the destination size is known +// you can pre-allocate the destination slice to avoid allocations. +// DecodeAll can be used concurrently. +// The Decoder concurrency limits will be respected. +func (d *Decoder) DecodeAll(input, dst []byte) ([]byte, error) { + if d.decoders == nil { + return dst, ErrDecoderClosed + } + + // Grab a block decoder and frame decoder. + block := <-d.decoders + frame := block.localFrame + initialSize := len(dst) + defer func() { + if debugDecoder { + printf("re-adding decoder: %p", block) + } + frame.rawInput = nil + frame.bBuf = nil + if frame.history.decoders.br != nil { + frame.history.decoders.br.in = nil + } + d.decoders <- block + }() + frame.bBuf = input + + for { + frame.history.reset() + err := frame.reset(&frame.bBuf) + if err != nil { + if err == io.EOF { + if debugDecoder { + println("frame reset return EOF") + } + return dst, nil + } + return dst, err + } + if err = d.setDict(frame); err != nil { + return nil, err + } + if frame.WindowSize > d.o.maxWindowSize { + if debugDecoder { + println("window size exceeded:", frame.WindowSize, ">", d.o.maxWindowSize) + } + return dst, ErrWindowSizeExceeded + } + if frame.FrameContentSize != fcsUnknown { + if frame.FrameContentSize > d.o.maxDecodedSize-uint64(len(dst)-initialSize) { + if debugDecoder { + println("decoder size exceeded; fcs:", frame.FrameContentSize, "> mcs:", d.o.maxDecodedSize-uint64(len(dst)-initialSize), "len:", len(dst)) + } + return dst, ErrDecoderSizeExceeded + } + if d.o.limitToCap && frame.FrameContentSize > uint64(cap(dst)-len(dst)) { + if debugDecoder { + println("decoder size exceeded; fcs:", frame.FrameContentSize, "> (cap-len)", cap(dst)-len(dst)) + } + return dst, ErrDecoderSizeExceeded + } + if cap(dst)-len(dst) < int(frame.FrameContentSize) { + dst2 := make([]byte, len(dst), len(dst)+int(frame.FrameContentSize)+compressedBlockOverAlloc) + copy(dst2, dst) + dst = dst2 + } + } + + if cap(dst) == 0 && !d.o.limitToCap { + // Allocate len(input) * 2 by default if nothing is provided + // and we didn't get frame content size. + size := len(input) * 2 + // Cap to 1 MB. + if size > 1<<20 { + size = 1 << 20 + } + if uint64(size) > d.o.maxDecodedSize { + size = int(d.o.maxDecodedSize) + } + dst = make([]byte, 0, size) + } + + dst, err = frame.runDecoder(dst, block) + if err != nil { + return dst, err + } + if uint64(len(dst)-initialSize) > d.o.maxDecodedSize { + return dst, ErrDecoderSizeExceeded + } + if len(frame.bBuf) == 0 { + if debugDecoder { + println("frame dbuf empty") + } + break + } + } + return dst, nil +} + +// nextBlock returns the next block. +// If an error occurs d.err will be set. +// Optionally the function can block for new output. +// If non-blocking mode is used the returned boolean will be false +// if no data was available without blocking. +func (d *Decoder) nextBlock(blocking bool) (ok bool) { + if d.current.err != nil { + // Keep error state. + return false + } + d.current.b = d.current.b[:0] + + // SYNC: + if d.syncStream.enabled { + if !blocking { + return false + } + ok = d.nextBlockSync() + if !ok { + d.stashDecoder() + } + return ok + } + + //ASYNC: + d.stashDecoder() + if blocking { + d.current.decodeOutput, ok = <-d.current.output + } else { + select { + case d.current.decodeOutput, ok = <-d.current.output: + default: + return false + } + } + if !ok { + // This should not happen, so signal error state... + d.current.err = io.ErrUnexpectedEOF + return false + } + next := d.current.decodeOutput + if next.d != nil && next.d.async.newHist != nil { + d.current.crc.Reset() + } + if debugDecoder { + var tmp [4]byte + binary.LittleEndian.PutUint32(tmp[:], uint32(xxhash.Sum64(next.b))) + println("got", len(d.current.b), "bytes, error:", d.current.err, "data crc:", tmp) + } + + if d.o.ignoreChecksum { + return true + } + + if len(next.b) > 0 { + d.current.crc.Write(next.b) + } + if next.err == nil && next.d != nil && next.d.hasCRC { + got := uint32(d.current.crc.Sum64()) + if got != next.d.checkCRC { + if debugDecoder { + printf("CRC Check Failed: %08x (got) != %08x (on stream)\n", got, next.d.checkCRC) + } + d.current.err = ErrCRCMismatch + } else { + if debugDecoder { + printf("CRC ok %08x\n", got) + } + } + } + + return true +} + +func (d *Decoder) nextBlockSync() (ok bool) { + if d.current.d == nil { + d.current.d = <-d.decoders + } + for len(d.current.b) == 0 { + if !d.syncStream.inFrame { + d.frame.history.reset() + d.current.err = d.frame.reset(&d.syncStream.br) + if d.current.err == nil { + d.current.err = d.setDict(d.frame) + } + if d.current.err != nil { + return false + } + if d.frame.WindowSize > d.o.maxDecodedSize || d.frame.WindowSize > d.o.maxWindowSize { + d.current.err = ErrDecoderSizeExceeded + return false + } + + d.syncStream.decodedFrame = 0 + d.syncStream.inFrame = true + } + d.current.err = d.frame.next(d.current.d) + if d.current.err != nil { + return false + } + d.frame.history.ensureBlock() + if debugDecoder { + println("History trimmed:", len(d.frame.history.b), "decoded already:", d.syncStream.decodedFrame) + } + histBefore := len(d.frame.history.b) + d.current.err = d.current.d.decodeBuf(&d.frame.history) + + if d.current.err != nil { + println("error after:", d.current.err) + return false + } + d.current.b = d.frame.history.b[histBefore:] + if debugDecoder { + println("history after:", len(d.frame.history.b)) + } + + // Check frame size (before CRC) + d.syncStream.decodedFrame += uint64(len(d.current.b)) + if d.syncStream.decodedFrame > d.frame.FrameContentSize { + if debugDecoder { + printf("DecodedFrame (%d) > FrameContentSize (%d)\n", d.syncStream.decodedFrame, d.frame.FrameContentSize) + } + d.current.err = ErrFrameSizeExceeded + return false + } + + // Check FCS + if d.current.d.Last && d.frame.FrameContentSize != fcsUnknown && d.syncStream.decodedFrame != d.frame.FrameContentSize { + if debugDecoder { + printf("DecodedFrame (%d) != FrameContentSize (%d)\n", d.syncStream.decodedFrame, d.frame.FrameContentSize) + } + d.current.err = ErrFrameSizeMismatch + return false + } + + // Update/Check CRC + if d.frame.HasCheckSum { + if !d.o.ignoreChecksum { + d.frame.crc.Write(d.current.b) + } + if d.current.d.Last { + if !d.o.ignoreChecksum { + d.current.err = d.frame.checkCRC() + } else { + d.current.err = d.frame.consumeCRC() + } + if d.current.err != nil { + println("CRC error:", d.current.err) + return false + } + } + } + d.syncStream.inFrame = !d.current.d.Last + } + return true +} + +func (d *Decoder) stashDecoder() { + if d.current.d != nil { + if debugDecoder { + printf("re-adding current decoder %p", d.current.d) + } + d.decoders <- d.current.d + d.current.d = nil + } +} + +// Close will release all resources. +// It is NOT possible to reuse the decoder after this. +func (d *Decoder) Close() { + if d.current.err == ErrDecoderClosed { + return + } + d.drainOutput() + if d.current.cancel != nil { + d.current.cancel() + d.streamWg.Wait() + d.current.cancel = nil + } + if d.decoders != nil { + close(d.decoders) + for dec := range d.decoders { + dec.Close() + } + d.decoders = nil + } + if d.current.d != nil { + d.current.d.Close() + d.current.d = nil + } + d.current.err = ErrDecoderClosed +} + +// IOReadCloser returns the decoder as an io.ReadCloser for convenience. +// Any changes to the decoder will be reflected, so the returned ReadCloser +// can be reused along with the decoder. +// io.WriterTo is also supported by the returned ReadCloser. +func (d *Decoder) IOReadCloser() io.ReadCloser { + return closeWrapper{d: d} +} + +// closeWrapper wraps a function call as a closer. +type closeWrapper struct { + d *Decoder +} + +// WriteTo forwards WriteTo calls to the decoder. +func (c closeWrapper) WriteTo(w io.Writer) (n int64, err error) { + return c.d.WriteTo(w) +} + +// Read forwards read calls to the decoder. +func (c closeWrapper) Read(p []byte) (n int, err error) { + return c.d.Read(p) +} + +// Close closes the decoder. +func (c closeWrapper) Close() error { + c.d.Close() + return nil +} + +type decodeOutput struct { + d *blockDec + b []byte + err error +} + +func (d *Decoder) startSyncDecoder(r io.Reader) error { + d.frame.history.reset() + d.syncStream.br = readerWrapper{r: r} + d.syncStream.inFrame = false + d.syncStream.enabled = true + d.syncStream.decodedFrame = 0 + return nil +} + +// Create Decoder: +// ASYNC: +// Spawn 3 go routines. +// 0: Read frames and decode block literals. +// 1: Decode sequences. +// 2: Execute sequences, send to output. +func (d *Decoder) startStreamDecoder(ctx context.Context, r io.Reader, output chan decodeOutput) { + defer d.streamWg.Done() + br := readerWrapper{r: r} + + var seqDecode = make(chan *blockDec, d.o.concurrent) + var seqExecute = make(chan *blockDec, d.o.concurrent) + + // Async 1: Decode sequences... + go func() { + var hist history + var hasErr bool + + for block := range seqDecode { + if hasErr { + if block != nil { + seqExecute <- block + } + continue + } + if block.async.newHist != nil { + if debugDecoder { + println("Async 1: new history, recent:", block.async.newHist.recentOffsets) + } + hist.reset() + hist.decoders = block.async.newHist.decoders + hist.recentOffsets = block.async.newHist.recentOffsets + hist.windowSize = block.async.newHist.windowSize + if block.async.newHist.dict != nil { + hist.setDict(block.async.newHist.dict) + } + } + if block.err != nil || block.Type != blockTypeCompressed { + hasErr = block.err != nil + seqExecute <- block + continue + } + + hist.decoders.literals = block.async.literals + block.err = block.prepareSequences(block.async.seqData, &hist) + if debugDecoder && block.err != nil { + println("prepareSequences returned:", block.err) + } + hasErr = block.err != nil + if block.err == nil { + block.err = block.decodeSequences(&hist) + if debugDecoder && block.err != nil { + println("decodeSequences returned:", block.err) + } + hasErr = block.err != nil + // block.async.sequence = hist.decoders.seq[:hist.decoders.nSeqs] + block.async.seqSize = hist.decoders.seqSize + } + seqExecute <- block + } + close(seqExecute) + hist.reset() + }() + + var wg sync.WaitGroup + wg.Add(1) + + // Async 3: Execute sequences... + frameHistCache := d.frame.history.b + go func() { + var hist history + var decodedFrame uint64 + var fcs uint64 + var hasErr bool + for block := range seqExecute { + out := decodeOutput{err: block.err, d: block} + if block.err != nil || hasErr { + hasErr = true + output <- out + continue + } + if block.async.newHist != nil { + if debugDecoder { + println("Async 2: new history") + } + hist.reset() + hist.windowSize = block.async.newHist.windowSize + hist.allocFrameBuffer = block.async.newHist.allocFrameBuffer + if block.async.newHist.dict != nil { + hist.setDict(block.async.newHist.dict) + } + + if cap(hist.b) < hist.allocFrameBuffer { + if cap(frameHistCache) >= hist.allocFrameBuffer { + hist.b = frameHistCache + } else { + hist.b = make([]byte, 0, hist.allocFrameBuffer) + println("Alloc history sized", hist.allocFrameBuffer) + } + } + hist.b = hist.b[:0] + fcs = block.async.fcs + decodedFrame = 0 + } + do := decodeOutput{err: block.err, d: block} + switch block.Type { + case blockTypeRLE: + if debugDecoder { + println("add rle block length:", block.RLESize) + } + + if cap(block.dst) < int(block.RLESize) { + if block.lowMem { + block.dst = make([]byte, block.RLESize) + } else { + block.dst = make([]byte, maxCompressedBlockSize) + } + } + block.dst = block.dst[:block.RLESize] + v := block.data[0] + for i := range block.dst { + block.dst[i] = v + } + hist.append(block.dst) + do.b = block.dst + case blockTypeRaw: + if debugDecoder { + println("add raw block length:", len(block.data)) + } + hist.append(block.data) + do.b = block.data + case blockTypeCompressed: + if debugDecoder { + println("execute with history length:", len(hist.b), "window:", hist.windowSize) + } + hist.decoders.seqSize = block.async.seqSize + hist.decoders.literals = block.async.literals + do.err = block.executeSequences(&hist) + hasErr = do.err != nil + if debugDecoder && hasErr { + println("executeSequences returned:", do.err) + } + do.b = block.dst + } + if !hasErr { + decodedFrame += uint64(len(do.b)) + if decodedFrame > fcs { + println("fcs exceeded", block.Last, fcs, decodedFrame) + do.err = ErrFrameSizeExceeded + hasErr = true + } else if block.Last && fcs != fcsUnknown && decodedFrame != fcs { + do.err = ErrFrameSizeMismatch + hasErr = true + } else { + if debugDecoder { + println("fcs ok", block.Last, fcs, decodedFrame) + } + } + } + output <- do + } + close(output) + frameHistCache = hist.b + wg.Done() + if debugDecoder { + println("decoder goroutines finished") + } + hist.reset() + }() + + var hist history +decodeStream: + for { + var hasErr bool + hist.reset() + decodeBlock := func(block *blockDec) { + if hasErr { + if block != nil { + seqDecode <- block + } + return + } + if block.err != nil || block.Type != blockTypeCompressed { + hasErr = block.err != nil + seqDecode <- block + return + } + + remain, err := block.decodeLiterals(block.data, &hist) + block.err = err + hasErr = block.err != nil + if err == nil { + block.async.literals = hist.decoders.literals + block.async.seqData = remain + } else if debugDecoder { + println("decodeLiterals error:", err) + } + seqDecode <- block + } + frame := d.frame + if debugDecoder { + println("New frame...") + } + var historySent bool + frame.history.reset() + err := frame.reset(&br) + if debugDecoder && err != nil { + println("Frame decoder returned", err) + } + if err == nil { + err = d.setDict(frame) + } + if err == nil && d.frame.WindowSize > d.o.maxWindowSize { + if debugDecoder { + println("decoder size exceeded, fws:", d.frame.WindowSize, "> mws:", d.o.maxWindowSize) + } + + err = ErrDecoderSizeExceeded + } + if err != nil { + select { + case <-ctx.Done(): + case dec := <-d.decoders: + dec.sendErr(err) + decodeBlock(dec) + } + break decodeStream + } + + // Go through all blocks of the frame. + for { + var dec *blockDec + select { + case <-ctx.Done(): + break decodeStream + case dec = <-d.decoders: + // Once we have a decoder, we MUST return it. + } + err := frame.next(dec) + if !historySent { + h := frame.history + if debugDecoder { + println("Alloc History:", h.allocFrameBuffer) + } + hist.reset() + if h.dict != nil { + hist.setDict(h.dict) + } + dec.async.newHist = &h + dec.async.fcs = frame.FrameContentSize + historySent = true + } else { + dec.async.newHist = nil + } + if debugDecoder && err != nil { + println("next block returned error:", err) + } + dec.err = err + dec.hasCRC = false + if dec.Last && frame.HasCheckSum && err == nil { + crc, err := frame.rawInput.readSmall(4) + if len(crc) < 4 { + if err == nil { + err = io.ErrUnexpectedEOF + + } + println("CRC missing?", err) + dec.err = err + } else { + dec.checkCRC = binary.LittleEndian.Uint32(crc) + dec.hasCRC = true + if debugDecoder { + printf("found crc to check: %08x\n", dec.checkCRC) + } + } + } + err = dec.err + last := dec.Last + decodeBlock(dec) + if err != nil { + break decodeStream + } + if last { + break + } + } + } + close(seqDecode) + wg.Wait() + hist.reset() + d.frame.history.b = frameHistCache +} + +func (d *Decoder) setDict(frame *frameDec) (err error) { + dict, ok := d.dicts[frame.DictionaryID] + if ok { + if debugDecoder { + println("setting dict", frame.DictionaryID) + } + frame.history.setDict(dict) + } else if frame.DictionaryID != 0 { + // A zero or missing dictionary id is ambiguous: + // either dictionary zero, or no dictionary. In particular, + // zstd --patch-from uses this id for the source file, + // so only return an error if the dictionary id is not zero. + err = ErrUnknownDictionary + } + return err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go new file mode 100644 index 0000000..774c5f0 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go @@ -0,0 +1,169 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "math/bits" + "runtime" +) + +// DOption is an option for creating a decoder. +type DOption func(*decoderOptions) error + +// options retains accumulated state of multiple options. +type decoderOptions struct { + lowMem bool + concurrent int + maxDecodedSize uint64 + maxWindowSize uint64 + dicts []*dict + ignoreChecksum bool + limitToCap bool + decodeBufsBelow int +} + +func (o *decoderOptions) setDefault() { + *o = decoderOptions{ + // use less ram: true for now, but may change. + lowMem: true, + concurrent: runtime.GOMAXPROCS(0), + maxWindowSize: MaxWindowSize, + decodeBufsBelow: 128 << 10, + } + if o.concurrent > 4 { + o.concurrent = 4 + } + o.maxDecodedSize = 64 << 30 +} + +// WithDecoderLowmem will set whether to use a lower amount of memory, +// but possibly have to allocate more while running. +func WithDecoderLowmem(b bool) DOption { + return func(o *decoderOptions) error { o.lowMem = b; return nil } +} + +// WithDecoderConcurrency sets the number of created decoders. +// When decoding block with DecodeAll, this will limit the number +// of possible concurrently running decodes. +// When decoding streams, this will limit the number of +// inflight blocks. +// When decoding streams and setting maximum to 1, +// no async decoding will be done. +// When a value of 0 is provided GOMAXPROCS will be used. +// By default this will be set to 4 or GOMAXPROCS, whatever is lower. +func WithDecoderConcurrency(n int) DOption { + return func(o *decoderOptions) error { + if n < 0 { + return errors.New("concurrency must be at least 1") + } + if n == 0 { + o.concurrent = runtime.GOMAXPROCS(0) + } else { + o.concurrent = n + } + return nil + } +} + +// WithDecoderMaxMemory allows to set a maximum decoded size for in-memory +// non-streaming operations or maximum window size for streaming operations. +// This can be used to control memory usage of potentially hostile content. +// Maximum is 1 << 63 bytes. Default is 64GiB. +func WithDecoderMaxMemory(n uint64) DOption { + return func(o *decoderOptions) error { + if n == 0 { + return errors.New("WithDecoderMaxMemory must be at least 1") + } + if n > 1<<63 { + return errors.New("WithDecoderMaxmemory must be less than 1 << 63") + } + o.maxDecodedSize = n + return nil + } +} + +// WithDecoderDicts allows to register one or more dictionaries for the decoder. +// +// Each slice in dict must be in the [dictionary format] produced by +// "zstd --train" from the Zstandard reference implementation. +// +// If several dictionaries with the same ID are provided, the last one will be used. +// +// [dictionary format]: https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format +func WithDecoderDicts(dicts ...[]byte) DOption { + return func(o *decoderOptions) error { + for _, b := range dicts { + d, err := loadDict(b) + if err != nil { + return err + } + o.dicts = append(o.dicts, d) + } + return nil + } +} + +// WithDecoderDictRaw registers a dictionary that may be used by the decoder. +// The slice content can be arbitrary data. +func WithDecoderDictRaw(id uint32, content []byte) DOption { + return func(o *decoderOptions) error { + if bits.UintSize > 32 && uint(len(content)) > dictMaxLength { + return fmt.Errorf("dictionary of size %d > 2GiB too large", len(content)) + } + o.dicts = append(o.dicts, &dict{id: id, content: content, offsets: [3]int{1, 4, 8}}) + return nil + } +} + +// WithDecoderMaxWindow allows to set a maximum window size for decodes. +// This allows rejecting packets that will cause big memory usage. +// The Decoder will likely allocate more memory based on the WithDecoderLowmem setting. +// If WithDecoderMaxMemory is set to a lower value, that will be used. +// Default is 512MB, Maximum is ~3.75 TB as per zstandard spec. +func WithDecoderMaxWindow(size uint64) DOption { + return func(o *decoderOptions) error { + if size < MinWindowSize { + return errors.New("WithMaxWindowSize must be at least 1KB, 1024 bytes") + } + if size > (1<<41)+7*(1<<38) { + return errors.New("WithMaxWindowSize must be less than (1<<41) + 7*(1<<38) ~ 3.75TB") + } + o.maxWindowSize = size + return nil + } +} + +// WithDecodeAllCapLimit will limit DecodeAll to decoding cap(dst)-len(dst) bytes, +// or any size set in WithDecoderMaxMemory. +// This can be used to limit decoding to a specific maximum output size. +// Disabled by default. +func WithDecodeAllCapLimit(b bool) DOption { + return func(o *decoderOptions) error { + o.limitToCap = b + return nil + } +} + +// WithDecodeBuffersBelow will fully decode readers that have a +// `Bytes() []byte` and `Len() int` interface similar to bytes.Buffer. +// This typically uses less allocations but will have the full decompressed object in memory. +// Note that DecodeAllCapLimit will disable this, as well as giving a size of 0 or less. +// Default is 128KiB. +func WithDecodeBuffersBelow(size int) DOption { + return func(o *decoderOptions) error { + o.decodeBufsBelow = size + return nil + } +} + +// IgnoreChecksum allows to forcibly ignore checksum checking. +func IgnoreChecksum(b bool) DOption { + return func(o *decoderOptions) error { + o.ignoreChecksum = b + return nil + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/dict.go b/examples/go/vendor/github.com/klauspost/compress/zstd/dict.go new file mode 100644 index 0000000..b7b8316 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/dict.go @@ -0,0 +1,565 @@ +package zstd + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "math" + "sort" + + "github.com/klauspost/compress/huff0" +) + +type dict struct { + id uint32 + + litEnc *huff0.Scratch + llDec, ofDec, mlDec sequenceDec + offsets [3]int + content []byte +} + +const dictMagic = "\x37\xa4\x30\xec" + +// Maximum dictionary size for the reference implementation (1.5.3) is 2 GiB. +const dictMaxLength = 1 << 31 + +// ID returns the dictionary id or 0 if d is nil. +func (d *dict) ID() uint32 { + if d == nil { + return 0 + } + return d.id +} + +// ContentSize returns the dictionary content size or 0 if d is nil. +func (d *dict) ContentSize() int { + if d == nil { + return 0 + } + return len(d.content) +} + +// Content returns the dictionary content. +func (d *dict) Content() []byte { + if d == nil { + return nil + } + return d.content +} + +// Offsets returns the initial offsets. +func (d *dict) Offsets() [3]int { + if d == nil { + return [3]int{} + } + return d.offsets +} + +// LitEncoder returns the literal encoder. +func (d *dict) LitEncoder() *huff0.Scratch { + if d == nil { + return nil + } + return d.litEnc +} + +// Load a dictionary as described in +// https://github.com/facebook/zstd/blob/master/doc/zstd_compression_format.md#dictionary-format +func loadDict(b []byte) (*dict, error) { + // Check static field size. + if len(b) <= 8+(3*4) { + return nil, io.ErrUnexpectedEOF + } + d := dict{ + llDec: sequenceDec{fse: &fseDecoder{}}, + ofDec: sequenceDec{fse: &fseDecoder{}}, + mlDec: sequenceDec{fse: &fseDecoder{}}, + } + if string(b[:4]) != dictMagic { + return nil, ErrMagicMismatch + } + d.id = binary.LittleEndian.Uint32(b[4:8]) + if d.id == 0 { + return nil, errors.New("dictionaries cannot have ID 0") + } + + // Read literal table + var err error + d.litEnc, b, err = huff0.ReadTable(b[8:], nil) + if err != nil { + return nil, fmt.Errorf("loading literal table: %w", err) + } + d.litEnc.Reuse = huff0.ReusePolicyMust + + br := byteReader{ + b: b, + off: 0, + } + readDec := func(i tableIndex, dec *fseDecoder) error { + if err := dec.readNCount(&br, uint16(maxTableSymbol[i])); err != nil { + return err + } + if br.overread() { + return io.ErrUnexpectedEOF + } + err = dec.transform(symbolTableX[i]) + if err != nil { + println("Transform table error:", err) + return err + } + if debugDecoder || debugEncoder { + println("Read table ok", "symbolLen:", dec.symbolLen) + } + // Set decoders as predefined so they aren't reused. + dec.preDefined = true + return nil + } + + if err := readDec(tableOffsets, d.ofDec.fse); err != nil { + return nil, err + } + if err := readDec(tableMatchLengths, d.mlDec.fse); err != nil { + return nil, err + } + if err := readDec(tableLiteralLengths, d.llDec.fse); err != nil { + return nil, err + } + if br.remain() < 12 { + return nil, io.ErrUnexpectedEOF + } + + d.offsets[0] = int(br.Uint32()) + br.advance(4) + d.offsets[1] = int(br.Uint32()) + br.advance(4) + d.offsets[2] = int(br.Uint32()) + br.advance(4) + if d.offsets[0] <= 0 || d.offsets[1] <= 0 || d.offsets[2] <= 0 { + return nil, errors.New("invalid offset in dictionary") + } + d.content = make([]byte, br.remain()) + copy(d.content, br.unread()) + if d.offsets[0] > len(d.content) || d.offsets[1] > len(d.content) || d.offsets[2] > len(d.content) { + return nil, fmt.Errorf("initial offset bigger than dictionary content size %d, offsets: %v", len(d.content), d.offsets) + } + + return &d, nil +} + +// InspectDictionary loads a zstd dictionary and provides functions to inspect the content. +func InspectDictionary(b []byte) (interface { + ID() uint32 + ContentSize() int + Content() []byte + Offsets() [3]int + LitEncoder() *huff0.Scratch +}, error) { + initPredefined() + d, err := loadDict(b) + return d, err +} + +type BuildDictOptions struct { + // Dictionary ID. + ID uint32 + + // Content to use to create dictionary tables. + Contents [][]byte + + // History to use for all blocks. + History []byte + + // Offsets to use. + Offsets [3]int + + // CompatV155 will make the dictionary compatible with Zstd v1.5.5 and earlier. + // See https://github.com/facebook/zstd/issues/3724 + CompatV155 bool + + // Use the specified encoder level. + // The dictionary will be built using the specified encoder level, + // which will reflect speed and make the dictionary tailored for that level. + // If not set SpeedBestCompression will be used. + Level EncoderLevel + + // DebugOut will write stats and other details here if set. + DebugOut io.Writer +} + +func BuildDict(o BuildDictOptions) ([]byte, error) { + initPredefined() + hist := o.History + contents := o.Contents + debug := o.DebugOut != nil + println := func(args ...interface{}) { + if o.DebugOut != nil { + fmt.Fprintln(o.DebugOut, args...) + } + } + printf := func(s string, args ...interface{}) { + if o.DebugOut != nil { + fmt.Fprintf(o.DebugOut, s, args...) + } + } + print := func(args ...interface{}) { + if o.DebugOut != nil { + fmt.Fprint(o.DebugOut, args...) + } + } + + if int64(len(hist)) > dictMaxLength { + return nil, fmt.Errorf("dictionary of size %d > %d", len(hist), int64(dictMaxLength)) + } + if len(hist) < 8 { + return nil, fmt.Errorf("dictionary of size %d < %d", len(hist), 8) + } + if len(contents) == 0 { + return nil, errors.New("no content provided") + } + d := dict{ + id: o.ID, + litEnc: nil, + llDec: sequenceDec{}, + ofDec: sequenceDec{}, + mlDec: sequenceDec{}, + offsets: o.Offsets, + content: hist, + } + block := blockEnc{lowMem: false} + block.init() + enc := encoder(&bestFastEncoder{fastBase: fastBase{maxMatchOff: int32(maxMatchLen), bufferReset: math.MaxInt32 - int32(maxMatchLen*2), lowMem: false}}) + if o.Level != 0 { + eOpts := encoderOptions{ + level: o.Level, + blockSize: maxMatchLen, + windowSize: maxMatchLen, + dict: &d, + lowMem: false, + } + enc = eOpts.encoder() + } else { + o.Level = SpeedBestCompression + } + var ( + remain [256]int + ll [256]int + ml [256]int + of [256]int + ) + addValues := func(dst *[256]int, src []byte) { + for _, v := range src { + dst[v]++ + } + } + addHist := func(dst *[256]int, src *[256]uint32) { + for i, v := range src { + dst[i] += int(v) + } + } + seqs := 0 + nUsed := 0 + litTotal := 0 + newOffsets := make(map[uint32]int, 1000) + for _, b := range contents { + block.reset(nil) + if len(b) < 8 { + continue + } + nUsed++ + enc.Reset(&d, true) + enc.Encode(&block, b) + addValues(&remain, block.literals) + litTotal += len(block.literals) + if len(block.sequences) == 0 { + continue + } + seqs += len(block.sequences) + block.genCodes() + addHist(&ll, block.coders.llEnc.Histogram()) + addHist(&ml, block.coders.mlEnc.Histogram()) + addHist(&of, block.coders.ofEnc.Histogram()) + for i, seq := range block.sequences { + if i > 3 { + break + } + offset := seq.offset + if offset == 0 { + continue + } + if int(offset) >= len(o.History) { + continue + } + if offset > 3 { + newOffsets[offset-3]++ + } else { + newOffsets[uint32(o.Offsets[offset-1])]++ + } + } + } + // Find most used offsets. + var sortedOffsets []uint32 + for k := range newOffsets { + sortedOffsets = append(sortedOffsets, k) + } + sort.Slice(sortedOffsets, func(i, j int) bool { + a, b := sortedOffsets[i], sortedOffsets[j] + if a == b { + // Prefer the longer offset + return sortedOffsets[i] > sortedOffsets[j] + } + return newOffsets[sortedOffsets[i]] > newOffsets[sortedOffsets[j]] + }) + if len(sortedOffsets) > 3 { + if debug { + print("Offsets:") + for i, v := range sortedOffsets { + if i > 20 { + break + } + printf("[%d: %d],", v, newOffsets[v]) + } + println("") + } + + sortedOffsets = sortedOffsets[:3] + } + for i, v := range sortedOffsets { + o.Offsets[i] = int(v) + } + if debug { + println("New repeat offsets", o.Offsets) + } + + if nUsed == 0 || seqs == 0 { + return nil, fmt.Errorf("%d blocks, %d sequences found", nUsed, seqs) + } + if debug { + println("Sequences:", seqs, "Blocks:", nUsed, "Literals:", litTotal) + } + if seqs/nUsed < 512 { + // Use 512 as minimum. + nUsed = seqs / 512 + if nUsed == 0 { + nUsed = 1 + } + } + copyHist := func(dst *fseEncoder, src *[256]int) ([]byte, error) { + hist := dst.Histogram() + var maxSym uint8 + var maxCount int + var fakeLength int + for i, v := range src { + if v > 0 { + v = v / nUsed + if v == 0 { + v = 1 + } + } + if v > maxCount { + maxCount = v + } + if v != 0 { + maxSym = uint8(i) + } + fakeLength += v + hist[i] = uint32(v) + } + + // Ensure we aren't trying to represent RLE. + if maxCount == fakeLength { + for i := range hist { + if uint8(i) == maxSym { + fakeLength++ + maxSym++ + hist[i+1] = 1 + if maxSym > 1 { + break + } + } + if hist[0] == 0 { + fakeLength++ + hist[i] = 1 + if maxSym > 1 { + break + } + } + } + } + + dst.HistogramFinished(maxSym, maxCount) + dst.reUsed = false + dst.useRLE = false + err := dst.normalizeCount(fakeLength) + if err != nil { + return nil, err + } + if debug { + println("RAW:", dst.count[:maxSym+1], "NORM:", dst.norm[:maxSym+1], "LEN:", fakeLength) + } + return dst.writeCount(nil) + } + if debug { + print("Literal lengths: ") + } + llTable, err := copyHist(block.coders.llEnc, &ll) + if err != nil { + return nil, err + } + if debug { + print("Match lengths: ") + } + mlTable, err := copyHist(block.coders.mlEnc, &ml) + if err != nil { + return nil, err + } + if debug { + print("Offsets: ") + } + ofTable, err := copyHist(block.coders.ofEnc, &of) + if err != nil { + return nil, err + } + + // Literal table + avgSize := litTotal + if avgSize > huff0.BlockSizeMax/2 { + avgSize = huff0.BlockSizeMax / 2 + } + huffBuff := make([]byte, 0, avgSize) + // Target size + div := litTotal / avgSize + if div < 1 { + div = 1 + } + if debug { + println("Huffman weights:") + } + for i, n := range remain[:] { + if n > 0 { + n = n / div + // Allow all entries to be represented. + if n == 0 { + n = 1 + } + huffBuff = append(huffBuff, bytes.Repeat([]byte{byte(i)}, n)...) + if debug { + printf("[%d: %d], ", i, n) + } + } + } + if o.CompatV155 && remain[255]/div == 0 { + huffBuff = append(huffBuff, 255) + } + scratch := &huff0.Scratch{TableLog: 11} + for tries := 0; tries < 255; tries++ { + scratch = &huff0.Scratch{TableLog: 11} + _, _, err = huff0.Compress1X(huffBuff, scratch) + if err == nil { + break + } + if debug { + printf("Try %d: Huffman error: %v\n", tries+1, err) + } + huffBuff = huffBuff[:0] + if tries == 250 { + if debug { + println("Huffman: Bailing out with predefined table") + } + + // Bail out.... Just generate something + huffBuff = append(huffBuff, bytes.Repeat([]byte{255}, 10000)...) + for i := 0; i < 128; i++ { + huffBuff = append(huffBuff, byte(i)) + } + continue + } + if errors.Is(err, huff0.ErrIncompressible) { + // Try truncating least common. + for i, n := range remain[:] { + if n > 0 { + n = n / (div * (i + 1)) + if n > 0 { + huffBuff = append(huffBuff, bytes.Repeat([]byte{byte(i)}, n)...) + } + } + } + if o.CompatV155 && len(huffBuff) > 0 && huffBuff[len(huffBuff)-1] != 255 { + huffBuff = append(huffBuff, 255) + } + if len(huffBuff) == 0 { + huffBuff = append(huffBuff, 0, 255) + } + } + if errors.Is(err, huff0.ErrUseRLE) { + for i, n := range remain[:] { + n = n / (div * (i + 1)) + // Allow all entries to be represented. + if n == 0 { + n = 1 + } + huffBuff = append(huffBuff, bytes.Repeat([]byte{byte(i)}, n)...) + } + } + } + + var out bytes.Buffer + out.Write([]byte(dictMagic)) + out.Write(binary.LittleEndian.AppendUint32(nil, o.ID)) + out.Write(scratch.OutTable) + if debug { + println("huff table:", len(scratch.OutTable), "bytes") + println("of table:", len(ofTable), "bytes") + println("ml table:", len(mlTable), "bytes") + println("ll table:", len(llTable), "bytes") + } + out.Write(ofTable) + out.Write(mlTable) + out.Write(llTable) + out.Write(binary.LittleEndian.AppendUint32(nil, uint32(o.Offsets[0]))) + out.Write(binary.LittleEndian.AppendUint32(nil, uint32(o.Offsets[1]))) + out.Write(binary.LittleEndian.AppendUint32(nil, uint32(o.Offsets[2]))) + out.Write(hist) + if debug { + _, err := loadDict(out.Bytes()) + if err != nil { + panic(err) + } + i, err := InspectDictionary(out.Bytes()) + if err != nil { + panic(err) + } + println("ID:", i.ID()) + println("Content size:", i.ContentSize()) + println("Encoder:", i.LitEncoder() != nil) + println("Offsets:", i.Offsets()) + var totalSize int + for _, b := range contents { + totalSize += len(b) + } + + encWith := func(opts ...EOption) int { + enc, err := NewWriter(nil, opts...) + if err != nil { + panic(err) + } + defer enc.Close() + var dst []byte + var totalSize int + for _, b := range contents { + dst = enc.EncodeAll(b, dst[:0]) + totalSize += len(dst) + } + return totalSize + } + plain := encWith(WithEncoderLevel(o.Level)) + withDict := encWith(WithEncoderLevel(o.Level), WithEncoderDict(out.Bytes())) + println("Input size:", totalSize) + println("Plain Compressed:", plain) + println("Dict Compressed:", withDict) + println("Saved:", plain-withDict, (plain-withDict)/len(contents), "bytes per input (rounded down)") + } + return out.Bytes(), nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go new file mode 100644 index 0000000..5ca4603 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go @@ -0,0 +1,173 @@ +package zstd + +import ( + "fmt" + "math/bits" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +const ( + dictShardBits = 6 +) + +type fastBase struct { + // cur is the offset at the start of hist + cur int32 + // maximum offset. Should be at least 2x block size. + maxMatchOff int32 + bufferReset int32 + hist []byte + crc *xxhash.Digest + tmp [8]byte + blk *blockEnc + lastDictID uint32 + lowMem bool +} + +// CRC returns the underlying CRC writer. +func (e *fastBase) CRC() *xxhash.Digest { + return e.crc +} + +// AppendCRC will append the CRC to the destination slice and return it. +func (e *fastBase) AppendCRC(dst []byte) []byte { + crc := e.crc.Sum(e.tmp[:0]) + dst = append(dst, crc[7], crc[6], crc[5], crc[4]) + return dst +} + +// WindowSize returns the window size of the encoder, +// or a window size small enough to contain the input size, if > 0. +func (e *fastBase) WindowSize(size int64) int32 { + if size > 0 && size < int64(e.maxMatchOff) { + b := int32(1) << uint(bits.Len(uint(size))) + // Keep minimum window. + if b < 1024 { + b = 1024 + } + return b + } + return e.maxMatchOff +} + +// Block returns the current block. +func (e *fastBase) Block() *blockEnc { + return e.blk +} + +func (e *fastBase) addBlock(src []byte) int32 { + if debugAsserts && e.cur > e.bufferReset { + panic(fmt.Sprintf("ecur (%d) > buffer reset (%d)", e.cur, e.bufferReset)) + } + // check if we have space already + if len(e.hist)+len(src) > cap(e.hist) { + if cap(e.hist) == 0 { + e.ensureHist(len(src)) + } else { + if cap(e.hist) < int(e.maxMatchOff+maxCompressedBlockSize) { + panic(fmt.Errorf("unexpected buffer cap %d, want at least %d with window %d", cap(e.hist), e.maxMatchOff+maxCompressedBlockSize, e.maxMatchOff)) + } + // Move down + offset := int32(len(e.hist)) - e.maxMatchOff + copy(e.hist[0:e.maxMatchOff], e.hist[offset:]) + e.cur += offset + e.hist = e.hist[:e.maxMatchOff] + } + } + s := int32(len(e.hist)) + e.hist = append(e.hist, src...) + return s +} + +// ensureHist will ensure that history can keep at least this many bytes. +func (e *fastBase) ensureHist(n int) { + if cap(e.hist) >= n { + return + } + l := e.maxMatchOff + if (e.lowMem && e.maxMatchOff > maxCompressedBlockSize) || e.maxMatchOff <= maxCompressedBlockSize { + l += maxCompressedBlockSize + } else { + l += e.maxMatchOff + } + // Make it at least 1MB. + if l < 1<<20 && !e.lowMem { + l = 1 << 20 + } + // Make it at least the requested size. + if l < int32(n) { + l = int32(n) + } + e.hist = make([]byte, 0, l) +} + +// useBlock will replace the block with the provided one, +// but transfer recent offsets from the previous. +func (e *fastBase) UseBlock(enc *blockEnc) { + enc.reset(e.blk) + e.blk = enc +} + +func (e *fastBase) matchlen(s, t int32, src []byte) int32 { + if debugAsserts { + if s < 0 { + err := fmt.Sprintf("s (%d) < 0", s) + panic(err) + } + if t < 0 { + err := fmt.Sprintf("s (%d) < 0", s) + panic(err) + } + if s-t > e.maxMatchOff { + err := fmt.Sprintf("s (%d) - t (%d) > maxMatchOff (%d)", s, t, e.maxMatchOff) + panic(err) + } + if len(src)-int(s) > maxCompressedBlockSize { + panic(fmt.Sprintf("len(src)-s (%d) > maxCompressedBlockSize (%d)", len(src)-int(s), maxCompressedBlockSize)) + } + } + return int32(matchLen(src[s:], src[t:])) +} + +// Reset the encoding table. +func (e *fastBase) resetBase(d *dict, singleBlock bool) { + if e.blk == nil { + e.blk = &blockEnc{lowMem: e.lowMem} + e.blk.init() + } else { + e.blk.reset(nil) + } + e.blk.initNewEncode() + if e.crc == nil { + e.crc = xxhash.New() + } else { + e.crc.Reset() + } + e.blk.dictLitEnc = nil + if d != nil { + low := e.lowMem + if singleBlock { + e.lowMem = true + } + e.ensureHist(d.ContentSize() + maxCompressedBlockSize) + e.lowMem = low + } + + // We offset current position so everything will be out of reach. + // If above reset line, history will be purged. + if e.cur < e.bufferReset { + e.cur += e.maxMatchOff + int32(len(e.hist)) + } + e.hist = e.hist[:0] + if d != nil { + // Set offsets (currently not used) + for i, off := range d.offsets { + e.blk.recentOffsets[i] = uint32(off) + e.blk.prevRecentOffsets[i] = e.blk.recentOffsets[i] + } + // Transfer litenc. + e.blk.dictLitEnc = d.litEnc + e.hist = append(e.hist, d.content...) + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go new file mode 100644 index 0000000..4613724 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go @@ -0,0 +1,560 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "bytes" + "fmt" + + "github.com/klauspost/compress" +) + +const ( + bestLongTableBits = 22 // Bits used in the long match table + bestLongTableSize = 1 << bestLongTableBits // Size of the table + bestLongLen = 8 // Bytes used for table hash + + // Note: Increasing the short table bits or making the hash shorter + // can actually lead to compression degradation since it will 'steal' more from the + // long match table and match offsets are quite big. + // This greatly depends on the type of input. + bestShortTableBits = 18 // Bits used in the short match table + bestShortTableSize = 1 << bestShortTableBits // Size of the table + bestShortLen = 4 // Bytes used for table hash + +) + +type match struct { + offset int32 + s int32 + length int32 + rep int32 + est int32 +} + +const highScore = maxMatchLen * 8 + +// estBits will estimate output bits from predefined tables. +func (m *match) estBits(bitsPerByte int32) { + mlc := mlCode(uint32(m.length - zstdMinMatch)) + var ofc uint8 + if m.rep < 0 { + ofc = ofCode(uint32(m.s-m.offset) + 3) + } else { + ofc = ofCode(uint32(m.rep) & 3) + } + // Cost, excluding + ofTT, mlTT := fsePredefEnc[tableOffsets].ct.symbolTT[ofc], fsePredefEnc[tableMatchLengths].ct.symbolTT[mlc] + + // Add cost of match encoding... + m.est = int32(ofTT.outBits + mlTT.outBits) + m.est += int32(ofTT.deltaNbBits>>16 + mlTT.deltaNbBits>>16) + // Subtract savings compared to literal encoding... + m.est -= (m.length * bitsPerByte) >> 10 + if m.est > 0 { + // Unlikely gain.. + m.length = 0 + m.est = highScore + } +} + +// bestFastEncoder uses 2 tables, one for short matches (5 bytes) and one for long matches. +// The long match table contains the previous entry with the same hash, +// effectively making it a "chain" of length 2. +// When we find a long match we choose between the two values and select the longest. +// When we find a short match, after checking the long, we check if we can find a long at n+1 +// and that it is longer (lazy matching). +type bestFastEncoder struct { + fastBase + table [bestShortTableSize]prevEntry + longTable [bestLongTableSize]prevEntry + dictTable []prevEntry + dictLongTable []prevEntry +} + +// Encode improves compression... +func (e *bestFastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 4 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [bestShortTableSize]prevEntry{} + e.longTable = [bestLongTableSize]prevEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + v2 := e.table[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.table[i] = prevEntry{ + offset: v, + prev: v2, + } + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + v2 := e.longTable[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.longTable[i] = prevEntry{ + offset: v, + prev: v2, + } + } + e.cur = e.maxMatchOff + break + } + + // Add block to history + s := e.addBlock(src) + blk.size = len(src) + + // Check RLE first + if len(src) > zstdMinMatch { + ml := matchLen(src[1:], src) + if ml == len(src)-1 { + blk.literals = append(blk.literals, src[0]) + blk.sequences = append(blk.sequences, seq{litLen: 1, matchLen: uint32(len(src)-1) - zstdMinMatch, offset: 1 + 3}) + return + } + } + + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Use this to estimate literal cost. + // Scaled by 10 bits. + bitsPerByte := int32((compress.ShannonEntropyBits(src) * 1024) / len(src)) + // Huffman can never go < 1 bit/byte + if bitsPerByte < 1024 { + bitsPerByte = 1024 + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + const kSearchStrength = 10 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + offset3 := int32(blk.recentOffsets[2]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + const goodEnough = 250 + + cv := load6432(src, s) + + nextHashL := hashLen(cv, bestLongTableBits, bestLongLen) + nextHashS := hashLen(cv, bestShortTableBits, bestShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + // Set m to a match at offset if it looks like that will improve compression. + improve := func(m *match, offset int32, s int32, first uint32, rep int32) { + delta := s - offset + if delta >= e.maxMatchOff || delta <= 0 || load3232(src, offset) != first { + return + } + // Try to quick reject if we already have a long match. + if m.length > 16 { + left := len(src) - int(m.s+m.length) + // If we are too close to the end, keep as is. + if left <= 0 { + return + } + checkLen := m.length - (s - m.s) - 8 + if left > 2 && checkLen > 4 { + // Check 4 bytes, 4 bytes from the end of the current match. + a := load3232(src, offset+checkLen) + b := load3232(src, s+checkLen) + if a != b { + return + } + } + } + l := 4 + e.matchlen(s+4, offset+4, src) + if m.rep <= 0 { + // Extend candidate match backwards as far as possible. + // Do not extend repeats as we can assume they are optimal + // and offsets change if s == nextEmit. + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for offset > tMin && s > nextEmit && src[offset-1] == src[s-1] && l < maxMatchLength { + s-- + offset-- + l++ + } + } + if debugAsserts { + if offset >= s { + panic(fmt.Sprintf("offset: %d - s:%d - rep: %d - cur :%d - max: %d", offset, s, rep, e.cur, e.maxMatchOff)) + } + if !bytes.Equal(src[s:s+l], src[offset:offset+l]) { + panic(fmt.Sprintf("second match mismatch: %v != %v, first: %08x", src[s:s+4], src[offset:offset+4], first)) + } + } + cand := match{offset: offset, s: s, length: l, rep: rep} + cand.estBits(bitsPerByte) + if m.est >= highScore || cand.est-m.est+(cand.s-m.s)*bitsPerByte>>10 < 0 { + *m = cand + } + } + + best := match{s: s, est: highScore} + improve(&best, candidateL.offset-e.cur, s, uint32(cv), -1) + improve(&best, candidateL.prev-e.cur, s, uint32(cv), -1) + improve(&best, candidateS.offset-e.cur, s, uint32(cv), -1) + improve(&best, candidateS.prev-e.cur, s, uint32(cv), -1) + + if canRepeat && best.length < goodEnough { + if s == nextEmit { + // Check repeats straight after a match. + improve(&best, s-offset2, s, uint32(cv), 1|4) + improve(&best, s-offset3, s, uint32(cv), 2|4) + if offset1 > 1 { + improve(&best, s-(offset1-1), s, uint32(cv), 3|4) + } + } + + // If either no match or a non-repeat match, check at + 1 + if best.rep <= 0 { + cv32 := uint32(cv >> 8) + spp := s + 1 + improve(&best, spp-offset1, spp, cv32, 1) + improve(&best, spp-offset2, spp, cv32, 2) + improve(&best, spp-offset3, spp, cv32, 3) + if best.rep < 0 { + cv32 = uint32(cv >> 24) + spp += 2 + improve(&best, spp-offset1, spp, cv32, 1) + improve(&best, spp-offset2, spp, cv32, 2) + improve(&best, spp-offset3, spp, cv32, 3) + } + } + } + // Load next and check... + e.longTable[nextHashL] = prevEntry{offset: s + e.cur, prev: candidateL.offset} + e.table[nextHashS] = prevEntry{offset: s + e.cur, prev: candidateS.offset} + index0 := s + 1 + + // Look far ahead, unless we have a really long match already... + if best.length < goodEnough { + // No match found, move forward on input, no need to check forward... + if best.length < 4 { + s += 1 + (s-nextEmit)>>(kSearchStrength-1) + if s >= sLimit { + break encodeLoop + } + continue + } + + candidateS = e.table[hashLen(cv>>8, bestShortTableBits, bestShortLen)] + cv = load6432(src, s+1) + cv2 := load6432(src, s+2) + candidateL = e.longTable[hashLen(cv, bestLongTableBits, bestLongLen)] + candidateL2 := e.longTable[hashLen(cv2, bestLongTableBits, bestLongLen)] + + // Short at s+1 + improve(&best, candidateS.offset-e.cur, s+1, uint32(cv), -1) + // Long at s+1, s+2 + improve(&best, candidateL.offset-e.cur, s+1, uint32(cv), -1) + improve(&best, candidateL.prev-e.cur, s+1, uint32(cv), -1) + improve(&best, candidateL2.offset-e.cur, s+2, uint32(cv2), -1) + improve(&best, candidateL2.prev-e.cur, s+2, uint32(cv2), -1) + if false { + // Short at s+3. + // Too often worse... + improve(&best, e.table[hashLen(cv2>>8, bestShortTableBits, bestShortLen)].offset-e.cur, s+3, uint32(cv2>>8), -1) + } + + // Start check at a fixed offset to allow for a few mismatches. + // For this compression level 2 yields the best results. + // We cannot do this if we have already indexed this position. + const skipBeginning = 2 + if best.s > s-skipBeginning { + // See if we can find a better match by checking where the current best ends. + // Use that offset to see if we can find a better full match. + if sAt := best.s + best.length; sAt < sLimit { + nextHashL := hashLen(load6432(src, sAt), bestLongTableBits, bestLongLen) + candidateEnd := e.longTable[nextHashL] + + if off := candidateEnd.offset - e.cur - best.length + skipBeginning; off >= 0 { + improve(&best, off, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1) + if off := candidateEnd.prev - e.cur - best.length + skipBeginning; off >= 0 { + improve(&best, off, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1) + } + } + } + } + } + + if debugAsserts { + if best.offset >= best.s { + panic(fmt.Sprintf("best.offset > s: %d >= %d", best.offset, best.s)) + } + if best.s < nextEmit { + panic(fmt.Sprintf("s %d < nextEmit %d", best.s, nextEmit)) + } + if best.offset < s-e.maxMatchOff { + panic(fmt.Sprintf("best.offset < s-e.maxMatchOff: %d < %d", best.offset, s-e.maxMatchOff)) + } + if !bytes.Equal(src[best.s:best.s+best.length], src[best.offset:best.offset+best.length]) { + panic(fmt.Sprintf("match mismatch: %v != %v", src[best.s:best.s+best.length], src[best.offset:best.offset+best.length])) + } + } + + // We have a match, we can store the forward value + s = best.s + if best.rep > 0 { + var seq seq + seq.matchLen = uint32(best.length - zstdMinMatch) + addLiterals(&seq, best.s) + + // Repeat. If bit 4 is set, this is a non-lit repeat. + seq.offset = uint32(best.rep & 3) + if debugSequences { + println("repeat sequence", seq, "next s:", best.s, "off:", best.s-best.offset) + } + blk.sequences = append(blk.sequences, seq) + + // Index old s + 1 -> s - 1 + s = best.s + best.length + nextEmit = s + + // Index skipped... + end := s + if s > sLimit+4 { + end = sLimit + 4 + } + off := index0 + e.cur + for index0 < end { + cv0 := load6432(src, index0) + h0 := hashLen(cv0, bestLongTableBits, bestLongLen) + h1 := hashLen(cv0, bestShortTableBits, bestShortLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[h1] = prevEntry{offset: off, prev: e.table[h1].offset} + off++ + index0++ + } + + switch best.rep { + case 2, 4 | 1: + offset1, offset2 = offset2, offset1 + case 3, 4 | 2: + offset1, offset2, offset3 = offset3, offset1, offset2 + case 4 | 3: + offset1, offset2, offset3 = offset1-1, offset1, offset2 + } + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, best.length) + } + break encodeLoop + } + continue + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + t := best.offset + offset1, offset2, offset3 = s-t, offset1, offset2 + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && int(offset1) > len(src) { + panic("invalid offset") + } + + // Write our sequence + var seq seq + l := best.length + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + + // Index old s + 1 -> s - 1 or sLimit + end := s + if s > sLimit-4 { + end = sLimit - 4 + } + + off := index0 + e.cur + for index0 < end { + cv0 := load6432(src, index0) + h0 := hashLen(cv0, bestLongTableBits, bestLongLen) + h1 := hashLen(cv0, bestShortTableBits, bestShortLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[h1] = prevEntry{offset: off, prev: e.table[h1].offset} + index0++ + off++ + } + if s >= sLimit { + break encodeLoop + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + blk.recentOffsets[2] = uint32(offset3) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *bestFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + e.ensureHist(len(src)) + e.Encode(blk, src) +} + +// Reset will reset and set a dictionary if not nil +func (e *bestFastEncoder) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d == nil { + return + } + // Init or copy dict table + if len(e.dictTable) != len(e.table) || d.id != e.lastDictID { + if len(e.dictTable) != len(e.table) { + e.dictTable = make([]prevEntry, len(e.table)) + } + end := int32(len(d.content)) - 8 + e.maxMatchOff + for i := e.maxMatchOff; i < end; i += 4 { + const hashLog = bestShortTableBits + + cv := load6432(d.content, i-e.maxMatchOff) + nextHash := hashLen(cv, hashLog, bestShortLen) // 0 -> 4 + nextHash1 := hashLen(cv>>8, hashLog, bestShortLen) // 1 -> 5 + nextHash2 := hashLen(cv>>16, hashLog, bestShortLen) // 2 -> 6 + nextHash3 := hashLen(cv>>24, hashLog, bestShortLen) // 3 -> 7 + e.dictTable[nextHash] = prevEntry{ + prev: e.dictTable[nextHash].offset, + offset: i, + } + e.dictTable[nextHash1] = prevEntry{ + prev: e.dictTable[nextHash1].offset, + offset: i + 1, + } + e.dictTable[nextHash2] = prevEntry{ + prev: e.dictTable[nextHash2].offset, + offset: i + 2, + } + e.dictTable[nextHash3] = prevEntry{ + prev: e.dictTable[nextHash3].offset, + offset: i + 3, + } + } + e.lastDictID = d.id + } + + // Init or copy dict table + if len(e.dictLongTable) != len(e.longTable) || d.id != e.lastDictID { + if len(e.dictLongTable) != len(e.longTable) { + e.dictLongTable = make([]prevEntry, len(e.longTable)) + } + if len(d.content) >= 8 { + cv := load6432(d.content, 0) + h := hashLen(cv, bestLongTableBits, bestLongLen) + e.dictLongTable[h] = prevEntry{ + offset: e.maxMatchOff, + prev: e.dictLongTable[h].offset, + } + + end := int32(len(d.content)) - 8 + e.maxMatchOff + off := 8 // First to read + for i := e.maxMatchOff + 1; i < end; i++ { + cv = cv>>8 | (uint64(d.content[off]) << 56) + h := hashLen(cv, bestLongTableBits, bestLongLen) + e.dictLongTable[h] = prevEntry{ + offset: i, + prev: e.dictLongTable[h].offset, + } + off++ + } + } + e.lastDictID = d.id + } + // Reset table to initial state + copy(e.longTable[:], e.dictLongTable) + + e.cur = e.maxMatchOff + // Reset table to initial state + copy(e.table[:], e.dictTable) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go new file mode 100644 index 0000000..a4f5bf9 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go @@ -0,0 +1,1252 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import "fmt" + +const ( + betterLongTableBits = 19 // Bits used in the long match table + betterLongTableSize = 1 << betterLongTableBits // Size of the table + betterLongLen = 8 // Bytes used for table hash + + // Note: Increasing the short table bits or making the hash shorter + // can actually lead to compression degradation since it will 'steal' more from the + // long match table and match offsets are quite big. + // This greatly depends on the type of input. + betterShortTableBits = 13 // Bits used in the short match table + betterShortTableSize = 1 << betterShortTableBits // Size of the table + betterShortLen = 5 // Bytes used for table hash + + betterLongTableShardCnt = 1 << (betterLongTableBits - dictShardBits) // Number of shards in the table + betterLongTableShardSize = betterLongTableSize / betterLongTableShardCnt // Size of an individual shard + + betterShortTableShardCnt = 1 << (betterShortTableBits - dictShardBits) // Number of shards in the table + betterShortTableShardSize = betterShortTableSize / betterShortTableShardCnt // Size of an individual shard +) + +type prevEntry struct { + offset int32 + prev int32 +} + +// betterFastEncoder uses 2 tables, one for short matches (5 bytes) and one for long matches. +// The long match table contains the previous entry with the same hash, +// effectively making it a "chain" of length 2. +// When we find a long match we choose between the two values and select the longest. +// When we find a short match, after checking the long, we check if we can find a long at n+1 +// and that it is longer (lazy matching). +type betterFastEncoder struct { + fastBase + table [betterShortTableSize]tableEntry + longTable [betterLongTableSize]prevEntry +} + +type betterFastEncoderDict struct { + betterFastEncoder + dictTable []tableEntry + dictLongTable []prevEntry + shortTableShardDirty [betterShortTableShardCnt]bool + longTableShardDirty [betterLongTableShardCnt]bool + allDirty bool +} + +// Encode improves compression... +func (e *betterFastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [betterShortTableSize]tableEntry{} + e.longTable = [betterLongTableSize]prevEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + v2 := e.longTable[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.longTable[i] = prevEntry{ + offset: v, + prev: v2, + } + } + e.cur = e.maxMatchOff + break + } + // Add block to history + s := e.addBlock(src) + blk.size = len(src) + + // Check RLE first + if len(src) > zstdMinMatch { + ml := matchLen(src[1:], src) + if ml == len(src)-1 { + blk.literals = append(blk.literals, src[0]) + blk.sequences = append(blk.sequences, seq{litLen: 1, matchLen: uint32(len(src)-1) - zstdMinMatch, offset: 1 + 3}) + return + } + } + + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 9 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + var matched, index0 int32 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + off := s + e.cur + e.longTable[nextHashL] = prevEntry{offset: off, prev: candidateL.offset} + e.table[nextHashS] = tableEntry{offset: off, val: uint32(cv)} + index0 = s + 1 + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Index match start+1 (long) -> s - 1 + index0 := s + repOff + s += lenght + repOff + + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[hashLen(cv1, betterShortTableBits, betterShortLen)] = tableEntry{offset: off + 1, val: uint32(cv1)} + index0 += 2 + } + cv = load6432(src, s) + continue + } + const repOff2 = 1 + + // We deviate from the reference encoder and also check offset 2. + // Still slower and not much better, so disabled. + // repIndex = s - offset2 + repOff2 + if false && repIndex >= 0 && load6432(src, repIndex) == load6432(src, s+repOff) { + // Consider history as well. + var seq seq + lenght := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 2 + seq.offset = 2 + if debugSequences { + println("repeat sequence 2", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + s += lenght + repOff2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[hashLen(cv1, betterShortTableBits, betterShortLen)] = tableEntry{offset: off + 1, val: uint32(cv1)} + index0 += 2 + } + cv = load6432(src, s) + // Swap offsets + offset1, offset2 = offset2, offset1 + continue + } + } + // Find the offsets of our two matches. + coffsetL := candidateL.offset - e.cur + coffsetLP := candidateL.prev - e.cur + + // Check if we have a long match. + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetL+8, src) + 8 + t = coffsetL + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + prevMatch := e.matchlen(s+8, coffsetLP+8, src) + 8 + if prevMatch > matched { + matched = prevMatch + t = coffsetLP + } + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + } + break + } + + // Check if we have a long match on prev. + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetLP+8, src) + 8 + t = coffsetLP + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + coffsetS := candidateS.offset - e.cur + + // Check if we have a short match. + if s-coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + matched = e.matchlen(s+4, coffsetS+4, src) + 4 + + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, betterLongTableBits, betterLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = candidateL.offset - e.cur + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = prevEntry{offset: s + checkAt + e.cur, prev: candidateL.offset} + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("long match (after short)") + } + break + } + } + + // Check prev long... + coffsetL = candidateL.prev - e.cur + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("prev long match (after short)") + } + break + } + } + t = coffsetS + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // Try to find a better match by searching for a long match at the end of the current best match + if s+matched < sLimit { + // Allow some bytes at the beginning to mismatch. + // Sweet spot is around 3 bytes, but depends on input. + // The skipped bytes are tested in Extend backwards, + // and still picked up as part of the match if they do. + const skipBeginning = 3 + + nextHashL := hashLen(load6432(src, s+matched), betterLongTableBits, betterLongLen) + s2 := s + skipBeginning + cv := load3232(src, s2) + candidateL := e.longTable[nextHashL] + coffsetL := candidateL.offset - e.cur - matched + skipBeginning + if coffsetL >= 0 && coffsetL < s2 && s2-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s2+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + s = s2 + matched = matchedNext + if debugMatches { + println("long match at end-of-match") + } + } + } + + // Check prev long... + if true { + coffsetL = candidateL.prev - e.cur - matched + skipBeginning + if coffsetL >= 0 && coffsetL < s2 && s2-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s2+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + s = s2 + matched = matchedNext + if debugMatches { + println("prev long match at end-of-match") + } + } + } + } + } + // A match has been found. Update recent offsets. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the n-byte match as long as possible. + l := matched + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) -> s - 1 + off := index0 + e.cur + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[hashLen(cv1, betterShortTableBits, betterShortLen)] = tableEntry{offset: off + 1, val: uint32(cv1)} + index0 += 2 + off += 2 + } + + cv = load6432(src, s) + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + e.longTable[nextHashL] = prevEntry{offset: s + e.cur, prev: e.longTable[nextHashL].offset} + e.table[nextHashS] = tableEntry{offset: s + e.cur, val: uint32(cv)} + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *betterFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + e.ensureHist(len(src)) + e.Encode(blk, src) +} + +// Encode improves compression... +func (e *betterFastEncoderDict) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + for i := range e.longTable[:] { + e.longTable[i] = prevEntry{} + } + e.cur = e.maxMatchOff + e.allDirty = true + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + v2 := e.longTable[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.longTable[i] = prevEntry{ + offset: v, + prev: v2, + } + } + e.allDirty = true + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 9 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + var matched, index0 int32 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + off := s + e.cur + e.longTable[nextHashL] = prevEntry{offset: off, prev: candidateL.offset} + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = tableEntry{offset: off, val: uint32(cv)} + e.markShortShardDirty(nextHashS) + index0 = s + 1 + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Index match start+1 (long) -> s - 1 + s += lenght + repOff + + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.markLongShardDirty(h0) + h1 := hashLen(cv1, betterShortTableBits, betterShortLen) + e.table[h1] = tableEntry{offset: off + 1, val: uint32(cv1)} + e.markShortShardDirty(h1) + index0 += 2 + } + cv = load6432(src, s) + continue + } + const repOff2 = 1 + + // We deviate from the reference encoder and also check offset 2. + // Still slower and not much better, so disabled. + // repIndex = s - offset2 + repOff2 + if false && repIndex >= 0 && load6432(src, repIndex) == load6432(src, s+repOff) { + // Consider history as well. + var seq seq + lenght := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 2 + seq.offset = 2 + if debugSequences { + println("repeat sequence 2", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + s += lenght + repOff2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.markLongShardDirty(h0) + h1 := hashLen(cv1, betterShortTableBits, betterShortLen) + e.table[h1] = tableEntry{offset: off + 1, val: uint32(cv1)} + e.markShortShardDirty(h1) + index0 += 2 + } + cv = load6432(src, s) + // Swap offsets + offset1, offset2 = offset2, offset1 + continue + } + } + // Find the offsets of our two matches. + coffsetL := candidateL.offset - e.cur + coffsetLP := candidateL.prev - e.cur + + // Check if we have a long match. + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetL+8, src) + 8 + t = coffsetL + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + prevMatch := e.matchlen(s+8, coffsetLP+8, src) + 8 + if prevMatch > matched { + matched = prevMatch + t = coffsetLP + } + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + } + break + } + + // Check if we have a long match on prev. + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetLP+8, src) + 8 + t = coffsetLP + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + coffsetS := candidateS.offset - e.cur + + // Check if we have a short match. + if s-coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + matched = e.matchlen(s+4, coffsetS+4, src) + 4 + + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, betterLongTableBits, betterLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = candidateL.offset - e.cur + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = prevEntry{offset: s + checkAt + e.cur, prev: candidateL.offset} + e.markLongShardDirty(nextHashL) + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("long match (after short)") + } + break + } + } + + // Check prev long... + coffsetL = candidateL.prev - e.cur + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("prev long match (after short)") + } + break + } + } + t = coffsetS + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // Try to find a better match by searching for a long match at the end of the current best match + if s+matched < sLimit { + nextHashL := hashLen(load6432(src, s+matched), betterLongTableBits, betterLongLen) + cv := load3232(src, s) + candidateL := e.longTable[nextHashL] + coffsetL := candidateL.offset - e.cur - matched + if coffsetL >= 0 && coffsetL < s && s-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + matched = matchedNext + if debugMatches { + println("long match at end-of-match") + } + } + } + + // Check prev long... + if true { + coffsetL = candidateL.prev - e.cur - matched + if coffsetL >= 0 && coffsetL < s && s-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + matched = matchedNext + if debugMatches { + println("prev long match at end-of-match") + } + } + } + } + } + // A match has been found. Update recent offsets. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the n-byte match as long as possible. + l := matched + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) -> s - 1 + off := index0 + e.cur + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.markLongShardDirty(h0) + h1 := hashLen(cv1, betterShortTableBits, betterShortLen) + e.table[h1] = tableEntry{offset: off + 1, val: uint32(cv1)} + e.markShortShardDirty(h1) + index0 += 2 + off += 2 + } + + cv = load6432(src, s) + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + e.longTable[nextHashL] = prevEntry{offset: s + e.cur, prev: e.longTable[nextHashL].offset} + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.markShortShardDirty(nextHashS) + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *betterFastEncoder) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d != nil { + panic("betterFastEncoder: Reset with dict") + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *betterFastEncoderDict) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d == nil { + return + } + // Init or copy dict table + if len(e.dictTable) != len(e.table) || d.id != e.lastDictID { + if len(e.dictTable) != len(e.table) { + e.dictTable = make([]tableEntry, len(e.table)) + } + end := int32(len(d.content)) - 8 + e.maxMatchOff + for i := e.maxMatchOff; i < end; i += 4 { + const hashLog = betterShortTableBits + + cv := load6432(d.content, i-e.maxMatchOff) + nextHash := hashLen(cv, hashLog, betterShortLen) // 0 -> 4 + nextHash1 := hashLen(cv>>8, hashLog, betterShortLen) // 1 -> 5 + nextHash2 := hashLen(cv>>16, hashLog, betterShortLen) // 2 -> 6 + nextHash3 := hashLen(cv>>24, hashLog, betterShortLen) // 3 -> 7 + e.dictTable[nextHash] = tableEntry{ + val: uint32(cv), + offset: i, + } + e.dictTable[nextHash1] = tableEntry{ + val: uint32(cv >> 8), + offset: i + 1, + } + e.dictTable[nextHash2] = tableEntry{ + val: uint32(cv >> 16), + offset: i + 2, + } + e.dictTable[nextHash3] = tableEntry{ + val: uint32(cv >> 24), + offset: i + 3, + } + } + e.lastDictID = d.id + e.allDirty = true + } + + // Init or copy dict table + if len(e.dictLongTable) != len(e.longTable) || d.id != e.lastDictID { + if len(e.dictLongTable) != len(e.longTable) { + e.dictLongTable = make([]prevEntry, len(e.longTable)) + } + if len(d.content) >= 8 { + cv := load6432(d.content, 0) + h := hashLen(cv, betterLongTableBits, betterLongLen) + e.dictLongTable[h] = prevEntry{ + offset: e.maxMatchOff, + prev: e.dictLongTable[h].offset, + } + + end := int32(len(d.content)) - 8 + e.maxMatchOff + off := 8 // First to read + for i := e.maxMatchOff + 1; i < end; i++ { + cv = cv>>8 | (uint64(d.content[off]) << 56) + h := hashLen(cv, betterLongTableBits, betterLongLen) + e.dictLongTable[h] = prevEntry{ + offset: i, + prev: e.dictLongTable[h].offset, + } + off++ + } + } + e.lastDictID = d.id + e.allDirty = true + } + + // Reset table to initial state + { + dirtyShardCnt := 0 + if !e.allDirty { + for i := range e.shortTableShardDirty { + if e.shortTableShardDirty[i] { + dirtyShardCnt++ + } + } + } + const shardCnt = betterShortTableShardCnt + const shardSize = betterShortTableShardSize + if e.allDirty || dirtyShardCnt > shardCnt*4/6 { + copy(e.table[:], e.dictTable) + for i := range e.shortTableShardDirty { + e.shortTableShardDirty[i] = false + } + } else { + for i := range e.shortTableShardDirty { + if !e.shortTableShardDirty[i] { + continue + } + + copy(e.table[i*shardSize:(i+1)*shardSize], e.dictTable[i*shardSize:(i+1)*shardSize]) + e.shortTableShardDirty[i] = false + } + } + } + { + dirtyShardCnt := 0 + if !e.allDirty { + for i := range e.shortTableShardDirty { + if e.shortTableShardDirty[i] { + dirtyShardCnt++ + } + } + } + const shardCnt = betterLongTableShardCnt + const shardSize = betterLongTableShardSize + if e.allDirty || dirtyShardCnt > shardCnt*4/6 { + copy(e.longTable[:], e.dictLongTable) + for i := range e.longTableShardDirty { + e.longTableShardDirty[i] = false + } + } else { + for i := range e.longTableShardDirty { + if !e.longTableShardDirty[i] { + continue + } + + copy(e.longTable[i*shardSize:(i+1)*shardSize], e.dictLongTable[i*shardSize:(i+1)*shardSize]) + e.longTableShardDirty[i] = false + } + } + } + e.cur = e.maxMatchOff + e.allDirty = false +} + +func (e *betterFastEncoderDict) markLongShardDirty(entryNum uint32) { + e.longTableShardDirty[entryNum/betterLongTableShardSize] = true +} + +func (e *betterFastEncoderDict) markShortShardDirty(entryNum uint32) { + e.shortTableShardDirty[entryNum/betterShortTableShardSize] = true +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go new file mode 100644 index 0000000..a154c18 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go @@ -0,0 +1,1123 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import "fmt" + +const ( + dFastLongTableBits = 17 // Bits used in the long match table + dFastLongTableSize = 1 << dFastLongTableBits // Size of the table + dFastLongTableMask = dFastLongTableSize - 1 // Mask for table indices. Redundant, but can eliminate bounds checks. + dFastLongLen = 8 // Bytes used for table hash + + dLongTableShardCnt = 1 << (dFastLongTableBits - dictShardBits) // Number of shards in the table + dLongTableShardSize = dFastLongTableSize / tableShardCnt // Size of an individual shard + + dFastShortTableBits = tableBits // Bits used in the short match table + dFastShortTableSize = 1 << dFastShortTableBits // Size of the table + dFastShortTableMask = dFastShortTableSize - 1 // Mask for table indices. Redundant, but can eliminate bounds checks. + dFastShortLen = 5 // Bytes used for table hash + +) + +type doubleFastEncoder struct { + fastEncoder + longTable [dFastLongTableSize]tableEntry +} + +type doubleFastEncoderDict struct { + fastEncoderDict + longTable [dFastLongTableSize]tableEntry + dictLongTable []tableEntry + longTableShardDirty [dLongTableShardCnt]bool +} + +// Encode mimmics functionality in zstd_dfast.c +func (e *doubleFastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [dFastShortTableSize]tableEntry{} + e.longTable = [dFastLongTableSize]tableEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.longTable[i].offset = v + } + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 8 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += lenght + repOff + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + } + // Find the offsets of our two matches. + coffsetL := s - (candidateL.offset - e.cur) + coffsetS := s - (candidateS.offset - e.cur) + + // Check if we have a long match. + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + // Check if we have a short match. + if coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, dFastLongTableBits, dFastLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = s - (candidateL.offset - e.cur) + checkAt + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = tableEntry{offset: s + checkAt + e.cur, val: uint32(cv)} + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + s += checkAt + if debugMatches { + println("long match (after short)") + } + break + } + + t = candidateS.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) and start+2 (short) + index0 := s - l + 1 + // Index match end-2 (long) and end-1 (short) + index1 := s - 2 + + cv0 := load6432(src, index0) + cv1 := load6432(src, index1) + te0 := tableEntry{offset: index0 + e.cur, val: uint32(cv0)} + te1 := tableEntry{offset: index1 + e.cur, val: uint32(cv1)} + e.longTable[hashLen(cv0, dFastLongTableBits, dFastLongLen)] = te0 + e.longTable[hashLen(cv1, dFastLongTableBits, dFastLongLen)] = te1 + cv0 >>= 8 + cv1 >>= 8 + te0.offset++ + te1.offset++ + te0.val = uint32(cv0) + te1.val = uint32(cv1) + e.table[hashLen(cv0, dFastShortTableBits, dFastShortLen)] = te0 + e.table[hashLen(cv1, dFastShortTableBits, dFastShortLen)] = te1 + + cv = load6432(src, s) + + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *doubleFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + if e.cur >= e.bufferReset { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + for i := range e.longTable[:] { + e.longTable[i] = tableEntry{} + } + e.cur = e.maxMatchOff + } + + s := int32(0) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 8 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + for { + + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + + if len(blk.sequences) > 2 { + if load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + //length := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + length := 4 + int32(matchLen(src[s+4+repOff:], src[repIndex+4:])) + + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + repOff + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + } + // Find the offsets of our two matches. + coffsetL := s - (candidateL.offset - e.cur) + coffsetS := s - (candidateS.offset - e.cur) + + // Check if we have a long match. + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d). cur: %d", s, t, e.cur)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + // Check if we have a short match. + if coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, dFastLongTableBits, dFastLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = s - (candidateL.offset - e.cur) + checkAt + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = tableEntry{offset: s + checkAt + e.cur, val: uint32(cv)} + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + s += checkAt + if debugMatches { + println("long match (after short)") + } + break + } + + t = candidateS.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + // Extend the 4-byte match as long as possible. + //l := e.matchlen(s+4, t+4, src) + 4 + l := int32(matchLen(src[s+4:], src[t+4:])) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) and start+2 (short) + index0 := s - l + 1 + // Index match end-2 (long) and end-1 (short) + index1 := s - 2 + + cv0 := load6432(src, index0) + cv1 := load6432(src, index1) + te0 := tableEntry{offset: index0 + e.cur, val: uint32(cv0)} + te1 := tableEntry{offset: index1 + e.cur, val: uint32(cv1)} + e.longTable[hashLen(cv0, dFastLongTableBits, dFastLongLen)] = te0 + e.longTable[hashLen(cv1, dFastLongTableBits, dFastLongLen)] = te1 + cv0 >>= 8 + cv1 >>= 8 + te0.offset++ + te1.offset++ + te0.val = uint32(cv0) + te1.val = uint32(cv1) + e.table[hashLen(cv0, dFastShortTableBits, dFastShortLen)] = te0 + e.table[hashLen(cv1, dFastShortTableBits, dFastShortLen)] = te1 + + cv = load6432(src, s) + + if len(blk.sequences) <= 2 { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashS := hashLen(cv1>>8, dFastShortTableBits, dFastShortLen) + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + //l := 4 + e.matchlen(s+4, o2+4, src) + l := 4 + int32(matchLen(src[s+4:], src[o2+4:])) + + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } + + // We do not store history, so we must offset e.cur to avoid false matches for next user. + if e.cur < e.bufferReset { + e.cur += int32(len(src)) + } +} + +// Encode will encode the content, with a dictionary if initialized for it. +func (e *doubleFastEncoderDict) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + for i := range e.longTable[:] { + e.longTable[i] = tableEntry{} + } + e.markAllShardsDirty() + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.longTable[i].offset = v + } + e.markAllShardsDirty() + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 8 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = entry + e.markShardDirty(nextHashS) + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += lenght + repOff + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + } + // Find the offsets of our two matches. + coffsetL := s - (candidateL.offset - e.cur) + coffsetS := s - (candidateS.offset - e.cur) + + // Check if we have a long match. + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + // Check if we have a short match. + if coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, dFastLongTableBits, dFastLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = s - (candidateL.offset - e.cur) + checkAt + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = tableEntry{offset: s + checkAt + e.cur, val: uint32(cv)} + e.markLongShardDirty(nextHashL) + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + s += checkAt + if debugMatches { + println("long match (after short)") + } + break + } + + t = candidateS.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) and start+2 (short) + index0 := s - l + 1 + // Index match end-2 (long) and end-1 (short) + index1 := s - 2 + + cv0 := load6432(src, index0) + cv1 := load6432(src, index1) + te0 := tableEntry{offset: index0 + e.cur, val: uint32(cv0)} + te1 := tableEntry{offset: index1 + e.cur, val: uint32(cv1)} + longHash1 := hashLen(cv0, dFastLongTableBits, dFastLongLen) + longHash2 := hashLen(cv1, dFastLongTableBits, dFastLongLen) + e.longTable[longHash1] = te0 + e.longTable[longHash2] = te1 + e.markLongShardDirty(longHash1) + e.markLongShardDirty(longHash2) + cv0 >>= 8 + cv1 >>= 8 + te0.offset++ + te1.offset++ + te0.val = uint32(cv0) + te1.val = uint32(cv1) + hashVal1 := hashLen(cv0, dFastShortTableBits, dFastShortLen) + hashVal2 := hashLen(cv1, dFastShortTableBits, dFastShortLen) + e.table[hashVal1] = te0 + e.markShardDirty(hashVal1) + e.table[hashVal2] = te1 + e.markShardDirty(hashVal2) + + cv = load6432(src, s) + + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = entry + e.markShardDirty(nextHashS) + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } + // If we encoded more than 64K mark all dirty. + if len(src) > 64<<10 { + e.markAllShardsDirty() + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *doubleFastEncoder) Reset(d *dict, singleBlock bool) { + e.fastEncoder.Reset(d, singleBlock) + if d != nil { + panic("doubleFastEncoder: Reset with dict not supported") + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *doubleFastEncoderDict) Reset(d *dict, singleBlock bool) { + allDirty := e.allDirty + e.fastEncoderDict.Reset(d, singleBlock) + if d == nil { + return + } + + // Init or copy dict table + if len(e.dictLongTable) != len(e.longTable) || d.id != e.lastDictID { + if len(e.dictLongTable) != len(e.longTable) { + e.dictLongTable = make([]tableEntry, len(e.longTable)) + } + if len(d.content) >= 8 { + cv := load6432(d.content, 0) + e.dictLongTable[hashLen(cv, dFastLongTableBits, dFastLongLen)] = tableEntry{ + val: uint32(cv), + offset: e.maxMatchOff, + } + end := int32(len(d.content)) - 8 + e.maxMatchOff + for i := e.maxMatchOff + 1; i < end; i++ { + cv = cv>>8 | (uint64(d.content[i-e.maxMatchOff+7]) << 56) + e.dictLongTable[hashLen(cv, dFastLongTableBits, dFastLongLen)] = tableEntry{ + val: uint32(cv), + offset: i, + } + } + } + e.lastDictID = d.id + allDirty = true + } + // Reset table to initial state + e.cur = e.maxMatchOff + + dirtyShardCnt := 0 + if !allDirty { + for i := range e.longTableShardDirty { + if e.longTableShardDirty[i] { + dirtyShardCnt++ + } + } + } + + if allDirty || dirtyShardCnt > dLongTableShardCnt/2 { + //copy(e.longTable[:], e.dictLongTable) + e.longTable = *(*[dFastLongTableSize]tableEntry)(e.dictLongTable) + for i := range e.longTableShardDirty { + e.longTableShardDirty[i] = false + } + return + } + for i := range e.longTableShardDirty { + if !e.longTableShardDirty[i] { + continue + } + + // copy(e.longTable[i*dLongTableShardSize:(i+1)*dLongTableShardSize], e.dictLongTable[i*dLongTableShardSize:(i+1)*dLongTableShardSize]) + *(*[dLongTableShardSize]tableEntry)(e.longTable[i*dLongTableShardSize:]) = *(*[dLongTableShardSize]tableEntry)(e.dictLongTable[i*dLongTableShardSize:]) + + e.longTableShardDirty[i] = false + } +} + +func (e *doubleFastEncoderDict) markLongShardDirty(entryNum uint32) { + e.longTableShardDirty[entryNum/dLongTableShardSize] = true +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go new file mode 100644 index 0000000..f45a3da --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go @@ -0,0 +1,891 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "fmt" +) + +const ( + tableBits = 15 // Bits used in the table + tableSize = 1 << tableBits // Size of the table + tableShardCnt = 1 << (tableBits - dictShardBits) // Number of shards in the table + tableShardSize = tableSize / tableShardCnt // Size of an individual shard + tableFastHashLen = 6 + tableMask = tableSize - 1 // Mask for table indices. Redundant, but can eliminate bounds checks. + maxMatchLength = 131074 +) + +type tableEntry struct { + val uint32 + offset int32 +} + +type fastEncoder struct { + fastBase + table [tableSize]tableEntry +} + +type fastEncoderDict struct { + fastEncoder + dictTable []tableEntry + tableShardDirty [tableShardCnt]bool + allDirty bool +} + +// Encode mimmics functionality in zstd_fast.c +func (e *fastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + inputMargin = 8 + minNonLiteralBlockSize = 1 + 1 + inputMargin + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 2. + const stepSize = 2 + + // TEMPLATE + const hashLog = tableBits + // seems global, but would be nice to tweak. + const kSearchStrength = 6 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // t will contain the match offset when we find one. + // When existing the search loop, we have already checked 4 bytes. + var t int32 + + // We will not use repeat offsets across blocks. + // By not using them for the first 3 matches + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHash := hashLen(cv, hashLog, tableFastHashLen) + nextHash2 := hashLen(cv>>8, hashLog, tableFastHashLen) + candidate := e.table[nextHash] + candidate2 := e.table[nextHash2] + repIndex := s - offset1 + 2 + + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.table[nextHash2] = tableEntry{offset: s + e.cur + 1, val: uint32(cv >> 8)} + + if canRepeat && repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>16) { + // Consider history as well. + var seq seq + length := 4 + e.matchlen(s+6, repIndex+4, src) + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + 2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + sMin := s - e.maxMatchOff + if sMin < 0 { + sMin = 0 + } + for repIndex > sMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + 2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + coffset0 := s - (candidate.offset - e.cur) + coffset1 := s - (candidate2.offset - e.cur) + 1 + if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val { + // found a regular match + t = candidate.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + break + } + + if coffset1 < e.maxMatchOff && uint32(cv>>8) == candidate2.val { + // found a regular match + t = candidate2.offset - e.cur + s++ + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + break + } + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // A 4-byte match has been found. We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence. + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + // Don't use repeat offsets + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + + // Check offset 2 + if o2 := s - offset2; canRepeat && load3232(src, o2) == uint32(cv) { + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + // Store this, since we have it. + nextHash := hashLen(cv, hashLog, tableFastHashLen) + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + break encodeLoop + } + // Prepare next loop. + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *fastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + const ( + inputMargin = 8 + minNonLiteralBlockSize = 1 + 1 + inputMargin + ) + if debugEncoder { + if len(src) > maxCompressedBlockSize { + panic("src too big") + } + } + + // Protect against e.cur wraparound. + if e.cur >= e.bufferReset { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + e.cur = e.maxMatchOff + } + + s := int32(0) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 2. + const stepSize = 2 + + // TEMPLATE + const hashLog = tableBits + // seems global, but would be nice to tweak. + const kSearchStrength = 6 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // t will contain the match offset when we find one. + // When existing the search loop, we have already checked 4 bytes. + var t int32 + + // We will not use repeat offsets across blocks. + // By not using them for the first 3 matches + + for { + nextHash := hashLen(cv, hashLog, tableFastHashLen) + nextHash2 := hashLen(cv>>8, hashLog, tableFastHashLen) + candidate := e.table[nextHash] + candidate2 := e.table[nextHash2] + repIndex := s - offset1 + 2 + + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.table[nextHash2] = tableEntry{offset: s + e.cur + 1, val: uint32(cv >> 8)} + + if len(blk.sequences) > 2 && load3232(src, repIndex) == uint32(cv>>16) { + // Consider history as well. + var seq seq + length := 4 + e.matchlen(s+6, repIndex+4, src) + + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + 2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + sMin := s - e.maxMatchOff + if sMin < 0 { + sMin = 0 + } + for repIndex > sMin && start > startLimit && src[repIndex-1] == src[start-1] { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + 2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + coffset0 := s - (candidate.offset - e.cur) + coffset1 := s - (candidate2.offset - e.cur) + 1 + if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val { + // found a regular match + t = candidate.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic(fmt.Sprintf("t (%d) < 0, candidate.offset: %d, e.cur: %d, coffset0: %d, e.maxMatchOff: %d", t, candidate.offset, e.cur, coffset0, e.maxMatchOff)) + } + break + } + + if coffset1 < e.maxMatchOff && uint32(cv>>8) == candidate2.val { + // found a regular match + t = candidate2.offset - e.cur + s++ + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + break + } + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // A 4-byte match has been found. We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && t < 0 { + panic(fmt.Sprintf("t (%d) < 0 ", t)) + } + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] { + s-- + t-- + l++ + } + + // Write our sequence. + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + // Don't use repeat offsets + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + + // Check offset 2 + if o2 := s - offset2; len(blk.sequences) > 2 && load3232(src, o2) == uint32(cv) { + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + // Store this, since we have it. + nextHash := hashLen(cv, hashLog, tableFastHashLen) + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + break encodeLoop + } + // Prepare next loop. + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } + // We do not store history, so we must offset e.cur to avoid false matches for next user. + if e.cur < e.bufferReset { + e.cur += int32(len(src)) + } +} + +// Encode will encode the content, with a dictionary if initialized for it. +func (e *fastEncoderDict) Encode(blk *blockEnc, src []byte) { + const ( + inputMargin = 8 + minNonLiteralBlockSize = 1 + 1 + inputMargin + ) + if e.allDirty || len(src) > 32<<10 { + e.fastEncoder.Encode(blk, src) + e.allDirty = true + return + } + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [tableSize]tableEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 2. + const stepSize = 2 + + // TEMPLATE + const hashLog = tableBits + // seems global, but would be nice to tweak. + const kSearchStrength = 7 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // t will contain the match offset when we find one. + // When existing the search loop, we have already checked 4 bytes. + var t int32 + + // We will not use repeat offsets across blocks. + // By not using them for the first 3 matches + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHash := hashLen(cv, hashLog, tableFastHashLen) + nextHash2 := hashLen(cv>>8, hashLog, tableFastHashLen) + candidate := e.table[nextHash] + candidate2 := e.table[nextHash2] + repIndex := s - offset1 + 2 + + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.markShardDirty(nextHash) + e.table[nextHash2] = tableEntry{offset: s + e.cur + 1, val: uint32(cv >> 8)} + e.markShardDirty(nextHash2) + + if canRepeat && repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>16) { + // Consider history as well. + var seq seq + length := 4 + e.matchlen(s+6, repIndex+4, src) + + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + 2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + sMin := s - e.maxMatchOff + if sMin < 0 { + sMin = 0 + } + for repIndex > sMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + 2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + coffset0 := s - (candidate.offset - e.cur) + coffset1 := s - (candidate2.offset - e.cur) + 1 + if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val { + // found a regular match + t = candidate.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + break + } + + if coffset1 < e.maxMatchOff && uint32(cv>>8) == candidate2.val { + // found a regular match + t = candidate2.offset - e.cur + s++ + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + break + } + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // A 4-byte match has been found. We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence. + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + // Don't use repeat offsets + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + + // Check offset 2 + if o2 := s - offset2; canRepeat && load3232(src, o2) == uint32(cv) { + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + // Store this, since we have it. + nextHash := hashLen(cv, hashLog, tableFastHashLen) + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.markShardDirty(nextHash) + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + break encodeLoop + } + // Prepare next loop. + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *fastEncoder) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d != nil { + panic("fastEncoder: Reset with dict") + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *fastEncoderDict) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d == nil { + return + } + + // Init or copy dict table + if len(e.dictTable) != len(e.table) || d.id != e.lastDictID { + if len(e.dictTable) != len(e.table) { + e.dictTable = make([]tableEntry, len(e.table)) + } + if true { + end := e.maxMatchOff + int32(len(d.content)) - 8 + for i := e.maxMatchOff; i < end; i += 2 { + const hashLog = tableBits + + cv := load6432(d.content, i-e.maxMatchOff) + nextHash := hashLen(cv, hashLog, tableFastHashLen) // 0 -> 6 + nextHash1 := hashLen(cv>>8, hashLog, tableFastHashLen) // 1 -> 7 + e.dictTable[nextHash] = tableEntry{ + val: uint32(cv), + offset: i, + } + e.dictTable[nextHash1] = tableEntry{ + val: uint32(cv >> 8), + offset: i + 1, + } + } + } + e.lastDictID = d.id + e.allDirty = true + } + + e.cur = e.maxMatchOff + dirtyShardCnt := 0 + if !e.allDirty { + for i := range e.tableShardDirty { + if e.tableShardDirty[i] { + dirtyShardCnt++ + } + } + } + + const shardCnt = tableShardCnt + const shardSize = tableShardSize + if e.allDirty || dirtyShardCnt > shardCnt*4/6 { + //copy(e.table[:], e.dictTable) + e.table = *(*[tableSize]tableEntry)(e.dictTable) + for i := range e.tableShardDirty { + e.tableShardDirty[i] = false + } + e.allDirty = false + return + } + for i := range e.tableShardDirty { + if !e.tableShardDirty[i] { + continue + } + + //copy(e.table[i*shardSize:(i+1)*shardSize], e.dictTable[i*shardSize:(i+1)*shardSize]) + *(*[shardSize]tableEntry)(e.table[i*shardSize:]) = *(*[shardSize]tableEntry)(e.dictTable[i*shardSize:]) + e.tableShardDirty[i] = false + } + e.allDirty = false +} + +func (e *fastEncoderDict) markAllShardsDirty() { + e.allDirty = true +} + +func (e *fastEncoderDict) markShardDirty(entryNum uint32) { + e.tableShardDirty[entryNum/tableShardSize] = true +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go new file mode 100644 index 0000000..72af7ef --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go @@ -0,0 +1,619 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "crypto/rand" + "fmt" + "io" + "math" + rdebug "runtime/debug" + "sync" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +// Encoder provides encoding to Zstandard. +// An Encoder can be used for either compressing a stream via the +// io.WriteCloser interface supported by the Encoder or as multiple independent +// tasks via the EncodeAll function. +// Smaller encodes are encouraged to use the EncodeAll function. +// Use NewWriter to create a new instance. +type Encoder struct { + o encoderOptions + encoders chan encoder + state encoderState + init sync.Once +} + +type encoder interface { + Encode(blk *blockEnc, src []byte) + EncodeNoHist(blk *blockEnc, src []byte) + Block() *blockEnc + CRC() *xxhash.Digest + AppendCRC([]byte) []byte + WindowSize(size int64) int32 + UseBlock(*blockEnc) + Reset(d *dict, singleBlock bool) +} + +type encoderState struct { + w io.Writer + filling []byte + current []byte + previous []byte + encoder encoder + writing *blockEnc + err error + writeErr error + nWritten int64 + nInput int64 + frameContentSize int64 + headerWritten bool + eofWritten bool + fullFrameWritten bool + + // This waitgroup indicates an encode is running. + wg sync.WaitGroup + // This waitgroup indicates we have a block encoding/writing. + wWg sync.WaitGroup +} + +// NewWriter will create a new Zstandard encoder. +// If the encoder will be used for encoding blocks a nil writer can be used. +func NewWriter(w io.Writer, opts ...EOption) (*Encoder, error) { + initPredefined() + var e Encoder + e.o.setDefault() + for _, o := range opts { + err := o(&e.o) + if err != nil { + return nil, err + } + } + if w != nil { + e.Reset(w) + } + return &e, nil +} + +func (e *Encoder) initialize() { + if e.o.concurrent == 0 { + e.o.setDefault() + } + e.encoders = make(chan encoder, e.o.concurrent) + for i := 0; i < e.o.concurrent; i++ { + enc := e.o.encoder() + e.encoders <- enc + } +} + +// Reset will re-initialize the writer and new writes will encode to the supplied writer +// as a new, independent stream. +func (e *Encoder) Reset(w io.Writer) { + s := &e.state + s.wg.Wait() + s.wWg.Wait() + if cap(s.filling) == 0 { + s.filling = make([]byte, 0, e.o.blockSize) + } + if e.o.concurrent > 1 { + if cap(s.current) == 0 { + s.current = make([]byte, 0, e.o.blockSize) + } + if cap(s.previous) == 0 { + s.previous = make([]byte, 0, e.o.blockSize) + } + s.current = s.current[:0] + s.previous = s.previous[:0] + if s.writing == nil { + s.writing = &blockEnc{lowMem: e.o.lowMem} + s.writing.init() + } + s.writing.initNewEncode() + } + if s.encoder == nil { + s.encoder = e.o.encoder() + } + s.filling = s.filling[:0] + s.encoder.Reset(e.o.dict, false) + s.headerWritten = false + s.eofWritten = false + s.fullFrameWritten = false + s.w = w + s.err = nil + s.nWritten = 0 + s.nInput = 0 + s.writeErr = nil + s.frameContentSize = 0 +} + +// ResetContentSize will reset and set a content size for the next stream. +// If the bytes written does not match the size given an error will be returned +// when calling Close(). +// This is removed when Reset is called. +// Sizes <= 0 results in no content size set. +func (e *Encoder) ResetContentSize(w io.Writer, size int64) { + e.Reset(w) + if size >= 0 { + e.state.frameContentSize = size + } +} + +// Write data to the encoder. +// Input data will be buffered and as the buffer fills up +// content will be compressed and written to the output. +// When done writing, use Close to flush the remaining output +// and write CRC if requested. +func (e *Encoder) Write(p []byte) (n int, err error) { + s := &e.state + for len(p) > 0 { + if len(p)+len(s.filling) < e.o.blockSize { + if e.o.crc { + _, _ = s.encoder.CRC().Write(p) + } + s.filling = append(s.filling, p...) + return n + len(p), nil + } + add := p + if len(p)+len(s.filling) > e.o.blockSize { + add = add[:e.o.blockSize-len(s.filling)] + } + if e.o.crc { + _, _ = s.encoder.CRC().Write(add) + } + s.filling = append(s.filling, add...) + p = p[len(add):] + n += len(add) + if len(s.filling) < e.o.blockSize { + return n, nil + } + err := e.nextBlock(false) + if err != nil { + return n, err + } + if debugAsserts && len(s.filling) > 0 { + panic(len(s.filling)) + } + } + return n, nil +} + +// nextBlock will synchronize and start compressing input in e.state.filling. +// If an error has occurred during encoding it will be returned. +func (e *Encoder) nextBlock(final bool) error { + s := &e.state + // Wait for current block. + s.wg.Wait() + if s.err != nil { + return s.err + } + if len(s.filling) > e.o.blockSize { + return fmt.Errorf("block > maxStoreBlockSize") + } + if !s.headerWritten { + // If we have a single block encode, do a sync compression. + if final && len(s.filling) == 0 && !e.o.fullZero { + s.headerWritten = true + s.fullFrameWritten = true + s.eofWritten = true + return nil + } + if final && len(s.filling) > 0 { + s.current = e.EncodeAll(s.filling, s.current[:0]) + var n2 int + n2, s.err = s.w.Write(s.current) + if s.err != nil { + return s.err + } + s.nWritten += int64(n2) + s.nInput += int64(len(s.filling)) + s.current = s.current[:0] + s.filling = s.filling[:0] + s.headerWritten = true + s.fullFrameWritten = true + s.eofWritten = true + return nil + } + + var tmp [maxHeaderSize]byte + fh := frameHeader{ + ContentSize: uint64(s.frameContentSize), + WindowSize: uint32(s.encoder.WindowSize(s.frameContentSize)), + SingleSegment: false, + Checksum: e.o.crc, + DictID: e.o.dict.ID(), + } + + dst := fh.appendTo(tmp[:0]) + s.headerWritten = true + s.wWg.Wait() + var n2 int + n2, s.err = s.w.Write(dst) + if s.err != nil { + return s.err + } + s.nWritten += int64(n2) + } + if s.eofWritten { + // Ensure we only write it once. + final = false + } + + if len(s.filling) == 0 { + // Final block, but no data. + if final { + enc := s.encoder + blk := enc.Block() + blk.reset(nil) + blk.last = true + blk.encodeRaw(nil) + s.wWg.Wait() + _, s.err = s.w.Write(blk.output) + s.nWritten += int64(len(blk.output)) + s.eofWritten = true + } + return s.err + } + + // SYNC: + if e.o.concurrent == 1 { + src := s.filling + s.nInput += int64(len(s.filling)) + if debugEncoder { + println("Adding sync block,", len(src), "bytes, final:", final) + } + enc := s.encoder + blk := enc.Block() + blk.reset(nil) + enc.Encode(blk, src) + blk.last = final + if final { + s.eofWritten = true + } + + s.err = blk.encode(src, e.o.noEntropy, !e.o.allLitEntropy) + if s.err != nil { + return s.err + } + _, s.err = s.w.Write(blk.output) + s.nWritten += int64(len(blk.output)) + s.filling = s.filling[:0] + return s.err + } + + // Move blocks forward. + s.filling, s.current, s.previous = s.previous[:0], s.filling, s.current + s.nInput += int64(len(s.current)) + s.wg.Add(1) + go func(src []byte) { + if debugEncoder { + println("Adding block,", len(src), "bytes, final:", final) + } + defer func() { + if r := recover(); r != nil { + s.err = fmt.Errorf("panic while encoding: %v", r) + rdebug.PrintStack() + } + s.wg.Done() + }() + enc := s.encoder + blk := enc.Block() + enc.Encode(blk, src) + blk.last = final + if final { + s.eofWritten = true + } + // Wait for pending writes. + s.wWg.Wait() + if s.writeErr != nil { + s.err = s.writeErr + return + } + // Transfer encoders from previous write block. + blk.swapEncoders(s.writing) + // Transfer recent offsets to next. + enc.UseBlock(s.writing) + s.writing = blk + s.wWg.Add(1) + go func() { + defer func() { + if r := recover(); r != nil { + s.writeErr = fmt.Errorf("panic while encoding/writing: %v", r) + rdebug.PrintStack() + } + s.wWg.Done() + }() + s.writeErr = blk.encode(src, e.o.noEntropy, !e.o.allLitEntropy) + if s.writeErr != nil { + return + } + _, s.writeErr = s.w.Write(blk.output) + s.nWritten += int64(len(blk.output)) + }() + }(s.current) + return nil +} + +// ReadFrom reads data from r until EOF or error. +// The return value n is the number of bytes read. +// Any error except io.EOF encountered during the read is also returned. +// +// The Copy function uses ReaderFrom if available. +func (e *Encoder) ReadFrom(r io.Reader) (n int64, err error) { + if debugEncoder { + println("Using ReadFrom") + } + + // Flush any current writes. + if len(e.state.filling) > 0 { + if err := e.nextBlock(false); err != nil { + return 0, err + } + } + e.state.filling = e.state.filling[:e.o.blockSize] + src := e.state.filling + for { + n2, err := r.Read(src) + if e.o.crc { + _, _ = e.state.encoder.CRC().Write(src[:n2]) + } + // src is now the unfilled part... + src = src[n2:] + n += int64(n2) + switch err { + case io.EOF: + e.state.filling = e.state.filling[:len(e.state.filling)-len(src)] + if debugEncoder { + println("ReadFrom: got EOF final block:", len(e.state.filling)) + } + return n, nil + case nil: + default: + if debugEncoder { + println("ReadFrom: got error:", err) + } + e.state.err = err + return n, err + } + if len(src) > 0 { + if debugEncoder { + println("ReadFrom: got space left in source:", len(src)) + } + continue + } + err = e.nextBlock(false) + if err != nil { + return n, err + } + e.state.filling = e.state.filling[:e.o.blockSize] + src = e.state.filling + } +} + +// Flush will send the currently written data to output +// and block until everything has been written. +// This should only be used on rare occasions where pushing the currently queued data is critical. +func (e *Encoder) Flush() error { + s := &e.state + if len(s.filling) > 0 { + err := e.nextBlock(false) + if err != nil { + return err + } + } + s.wg.Wait() + s.wWg.Wait() + if s.err != nil { + return s.err + } + return s.writeErr +} + +// Close will flush the final output and close the stream. +// The function will block until everything has been written. +// The Encoder can still be re-used after calling this. +func (e *Encoder) Close() error { + s := &e.state + if s.encoder == nil { + return nil + } + err := e.nextBlock(true) + if err != nil { + return err + } + if s.frameContentSize > 0 { + if s.nInput != s.frameContentSize { + return fmt.Errorf("frame content size %d given, but %d bytes was written", s.frameContentSize, s.nInput) + } + } + if e.state.fullFrameWritten { + return s.err + } + s.wg.Wait() + s.wWg.Wait() + + if s.err != nil { + return s.err + } + if s.writeErr != nil { + return s.writeErr + } + + // Write CRC + if e.o.crc && s.err == nil { + // heap alloc. + var tmp [4]byte + _, s.err = s.w.Write(s.encoder.AppendCRC(tmp[:0])) + s.nWritten += 4 + } + + // Add padding with content from crypto/rand.Reader + if s.err == nil && e.o.pad > 0 { + add := calcSkippableFrame(s.nWritten, int64(e.o.pad)) + frame, err := skippableFrame(s.filling[:0], add, rand.Reader) + if err != nil { + return err + } + _, s.err = s.w.Write(frame) + } + return s.err +} + +// EncodeAll will encode all input in src and append it to dst. +// This function can be called concurrently, but each call will only run on a single goroutine. +// If empty input is given, nothing is returned, unless WithZeroFrames is specified. +// Encoded blocks can be concatenated and the result will be the combined input stream. +// Data compressed with EncodeAll can be decoded with the Decoder, +// using either a stream or DecodeAll. +func (e *Encoder) EncodeAll(src, dst []byte) []byte { + if len(src) == 0 { + if e.o.fullZero { + // Add frame header. + fh := frameHeader{ + ContentSize: 0, + WindowSize: MinWindowSize, + SingleSegment: true, + // Adding a checksum would be a waste of space. + Checksum: false, + DictID: 0, + } + dst = fh.appendTo(dst) + + // Write raw block as last one only. + var blk blockHeader + blk.setSize(0) + blk.setType(blockTypeRaw) + blk.setLast(true) + dst = blk.appendTo(dst) + } + return dst + } + e.init.Do(e.initialize) + enc := <-e.encoders + defer func() { + // Release encoder reference to last block. + // If a non-single block is needed the encoder will reset again. + e.encoders <- enc + }() + // Use single segments when above minimum window and below window size. + single := len(src) <= e.o.windowSize && len(src) > MinWindowSize + if e.o.single != nil { + single = *e.o.single + } + fh := frameHeader{ + ContentSize: uint64(len(src)), + WindowSize: uint32(enc.WindowSize(int64(len(src)))), + SingleSegment: single, + Checksum: e.o.crc, + DictID: e.o.dict.ID(), + } + + // If less than 1MB, allocate a buffer up front. + if len(dst) == 0 && cap(dst) == 0 && len(src) < 1<<20 && !e.o.lowMem { + dst = make([]byte, 0, len(src)) + } + dst = fh.appendTo(dst) + + // If we can do everything in one block, prefer that. + if len(src) <= e.o.blockSize { + enc.Reset(e.o.dict, true) + // Slightly faster with no history and everything in one block. + if e.o.crc { + _, _ = enc.CRC().Write(src) + } + blk := enc.Block() + blk.last = true + if e.o.dict == nil { + enc.EncodeNoHist(blk, src) + } else { + enc.Encode(blk, src) + } + + // If we got the exact same number of literals as input, + // assume the literals cannot be compressed. + oldout := blk.output + // Output directly to dst + blk.output = dst + + err := blk.encode(src, e.o.noEntropy, !e.o.allLitEntropy) + if err != nil { + panic(err) + } + dst = blk.output + blk.output = oldout + } else { + enc.Reset(e.o.dict, false) + blk := enc.Block() + for len(src) > 0 { + todo := src + if len(todo) > e.o.blockSize { + todo = todo[:e.o.blockSize] + } + src = src[len(todo):] + if e.o.crc { + _, _ = enc.CRC().Write(todo) + } + blk.pushOffsets() + enc.Encode(blk, todo) + if len(src) == 0 { + blk.last = true + } + err := blk.encode(todo, e.o.noEntropy, !e.o.allLitEntropy) + if err != nil { + panic(err) + } + dst = append(dst, blk.output...) + blk.reset(nil) + } + } + if e.o.crc { + dst = enc.AppendCRC(dst) + } + // Add padding with content from crypto/rand.Reader + if e.o.pad > 0 { + add := calcSkippableFrame(int64(len(dst)), int64(e.o.pad)) + var err error + dst, err = skippableFrame(dst, add, rand.Reader) + if err != nil { + panic(err) + } + } + return dst +} + +// MaxEncodedSize returns the expected maximum +// size of an encoded block or stream. +func (e *Encoder) MaxEncodedSize(size int) int { + frameHeader := 4 + 2 // magic + frame header & window descriptor + if e.o.dict != nil { + frameHeader += 4 + } + // Frame content size: + if size < 256 { + frameHeader++ + } else if size < 65536+256 { + frameHeader += 2 + } else if size < math.MaxInt32 { + frameHeader += 4 + } else { + frameHeader += 8 + } + // Final crc + if e.o.crc { + frameHeader += 4 + } + + // Max overhead is 3 bytes/block. + // There cannot be 0 blocks. + blocks := (size + e.o.blockSize) / e.o.blockSize + + // Combine, add padding. + maxSz := frameHeader + 3*blocks + size + if e.o.pad > 1 { + maxSz += calcSkippableFrame(int64(maxSz), int64(e.o.pad)) + } + return maxSz +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go new file mode 100644 index 0000000..20671dc --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go @@ -0,0 +1,339 @@ +package zstd + +import ( + "errors" + "fmt" + "math" + "math/bits" + "runtime" + "strings" +) + +// EOption is an option for creating a encoder. +type EOption func(*encoderOptions) error + +// options retains accumulated state of multiple options. +type encoderOptions struct { + concurrent int + level EncoderLevel + single *bool + pad int + blockSize int + windowSize int + crc bool + fullZero bool + noEntropy bool + allLitEntropy bool + customWindow bool + customALEntropy bool + customBlockSize bool + lowMem bool + dict *dict +} + +func (o *encoderOptions) setDefault() { + *o = encoderOptions{ + concurrent: runtime.GOMAXPROCS(0), + crc: true, + single: nil, + blockSize: maxCompressedBlockSize, + windowSize: 8 << 20, + level: SpeedDefault, + allLitEntropy: false, + lowMem: false, + } +} + +// encoder returns an encoder with the selected options. +func (o encoderOptions) encoder() encoder { + switch o.level { + case SpeedFastest: + if o.dict != nil { + return &fastEncoderDict{fastEncoder: fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}} + } + return &fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}} + + case SpeedDefault: + if o.dict != nil { + return &doubleFastEncoderDict{fastEncoderDict: fastEncoderDict{fastEncoder: fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}}} + } + return &doubleFastEncoder{fastEncoder: fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}} + case SpeedBetterCompression: + if o.dict != nil { + return &betterFastEncoderDict{betterFastEncoder: betterFastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}} + } + return &betterFastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}} + case SpeedBestCompression: + return &bestFastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}} + } + panic("unknown compression level") +} + +// WithEncoderCRC will add CRC value to output. +// Output will be 4 bytes larger. +func WithEncoderCRC(b bool) EOption { + return func(o *encoderOptions) error { o.crc = b; return nil } +} + +// WithEncoderConcurrency will set the concurrency, +// meaning the maximum number of encoders to run concurrently. +// The value supplied must be at least 1. +// For streams, setting a value of 1 will disable async compression. +// By default this will be set to GOMAXPROCS. +func WithEncoderConcurrency(n int) EOption { + return func(o *encoderOptions) error { + if n <= 0 { + return fmt.Errorf("concurrency must be at least 1") + } + o.concurrent = n + return nil + } +} + +// WithWindowSize will set the maximum allowed back-reference distance. +// The value must be a power of two between MinWindowSize and MaxWindowSize. +// A larger value will enable better compression but allocate more memory and, +// for above-default values, take considerably longer. +// The default value is determined by the compression level and max 8MB. +func WithWindowSize(n int) EOption { + return func(o *encoderOptions) error { + switch { + case n < MinWindowSize: + return fmt.Errorf("window size must be at least %d", MinWindowSize) + case n > MaxWindowSize: + return fmt.Errorf("window size must be at most %d", MaxWindowSize) + case (n & (n - 1)) != 0: + return errors.New("window size must be a power of 2") + } + + o.windowSize = n + o.customWindow = true + if o.blockSize > o.windowSize { + o.blockSize = o.windowSize + o.customBlockSize = true + } + return nil + } +} + +// WithEncoderPadding will add padding to all output so the size will be a multiple of n. +// This can be used to obfuscate the exact output size or make blocks of a certain size. +// The contents will be a skippable frame, so it will be invisible by the decoder. +// n must be > 0 and <= 1GB, 1<<30 bytes. +// The padded area will be filled with data from crypto/rand.Reader. +// If `EncodeAll` is used with data already in the destination, the total size will be multiple of this. +func WithEncoderPadding(n int) EOption { + return func(o *encoderOptions) error { + if n <= 0 { + return fmt.Errorf("padding must be at least 1") + } + // No need to waste our time. + if n == 1 { + n = 0 + } + if n > 1<<30 { + return fmt.Errorf("padding must less than 1GB (1<<30 bytes) ") + } + o.pad = n + return nil + } +} + +// EncoderLevel predefines encoder compression levels. +// Only use the constants made available, since the actual mapping +// of these values are very likely to change and your compression could change +// unpredictably when upgrading the library. +type EncoderLevel int + +const ( + speedNotSet EncoderLevel = iota + + // SpeedFastest will choose the fastest reasonable compression. + // This is roughly equivalent to the fastest Zstandard mode. + SpeedFastest + + // SpeedDefault is the default "pretty fast" compression option. + // This is roughly equivalent to the default Zstandard mode (level 3). + SpeedDefault + + // SpeedBetterCompression will yield better compression than the default. + // Currently it is about zstd level 7-8 with ~ 2x-3x the default CPU usage. + // By using this, notice that CPU usage may go up in the future. + SpeedBetterCompression + + // SpeedBestCompression will choose the best available compression option. + // This will offer the best compression no matter the CPU cost. + SpeedBestCompression + + // speedLast should be kept as the last actual compression option. + // The is not for external usage, but is used to keep track of the valid options. + speedLast +) + +// EncoderLevelFromString will convert a string representation of an encoding level back +// to a compression level. The compare is not case sensitive. +// If the string wasn't recognized, (false, SpeedDefault) will be returned. +func EncoderLevelFromString(s string) (bool, EncoderLevel) { + for l := speedNotSet + 1; l < speedLast; l++ { + if strings.EqualFold(s, l.String()) { + return true, l + } + } + return false, SpeedDefault +} + +// EncoderLevelFromZstd will return an encoder level that closest matches the compression +// ratio of a specific zstd compression level. +// Many input values will provide the same compression level. +func EncoderLevelFromZstd(level int) EncoderLevel { + switch { + case level < 3: + return SpeedFastest + case level >= 3 && level < 6: + return SpeedDefault + case level >= 6 && level < 10: + return SpeedBetterCompression + default: + return SpeedBestCompression + } +} + +// String provides a string representation of the compression level. +func (e EncoderLevel) String() string { + switch e { + case SpeedFastest: + return "fastest" + case SpeedDefault: + return "default" + case SpeedBetterCompression: + return "better" + case SpeedBestCompression: + return "best" + default: + return "invalid" + } +} + +// WithEncoderLevel specifies a predefined compression level. +func WithEncoderLevel(l EncoderLevel) EOption { + return func(o *encoderOptions) error { + switch { + case l <= speedNotSet || l >= speedLast: + return fmt.Errorf("unknown encoder level") + } + o.level = l + if !o.customWindow { + switch o.level { + case SpeedFastest: + o.windowSize = 4 << 20 + if !o.customBlockSize { + o.blockSize = 1 << 16 + } + case SpeedDefault: + o.windowSize = 8 << 20 + case SpeedBetterCompression: + o.windowSize = 8 << 20 + case SpeedBestCompression: + o.windowSize = 8 << 20 + } + } + if !o.customALEntropy { + o.allLitEntropy = l > SpeedDefault + } + + return nil + } +} + +// WithZeroFrames will encode 0 length input as full frames. +// This can be needed for compatibility with zstandard usage, +// but is not needed for this package. +func WithZeroFrames(b bool) EOption { + return func(o *encoderOptions) error { + o.fullZero = b + return nil + } +} + +// WithAllLitEntropyCompression will apply entropy compression if no matches are found. +// Disabling this will skip incompressible data faster, but in cases with no matches but +// skewed character distribution compression is lost. +// Default value depends on the compression level selected. +func WithAllLitEntropyCompression(b bool) EOption { + return func(o *encoderOptions) error { + o.customALEntropy = true + o.allLitEntropy = b + return nil + } +} + +// WithNoEntropyCompression will always skip entropy compression of literals. +// This can be useful if content has matches, but unlikely to benefit from entropy +// compression. Usually the slight speed improvement is not worth enabling this. +func WithNoEntropyCompression(b bool) EOption { + return func(o *encoderOptions) error { + o.noEntropy = b + return nil + } +} + +// WithSingleSegment will set the "single segment" flag when EncodeAll is used. +// If this flag is set, data must be regenerated within a single continuous memory segment. +// In this case, Window_Descriptor byte is skipped, but Frame_Content_Size is necessarily present. +// As a consequence, the decoder must allocate a memory segment of size equal or larger than size of your content. +// In order to preserve the decoder from unreasonable memory requirements, +// a decoder is allowed to reject a compressed frame which requests a memory size beyond decoder's authorized range. +// For broader compatibility, decoders are recommended to support memory sizes of at least 8 MB. +// This is only a recommendation, each decoder is free to support higher or lower limits, depending on local limitations. +// If this is not specified, block encodes will automatically choose this based on the input size and the window size. +// This setting has no effect on streamed encodes. +func WithSingleSegment(b bool) EOption { + return func(o *encoderOptions) error { + o.single = &b + return nil + } +} + +// WithLowerEncoderMem will trade in some memory cases trade less memory usage for +// slower encoding speed. +// This will not change the window size which is the primary function for reducing +// memory usage. See WithWindowSize. +func WithLowerEncoderMem(b bool) EOption { + return func(o *encoderOptions) error { + o.lowMem = b + return nil + } +} + +// WithEncoderDict allows to register a dictionary that will be used for the encode. +// +// The slice dict must be in the [dictionary format] produced by +// "zstd --train" from the Zstandard reference implementation. +// +// The encoder *may* choose to use no dictionary instead for certain payloads. +// +// [dictionary format]: https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format +func WithEncoderDict(dict []byte) EOption { + return func(o *encoderOptions) error { + d, err := loadDict(dict) + if err != nil { + return err + } + o.dict = d + return nil + } +} + +// WithEncoderDictRaw registers a dictionary that may be used by the encoder. +// +// The slice content may contain arbitrary data. It will be used as an initial +// history. +func WithEncoderDictRaw(id uint32, content []byte) EOption { + return func(o *encoderOptions) error { + if bits.UintSize > 32 && uint(len(content)) > dictMaxLength { + return fmt.Errorf("dictionary of size %d > 2GiB too large", len(content)) + } + o.dict = &dict{id: id, content: content, offsets: [3]int{1, 4, 8}} + return nil + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go b/examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go new file mode 100644 index 0000000..53e160f --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go @@ -0,0 +1,413 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "encoding/hex" + "errors" + "io" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +type frameDec struct { + o decoderOptions + crc *xxhash.Digest + + WindowSize uint64 + + // Frame history passed between blocks + history history + + rawInput byteBuffer + + // Byte buffer that can be reused for small input blocks. + bBuf byteBuf + + FrameContentSize uint64 + + DictionaryID uint32 + HasCheckSum bool + SingleSegment bool +} + +const ( + // MinWindowSize is the minimum Window Size, which is 1 KB. + MinWindowSize = 1 << 10 + + // MaxWindowSize is the maximum encoder window size + // and the default decoder maximum window size. + MaxWindowSize = 1 << 29 +) + +const ( + frameMagic = "\x28\xb5\x2f\xfd" + skippableFrameMagic = "\x2a\x4d\x18" +) + +func newFrameDec(o decoderOptions) *frameDec { + if o.maxWindowSize > o.maxDecodedSize { + o.maxWindowSize = o.maxDecodedSize + } + d := frameDec{ + o: o, + } + return &d +} + +// reset will read the frame header and prepare for block decoding. +// If nothing can be read from the input, io.EOF will be returned. +// Any other error indicated that the stream contained data, but +// there was a problem. +func (d *frameDec) reset(br byteBuffer) error { + d.HasCheckSum = false + d.WindowSize = 0 + var signature [4]byte + for { + var err error + // Check if we can read more... + b, err := br.readSmall(1) + switch err { + case io.EOF, io.ErrUnexpectedEOF: + return io.EOF + case nil: + signature[0] = b[0] + default: + return err + } + // Read the rest, don't allow io.ErrUnexpectedEOF + b, err = br.readSmall(3) + switch err { + case io.EOF: + return io.EOF + case nil: + copy(signature[1:], b) + default: + return err + } + + if string(signature[1:4]) != skippableFrameMagic || signature[0]&0xf0 != 0x50 { + if debugDecoder { + println("Not skippable", hex.EncodeToString(signature[:]), hex.EncodeToString([]byte(skippableFrameMagic))) + } + // Break if not skippable frame. + break + } + // Read size to skip + b, err = br.readSmall(4) + if err != nil { + if debugDecoder { + println("Reading Frame Size", err) + } + return err + } + n := uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + println("Skipping frame with", n, "bytes.") + err = br.skipN(int64(n)) + if err != nil { + if debugDecoder { + println("Reading discarded frame", err) + } + return err + } + } + if string(signature[:]) != frameMagic { + if debugDecoder { + println("Got magic numbers: ", signature, "want:", []byte(frameMagic)) + } + return ErrMagicMismatch + } + + // Read Frame_Header_Descriptor + fhd, err := br.readByte() + if err != nil { + if debugDecoder { + println("Reading Frame_Header_Descriptor", err) + } + return err + } + d.SingleSegment = fhd&(1<<5) != 0 + + if fhd&(1<<3) != 0 { + return errors.New("reserved bit set on frame header") + } + + // Read Window_Descriptor + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#window_descriptor + d.WindowSize = 0 + if !d.SingleSegment { + wd, err := br.readByte() + if err != nil { + if debugDecoder { + println("Reading Window_Descriptor", err) + } + return err + } + printf("raw: %x, mantissa: %d, exponent: %d\n", wd, wd&7, wd>>3) + windowLog := 10 + (wd >> 3) + windowBase := uint64(1) << windowLog + windowAdd := (windowBase / 8) * uint64(wd&0x7) + d.WindowSize = windowBase + windowAdd + } + + // Read Dictionary_ID + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary_id + d.DictionaryID = 0 + if size := fhd & 3; size != 0 { + if size == 3 { + size = 4 + } + + b, err := br.readSmall(int(size)) + if err != nil { + println("Reading Dictionary_ID", err) + return err + } + var id uint32 + switch len(b) { + case 1: + id = uint32(b[0]) + case 2: + id = uint32(b[0]) | (uint32(b[1]) << 8) + case 4: + id = uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + } + if debugDecoder { + println("Dict size", size, "ID:", id) + } + d.DictionaryID = id + } + + // Read Frame_Content_Size + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frame_content_size + var fcsSize int + v := fhd >> 6 + switch v { + case 0: + if d.SingleSegment { + fcsSize = 1 + } + default: + fcsSize = 1 << v + } + d.FrameContentSize = fcsUnknown + if fcsSize > 0 { + b, err := br.readSmall(fcsSize) + if err != nil { + println("Reading Frame content", err) + return err + } + switch len(b) { + case 1: + d.FrameContentSize = uint64(b[0]) + case 2: + // When FCS_Field_Size is 2, the offset of 256 is added. + d.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) + 256 + case 4: + d.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) | (uint64(b[2]) << 16) | (uint64(b[3]) << 24) + case 8: + d1 := uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + d2 := uint32(b[4]) | (uint32(b[5]) << 8) | (uint32(b[6]) << 16) | (uint32(b[7]) << 24) + d.FrameContentSize = uint64(d1) | (uint64(d2) << 32) + } + if debugDecoder { + println("Read FCS:", d.FrameContentSize) + } + } + + // Move this to shared. + d.HasCheckSum = fhd&(1<<2) != 0 + if d.HasCheckSum { + if d.crc == nil { + d.crc = xxhash.New() + } + d.crc.Reset() + } + + if d.WindowSize > d.o.maxWindowSize { + if debugDecoder { + printf("window size %d > max %d\n", d.WindowSize, d.o.maxWindowSize) + } + return ErrWindowSizeExceeded + } + + if d.WindowSize == 0 && d.SingleSegment { + // We may not need window in this case. + d.WindowSize = d.FrameContentSize + if d.WindowSize < MinWindowSize { + d.WindowSize = MinWindowSize + } + if d.WindowSize > d.o.maxDecodedSize { + if debugDecoder { + printf("window size %d > max %d\n", d.WindowSize, d.o.maxWindowSize) + } + return ErrDecoderSizeExceeded + } + } + + // The minimum Window_Size is 1 KB. + if d.WindowSize < MinWindowSize { + if debugDecoder { + println("got window size: ", d.WindowSize) + } + return ErrWindowSizeTooSmall + } + d.history.windowSize = int(d.WindowSize) + if !d.o.lowMem || d.history.windowSize < maxBlockSize { + // Alloc 2x window size if not low-mem, or window size below 2MB. + d.history.allocFrameBuffer = d.history.windowSize * 2 + } else { + if d.o.lowMem { + // Alloc with 1MB extra. + d.history.allocFrameBuffer = d.history.windowSize + maxBlockSize/2 + } else { + // Alloc with 2MB extra. + d.history.allocFrameBuffer = d.history.windowSize + maxBlockSize + } + } + + if debugDecoder { + println("Frame: Dict:", d.DictionaryID, "FrameContentSize:", d.FrameContentSize, "singleseg:", d.SingleSegment, "window:", d.WindowSize, "crc:", d.HasCheckSum) + } + + // history contains input - maybe we do something + d.rawInput = br + return nil +} + +// next will start decoding the next block from stream. +func (d *frameDec) next(block *blockDec) error { + if debugDecoder { + println("decoding new block") + } + err := block.reset(d.rawInput, d.WindowSize) + if err != nil { + println("block error:", err) + // Signal the frame decoder we have a problem. + block.sendErr(err) + return err + } + return nil +} + +// checkCRC will check the checksum, assuming the frame has one. +// Will return ErrCRCMismatch if crc check failed, otherwise nil. +func (d *frameDec) checkCRC() error { + // We can overwrite upper tmp now + buf, err := d.rawInput.readSmall(4) + if err != nil { + println("CRC missing?", err) + return err + } + + want := binary.LittleEndian.Uint32(buf[:4]) + got := uint32(d.crc.Sum64()) + + if got != want { + if debugDecoder { + printf("CRC check failed: got %08x, want %08x\n", got, want) + } + return ErrCRCMismatch + } + if debugDecoder { + printf("CRC ok %08x\n", got) + } + return nil +} + +// consumeCRC skips over the checksum, assuming the frame has one. +func (d *frameDec) consumeCRC() error { + _, err := d.rawInput.readSmall(4) + if err != nil { + println("CRC missing?", err) + } + return err +} + +// runDecoder will run the decoder for the remainder of the frame. +func (d *frameDec) runDecoder(dst []byte, dec *blockDec) ([]byte, error) { + saved := d.history.b + + // We use the history for output to avoid copying it. + d.history.b = dst + d.history.ignoreBuffer = len(dst) + // Store input length, so we only check new data. + crcStart := len(dst) + d.history.decoders.maxSyncLen = 0 + if d.o.limitToCap { + d.history.decoders.maxSyncLen = uint64(cap(dst) - len(dst)) + } + if d.FrameContentSize != fcsUnknown { + if !d.o.limitToCap || d.FrameContentSize+uint64(len(dst)) < d.history.decoders.maxSyncLen { + d.history.decoders.maxSyncLen = d.FrameContentSize + uint64(len(dst)) + } + if d.history.decoders.maxSyncLen > d.o.maxDecodedSize { + if debugDecoder { + println("maxSyncLen:", d.history.decoders.maxSyncLen, "> maxDecodedSize:", d.o.maxDecodedSize) + } + return dst, ErrDecoderSizeExceeded + } + if debugDecoder { + println("maxSyncLen:", d.history.decoders.maxSyncLen) + } + if !d.o.limitToCap && uint64(cap(dst)) < d.history.decoders.maxSyncLen { + // Alloc for output + dst2 := make([]byte, len(dst), d.history.decoders.maxSyncLen+compressedBlockOverAlloc) + copy(dst2, dst) + dst = dst2 + } + } + var err error + for { + err = dec.reset(d.rawInput, d.WindowSize) + if err != nil { + break + } + if debugDecoder { + println("next block:", dec) + } + err = dec.decodeBuf(&d.history) + if err != nil { + break + } + if uint64(len(d.history.b)-crcStart) > d.o.maxDecodedSize { + println("runDecoder: maxDecodedSize exceeded", uint64(len(d.history.b)-crcStart), ">", d.o.maxDecodedSize) + err = ErrDecoderSizeExceeded + break + } + if d.o.limitToCap && len(d.history.b) > cap(dst) { + println("runDecoder: cap exceeded", uint64(len(d.history.b)), ">", cap(dst)) + err = ErrDecoderSizeExceeded + break + } + if uint64(len(d.history.b)-crcStart) > d.FrameContentSize { + println("runDecoder: FrameContentSize exceeded", uint64(len(d.history.b)-crcStart), ">", d.FrameContentSize) + err = ErrFrameSizeExceeded + break + } + if dec.Last { + break + } + if debugDecoder { + println("runDecoder: FrameContentSize", uint64(len(d.history.b)-crcStart), "<=", d.FrameContentSize) + } + } + dst = d.history.b + if err == nil { + if d.FrameContentSize != fcsUnknown && uint64(len(d.history.b)-crcStart) != d.FrameContentSize { + err = ErrFrameSizeMismatch + } else if d.HasCheckSum { + if d.o.ignoreChecksum { + err = d.consumeCRC() + } else { + d.crc.Write(dst[crcStart:]) + err = d.checkCRC() + } + } + } + d.history.b = saved + return dst, err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go b/examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go new file mode 100644 index 0000000..667ca06 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go @@ -0,0 +1,137 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "fmt" + "io" + "math" + "math/bits" +) + +type frameHeader struct { + ContentSize uint64 + WindowSize uint32 + SingleSegment bool + Checksum bool + DictID uint32 +} + +const maxHeaderSize = 14 + +func (f frameHeader) appendTo(dst []byte) []byte { + dst = append(dst, frameMagic...) + var fhd uint8 + if f.Checksum { + fhd |= 1 << 2 + } + if f.SingleSegment { + fhd |= 1 << 5 + } + + var dictIDContent []byte + if f.DictID > 0 { + var tmp [4]byte + if f.DictID < 256 { + fhd |= 1 + tmp[0] = uint8(f.DictID) + dictIDContent = tmp[:1] + } else if f.DictID < 1<<16 { + fhd |= 2 + binary.LittleEndian.PutUint16(tmp[:2], uint16(f.DictID)) + dictIDContent = tmp[:2] + } else { + fhd |= 3 + binary.LittleEndian.PutUint32(tmp[:4], f.DictID) + dictIDContent = tmp[:4] + } + } + var fcs uint8 + if f.ContentSize >= 256 { + fcs++ + } + if f.ContentSize >= 65536+256 { + fcs++ + } + if f.ContentSize >= 0xffffffff { + fcs++ + } + + fhd |= fcs << 6 + + dst = append(dst, fhd) + if !f.SingleSegment { + const winLogMin = 10 + windowLog := (bits.Len32(f.WindowSize-1) - winLogMin) << 3 + dst = append(dst, uint8(windowLog)) + } + if f.DictID > 0 { + dst = append(dst, dictIDContent...) + } + switch fcs { + case 0: + if f.SingleSegment { + dst = append(dst, uint8(f.ContentSize)) + } + // Unless SingleSegment is set, framessizes < 256 are not stored. + case 1: + f.ContentSize -= 256 + dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8)) + case 2: + dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8), uint8(f.ContentSize>>16), uint8(f.ContentSize>>24)) + case 3: + dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8), uint8(f.ContentSize>>16), uint8(f.ContentSize>>24), + uint8(f.ContentSize>>32), uint8(f.ContentSize>>40), uint8(f.ContentSize>>48), uint8(f.ContentSize>>56)) + default: + panic("invalid fcs") + } + return dst +} + +const skippableFrameHeader = 4 + 4 + +// calcSkippableFrame will return a total size to be added for written +// to be divisible by multiple. +// The value will always be > skippableFrameHeader. +// The function will panic if written < 0 or wantMultiple <= 0. +func calcSkippableFrame(written, wantMultiple int64) int { + if wantMultiple <= 0 { + panic("wantMultiple <= 0") + } + if written < 0 { + panic("written < 0") + } + leftOver := written % wantMultiple + if leftOver == 0 { + return 0 + } + toAdd := wantMultiple - leftOver + for toAdd < skippableFrameHeader { + toAdd += wantMultiple + } + return int(toAdd) +} + +// skippableFrame will add a skippable frame with a total size of bytes. +// total should be >= skippableFrameHeader and < math.MaxUint32. +func skippableFrame(dst []byte, total int, r io.Reader) ([]byte, error) { + if total == 0 { + return dst, nil + } + if total < skippableFrameHeader { + return dst, fmt.Errorf("requested skippable frame (%d) < 8", total) + } + if int64(total) > math.MaxUint32 { + return dst, fmt.Errorf("requested skippable frame (%d) > max uint32", total) + } + dst = append(dst, 0x50, 0x2a, 0x4d, 0x18) + f := uint32(total - skippableFrameHeader) + dst = append(dst, uint8(f), uint8(f>>8), uint8(f>>16), uint8(f>>24)) + start := len(dst) + dst = append(dst, make([]byte, f)...) + _, err := io.ReadFull(r, dst[start:]) + return dst, err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go new file mode 100644 index 0000000..2f8860a --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go @@ -0,0 +1,307 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "errors" + "fmt" + "io" +) + +const ( + tablelogAbsoluteMax = 9 +) + +const ( + /*!MEMORY_USAGE : + * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) + * Increasing memory usage improves compression ratio + * Reduced memory usage can improve speed, due to cache effect + * Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */ + maxMemoryUsage = tablelogAbsoluteMax + 2 + + maxTableLog = maxMemoryUsage - 2 + maxTablesize = 1 << maxTableLog + maxTableMask = (1 << maxTableLog) - 1 + minTablelog = 5 + maxSymbolValue = 255 +) + +// fseDecoder provides temporary storage for compression and decompression. +type fseDecoder struct { + dt [maxTablesize]decSymbol // Decompression table. + symbolLen uint16 // Length of active part of the symbol table. + actualTableLog uint8 // Selected tablelog. + maxBits uint8 // Maximum number of additional bits + + // used for table creation to avoid allocations. + stateTable [256]uint16 + norm [maxSymbolValue + 1]int16 + preDefined bool +} + +// tableStep returns the next table index. +func tableStep(tableSize uint32) uint32 { + return (tableSize >> 1) + (tableSize >> 3) + 3 +} + +// readNCount will read the symbol distribution so decoding tables can be constructed. +func (s *fseDecoder) readNCount(b *byteReader, maxSymbol uint16) error { + var ( + charnum uint16 + previous0 bool + ) + if b.remain() < 4 { + return errors.New("input too small") + } + bitStream := b.Uint32NC() + nbBits := uint((bitStream & 0xF) + minTablelog) // extract tableLog + if nbBits > tablelogAbsoluteMax { + println("Invalid tablelog:", nbBits) + return errors.New("tableLog too large") + } + bitStream >>= 4 + bitCount := uint(4) + + s.actualTableLog = uint8(nbBits) + remaining := int32((1 << nbBits) + 1) + threshold := int32(1 << nbBits) + gotTotal := int32(0) + nbBits++ + + for remaining > 1 && charnum <= maxSymbol { + if previous0 { + //println("prev0") + n0 := charnum + for (bitStream & 0xFFFF) == 0xFFFF { + //println("24 x 0") + n0 += 24 + if r := b.remain(); r > 5 { + b.advance(2) + // The check above should make sure we can read 32 bits + bitStream = b.Uint32NC() >> bitCount + } else { + // end of bit stream + bitStream >>= 16 + bitCount += 16 + } + } + //printf("bitstream: %d, 0b%b", bitStream&3, bitStream) + for (bitStream & 3) == 3 { + n0 += 3 + bitStream >>= 2 + bitCount += 2 + } + n0 += uint16(bitStream & 3) + bitCount += 2 + + if n0 > maxSymbolValue { + return errors.New("maxSymbolValue too small") + } + //println("inserting ", n0-charnum, "zeroes from idx", charnum, "ending before", n0) + for charnum < n0 { + s.norm[uint8(charnum)] = 0 + charnum++ + } + + if r := b.remain(); r >= 7 || r-int(bitCount>>3) >= 4 { + b.advance(bitCount >> 3) + bitCount &= 7 + // The check above should make sure we can read 32 bits + bitStream = b.Uint32NC() >> bitCount + } else { + bitStream >>= 2 + } + } + + max := (2*threshold - 1) - remaining + var count int32 + + if int32(bitStream)&(threshold-1) < max { + count = int32(bitStream) & (threshold - 1) + if debugAsserts && nbBits < 1 { + panic("nbBits underflow") + } + bitCount += nbBits - 1 + } else { + count = int32(bitStream) & (2*threshold - 1) + if count >= threshold { + count -= max + } + bitCount += nbBits + } + + // extra accuracy + count-- + if count < 0 { + // -1 means +1 + remaining += count + gotTotal -= count + } else { + remaining -= count + gotTotal += count + } + s.norm[charnum&0xff] = int16(count) + charnum++ + previous0 = count == 0 + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + + if r := b.remain(); r >= 7 || r-int(bitCount>>3) >= 4 { + b.advance(bitCount >> 3) + bitCount &= 7 + // The check above should make sure we can read 32 bits + bitStream = b.Uint32NC() >> (bitCount & 31) + } else { + bitCount -= (uint)(8 * (len(b.b) - 4 - b.off)) + b.off = len(b.b) - 4 + bitStream = b.Uint32() >> (bitCount & 31) + } + } + s.symbolLen = charnum + if s.symbolLen <= 1 { + return fmt.Errorf("symbolLen (%d) too small", s.symbolLen) + } + if s.symbolLen > maxSymbolValue+1 { + return fmt.Errorf("symbolLen (%d) too big", s.symbolLen) + } + if remaining != 1 { + return fmt.Errorf("corruption detected (remaining %d != 1)", remaining) + } + if bitCount > 32 { + return fmt.Errorf("corruption detected (bitCount %d > 32)", bitCount) + } + if gotTotal != 1<> 3) + return s.buildDtable() +} + +func (s *fseDecoder) mustReadFrom(r io.Reader) { + fatalErr := func(err error) { + if err != nil { + panic(err) + } + } + // dt [maxTablesize]decSymbol // Decompression table. + // symbolLen uint16 // Length of active part of the symbol table. + // actualTableLog uint8 // Selected tablelog. + // maxBits uint8 // Maximum number of additional bits + // // used for table creation to avoid allocations. + // stateTable [256]uint16 + // norm [maxSymbolValue + 1]int16 + // preDefined bool + fatalErr(binary.Read(r, binary.LittleEndian, &s.dt)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.symbolLen)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.actualTableLog)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.maxBits)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.stateTable)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.norm)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.preDefined)) +} + +// decSymbol contains information about a state entry, +// Including the state offset base, the output symbol and +// the number of bits to read for the low part of the destination state. +// Using a composite uint64 is faster than a struct with separate members. +type decSymbol uint64 + +func newDecSymbol(nbits, addBits uint8, newState uint16, baseline uint32) decSymbol { + return decSymbol(nbits) | (decSymbol(addBits) << 8) | (decSymbol(newState) << 16) | (decSymbol(baseline) << 32) +} + +func (d decSymbol) nbBits() uint8 { + return uint8(d) +} + +func (d decSymbol) addBits() uint8 { + return uint8(d >> 8) +} + +func (d decSymbol) newState() uint16 { + return uint16(d >> 16) +} + +func (d decSymbol) baselineInt() int { + return int(d >> 32) +} + +func (d *decSymbol) setNBits(nBits uint8) { + const mask = 0xffffffffffffff00 + *d = (*d & mask) | decSymbol(nBits) +} + +func (d *decSymbol) setAddBits(addBits uint8) { + const mask = 0xffffffffffff00ff + *d = (*d & mask) | (decSymbol(addBits) << 8) +} + +func (d *decSymbol) setNewState(state uint16) { + const mask = 0xffffffff0000ffff + *d = (*d & mask) | decSymbol(state)<<16 +} + +func (d *decSymbol) setExt(addBits uint8, baseline uint32) { + const mask = 0xffff00ff + *d = (*d & mask) | (decSymbol(addBits) << 8) | (decSymbol(baseline) << 32) +} + +// decSymbolValue returns the transformed decSymbol for the given symbol. +func decSymbolValue(symb uint8, t []baseOffset) (decSymbol, error) { + if int(symb) >= len(t) { + return 0, fmt.Errorf("rle symbol %d >= max %d", symb, len(t)) + } + lu := t[symb] + return newDecSymbol(0, lu.addBits, 0, lu.baseLine), nil +} + +// setRLE will set the decoder til RLE mode. +func (s *fseDecoder) setRLE(symbol decSymbol) { + s.actualTableLog = 0 + s.maxBits = symbol.addBits() + s.dt[0] = symbol +} + +// transform will transform the decoder table into a table usable for +// decoding without having to apply the transformation while decoding. +// The state will contain the base value and the number of bits to read. +func (s *fseDecoder) transform(t []baseOffset) error { + tableSize := uint16(1 << s.actualTableLog) + s.maxBits = 0 + for i, v := range s.dt[:tableSize] { + add := v.addBits() + if int(add) >= len(t) { + return fmt.Errorf("invalid decoding table entry %d, symbol %d >= max (%d)", i, v.addBits(), len(t)) + } + lu := t[add] + if lu.addBits > s.maxBits { + s.maxBits = lu.addBits + } + v.setExt(lu.addBits, lu.baseLine) + s.dt[i] = v + } + return nil +} + +type fseState struct { + dt []decSymbol + state decSymbol +} + +// Initialize and decodeAsync first state and symbol. +func (s *fseState) init(br *bitReader, tableLog uint8, dt []decSymbol) { + s.dt = dt + br.fill() + s.state = dt[br.getBits(tableLog)] +} + +// final returns the current state symbol without decoding the next. +func (s decSymbol) final() (int, uint8) { + return s.baselineInt(), s.addBits() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go new file mode 100644 index 0000000..d04a829 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go @@ -0,0 +1,65 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +package zstd + +import ( + "fmt" +) + +type buildDtableAsmContext struct { + // inputs + stateTable *uint16 + norm *int16 + dt *uint64 + + // outputs --- set by the procedure in the case of error; + // for interpretation please see the error handling part below + errParam1 uint64 + errParam2 uint64 +} + +// buildDtable_asm is an x86 assembly implementation of fseDecoder.buildDtable. +// Function returns non-zero exit code on error. +// +//go:noescape +func buildDtable_asm(s *fseDecoder, ctx *buildDtableAsmContext) int + +// please keep in sync with _generate/gen_fse.go +const ( + errorCorruptedNormalizedCounter = 1 + errorNewStateTooBig = 2 + errorNewStateNoBits = 3 +) + +// buildDtable will build the decoding table. +func (s *fseDecoder) buildDtable() error { + ctx := buildDtableAsmContext{ + stateTable: &s.stateTable[0], + norm: &s.norm[0], + dt: (*uint64)(&s.dt[0]), + } + code := buildDtable_asm(s, &ctx) + + if code != 0 { + switch code { + case errorCorruptedNormalizedCounter: + position := ctx.errParam1 + return fmt.Errorf("corrupted input (position=%d, expected 0)", position) + + case errorNewStateTooBig: + newState := decSymbol(ctx.errParam1) + size := ctx.errParam2 + return fmt.Errorf("newState (%d) outside table size (%d)", newState, size) + + case errorNewStateNoBits: + newState := decSymbol(ctx.errParam1) + oldState := decSymbol(ctx.errParam2) + return fmt.Errorf("newState (%d) == oldState (%d) and no bits", newState, oldState) + + default: + return fmt.Errorf("buildDtable_asm returned unhandled nonzero code = %d", code) + } + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s new file mode 100644 index 0000000..bcde398 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s @@ -0,0 +1,126 @@ +// Code generated by command: go run gen_fse.go -out ../fse_decoder_amd64.s -pkg=zstd. DO NOT EDIT. + +//go:build !appengine && !noasm && gc && !noasm + +// func buildDtable_asm(s *fseDecoder, ctx *buildDtableAsmContext) int +TEXT ·buildDtable_asm(SB), $0-24 + MOVQ ctx+8(FP), CX + MOVQ s+0(FP), DI + + // Load values + MOVBQZX 4098(DI), DX + XORQ AX, AX + BTSQ DX, AX + MOVQ (CX), BX + MOVQ 16(CX), SI + LEAQ -1(AX), R8 + MOVQ 8(CX), CX + MOVWQZX 4096(DI), DI + + // End load values + // Init, lay down lowprob symbols + XORQ R9, R9 + JMP init_main_loop_condition + +init_main_loop: + MOVWQSX (CX)(R9*2), R10 + CMPW R10, $-1 + JNE do_not_update_high_threshold + MOVB R9, 1(SI)(R8*8) + DECQ R8 + MOVQ $0x0000000000000001, R10 + +do_not_update_high_threshold: + MOVW R10, (BX)(R9*2) + INCQ R9 + +init_main_loop_condition: + CMPQ R9, DI + JL init_main_loop + + // Spread symbols + // Calculate table step + MOVQ AX, R9 + SHRQ $0x01, R9 + MOVQ AX, R10 + SHRQ $0x03, R10 + LEAQ 3(R9)(R10*1), R9 + + // Fill add bits values + LEAQ -1(AX), R10 + XORQ R11, R11 + XORQ R12, R12 + JMP spread_main_loop_condition + +spread_main_loop: + XORQ R13, R13 + MOVWQSX (CX)(R12*2), R14 + JMP spread_inner_loop_condition + +spread_inner_loop: + MOVB R12, 1(SI)(R11*8) + +adjust_position: + ADDQ R9, R11 + ANDQ R10, R11 + CMPQ R11, R8 + JG adjust_position + INCQ R13 + +spread_inner_loop_condition: + CMPQ R13, R14 + JL spread_inner_loop + INCQ R12 + +spread_main_loop_condition: + CMPQ R12, DI + JL spread_main_loop + TESTQ R11, R11 + JZ spread_check_ok + MOVQ ctx+8(FP), AX + MOVQ R11, 24(AX) + MOVQ $+1, ret+16(FP) + RET + +spread_check_ok: + // Build Decoding table + XORQ DI, DI + +build_table_main_table: + MOVBQZX 1(SI)(DI*8), CX + MOVWQZX (BX)(CX*2), R8 + LEAQ 1(R8), R9 + MOVW R9, (BX)(CX*2) + MOVQ R8, R9 + BSRQ R9, R9 + MOVQ DX, CX + SUBQ R9, CX + SHLQ CL, R8 + SUBQ AX, R8 + MOVB CL, (SI)(DI*8) + MOVW R8, 2(SI)(DI*8) + CMPQ R8, AX + JLE build_table_check1_ok + MOVQ ctx+8(FP), CX + MOVQ R8, 24(CX) + MOVQ AX, 32(CX) + MOVQ $+2, ret+16(FP) + RET + +build_table_check1_ok: + TESTB CL, CL + JNZ build_table_check2_ok + CMPW R8, DI + JNE build_table_check2_ok + MOVQ ctx+8(FP), AX + MOVQ R8, 24(AX) + MOVQ DI, 32(AX) + MOVQ $+3, ret+16(FP) + RET + +build_table_check2_ok: + INCQ DI + CMPQ DI, AX + JL build_table_main_table + MOVQ $+0, ret+16(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go new file mode 100644 index 0000000..8adfebb --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go @@ -0,0 +1,73 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +package zstd + +import ( + "errors" + "fmt" +) + +// buildDtable will build the decoding table. +func (s *fseDecoder) buildDtable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + symbolNext := s.stateTable[:256] + + // Init, lay down lowprob symbols + { + for i, v := range s.norm[:s.symbolLen] { + if v == -1 { + s.dt[highThreshold].setAddBits(uint8(i)) + highThreshold-- + v = 1 + } + symbolNext[i] = uint16(v) + } + } + + // Spread symbols + { + tableMask := tableSize - 1 + step := tableStep(tableSize) + position := uint32(0) + for ss, v := range s.norm[:s.symbolLen] { + for i := 0; i < int(v); i++ { + s.dt[position].setAddBits(uint8(ss)) + for { + // lowprob area + position = (position + step) & tableMask + if position <= highThreshold { + break + } + } + } + } + if position != 0 { + // position must reach all cells once, otherwise normalizedCounter is incorrect + return errors.New("corrupted input (position != 0)") + } + } + + // Build Decoding table + { + tableSize := uint16(1 << s.actualTableLog) + for u, v := range s.dt[:tableSize] { + symbol := v.addBits() + nextState := symbolNext[symbol] + symbolNext[symbol] = nextState + 1 + nBits := s.actualTableLog - byte(highBits(uint32(nextState))) + s.dt[u&maxTableMask].setNBits(nBits) + newState := (nextState << nBits) - tableSize + if newState > tableSize { + return fmt.Errorf("newState (%d) outside table size (%d)", newState, tableSize) + } + if newState == uint16(u) && nBits == 0 { + // Seems weird that this is possible with nbits > 0. + return fmt.Errorf("newState (%d) == oldState (%d) and no bits", newState, u) + } + s.dt[u&maxTableMask].setNewState(newState) + } + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go new file mode 100644 index 0000000..ab26326 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go @@ -0,0 +1,701 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "math" +) + +const ( + // For encoding we only support up to + maxEncTableLog = 8 + maxEncTablesize = 1 << maxTableLog + maxEncTableMask = (1 << maxTableLog) - 1 + minEncTablelog = 5 + maxEncSymbolValue = maxMatchLengthSymbol +) + +// Scratch provides temporary storage for compression and decompression. +type fseEncoder struct { + symbolLen uint16 // Length of active part of the symbol table. + actualTableLog uint8 // Selected tablelog. + ct cTable // Compression tables. + maxCount int // count of the most probable symbol + zeroBits bool // no bits has prob > 50%. + clearCount bool // clear count + useRLE bool // This encoder is for RLE + preDefined bool // This encoder is predefined. + reUsed bool // Set to know when the encoder has been reused. + rleVal uint8 // RLE Symbol + maxBits uint8 // Maximum output bits after transform. + + // TODO: Technically zstd should be fine with 64 bytes. + count [256]uint32 + norm [256]int16 +} + +// cTable contains tables used for compression. +type cTable struct { + tableSymbol []byte + stateTable []uint16 + symbolTT []symbolTransform +} + +// symbolTransform contains the state transform for a symbol. +type symbolTransform struct { + deltaNbBits uint32 + deltaFindState int16 + outBits uint8 +} + +// String prints values as a human readable string. +func (s symbolTransform) String() string { + return fmt.Sprintf("{deltabits: %08x, findstate:%d outbits:%d}", s.deltaNbBits, s.deltaFindState, s.outBits) +} + +// Histogram allows to populate the histogram and skip that step in the compression, +// It otherwise allows to inspect the histogram when compression is done. +// To indicate that you have populated the histogram call HistogramFinished +// with the value of the highest populated symbol, as well as the number of entries +// in the most populated entry. These are accepted at face value. +func (s *fseEncoder) Histogram() *[256]uint32 { + return &s.count +} + +// HistogramFinished can be called to indicate that the histogram has been populated. +// maxSymbol is the index of the highest set symbol of the next data segment. +// maxCount is the number of entries in the most populated entry. +// These are accepted at face value. +func (s *fseEncoder) HistogramFinished(maxSymbol uint8, maxCount int) { + s.maxCount = maxCount + s.symbolLen = uint16(maxSymbol) + 1 + s.clearCount = maxCount != 0 +} + +// allocCtable will allocate tables needed for compression. +// If existing tables a re big enough, they are simply re-used. +func (s *fseEncoder) allocCtable() { + tableSize := 1 << s.actualTableLog + // get tableSymbol that is big enough. + if cap(s.ct.tableSymbol) < tableSize { + s.ct.tableSymbol = make([]byte, tableSize) + } + s.ct.tableSymbol = s.ct.tableSymbol[:tableSize] + + ctSize := tableSize + if cap(s.ct.stateTable) < ctSize { + s.ct.stateTable = make([]uint16, ctSize) + } + s.ct.stateTable = s.ct.stateTable[:ctSize] + + if cap(s.ct.symbolTT) < 256 { + s.ct.symbolTT = make([]symbolTransform, 256) + } + s.ct.symbolTT = s.ct.symbolTT[:256] +} + +// buildCTable will populate the compression table so it is ready to be used. +func (s *fseEncoder) buildCTable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + var cumul [256]int16 + + s.allocCtable() + tableSymbol := s.ct.tableSymbol[:tableSize] + // symbol start positions + { + cumul[0] = 0 + for ui, v := range s.norm[:s.symbolLen-1] { + u := byte(ui) // one less than reference + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = u + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + } + // Encode last symbol separately to avoid overflowing u + u := int(s.symbolLen - 1) + v := s.norm[s.symbolLen-1] + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = byte(u) + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + if uint32(cumul[s.symbolLen]) != tableSize { + return fmt.Errorf("internal error: expected cumul[s.symbolLen] (%d) == tableSize (%d)", cumul[s.symbolLen], tableSize) + } + cumul[s.symbolLen] = int16(tableSize) + 1 + } + // Spread symbols + s.zeroBits = false + { + step := tableStep(tableSize) + tableMask := tableSize - 1 + var position uint32 + // if any symbol > largeLimit, we may have 0 bits output. + largeLimit := int16(1 << (s.actualTableLog - 1)) + for ui, v := range s.norm[:s.symbolLen] { + symbol := byte(ui) + if v > largeLimit { + s.zeroBits = true + } + for nbOccurrences := int16(0); nbOccurrences < v; nbOccurrences++ { + tableSymbol[position] = symbol + position = (position + step) & tableMask + for position > highThreshold { + position = (position + step) & tableMask + } /* Low proba area */ + } + } + + // Check if we have gone through all positions + if position != 0 { + return errors.New("position!=0") + } + } + + // Build table + table := s.ct.stateTable + { + tsi := int(tableSize) + for u, v := range tableSymbol { + // TableU16 : sorted by symbol order; gives next state value + table[cumul[v]] = uint16(tsi + u) + cumul[v]++ + } + } + + // Build Symbol Transformation Table + { + total := int16(0) + symbolTT := s.ct.symbolTT[:s.symbolLen] + tableLog := s.actualTableLog + tl := (uint32(tableLog) << 16) - (1 << tableLog) + for i, v := range s.norm[:s.symbolLen] { + switch v { + case 0: + case -1, 1: + symbolTT[i].deltaNbBits = tl + symbolTT[i].deltaFindState = total - 1 + total++ + default: + maxBitsOut := uint32(tableLog) - highBit(uint32(v-1)) + minStatePlus := uint32(v) << maxBitsOut + symbolTT[i].deltaNbBits = (maxBitsOut << 16) - minStatePlus + symbolTT[i].deltaFindState = total - v + total += v + } + } + if total != int16(tableSize) { + return fmt.Errorf("total mismatch %d (got) != %d (want)", total, tableSize) + } + } + return nil +} + +var rtbTable = [...]uint32{0, 473195, 504333, 520860, 550000, 700000, 750000, 830000} + +func (s *fseEncoder) setRLE(val byte) { + s.allocCtable() + s.actualTableLog = 0 + s.ct.stateTable = s.ct.stateTable[:1] + s.ct.symbolTT[val] = symbolTransform{ + deltaFindState: 0, + deltaNbBits: 0, + } + if debugEncoder { + println("setRLE: val", val, "symbolTT", s.ct.symbolTT[val]) + } + s.rleVal = val + s.useRLE = true +} + +// setBits will set output bits for the transform. +// if nil is provided, the number of bits is equal to the index. +func (s *fseEncoder) setBits(transform []byte) { + if s.reUsed || s.preDefined { + return + } + if s.useRLE { + if transform == nil { + s.ct.symbolTT[s.rleVal].outBits = s.rleVal + s.maxBits = s.rleVal + return + } + s.maxBits = transform[s.rleVal] + s.ct.symbolTT[s.rleVal].outBits = s.maxBits + return + } + if transform == nil { + for i := range s.ct.symbolTT[:s.symbolLen] { + s.ct.symbolTT[i].outBits = uint8(i) + } + s.maxBits = uint8(s.symbolLen - 1) + return + } + s.maxBits = 0 + for i, v := range transform[:s.symbolLen] { + s.ct.symbolTT[i].outBits = v + if v > s.maxBits { + // We could assume bits always going up, but we play safe. + s.maxBits = v + } + } +} + +// normalizeCount will normalize the count of the symbols so +// the total is equal to the table size. +// If successful, compression tables will also be made ready. +func (s *fseEncoder) normalizeCount(length int) error { + if s.reUsed { + return nil + } + s.optimalTableLog(length) + var ( + tableLog = s.actualTableLog + scale = 62 - uint64(tableLog) + step = (1 << 62) / uint64(length) + vStep = uint64(1) << (scale - 20) + stillToDistribute = int16(1 << tableLog) + largest int + largestP int16 + lowThreshold = (uint32)(length >> tableLog) + ) + if s.maxCount == length { + s.useRLE = true + return nil + } + s.useRLE = false + for i, cnt := range s.count[:s.symbolLen] { + // already handled + // if (count[s] == s.length) return 0; /* rle special case */ + + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + stillToDistribute-- + } else { + proba := (int16)((uint64(cnt) * step) >> scale) + if proba < 8 { + restToBeat := vStep * uint64(rtbTable[proba]) + v := uint64(cnt)*step - (uint64(proba) << scale) + if v > restToBeat { + proba++ + } + } + if proba > largestP { + largestP = proba + largest = i + } + s.norm[i] = proba + stillToDistribute -= proba + } + } + + if -stillToDistribute >= (s.norm[largest] >> 1) { + // corner case, need another normalization method + err := s.normalizeCount2(length) + if err != nil { + return err + } + if debugAsserts { + err = s.validateNorm() + if err != nil { + return err + } + } + return s.buildCTable() + } + s.norm[largest] += stillToDistribute + if debugAsserts { + err := s.validateNorm() + if err != nil { + return err + } + } + return s.buildCTable() +} + +// Secondary normalization method. +// To be used when primary method fails. +func (s *fseEncoder) normalizeCount2(length int) error { + const notYetAssigned = -2 + var ( + distributed uint32 + total = uint32(length) + tableLog = s.actualTableLog + lowThreshold = total >> tableLog + lowOne = (total * 3) >> (tableLog + 1) + ) + for i, cnt := range s.count[:s.symbolLen] { + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + distributed++ + total -= cnt + continue + } + if cnt <= lowOne { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + s.norm[i] = notYetAssigned + } + toDistribute := (1 << tableLog) - distributed + + if (total / toDistribute) > lowOne { + // risk of rounding to zero + lowOne = (total * 3) / (toDistribute * 2) + for i, cnt := range s.count[:s.symbolLen] { + if (s.norm[i] == notYetAssigned) && (cnt <= lowOne) { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + } + toDistribute = (1 << tableLog) - distributed + } + if distributed == uint32(s.symbolLen)+1 { + // all values are pretty poor; + // probably incompressible data (should have already been detected); + // find max, then give all remaining points to max + var maxV int + var maxC uint32 + for i, cnt := range s.count[:s.symbolLen] { + if cnt > maxC { + maxV = i + maxC = cnt + } + } + s.norm[maxV] += int16(toDistribute) + return nil + } + + if total == 0 { + // all of the symbols were low enough for the lowOne or lowThreshold + for i := uint32(0); toDistribute > 0; i = (i + 1) % (uint32(s.symbolLen)) { + if s.norm[i] > 0 { + toDistribute-- + s.norm[i]++ + } + } + return nil + } + + var ( + vStepLog = 62 - uint64(tableLog) + mid = uint64((1 << (vStepLog - 1)) - 1) + rStep = (((1 << vStepLog) * uint64(toDistribute)) + mid) / uint64(total) // scale on remaining + tmpTotal = mid + ) + for i, cnt := range s.count[:s.symbolLen] { + if s.norm[i] == notYetAssigned { + var ( + end = tmpTotal + uint64(cnt)*rStep + sStart = uint32(tmpTotal >> vStepLog) + sEnd = uint32(end >> vStepLog) + weight = sEnd - sStart + ) + if weight < 1 { + return errors.New("weight < 1") + } + s.norm[i] = int16(weight) + tmpTotal = end + } + } + return nil +} + +// optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog +func (s *fseEncoder) optimalTableLog(length int) { + tableLog := uint8(maxEncTableLog) + minBitsSrc := highBit(uint32(length)) + 1 + minBitsSymbols := highBit(uint32(s.symbolLen-1)) + 2 + minBits := uint8(minBitsSymbols) + if minBitsSrc < minBitsSymbols { + minBits = uint8(minBitsSrc) + } + + maxBitsSrc := uint8(highBit(uint32(length-1))) - 2 + if maxBitsSrc < tableLog { + // Accuracy can be reduced + tableLog = maxBitsSrc + } + if minBits > tableLog { + tableLog = minBits + } + // Need a minimum to safely represent all symbol values + if tableLog < minEncTablelog { + tableLog = minEncTablelog + } + if tableLog > maxEncTableLog { + tableLog = maxEncTableLog + } + s.actualTableLog = tableLog +} + +// validateNorm validates the normalized histogram table. +func (s *fseEncoder) validateNorm() (err error) { + var total int + for _, v := range s.norm[:s.symbolLen] { + if v >= 0 { + total += int(v) + } else { + total -= int(v) + } + } + defer func() { + if err == nil { + return + } + fmt.Printf("selected TableLog: %d, Symbol length: %d\n", s.actualTableLog, s.symbolLen) + for i, v := range s.norm[:s.symbolLen] { + fmt.Printf("%3d: %5d -> %4d \n", i, s.count[i], v) + } + }() + if total != (1 << s.actualTableLog) { + return fmt.Errorf("warning: Total == %d != %d", total, 1<> 3) + 3 + 2 + + // Write Table Size + bitStream = uint32(tableLog - minEncTablelog) + bitCount = uint(4) + remaining = int16(tableSize + 1) /* +1 for extra accuracy */ + threshold = int16(tableSize) + nbBits = uint(tableLog + 1) + outP = len(out) + ) + if cap(out) < outP+maxHeaderSize { + out = append(out, make([]byte, maxHeaderSize*3)...) + out = out[:len(out)-maxHeaderSize*3] + } + out = out[:outP+maxHeaderSize] + + // stops at 1 + for remaining > 1 { + if previous0 { + start := charnum + for s.norm[charnum] == 0 { + charnum++ + } + for charnum >= start+24 { + start += 24 + bitStream += uint32(0xFFFF) << bitCount + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + } + for charnum >= start+3 { + start += 3 + bitStream += 3 << bitCount + bitCount += 2 + } + bitStream += uint32(charnum-start) << bitCount + bitCount += 2 + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + count := s.norm[charnum] + charnum++ + max := (2*threshold - 1) - remaining + if count < 0 { + remaining += count + } else { + remaining -= count + } + count++ // +1 for extra accuracy + if count >= threshold { + count += max // [0..max[ [max..threshold[ (...) [threshold+max 2*threshold[ + } + bitStream += uint32(count) << bitCount + bitCount += nbBits + if count < max { + bitCount-- + } + + previous0 = count == 1 + if remaining < 1 { + return nil, errors.New("internal error: remaining < 1") + } + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + if outP+2 > len(out) { + return nil, fmt.Errorf("internal error: %d > %d, maxheader: %d, sl: %d, tl: %d, normcount: %v", outP+2, len(out), maxHeaderSize, s.symbolLen, int(tableLog), s.norm[:s.symbolLen]) + } + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += int((bitCount + 7) / 8) + + if charnum > s.symbolLen { + return nil, errors.New("internal error: charnum > s.symbolLen") + } + return out[:outP], nil +} + +// Approximate symbol cost, as fractional value, using fixed-point format (accuracyLog fractional bits) +// note 1 : assume symbolValue is valid (<= maxSymbolValue) +// note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits * +func (s *fseEncoder) bitCost(symbolValue uint8, accuracyLog uint32) uint32 { + minNbBits := s.ct.symbolTT[symbolValue].deltaNbBits >> 16 + threshold := (minNbBits + 1) << 16 + if debugAsserts { + if !(s.actualTableLog < 16) { + panic("!s.actualTableLog < 16") + } + // ensure enough room for renormalization double shift + if !(uint8(accuracyLog) < 31-s.actualTableLog) { + panic("!uint8(accuracyLog) < 31-s.actualTableLog") + } + } + tableSize := uint32(1) << s.actualTableLog + deltaFromThreshold := threshold - (s.ct.symbolTT[symbolValue].deltaNbBits + tableSize) + // linear interpolation (very approximate) + normalizedDeltaFromThreshold := (deltaFromThreshold << accuracyLog) >> s.actualTableLog + bitMultiplier := uint32(1) << accuracyLog + if debugAsserts { + if s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold { + panic("s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold") + } + if normalizedDeltaFromThreshold > bitMultiplier { + panic("normalizedDeltaFromThreshold > bitMultiplier") + } + } + return (minNbBits+1)*bitMultiplier - normalizedDeltaFromThreshold +} + +// Returns the cost in bits of encoding the distribution in count using ctable. +// Histogram should only be up to the last non-zero symbol. +// Returns an -1 if ctable cannot represent all the symbols in count. +func (s *fseEncoder) approxSize(hist []uint32) uint32 { + if int(s.symbolLen) < len(hist) { + // More symbols than we have. + return math.MaxUint32 + } + if s.useRLE { + // We will never reuse RLE encoders. + return math.MaxUint32 + } + const kAccuracyLog = 8 + badCost := (uint32(s.actualTableLog) + 1) << kAccuracyLog + var cost uint32 + for i, v := range hist { + if v == 0 { + continue + } + if s.norm[i] == 0 { + return math.MaxUint32 + } + bitCost := s.bitCost(uint8(i), kAccuracyLog) + if bitCost > badCost { + return math.MaxUint32 + } + cost += v * bitCost + } + return cost >> kAccuracyLog +} + +// maxHeaderSize returns the maximum header size in bits. +// This is not exact size, but we want a penalty for new tables anyway. +func (s *fseEncoder) maxHeaderSize() uint32 { + if s.preDefined { + return 0 + } + if s.useRLE { + return 8 + } + return (((uint32(s.symbolLen) * uint32(s.actualTableLog)) >> 3) + 3) * 8 +} + +// cState contains the compression state of a stream. +type cState struct { + bw *bitWriter + stateTable []uint16 + state uint16 +} + +// init will initialize the compression state to the first symbol of the stream. +func (c *cState) init(bw *bitWriter, ct *cTable, first symbolTransform) { + c.bw = bw + c.stateTable = ct.stateTable + if len(c.stateTable) == 1 { + // RLE + c.stateTable[0] = uint16(0) + c.state = 0 + return + } + nbBitsOut := (first.deltaNbBits + (1 << 15)) >> 16 + im := int32((nbBitsOut << 16) - first.deltaNbBits) + lu := (im >> nbBitsOut) + int32(first.deltaFindState) + c.state = c.stateTable[lu] +} + +// flush will write the tablelog to the output and flush the remaining full bytes. +func (c *cState) flush(tableLog uint8) { + c.bw.flush32() + c.bw.addBits16NC(c.state, tableLog) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go new file mode 100644 index 0000000..474cb77 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go @@ -0,0 +1,158 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "fmt" + "math" + "sync" +) + +var ( + // fsePredef are the predefined fse tables as defined here: + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#default-distributions + // These values are already transformed. + fsePredef [3]fseDecoder + + // fsePredefEnc are the predefined encoder based on fse tables as defined here: + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#default-distributions + // These values are already transformed. + fsePredefEnc [3]fseEncoder + + // symbolTableX contain the transformations needed for each type as defined in + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#the-codes-for-literals-lengths-match-lengths-and-offsets + symbolTableX [3][]baseOffset + + // maxTableSymbol is the biggest supported symbol for each table type + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#the-codes-for-literals-lengths-match-lengths-and-offsets + maxTableSymbol = [3]uint8{tableLiteralLengths: maxLiteralLengthSymbol, tableOffsets: maxOffsetLengthSymbol, tableMatchLengths: maxMatchLengthSymbol} + + // bitTables is the bits table for each table. + bitTables = [3][]byte{tableLiteralLengths: llBitsTable[:], tableOffsets: nil, tableMatchLengths: mlBitsTable[:]} +) + +type tableIndex uint8 + +const ( + // indexes for fsePredef and symbolTableX + tableLiteralLengths tableIndex = 0 + tableOffsets tableIndex = 1 + tableMatchLengths tableIndex = 2 + + maxLiteralLengthSymbol = 35 + maxOffsetLengthSymbol = 30 + maxMatchLengthSymbol = 52 +) + +// baseOffset is used for calculating transformations. +type baseOffset struct { + baseLine uint32 + addBits uint8 +} + +// fillBase will precalculate base offsets with the given bit distributions. +func fillBase(dst []baseOffset, base uint32, bits ...uint8) { + if len(bits) != len(dst) { + panic(fmt.Sprintf("len(dst) (%d) != len(bits) (%d)", len(dst), len(bits))) + } + for i, bit := range bits { + if base > math.MaxInt32 { + panic("invalid decoding table, base overflows int32") + } + + dst[i] = baseOffset{ + baseLine: base, + addBits: bit, + } + base += 1 << bit + } +} + +var predef sync.Once + +func initPredefined() { + predef.Do(func() { + // Literals length codes + tmp := make([]baseOffset, 36) + for i := range tmp[:16] { + tmp[i] = baseOffset{ + baseLine: uint32(i), + addBits: 0, + } + } + fillBase(tmp[16:], 16, 1, 1, 1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + symbolTableX[tableLiteralLengths] = tmp + + // Match length codes + tmp = make([]baseOffset, 53) + for i := range tmp[:32] { + tmp[i] = baseOffset{ + // The transformation adds the 3 length. + baseLine: uint32(i) + 3, + addBits: 0, + } + } + fillBase(tmp[32:], 35, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + symbolTableX[tableMatchLengths] = tmp + + // Offset codes + tmp = make([]baseOffset, maxOffsetBits+1) + tmp[1] = baseOffset{ + baseLine: 1, + addBits: 1, + } + fillBase(tmp[2:], 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30) + symbolTableX[tableOffsets] = tmp + + // Fill predefined tables and transform them. + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#default-distributions + for i := range fsePredef[:] { + f := &fsePredef[i] + switch tableIndex(i) { + case tableLiteralLengths: + // https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L243 + f.actualTableLog = 6 + copy(f.norm[:], []int16{4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, + -1, -1, -1, -1}) + f.symbolLen = 36 + case tableOffsets: + // https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L281 + f.actualTableLog = 5 + copy(f.norm[:], []int16{ + 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1}) + f.symbolLen = 29 + case tableMatchLengths: + //https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L304 + f.actualTableLog = 6 + copy(f.norm[:], []int16{ + 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, + -1, -1, -1, -1, -1}) + f.symbolLen = 53 + } + if err := f.buildDtable(); err != nil { + panic(fmt.Errorf("building table %v: %v", tableIndex(i), err)) + } + if err := f.transform(symbolTableX[i]); err != nil { + panic(fmt.Errorf("building table %v: %v", tableIndex(i), err)) + } + f.preDefined = true + + // Create encoder as well + enc := &fsePredefEnc[i] + copy(enc.norm[:], f.norm[:]) + enc.symbolLen = f.symbolLen + enc.actualTableLog = f.actualTableLog + if err := enc.buildCTable(); err != nil { + panic(fmt.Errorf("building encoding table %v: %v", tableIndex(i), err)) + } + enc.setBits(bitTables[i]) + enc.preDefined = true + } + }) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/hash.go b/examples/go/vendor/github.com/klauspost/compress/zstd/hash.go new file mode 100644 index 0000000..5d73c21 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/hash.go @@ -0,0 +1,35 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +const ( + prime3bytes = 506832829 + prime4bytes = 2654435761 + prime5bytes = 889523592379 + prime6bytes = 227718039650203 + prime7bytes = 58295818150454627 + prime8bytes = 0xcf1bbcdcb7a56463 +) + +// hashLen returns a hash of the lowest mls bytes of with length output bits. +// mls must be >=3 and <=8. Any other value will return hash for 4 bytes. +// length should always be < 32. +// Preferably length and mls should be a constant for inlining. +func hashLen(u uint64, length, mls uint8) uint32 { + switch mls { + case 3: + return (uint32(u<<8) * prime3bytes) >> (32 - length) + case 5: + return uint32(((u << (64 - 40)) * prime5bytes) >> (64 - length)) + case 6: + return uint32(((u << (64 - 48)) * prime6bytes) >> (64 - length)) + case 7: + return uint32(((u << (64 - 56)) * prime7bytes) >> (64 - length)) + case 8: + return uint32((u * prime8bytes) >> (64 - length)) + default: + return (uint32(u) * prime4bytes) >> (32 - length) + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/history.go b/examples/go/vendor/github.com/klauspost/compress/zstd/history.go new file mode 100644 index 0000000..0916485 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/history.go @@ -0,0 +1,116 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "github.com/klauspost/compress/huff0" +) + +// history contains the information transferred between blocks. +type history struct { + // Literal decompression + huffTree *huff0.Scratch + + // Sequence decompression + decoders sequenceDecs + recentOffsets [3]int + + // History buffer... + b []byte + + // ignoreBuffer is meant to ignore a number of bytes + // when checking for matches in history + ignoreBuffer int + + windowSize int + allocFrameBuffer int // needed? + error bool + dict *dict +} + +// reset will reset the history to initial state of a frame. +// The history must already have been initialized to the desired size. +func (h *history) reset() { + h.b = h.b[:0] + h.ignoreBuffer = 0 + h.error = false + h.recentOffsets = [3]int{1, 4, 8} + h.decoders.freeDecoders() + h.decoders = sequenceDecs{br: h.decoders.br} + h.freeHuffDecoder() + h.huffTree = nil + h.dict = nil + //printf("history created: %+v (l: %d, c: %d)", *h, len(h.b), cap(h.b)) +} + +func (h *history) freeHuffDecoder() { + if h.huffTree != nil { + if h.dict == nil || h.dict.litEnc != h.huffTree { + huffDecoderPool.Put(h.huffTree) + h.huffTree = nil + } + } +} + +func (h *history) setDict(dict *dict) { + if dict == nil { + return + } + h.dict = dict + h.decoders.litLengths = dict.llDec + h.decoders.offsets = dict.ofDec + h.decoders.matchLengths = dict.mlDec + h.decoders.dict = dict.content + h.recentOffsets = dict.offsets + h.huffTree = dict.litEnc +} + +// append bytes to history. +// This function will make sure there is space for it, +// if the buffer has been allocated with enough extra space. +func (h *history) append(b []byte) { + if len(b) >= h.windowSize { + // Discard all history by simply overwriting + h.b = h.b[:h.windowSize] + copy(h.b, b[len(b)-h.windowSize:]) + return + } + + // If there is space, append it. + if len(b) < cap(h.b)-len(h.b) { + h.b = append(h.b, b...) + return + } + + // Move data down so we only have window size left. + // We know we have less than window size in b at this point. + discard := len(b) + len(h.b) - h.windowSize + copy(h.b, h.b[discard:]) + h.b = h.b[:h.windowSize] + copy(h.b[h.windowSize-len(b):], b) +} + +// ensureBlock will ensure there is space for at least one block... +func (h *history) ensureBlock() { + if cap(h.b) < h.allocFrameBuffer { + h.b = make([]byte, 0, h.allocFrameBuffer) + return + } + + avail := cap(h.b) - len(h.b) + if avail >= h.windowSize || avail > maxCompressedBlockSize { + return + } + // Move data down so we only have window size left. + // We know we have less than window size in b at this point. + discard := len(h.b) - h.windowSize + copy(h.b, h.b[discard:]) + h.b = h.b[:h.windowSize] +} + +// append bytes to history without ever discarding anything. +func (h *history) appendKeep(b []byte) { + h.b = append(h.b, b...) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt new file mode 100644 index 0000000..24b5306 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2016 Caleb Spare + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md new file mode 100644 index 0000000..777290d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md @@ -0,0 +1,71 @@ +# xxhash + +VENDORED: Go to [github.com/cespare/xxhash](https://github.com/cespare/xxhash) for original package. + +xxhash is a Go implementation of the 64-bit [xxHash] algorithm, XXH64. This is a +high-quality hashing algorithm that is much faster than anything in the Go +standard library. + +This package provides a straightforward API: + +``` +func Sum64(b []byte) uint64 +func Sum64String(s string) uint64 +type Digest struct{ ... } + func New() *Digest +``` + +The `Digest` type implements hash.Hash64. Its key methods are: + +``` +func (*Digest) Write([]byte) (int, error) +func (*Digest) WriteString(string) (int, error) +func (*Digest) Sum64() uint64 +``` + +The package is written with optimized pure Go and also contains even faster +assembly implementations for amd64 and arm64. If desired, the `purego` build tag +opts into using the Go code even on those architectures. + +[xxHash]: http://cyan4973.github.io/xxHash/ + +## Compatibility + +This package is in a module and the latest code is in version 2 of the module. +You need a version of Go with at least "minimal module compatibility" to use +github.com/cespare/xxhash/v2: + +* 1.9.7+ for Go 1.9 +* 1.10.3+ for Go 1.10 +* Go 1.11 or later + +I recommend using the latest release of Go. + +## Benchmarks + +Here are some quick benchmarks comparing the pure-Go and assembly +implementations of Sum64. + +| input size | purego | asm | +| ---------- | --------- | --------- | +| 4 B | 1.3 GB/s | 1.2 GB/s | +| 16 B | 2.9 GB/s | 3.5 GB/s | +| 100 B | 6.9 GB/s | 8.1 GB/s | +| 4 KB | 11.7 GB/s | 16.7 GB/s | +| 10 MB | 12.0 GB/s | 17.3 GB/s | + +These numbers were generated on Ubuntu 20.04 with an Intel Xeon Platinum 8252C +CPU using the following commands under Go 1.19.2: + +``` +benchstat <(go test -tags purego -benchtime 500ms -count 15 -bench 'Sum64$') +benchstat <(go test -benchtime 500ms -count 15 -bench 'Sum64$') +``` + +## Projects using this package + +- [InfluxDB](https://github.com/influxdata/influxdb) +- [Prometheus](https://github.com/prometheus/prometheus) +- [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) +- [FreeCache](https://github.com/coocood/freecache) +- [FastCache](https://github.com/VictoriaMetrics/fastcache) diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go new file mode 100644 index 0000000..fc40c82 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go @@ -0,0 +1,230 @@ +// Package xxhash implements the 64-bit variant of xxHash (XXH64) as described +// at http://cyan4973.github.io/xxHash/. +// THIS IS VENDORED: Go to github.com/cespare/xxhash for original package. + +package xxhash + +import ( + "encoding/binary" + "errors" + "math/bits" +) + +const ( + prime1 uint64 = 11400714785074694791 + prime2 uint64 = 14029467366897019727 + prime3 uint64 = 1609587929392839161 + prime4 uint64 = 9650029242287828579 + prime5 uint64 = 2870177450012600261 +) + +// Store the primes in an array as well. +// +// The consts are used when possible in Go code to avoid MOVs but we need a +// contiguous array of the assembly code. +var primes = [...]uint64{prime1, prime2, prime3, prime4, prime5} + +// Digest implements hash.Hash64. +type Digest struct { + v1 uint64 + v2 uint64 + v3 uint64 + v4 uint64 + total uint64 + mem [32]byte + n int // how much of mem is used +} + +// New creates a new Digest that computes the 64-bit xxHash algorithm. +func New() *Digest { + var d Digest + d.Reset() + return &d +} + +// Reset clears the Digest's state so that it can be reused. +func (d *Digest) Reset() { + d.v1 = primes[0] + prime2 + d.v2 = prime2 + d.v3 = 0 + d.v4 = -primes[0] + d.total = 0 + d.n = 0 +} + +// Size always returns 8 bytes. +func (d *Digest) Size() int { return 8 } + +// BlockSize always returns 32 bytes. +func (d *Digest) BlockSize() int { return 32 } + +// Write adds more data to d. It always returns len(b), nil. +func (d *Digest) Write(b []byte) (n int, err error) { + n = len(b) + d.total += uint64(n) + + memleft := d.mem[d.n&(len(d.mem)-1):] + + if d.n+n < 32 { + // This new data doesn't even fill the current block. + copy(memleft, b) + d.n += n + return + } + + if d.n > 0 { + // Finish off the partial block. + c := copy(memleft, b) + d.v1 = round(d.v1, u64(d.mem[0:8])) + d.v2 = round(d.v2, u64(d.mem[8:16])) + d.v3 = round(d.v3, u64(d.mem[16:24])) + d.v4 = round(d.v4, u64(d.mem[24:32])) + b = b[c:] + d.n = 0 + } + + if len(b) >= 32 { + // One or more full blocks left. + nw := writeBlocks(d, b) + b = b[nw:] + } + + // Store any remaining partial block. + copy(d.mem[:], b) + d.n = len(b) + + return +} + +// Sum appends the current hash to b and returns the resulting slice. +func (d *Digest) Sum(b []byte) []byte { + s := d.Sum64() + return append( + b, + byte(s>>56), + byte(s>>48), + byte(s>>40), + byte(s>>32), + byte(s>>24), + byte(s>>16), + byte(s>>8), + byte(s), + ) +} + +// Sum64 returns the current hash. +func (d *Digest) Sum64() uint64 { + var h uint64 + + if d.total >= 32 { + v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 + h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + h = mergeRound(h, v1) + h = mergeRound(h, v2) + h = mergeRound(h, v3) + h = mergeRound(h, v4) + } else { + h = d.v3 + prime5 + } + + h += d.total + + b := d.mem[:d.n&(len(d.mem)-1)] + for ; len(b) >= 8; b = b[8:] { + k1 := round(0, u64(b[:8])) + h ^= k1 + h = rol27(h)*prime1 + prime4 + } + if len(b) >= 4 { + h ^= uint64(u32(b[:4])) * prime1 + h = rol23(h)*prime2 + prime3 + b = b[4:] + } + for ; len(b) > 0; b = b[1:] { + h ^= uint64(b[0]) * prime5 + h = rol11(h) * prime1 + } + + h ^= h >> 33 + h *= prime2 + h ^= h >> 29 + h *= prime3 + h ^= h >> 32 + + return h +} + +const ( + magic = "xxh\x06" + marshaledSize = len(magic) + 8*5 + 32 +) + +// MarshalBinary implements the encoding.BinaryMarshaler interface. +func (d *Digest) MarshalBinary() ([]byte, error) { + b := make([]byte, 0, marshaledSize) + b = append(b, magic...) + b = appendUint64(b, d.v1) + b = appendUint64(b, d.v2) + b = appendUint64(b, d.v3) + b = appendUint64(b, d.v4) + b = appendUint64(b, d.total) + b = append(b, d.mem[:d.n]...) + b = b[:len(b)+len(d.mem)-d.n] + return b, nil +} + +// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. +func (d *Digest) UnmarshalBinary(b []byte) error { + if len(b) < len(magic) || string(b[:len(magic)]) != magic { + return errors.New("xxhash: invalid hash state identifier") + } + if len(b) != marshaledSize { + return errors.New("xxhash: invalid hash state size") + } + b = b[len(magic):] + b, d.v1 = consumeUint64(b) + b, d.v2 = consumeUint64(b) + b, d.v3 = consumeUint64(b) + b, d.v4 = consumeUint64(b) + b, d.total = consumeUint64(b) + copy(d.mem[:], b) + d.n = int(d.total % uint64(len(d.mem))) + return nil +} + +func appendUint64(b []byte, x uint64) []byte { + var a [8]byte + binary.LittleEndian.PutUint64(a[:], x) + return append(b, a[:]...) +} + +func consumeUint64(b []byte) ([]byte, uint64) { + x := u64(b) + return b[8:], x +} + +func u64(b []byte) uint64 { return binary.LittleEndian.Uint64(b) } +func u32(b []byte) uint32 { return binary.LittleEndian.Uint32(b) } + +func round(acc, input uint64) uint64 { + acc += input * prime2 + acc = rol31(acc) + acc *= prime1 + return acc +} + +func mergeRound(acc, val uint64) uint64 { + val = round(0, val) + acc ^= val + acc = acc*prime1 + prime4 + return acc +} + +func rol1(x uint64) uint64 { return bits.RotateLeft64(x, 1) } +func rol7(x uint64) uint64 { return bits.RotateLeft64(x, 7) } +func rol11(x uint64) uint64 { return bits.RotateLeft64(x, 11) } +func rol12(x uint64) uint64 { return bits.RotateLeft64(x, 12) } +func rol18(x uint64) uint64 { return bits.RotateLeft64(x, 18) } +func rol23(x uint64) uint64 { return bits.RotateLeft64(x, 23) } +func rol27(x uint64) uint64 { return bits.RotateLeft64(x, 27) } +func rol31(x uint64) uint64 { return bits.RotateLeft64(x, 31) } diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s new file mode 100644 index 0000000..ddb63aa --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s @@ -0,0 +1,210 @@ +//go:build !appengine && gc && !purego && !noasm +// +build !appengine +// +build gc +// +build !purego +// +build !noasm + +#include "textflag.h" + +// Registers: +#define h AX +#define d AX +#define p SI // pointer to advance through b +#define n DX +#define end BX // loop end +#define v1 R8 +#define v2 R9 +#define v3 R10 +#define v4 R11 +#define x R12 +#define prime1 R13 +#define prime2 R14 +#define prime4 DI + +#define round(acc, x) \ + IMULQ prime2, x \ + ADDQ x, acc \ + ROLQ $31, acc \ + IMULQ prime1, acc + +// round0 performs the operation x = round(0, x). +#define round0(x) \ + IMULQ prime2, x \ + ROLQ $31, x \ + IMULQ prime1, x + +// mergeRound applies a merge round on the two registers acc and x. +// It assumes that prime1, prime2, and prime4 have been loaded. +#define mergeRound(acc, x) \ + round0(x) \ + XORQ x, acc \ + IMULQ prime1, acc \ + ADDQ prime4, acc + +// blockLoop processes as many 32-byte blocks as possible, +// updating v1, v2, v3, and v4. It assumes that there is at least one block +// to process. +#define blockLoop() \ +loop: \ + MOVQ +0(p), x \ + round(v1, x) \ + MOVQ +8(p), x \ + round(v2, x) \ + MOVQ +16(p), x \ + round(v3, x) \ + MOVQ +24(p), x \ + round(v4, x) \ + ADDQ $32, p \ + CMPQ p, end \ + JLE loop + +// func Sum64(b []byte) uint64 +TEXT ·Sum64(SB), NOSPLIT|NOFRAME, $0-32 + // Load fixed primes. + MOVQ ·primes+0(SB), prime1 + MOVQ ·primes+8(SB), prime2 + MOVQ ·primes+24(SB), prime4 + + // Load slice. + MOVQ b_base+0(FP), p + MOVQ b_len+8(FP), n + LEAQ (p)(n*1), end + + // The first loop limit will be len(b)-32. + SUBQ $32, end + + // Check whether we have at least one block. + CMPQ n, $32 + JLT noBlocks + + // Set up initial state (v1, v2, v3, v4). + MOVQ prime1, v1 + ADDQ prime2, v1 + MOVQ prime2, v2 + XORQ v3, v3 + XORQ v4, v4 + SUBQ prime1, v4 + + blockLoop() + + MOVQ v1, h + ROLQ $1, h + MOVQ v2, x + ROLQ $7, x + ADDQ x, h + MOVQ v3, x + ROLQ $12, x + ADDQ x, h + MOVQ v4, x + ROLQ $18, x + ADDQ x, h + + mergeRound(h, v1) + mergeRound(h, v2) + mergeRound(h, v3) + mergeRound(h, v4) + + JMP afterBlocks + +noBlocks: + MOVQ ·primes+32(SB), h + +afterBlocks: + ADDQ n, h + + ADDQ $24, end + CMPQ p, end + JG try4 + +loop8: + MOVQ (p), x + ADDQ $8, p + round0(x) + XORQ x, h + ROLQ $27, h + IMULQ prime1, h + ADDQ prime4, h + + CMPQ p, end + JLE loop8 + +try4: + ADDQ $4, end + CMPQ p, end + JG try1 + + MOVL (p), x + ADDQ $4, p + IMULQ prime1, x + XORQ x, h + + ROLQ $23, h + IMULQ prime2, h + ADDQ ·primes+16(SB), h + +try1: + ADDQ $4, end + CMPQ p, end + JGE finalize + +loop1: + MOVBQZX (p), x + ADDQ $1, p + IMULQ ·primes+32(SB), x + XORQ x, h + ROLQ $11, h + IMULQ prime1, h + + CMPQ p, end + JL loop1 + +finalize: + MOVQ h, x + SHRQ $33, x + XORQ x, h + IMULQ prime2, h + MOVQ h, x + SHRQ $29, x + XORQ x, h + IMULQ ·primes+16(SB), h + MOVQ h, x + SHRQ $32, x + XORQ x, h + + MOVQ h, ret+24(FP) + RET + +// func writeBlocks(d *Digest, b []byte) int +TEXT ·writeBlocks(SB), NOSPLIT|NOFRAME, $0-40 + // Load fixed primes needed for round. + MOVQ ·primes+0(SB), prime1 + MOVQ ·primes+8(SB), prime2 + + // Load slice. + MOVQ b_base+8(FP), p + MOVQ b_len+16(FP), n + LEAQ (p)(n*1), end + SUBQ $32, end + + // Load vN from d. + MOVQ s+0(FP), d + MOVQ 0(d), v1 + MOVQ 8(d), v2 + MOVQ 16(d), v3 + MOVQ 24(d), v4 + + // We don't need to check the loop condition here; this function is + // always called with at least one block of data to process. + blockLoop() + + // Copy vN back to d. + MOVQ v1, 0(d) + MOVQ v2, 8(d) + MOVQ v3, 16(d) + MOVQ v4, 24(d) + + // The number of bytes written is p minus the old base pointer. + SUBQ b_base+8(FP), p + MOVQ p, ret+32(FP) + + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s new file mode 100644 index 0000000..ae7d4d3 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s @@ -0,0 +1,184 @@ +//go:build !appengine && gc && !purego && !noasm +// +build !appengine +// +build gc +// +build !purego +// +build !noasm + +#include "textflag.h" + +// Registers: +#define digest R1 +#define h R2 // return value +#define p R3 // input pointer +#define n R4 // input length +#define nblocks R5 // n / 32 +#define prime1 R7 +#define prime2 R8 +#define prime3 R9 +#define prime4 R10 +#define prime5 R11 +#define v1 R12 +#define v2 R13 +#define v3 R14 +#define v4 R15 +#define x1 R20 +#define x2 R21 +#define x3 R22 +#define x4 R23 + +#define round(acc, x) \ + MADD prime2, acc, x, acc \ + ROR $64-31, acc \ + MUL prime1, acc + +// round0 performs the operation x = round(0, x). +#define round0(x) \ + MUL prime2, x \ + ROR $64-31, x \ + MUL prime1, x + +#define mergeRound(acc, x) \ + round0(x) \ + EOR x, acc \ + MADD acc, prime4, prime1, acc + +// blockLoop processes as many 32-byte blocks as possible, +// updating v1, v2, v3, and v4. It assumes that n >= 32. +#define blockLoop() \ + LSR $5, n, nblocks \ + PCALIGN $16 \ + loop: \ + LDP.P 16(p), (x1, x2) \ + LDP.P 16(p), (x3, x4) \ + round(v1, x1) \ + round(v2, x2) \ + round(v3, x3) \ + round(v4, x4) \ + SUB $1, nblocks \ + CBNZ nblocks, loop + +// func Sum64(b []byte) uint64 +TEXT ·Sum64(SB), NOSPLIT|NOFRAME, $0-32 + LDP b_base+0(FP), (p, n) + + LDP ·primes+0(SB), (prime1, prime2) + LDP ·primes+16(SB), (prime3, prime4) + MOVD ·primes+32(SB), prime5 + + CMP $32, n + CSEL LT, prime5, ZR, h // if n < 32 { h = prime5 } else { h = 0 } + BLT afterLoop + + ADD prime1, prime2, v1 + MOVD prime2, v2 + MOVD $0, v3 + NEG prime1, v4 + + blockLoop() + + ROR $64-1, v1, x1 + ROR $64-7, v2, x2 + ADD x1, x2 + ROR $64-12, v3, x3 + ROR $64-18, v4, x4 + ADD x3, x4 + ADD x2, x4, h + + mergeRound(h, v1) + mergeRound(h, v2) + mergeRound(h, v3) + mergeRound(h, v4) + +afterLoop: + ADD n, h + + TBZ $4, n, try8 + LDP.P 16(p), (x1, x2) + + round0(x1) + + // NOTE: here and below, sequencing the EOR after the ROR (using a + // rotated register) is worth a small but measurable speedup for small + // inputs. + ROR $64-27, h + EOR x1 @> 64-27, h, h + MADD h, prime4, prime1, h + + round0(x2) + ROR $64-27, h + EOR x2 @> 64-27, h, h + MADD h, prime4, prime1, h + +try8: + TBZ $3, n, try4 + MOVD.P 8(p), x1 + + round0(x1) + ROR $64-27, h + EOR x1 @> 64-27, h, h + MADD h, prime4, prime1, h + +try4: + TBZ $2, n, try2 + MOVWU.P 4(p), x2 + + MUL prime1, x2 + ROR $64-23, h + EOR x2 @> 64-23, h, h + MADD h, prime3, prime2, h + +try2: + TBZ $1, n, try1 + MOVHU.P 2(p), x3 + AND $255, x3, x1 + LSR $8, x3, x2 + + MUL prime5, x1 + ROR $64-11, h + EOR x1 @> 64-11, h, h + MUL prime1, h + + MUL prime5, x2 + ROR $64-11, h + EOR x2 @> 64-11, h, h + MUL prime1, h + +try1: + TBZ $0, n, finalize + MOVBU (p), x4 + + MUL prime5, x4 + ROR $64-11, h + EOR x4 @> 64-11, h, h + MUL prime1, h + +finalize: + EOR h >> 33, h + MUL prime2, h + EOR h >> 29, h + MUL prime3, h + EOR h >> 32, h + + MOVD h, ret+24(FP) + RET + +// func writeBlocks(s *Digest, b []byte) int +TEXT ·writeBlocks(SB), NOSPLIT|NOFRAME, $0-40 + LDP ·primes+0(SB), (prime1, prime2) + + // Load state. Assume v[1-4] are stored contiguously. + MOVD s+0(FP), digest + LDP 0(digest), (v1, v2) + LDP 16(digest), (v3, v4) + + LDP b_base+8(FP), (p, n) + + blockLoop() + + // Store updated state. + STP (v1, v2), 0(digest) + STP (v3, v4), 16(digest) + + BIC $31, n + MOVD n, ret+32(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go new file mode 100644 index 0000000..d4221ed --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go @@ -0,0 +1,16 @@ +//go:build (amd64 || arm64) && !appengine && gc && !purego && !noasm +// +build amd64 arm64 +// +build !appengine +// +build gc +// +build !purego +// +build !noasm + +package xxhash + +// Sum64 computes the 64-bit xxHash digest of b. +// +//go:noescape +func Sum64(b []byte) uint64 + +//go:noescape +func writeBlocks(s *Digest, b []byte) int diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go new file mode 100644 index 0000000..0be16ce --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go @@ -0,0 +1,76 @@ +//go:build (!amd64 && !arm64) || appengine || !gc || purego || noasm +// +build !amd64,!arm64 appengine !gc purego noasm + +package xxhash + +// Sum64 computes the 64-bit xxHash digest of b. +func Sum64(b []byte) uint64 { + // A simpler version would be + // d := New() + // d.Write(b) + // return d.Sum64() + // but this is faster, particularly for small inputs. + + n := len(b) + var h uint64 + + if n >= 32 { + v1 := primes[0] + prime2 + v2 := prime2 + v3 := uint64(0) + v4 := -primes[0] + for len(b) >= 32 { + v1 = round(v1, u64(b[0:8:len(b)])) + v2 = round(v2, u64(b[8:16:len(b)])) + v3 = round(v3, u64(b[16:24:len(b)])) + v4 = round(v4, u64(b[24:32:len(b)])) + b = b[32:len(b):len(b)] + } + h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + h = mergeRound(h, v1) + h = mergeRound(h, v2) + h = mergeRound(h, v3) + h = mergeRound(h, v4) + } else { + h = prime5 + } + + h += uint64(n) + + for ; len(b) >= 8; b = b[8:] { + k1 := round(0, u64(b[:8])) + h ^= k1 + h = rol27(h)*prime1 + prime4 + } + if len(b) >= 4 { + h ^= uint64(u32(b[:4])) * prime1 + h = rol23(h)*prime2 + prime3 + b = b[4:] + } + for ; len(b) > 0; b = b[1:] { + h ^= uint64(b[0]) * prime5 + h = rol11(h) * prime1 + } + + h ^= h >> 33 + h *= prime2 + h ^= h >> 29 + h *= prime3 + h ^= h >> 32 + + return h +} + +func writeBlocks(d *Digest, b []byte) int { + v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 + n := len(b) + for len(b) >= 32 { + v1 = round(v1, u64(b[0:8:len(b)])) + v2 = round(v2, u64(b[8:16:len(b)])) + v3 = round(v3, u64(b[16:24:len(b)])) + v4 = round(v4, u64(b[24:32:len(b)])) + b = b[32:len(b):len(b)] + } + d.v1, d.v2, d.v3, d.v4 = v1, v2, v3, v4 + return n - len(b) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go new file mode 100644 index 0000000..6f3b0cb --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go @@ -0,0 +1,11 @@ +package xxhash + +// Sum64String computes the 64-bit xxHash digest of s. +func Sum64String(s string) uint64 { + return Sum64([]byte(s)) +} + +// WriteString adds more data to d. It always returns len(s), nil. +func (d *Digest) WriteString(s string) (n int, err error) { + return d.Write([]byte(s)) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go new file mode 100644 index 0000000..f41932b --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go @@ -0,0 +1,16 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +// matchLen returns how many bytes match in a and b +// +// It assumes that: +// +// len(a) <= len(b) and len(a) > 0 +// +//go:noescape +func matchLen(a []byte, b []byte) int diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s new file mode 100644 index 0000000..0782b86 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s @@ -0,0 +1,66 @@ +// Copied from S2 implementation. + +//go:build !appengine && !noasm && gc && !noasm + +#include "textflag.h" + +// func matchLen(a []byte, b []byte) int +TEXT ·matchLen(SB), NOSPLIT, $0-56 + MOVQ a_base+0(FP), AX + MOVQ b_base+24(FP), CX + MOVQ a_len+8(FP), DX + + // matchLen + XORL SI, SI + CMPL DX, $0x08 + JB matchlen_match4_standalone + +matchlen_loopback_standalone: + MOVQ (AX)(SI*1), BX + XORQ (CX)(SI*1), BX + JZ matchlen_loop_standalone + +#ifdef GOAMD64_v3 + TZCNTQ BX, BX +#else + BSFQ BX, BX +#endif + SHRL $0x03, BX + LEAL (SI)(BX*1), SI + JMP gen_match_len_end + +matchlen_loop_standalone: + LEAL -8(DX), DX + LEAL 8(SI), SI + CMPL DX, $0x08 + JAE matchlen_loopback_standalone + +matchlen_match4_standalone: + CMPL DX, $0x04 + JB matchlen_match2_standalone + MOVL (AX)(SI*1), BX + CMPL (CX)(SI*1), BX + JNE matchlen_match2_standalone + LEAL -4(DX), DX + LEAL 4(SI), SI + +matchlen_match2_standalone: + CMPL DX, $0x02 + JB matchlen_match1_standalone + MOVW (AX)(SI*1), BX + CMPW (CX)(SI*1), BX + JNE matchlen_match1_standalone + LEAL -2(DX), DX + LEAL 2(SI), SI + +matchlen_match1_standalone: + CMPL DX, $0x01 + JB gen_match_len_end + MOVB (AX)(SI*1), BL + CMPB (CX)(SI*1), BL + JNE gen_match_len_end + INCL SI + +gen_match_len_end: + MOVQ SI, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go new file mode 100644 index 0000000..57b9c31 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go @@ -0,0 +1,33 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +import ( + "encoding/binary" + "math/bits" +) + +// matchLen returns the maximum common prefix length of a and b. +// a must be the shortest of the two. +func matchLen(a, b []byte) (n int) { + for ; len(a) >= 8 && len(b) >= 8; a, b = a[8:], b[8:] { + diff := binary.LittleEndian.Uint64(a) ^ binary.LittleEndian.Uint64(b) + if diff != 0 { + return n + bits.TrailingZeros64(diff)>>3 + } + n += 8 + } + + for i := range a { + if a[i] != b[i] { + break + } + n++ + } + return n + +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go new file mode 100644 index 0000000..d7fe6d8 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go @@ -0,0 +1,503 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "io" +) + +type seq struct { + litLen uint32 + matchLen uint32 + offset uint32 + + // Codes are stored here for the encoder + // so they only have to be looked up once. + llCode, mlCode, ofCode uint8 +} + +type seqVals struct { + ll, ml, mo int +} + +func (s seq) String() string { + if s.offset <= 3 { + if s.offset == 0 { + return fmt.Sprint("litLen:", s.litLen, ", matchLen:", s.matchLen+zstdMinMatch, ", offset: INVALID (0)") + } + return fmt.Sprint("litLen:", s.litLen, ", matchLen:", s.matchLen+zstdMinMatch, ", offset:", s.offset, " (repeat)") + } + return fmt.Sprint("litLen:", s.litLen, ", matchLen:", s.matchLen+zstdMinMatch, ", offset:", s.offset-3, " (new)") +} + +type seqCompMode uint8 + +const ( + compModePredefined seqCompMode = iota + compModeRLE + compModeFSE + compModeRepeat +) + +type sequenceDec struct { + // decoder keeps track of the current state and updates it from the bitstream. + fse *fseDecoder + state fseState + repeat bool +} + +// init the state of the decoder with input from stream. +func (s *sequenceDec) init(br *bitReader) error { + if s.fse == nil { + return errors.New("sequence decoder not defined") + } + s.state.init(br, s.fse.actualTableLog, s.fse.dt[:1< cap(s.out) { + addBytes := s.seqSize + len(s.out) + s.out = append(s.out, make([]byte, addBytes)...) + s.out = s.out[:len(s.out)-addBytes] + } + + if debugDecoder { + printf("Execute %d seqs with hist %d, dict %d, literals: %d into %d bytes\n", len(seqs), len(hist), len(s.dict), len(s.literals), s.seqSize) + } + + var t = len(s.out) + out := s.out[:t+s.seqSize] + + for _, seq := range seqs { + // Add literals + copy(out[t:], s.literals[:seq.ll]) + t += seq.ll + s.literals = s.literals[seq.ll:] + + // Copy from dictionary... + if seq.mo > t+len(hist) || seq.mo > s.windowSize { + if len(s.dict) == 0 { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", seq.mo, t+len(hist)) + } + + // we may be in dictionary. + dictO := len(s.dict) - (seq.mo - (t + len(hist))) + if dictO < 0 || dictO >= len(s.dict) { + return fmt.Errorf("match offset (%d) bigger than current history+dict (%d)", seq.mo, t+len(hist)+len(s.dict)) + } + end := dictO + seq.ml + if end > len(s.dict) { + n := len(s.dict) - dictO + copy(out[t:], s.dict[dictO:]) + t += n + seq.ml -= n + } else { + copy(out[t:], s.dict[dictO:end]) + t += end - dictO + continue + } + } + + // Copy from history. + if v := seq.mo - t; v > 0 { + // v is the start position in history from end. + start := len(hist) - v + if seq.ml > v { + // Some goes into current block. + // Copy remainder of history + copy(out[t:], hist[start:]) + t += v + seq.ml -= v + } else { + copy(out[t:], hist[start:start+seq.ml]) + t += seq.ml + continue + } + } + // We must be in current buffer now + if seq.ml > 0 { + start := t - seq.mo + if seq.ml <= t-start { + // No overlap + copy(out[t:], out[start:start+seq.ml]) + t += seq.ml + continue + } else { + // Overlapping copy + // Extend destination slice and copy one byte at the time. + src := out[start : start+seq.ml] + dst := out[t:] + dst = dst[:len(src)] + t += len(src) + // Destination is the space we just added. + for i := range src { + dst[i] = src[i] + } + } + } + } + + // Add final literals + copy(out[t:], s.literals) + if debugDecoder { + t += len(s.literals) + if t != len(out) { + panic(fmt.Errorf("length mismatch, want %d, got %d, ss: %d", len(out), t, s.seqSize)) + } + } + s.out = out + + return nil +} + +// decode sequences from the stream with the provided history. +func (s *sequenceDecs) decodeSync(hist []byte) error { + supported, err := s.decodeSyncSimple(hist) + if supported { + return err + } + + br := s.br + seqs := s.nSeqs + startSize := len(s.out) + // Grab full sizes tables, to avoid bounds checks. + llTable, mlTable, ofTable := s.litLengths.fse.dt[:maxTablesize], s.matchLengths.fse.dt[:maxTablesize], s.offsets.fse.dt[:maxTablesize] + llState, mlState, ofState := s.litLengths.state.state, s.matchLengths.state.state, s.offsets.state.state + out := s.out + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + + if debugDecoder { + println("decodeSync: decoding", seqs, "sequences", br.remain(), "bits remain on stream") + } + for i := seqs - 1; i >= 0; i-- { + if br.overread() { + printf("reading sequence %d, exceeded available data. Overread by %d\n", seqs-i, -br.remain()) + return io.ErrUnexpectedEOF + } + var ll, mo, ml int + if len(br.in) > 4+((maxOffsetBits+16+16)>>3) { + // inlined function: + // ll, mo, ml = s.nextFast(br, llState, mlState, ofState) + + // Final will not read from stream. + var llB, mlB, moB uint8 + ll, llB = llState.final() + ml, mlB = mlState.final() + mo, moB = ofState.final() + + // extra bits are stored in reverse order. + br.fillFast() + mo += br.getBits(moB) + if s.maxBits > 32 { + br.fillFast() + } + ml += br.getBits(mlB) + ll += br.getBits(llB) + + if moB > 1 { + s.prevOffset[2] = s.prevOffset[1] + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = mo + } else { + // mo = s.adjustOffset(mo, ll, moB) + // Inlined for rather big speedup + if ll == 0 { + // There is an exception though, when current sequence's literals_length = 0. + // In this case, repeated offsets are shifted by one, so an offset_value of 1 means Repeated_Offset2, + // an offset_value of 2 means Repeated_Offset3, and an offset_value of 3 means Repeated_Offset1 - 1_byte. + mo++ + } + + if mo == 0 { + mo = s.prevOffset[0] + } else { + var temp int + if mo == 3 { + temp = s.prevOffset[0] - 1 + } else { + temp = s.prevOffset[mo] + } + + if temp == 0 { + // 0 is not valid; input is corrupted; force offset to 1 + println("WARNING: temp was 0") + temp = 1 + } + + if mo != 1 { + s.prevOffset[2] = s.prevOffset[1] + } + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = temp + mo = temp + } + } + br.fillFast() + } else { + ll, mo, ml = s.next(br, llState, mlState, ofState) + br.fill() + } + + if debugSequences { + println("Seq", seqs-i-1, "Litlen:", ll, "mo:", mo, "(abs) ml:", ml) + } + + if ll > len(s.literals) { + return fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", ll, len(s.literals)) + } + size := ll + ml + len(out) + if size-startSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + if size > cap(out) { + // Not enough size, which can happen under high volume block streaming conditions + // but could be if destination slice is too small for sync operations. + // over-allocating here can create a large amount of GC pressure so we try to keep + // it as contained as possible + used := len(out) - startSize + addBytes := 256 + ll + ml + used>>2 + // Clamp to max block size. + if used+addBytes > maxBlockSize { + addBytes = maxBlockSize - used + } + out = append(out, make([]byte, addBytes)...) + out = out[:len(out)-addBytes] + } + if ml > maxMatchLen { + return fmt.Errorf("match len (%d) bigger than max allowed length", ml) + } + + // Add literals + out = append(out, s.literals[:ll]...) + s.literals = s.literals[ll:] + + if mo == 0 && ml > 0 { + return fmt.Errorf("zero matchoff and matchlen (%d) > 0", ml) + } + + if mo > len(out)+len(hist) || mo > s.windowSize { + if len(s.dict) == 0 { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", mo, len(out)+len(hist)-startSize) + } + + // we may be in dictionary. + dictO := len(s.dict) - (mo - (len(out) + len(hist))) + if dictO < 0 || dictO >= len(s.dict) { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", mo, len(out)+len(hist)-startSize) + } + end := dictO + ml + if end > len(s.dict) { + out = append(out, s.dict[dictO:]...) + ml -= len(s.dict) - dictO + } else { + out = append(out, s.dict[dictO:end]...) + mo = 0 + ml = 0 + } + } + + // Copy from history. + // TODO: Blocks without history could be made to ignore this completely. + if v := mo - len(out); v > 0 { + // v is the start position in history from end. + start := len(hist) - v + if ml > v { + // Some goes into current block. + // Copy remainder of history + out = append(out, hist[start:]...) + ml -= v + } else { + out = append(out, hist[start:start+ml]...) + ml = 0 + } + } + // We must be in current buffer now + if ml > 0 { + start := len(out) - mo + if ml <= len(out)-start { + // No overlap + out = append(out, out[start:start+ml]...) + } else { + // Overlapping copy + // Extend destination slice and copy one byte at the time. + out = out[:len(out)+ml] + src := out[start : start+ml] + // Destination is the space we just added. + dst := out[len(out)-ml:] + dst = dst[:len(src)] + for i := range src { + dst[i] = src[i] + } + } + } + if i == 0 { + // This is the last sequence, so we shouldn't update state. + break + } + + // Manually inlined, ~ 5-20% faster + // Update all 3 states at once. Approx 20% faster. + nBits := llState.nbBits() + mlState.nbBits() + ofState.nbBits() + if nBits == 0 { + llState = llTable[llState.newState()&maxTableMask] + mlState = mlTable[mlState.newState()&maxTableMask] + ofState = ofTable[ofState.newState()&maxTableMask] + } else { + bits := br.get32BitsFast(nBits) + + lowBits := uint16(bits >> ((ofState.nbBits() + mlState.nbBits()) & 31)) + llState = llTable[(llState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits >> (ofState.nbBits() & 31)) + lowBits &= bitMask[mlState.nbBits()&15] + mlState = mlTable[(mlState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits) & bitMask[ofState.nbBits()&15] + ofState = ofTable[(ofState.newState()+lowBits)&maxTableMask] + } + } + + if size := len(s.literals) + len(out) - startSize; size > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + + // Add final literals + s.out = append(out, s.literals...) + return br.close() +} + +var bitMask [16]uint16 + +func init() { + for i := range bitMask[:] { + bitMask[i] = uint16((1 << uint(i)) - 1) + } +} + +func (s *sequenceDecs) next(br *bitReader, llState, mlState, ofState decSymbol) (ll, mo, ml int) { + // Final will not read from stream. + ll, llB := llState.final() + ml, mlB := mlState.final() + mo, moB := ofState.final() + + // extra bits are stored in reverse order. + br.fill() + mo += br.getBits(moB) + if s.maxBits > 32 { + br.fill() + } + // matchlength+literal length, max 32 bits + ml += br.getBits(mlB) + ll += br.getBits(llB) + mo = s.adjustOffset(mo, ll, moB) + return +} + +func (s *sequenceDecs) adjustOffset(offset, litLen int, offsetB uint8) int { + if offsetB > 1 { + s.prevOffset[2] = s.prevOffset[1] + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = offset + return offset + } + + if litLen == 0 { + // There is an exception though, when current sequence's literals_length = 0. + // In this case, repeated offsets are shifted by one, so an offset_value of 1 means Repeated_Offset2, + // an offset_value of 2 means Repeated_Offset3, and an offset_value of 3 means Repeated_Offset1 - 1_byte. + offset++ + } + + if offset == 0 { + return s.prevOffset[0] + } + var temp int + if offset == 3 { + temp = s.prevOffset[0] - 1 + } else { + temp = s.prevOffset[offset] + } + + if temp == 0 { + // 0 is not valid; input is corrupted; force offset to 1 + println("temp was 0") + temp = 1 + } + + if offset != 1 { + s.prevOffset[2] = s.prevOffset[1] + } + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = temp + return temp +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go new file mode 100644 index 0000000..8adabd8 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go @@ -0,0 +1,394 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +package zstd + +import ( + "fmt" + "io" + + "github.com/klauspost/compress/internal/cpuinfo" +) + +type decodeSyncAsmContext struct { + llTable []decSymbol + mlTable []decSymbol + ofTable []decSymbol + llState uint64 + mlState uint64 + ofState uint64 + iteration int + litRemain int + out []byte + outPosition int + literals []byte + litPosition int + history []byte + windowSize int + ll int // set on error (not for all errors, please refer to _generate/gen.go) + ml int // set on error (not for all errors, please refer to _generate/gen.go) + mo int // set on error (not for all errors, please refer to _generate/gen.go) +} + +// sequenceDecs_decodeSync_amd64 implements the main loop of sequenceDecs.decodeSync in x86 asm. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_decodeSync_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// sequenceDecs_decodeSync_bmi2 implements the main loop of sequenceDecs.decodeSync in x86 asm with BMI2 extensions. +// +//go:noescape +func sequenceDecs_decodeSync_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// sequenceDecs_decodeSync_safe_amd64 does the same as above, but does not write more than output buffer. +// +//go:noescape +func sequenceDecs_decodeSync_safe_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// sequenceDecs_decodeSync_safe_bmi2 does the same as above, but does not write more than output buffer. +// +//go:noescape +func sequenceDecs_decodeSync_safe_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// decode sequences from the stream with the provided history but without a dictionary. +func (s *sequenceDecs) decodeSyncSimple(hist []byte) (bool, error) { + if len(s.dict) > 0 { + return false, nil + } + if s.maxSyncLen == 0 && cap(s.out)-len(s.out) < maxCompressedBlockSize { + return false, nil + } + + // FIXME: Using unsafe memory copies leads to rare, random crashes + // with fuzz testing. It is therefore disabled for now. + const useSafe = true + /* + useSafe := false + if s.maxSyncLen == 0 && cap(s.out)-len(s.out) < maxCompressedBlockSizeAlloc { + useSafe = true + } + if s.maxSyncLen > 0 && cap(s.out)-len(s.out)-compressedBlockOverAlloc < int(s.maxSyncLen) { + useSafe = true + } + if cap(s.literals) < len(s.literals)+compressedBlockOverAlloc { + useSafe = true + } + */ + + br := s.br + + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + + ctx := decodeSyncAsmContext{ + llTable: s.litLengths.fse.dt[:maxTablesize], + mlTable: s.matchLengths.fse.dt[:maxTablesize], + ofTable: s.offsets.fse.dt[:maxTablesize], + llState: uint64(s.litLengths.state.state), + mlState: uint64(s.matchLengths.state.state), + ofState: uint64(s.offsets.state.state), + iteration: s.nSeqs - 1, + litRemain: len(s.literals), + out: s.out, + outPosition: len(s.out), + literals: s.literals, + windowSize: s.windowSize, + history: hist, + } + + s.seqSize = 0 + startSize := len(s.out) + + var errCode int + if cpuinfo.HasBMI2() { + if useSafe { + errCode = sequenceDecs_decodeSync_safe_bmi2(s, br, &ctx) + } else { + errCode = sequenceDecs_decodeSync_bmi2(s, br, &ctx) + } + } else { + if useSafe { + errCode = sequenceDecs_decodeSync_safe_amd64(s, br, &ctx) + } else { + errCode = sequenceDecs_decodeSync_amd64(s, br, &ctx) + } + } + switch errCode { + case noError: + break + + case errorMatchLenOfsMismatch: + return true, fmt.Errorf("zero matchoff and matchlen (%d) > 0", ctx.ml) + + case errorMatchLenTooBig: + return true, fmt.Errorf("match len (%d) bigger than max allowed length", ctx.ml) + + case errorMatchOffTooBig: + return true, fmt.Errorf("match offset (%d) bigger than current history (%d)", + ctx.mo, ctx.outPosition+len(hist)-startSize) + + case errorNotEnoughLiterals: + return true, fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", + ctx.ll, ctx.litRemain+ctx.ll) + + case errorOverread: + return true, io.ErrUnexpectedEOF + + case errorNotEnoughSpace: + size := ctx.outPosition + ctx.ll + ctx.ml + if debugDecoder { + println("msl:", s.maxSyncLen, "cap", cap(s.out), "bef:", startSize, "sz:", size-startSize, "mbs:", maxBlockSize, "outsz:", cap(s.out)-startSize) + } + return true, fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + + default: + return true, fmt.Errorf("sequenceDecs_decode returned erronous code %d", errCode) + } + + s.seqSize += ctx.litRemain + if s.seqSize > maxBlockSize { + return true, fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + err := br.close() + if err != nil { + printf("Closing sequences: %v, %+v\n", err, *br) + return true, err + } + + s.literals = s.literals[ctx.litPosition:] + t := ctx.outPosition + s.out = s.out[:t] + + // Add final literals + s.out = append(s.out, s.literals...) + if debugDecoder { + t += len(s.literals) + if t != len(s.out) { + panic(fmt.Errorf("length mismatch, want %d, got %d", len(s.out), t)) + } + } + + return true, nil +} + +// -------------------------------------------------------------------------------- + +type decodeAsmContext struct { + llTable []decSymbol + mlTable []decSymbol + ofTable []decSymbol + llState uint64 + mlState uint64 + ofState uint64 + iteration int + seqs []seqVals + litRemain int +} + +const noError = 0 + +// error reported when mo == 0 && ml > 0 +const errorMatchLenOfsMismatch = 1 + +// error reported when ml > maxMatchLen +const errorMatchLenTooBig = 2 + +// error reported when mo > available history or mo > s.windowSize +const errorMatchOffTooBig = 3 + +// error reported when the sum of literal lengths exeeceds the literal buffer size +const errorNotEnoughLiterals = 4 + +// error reported when capacity of `out` is too small +const errorNotEnoughSpace = 5 + +// error reported when bits are overread. +const errorOverread = 6 + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_decode_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_decode_56_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm with BMI2 extensions. +// +//go:noescape +func sequenceDecs_decode_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm with BMI2 extensions. +// +//go:noescape +func sequenceDecs_decode_56_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// decode sequences from the stream without the provided history. +func (s *sequenceDecs) decode(seqs []seqVals) error { + br := s.br + + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + + ctx := decodeAsmContext{ + llTable: s.litLengths.fse.dt[:maxTablesize], + mlTable: s.matchLengths.fse.dt[:maxTablesize], + ofTable: s.offsets.fse.dt[:maxTablesize], + llState: uint64(s.litLengths.state.state), + mlState: uint64(s.matchLengths.state.state), + ofState: uint64(s.offsets.state.state), + seqs: seqs, + iteration: len(seqs) - 1, + litRemain: len(s.literals), + } + + if debugDecoder { + println("decode: decoding", len(seqs), "sequences", br.remain(), "bits remain on stream") + } + + s.seqSize = 0 + lte56bits := s.maxBits+s.offsets.fse.actualTableLog+s.matchLengths.fse.actualTableLog+s.litLengths.fse.actualTableLog <= 56 + var errCode int + if cpuinfo.HasBMI2() { + if lte56bits { + errCode = sequenceDecs_decode_56_bmi2(s, br, &ctx) + } else { + errCode = sequenceDecs_decode_bmi2(s, br, &ctx) + } + } else { + if lte56bits { + errCode = sequenceDecs_decode_56_amd64(s, br, &ctx) + } else { + errCode = sequenceDecs_decode_amd64(s, br, &ctx) + } + } + if errCode != 0 { + i := len(seqs) - ctx.iteration - 1 + switch errCode { + case errorMatchLenOfsMismatch: + ml := ctx.seqs[i].ml + return fmt.Errorf("zero matchoff and matchlen (%d) > 0", ml) + + case errorMatchLenTooBig: + ml := ctx.seqs[i].ml + return fmt.Errorf("match len (%d) bigger than max allowed length", ml) + + case errorNotEnoughLiterals: + ll := ctx.seqs[i].ll + return fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", ll, ctx.litRemain+ll) + case errorOverread: + return io.ErrUnexpectedEOF + } + + return fmt.Errorf("sequenceDecs_decode_amd64 returned erronous code %d", errCode) + } + + if ctx.litRemain < 0 { + return fmt.Errorf("literal count is too big: total available %d, total requested %d", + len(s.literals), len(s.literals)-ctx.litRemain) + } + + s.seqSize += ctx.litRemain + if s.seqSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + if debugDecoder { + println("decode: ", br.remain(), "bits remain on stream. code:", errCode) + } + err := br.close() + if err != nil { + printf("Closing sequences: %v, %+v\n", err, *br) + } + return err +} + +// -------------------------------------------------------------------------------- + +type executeAsmContext struct { + seqs []seqVals + seqIndex int + out []byte + history []byte + literals []byte + outPosition int + litPosition int + windowSize int +} + +// sequenceDecs_executeSimple_amd64 implements the main loop of sequenceDecs.executeSimple in x86 asm. +// +// Returns false if a match offset is too big. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_executeSimple_amd64(ctx *executeAsmContext) bool + +// Same as above, but with safe memcopies +// +//go:noescape +func sequenceDecs_executeSimple_safe_amd64(ctx *executeAsmContext) bool + +// executeSimple handles cases when dictionary is not used. +func (s *sequenceDecs) executeSimple(seqs []seqVals, hist []byte) error { + // Ensure we have enough output size... + if len(s.out)+s.seqSize+compressedBlockOverAlloc > cap(s.out) { + addBytes := s.seqSize + len(s.out) + compressedBlockOverAlloc + s.out = append(s.out, make([]byte, addBytes)...) + s.out = s.out[:len(s.out)-addBytes] + } + + if debugDecoder { + printf("Execute %d seqs with literals: %d into %d bytes\n", len(seqs), len(s.literals), s.seqSize) + } + + var t = len(s.out) + out := s.out[:t+s.seqSize] + + ctx := executeAsmContext{ + seqs: seqs, + seqIndex: 0, + out: out, + history: hist, + outPosition: t, + litPosition: 0, + literals: s.literals, + windowSize: s.windowSize, + } + var ok bool + if cap(s.literals) < len(s.literals)+compressedBlockOverAlloc { + ok = sequenceDecs_executeSimple_safe_amd64(&ctx) + } else { + ok = sequenceDecs_executeSimple_amd64(&ctx) + } + if !ok { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", + seqs[ctx.seqIndex].mo, ctx.outPosition+len(hist)) + } + s.literals = s.literals[ctx.litPosition:] + t = ctx.outPosition + + // Add final literals + copy(out[t:], s.literals) + if debugDecoder { + t += len(s.literals) + if t != len(out) { + panic(fmt.Errorf("length mismatch, want %d, got %d, ss: %d", len(out), t, s.seqSize)) + } + } + s.out = out + + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s new file mode 100644 index 0000000..5b06174 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s @@ -0,0 +1,4151 @@ +// Code generated by command: go run gen.go -out ../seqdec_amd64.s -pkg=zstd. DO NOT EDIT. + +//go:build !appengine && !noasm && gc && !noasm + +// func sequenceDecs_decode_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: CMOV +TEXT ·sequenceDecs_decode_amd64(SB), $8-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + MOVQ 104(AX), R10 + MOVQ s+0(FP), AX + MOVQ 144(AX), R11 + MOVQ 152(AX), R12 + MOVQ 160(AX), R13 + +sequenceDecs_decode_amd64_main_loop: + MOVQ (SP), R14 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decode_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R14 + MOVQ (R14), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decode_amd64_fill_end + +sequenceDecs_decode_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decode_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decode_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R14 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R14), AX + ORQ AX, DX + JMP sequenceDecs_decode_amd64_fill_byte_by_byte + +sequenceDecs_decode_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decode_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_of_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_of_update_zero: + MOVQ AX, 16(R10) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_ml_update_zero: + MOVQ AX, 8(R10) + + // Fill bitreader to have enough for the remaining + CMPQ SI, $0x08 + JL sequenceDecs_decode_amd64_fill_2_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R14 + MOVQ (R14), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decode_amd64_fill_2_end + +sequenceDecs_decode_amd64_fill_2_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decode_amd64_fill_2_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decode_amd64_fill_2_end + SHLQ $0x08, DX + SUBQ $0x01, R14 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R14), AX + ORQ AX, DX + JMP sequenceDecs_decode_amd64_fill_2_byte_by_byte + +sequenceDecs_decode_amd64_fill_2_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decode_amd64_fill_2_end: + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_ll_update_zero: + MOVQ AX, (R10) + + // Fill bitreader for state updates + MOVQ R14, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R14 + SHRL $0x10, DI + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R14 + SHRL $0x10, R8 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R14 + SHRL $0x10, R9 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decode_amd64_skip_update: + // Adjust offset + MOVQ 16(R10), CX + CMPQ AX, $0x01 + JBE sequenceDecs_decode_amd64_adjust_offsetB_1_or_0 + MOVQ R12, R13 + MOVQ R11, R12 + MOVQ CX, R11 + JMP sequenceDecs_decode_amd64_after_adjust + +sequenceDecs_decode_amd64_adjust_offsetB_1_or_0: + CMPQ (R10), $0x00000000 + JNE sequenceDecs_decode_amd64_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_amd64_adjust_offset_nonzero + +sequenceDecs_decode_amd64_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_amd64_adjust_offset_nonzero + MOVQ R11, CX + JMP sequenceDecs_decode_amd64_after_adjust + +sequenceDecs_decode_amd64_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_amd64_adjust_zero + JEQ sequenceDecs_decode_amd64_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_amd64_adjust_three + JMP sequenceDecs_decode_amd64_adjust_two + +sequenceDecs_decode_amd64_adjust_zero: + MOVQ R11, AX + JMP sequenceDecs_decode_amd64_adjust_test_temp_valid + +sequenceDecs_decode_amd64_adjust_one: + MOVQ R12, AX + JMP sequenceDecs_decode_amd64_adjust_test_temp_valid + +sequenceDecs_decode_amd64_adjust_two: + MOVQ R13, AX + JMP sequenceDecs_decode_amd64_adjust_test_temp_valid + +sequenceDecs_decode_amd64_adjust_three: + LEAQ -1(R11), AX + +sequenceDecs_decode_amd64_adjust_test_temp_valid: + TESTQ AX, AX + JNZ sequenceDecs_decode_amd64_adjust_temp_valid + MOVQ $0x00000001, AX + +sequenceDecs_decode_amd64_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R12, R13 + MOVQ R11, R12 + MOVQ AX, R11 + MOVQ AX, CX + +sequenceDecs_decode_amd64_after_adjust: + MOVQ CX, 16(R10) + + // Check values + MOVQ 8(R10), AX + MOVQ (R10), R14 + LEAQ (AX)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decode_amd64_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decode_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decode_amd64_match_len_ofs_ok: + ADDQ $0x18, R10 + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decode_amd64_main_loop + MOVQ s+0(FP), AX + MOVQ R11, 144(AX) + MOVQ R12, 152(AX) + MOVQ R13, 160(AX) + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_amd64_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_amd64_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_decode_56_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: CMOV +TEXT ·sequenceDecs_decode_56_amd64(SB), $8-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + MOVQ 104(AX), R10 + MOVQ s+0(FP), AX + MOVQ 144(AX), R11 + MOVQ 152(AX), R12 + MOVQ 160(AX), R13 + +sequenceDecs_decode_56_amd64_main_loop: + MOVQ (SP), R14 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decode_56_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R14 + MOVQ (R14), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decode_56_amd64_fill_end + +sequenceDecs_decode_56_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decode_56_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decode_56_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R14 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R14), AX + ORQ AX, DX + JMP sequenceDecs_decode_56_amd64_fill_byte_by_byte + +sequenceDecs_decode_56_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decode_56_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_of_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_of_update_zero: + MOVQ AX, 16(R10) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_ml_update_zero: + MOVQ AX, 8(R10) + + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_ll_update_zero: + MOVQ AX, (R10) + + // Fill bitreader for state updates + MOVQ R14, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_56_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R14 + SHRL $0x10, DI + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R14 + SHRL $0x10, R8 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R14 + SHRL $0x10, R9 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decode_56_amd64_skip_update: + // Adjust offset + MOVQ 16(R10), CX + CMPQ AX, $0x01 + JBE sequenceDecs_decode_56_amd64_adjust_offsetB_1_or_0 + MOVQ R12, R13 + MOVQ R11, R12 + MOVQ CX, R11 + JMP sequenceDecs_decode_56_amd64_after_adjust + +sequenceDecs_decode_56_amd64_adjust_offsetB_1_or_0: + CMPQ (R10), $0x00000000 + JNE sequenceDecs_decode_56_amd64_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_56_amd64_adjust_offset_nonzero + +sequenceDecs_decode_56_amd64_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_56_amd64_adjust_offset_nonzero + MOVQ R11, CX + JMP sequenceDecs_decode_56_amd64_after_adjust + +sequenceDecs_decode_56_amd64_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_56_amd64_adjust_zero + JEQ sequenceDecs_decode_56_amd64_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_56_amd64_adjust_three + JMP sequenceDecs_decode_56_amd64_adjust_two + +sequenceDecs_decode_56_amd64_adjust_zero: + MOVQ R11, AX + JMP sequenceDecs_decode_56_amd64_adjust_test_temp_valid + +sequenceDecs_decode_56_amd64_adjust_one: + MOVQ R12, AX + JMP sequenceDecs_decode_56_amd64_adjust_test_temp_valid + +sequenceDecs_decode_56_amd64_adjust_two: + MOVQ R13, AX + JMP sequenceDecs_decode_56_amd64_adjust_test_temp_valid + +sequenceDecs_decode_56_amd64_adjust_three: + LEAQ -1(R11), AX + +sequenceDecs_decode_56_amd64_adjust_test_temp_valid: + TESTQ AX, AX + JNZ sequenceDecs_decode_56_amd64_adjust_temp_valid + MOVQ $0x00000001, AX + +sequenceDecs_decode_56_amd64_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R12, R13 + MOVQ R11, R12 + MOVQ AX, R11 + MOVQ AX, CX + +sequenceDecs_decode_56_amd64_after_adjust: + MOVQ CX, 16(R10) + + // Check values + MOVQ 8(R10), AX + MOVQ (R10), R14 + LEAQ (AX)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decode_56_amd64_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_56_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decode_56_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decode_56_amd64_match_len_ofs_ok: + ADDQ $0x18, R10 + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decode_56_amd64_main_loop + MOVQ s+0(FP), AX + MOVQ R11, 144(AX) + MOVQ R12, 152(AX) + MOVQ R13, 160(AX) + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_56_amd64_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_56_amd64_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_decode_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: BMI, BMI2, CMOV +TEXT ·sequenceDecs_decode_bmi2(SB), $8-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + MOVQ 104(CX), R9 + MOVQ s+0(FP), CX + MOVQ 144(CX), R10 + MOVQ 152(CX), R11 + MOVQ 160(CX), R12 + +sequenceDecs_decode_bmi2_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decode_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R13 + MOVQ (R13), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decode_bmi2_fill_end + +sequenceDecs_decode_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decode_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decode_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R13 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R13), CX + ORQ CX, AX + JMP sequenceDecs_decode_bmi2_fill_byte_by_byte + +sequenceDecs_decode_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decode_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 16(R9) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 8(R9) + + // Fill bitreader to have enough for the remaining + CMPQ BX, $0x08 + JL sequenceDecs_decode_bmi2_fill_2_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R13 + MOVQ (R13), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decode_bmi2_fill_2_end + +sequenceDecs_decode_bmi2_fill_2_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decode_bmi2_fill_2_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decode_bmi2_fill_2_end + SHLQ $0x08, AX + SUBQ $0x01, R13 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R13), CX + ORQ CX, AX + JMP sequenceDecs_decode_bmi2_fill_2_byte_by_byte + +sequenceDecs_decode_bmi2_fill_2_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decode_bmi2_fill_2_end: + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, (R9) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_bmi2_skip_update + LEAQ (SI)(DI*1), R14 + ADDQ R8, R14 + MOVBQZX R14, R14 + LEAQ (DX)(R14*1), CX + MOVQ AX, R15 + MOVQ CX, DX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + + // Update Offset State + BZHIQ R8, R15, CX + SHRXQ R8, R15, R15 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R15, CX + SHRXQ DI, R15, R15 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R15, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decode_bmi2_skip_update: + // Adjust offset + MOVQ 16(R9), CX + CMPQ R13, $0x01 + JBE sequenceDecs_decode_bmi2_adjust_offsetB_1_or_0 + MOVQ R11, R12 + MOVQ R10, R11 + MOVQ CX, R10 + JMP sequenceDecs_decode_bmi2_after_adjust + +sequenceDecs_decode_bmi2_adjust_offsetB_1_or_0: + CMPQ (R9), $0x00000000 + JNE sequenceDecs_decode_bmi2_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_bmi2_adjust_offset_nonzero + +sequenceDecs_decode_bmi2_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_bmi2_adjust_offset_nonzero + MOVQ R10, CX + JMP sequenceDecs_decode_bmi2_after_adjust + +sequenceDecs_decode_bmi2_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_bmi2_adjust_zero + JEQ sequenceDecs_decode_bmi2_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_bmi2_adjust_three + JMP sequenceDecs_decode_bmi2_adjust_two + +sequenceDecs_decode_bmi2_adjust_zero: + MOVQ R10, R13 + JMP sequenceDecs_decode_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_bmi2_adjust_one: + MOVQ R11, R13 + JMP sequenceDecs_decode_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_bmi2_adjust_two: + MOVQ R12, R13 + JMP sequenceDecs_decode_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_bmi2_adjust_three: + LEAQ -1(R10), R13 + +sequenceDecs_decode_bmi2_adjust_test_temp_valid: + TESTQ R13, R13 + JNZ sequenceDecs_decode_bmi2_adjust_temp_valid + MOVQ $0x00000001, R13 + +sequenceDecs_decode_bmi2_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R11, R12 + MOVQ R10, R11 + MOVQ R13, R10 + MOVQ R13, CX + +sequenceDecs_decode_bmi2_after_adjust: + MOVQ CX, 16(R9) + + // Check values + MOVQ 8(R9), R13 + MOVQ (R9), R14 + LEAQ (R13)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ R13, $0x00020002 + JA sequenceDecs_decode_bmi2_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_bmi2_match_len_ofs_ok + TESTQ R13, R13 + JNZ sequenceDecs_decode_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decode_bmi2_match_len_ofs_ok: + ADDQ $0x18, R9 + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decode_bmi2_main_loop + MOVQ s+0(FP), CX + MOVQ R10, 144(CX) + MOVQ R11, 152(CX) + MOVQ R12, 160(CX) + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_bmi2_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_bmi2_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_decode_56_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: BMI, BMI2, CMOV +TEXT ·sequenceDecs_decode_56_bmi2(SB), $8-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + MOVQ 104(CX), R9 + MOVQ s+0(FP), CX + MOVQ 144(CX), R10 + MOVQ 152(CX), R11 + MOVQ 160(CX), R12 + +sequenceDecs_decode_56_bmi2_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decode_56_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R13 + MOVQ (R13), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decode_56_bmi2_fill_end + +sequenceDecs_decode_56_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decode_56_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decode_56_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R13 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R13), CX + ORQ CX, AX + JMP sequenceDecs_decode_56_bmi2_fill_byte_by_byte + +sequenceDecs_decode_56_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decode_56_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 16(R9) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 8(R9) + + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, (R9) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_56_bmi2_skip_update + LEAQ (SI)(DI*1), R14 + ADDQ R8, R14 + MOVBQZX R14, R14 + LEAQ (DX)(R14*1), CX + MOVQ AX, R15 + MOVQ CX, DX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + + // Update Offset State + BZHIQ R8, R15, CX + SHRXQ R8, R15, R15 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R15, CX + SHRXQ DI, R15, R15 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R15, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decode_56_bmi2_skip_update: + // Adjust offset + MOVQ 16(R9), CX + CMPQ R13, $0x01 + JBE sequenceDecs_decode_56_bmi2_adjust_offsetB_1_or_0 + MOVQ R11, R12 + MOVQ R10, R11 + MOVQ CX, R10 + JMP sequenceDecs_decode_56_bmi2_after_adjust + +sequenceDecs_decode_56_bmi2_adjust_offsetB_1_or_0: + CMPQ (R9), $0x00000000 + JNE sequenceDecs_decode_56_bmi2_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_56_bmi2_adjust_offset_nonzero + +sequenceDecs_decode_56_bmi2_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_56_bmi2_adjust_offset_nonzero + MOVQ R10, CX + JMP sequenceDecs_decode_56_bmi2_after_adjust + +sequenceDecs_decode_56_bmi2_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_56_bmi2_adjust_zero + JEQ sequenceDecs_decode_56_bmi2_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_56_bmi2_adjust_three + JMP sequenceDecs_decode_56_bmi2_adjust_two + +sequenceDecs_decode_56_bmi2_adjust_zero: + MOVQ R10, R13 + JMP sequenceDecs_decode_56_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_56_bmi2_adjust_one: + MOVQ R11, R13 + JMP sequenceDecs_decode_56_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_56_bmi2_adjust_two: + MOVQ R12, R13 + JMP sequenceDecs_decode_56_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_56_bmi2_adjust_three: + LEAQ -1(R10), R13 + +sequenceDecs_decode_56_bmi2_adjust_test_temp_valid: + TESTQ R13, R13 + JNZ sequenceDecs_decode_56_bmi2_adjust_temp_valid + MOVQ $0x00000001, R13 + +sequenceDecs_decode_56_bmi2_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R11, R12 + MOVQ R10, R11 + MOVQ R13, R10 + MOVQ R13, CX + +sequenceDecs_decode_56_bmi2_after_adjust: + MOVQ CX, 16(R9) + + // Check values + MOVQ 8(R9), R13 + MOVQ (R9), R14 + LEAQ (R13)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ R13, $0x00020002 + JA sequenceDecs_decode_56_bmi2_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_56_bmi2_match_len_ofs_ok + TESTQ R13, R13 + JNZ sequenceDecs_decode_56_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decode_56_bmi2_match_len_ofs_ok: + ADDQ $0x18, R9 + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decode_56_bmi2_main_loop + MOVQ s+0(FP), CX + MOVQ R10, 144(CX) + MOVQ R11, 152(CX) + MOVQ R12, 160(CX) + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_56_bmi2_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_56_bmi2_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_executeSimple_amd64(ctx *executeAsmContext) bool +// Requires: SSE +TEXT ·sequenceDecs_executeSimple_amd64(SB), $8-9 + MOVQ ctx+0(FP), R10 + MOVQ 8(R10), CX + TESTQ CX, CX + JZ empty_seqs + MOVQ (R10), AX + MOVQ 24(R10), DX + MOVQ 32(R10), BX + MOVQ 80(R10), SI + MOVQ 104(R10), DI + MOVQ 120(R10), R8 + MOVQ 56(R10), R9 + MOVQ 64(R10), R10 + ADDQ R10, R9 + + // seqsBase += 24 * seqIndex + LEAQ (DX)(DX*2), R11 + SHLQ $0x03, R11 + ADDQ R11, AX + + // outBase += outPosition + ADDQ DI, BX + +main_loop: + MOVQ (AX), R11 + MOVQ 16(AX), R12 + MOVQ 8(AX), R13 + + // Copy literals + TESTQ R11, R11 + JZ check_offset + XORQ R14, R14 + +copy_1: + MOVUPS (SI)(R14*1), X0 + MOVUPS X0, (BX)(R14*1) + ADDQ $0x10, R14 + CMPQ R14, R11 + JB copy_1 + ADDQ R11, SI + ADDQ R11, BX + ADDQ R11, DI + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + LEAQ (DI)(R10*1), R11 + CMPQ R12, R11 + JG error_match_off_too_big + CMPQ R12, R8 + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, R11 + SUBQ DI, R11 + JLS copy_match + MOVQ R9, R14 + SUBQ R11, R14 + CMPQ R13, R11 + JG copy_all_from_history + MOVQ R13, R11 + SUBQ $0x10, R11 + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R11 + JAE copy_4_loop + LEAQ 16(R14)(R11*1), R14 + LEAQ 16(BX)(R11*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), R11 + MOVB 2(R14), R12 + MOVW R11, (BX) + MOVB R12, 2(BX) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), R11 + MOVL -4(R14)(R13*1), R12 + MOVL R11, (BX) + MOVL R12, -4(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), R11 + MOVQ -8(R14)(R13*1), R12 + MOVQ R11, (BX) + MOVQ R12, -8(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + +copy_4_end: + ADDQ R13, DI + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + JMP loop_finished + +copy_all_from_history: + MOVQ R11, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(BX)(R15*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_5_end + +copy_5_small: + CMPQ R11, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ R11, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(R11*1), BP + MOVB R15, (BX) + MOVB BP, -1(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (BX) + MOVB BP, 2(BX) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(R11*1), BP + MOVL R15, (BX) + MOVL BP, -4(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(R11*1), BP + MOVQ R15, (BX) + MOVQ BP, -8(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + +copy_5_end: + ADDQ R11, DI + SUBQ R11, R13 + + // Copy match from the current buffer +copy_match: + MOVQ BX, R11 + SUBQ R12, R11 + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, DI + MOVQ BX, R12 + ADDQ R13, BX + +copy_2: + MOVUPS (R11), X0 + MOVUPS X0, (R12) + ADDQ $0x10, R11 + ADDQ $0x10, R12 + SUBQ $0x10, R13 + JHI copy_2 + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, DI + +copy_slow_3: + MOVB (R11), R12 + MOVB R12, (BX) + INCQ R11 + INCQ BX + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + +loop_finished: + // Return value + MOVB $0x01, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +error_match_off_too_big: + // Return value + MOVB $0x00, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +empty_seqs: + // Return value + MOVB $0x01, ret+8(FP) + RET + +// func sequenceDecs_executeSimple_safe_amd64(ctx *executeAsmContext) bool +// Requires: SSE +TEXT ·sequenceDecs_executeSimple_safe_amd64(SB), $8-9 + MOVQ ctx+0(FP), R10 + MOVQ 8(R10), CX + TESTQ CX, CX + JZ empty_seqs + MOVQ (R10), AX + MOVQ 24(R10), DX + MOVQ 32(R10), BX + MOVQ 80(R10), SI + MOVQ 104(R10), DI + MOVQ 120(R10), R8 + MOVQ 56(R10), R9 + MOVQ 64(R10), R10 + ADDQ R10, R9 + + // seqsBase += 24 * seqIndex + LEAQ (DX)(DX*2), R11 + SHLQ $0x03, R11 + ADDQ R11, AX + + // outBase += outPosition + ADDQ DI, BX + +main_loop: + MOVQ (AX), R11 + MOVQ 16(AX), R12 + MOVQ 8(AX), R13 + + // Copy literals + TESTQ R11, R11 + JZ check_offset + MOVQ R11, R14 + SUBQ $0x10, R14 + JB copy_1_small + +copy_1_loop: + MOVUPS (SI), X0 + MOVUPS X0, (BX) + ADDQ $0x10, SI + ADDQ $0x10, BX + SUBQ $0x10, R14 + JAE copy_1_loop + LEAQ 16(SI)(R14*1), SI + LEAQ 16(BX)(R14*1), BX + MOVUPS -16(SI), X0 + MOVUPS X0, -16(BX) + JMP copy_1_end + +copy_1_small: + CMPQ R11, $0x03 + JE copy_1_move_3 + JB copy_1_move_1or2 + CMPQ R11, $0x08 + JB copy_1_move_4through7 + JMP copy_1_move_8through16 + +copy_1_move_1or2: + MOVB (SI), R14 + MOVB -1(SI)(R11*1), R15 + MOVB R14, (BX) + MOVB R15, -1(BX)(R11*1) + ADDQ R11, SI + ADDQ R11, BX + JMP copy_1_end + +copy_1_move_3: + MOVW (SI), R14 + MOVB 2(SI), R15 + MOVW R14, (BX) + MOVB R15, 2(BX) + ADDQ R11, SI + ADDQ R11, BX + JMP copy_1_end + +copy_1_move_4through7: + MOVL (SI), R14 + MOVL -4(SI)(R11*1), R15 + MOVL R14, (BX) + MOVL R15, -4(BX)(R11*1) + ADDQ R11, SI + ADDQ R11, BX + JMP copy_1_end + +copy_1_move_8through16: + MOVQ (SI), R14 + MOVQ -8(SI)(R11*1), R15 + MOVQ R14, (BX) + MOVQ R15, -8(BX)(R11*1) + ADDQ R11, SI + ADDQ R11, BX + +copy_1_end: + ADDQ R11, DI + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + LEAQ (DI)(R10*1), R11 + CMPQ R12, R11 + JG error_match_off_too_big + CMPQ R12, R8 + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, R11 + SUBQ DI, R11 + JLS copy_match + MOVQ R9, R14 + SUBQ R11, R14 + CMPQ R13, R11 + JG copy_all_from_history + MOVQ R13, R11 + SUBQ $0x10, R11 + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R11 + JAE copy_4_loop + LEAQ 16(R14)(R11*1), R14 + LEAQ 16(BX)(R11*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), R11 + MOVB 2(R14), R12 + MOVW R11, (BX) + MOVB R12, 2(BX) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), R11 + MOVL -4(R14)(R13*1), R12 + MOVL R11, (BX) + MOVL R12, -4(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), R11 + MOVQ -8(R14)(R13*1), R12 + MOVQ R11, (BX) + MOVQ R12, -8(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + +copy_4_end: + ADDQ R13, DI + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + JMP loop_finished + +copy_all_from_history: + MOVQ R11, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(BX)(R15*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_5_end + +copy_5_small: + CMPQ R11, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ R11, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(R11*1), BP + MOVB R15, (BX) + MOVB BP, -1(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (BX) + MOVB BP, 2(BX) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(R11*1), BP + MOVL R15, (BX) + MOVL BP, -4(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(R11*1), BP + MOVQ R15, (BX) + MOVQ BP, -8(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + +copy_5_end: + ADDQ R11, DI + SUBQ R11, R13 + + // Copy match from the current buffer +copy_match: + MOVQ BX, R11 + SUBQ R12, R11 + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, DI + MOVQ R13, R12 + SUBQ $0x10, R12 + JB copy_2_small + +copy_2_loop: + MOVUPS (R11), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R11 + ADDQ $0x10, BX + SUBQ $0x10, R12 + JAE copy_2_loop + LEAQ 16(R11)(R12*1), R11 + LEAQ 16(BX)(R12*1), BX + MOVUPS -16(R11), X0 + MOVUPS X0, -16(BX) + JMP copy_2_end + +copy_2_small: + CMPQ R13, $0x03 + JE copy_2_move_3 + JB copy_2_move_1or2 + CMPQ R13, $0x08 + JB copy_2_move_4through7 + JMP copy_2_move_8through16 + +copy_2_move_1or2: + MOVB (R11), R12 + MOVB -1(R11)(R13*1), R14 + MOVB R12, (BX) + MOVB R14, -1(BX)(R13*1) + ADDQ R13, R11 + ADDQ R13, BX + JMP copy_2_end + +copy_2_move_3: + MOVW (R11), R12 + MOVB 2(R11), R14 + MOVW R12, (BX) + MOVB R14, 2(BX) + ADDQ R13, R11 + ADDQ R13, BX + JMP copy_2_end + +copy_2_move_4through7: + MOVL (R11), R12 + MOVL -4(R11)(R13*1), R14 + MOVL R12, (BX) + MOVL R14, -4(BX)(R13*1) + ADDQ R13, R11 + ADDQ R13, BX + JMP copy_2_end + +copy_2_move_8through16: + MOVQ (R11), R12 + MOVQ -8(R11)(R13*1), R14 + MOVQ R12, (BX) + MOVQ R14, -8(BX)(R13*1) + ADDQ R13, R11 + ADDQ R13, BX + +copy_2_end: + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, DI + +copy_slow_3: + MOVB (R11), R12 + MOVB R12, (BX) + INCQ R11 + INCQ BX + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + +loop_finished: + // Return value + MOVB $0x01, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +error_match_off_too_big: + // Return value + MOVB $0x00, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +empty_seqs: + // Return value + MOVB $0x01, ret+8(FP) + RET + +// func sequenceDecs_decodeSync_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: CMOV, SSE +TEXT ·sequenceDecs_decodeSync_amd64(SB), $64-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + XORQ CX, CX + MOVQ CX, 8(SP) + MOVQ CX, 16(SP) + MOVQ CX, 24(SP) + MOVQ 112(AX), R10 + MOVQ 128(AX), CX + MOVQ CX, 32(SP) + MOVQ 144(AX), R11 + MOVQ 136(AX), R12 + MOVQ 200(AX), CX + MOVQ CX, 56(SP) + MOVQ 176(AX), CX + MOVQ CX, 48(SP) + MOVQ 184(AX), AX + MOVQ AX, 40(SP) + MOVQ 40(SP), AX + ADDQ AX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R10, 32(SP) + + // outBase += outPosition + ADDQ R12, R10 + +sequenceDecs_decodeSync_amd64_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_amd64_fill_end + +sequenceDecs_decodeSync_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_amd64_fill_byte_by_byte + +sequenceDecs_decodeSync_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_of_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_of_update_zero: + MOVQ AX, 8(SP) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_ml_update_zero: + MOVQ AX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_amd64_fill_2_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_amd64_fill_2_end + +sequenceDecs_decodeSync_amd64_fill_2_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_amd64_fill_2_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_amd64_fill_2_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_amd64_fill_2_byte_by_byte + +sequenceDecs_decodeSync_amd64_fill_2_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_amd64_fill_2_end: + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_ll_update_zero: + MOVQ AX, 24(SP) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R13 + SHRL $0x10, DI + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R13 + SHRL $0x10, R8 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R13 + SHRL $0x10, R9 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decodeSync_amd64_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ AX, $0x01 + JBE sequenceDecs_decodeSync_amd64_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_amd64_after_adjust + +sequenceDecs_decodeSync_amd64_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_amd64_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_amd64_adjust_offset_nonzero + +sequenceDecs_decodeSync_amd64_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_amd64_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_amd64_after_adjust + +sequenceDecs_decodeSync_amd64_adjust_offset_nonzero: + MOVQ R13, AX + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, AX + CMOVQEQ R15, R14 + ADDQ 144(CX)(AX*8), R14 + JNZ sequenceDecs_decodeSync_amd64_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_amd64_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_amd64_adjust_skip + MOVQ 152(CX), AX + MOVQ AX, 160(CX) + +sequenceDecs_decodeSync_amd64_adjust_skip: + MOVQ 144(CX), AX + MOVQ AX, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_amd64_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), AX + MOVQ 24(SP), CX + LEAQ (AX)(CX*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ CX, 104(R14) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decodeSync_amd64_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decodeSync_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_amd64_match_len_ofs_ok: + MOVQ 24(SP), AX + MOVQ 8(SP), CX + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (AX)(R13*1), R14 + ADDQ R10, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ AX, AX + JZ check_offset + XORQ R14, R14 + +copy_1: + MOVUPS (R11)(R14*1), X0 + MOVUPS X0, (R10)(R14*1) + ADDQ $0x10, R14 + CMPQ R14, AX + JB copy_1 + ADDQ AX, R11 + ADDQ AX, R10 + ADDQ AX, R12 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R12, AX + ADDQ 40(SP), AX + CMPQ CX, AX + JG error_match_off_too_big + CMPQ CX, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ CX, AX + SUBQ R12, AX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ AX, R14 + CMPQ R13, AX + JG copy_all_from_history + MOVQ R13, AX + SUBQ $0x10, AX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, AX + JAE copy_4_loop + LEAQ 16(R14)(AX*1), R14 + LEAQ 16(R10)(AX*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), AX + MOVB 2(R14), CL + MOVW AX, (R10) + MOVB CL, 2(R10) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), AX + MOVL -4(R14)(R13*1), CX + MOVL AX, (R10) + MOVL CX, -4(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), AX + MOVQ -8(R14)(R13*1), CX + MOVQ AX, (R10) + MOVQ CX, -8(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + +copy_4_end: + ADDQ R13, R12 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ AX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R10)(R15*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_5_end + +copy_5_small: + CMPQ AX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ AX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(AX*1), BP + MOVB R15, (R10) + MOVB BP, -1(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R10) + MOVB BP, 2(R10) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(AX*1), BP + MOVL R15, (R10) + MOVL BP, -4(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(AX*1), BP + MOVQ R15, (R10) + MOVQ BP, -8(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + +copy_5_end: + ADDQ AX, R12 + SUBQ AX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R10, AX + SUBQ CX, AX + + // ml <= mo + CMPQ R13, CX + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R12 + MOVQ R10, CX + ADDQ R13, R10 + +copy_2: + MOVUPS (AX), X0 + MOVUPS X0, (CX) + ADDQ $0x10, AX + ADDQ $0x10, CX + SUBQ $0x10, R13 + JHI copy_2 + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R12 + +copy_slow_3: + MOVB (AX), CL + MOVB CL, (R10) + INCQ AX + INCQ R10 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decodeSync_amd64_main_loop + +loop_finished: + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R12, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R11 + MOVQ R11, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_amd64_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_amd64_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET + +// func sequenceDecs_decodeSync_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: BMI, BMI2, CMOV, SSE +TEXT ·sequenceDecs_decodeSync_bmi2(SB), $64-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + XORQ R9, R9 + MOVQ R9, 8(SP) + MOVQ R9, 16(SP) + MOVQ R9, 24(SP) + MOVQ 112(CX), R9 + MOVQ 128(CX), R10 + MOVQ R10, 32(SP) + MOVQ 144(CX), R10 + MOVQ 136(CX), R11 + MOVQ 200(CX), R12 + MOVQ R12, 56(SP) + MOVQ 176(CX), R12 + MOVQ R12, 48(SP) + MOVQ 184(CX), CX + MOVQ CX, 40(SP) + MOVQ 40(SP), CX + ADDQ CX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R9, 32(SP) + + // outBase += outPosition + ADDQ R11, R9 + +sequenceDecs_decodeSync_bmi2_main_loop: + MOVQ (SP), R12 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_bmi2_fill_end + +sequenceDecs_decodeSync_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_bmi2_fill_byte_by_byte + +sequenceDecs_decodeSync_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 8(SP) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_bmi2_fill_2_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_bmi2_fill_2_end + +sequenceDecs_decodeSync_bmi2_fill_2_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_bmi2_fill_2_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_bmi2_fill_2_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_bmi2_fill_2_byte_by_byte + +sequenceDecs_decodeSync_bmi2_fill_2_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_bmi2_fill_2_end: + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 24(SP) + + // Fill bitreader for state updates + MOVQ R12, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R12 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_bmi2_skip_update + LEAQ (SI)(DI*1), R13 + ADDQ R8, R13 + MOVBQZX R13, R13 + LEAQ (DX)(R13*1), CX + MOVQ AX, R14 + MOVQ CX, DX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + + // Update Offset State + BZHIQ R8, R14, CX + SHRXQ R8, R14, R14 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R14, CX + SHRXQ DI, R14, R14 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R14, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decodeSync_bmi2_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ R12, $0x01 + JBE sequenceDecs_decodeSync_bmi2_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_bmi2_after_adjust + +sequenceDecs_decodeSync_bmi2_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_bmi2_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero + +sequenceDecs_decodeSync_bmi2_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_bmi2_after_adjust + +sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero: + MOVQ R13, R12 + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, R12 + CMOVQEQ R15, R14 + ADDQ 144(CX)(R12*8), R14 + JNZ sequenceDecs_decodeSync_bmi2_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_bmi2_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_bmi2_adjust_skip + MOVQ 152(CX), R12 + MOVQ R12, 160(CX) + +sequenceDecs_decodeSync_bmi2_adjust_skip: + MOVQ 144(CX), R12 + MOVQ R12, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_bmi2_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), CX + MOVQ 24(SP), R12 + LEAQ (CX)(R12*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ R12, 104(R14) + JS error_not_enough_literals + CMPQ CX, $0x00020002 + JA sequenceDecs_decodeSync_bmi2_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_bmi2_match_len_ofs_ok + TESTQ CX, CX + JNZ sequenceDecs_decodeSync_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_bmi2_match_len_ofs_ok: + MOVQ 24(SP), CX + MOVQ 8(SP), R12 + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (CX)(R13*1), R14 + ADDQ R9, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ CX, CX + JZ check_offset + XORQ R14, R14 + +copy_1: + MOVUPS (R10)(R14*1), X0 + MOVUPS X0, (R9)(R14*1) + ADDQ $0x10, R14 + CMPQ R14, CX + JB copy_1 + ADDQ CX, R10 + ADDQ CX, R9 + ADDQ CX, R11 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R11, CX + ADDQ 40(SP), CX + CMPQ R12, CX + JG error_match_off_too_big + CMPQ R12, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, CX + SUBQ R11, CX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ CX, R14 + CMPQ R13, CX + JG copy_all_from_history + MOVQ R13, CX + SUBQ $0x10, CX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, CX + JAE copy_4_loop + LEAQ 16(R14)(CX*1), R14 + LEAQ 16(R9)(CX*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), CX + MOVB 2(R14), R12 + MOVW CX, (R9) + MOVB R12, 2(R9) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), CX + MOVL -4(R14)(R13*1), R12 + MOVL CX, (R9) + MOVL R12, -4(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), CX + MOVQ -8(R14)(R13*1), R12 + MOVQ CX, (R9) + MOVQ R12, -8(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + +copy_4_end: + ADDQ R13, R11 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ CX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R9)(R15*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_5_end + +copy_5_small: + CMPQ CX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ CX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(CX*1), BP + MOVB R15, (R9) + MOVB BP, -1(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R9) + MOVB BP, 2(R9) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(CX*1), BP + MOVL R15, (R9) + MOVL BP, -4(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(CX*1), BP + MOVQ R15, (R9) + MOVQ BP, -8(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + +copy_5_end: + ADDQ CX, R11 + SUBQ CX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R9, CX + SUBQ R12, CX + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R11 + MOVQ R9, R12 + ADDQ R13, R9 + +copy_2: + MOVUPS (CX), X0 + MOVUPS X0, (R12) + ADDQ $0x10, CX + ADDQ $0x10, R12 + SUBQ $0x10, R13 + JHI copy_2 + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R11 + +copy_slow_3: + MOVB (CX), R12 + MOVB R12, (R9) + INCQ CX + INCQ R9 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decodeSync_bmi2_main_loop + +loop_finished: + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R11, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R10 + MOVQ R10, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_bmi2_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_bmi2_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET + +// func sequenceDecs_decodeSync_safe_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: CMOV, SSE +TEXT ·sequenceDecs_decodeSync_safe_amd64(SB), $64-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + XORQ CX, CX + MOVQ CX, 8(SP) + MOVQ CX, 16(SP) + MOVQ CX, 24(SP) + MOVQ 112(AX), R10 + MOVQ 128(AX), CX + MOVQ CX, 32(SP) + MOVQ 144(AX), R11 + MOVQ 136(AX), R12 + MOVQ 200(AX), CX + MOVQ CX, 56(SP) + MOVQ 176(AX), CX + MOVQ CX, 48(SP) + MOVQ 184(AX), AX + MOVQ AX, 40(SP) + MOVQ 40(SP), AX + ADDQ AX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R10, 32(SP) + + // outBase += outPosition + ADDQ R12, R10 + +sequenceDecs_decodeSync_safe_amd64_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_safe_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_safe_amd64_fill_end + +sequenceDecs_decodeSync_safe_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_safe_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_safe_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_safe_amd64_fill_byte_by_byte + +sequenceDecs_decodeSync_safe_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_of_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_of_update_zero: + MOVQ AX, 8(SP) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_ml_update_zero: + MOVQ AX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_safe_amd64_fill_2_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_safe_amd64_fill_2_end + +sequenceDecs_decodeSync_safe_amd64_fill_2_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_safe_amd64_fill_2_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_safe_amd64_fill_2_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_safe_amd64_fill_2_byte_by_byte + +sequenceDecs_decodeSync_safe_amd64_fill_2_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_amd64_fill_2_end: + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_ll_update_zero: + MOVQ AX, 24(SP) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_safe_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R13 + SHRL $0x10, DI + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R13 + SHRL $0x10, R8 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R13 + SHRL $0x10, R9 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decodeSync_safe_amd64_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ AX, $0x01 + JBE sequenceDecs_decodeSync_safe_amd64_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_safe_amd64_after_adjust + +sequenceDecs_decodeSync_safe_amd64_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_safe_amd64_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero + +sequenceDecs_decodeSync_safe_amd64_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_safe_amd64_after_adjust + +sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero: + MOVQ R13, AX + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, AX + CMOVQEQ R15, R14 + ADDQ 144(CX)(AX*8), R14 + JNZ sequenceDecs_decodeSync_safe_amd64_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_safe_amd64_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_safe_amd64_adjust_skip + MOVQ 152(CX), AX + MOVQ AX, 160(CX) + +sequenceDecs_decodeSync_safe_amd64_adjust_skip: + MOVQ 144(CX), AX + MOVQ AX, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_safe_amd64_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), AX + MOVQ 24(SP), CX + LEAQ (AX)(CX*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ CX, 104(R14) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decodeSync_safe_amd64_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decodeSync_safe_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_safe_amd64_match_len_ofs_ok: + MOVQ 24(SP), AX + MOVQ 8(SP), CX + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (AX)(R13*1), R14 + ADDQ R10, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ AX, AX + JZ check_offset + MOVQ AX, R14 + SUBQ $0x10, R14 + JB copy_1_small + +copy_1_loop: + MOVUPS (R11), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R11 + ADDQ $0x10, R10 + SUBQ $0x10, R14 + JAE copy_1_loop + LEAQ 16(R11)(R14*1), R11 + LEAQ 16(R10)(R14*1), R10 + MOVUPS -16(R11), X0 + MOVUPS X0, -16(R10) + JMP copy_1_end + +copy_1_small: + CMPQ AX, $0x03 + JE copy_1_move_3 + JB copy_1_move_1or2 + CMPQ AX, $0x08 + JB copy_1_move_4through7 + JMP copy_1_move_8through16 + +copy_1_move_1or2: + MOVB (R11), R14 + MOVB -1(R11)(AX*1), R15 + MOVB R14, (R10) + MOVB R15, -1(R10)(AX*1) + ADDQ AX, R11 + ADDQ AX, R10 + JMP copy_1_end + +copy_1_move_3: + MOVW (R11), R14 + MOVB 2(R11), R15 + MOVW R14, (R10) + MOVB R15, 2(R10) + ADDQ AX, R11 + ADDQ AX, R10 + JMP copy_1_end + +copy_1_move_4through7: + MOVL (R11), R14 + MOVL -4(R11)(AX*1), R15 + MOVL R14, (R10) + MOVL R15, -4(R10)(AX*1) + ADDQ AX, R11 + ADDQ AX, R10 + JMP copy_1_end + +copy_1_move_8through16: + MOVQ (R11), R14 + MOVQ -8(R11)(AX*1), R15 + MOVQ R14, (R10) + MOVQ R15, -8(R10)(AX*1) + ADDQ AX, R11 + ADDQ AX, R10 + +copy_1_end: + ADDQ AX, R12 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R12, AX + ADDQ 40(SP), AX + CMPQ CX, AX + JG error_match_off_too_big + CMPQ CX, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ CX, AX + SUBQ R12, AX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ AX, R14 + CMPQ R13, AX + JG copy_all_from_history + MOVQ R13, AX + SUBQ $0x10, AX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, AX + JAE copy_4_loop + LEAQ 16(R14)(AX*1), R14 + LEAQ 16(R10)(AX*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), AX + MOVB 2(R14), CL + MOVW AX, (R10) + MOVB CL, 2(R10) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), AX + MOVL -4(R14)(R13*1), CX + MOVL AX, (R10) + MOVL CX, -4(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), AX + MOVQ -8(R14)(R13*1), CX + MOVQ AX, (R10) + MOVQ CX, -8(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + +copy_4_end: + ADDQ R13, R12 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ AX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R10)(R15*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_5_end + +copy_5_small: + CMPQ AX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ AX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(AX*1), BP + MOVB R15, (R10) + MOVB BP, -1(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R10) + MOVB BP, 2(R10) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(AX*1), BP + MOVL R15, (R10) + MOVL BP, -4(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(AX*1), BP + MOVQ R15, (R10) + MOVQ BP, -8(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + +copy_5_end: + ADDQ AX, R12 + SUBQ AX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R10, AX + SUBQ CX, AX + + // ml <= mo + CMPQ R13, CX + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R12 + MOVQ R13, CX + SUBQ $0x10, CX + JB copy_2_small + +copy_2_loop: + MOVUPS (AX), X0 + MOVUPS X0, (R10) + ADDQ $0x10, AX + ADDQ $0x10, R10 + SUBQ $0x10, CX + JAE copy_2_loop + LEAQ 16(AX)(CX*1), AX + LEAQ 16(R10)(CX*1), R10 + MOVUPS -16(AX), X0 + MOVUPS X0, -16(R10) + JMP copy_2_end + +copy_2_small: + CMPQ R13, $0x03 + JE copy_2_move_3 + JB copy_2_move_1or2 + CMPQ R13, $0x08 + JB copy_2_move_4through7 + JMP copy_2_move_8through16 + +copy_2_move_1or2: + MOVB (AX), CL + MOVB -1(AX)(R13*1), R14 + MOVB CL, (R10) + MOVB R14, -1(R10)(R13*1) + ADDQ R13, AX + ADDQ R13, R10 + JMP copy_2_end + +copy_2_move_3: + MOVW (AX), CX + MOVB 2(AX), R14 + MOVW CX, (R10) + MOVB R14, 2(R10) + ADDQ R13, AX + ADDQ R13, R10 + JMP copy_2_end + +copy_2_move_4through7: + MOVL (AX), CX + MOVL -4(AX)(R13*1), R14 + MOVL CX, (R10) + MOVL R14, -4(R10)(R13*1) + ADDQ R13, AX + ADDQ R13, R10 + JMP copy_2_end + +copy_2_move_8through16: + MOVQ (AX), CX + MOVQ -8(AX)(R13*1), R14 + MOVQ CX, (R10) + MOVQ R14, -8(R10)(R13*1) + ADDQ R13, AX + ADDQ R13, R10 + +copy_2_end: + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R12 + +copy_slow_3: + MOVB (AX), CL + MOVB CL, (R10) + INCQ AX + INCQ R10 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decodeSync_safe_amd64_main_loop + +loop_finished: + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R12, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R11 + MOVQ R11, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_safe_amd64_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_safe_amd64_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET + +// func sequenceDecs_decodeSync_safe_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: BMI, BMI2, CMOV, SSE +TEXT ·sequenceDecs_decodeSync_safe_bmi2(SB), $64-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + XORQ R9, R9 + MOVQ R9, 8(SP) + MOVQ R9, 16(SP) + MOVQ R9, 24(SP) + MOVQ 112(CX), R9 + MOVQ 128(CX), R10 + MOVQ R10, 32(SP) + MOVQ 144(CX), R10 + MOVQ 136(CX), R11 + MOVQ 200(CX), R12 + MOVQ R12, 56(SP) + MOVQ 176(CX), R12 + MOVQ R12, 48(SP) + MOVQ 184(CX), CX + MOVQ CX, 40(SP) + MOVQ 40(SP), CX + ADDQ CX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R9, 32(SP) + + // outBase += outPosition + ADDQ R11, R9 + +sequenceDecs_decodeSync_safe_bmi2_main_loop: + MOVQ (SP), R12 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_safe_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_end + +sequenceDecs_decodeSync_safe_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_byte_by_byte + +sequenceDecs_decodeSync_safe_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 8(SP) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_safe_bmi2_fill_2_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_2_end + +sequenceDecs_decodeSync_safe_bmi2_fill_2_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_2_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_2_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_2_byte_by_byte + +sequenceDecs_decodeSync_safe_bmi2_fill_2_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_bmi2_fill_2_end: + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 24(SP) + + // Fill bitreader for state updates + MOVQ R12, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R12 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_safe_bmi2_skip_update + LEAQ (SI)(DI*1), R13 + ADDQ R8, R13 + MOVBQZX R13, R13 + LEAQ (DX)(R13*1), CX + MOVQ AX, R14 + MOVQ CX, DX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + + // Update Offset State + BZHIQ R8, R14, CX + SHRXQ R8, R14, R14 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R14, CX + SHRXQ DI, R14, R14 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R14, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decodeSync_safe_bmi2_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ R12, $0x01 + JBE sequenceDecs_decodeSync_safe_bmi2_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_safe_bmi2_after_adjust + +sequenceDecs_decodeSync_safe_bmi2_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_safe_bmi2_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero + +sequenceDecs_decodeSync_safe_bmi2_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_safe_bmi2_after_adjust + +sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero: + MOVQ R13, R12 + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, R12 + CMOVQEQ R15, R14 + ADDQ 144(CX)(R12*8), R14 + JNZ sequenceDecs_decodeSync_safe_bmi2_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_safe_bmi2_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_safe_bmi2_adjust_skip + MOVQ 152(CX), R12 + MOVQ R12, 160(CX) + +sequenceDecs_decodeSync_safe_bmi2_adjust_skip: + MOVQ 144(CX), R12 + MOVQ R12, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_safe_bmi2_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), CX + MOVQ 24(SP), R12 + LEAQ (CX)(R12*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ R12, 104(R14) + JS error_not_enough_literals + CMPQ CX, $0x00020002 + JA sequenceDecs_decodeSync_safe_bmi2_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_bmi2_match_len_ofs_ok + TESTQ CX, CX + JNZ sequenceDecs_decodeSync_safe_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_safe_bmi2_match_len_ofs_ok: + MOVQ 24(SP), CX + MOVQ 8(SP), R12 + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (CX)(R13*1), R14 + ADDQ R9, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ CX, CX + JZ check_offset + MOVQ CX, R14 + SUBQ $0x10, R14 + JB copy_1_small + +copy_1_loop: + MOVUPS (R10), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R10 + ADDQ $0x10, R9 + SUBQ $0x10, R14 + JAE copy_1_loop + LEAQ 16(R10)(R14*1), R10 + LEAQ 16(R9)(R14*1), R9 + MOVUPS -16(R10), X0 + MOVUPS X0, -16(R9) + JMP copy_1_end + +copy_1_small: + CMPQ CX, $0x03 + JE copy_1_move_3 + JB copy_1_move_1or2 + CMPQ CX, $0x08 + JB copy_1_move_4through7 + JMP copy_1_move_8through16 + +copy_1_move_1or2: + MOVB (R10), R14 + MOVB -1(R10)(CX*1), R15 + MOVB R14, (R9) + MOVB R15, -1(R9)(CX*1) + ADDQ CX, R10 + ADDQ CX, R9 + JMP copy_1_end + +copy_1_move_3: + MOVW (R10), R14 + MOVB 2(R10), R15 + MOVW R14, (R9) + MOVB R15, 2(R9) + ADDQ CX, R10 + ADDQ CX, R9 + JMP copy_1_end + +copy_1_move_4through7: + MOVL (R10), R14 + MOVL -4(R10)(CX*1), R15 + MOVL R14, (R9) + MOVL R15, -4(R9)(CX*1) + ADDQ CX, R10 + ADDQ CX, R9 + JMP copy_1_end + +copy_1_move_8through16: + MOVQ (R10), R14 + MOVQ -8(R10)(CX*1), R15 + MOVQ R14, (R9) + MOVQ R15, -8(R9)(CX*1) + ADDQ CX, R10 + ADDQ CX, R9 + +copy_1_end: + ADDQ CX, R11 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R11, CX + ADDQ 40(SP), CX + CMPQ R12, CX + JG error_match_off_too_big + CMPQ R12, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, CX + SUBQ R11, CX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ CX, R14 + CMPQ R13, CX + JG copy_all_from_history + MOVQ R13, CX + SUBQ $0x10, CX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, CX + JAE copy_4_loop + LEAQ 16(R14)(CX*1), R14 + LEAQ 16(R9)(CX*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), CX + MOVB 2(R14), R12 + MOVW CX, (R9) + MOVB R12, 2(R9) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), CX + MOVL -4(R14)(R13*1), R12 + MOVL CX, (R9) + MOVL R12, -4(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), CX + MOVQ -8(R14)(R13*1), R12 + MOVQ CX, (R9) + MOVQ R12, -8(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + +copy_4_end: + ADDQ R13, R11 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ CX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R9)(R15*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_5_end + +copy_5_small: + CMPQ CX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ CX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(CX*1), BP + MOVB R15, (R9) + MOVB BP, -1(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R9) + MOVB BP, 2(R9) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(CX*1), BP + MOVL R15, (R9) + MOVL BP, -4(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(CX*1), BP + MOVQ R15, (R9) + MOVQ BP, -8(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + +copy_5_end: + ADDQ CX, R11 + SUBQ CX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R9, CX + SUBQ R12, CX + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R11 + MOVQ R13, R12 + SUBQ $0x10, R12 + JB copy_2_small + +copy_2_loop: + MOVUPS (CX), X0 + MOVUPS X0, (R9) + ADDQ $0x10, CX + ADDQ $0x10, R9 + SUBQ $0x10, R12 + JAE copy_2_loop + LEAQ 16(CX)(R12*1), CX + LEAQ 16(R9)(R12*1), R9 + MOVUPS -16(CX), X0 + MOVUPS X0, -16(R9) + JMP copy_2_end + +copy_2_small: + CMPQ R13, $0x03 + JE copy_2_move_3 + JB copy_2_move_1or2 + CMPQ R13, $0x08 + JB copy_2_move_4through7 + JMP copy_2_move_8through16 + +copy_2_move_1or2: + MOVB (CX), R12 + MOVB -1(CX)(R13*1), R14 + MOVB R12, (R9) + MOVB R14, -1(R9)(R13*1) + ADDQ R13, CX + ADDQ R13, R9 + JMP copy_2_end + +copy_2_move_3: + MOVW (CX), R12 + MOVB 2(CX), R14 + MOVW R12, (R9) + MOVB R14, 2(R9) + ADDQ R13, CX + ADDQ R13, R9 + JMP copy_2_end + +copy_2_move_4through7: + MOVL (CX), R12 + MOVL -4(CX)(R13*1), R14 + MOVL R12, (R9) + MOVL R14, -4(R9)(R13*1) + ADDQ R13, CX + ADDQ R13, R9 + JMP copy_2_end + +copy_2_move_8through16: + MOVQ (CX), R12 + MOVQ -8(CX)(R13*1), R14 + MOVQ R12, (R9) + MOVQ R14, -8(R9)(R13*1) + ADDQ R13, CX + ADDQ R13, R9 + +copy_2_end: + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R11 + +copy_slow_3: + MOVB (CX), R12 + MOVB R12, (R9) + INCQ CX + INCQ R9 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decodeSync_safe_bmi2_main_loop + +loop_finished: + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R11, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R10 + MOVQ R10, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_safe_bmi2_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_safe_bmi2_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go new file mode 100644 index 0000000..2fb35b7 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go @@ -0,0 +1,237 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +package zstd + +import ( + "fmt" + "io" +) + +// decode sequences from the stream with the provided history but without dictionary. +func (s *sequenceDecs) decodeSyncSimple(hist []byte) (bool, error) { + return false, nil +} + +// decode sequences from the stream without the provided history. +func (s *sequenceDecs) decode(seqs []seqVals) error { + br := s.br + + // Grab full sizes tables, to avoid bounds checks. + llTable, mlTable, ofTable := s.litLengths.fse.dt[:maxTablesize], s.matchLengths.fse.dt[:maxTablesize], s.offsets.fse.dt[:maxTablesize] + llState, mlState, ofState := s.litLengths.state.state, s.matchLengths.state.state, s.offsets.state.state + s.seqSize = 0 + litRemain := len(s.literals) + + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + for i := range seqs { + var ll, mo, ml int + if len(br.in) > 4+((maxOffsetBits+16+16)>>3) { + // inlined function: + // ll, mo, ml = s.nextFast(br, llState, mlState, ofState) + + // Final will not read from stream. + var llB, mlB, moB uint8 + ll, llB = llState.final() + ml, mlB = mlState.final() + mo, moB = ofState.final() + + // extra bits are stored in reverse order. + br.fillFast() + mo += br.getBits(moB) + if s.maxBits > 32 { + br.fillFast() + } + ml += br.getBits(mlB) + ll += br.getBits(llB) + + if moB > 1 { + s.prevOffset[2] = s.prevOffset[1] + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = mo + } else { + // mo = s.adjustOffset(mo, ll, moB) + // Inlined for rather big speedup + if ll == 0 { + // There is an exception though, when current sequence's literals_length = 0. + // In this case, repeated offsets are shifted by one, so an offset_value of 1 means Repeated_Offset2, + // an offset_value of 2 means Repeated_Offset3, and an offset_value of 3 means Repeated_Offset1 - 1_byte. + mo++ + } + + if mo == 0 { + mo = s.prevOffset[0] + } else { + var temp int + if mo == 3 { + temp = s.prevOffset[0] - 1 + } else { + temp = s.prevOffset[mo] + } + + if temp == 0 { + // 0 is not valid; input is corrupted; force offset to 1 + println("WARNING: temp was 0") + temp = 1 + } + + if mo != 1 { + s.prevOffset[2] = s.prevOffset[1] + } + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = temp + mo = temp + } + } + br.fillFast() + } else { + if br.overread() { + if debugDecoder { + printf("reading sequence %d, exceeded available data\n", i) + } + return io.ErrUnexpectedEOF + } + ll, mo, ml = s.next(br, llState, mlState, ofState) + br.fill() + } + + if debugSequences { + println("Seq", i, "Litlen:", ll, "mo:", mo, "(abs) ml:", ml) + } + // Evaluate. + // We might be doing this async, so do it early. + if mo == 0 && ml > 0 { + return fmt.Errorf("zero matchoff and matchlen (%d) > 0", ml) + } + if ml > maxMatchLen { + return fmt.Errorf("match len (%d) bigger than max allowed length", ml) + } + s.seqSize += ll + ml + if s.seqSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + litRemain -= ll + if litRemain < 0 { + return fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", ll, litRemain+ll) + } + seqs[i] = seqVals{ + ll: ll, + ml: ml, + mo: mo, + } + if i == len(seqs)-1 { + // This is the last sequence, so we shouldn't update state. + break + } + + // Manually inlined, ~ 5-20% faster + // Update all 3 states at once. Approx 20% faster. + nBits := llState.nbBits() + mlState.nbBits() + ofState.nbBits() + if nBits == 0 { + llState = llTable[llState.newState()&maxTableMask] + mlState = mlTable[mlState.newState()&maxTableMask] + ofState = ofTable[ofState.newState()&maxTableMask] + } else { + bits := br.get32BitsFast(nBits) + lowBits := uint16(bits >> ((ofState.nbBits() + mlState.nbBits()) & 31)) + llState = llTable[(llState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits >> (ofState.nbBits() & 31)) + lowBits &= bitMask[mlState.nbBits()&15] + mlState = mlTable[(mlState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits) & bitMask[ofState.nbBits()&15] + ofState = ofTable[(ofState.newState()+lowBits)&maxTableMask] + } + } + s.seqSize += litRemain + if s.seqSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + err := br.close() + if err != nil { + printf("Closing sequences: %v, %+v\n", err, *br) + } + return err +} + +// executeSimple handles cases when a dictionary is not used. +func (s *sequenceDecs) executeSimple(seqs []seqVals, hist []byte) error { + // Ensure we have enough output size... + if len(s.out)+s.seqSize > cap(s.out) { + addBytes := s.seqSize + len(s.out) + s.out = append(s.out, make([]byte, addBytes)...) + s.out = s.out[:len(s.out)-addBytes] + } + + if debugDecoder { + printf("Execute %d seqs with literals: %d into %d bytes\n", len(seqs), len(s.literals), s.seqSize) + } + + var t = len(s.out) + out := s.out[:t+s.seqSize] + + for _, seq := range seqs { + // Add literals + copy(out[t:], s.literals[:seq.ll]) + t += seq.ll + s.literals = s.literals[seq.ll:] + + // Malformed input + if seq.mo > t+len(hist) || seq.mo > s.windowSize { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", seq.mo, t+len(hist)) + } + + // Copy from history. + if v := seq.mo - t; v > 0 { + // v is the start position in history from end. + start := len(hist) - v + if seq.ml > v { + // Some goes into the current block. + // Copy remainder of history + copy(out[t:], hist[start:]) + t += v + seq.ml -= v + } else { + copy(out[t:], hist[start:start+seq.ml]) + t += seq.ml + continue + } + } + + // We must be in the current buffer now + if seq.ml > 0 { + start := t - seq.mo + if seq.ml <= t-start { + // No overlap + copy(out[t:], out[start:start+seq.ml]) + t += seq.ml + } else { + // Overlapping copy + // Extend destination slice and copy one byte at the time. + src := out[start : start+seq.ml] + dst := out[t:] + dst = dst[:len(src)] + t += len(src) + // Destination is the space we just added. + for i := range src { + dst[i] = src[i] + } + } + } + } + // Add final literals + copy(out[t:], s.literals) + if debugDecoder { + t += len(s.literals) + if t != len(out) { + panic(fmt.Errorf("length mismatch, want %d, got %d, ss: %d", len(out), t, s.seqSize)) + } + } + s.out = out + + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go new file mode 100644 index 0000000..8014174 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go @@ -0,0 +1,114 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import "math/bits" + +type seqCoders struct { + llEnc, ofEnc, mlEnc *fseEncoder + llPrev, ofPrev, mlPrev *fseEncoder +} + +// swap coders with another (block). +func (s *seqCoders) swap(other *seqCoders) { + *s, *other = *other, *s +} + +// setPrev will update the previous encoders to the actually used ones +// and make sure a fresh one is in the main slot. +func (s *seqCoders) setPrev(ll, ml, of *fseEncoder) { + compareSwap := func(used *fseEncoder, current, prev **fseEncoder) { + // We used the new one, more current to history and reuse the previous history + if *current == used { + *prev, *current = *current, *prev + c := *current + p := *prev + c.reUsed = false + p.reUsed = true + return + } + if used == *prev { + return + } + // Ensure we cannot reuse by accident + prevEnc := *prev + prevEnc.symbolLen = 0 + } + compareSwap(ll, &s.llEnc, &s.llPrev) + compareSwap(ml, &s.mlEnc, &s.mlPrev) + compareSwap(of, &s.ofEnc, &s.ofPrev) +} + +func highBit(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} + +var llCodeTable = [64]byte{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 17, 18, 18, 19, 19, + 20, 20, 20, 20, 21, 21, 21, 21, + 22, 22, 22, 22, 22, 22, 22, 22, + 23, 23, 23, 23, 23, 23, 23, 23, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24} + +// Up to 6 bits +const maxLLCode = 35 + +// llBitsTable translates from ll code to number of bits. +var llBitsTable = [maxLLCode + 1]byte{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, + 4, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16} + +// llCode returns the code that represents the literal length requested. +func llCode(litLength uint32) uint8 { + const llDeltaCode = 19 + if litLength <= 63 { + // Compiler insists on bounds check (Go 1.12) + return llCodeTable[litLength&63] + } + return uint8(highBit(litLength)) + llDeltaCode +} + +var mlCodeTable = [128]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, + 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42} + +// Up to 6 bits +const maxMLCode = 52 + +// mlBitsTable translates from ml code to number of bits. +var mlBitsTable = [maxMLCode + 1]byte{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, + 4, 4, 5, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16} + +// note : mlBase = matchLength - MINMATCH; +// because it's the format it's stored in seqStore->sequences +func mlCode(mlBase uint32) uint8 { + const mlDeltaCode = 36 + if mlBase <= 127 { + // Compiler insists on bounds check (Go 1.12) + return mlCodeTable[mlBase&127] + } + return uint8(highBit(mlBase)) + mlDeltaCode +} + +func ofCode(offset uint32) uint8 { + // A valid offset will always be > 0. + return uint8(bits.Len32(offset) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go b/examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go new file mode 100644 index 0000000..ec13594 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go @@ -0,0 +1,434 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "errors" + "hash/crc32" + "io" + + "github.com/klauspost/compress/huff0" + snappy "github.com/klauspost/compress/internal/snapref" +) + +const ( + snappyTagLiteral = 0x00 + snappyTagCopy1 = 0x01 + snappyTagCopy2 = 0x02 + snappyTagCopy4 = 0x03 +) + +const ( + snappyChecksumSize = 4 + snappyMagicBody = "sNaPpY" + + // snappyMaxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + snappyMaxBlockSize = 65536 + + // snappyMaxEncodedLenOfMaxBlockSize equals MaxEncodedLen(snappyMaxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + snappyMaxEncodedLenOfMaxBlockSize = 76490 +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var ( + // ErrSnappyCorrupt reports that the input is invalid. + ErrSnappyCorrupt = errors.New("snappy: corrupt input") + // ErrSnappyTooLarge reports that the uncompressed length is too large. + ErrSnappyTooLarge = errors.New("snappy: decoded block is too large") + // ErrSnappyUnsupported reports that the input isn't supported. + ErrSnappyUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// SnappyConverter can read SnappyConverter-compressed streams and convert them to zstd. +// Conversion is done by converting the stream directly from Snappy without intermediate +// full decoding. +// Therefore the compression ratio is much less than what can be done by a full decompression +// and compression, and a faulty Snappy stream may lead to a faulty Zstandard stream without +// any errors being generated. +// No CRC value is being generated and not all CRC values of the Snappy stream are checked. +// However, it provides really fast recompression of Snappy streams. +// The converter can be reused to avoid allocations, even after errors. +type SnappyConverter struct { + r io.Reader + err error + buf []byte + block *blockEnc +} + +// Convert the Snappy stream supplied in 'in' and write the zStandard stream to 'w'. +// If any error is detected on the Snappy stream it is returned. +// The number of bytes written is returned. +func (r *SnappyConverter) Convert(in io.Reader, w io.Writer) (int64, error) { + initPredefined() + r.err = nil + r.r = in + if r.block == nil { + r.block = &blockEnc{} + r.block.init() + } + r.block.initNewEncode() + if len(r.buf) != snappyMaxEncodedLenOfMaxBlockSize+snappyChecksumSize { + r.buf = make([]byte, snappyMaxEncodedLenOfMaxBlockSize+snappyChecksumSize) + } + r.block.litEnc.Reuse = huff0.ReusePolicyNone + var written int64 + var readHeader bool + { + header := frameHeader{WindowSize: snappyMaxBlockSize}.appendTo(r.buf[:0]) + + var n int + n, r.err = w.Write(header) + if r.err != nil { + return written, r.err + } + written += int64(n) + } + + for { + if !r.readFull(r.buf[:4], true) { + // Add empty last block + r.block.reset(nil) + r.block.last = true + err := r.block.encodeLits(r.block.literals, false) + if err != nil { + return written, err + } + n, err := w.Write(r.block.output) + if err != nil { + return written, err + } + written += int64(n) + + return written, r.err + } + chunkType := r.buf[0] + if !readHeader { + if chunkType != chunkTypeStreamIdentifier { + println("chunkType != chunkTypeStreamIdentifier", chunkType) + r.err = ErrSnappyCorrupt + return written, r.err + } + readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + println("chunkLen > len(r.buf)", chunkType) + r.err = ErrSnappyUnsupported + return written, r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < snappyChecksumSize { + println("chunkLen < snappyChecksumSize", chunkLen, snappyChecksumSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return written, r.err + } + //checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[snappyChecksumSize:] + + n, hdr, err := snappyDecodedLen(buf) + if err != nil { + r.err = err + return written, r.err + } + buf = buf[hdr:] + if n > snappyMaxBlockSize { + println("n > snappyMaxBlockSize", n, snappyMaxBlockSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + r.block.reset(nil) + r.block.pushOffsets() + if err := decodeSnappy(r.block, buf); err != nil { + r.err = err + return written, r.err + } + if r.block.size+r.block.extraLits != n { + printf("invalid size, want %d, got %d\n", n, r.block.size+r.block.extraLits) + r.err = ErrSnappyCorrupt + return written, r.err + } + err = r.block.encode(nil, false, false) + switch err { + case errIncompressible: + r.block.popOffsets() + r.block.reset(nil) + r.block.literals, err = snappy.Decode(r.block.literals[:n], r.buf[snappyChecksumSize:chunkLen]) + if err != nil { + return written, err + } + err = r.block.encodeLits(r.block.literals, false) + if err != nil { + return written, err + } + case nil: + default: + return written, err + } + + n, r.err = w.Write(r.block.output) + if r.err != nil { + return written, err + } + written += int64(n) + continue + case chunkTypeUncompressedData: + if debugEncoder { + println("Uncompressed, chunklen", chunkLen) + } + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < snappyChecksumSize { + println("chunkLen < snappyChecksumSize", chunkLen, snappyChecksumSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + r.block.reset(nil) + buf := r.buf[:snappyChecksumSize] + if !r.readFull(buf, false) { + return written, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - snappyChecksumSize + if n > snappyMaxBlockSize { + println("n > snappyMaxBlockSize", n, snappyMaxBlockSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + r.block.literals = r.block.literals[:n] + if !r.readFull(r.block.literals, false) { + return written, r.err + } + if snappyCRC(r.block.literals) != checksum { + println("literals crc mismatch") + r.err = ErrSnappyCorrupt + return written, r.err + } + err := r.block.encodeLits(r.block.literals, false) + if err != nil { + return written, err + } + n, r.err = w.Write(r.block.output) + if r.err != nil { + return written, err + } + written += int64(n) + continue + + case chunkTypeStreamIdentifier: + if debugEncoder { + println("stream id", chunkLen, len(snappyMagicBody)) + } + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(snappyMagicBody) { + println("chunkLen != len(snappyMagicBody)", chunkLen, len(snappyMagicBody)) + r.err = ErrSnappyCorrupt + return written, r.err + } + if !r.readFull(r.buf[:len(snappyMagicBody)], false) { + return written, r.err + } + for i := 0; i < len(snappyMagicBody); i++ { + if r.buf[i] != snappyMagicBody[i] { + println("r.buf[i] != snappyMagicBody[i]", r.buf[i], snappyMagicBody[i], i) + r.err = ErrSnappyCorrupt + return written, r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + println("chunkType <= 0x7f") + r.err = ErrSnappyUnsupported + return written, r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return written, r.err + } + } +} + +// decodeSnappy writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read. +func decodeSnappy(blk *blockEnc, src []byte) error { + //decodeRef(make([]byte, snappyMaxBlockSize), src) + var s, length int + lits := blk.extraLits + var offset uint32 + for s < len(src) { + switch src[s] & 0x03 { + case snappyTagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + if x > snappyMaxBlockSize { + println("x > snappyMaxBlockSize", x, snappyMaxBlockSize) + return ErrSnappyCorrupt + } + length = int(x) + 1 + if length <= 0 { + println("length <= 0 ", length) + + return errUnsupportedLiteralLength + } + //if length > snappyMaxBlockSize-d || uint32(length) > len(src)-s { + // return ErrSnappyCorrupt + //} + + blk.literals = append(blk.literals, src[s:s+length]...) + //println(length, "litLen") + lits += length + s += length + continue + + case snappyTagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, len(src)) + return ErrSnappyCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]) + + case snappyTagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, len(src)) + return ErrSnappyCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = uint32(src[s-2]) | uint32(src[s-1])<<8 + + case snappyTagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, len(src)) + return ErrSnappyCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + + if offset <= 0 || blk.size+lits < int(offset) /*|| length > len(blk)-d */ { + println("offset <= 0 || blk.size+lits < int(offset)", offset, blk.size+lits, int(offset), blk.size, lits) + + return ErrSnappyCorrupt + } + + // Check if offset is one of the recent offsets. + // Adjusts the output offset accordingly. + // Gives a tiny bit of compression, typically around 1%. + if false { + offset = blk.matchOffset(offset, uint32(lits)) + } else { + offset += 3 + } + + blk.sequences = append(blk.sequences, seq{ + litLen: uint32(lits), + offset: offset, + matchLen: uint32(length) - zstdMinMatch, + }) + blk.size += length + lits + lits = 0 + } + blk.extraLits = lits + return nil +} + +func (r *SnappyConverter) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrSnappyCorrupt + } + return false + } + return true +} + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func snappyCRC(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return c>>15 | c<<17 + 0xa282ead8 +} + +// snappyDecodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func snappyDecodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrSnappyCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrSnappyTooLarge + } + return int(v), n, nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/zip.go b/examples/go/vendor/github.com/klauspost/compress/zstd/zip.go new file mode 100644 index 0000000..29c15c8 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/zip.go @@ -0,0 +1,141 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +import ( + "errors" + "io" + "sync" +) + +// ZipMethodWinZip is the method for Zstandard compressed data inside Zip files for WinZip. +// See https://www.winzip.com/win/en/comp_info.html +const ZipMethodWinZip = 93 + +// ZipMethodPKWare is the original method number used by PKWARE to indicate Zstandard compression. +// Deprecated: This has been deprecated by PKWARE, use ZipMethodWinZip instead for compression. +// See https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.9.TXT +const ZipMethodPKWare = 20 + +// zipReaderPool is the default reader pool. +var zipReaderPool = sync.Pool{New: func() interface{} { + z, err := NewReader(nil, WithDecoderLowmem(true), WithDecoderMaxWindow(128<<20), WithDecoderConcurrency(1)) + if err != nil { + panic(err) + } + return z +}} + +// newZipReader creates a pooled zip decompressor. +func newZipReader(opts ...DOption) func(r io.Reader) io.ReadCloser { + pool := &zipReaderPool + if len(opts) > 0 { + opts = append([]DOption{WithDecoderLowmem(true), WithDecoderMaxWindow(128 << 20)}, opts...) + // Force concurrency 1 + opts = append(opts, WithDecoderConcurrency(1)) + // Create our own pool + pool = &sync.Pool{} + } + return func(r io.Reader) io.ReadCloser { + dec, ok := pool.Get().(*Decoder) + if ok { + dec.Reset(r) + } else { + d, err := NewReader(r, opts...) + if err != nil { + panic(err) + } + dec = d + } + return &pooledZipReader{dec: dec, pool: pool} + } +} + +type pooledZipReader struct { + mu sync.Mutex // guards Close and Read + pool *sync.Pool + dec *Decoder +} + +func (r *pooledZipReader) Read(p []byte) (n int, err error) { + r.mu.Lock() + defer r.mu.Unlock() + if r.dec == nil { + return 0, errors.New("read after close or EOF") + } + dec, err := r.dec.Read(p) + if err == io.EOF { + r.dec.Reset(nil) + r.pool.Put(r.dec) + r.dec = nil + } + return dec, err +} + +func (r *pooledZipReader) Close() error { + r.mu.Lock() + defer r.mu.Unlock() + var err error + if r.dec != nil { + err = r.dec.Reset(nil) + r.pool.Put(r.dec) + r.dec = nil + } + return err +} + +type pooledZipWriter struct { + mu sync.Mutex // guards Close and Read + enc *Encoder + pool *sync.Pool +} + +func (w *pooledZipWriter) Write(p []byte) (n int, err error) { + w.mu.Lock() + defer w.mu.Unlock() + if w.enc == nil { + return 0, errors.New("Write after Close") + } + return w.enc.Write(p) +} + +func (w *pooledZipWriter) Close() error { + w.mu.Lock() + defer w.mu.Unlock() + var err error + if w.enc != nil { + err = w.enc.Close() + w.pool.Put(w.enc) + w.enc = nil + } + return err +} + +// ZipCompressor returns a compressor that can be registered with zip libraries. +// The provided encoder options will be used on all encodes. +func ZipCompressor(opts ...EOption) func(w io.Writer) (io.WriteCloser, error) { + var pool sync.Pool + return func(w io.Writer) (io.WriteCloser, error) { + enc, ok := pool.Get().(*Encoder) + if ok { + enc.Reset(w) + } else { + var err error + enc, err = NewWriter(w, opts...) + if err != nil { + return nil, err + } + } + return &pooledZipWriter{enc: enc, pool: &pool}, nil + } +} + +// ZipDecompressor returns a decompressor that can be registered with zip libraries. +// See ZipCompressor for example. +// Options can be specified. WithDecoderConcurrency(1) is forced, +// and by default a 128MB maximum decompression window is specified. +// The window size can be overridden if required. +func ZipDecompressor(opts ...DOption) func(r io.Reader) io.ReadCloser { + return newZipReader(opts...) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go b/examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go new file mode 100644 index 0000000..4be7cc7 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go @@ -0,0 +1,121 @@ +// Package zstd provides decompression of zstandard files. +// +// For advanced usage and examples, go to the README: https://github.com/klauspost/compress/tree/master/zstd#zstd +package zstd + +import ( + "bytes" + "encoding/binary" + "errors" + "log" + "math" +) + +// enable debug printing +const debug = false + +// enable encoding debug printing +const debugEncoder = debug + +// enable decoding debug printing +const debugDecoder = debug + +// Enable extra assertions. +const debugAsserts = debug || false + +// print sequence details +const debugSequences = false + +// print detailed matching information +const debugMatches = false + +// force encoder to use predefined tables. +const forcePreDef = false + +// zstdMinMatch is the minimum zstd match length. +const zstdMinMatch = 3 + +// fcsUnknown is used for unknown frame content size. +const fcsUnknown = math.MaxUint64 + +var ( + // ErrReservedBlockType is returned when a reserved block type is found. + // Typically this indicates wrong or corrupted input. + ErrReservedBlockType = errors.New("invalid input: reserved block type encountered") + + // ErrCompressedSizeTooBig is returned when a block is bigger than allowed. + // Typically this indicates wrong or corrupted input. + ErrCompressedSizeTooBig = errors.New("invalid input: compressed size too big") + + // ErrBlockTooSmall is returned when a block is too small to be decoded. + // Typically returned on invalid input. + ErrBlockTooSmall = errors.New("block too small") + + // ErrUnexpectedBlockSize is returned when a block has unexpected size. + // Typically returned on invalid input. + ErrUnexpectedBlockSize = errors.New("unexpected block size") + + // ErrMagicMismatch is returned when a "magic" number isn't what is expected. + // Typically this indicates wrong or corrupted input. + ErrMagicMismatch = errors.New("invalid input: magic number mismatch") + + // ErrWindowSizeExceeded is returned when a reference exceeds the valid window size. + // Typically this indicates wrong or corrupted input. + ErrWindowSizeExceeded = errors.New("window size exceeded") + + // ErrWindowSizeTooSmall is returned when no window size is specified. + // Typically this indicates wrong or corrupted input. + ErrWindowSizeTooSmall = errors.New("invalid input: window size was too small") + + // ErrDecoderSizeExceeded is returned if decompressed size exceeds the configured limit. + ErrDecoderSizeExceeded = errors.New("decompressed size exceeds configured limit") + + // ErrUnknownDictionary is returned if the dictionary ID is unknown. + ErrUnknownDictionary = errors.New("unknown dictionary") + + // ErrFrameSizeExceeded is returned if the stated frame size is exceeded. + // This is only returned if SingleSegment is specified on the frame. + ErrFrameSizeExceeded = errors.New("frame size exceeded") + + // ErrFrameSizeMismatch is returned if the stated frame size does not match the expected size. + // This is only returned if SingleSegment is specified on the frame. + ErrFrameSizeMismatch = errors.New("frame size does not match size on stream") + + // ErrCRCMismatch is returned if CRC mismatches. + ErrCRCMismatch = errors.New("CRC check failed") + + // ErrDecoderClosed will be returned if the Decoder was used after + // Close has been called. + ErrDecoderClosed = errors.New("decoder used after Close") + + // ErrDecoderNilInput is returned when a nil Reader was provided + // and an operation other than Reset/DecodeAll/Close was attempted. + ErrDecoderNilInput = errors.New("nil input provided as reader") +) + +func println(a ...interface{}) { + if debug || debugDecoder || debugEncoder { + log.Println(a...) + } +} + +func printf(format string, a ...interface{}) { + if debug || debugDecoder || debugEncoder { + log.Printf(format, a...) + } +} + +func load3232(b []byte, i int32) uint32 { + return binary.LittleEndian.Uint32(b[:len(b):len(b)][i:]) +} + +func load6432(b []byte, i int32) uint64 { + return binary.LittleEndian.Uint64(b[:len(b):len(b)][i:]) +} + +type byter interface { + Bytes() []byte + Len() int +} + +var _ byter = &bytes.Buffer{} diff --git a/examples/go/vendor/github.com/pierrec/lz4/.gitignore b/examples/go/vendor/github.com/pierrec/lz4/.gitignore new file mode 100644 index 0000000..5e98735 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/.gitignore @@ -0,0 +1,34 @@ +# Created by https://www.gitignore.io/api/macos + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# End of https://www.gitignore.io/api/macos + +cmd/*/*exe +.idea \ No newline at end of file diff --git a/examples/go/vendor/github.com/pierrec/lz4/.travis.yml b/examples/go/vendor/github.com/pierrec/lz4/.travis.yml new file mode 100644 index 0000000..fd6c6db --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/.travis.yml @@ -0,0 +1,24 @@ +language: go + +env: + - GO111MODULE=off + +go: + - 1.9.x + - 1.10.x + - 1.11.x + - 1.12.x + - master + +matrix: + fast_finish: true + allow_failures: + - go: master + +sudo: false + +script: + - go test -v -cpu=2 + - go test -v -cpu=2 -race + - go test -v -cpu=2 -tags noasm + - go test -v -cpu=2 -race -tags noasm diff --git a/examples/go/vendor/github.com/pierrec/lz4/LICENSE b/examples/go/vendor/github.com/pierrec/lz4/LICENSE new file mode 100644 index 0000000..bd899d8 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2015, Pierre Curto +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of xxHash nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/examples/go/vendor/github.com/pierrec/lz4/README.md b/examples/go/vendor/github.com/pierrec/lz4/README.md new file mode 100644 index 0000000..4ee388e --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/README.md @@ -0,0 +1,90 @@ +# lz4 : LZ4 compression in pure Go + +[![GoDoc](https://godoc.org/github.com/pierrec/lz4?status.svg)](https://godoc.org/github.com/pierrec/lz4) +[![Build Status](https://travis-ci.org/pierrec/lz4.svg?branch=master)](https://travis-ci.org/pierrec/lz4) +[![Go Report Card](https://goreportcard.com/badge/github.com/pierrec/lz4)](https://goreportcard.com/report/github.com/pierrec/lz4) +[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/pierrec/lz4.svg?style=social)](https://github.com/pierrec/lz4/tags) + +## Overview + +This package provides a streaming interface to [LZ4 data streams](http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html) as well as low level compress and uncompress functions for LZ4 data blocks. +The implementation is based on the reference C [one](https://github.com/lz4/lz4). + +## Install + +Assuming you have the go toolchain installed: + +``` +go get github.com/pierrec/lz4 +``` + +There is a command line interface tool to compress and decompress LZ4 files. + +``` +go install github.com/pierrec/lz4/cmd/lz4c +``` + +Usage + +``` +Usage of lz4c: + -version + print the program version + +Subcommands: +Compress the given files or from stdin to stdout. +compress [arguments] [ ...] + -bc + enable block checksum + -l int + compression level (0=fastest) + -sc + disable stream checksum + -size string + block max size [64K,256K,1M,4M] (default "4M") + +Uncompress the given files or from stdin to stdout. +uncompress [arguments] [ ...] + +``` + + +## Example + +``` +// Compress and uncompress an input string. +s := "hello world" +r := strings.NewReader(s) + +// The pipe will uncompress the data from the writer. +pr, pw := io.Pipe() +zw := lz4.NewWriter(pw) +zr := lz4.NewReader(pr) + +go func() { + // Compress the input string. + _, _ = io.Copy(zw, r) + _ = zw.Close() // Make sure the writer is closed + _ = pw.Close() // Terminate the pipe +}() + +_, _ = io.Copy(os.Stdout, zr) + +// Output: +// hello world +``` + +## Contributing + +Contributions are very welcome for bug fixing, performance improvements...! + +- Open an issue with a proper description +- Send a pull request with appropriate test case(s) + +## Contributors + +Thanks to all [contributors](https://github.com/pierrec/lz4/graphs/contributors) so far! + +Special thanks to [@Zariel](https://github.com/Zariel) for his asm implementation of the decoder. + +Special thanks to [@klauspost](https://github.com/klauspost) for his work on optimizing the code. diff --git a/examples/go/vendor/github.com/pierrec/lz4/block.go b/examples/go/vendor/github.com/pierrec/lz4/block.go new file mode 100644 index 0000000..664d9be --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/block.go @@ -0,0 +1,413 @@ +package lz4 + +import ( + "encoding/binary" + "math/bits" + "sync" +) + +// blockHash hashes the lower 6 bytes into a value < htSize. +func blockHash(x uint64) uint32 { + const prime6bytes = 227718039650203 + return uint32(((x << (64 - 48)) * prime6bytes) >> (64 - hashLog)) +} + +// CompressBlockBound returns the maximum size of a given buffer of size n, when not compressible. +func CompressBlockBound(n int) int { + return n + n/255 + 16 +} + +// UncompressBlock uncompresses the source buffer into the destination one, +// and returns the uncompressed size. +// +// The destination buffer must be sized appropriately. +// +// An error is returned if the source data is invalid or the destination buffer is too small. +func UncompressBlock(src, dst []byte) (int, error) { + if len(src) == 0 { + return 0, nil + } + if di := decodeBlock(dst, src); di >= 0 { + return di, nil + } + return 0, ErrInvalidSourceShortBuffer +} + +// CompressBlock compresses the source buffer into the destination one. +// This is the fast version of LZ4 compression and also the default one. +// +// The argument hashTable is scratch space for a hash table used by the +// compressor. If provided, it should have length at least 1<<16. If it is +// shorter (or nil), CompressBlock allocates its own hash table. +// +// The size of the compressed data is returned. +// +// If the destination buffer size is lower than CompressBlockBound and +// the compressed size is 0 and no error, then the data is incompressible. +// +// An error is returned if the destination buffer is too small. +func CompressBlock(src, dst []byte, hashTable []int) (_ int, err error) { + defer recoverBlock(&err) + + // Return 0, nil only if the destination buffer size is < CompressBlockBound. + isNotCompressible := len(dst) < CompressBlockBound(len(src)) + + // adaptSkipLog sets how quickly the compressor begins skipping blocks when data is incompressible. + // This significantly speeds up incompressible data and usually has very small impact on compression. + // bytes to skip = 1 + (bytes since last match >> adaptSkipLog) + const adaptSkipLog = 7 + if len(hashTable) < htSize { + htIface := htPool.Get() + defer htPool.Put(htIface) + hashTable = (*(htIface).(*[htSize]int))[:] + } + // Prove to the compiler the table has at least htSize elements. + // The compiler can see that "uint32() >> hashShift" cannot be out of bounds. + hashTable = hashTable[:htSize] + + // si: Current position of the search. + // anchor: Position of the current literals. + var si, di, anchor int + sn := len(src) - mfLimit + if sn <= 0 { + goto lastLiterals + } + + // Fast scan strategy: the hash table only stores the last 4 bytes sequences. + for si < sn { + // Hash the next 6 bytes (sequence)... + match := binary.LittleEndian.Uint64(src[si:]) + h := blockHash(match) + h2 := blockHash(match >> 8) + + // We check a match at s, s+1 and s+2 and pick the first one we get. + // Checking 3 only requires us to load the source one. + ref := hashTable[h] + ref2 := hashTable[h2] + hashTable[h] = si + hashTable[h2] = si + 1 + offset := si - ref + + // If offset <= 0 we got an old entry in the hash table. + if offset <= 0 || offset >= winSize || // Out of window. + uint32(match) != binary.LittleEndian.Uint32(src[ref:]) { // Hash collision on different matches. + // No match. Start calculating another hash. + // The processor can usually do this out-of-order. + h = blockHash(match >> 16) + ref = hashTable[h] + + // Check the second match at si+1 + si += 1 + offset = si - ref2 + + if offset <= 0 || offset >= winSize || + uint32(match>>8) != binary.LittleEndian.Uint32(src[ref2:]) { + // No match. Check the third match at si+2 + si += 1 + offset = si - ref + hashTable[h] = si + + if offset <= 0 || offset >= winSize || + uint32(match>>16) != binary.LittleEndian.Uint32(src[ref:]) { + // Skip one extra byte (at si+3) before we check 3 matches again. + si += 2 + (si-anchor)>>adaptSkipLog + continue + } + } + } + + // Match found. + lLen := si - anchor // Literal length. + // We already matched 4 bytes. + mLen := 4 + + // Extend backwards if we can, reducing literals. + tOff := si - offset - 1 + for lLen > 0 && tOff >= 0 && src[si-1] == src[tOff] { + si-- + tOff-- + lLen-- + mLen++ + } + + // Add the match length, so we continue search at the end. + // Use mLen to store the offset base. + si, mLen = si+mLen, si+minMatch + + // Find the longest match by looking by batches of 8 bytes. + for si+8 < sn { + x := binary.LittleEndian.Uint64(src[si:]) ^ binary.LittleEndian.Uint64(src[si-offset:]) + if x == 0 { + si += 8 + } else { + // Stop is first non-zero byte. + si += bits.TrailingZeros64(x) >> 3 + break + } + } + + mLen = si - mLen + if mLen < 0xF { + dst[di] = byte(mLen) + } else { + dst[di] = 0xF + } + + // Encode literals length. + if lLen < 0xF { + dst[di] |= byte(lLen << 4) + } else { + dst[di] |= 0xF0 + di++ + l := lLen - 0xF + for ; l >= 0xFF; l -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(l) + } + di++ + + // Literals. + copy(dst[di:di+lLen], src[anchor:anchor+lLen]) + di += lLen + 2 + anchor = si + + // Encode offset. + _ = dst[di] // Bound check elimination. + dst[di-2], dst[di-1] = byte(offset), byte(offset>>8) + + // Encode match length part 2. + if mLen >= 0xF { + for mLen -= 0xF; mLen >= 0xFF; mLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(mLen) + di++ + } + // Check if we can load next values. + if si >= sn { + break + } + // Hash match end-2 + h = blockHash(binary.LittleEndian.Uint64(src[si-2:])) + hashTable[h] = si - 2 + } + +lastLiterals: + if isNotCompressible && anchor == 0 { + // Incompressible. + return 0, nil + } + + // Last literals. + lLen := len(src) - anchor + if lLen < 0xF { + dst[di] = byte(lLen << 4) + } else { + dst[di] = 0xF0 + di++ + for lLen -= 0xF; lLen >= 0xFF; lLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(lLen) + } + di++ + + // Write the last literals. + if isNotCompressible && di >= anchor { + // Incompressible. + return 0, nil + } + di += copy(dst[di:di+len(src)-anchor], src[anchor:]) + return di, nil +} + +// Pool of hash tables for CompressBlock. +var htPool = sync.Pool{ + New: func() interface{} { + return new([htSize]int) + }, +} + +// blockHash hashes 4 bytes into a value < winSize. +func blockHashHC(x uint32) uint32 { + const hasher uint32 = 2654435761 // Knuth multiplicative hash. + return x * hasher >> (32 - winSizeLog) +} + +// CompressBlockHC compresses the source buffer src into the destination dst +// with max search depth (use 0 or negative value for no max). +// +// CompressBlockHC compression ratio is better than CompressBlock but it is also slower. +// +// The size of the compressed data is returned. +// +// If the destination buffer size is lower than CompressBlockBound and +// the compressed size is 0 and no error, then the data is incompressible. +// +// An error is returned if the destination buffer is too small. +func CompressBlockHC(src, dst []byte, depth int) (_ int, err error) { + defer recoverBlock(&err) + + // Return 0, nil only if the destination buffer size is < CompressBlockBound. + isNotCompressible := len(dst) < CompressBlockBound(len(src)) + + // adaptSkipLog sets how quickly the compressor begins skipping blocks when data is incompressible. + // This significantly speeds up incompressible data and usually has very small impact on compression. + // bytes to skip = 1 + (bytes since last match >> adaptSkipLog) + const adaptSkipLog = 7 + + var si, di, anchor int + + // hashTable: stores the last position found for a given hash + // chainTable: stores previous positions for a given hash + var hashTable, chainTable [winSize]int + + if depth <= 0 { + depth = winSize + } + + sn := len(src) - mfLimit + if sn <= 0 { + goto lastLiterals + } + + for si < sn { + // Hash the next 4 bytes (sequence). + match := binary.LittleEndian.Uint32(src[si:]) + h := blockHashHC(match) + + // Follow the chain until out of window and give the longest match. + mLen := 0 + offset := 0 + for next, try := hashTable[h], depth; try > 0 && next > 0 && si-next < winSize; next = chainTable[next&winMask] { + // The first (mLen==0) or next byte (mLen>=minMatch) at current match length + // must match to improve on the match length. + if src[next+mLen] != src[si+mLen] { + continue + } + ml := 0 + // Compare the current position with a previous with the same hash. + for ml < sn-si { + x := binary.LittleEndian.Uint64(src[next+ml:]) ^ binary.LittleEndian.Uint64(src[si+ml:]) + if x == 0 { + ml += 8 + } else { + // Stop is first non-zero byte. + ml += bits.TrailingZeros64(x) >> 3 + break + } + } + if ml < minMatch || ml <= mLen { + // Match too small (>adaptSkipLog + continue + } + + // Match found. + // Update hash/chain tables with overlapping bytes: + // si already hashed, add everything from si+1 up to the match length. + winStart := si + 1 + if ws := si + mLen - winSize; ws > winStart { + winStart = ws + } + for si, ml := winStart, si+mLen; si < ml; { + match >>= 8 + match |= uint32(src[si+3]) << 24 + h := blockHashHC(match) + chainTable[si&winMask] = hashTable[h] + hashTable[h] = si + si++ + } + + lLen := si - anchor + si += mLen + mLen -= minMatch // Match length does not include minMatch. + + if mLen < 0xF { + dst[di] = byte(mLen) + } else { + dst[di] = 0xF + } + + // Encode literals length. + if lLen < 0xF { + dst[di] |= byte(lLen << 4) + } else { + dst[di] |= 0xF0 + di++ + l := lLen - 0xF + for ; l >= 0xFF; l -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(l) + } + di++ + + // Literals. + copy(dst[di:di+lLen], src[anchor:anchor+lLen]) + di += lLen + anchor = si + + // Encode offset. + di += 2 + dst[di-2], dst[di-1] = byte(offset), byte(offset>>8) + + // Encode match length part 2. + if mLen >= 0xF { + for mLen -= 0xF; mLen >= 0xFF; mLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(mLen) + di++ + } + } + + if isNotCompressible && anchor == 0 { + // Incompressible. + return 0, nil + } + + // Last literals. +lastLiterals: + lLen := len(src) - anchor + if lLen < 0xF { + dst[di] = byte(lLen << 4) + } else { + dst[di] = 0xF0 + di++ + lLen -= 0xF + for ; lLen >= 0xFF; lLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(lLen) + } + di++ + + // Write the last literals. + if isNotCompressible && di >= anchor { + // Incompressible. + return 0, nil + } + di += copy(dst[di:di+len(src)-anchor], src[anchor:]) + return di, nil +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/debug.go b/examples/go/vendor/github.com/pierrec/lz4/debug.go new file mode 100644 index 0000000..bc5e78d --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/debug.go @@ -0,0 +1,23 @@ +// +build lz4debug + +package lz4 + +import ( + "fmt" + "os" + "path/filepath" + "runtime" +) + +const debugFlag = true + +func debug(args ...interface{}) { + _, file, line, _ := runtime.Caller(1) + file = filepath.Base(file) + + f := fmt.Sprintf("LZ4: %s:%d %s", file, line, args[0]) + if f[len(f)-1] != '\n' { + f += "\n" + } + fmt.Fprintf(os.Stderr, f, args[1:]...) +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/debug_stub.go b/examples/go/vendor/github.com/pierrec/lz4/debug_stub.go new file mode 100644 index 0000000..44211ad --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/debug_stub.go @@ -0,0 +1,7 @@ +// +build !lz4debug + +package lz4 + +const debugFlag = false + +func debug(args ...interface{}) {} diff --git a/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go new file mode 100644 index 0000000..43cc14f --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go @@ -0,0 +1,8 @@ +// +build !appengine +// +build gc +// +build !noasm + +package lz4 + +//go:noescape +func decodeBlock(dst, src []byte) int diff --git a/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s new file mode 100644 index 0000000..20fef39 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s @@ -0,0 +1,375 @@ +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// AX scratch +// BX scratch +// CX scratch +// DX token +// +// DI &dst +// SI &src +// R8 &dst + len(dst) +// R9 &src + len(src) +// R11 &dst +// R12 short output end +// R13 short input end +// func decodeBlock(dst, src []byte) int +// using 50 bytes of stack currently +TEXT ·decodeBlock(SB), NOSPLIT, $64-56 + MOVQ dst_base+0(FP), DI + MOVQ DI, R11 + MOVQ dst_len+8(FP), R8 + ADDQ DI, R8 + + MOVQ src_base+24(FP), SI + MOVQ src_len+32(FP), R9 + ADDQ SI, R9 + + // shortcut ends + // short output end + MOVQ R8, R12 + SUBQ $32, R12 + // short input end + MOVQ R9, R13 + SUBQ $16, R13 + +loop: + // for si < len(src) + CMPQ SI, R9 + JGE end + + // token := uint32(src[si]) + MOVBQZX (SI), DX + INCQ SI + + // lit_len = token >> 4 + // if lit_len > 0 + // CX = lit_len + MOVQ DX, CX + SHRQ $4, CX + + // if lit_len != 0xF + CMPQ CX, $0xF + JEQ lit_len_loop_pre + CMPQ DI, R12 + JGE lit_len_loop_pre + CMPQ SI, R13 + JGE lit_len_loop_pre + + // copy shortcut + + // A two-stage shortcut for the most common case: + // 1) If the literal length is 0..14, and there is enough space, + // enter the shortcut and copy 16 bytes on behalf of the literals + // (in the fast mode, only 8 bytes can be safely copied this way). + // 2) Further if the match length is 4..18, copy 18 bytes in a similar + // manner; but we ensure that there's enough space in the output for + // those 18 bytes earlier, upon entering the shortcut (in other words, + // there is a combined check for both stages). + + // copy literal + MOVOU (SI), X0 + MOVOU X0, (DI) + ADDQ CX, DI + ADDQ CX, SI + + MOVQ DX, CX + ANDQ $0xF, CX + + // The second stage: prepare for match copying, decode full info. + // If it doesn't work out, the info won't be wasted. + // offset := uint16(data[:2]) + MOVWQZX (SI), DX + ADDQ $2, SI + + MOVQ DI, AX + SUBQ DX, AX + CMPQ AX, DI + JGT err_short_buf + + // if we can't do the second stage then jump straight to read the + // match length, we already have the offset. + CMPQ CX, $0xF + JEQ match_len_loop_pre + CMPQ DX, $8 + JLT match_len_loop_pre + CMPQ AX, R11 + JLT err_short_buf + + // memcpy(op + 0, match + 0, 8); + MOVQ (AX), BX + MOVQ BX, (DI) + // memcpy(op + 8, match + 8, 8); + MOVQ 8(AX), BX + MOVQ BX, 8(DI) + // memcpy(op +16, match +16, 2); + MOVW 16(AX), BX + MOVW BX, 16(DI) + + ADDQ $4, DI // minmatch + ADDQ CX, DI + + // shortcut complete, load next token + JMP loop + +lit_len_loop_pre: + // if lit_len > 0 + CMPQ CX, $0 + JEQ offset + CMPQ CX, $0xF + JNE copy_literal + +lit_len_loop: + // for src[si] == 0xFF + CMPB (SI), $0xFF + JNE lit_len_finalise + + // bounds check src[si+1] + MOVQ SI, AX + ADDQ $1, AX + CMPQ AX, R9 + JGT err_short_buf + + // lit_len += 0xFF + ADDQ $0xFF, CX + INCQ SI + JMP lit_len_loop + +lit_len_finalise: + // lit_len += int(src[si]) + // si++ + MOVBQZX (SI), AX + ADDQ AX, CX + INCQ SI + +copy_literal: + // bounds check src and dst + MOVQ SI, AX + ADDQ CX, AX + CMPQ AX, R9 + JGT err_short_buf + + MOVQ DI, AX + ADDQ CX, AX + CMPQ AX, R8 + JGT err_short_buf + + // whats a good cut off to call memmove? + CMPQ CX, $16 + JGT memmove_lit + + // if len(dst[di:]) < 16 + MOVQ R8, AX + SUBQ DI, AX + CMPQ AX, $16 + JLT memmove_lit + + // if len(src[si:]) < 16 + MOVQ R9, AX + SUBQ SI, AX + CMPQ AX, $16 + JLT memmove_lit + + MOVOU (SI), X0 + MOVOU X0, (DI) + + JMP finish_lit_copy + +memmove_lit: + // memmove(to, from, len) + MOVQ DI, 0(SP) + MOVQ SI, 8(SP) + MOVQ CX, 16(SP) + // spill + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) // need len to inc SI, DI after + MOVB DX, 48(SP) + CALL runtime·memmove(SB) + + // restore registers + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + MOVB 48(SP), DX + + // recalc initial values + MOVQ dst_base+0(FP), R8 + MOVQ R8, R11 + ADDQ dst_len+8(FP), R8 + MOVQ src_base+24(FP), R9 + ADDQ src_len+32(FP), R9 + MOVQ R8, R12 + SUBQ $32, R12 + MOVQ R9, R13 + SUBQ $16, R13 + +finish_lit_copy: + ADDQ CX, SI + ADDQ CX, DI + + CMPQ SI, R9 + JGE end + +offset: + // CX := mLen + // free up DX to use for offset + MOVQ DX, CX + + MOVQ SI, AX + ADDQ $2, AX + CMPQ AX, R9 + JGT err_short_buf + + // offset + // DX := int(src[si]) | int(src[si+1])<<8 + MOVWQZX (SI), DX + ADDQ $2, SI + + // 0 offset is invalid + CMPQ DX, $0 + JEQ err_corrupt + + ANDB $0xF, CX + +match_len_loop_pre: + // if mlen != 0xF + CMPB CX, $0xF + JNE copy_match + +match_len_loop: + // for src[si] == 0xFF + // lit_len += 0xFF + CMPB (SI), $0xFF + JNE match_len_finalise + + // bounds check src[si+1] + MOVQ SI, AX + ADDQ $1, AX + CMPQ AX, R9 + JGT err_short_buf + + ADDQ $0xFF, CX + INCQ SI + JMP match_len_loop + +match_len_finalise: + // lit_len += int(src[si]) + // si++ + MOVBQZX (SI), AX + ADDQ AX, CX + INCQ SI + +copy_match: + // mLen += minMatch + ADDQ $4, CX + + // check we have match_len bytes left in dst + // di+match_len < len(dst) + MOVQ DI, AX + ADDQ CX, AX + CMPQ AX, R8 + JGT err_short_buf + + // DX = offset + // CX = match_len + // BX = &dst + (di - offset) + MOVQ DI, BX + SUBQ DX, BX + + // check BX is within dst + // if BX < &dst + CMPQ BX, R11 + JLT err_short_buf + + // if offset + match_len < di + MOVQ BX, AX + ADDQ CX, AX + CMPQ DI, AX + JGT copy_interior_match + + // AX := len(dst[:di]) + // MOVQ DI, AX + // SUBQ R11, AX + + // copy 16 bytes at a time + // if di-offset < 16 copy 16-(di-offset) bytes to di + // then do the remaining + +copy_match_loop: + // for match_len >= 0 + // dst[di] = dst[i] + // di++ + // i++ + MOVB (BX), AX + MOVB AX, (DI) + INCQ DI + INCQ BX + DECQ CX + + CMPQ CX, $0 + JGT copy_match_loop + + JMP loop + +copy_interior_match: + CMPQ CX, $16 + JGT memmove_match + + // if len(dst[di:]) < 16 + MOVQ R8, AX + SUBQ DI, AX + CMPQ AX, $16 + JLT memmove_match + + MOVOU (BX), X0 + MOVOU X0, (DI) + + ADDQ CX, DI + JMP loop + +memmove_match: + // memmove(to, from, len) + MOVQ DI, 0(SP) + MOVQ BX, 8(SP) + MOVQ CX, 16(SP) + // spill + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) // need len to inc SI, DI after + CALL runtime·memmove(SB) + + // restore registers + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + + // recalc initial values + MOVQ dst_base+0(FP), R8 + MOVQ R8, R11 // TODO: make these sensible numbers + ADDQ dst_len+8(FP), R8 + MOVQ src_base+24(FP), R9 + ADDQ src_len+32(FP), R9 + MOVQ R8, R12 + SUBQ $32, R12 + MOVQ R9, R13 + SUBQ $16, R13 + + ADDQ CX, DI + JMP loop + +err_corrupt: + MOVQ $-1, ret+48(FP) + RET + +err_short_buf: + MOVQ $-2, ret+48(FP) + RET + +end: + SUBQ R11, DI + MOVQ DI, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/pierrec/lz4/decode_other.go b/examples/go/vendor/github.com/pierrec/lz4/decode_other.go new file mode 100644 index 0000000..919888e --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/decode_other.go @@ -0,0 +1,98 @@ +// +build !amd64 appengine !gc noasm + +package lz4 + +func decodeBlock(dst, src []byte) (ret int) { + const hasError = -2 + defer func() { + if recover() != nil { + ret = hasError + } + }() + + var si, di int + for { + // Literals and match lengths (token). + b := int(src[si]) + si++ + + // Literals. + if lLen := b >> 4; lLen > 0 { + switch { + case lLen < 0xF && si+16 < len(src): + // Shortcut 1 + // if we have enough room in src and dst, and the literals length + // is small enough (0..14) then copy all 16 bytes, even if not all + // are part of the literals. + copy(dst[di:], src[si:si+16]) + si += lLen + di += lLen + if mLen := b & 0xF; mLen < 0xF { + // Shortcut 2 + // if the match length (4..18) fits within the literals, then copy + // all 18 bytes, even if not all are part of the literals. + mLen += 4 + if offset := int(src[si]) | int(src[si+1])<<8; mLen <= offset { + i := di - offset + end := i + 18 + if end > len(dst) { + // The remaining buffer may not hold 18 bytes. + // See https://github.com/pierrec/lz4/issues/51. + end = len(dst) + } + copy(dst[di:], dst[i:end]) + si += 2 + di += mLen + continue + } + } + case lLen == 0xF: + for src[si] == 0xFF { + lLen += 0xFF + si++ + } + lLen += int(src[si]) + si++ + fallthrough + default: + copy(dst[di:di+lLen], src[si:si+lLen]) + si += lLen + di += lLen + } + } + if si >= len(src) { + return di + } + + offset := int(src[si]) | int(src[si+1])<<8 + if offset == 0 { + return hasError + } + si += 2 + + // Match. + mLen := b & 0xF + if mLen == 0xF { + for src[si] == 0xFF { + mLen += 0xFF + si++ + } + mLen += int(src[si]) + si++ + } + mLen += minMatch + + // Copy the match. + expanded := dst[di-offset:] + if mLen > offset { + // Efficiently copy the match dst[di-offset:di] into the dst slice. + bytesToCopy := offset * (mLen / offset) + for n := offset; n <= bytesToCopy+offset; n *= 2 { + copy(expanded[n:], expanded[:n]) + } + di += bytesToCopy + mLen -= bytesToCopy + } + di += copy(dst[di:di+mLen], expanded[:mLen]) + } +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/errors.go b/examples/go/vendor/github.com/pierrec/lz4/errors.go new file mode 100644 index 0000000..1c45d18 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/errors.go @@ -0,0 +1,30 @@ +package lz4 + +import ( + "errors" + "fmt" + "os" + rdebug "runtime/debug" +) + +var ( + // ErrInvalidSourceShortBuffer is returned by UncompressBlock or CompressBLock when a compressed + // block is corrupted or the destination buffer is not large enough for the uncompressed data. + ErrInvalidSourceShortBuffer = errors.New("lz4: invalid source or destination buffer too short") + // ErrInvalid is returned when reading an invalid LZ4 archive. + ErrInvalid = errors.New("lz4: bad magic number") + // ErrBlockDependency is returned when attempting to decompress an archive created with block dependency. + ErrBlockDependency = errors.New("lz4: block dependency not supported") + // ErrUnsupportedSeek is returned when attempting to Seek any way but forward from the current position. + ErrUnsupportedSeek = errors.New("lz4: can only seek forward from io.SeekCurrent") +) + +func recoverBlock(e *error) { + if r := recover(); r != nil && *e == nil { + if debugFlag { + fmt.Fprintln(os.Stderr, r) + rdebug.PrintStack() + } + *e = ErrInvalidSourceShortBuffer + } +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go b/examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go new file mode 100644 index 0000000..7a76a6b --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go @@ -0,0 +1,223 @@ +// Package xxh32 implements the very fast XXH hashing algorithm (32 bits version). +// (https://github.com/Cyan4973/XXH/) +package xxh32 + +import ( + "encoding/binary" +) + +const ( + prime1 uint32 = 2654435761 + prime2 uint32 = 2246822519 + prime3 uint32 = 3266489917 + prime4 uint32 = 668265263 + prime5 uint32 = 374761393 + + primeMask = 0xFFFFFFFF + prime1plus2 = uint32((uint64(prime1) + uint64(prime2)) & primeMask) // 606290984 + prime1minus = uint32((-int64(prime1)) & primeMask) // 1640531535 +) + +// XXHZero represents an xxhash32 object with seed 0. +type XXHZero struct { + v1 uint32 + v2 uint32 + v3 uint32 + v4 uint32 + totalLen uint64 + buf [16]byte + bufused int +} + +// Sum appends the current hash to b and returns the resulting slice. +// It does not change the underlying hash state. +func (xxh XXHZero) Sum(b []byte) []byte { + h32 := xxh.Sum32() + return append(b, byte(h32), byte(h32>>8), byte(h32>>16), byte(h32>>24)) +} + +// Reset resets the Hash to its initial state. +func (xxh *XXHZero) Reset() { + xxh.v1 = prime1plus2 + xxh.v2 = prime2 + xxh.v3 = 0 + xxh.v4 = prime1minus + xxh.totalLen = 0 + xxh.bufused = 0 +} + +// Size returns the number of bytes returned by Sum(). +func (xxh *XXHZero) Size() int { + return 4 +} + +// BlockSize gives the minimum number of bytes accepted by Write(). +func (xxh *XXHZero) BlockSize() int { + return 1 +} + +// Write adds input bytes to the Hash. +// It never returns an error. +func (xxh *XXHZero) Write(input []byte) (int, error) { + if xxh.totalLen == 0 { + xxh.Reset() + } + n := len(input) + m := xxh.bufused + + xxh.totalLen += uint64(n) + + r := len(xxh.buf) - m + if n < r { + copy(xxh.buf[m:], input) + xxh.bufused += len(input) + return n, nil + } + + p := 0 + // Causes compiler to work directly from registers instead of stack: + v1, v2, v3, v4 := xxh.v1, xxh.v2, xxh.v3, xxh.v4 + if m > 0 { + // some data left from previous update + copy(xxh.buf[xxh.bufused:], input[:r]) + xxh.bufused += len(input) - r + + // fast rotl(13) + buf := xxh.buf[:16] // BCE hint. + v1 = rol13(v1+binary.LittleEndian.Uint32(buf[:])*prime2) * prime1 + v2 = rol13(v2+binary.LittleEndian.Uint32(buf[4:])*prime2) * prime1 + v3 = rol13(v3+binary.LittleEndian.Uint32(buf[8:])*prime2) * prime1 + v4 = rol13(v4+binary.LittleEndian.Uint32(buf[12:])*prime2) * prime1 + p = r + xxh.bufused = 0 + } + + for n := n - 16; p <= n; p += 16 { + sub := input[p:][:16] //BCE hint for compiler + v1 = rol13(v1+binary.LittleEndian.Uint32(sub[:])*prime2) * prime1 + v2 = rol13(v2+binary.LittleEndian.Uint32(sub[4:])*prime2) * prime1 + v3 = rol13(v3+binary.LittleEndian.Uint32(sub[8:])*prime2) * prime1 + v4 = rol13(v4+binary.LittleEndian.Uint32(sub[12:])*prime2) * prime1 + } + xxh.v1, xxh.v2, xxh.v3, xxh.v4 = v1, v2, v3, v4 + + copy(xxh.buf[xxh.bufused:], input[p:]) + xxh.bufused += len(input) - p + + return n, nil +} + +// Sum32 returns the 32 bits Hash value. +func (xxh *XXHZero) Sum32() uint32 { + h32 := uint32(xxh.totalLen) + if h32 >= 16 { + h32 += rol1(xxh.v1) + rol7(xxh.v2) + rol12(xxh.v3) + rol18(xxh.v4) + } else { + h32 += prime5 + } + + p := 0 + n := xxh.bufused + buf := xxh.buf + for n := n - 4; p <= n; p += 4 { + h32 += binary.LittleEndian.Uint32(buf[p:p+4]) * prime3 + h32 = rol17(h32) * prime4 + } + for ; p < n; p++ { + h32 += uint32(buf[p]) * prime5 + h32 = rol11(h32) * prime1 + } + + h32 ^= h32 >> 15 + h32 *= prime2 + h32 ^= h32 >> 13 + h32 *= prime3 + h32 ^= h32 >> 16 + + return h32 +} + +// ChecksumZero returns the 32bits Hash value. +func ChecksumZero(input []byte) uint32 { + n := len(input) + h32 := uint32(n) + + if n < 16 { + h32 += prime5 + } else { + v1 := prime1plus2 + v2 := prime2 + v3 := uint32(0) + v4 := prime1minus + p := 0 + for n := n - 16; p <= n; p += 16 { + sub := input[p:][:16] //BCE hint for compiler + v1 = rol13(v1+binary.LittleEndian.Uint32(sub[:])*prime2) * prime1 + v2 = rol13(v2+binary.LittleEndian.Uint32(sub[4:])*prime2) * prime1 + v3 = rol13(v3+binary.LittleEndian.Uint32(sub[8:])*prime2) * prime1 + v4 = rol13(v4+binary.LittleEndian.Uint32(sub[12:])*prime2) * prime1 + } + input = input[p:] + n -= p + h32 += rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + } + + p := 0 + for n := n - 4; p <= n; p += 4 { + h32 += binary.LittleEndian.Uint32(input[p:p+4]) * prime3 + h32 = rol17(h32) * prime4 + } + for p < n { + h32 += uint32(input[p]) * prime5 + h32 = rol11(h32) * prime1 + p++ + } + + h32 ^= h32 >> 15 + h32 *= prime2 + h32 ^= h32 >> 13 + h32 *= prime3 + h32 ^= h32 >> 16 + + return h32 +} + +// Uint32Zero hashes x with seed 0. +func Uint32Zero(x uint32) uint32 { + h := prime5 + 4 + x*prime3 + h = rol17(h) * prime4 + h ^= h >> 15 + h *= prime2 + h ^= h >> 13 + h *= prime3 + h ^= h >> 16 + return h +} + +func rol1(u uint32) uint32 { + return u<<1 | u>>31 +} + +func rol7(u uint32) uint32 { + return u<<7 | u>>25 +} + +func rol11(u uint32) uint32 { + return u<<11 | u>>21 +} + +func rol12(u uint32) uint32 { + return u<<12 | u>>20 +} + +func rol13(u uint32) uint32 { + return u<<13 | u>>19 +} + +func rol17(u uint32) uint32 { + return u<<17 | u>>15 +} + +func rol18(u uint32) uint32 { + return u<<18 | u>>14 +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/lz4.go b/examples/go/vendor/github.com/pierrec/lz4/lz4.go new file mode 100644 index 0000000..a3284bd --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/lz4.go @@ -0,0 +1,116 @@ +// Package lz4 implements reading and writing lz4 compressed data (a frame), +// as specified in http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html. +// +// Although the block level compression and decompression functions are exposed and are fully compatible +// with the lz4 block format definition, they are low level and should not be used directly. +// For a complete description of an lz4 compressed block, see: +// http://fastcompression.blogspot.fr/2011/05/lz4-explained.html +// +// See https://github.com/Cyan4973/lz4 for the reference C implementation. +// +package lz4 + +import ( + "math/bits" + "sync" +) + +const ( + // Extension is the LZ4 frame file name extension + Extension = ".lz4" + // Version is the LZ4 frame format version + Version = 1 + + frameMagic uint32 = 0x184D2204 + frameSkipMagic uint32 = 0x184D2A50 + frameMagicLegacy uint32 = 0x184C2102 + + // The following constants are used to setup the compression algorithm. + minMatch = 4 // the minimum size of the match sequence size (4 bytes) + winSizeLog = 16 // LZ4 64Kb window size limit + winSize = 1 << winSizeLog + winMask = winSize - 1 // 64Kb window of previous data for dependent blocks + compressedBlockFlag = 1 << 31 + compressedBlockMask = compressedBlockFlag - 1 + + // hashLog determines the size of the hash table used to quickly find a previous match position. + // Its value influences the compression speed and memory usage, the lower the faster, + // but at the expense of the compression ratio. + // 16 seems to be the best compromise for fast compression. + hashLog = 16 + htSize = 1 << hashLog + + mfLimit = 10 + minMatch // The last match cannot start within the last 14 bytes. +) + +// map the block max size id with its value in bytes: 64Kb, 256Kb, 1Mb and 4Mb. +const ( + blockSize64K = 1 << (16 + 2*iota) + blockSize256K + blockSize1M + blockSize4M +) + +var ( + // Keep a pool of buffers for each valid block sizes. + bsMapValue = [...]*sync.Pool{ + newBufferPool(2 * blockSize64K), + newBufferPool(2 * blockSize256K), + newBufferPool(2 * blockSize1M), + newBufferPool(2 * blockSize4M), + } +) + +// newBufferPool returns a pool for buffers of the given size. +func newBufferPool(size int) *sync.Pool { + return &sync.Pool{ + New: func() interface{} { + return make([]byte, size) + }, + } +} + +// getBuffer returns a buffer to its pool. +func getBuffer(size int) []byte { + idx := blockSizeValueToIndex(size) - 4 + return bsMapValue[idx].Get().([]byte) +} + +// putBuffer returns a buffer to its pool. +func putBuffer(size int, buf []byte) { + if cap(buf) > 0 { + idx := blockSizeValueToIndex(size) - 4 + bsMapValue[idx].Put(buf[:cap(buf)]) + } +} +func blockSizeIndexToValue(i byte) int { + return 1 << (16 + 2*uint(i)) +} +func isValidBlockSize(size int) bool { + const blockSizeMask = blockSize64K | blockSize256K | blockSize1M | blockSize4M + + return size&blockSizeMask > 0 && bits.OnesCount(uint(size)) == 1 +} +func blockSizeValueToIndex(size int) byte { + return 4 + byte(bits.TrailingZeros(uint(size)>>16)/2) +} + +// Header describes the various flags that can be set on a Writer or obtained from a Reader. +// The default values match those of the LZ4 frame format definition +// (http://fastcompression.blogspot.com/2013/04/lz4-streaming-format-final.html). +// +// NB. in a Reader, in case of concatenated frames, the Header values may change between Read() calls. +// It is the caller's responsibility to check them if necessary. +type Header struct { + BlockChecksum bool // Compressed blocks checksum flag. + NoChecksum bool // Frame checksum flag. + BlockMaxSize int // Size of the uncompressed data block (one of [64KB, 256KB, 1MB, 4MB]). Default=4MB. + Size uint64 // Frame total size. It is _not_ computed by the Writer. + CompressionLevel int // Compression level (higher is better, use 0 for fastest compression). + done bool // Header processed flag (Read or Write and checked). +} + +// Reset reset internal status +func (h *Header) Reset() { + h.done = false +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go b/examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go new file mode 100644 index 0000000..9a0fb00 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go @@ -0,0 +1,29 @@ +//+build go1.10 + +package lz4 + +import ( + "fmt" + "strings" +) + +func (h Header) String() string { + var s strings.Builder + + s.WriteString(fmt.Sprintf("%T{", h)) + if h.BlockChecksum { + s.WriteString("BlockChecksum: true ") + } + if h.NoChecksum { + s.WriteString("NoChecksum: true ") + } + if bs := h.BlockMaxSize; bs != 0 && bs != 4<<20 { + s.WriteString(fmt.Sprintf("BlockMaxSize: %d ", bs)) + } + if l := h.CompressionLevel; l != 0 { + s.WriteString(fmt.Sprintf("CompressionLevel: %d ", l)) + } + s.WriteByte('}') + + return s.String() +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go b/examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go new file mode 100644 index 0000000..12c761a --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go @@ -0,0 +1,29 @@ +//+build !go1.10 + +package lz4 + +import ( + "bytes" + "fmt" +) + +func (h Header) String() string { + var s bytes.Buffer + + s.WriteString(fmt.Sprintf("%T{", h)) + if h.BlockChecksum { + s.WriteString("BlockChecksum: true ") + } + if h.NoChecksum { + s.WriteString("NoChecksum: true ") + } + if bs := h.BlockMaxSize; bs != 0 && bs != 4<<20 { + s.WriteString(fmt.Sprintf("BlockMaxSize: %d ", bs)) + } + if l := h.CompressionLevel; l != 0 { + s.WriteString(fmt.Sprintf("CompressionLevel: %d ", l)) + } + s.WriteByte('}') + + return s.String() +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/reader.go b/examples/go/vendor/github.com/pierrec/lz4/reader.go new file mode 100644 index 0000000..87dd72b --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/reader.go @@ -0,0 +1,335 @@ +package lz4 + +import ( + "encoding/binary" + "fmt" + "io" + "io/ioutil" + + "github.com/pierrec/lz4/internal/xxh32" +) + +// Reader implements the LZ4 frame decoder. +// The Header is set after the first call to Read(). +// The Header may change between Read() calls in case of concatenated frames. +type Reader struct { + Header + // Handler called when a block has been successfully read. + // It provides the number of bytes read. + OnBlockDone func(size int) + + buf [8]byte // Scrap buffer. + pos int64 // Current position in src. + src io.Reader // Source. + zdata []byte // Compressed data. + data []byte // Uncompressed data. + idx int // Index of unread bytes into data. + checksum xxh32.XXHZero // Frame hash. + skip int64 // Bytes to skip before next read. + dpos int64 // Position in dest +} + +// NewReader returns a new LZ4 frame decoder. +// No access to the underlying io.Reader is performed. +func NewReader(src io.Reader) *Reader { + r := &Reader{src: src} + return r +} + +// readHeader checks the frame magic number and parses the frame descriptoz. +// Skippable frames are supported even as a first frame although the LZ4 +// specifications recommends skippable frames not to be used as first frames. +func (z *Reader) readHeader(first bool) error { + defer z.checksum.Reset() + + buf := z.buf[:] + for { + magic, err := z.readUint32() + if err != nil { + z.pos += 4 + if !first && err == io.ErrUnexpectedEOF { + return io.EOF + } + return err + } + if magic == frameMagic { + break + } + if magic>>8 != frameSkipMagic>>8 { + return ErrInvalid + } + skipSize, err := z.readUint32() + if err != nil { + return err + } + z.pos += 4 + m, err := io.CopyN(ioutil.Discard, z.src, int64(skipSize)) + if err != nil { + return err + } + z.pos += m + } + + // Header. + if _, err := io.ReadFull(z.src, buf[:2]); err != nil { + return err + } + z.pos += 8 + + b := buf[0] + if v := b >> 6; v != Version { + return fmt.Errorf("lz4: invalid version: got %d; expected %d", v, Version) + } + if b>>5&1 == 0 { + return ErrBlockDependency + } + z.BlockChecksum = b>>4&1 > 0 + frameSize := b>>3&1 > 0 + z.NoChecksum = b>>2&1 == 0 + + bmsID := buf[1] >> 4 & 0x7 + if bmsID < 4 || bmsID > 7 { + return fmt.Errorf("lz4: invalid block max size ID: %d", bmsID) + } + bSize := blockSizeIndexToValue(bmsID - 4) + z.BlockMaxSize = bSize + + // Allocate the compressed/uncompressed buffers. + // The compressed buffer cannot exceed the uncompressed one. + if n := 2 * bSize; cap(z.zdata) < n { + z.zdata = make([]byte, n, n) + } + if debugFlag { + debug("header block max size id=%d size=%d", bmsID, bSize) + } + z.zdata = z.zdata[:bSize] + z.data = z.zdata[:cap(z.zdata)][bSize:] + z.idx = len(z.data) + + _, _ = z.checksum.Write(buf[0:2]) + + if frameSize { + buf := buf[:8] + if _, err := io.ReadFull(z.src, buf); err != nil { + return err + } + z.Size = binary.LittleEndian.Uint64(buf) + z.pos += 8 + _, _ = z.checksum.Write(buf) + } + + // Header checksum. + if _, err := io.ReadFull(z.src, buf[:1]); err != nil { + return err + } + z.pos++ + if h := byte(z.checksum.Sum32() >> 8 & 0xFF); h != buf[0] { + return fmt.Errorf("lz4: invalid header checksum: got %x; expected %x", buf[0], h) + } + + z.Header.done = true + if debugFlag { + debug("header read: %v", z.Header) + } + + return nil +} + +// Read decompresses data from the underlying source into the supplied buffer. +// +// Since there can be multiple streams concatenated, Header values may +// change between calls to Read(). If that is the case, no data is actually read from +// the underlying io.Reader, to allow for potential input buffer resizing. +func (z *Reader) Read(buf []byte) (int, error) { + if debugFlag { + debug("Read buf len=%d", len(buf)) + } + if !z.Header.done { + if err := z.readHeader(true); err != nil { + return 0, err + } + if debugFlag { + debug("header read OK compressed buffer %d / %d uncompressed buffer %d : %d index=%d", + len(z.zdata), cap(z.zdata), len(z.data), cap(z.data), z.idx) + } + } + + if len(buf) == 0 { + return 0, nil + } + + if z.idx == len(z.data) { + // No data ready for reading, process the next block. + if debugFlag { + debug("reading block from writer") + } + // Reset uncompressed buffer + z.data = z.zdata[:cap(z.zdata)][len(z.zdata):] + + // Block length: 0 = end of frame, highest bit set: uncompressed. + bLen, err := z.readUint32() + if err != nil { + return 0, err + } + z.pos += 4 + + if bLen == 0 { + // End of frame reached. + if !z.NoChecksum { + // Validate the frame checksum. + checksum, err := z.readUint32() + if err != nil { + return 0, err + } + if debugFlag { + debug("frame checksum got=%x / want=%x", z.checksum.Sum32(), checksum) + } + z.pos += 4 + if h := z.checksum.Sum32(); checksum != h { + return 0, fmt.Errorf("lz4: invalid frame checksum: got %x; expected %x", h, checksum) + } + } + + // Get ready for the next concatenated frame and keep the position. + pos := z.pos + z.Reset(z.src) + z.pos = pos + + // Since multiple frames can be concatenated, check for more. + return 0, z.readHeader(false) + } + + if debugFlag { + debug("raw block size %d", bLen) + } + if bLen&compressedBlockFlag > 0 { + // Uncompressed block. + bLen &= compressedBlockMask + if debugFlag { + debug("uncompressed block size %d", bLen) + } + if int(bLen) > cap(z.data) { + return 0, fmt.Errorf("lz4: invalid block size: %d", bLen) + } + z.data = z.data[:bLen] + if _, err := io.ReadFull(z.src, z.data); err != nil { + return 0, err + } + z.pos += int64(bLen) + if z.OnBlockDone != nil { + z.OnBlockDone(int(bLen)) + } + + if z.BlockChecksum { + checksum, err := z.readUint32() + if err != nil { + return 0, err + } + z.pos += 4 + + if h := xxh32.ChecksumZero(z.data); h != checksum { + return 0, fmt.Errorf("lz4: invalid block checksum: got %x; expected %x", h, checksum) + } + } + + } else { + // Compressed block. + if debugFlag { + debug("compressed block size %d", bLen) + } + if int(bLen) > cap(z.data) { + return 0, fmt.Errorf("lz4: invalid block size: %d", bLen) + } + zdata := z.zdata[:bLen] + if _, err := io.ReadFull(z.src, zdata); err != nil { + return 0, err + } + z.pos += int64(bLen) + + if z.BlockChecksum { + checksum, err := z.readUint32() + if err != nil { + return 0, err + } + z.pos += 4 + + if h := xxh32.ChecksumZero(zdata); h != checksum { + return 0, fmt.Errorf("lz4: invalid block checksum: got %x; expected %x", h, checksum) + } + } + + n, err := UncompressBlock(zdata, z.data) + if err != nil { + return 0, err + } + z.data = z.data[:n] + if z.OnBlockDone != nil { + z.OnBlockDone(n) + } + } + + if !z.NoChecksum { + _, _ = z.checksum.Write(z.data) + if debugFlag { + debug("current frame checksum %x", z.checksum.Sum32()) + } + } + z.idx = 0 + } + + if z.skip > int64(len(z.data[z.idx:])) { + z.skip -= int64(len(z.data[z.idx:])) + z.dpos += int64(len(z.data[z.idx:])) + z.idx = len(z.data) + return 0, nil + } + + z.idx += int(z.skip) + z.dpos += z.skip + z.skip = 0 + + n := copy(buf, z.data[z.idx:]) + z.idx += n + z.dpos += int64(n) + if debugFlag { + debug("copied %d bytes to input", n) + } + + return n, nil +} + +// Seek implements io.Seeker, but supports seeking forward from the current +// position only. Any other seek will return an error. Allows skipping output +// bytes which aren't needed, which in some scenarios is faster than reading +// and discarding them. +// Note this may cause future calls to Read() to read 0 bytes if all of the +// data they would have returned is skipped. +func (z *Reader) Seek(offset int64, whence int) (int64, error) { + if offset < 0 || whence != io.SeekCurrent { + return z.dpos + z.skip, ErrUnsupportedSeek + } + z.skip += offset + return z.dpos + z.skip, nil +} + +// Reset discards the Reader's state and makes it equivalent to the +// result of its original state from NewReader, but reading from r instead. +// This permits reusing a Reader rather than allocating a new one. +func (z *Reader) Reset(r io.Reader) { + z.Header = Header{} + z.pos = 0 + z.src = r + z.zdata = z.zdata[:0] + z.data = z.data[:0] + z.idx = 0 + z.checksum.Reset() +} + +// readUint32 reads an uint32 into the supplied buffer. +// The idea is to make use of the already allocated buffers avoiding additional allocations. +func (z *Reader) readUint32() (uint32, error) { + buf := z.buf[:4] + _, err := io.ReadFull(z.src, buf) + x := binary.LittleEndian.Uint32(buf) + return x, err +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go b/examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go new file mode 100644 index 0000000..1670a77 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go @@ -0,0 +1,207 @@ +package lz4 + +import ( + "encoding/binary" + "fmt" + "io" +) + +// ReaderLegacy implements the LZ4Demo frame decoder. +// The Header is set after the first call to Read(). +type ReaderLegacy struct { + Header + // Handler called when a block has been successfully read. + // It provides the number of bytes read. + OnBlockDone func(size int) + + lastBlock bool + buf [8]byte // Scrap buffer. + pos int64 // Current position in src. + src io.Reader // Source. + zdata []byte // Compressed data. + data []byte // Uncompressed data. + idx int // Index of unread bytes into data. + skip int64 // Bytes to skip before next read. + dpos int64 // Position in dest +} + +// NewReaderLegacy returns a new LZ4Demo frame decoder. +// No access to the underlying io.Reader is performed. +func NewReaderLegacy(src io.Reader) *ReaderLegacy { + r := &ReaderLegacy{src: src} + return r +} + +// readHeader checks the frame magic number and parses the frame descriptoz. +// Skippable frames are supported even as a first frame although the LZ4 +// specifications recommends skippable frames not to be used as first frames. +func (z *ReaderLegacy) readLegacyHeader() error { + z.lastBlock = false + magic, err := z.readUint32() + if err != nil { + z.pos += 4 + if err == io.ErrUnexpectedEOF { + return io.EOF + } + return err + } + if magic != frameMagicLegacy { + return ErrInvalid + } + z.pos += 4 + + // Legacy has fixed 8MB blocksizes + // https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md#legacy-frame + bSize := blockSize4M * 2 + + // Allocate the compressed/uncompressed buffers. + // The compressed buffer cannot exceed the uncompressed one. + if n := 2 * bSize; cap(z.zdata) < n { + z.zdata = make([]byte, n, n) + } + if debugFlag { + debug("header block max size size=%d", bSize) + } + z.zdata = z.zdata[:bSize] + z.data = z.zdata[:cap(z.zdata)][bSize:] + z.idx = len(z.data) + + z.Header.done = true + if debugFlag { + debug("header read: %v", z.Header) + } + + return nil +} + +// Read decompresses data from the underlying source into the supplied buffer. +// +// Since there can be multiple streams concatenated, Header values may +// change between calls to Read(). If that is the case, no data is actually read from +// the underlying io.Reader, to allow for potential input buffer resizing. +func (z *ReaderLegacy) Read(buf []byte) (int, error) { + if debugFlag { + debug("Read buf len=%d", len(buf)) + } + if !z.Header.done { + if err := z.readLegacyHeader(); err != nil { + return 0, err + } + if debugFlag { + debug("header read OK compressed buffer %d / %d uncompressed buffer %d : %d index=%d", + len(z.zdata), cap(z.zdata), len(z.data), cap(z.data), z.idx) + } + } + + if len(buf) == 0 { + return 0, nil + } + + if z.idx == len(z.data) { + // No data ready for reading, process the next block. + if debugFlag { + debug(" reading block from writer %d %d", z.idx, blockSize4M*2) + } + + // Reset uncompressed buffer + z.data = z.zdata[:cap(z.zdata)][len(z.zdata):] + + bLen, err := z.readUint32() + if err != nil { + return 0, err + } + if debugFlag { + debug(" bLen %d (0x%x) offset = %d (0x%x)", bLen, bLen, z.pos, z.pos) + } + z.pos += 4 + + // Legacy blocks are always compressed, even when detrimental + if debugFlag { + debug(" compressed block size %d", bLen) + } + + if int(bLen) > cap(z.data) { + return 0, fmt.Errorf("lz4: invalid block size: %d", bLen) + } + zdata := z.zdata[:bLen] + if _, err := io.ReadFull(z.src, zdata); err != nil { + return 0, err + } + z.pos += int64(bLen) + + n, err := UncompressBlock(zdata, z.data) + if err != nil { + return 0, err + } + + z.data = z.data[:n] + if z.OnBlockDone != nil { + z.OnBlockDone(n) + } + + z.idx = 0 + + // Legacy blocks are fixed to 8MB, if we read a decompressed block smaller than this + // it means we've reached the end... + if n < blockSize4M*2 { + z.lastBlock = true + } + } + + if z.skip > int64(len(z.data[z.idx:])) { + z.skip -= int64(len(z.data[z.idx:])) + z.dpos += int64(len(z.data[z.idx:])) + z.idx = len(z.data) + return 0, nil + } + + z.idx += int(z.skip) + z.dpos += z.skip + z.skip = 0 + + n := copy(buf, z.data[z.idx:]) + z.idx += n + z.dpos += int64(n) + if debugFlag { + debug("%v] copied %d bytes to input (%d:%d)", z.lastBlock, n, z.idx, len(z.data)) + } + if z.lastBlock && len(z.data) == z.idx { + return n, io.EOF + } + return n, nil +} + +// Seek implements io.Seeker, but supports seeking forward from the current +// position only. Any other seek will return an error. Allows skipping output +// bytes which aren't needed, which in some scenarios is faster than reading +// and discarding them. +// Note this may cause future calls to Read() to read 0 bytes if all of the +// data they would have returned is skipped. +func (z *ReaderLegacy) Seek(offset int64, whence int) (int64, error) { + if offset < 0 || whence != io.SeekCurrent { + return z.dpos + z.skip, ErrUnsupportedSeek + } + z.skip += offset + return z.dpos + z.skip, nil +} + +// Reset discards the Reader's state and makes it equivalent to the +// result of its original state from NewReader, but reading from r instead. +// This permits reusing a Reader rather than allocating a new one. +func (z *ReaderLegacy) Reset(r io.Reader) { + z.Header = Header{} + z.pos = 0 + z.src = r + z.zdata = z.zdata[:0] + z.data = z.data[:0] + z.idx = 0 +} + +// readUint32 reads an uint32 into the supplied buffer. +// The idea is to make use of the already allocated buffers avoiding additional allocations. +func (z *ReaderLegacy) readUint32() (uint32, error) { + buf := z.buf[:4] + _, err := io.ReadFull(z.src, buf) + x := binary.LittleEndian.Uint32(buf) + return x, err +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/writer.go b/examples/go/vendor/github.com/pierrec/lz4/writer.go new file mode 100644 index 0000000..f066d56 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/writer.go @@ -0,0 +1,422 @@ +package lz4 + +import ( + "encoding/binary" + "fmt" + "io" + "runtime" + + "github.com/pierrec/lz4/internal/xxh32" +) + +// zResult contains the results of compressing a block. +type zResult struct { + size uint32 // Block header + data []byte // Compressed data + checksum uint32 // Data checksum +} + +// Writer implements the LZ4 frame encoder. +type Writer struct { + Header + // Handler called when a block has been successfully written out. + // It provides the number of bytes written. + OnBlockDone func(size int) + + buf [19]byte // magic number(4) + header(flags(2)+[Size(8)+DictID(4)]+checksum(1)) does not exceed 19 bytes + dst io.Writer // Destination. + checksum xxh32.XXHZero // Frame checksum. + data []byte // Data to be compressed + buffer for compressed data. + idx int // Index into data. + hashtable [winSize]int // Hash table used in CompressBlock(). + + // For concurrency. + c chan chan zResult // Channel for block compression goroutines and writer goroutine. + err error // Any error encountered while writing to the underlying destination. +} + +// NewWriter returns a new LZ4 frame encoder. +// No access to the underlying io.Writer is performed. +// The supplied Header is checked at the first Write. +// It is ok to change it before the first Write but then not until a Reset() is performed. +func NewWriter(dst io.Writer) *Writer { + z := new(Writer) + z.Reset(dst) + return z +} + +// WithConcurrency sets the number of concurrent go routines used for compression. +// A negative value sets the concurrency to GOMAXPROCS. +func (z *Writer) WithConcurrency(n int) *Writer { + switch { + case n == 0 || n == 1: + z.c = nil + return z + case n < 0: + n = runtime.GOMAXPROCS(0) + } + z.c = make(chan chan zResult, n) + // Writer goroutine managing concurrent block compression goroutines. + go func() { + // Process next block compression item. + for c := range z.c { + // Read the next compressed block result. + // Waiting here ensures that the blocks are output in the order they were sent. + // The incoming channel is always closed as it indicates to the caller that + // the block has been processed. + res := <-c + n := len(res.data) + if n == 0 { + // Notify the block compression routine that we are done with its result. + // This is used when a sentinel block is sent to terminate the compression. + close(c) + return + } + // Write the block. + if err := z.writeUint32(res.size); err != nil && z.err == nil { + z.err = err + } + if _, err := z.dst.Write(res.data); err != nil && z.err == nil { + z.err = err + } + if z.BlockChecksum { + if err := z.writeUint32(res.checksum); err != nil && z.err == nil { + z.err = err + } + } + // It is now safe to release the buffer as no longer in use by any goroutine. + putBuffer(cap(res.data), res.data) + if h := z.OnBlockDone; h != nil { + h(n) + } + close(c) + } + }() + return z +} + +// newBuffers instantiates new buffers which size matches the one in Header. +// The returned buffers are for decompression and compression respectively. +func (z *Writer) newBuffers() { + bSize := z.Header.BlockMaxSize + buf := getBuffer(bSize) + z.data = buf[:bSize] // Uncompressed buffer is the first half. +} + +// freeBuffers puts the writer's buffers back to the pool. +func (z *Writer) freeBuffers() { + // Put the buffer back into the pool, if any. + putBuffer(z.Header.BlockMaxSize, z.data) + z.data = nil +} + +// writeHeader builds and writes the header (magic+header) to the underlying io.Writer. +func (z *Writer) writeHeader() error { + // Default to 4Mb if BlockMaxSize is not set. + if z.Header.BlockMaxSize == 0 { + z.Header.BlockMaxSize = blockSize4M + } + // The only option that needs to be validated. + bSize := z.Header.BlockMaxSize + if !isValidBlockSize(z.Header.BlockMaxSize) { + return fmt.Errorf("lz4: invalid block max size: %d", bSize) + } + // Allocate the compressed/uncompressed buffers. + // The compressed buffer cannot exceed the uncompressed one. + z.newBuffers() + z.idx = 0 + + // Size is optional. + buf := z.buf[:] + + // Set the fixed size data: magic number, block max size and flags. + binary.LittleEndian.PutUint32(buf[0:], frameMagic) + flg := byte(Version << 6) + flg |= 1 << 5 // No block dependency. + if z.Header.BlockChecksum { + flg |= 1 << 4 + } + if z.Header.Size > 0 { + flg |= 1 << 3 + } + if !z.Header.NoChecksum { + flg |= 1 << 2 + } + buf[4] = flg + buf[5] = blockSizeValueToIndex(z.Header.BlockMaxSize) << 4 + + // Current buffer size: magic(4) + flags(1) + block max size (1). + n := 6 + // Optional items. + if z.Header.Size > 0 { + binary.LittleEndian.PutUint64(buf[n:], z.Header.Size) + n += 8 + } + + // The header checksum includes the flags, block max size and optional Size. + buf[n] = byte(xxh32.ChecksumZero(buf[4:n]) >> 8 & 0xFF) + z.checksum.Reset() + + // Header ready, write it out. + if _, err := z.dst.Write(buf[0 : n+1]); err != nil { + return err + } + z.Header.done = true + if debugFlag { + debug("wrote header %v", z.Header) + } + + return nil +} + +// Write compresses data from the supplied buffer into the underlying io.Writer. +// Write does not return until the data has been written. +func (z *Writer) Write(buf []byte) (int, error) { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return 0, err + } + } + if debugFlag { + debug("input buffer len=%d index=%d", len(buf), z.idx) + } + + zn := len(z.data) + var n int + for len(buf) > 0 { + if z.idx == 0 && len(buf) >= zn { + // Avoid a copy as there is enough data for a block. + if err := z.compressBlock(buf[:zn]); err != nil { + return n, err + } + n += zn + buf = buf[zn:] + continue + } + // Accumulate the data to be compressed. + m := copy(z.data[z.idx:], buf) + n += m + z.idx += m + buf = buf[m:] + if debugFlag { + debug("%d bytes copied to buf, current index %d", n, z.idx) + } + + if z.idx < len(z.data) { + // Buffer not filled. + if debugFlag { + debug("need more data for compression") + } + return n, nil + } + + // Buffer full. + if err := z.compressBlock(z.data); err != nil { + return n, err + } + z.idx = 0 + } + + return n, nil +} + +// compressBlock compresses a block. +func (z *Writer) compressBlock(data []byte) error { + if !z.NoChecksum { + _, _ = z.checksum.Write(data) + } + + if z.c != nil { + c := make(chan zResult) + z.c <- c // Send now to guarantee order + + // get a buffer from the pool and copy the data over + block := getBuffer(z.Header.BlockMaxSize)[:len(data)] + copy(block, data) + + go writerCompressBlock(c, z.Header, block) + return nil + } + + zdata := z.data[z.Header.BlockMaxSize:cap(z.data)] + // The compressed block size cannot exceed the input's. + var zn int + + if level := z.Header.CompressionLevel; level != 0 { + zn, _ = CompressBlockHC(data, zdata, level) + } else { + zn, _ = CompressBlock(data, zdata, z.hashtable[:]) + } + + var bLen uint32 + if debugFlag { + debug("block compression %d => %d", len(data), zn) + } + if zn > 0 && zn < len(data) { + // Compressible and compressed size smaller than uncompressed: ok! + bLen = uint32(zn) + zdata = zdata[:zn] + } else { + // Uncompressed block. + bLen = uint32(len(data)) | compressedBlockFlag + zdata = data + } + if debugFlag { + debug("block compression to be written len=%d data len=%d", bLen, len(zdata)) + } + + // Write the block. + if err := z.writeUint32(bLen); err != nil { + return err + } + written, err := z.dst.Write(zdata) + if err != nil { + return err + } + if h := z.OnBlockDone; h != nil { + h(written) + } + + if !z.BlockChecksum { + if debugFlag { + debug("current frame checksum %x", z.checksum.Sum32()) + } + return nil + } + checksum := xxh32.ChecksumZero(zdata) + if debugFlag { + debug("block checksum %x", checksum) + defer func() { debug("current frame checksum %x", z.checksum.Sum32()) }() + } + return z.writeUint32(checksum) +} + +// Flush flushes any pending compressed data to the underlying writer. +// Flush does not return until the data has been written. +// If the underlying writer returns an error, Flush returns that error. +func (z *Writer) Flush() error { + if debugFlag { + debug("flush with index %d", z.idx) + } + if z.idx == 0 { + return nil + } + + data := getBuffer(z.Header.BlockMaxSize)[:len(z.data[:z.idx])] + copy(data, z.data[:z.idx]) + + z.idx = 0 + if z.c == nil { + return z.compressBlock(data) + } + if !z.NoChecksum { + _, _ = z.checksum.Write(data) + } + c := make(chan zResult) + z.c <- c + writerCompressBlock(c, z.Header, data) + return nil +} + +func (z *Writer) close() error { + if z.c == nil { + return nil + } + // Send a sentinel block (no data to compress) to terminate the writer main goroutine. + c := make(chan zResult) + z.c <- c + c <- zResult{} + // Wait for the main goroutine to complete. + <-c + // At this point the main goroutine has shut down or is about to return. + z.c = nil + return z.err +} + +// Close closes the Writer, flushing any unwritten data to the underlying io.Writer, but does not close the underlying io.Writer. +func (z *Writer) Close() error { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return err + } + } + if err := z.Flush(); err != nil { + return err + } + if err := z.close(); err != nil { + return err + } + z.freeBuffers() + + if debugFlag { + debug("writing last empty block") + } + if err := z.writeUint32(0); err != nil { + return err + } + if z.NoChecksum { + return nil + } + checksum := z.checksum.Sum32() + if debugFlag { + debug("stream checksum %x", checksum) + } + return z.writeUint32(checksum) +} + +// Reset clears the state of the Writer z such that it is equivalent to its +// initial state from NewWriter, but instead writing to w. +// No access to the underlying io.Writer is performed. +func (z *Writer) Reset(w io.Writer) { + n := cap(z.c) + _ = z.close() + z.freeBuffers() + z.Header.Reset() + z.dst = w + z.checksum.Reset() + z.idx = 0 + z.err = nil + // reset hashtable to ensure deterministic output. + for i := range z.hashtable { + z.hashtable[i] = 0 + } + z.WithConcurrency(n) +} + +// writeUint32 writes a uint32 to the underlying writer. +func (z *Writer) writeUint32(x uint32) error { + buf := z.buf[:4] + binary.LittleEndian.PutUint32(buf, x) + _, err := z.dst.Write(buf) + return err +} + +// writerCompressBlock compresses data into a pooled buffer and writes its result +// out to the input channel. +func writerCompressBlock(c chan zResult, header Header, data []byte) { + zdata := getBuffer(header.BlockMaxSize) + // The compressed block size cannot exceed the input's. + var zn int + if level := header.CompressionLevel; level != 0 { + zn, _ = CompressBlockHC(data, zdata, level) + } else { + var hashTable [winSize]int + zn, _ = CompressBlock(data, zdata, hashTable[:]) + } + var res zResult + if zn > 0 && zn < len(data) { + res.size = uint32(zn) + res.data = zdata[:zn] + // release the uncompressed block since it is not used anymore + putBuffer(header.BlockMaxSize, data) + } else { + res.size = uint32(len(data)) | compressedBlockFlag + res.data = data + // release the compressed block since it was not used + putBuffer(header.BlockMaxSize, zdata) + } + if header.BlockChecksum { + res.checksum = xxh32.ChecksumZero(res.data) + } + c <- res +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go b/examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go new file mode 100644 index 0000000..ca8dc8c --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go @@ -0,0 +1,182 @@ +package lz4 + +import ( + "encoding/binary" + "io" +) + +// WriterLegacy implements the LZ4Demo frame decoder. +type WriterLegacy struct { + Header + // Handler called when a block has been successfully read. + // It provides the number of bytes read. + OnBlockDone func(size int) + + dst io.Writer // Destination. + data []byte // Data to be compressed + buffer for compressed data. + idx int // Index into data. + hashtable [winSize]int // Hash table used in CompressBlock(). +} + +// NewWriterLegacy returns a new LZ4 encoder for the legacy frame format. +// No access to the underlying io.Writer is performed. +// The supplied Header is checked at the first Write. +// It is ok to change it before the first Write but then not until a Reset() is performed. +func NewWriterLegacy(dst io.Writer) *WriterLegacy { + z := new(WriterLegacy) + z.Reset(dst) + return z +} + +// Write compresses data from the supplied buffer into the underlying io.Writer. +// Write does not return until the data has been written. +func (z *WriterLegacy) Write(buf []byte) (int, error) { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return 0, err + } + } + if debugFlag { + debug("input buffer len=%d index=%d", len(buf), z.idx) + } + + zn := len(z.data) + var n int + for len(buf) > 0 { + if z.idx == 0 && len(buf) >= zn { + // Avoid a copy as there is enough data for a block. + if err := z.compressBlock(buf[:zn]); err != nil { + return n, err + } + n += zn + buf = buf[zn:] + continue + } + // Accumulate the data to be compressed. + m := copy(z.data[z.idx:], buf) + n += m + z.idx += m + buf = buf[m:] + if debugFlag { + debug("%d bytes copied to buf, current index %d", n, z.idx) + } + + if z.idx < len(z.data) { + // Buffer not filled. + if debugFlag { + debug("need more data for compression") + } + return n, nil + } + + // Buffer full. + if err := z.compressBlock(z.data); err != nil { + return n, err + } + z.idx = 0 + } + + return n, nil +} + +// writeHeader builds and writes the header to the underlying io.Writer. +func (z *WriterLegacy) writeHeader() error { + // Legacy has fixed 8MB blocksizes + // https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md#legacy-frame + bSize := 2 * blockSize4M + + buf := make([]byte, 2*bSize, 2*bSize) + z.data = buf[:bSize] // Uncompressed buffer is the first half. + + z.idx = 0 + + // Header consists of one mageic number, write it out. + if err := binary.Write(z.dst, binary.LittleEndian, frameMagicLegacy); err != nil { + return err + } + z.Header.done = true + if debugFlag { + debug("wrote header %v", z.Header) + } + + return nil +} + +// compressBlock compresses a block. +func (z *WriterLegacy) compressBlock(data []byte) error { + bSize := 2 * blockSize4M + zdata := z.data[bSize:cap(z.data)] + // The compressed block size cannot exceed the input's. + var zn int + + if level := z.Header.CompressionLevel; level != 0 { + zn, _ = CompressBlockHC(data, zdata, level) + } else { + zn, _ = CompressBlock(data, zdata, z.hashtable[:]) + } + + if debugFlag { + debug("block compression %d => %d", len(data), zn) + } + zdata = zdata[:zn] + + // Write the block. + if err := binary.Write(z.dst, binary.LittleEndian, uint32(zn)); err != nil { + return err + } + written, err := z.dst.Write(zdata) + if err != nil { + return err + } + if h := z.OnBlockDone; h != nil { + h(written) + } + return nil +} + +// Flush flushes any pending compressed data to the underlying writer. +// Flush does not return until the data has been written. +// If the underlying writer returns an error, Flush returns that error. +func (z *WriterLegacy) Flush() error { + if debugFlag { + debug("flush with index %d", z.idx) + } + if z.idx == 0 { + return nil + } + + data := z.data[:z.idx] + z.idx = 0 + return z.compressBlock(data) +} + +// Close closes the WriterLegacy, flushing any unwritten data to the underlying io.Writer, but does not close the underlying io.Writer. +func (z *WriterLegacy) Close() error { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return err + } + } + if err := z.Flush(); err != nil { + return err + } + + if debugFlag { + debug("writing last empty block") + } + + return nil +} + +// Reset clears the state of the WriterLegacy z such that it is equivalent to its +// initial state from NewWriterLegacy, but instead writing to w. +// No access to the underlying io.Writer is performed. +func (z *WriterLegacy) Reset(w io.Writer) { + z.Header.Reset() + z.dst = w + z.idx = 0 + // reset hashtable to ensure deterministic output. + for i := range z.hashtable { + z.hashtable[i] = 0 + } +} diff --git a/examples/go/vendor/github.com/pkg/errors/.gitignore b/examples/go/vendor/github.com/pkg/errors/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/examples/go/vendor/github.com/pkg/errors/.travis.yml b/examples/go/vendor/github.com/pkg/errors/.travis.yml new file mode 100644 index 0000000..9159de0 --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/.travis.yml @@ -0,0 +1,10 @@ +language: go +go_import_path: github.com/pkg/errors +go: + - 1.11.x + - 1.12.x + - 1.13.x + - tip + +script: + - make check diff --git a/examples/go/vendor/github.com/pkg/errors/LICENSE b/examples/go/vendor/github.com/pkg/errors/LICENSE new file mode 100644 index 0000000..835ba3e --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Dave Cheney +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/pkg/errors/Makefile b/examples/go/vendor/github.com/pkg/errors/Makefile new file mode 100644 index 0000000..ce9d7cd --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/Makefile @@ -0,0 +1,44 @@ +PKGS := github.com/pkg/errors +SRCDIRS := $(shell go list -f '{{.Dir}}' $(PKGS)) +GO := go + +check: test vet gofmt misspell unconvert staticcheck ineffassign unparam + +test: + $(GO) test $(PKGS) + +vet: | test + $(GO) vet $(PKGS) + +staticcheck: + $(GO) get honnef.co/go/tools/cmd/staticcheck + staticcheck -checks all $(PKGS) + +misspell: + $(GO) get github.com/client9/misspell/cmd/misspell + misspell \ + -locale GB \ + -error \ + *.md *.go + +unconvert: + $(GO) get github.com/mdempsky/unconvert + unconvert -v $(PKGS) + +ineffassign: + $(GO) get github.com/gordonklaus/ineffassign + find $(SRCDIRS) -name '*.go' | xargs ineffassign + +pedantic: check errcheck + +unparam: + $(GO) get mvdan.cc/unparam + unparam ./... + +errcheck: + $(GO) get github.com/kisielk/errcheck + errcheck $(PKGS) + +gofmt: + @echo Checking code is gofmted + @test -z "$(shell gofmt -s -l -d -e $(SRCDIRS) | tee /dev/stderr)" diff --git a/examples/go/vendor/github.com/pkg/errors/README.md b/examples/go/vendor/github.com/pkg/errors/README.md new file mode 100644 index 0000000..54dfdcb --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/README.md @@ -0,0 +1,59 @@ +# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) + +Package errors provides simple error handling primitives. + +`go get github.com/pkg/errors` + +The traditional error handling idiom in Go is roughly akin to +```go +if err != nil { + return err +} +``` +which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. + +## Adding context to an error + +The errors.Wrap function returns a new error that adds context to the original error. For example +```go +_, err := ioutil.ReadAll(r) +if err != nil { + return errors.Wrap(err, "read failed") +} +``` +## Retrieving the cause of an error + +Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. +```go +type causer interface { + Cause() error +} +``` +`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: +```go +switch err := errors.Cause(err).(type) { +case *MyError: + // handle specifically +default: + // unknown error +} +``` + +[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). + +## Roadmap + +With the upcoming [Go2 error proposals](https://go.googlesource.com/proposal/+/master/design/go2draft.md) this package is moving into maintenance mode. The roadmap for a 1.0 release is as follows: + +- 0.9. Remove pre Go 1.9 and Go 1.10 support, address outstanding pull requests (if possible) +- 1.0. Final release. + +## Contributing + +Because of the Go2 errors changes, this package is not accepting proposals for new functionality. With that said, we welcome pull requests, bug fixes and issue reports. + +Before sending a PR, please discuss your change by raising an issue. + +## License + +BSD-2-Clause diff --git a/examples/go/vendor/github.com/pkg/errors/appveyor.yml b/examples/go/vendor/github.com/pkg/errors/appveyor.yml new file mode 100644 index 0000000..a932ead --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/appveyor.yml @@ -0,0 +1,32 @@ +version: build-{build}.{branch} + +clone_folder: C:\gopath\src\github.com\pkg\errors +shallow_clone: true # for startup speed + +environment: + GOPATH: C:\gopath + +platform: + - x64 + +# http://www.appveyor.com/docs/installed-software +install: + # some helpful output for debugging builds + - go version + - go env + # pre-installed MinGW at C:\MinGW is 32bit only + # but MSYS2 at C:\msys64 has mingw64 + - set PATH=C:\msys64\mingw64\bin;%PATH% + - gcc --version + - g++ --version + +build_script: + - go install -v ./... + +test_script: + - set PATH=C:\gopath\bin;%PATH% + - go test -v ./... + +#artifacts: +# - path: '%GOPATH%\bin\*.exe' +deploy: off diff --git a/examples/go/vendor/github.com/pkg/errors/errors.go b/examples/go/vendor/github.com/pkg/errors/errors.go new file mode 100644 index 0000000..161aea2 --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/errors.go @@ -0,0 +1,288 @@ +// Package errors provides simple error handling primitives. +// +// The traditional error handling idiom in Go is roughly akin to +// +// if err != nil { +// return err +// } +// +// which when applied recursively up the call stack results in error reports +// without context or debugging information. The errors package allows +// programmers to add context to the failure path in their code in a way +// that does not destroy the original value of the error. +// +// Adding context to an error +// +// The errors.Wrap function returns a new error that adds context to the +// original error by recording a stack trace at the point Wrap is called, +// together with the supplied message. For example +// +// _, err := ioutil.ReadAll(r) +// if err != nil { +// return errors.Wrap(err, "read failed") +// } +// +// If additional control is required, the errors.WithStack and +// errors.WithMessage functions destructure errors.Wrap into its component +// operations: annotating an error with a stack trace and with a message, +// respectively. +// +// Retrieving the cause of an error +// +// Using errors.Wrap constructs a stack of errors, adding context to the +// preceding error. Depending on the nature of the error it may be necessary +// to reverse the operation of errors.Wrap to retrieve the original error +// for inspection. Any error value which implements this interface +// +// type causer interface { +// Cause() error +// } +// +// can be inspected by errors.Cause. errors.Cause will recursively retrieve +// the topmost error that does not implement causer, which is assumed to be +// the original cause. For example: +// +// switch err := errors.Cause(err).(type) { +// case *MyError: +// // handle specifically +// default: +// // unknown error +// } +// +// Although the causer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// Formatted printing of errors +// +// All error values returned from this package implement fmt.Formatter and can +// be formatted by the fmt package. The following verbs are supported: +// +// %s print the error. If the error has a Cause it will be +// printed recursively. +// %v see %s +// %+v extended format. Each Frame of the error's StackTrace will +// be printed in detail. +// +// Retrieving the stack trace of an error or wrapper +// +// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are +// invoked. This information can be retrieved with the following interface: +// +// type stackTracer interface { +// StackTrace() errors.StackTrace +// } +// +// The returned errors.StackTrace type is defined as +// +// type StackTrace []Frame +// +// The Frame type represents a call site in the stack trace. Frame supports +// the fmt.Formatter interface that can be used for printing information about +// the stack trace of this error. For example: +// +// if err, ok := err.(stackTracer); ok { +// for _, f := range err.StackTrace() { +// fmt.Printf("%+s:%d\n", f, f) +// } +// } +// +// Although the stackTracer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// See the documentation for Frame.Format for more details. +package errors + +import ( + "fmt" + "io" +) + +// New returns an error with the supplied message. +// New also records the stack trace at the point it was called. +func New(message string) error { + return &fundamental{ + msg: message, + stack: callers(), + } +} + +// Errorf formats according to a format specifier and returns the string +// as a value that satisfies error. +// Errorf also records the stack trace at the point it was called. +func Errorf(format string, args ...interface{}) error { + return &fundamental{ + msg: fmt.Sprintf(format, args...), + stack: callers(), + } +} + +// fundamental is an error that has a message and a stack, but no caller. +type fundamental struct { + msg string + *stack +} + +func (f *fundamental) Error() string { return f.msg } + +func (f *fundamental) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + io.WriteString(s, f.msg) + f.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, f.msg) + case 'q': + fmt.Fprintf(s, "%q", f.msg) + } +} + +// WithStack annotates err with a stack trace at the point WithStack was called. +// If err is nil, WithStack returns nil. +func WithStack(err error) error { + if err == nil { + return nil + } + return &withStack{ + err, + callers(), + } +} + +type withStack struct { + error + *stack +} + +func (w *withStack) Cause() error { return w.error } + +// Unwrap provides compatibility for Go 1.13 error chains. +func (w *withStack) Unwrap() error { return w.error } + +func (w *withStack) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v", w.Cause()) + w.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, w.Error()) + case 'q': + fmt.Fprintf(s, "%q", w.Error()) + } +} + +// Wrap returns an error annotating err with a stack trace +// at the point Wrap is called, and the supplied message. +// If err is nil, Wrap returns nil. +func Wrap(err error, message string) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: message, + } + return &withStack{ + err, + callers(), + } +} + +// Wrapf returns an error annotating err with a stack trace +// at the point Wrapf is called, and the format specifier. +// If err is nil, Wrapf returns nil. +func Wrapf(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } + return &withStack{ + err, + callers(), + } +} + +// WithMessage annotates err with a new message. +// If err is nil, WithMessage returns nil. +func WithMessage(err error, message string) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: message, + } +} + +// WithMessagef annotates err with the format specifier. +// If err is nil, WithMessagef returns nil. +func WithMessagef(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } +} + +type withMessage struct { + cause error + msg string +} + +func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } +func (w *withMessage) Cause() error { return w.cause } + +// Unwrap provides compatibility for Go 1.13 error chains. +func (w *withMessage) Unwrap() error { return w.cause } + +func (w *withMessage) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v\n", w.Cause()) + io.WriteString(s, w.msg) + return + } + fallthrough + case 's', 'q': + io.WriteString(s, w.Error()) + } +} + +// Cause returns the underlying cause of the error, if possible. +// An error value has a cause if it implements the following +// interface: +// +// type causer interface { +// Cause() error +// } +// +// If the error does not implement Cause, the original error will +// be returned. If the error is nil, nil will be returned without further +// investigation. +func Cause(err error) error { + type causer interface { + Cause() error + } + + for err != nil { + cause, ok := err.(causer) + if !ok { + break + } + err = cause.Cause() + } + return err +} diff --git a/examples/go/vendor/github.com/pkg/errors/go113.go b/examples/go/vendor/github.com/pkg/errors/go113.go new file mode 100644 index 0000000..be0d10d --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/go113.go @@ -0,0 +1,38 @@ +// +build go1.13 + +package errors + +import ( + stderrors "errors" +) + +// Is reports whether any error in err's chain matches target. +// +// The chain consists of err itself followed by the sequence of errors obtained by +// repeatedly calling Unwrap. +// +// An error is considered to match a target if it is equal to that target or if +// it implements a method Is(error) bool such that Is(target) returns true. +func Is(err, target error) bool { return stderrors.Is(err, target) } + +// As finds the first error in err's chain that matches target, and if so, sets +// target to that error value and returns true. +// +// The chain consists of err itself followed by the sequence of errors obtained by +// repeatedly calling Unwrap. +// +// An error matches target if the error's concrete value is assignable to the value +// pointed to by target, or if the error has a method As(interface{}) bool such that +// As(target) returns true. In the latter case, the As method is responsible for +// setting target. +// +// As will panic if target is not a non-nil pointer to either a type that implements +// error, or to any interface type. As returns false if err is nil. +func As(err error, target interface{}) bool { return stderrors.As(err, target) } + +// Unwrap returns the result of calling the Unwrap method on err, if err's +// type contains an Unwrap method returning error. +// Otherwise, Unwrap returns nil. +func Unwrap(err error) error { + return stderrors.Unwrap(err) +} diff --git a/examples/go/vendor/github.com/pkg/errors/stack.go b/examples/go/vendor/github.com/pkg/errors/stack.go new file mode 100644 index 0000000..779a834 --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/stack.go @@ -0,0 +1,177 @@ +package errors + +import ( + "fmt" + "io" + "path" + "runtime" + "strconv" + "strings" +) + +// Frame represents a program counter inside a stack frame. +// For historical reasons if Frame is interpreted as a uintptr +// its value represents the program counter + 1. +type Frame uintptr + +// pc returns the program counter for this frame; +// multiple frames may have the same PC value. +func (f Frame) pc() uintptr { return uintptr(f) - 1 } + +// file returns the full path to the file that contains the +// function for this Frame's pc. +func (f Frame) file() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + file, _ := fn.FileLine(f.pc()) + return file +} + +// line returns the line number of source code of the +// function for this Frame's pc. +func (f Frame) line() int { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return 0 + } + _, line := fn.FileLine(f.pc()) + return line +} + +// name returns the name of this function, if known. +func (f Frame) name() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + return fn.Name() +} + +// Format formats the frame according to the fmt.Formatter interface. +// +// %s source file +// %d source line +// %n function name +// %v equivalent to %s:%d +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+s function name and path of source file relative to the compile time +// GOPATH separated by \n\t (\n\t) +// %+v equivalent to %+s:%d +func (f Frame) Format(s fmt.State, verb rune) { + switch verb { + case 's': + switch { + case s.Flag('+'): + io.WriteString(s, f.name()) + io.WriteString(s, "\n\t") + io.WriteString(s, f.file()) + default: + io.WriteString(s, path.Base(f.file())) + } + case 'd': + io.WriteString(s, strconv.Itoa(f.line())) + case 'n': + io.WriteString(s, funcname(f.name())) + case 'v': + f.Format(s, 's') + io.WriteString(s, ":") + f.Format(s, 'd') + } +} + +// MarshalText formats a stacktrace Frame as a text string. The output is the +// same as that of fmt.Sprintf("%+v", f), but without newlines or tabs. +func (f Frame) MarshalText() ([]byte, error) { + name := f.name() + if name == "unknown" { + return []byte(name), nil + } + return []byte(fmt.Sprintf("%s %s:%d", name, f.file(), f.line())), nil +} + +// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). +type StackTrace []Frame + +// Format formats the stack of Frames according to the fmt.Formatter interface. +// +// %s lists source files for each Frame in the stack +// %v lists the source file and line number for each Frame in the stack +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+v Prints filename, function, and line number for each Frame in the stack. +func (st StackTrace) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case s.Flag('+'): + for _, f := range st { + io.WriteString(s, "\n") + f.Format(s, verb) + } + case s.Flag('#'): + fmt.Fprintf(s, "%#v", []Frame(st)) + default: + st.formatSlice(s, verb) + } + case 's': + st.formatSlice(s, verb) + } +} + +// formatSlice will format this StackTrace into the given buffer as a slice of +// Frame, only valid when called with '%s' or '%v'. +func (st StackTrace) formatSlice(s fmt.State, verb rune) { + io.WriteString(s, "[") + for i, f := range st { + if i > 0 { + io.WriteString(s, " ") + } + f.Format(s, verb) + } + io.WriteString(s, "]") +} + +// stack represents a stack of program counters. +type stack []uintptr + +func (s *stack) Format(st fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case st.Flag('+'): + for _, pc := range *s { + f := Frame(pc) + fmt.Fprintf(st, "\n%+v", f) + } + } + } +} + +func (s *stack) StackTrace() StackTrace { + f := make([]Frame, len(*s)) + for i := 0; i < len(f); i++ { + f[i] = Frame((*s)[i]) + } + return f +} + +func callers() *stack { + const depth = 32 + var pcs [depth]uintptr + n := runtime.Callers(3, pcs[:]) + var st stack = pcs[0:n] + return &st +} + +// funcname removes the path prefix component of a function's name reported by func.Name(). +func funcname(name string) string { + i := strings.LastIndex(name, "/") + name = name[i+1:] + i = strings.Index(name, ".") + return name[i+1:] +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore new file mode 100644 index 0000000..a93cced --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore @@ -0,0 +1,6 @@ +certs/* +spec/spec +examples/simple-consumer/simple-consumer +examples/simple-producer/simple-producer + +.idea/ diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml new file mode 100644 index 0000000..4341bcf --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml @@ -0,0 +1,3 @@ +run: + build-tags: + - integration diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md new file mode 100644 index 0000000..fd03c1f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md @@ -0,0 +1,363 @@ +# Changelog + +## [v1.10.0](https://github.com/rabbitmq/amqp091-go/tree/v1.10.0) (2024-05-08) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.9.0...v1.10.0) + +**Implemented enhancements:** + +- Undeprecate non-context publish functions [\#259](https://github.com/rabbitmq/amqp091-go/pull/259) ([Zerpet](https://github.com/Zerpet)) +- Update Go directive [\#257](https://github.com/rabbitmq/amqp091-go/pull/257) ([Zerpet](https://github.com/Zerpet)) + +**Fixed bugs:** + +- republishing on reconnect bug in the example [\#249](https://github.com/rabbitmq/amqp091-go/issues/249) +- Channel Notify Close not receive event when connection is closed by RMQ server. [\#241](https://github.com/rabbitmq/amqp091-go/issues/241) +- Inconsistent documentation [\#231](https://github.com/rabbitmq/amqp091-go/issues/231) +- Data race in the client example [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) +- Fix string function of URI [\#258](https://github.com/rabbitmq/amqp091-go/pull/258) ([Zerpet](https://github.com/Zerpet)) + +**Closed issues:** + +- Documentation needed \(`PublishWithContext` does not use context\) [\#195](https://github.com/rabbitmq/amqp091-go/issues/195) +- concurrent dispatch data race [\#226](https://github.com/rabbitmq/amqp091-go/issues/226) + +**Merged pull requests:** + +- Fix data race in example [\#260](https://github.com/rabbitmq/amqp091-go/pull/260) ([Zerpet](https://github.com/Zerpet)) +- Address CodeQL warning [\#252](https://github.com/rabbitmq/amqp091-go/pull/252) ([lukebakken](https://github.com/lukebakken)) +- Add support for additional AMQP URI query parameters [\#251](https://github.com/rabbitmq/amqp091-go/pull/251) ([vilius-g](https://github.com/vilius-g)) +- Example fix [\#250](https://github.com/rabbitmq/amqp091-go/pull/250) ([Boris-Plato](https://github.com/Boris-Plato)) +- Increasing the code coverage [\#248](https://github.com/rabbitmq/amqp091-go/pull/248) ([edercarloscosta](https://github.com/edercarloscosta)) +- Use correct mutex to guard confirms.published [\#240](https://github.com/rabbitmq/amqp091-go/pull/240) ([hjr265](https://github.com/hjr265)) +- Documenting Publishing.Expiration usage [\#232](https://github.com/rabbitmq/amqp091-go/pull/232) ([niksteff](https://github.com/niksteff)) +- fix comment typo in example\_client\_test.go [\#228](https://github.com/rabbitmq/amqp091-go/pull/228) ([wisaTong](https://github.com/wisaTong)) +- Bump go.uber.org/goleak from 1.2.1 to 1.3.0 [\#227](https://github.com/rabbitmq/amqp091-go/pull/227) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.9.0](https://github.com/rabbitmq/amqp091-go/tree/v1.9.0) (2023-10-02) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.8.1...v1.9.0) + +**Implemented enhancements:** + +- Use of buffered delivery channels when prefetch\_count is not null [\#200](https://github.com/rabbitmq/amqp091-go/issues/200) + +**Fixed bugs:** + +- connection block when write connection reset by peer [\#222](https://github.com/rabbitmq/amqp091-go/issues/222) +- Test failure on 32bit architectures [\#202](https://github.com/rabbitmq/amqp091-go/issues/202) + +**Closed issues:** + +- Add a constant to set consumer timeout as queue argument [\#201](https://github.com/rabbitmq/amqp091-go/issues/201) +- Add a constant for CQ version [\#199](https://github.com/rabbitmq/amqp091-go/issues/199) +- Examples may need to be updated after \#140 [\#153](https://github.com/rabbitmq/amqp091-go/issues/153) + +**Merged pull requests:** + +- Update spec091.go [\#224](https://github.com/rabbitmq/amqp091-go/pull/224) ([pinkfish](https://github.com/pinkfish)) +- Closes 222 [\#223](https://github.com/rabbitmq/amqp091-go/pull/223) ([yywing](https://github.com/yywing)) +- Update write.go [\#221](https://github.com/rabbitmq/amqp091-go/pull/221) ([pinkfish](https://github.com/pinkfish)) +- Bump versions [\#219](https://github.com/rabbitmq/amqp091-go/pull/219) ([lukebakken](https://github.com/lukebakken)) +- remove extra word 'accept' from ExchangeDeclare description [\#217](https://github.com/rabbitmq/amqp091-go/pull/217) ([a-sabzian](https://github.com/a-sabzian)) +- Misc Windows CI updates [\#216](https://github.com/rabbitmq/amqp091-go/pull/216) ([lukebakken](https://github.com/lukebakken)) +- Stop using deprecated Publish function [\#207](https://github.com/rabbitmq/amqp091-go/pull/207) ([Zerpet](https://github.com/Zerpet)) +- Constant for consumer timeout queue argument [\#206](https://github.com/rabbitmq/amqp091-go/pull/206) ([Zerpet](https://github.com/Zerpet)) +- Add a constant for CQ v2 queue argument [\#205](https://github.com/rabbitmq/amqp091-go/pull/205) ([Zerpet](https://github.com/Zerpet)) +- Fix example for 32-bit compatibility [\#204](https://github.com/rabbitmq/amqp091-go/pull/204) ([Zerpet](https://github.com/Zerpet)) +- Fix to increase timeout milliseconds since it's too tight [\#203](https://github.com/rabbitmq/amqp091-go/pull/203) ([t2y](https://github.com/t2y)) +- Add Channel.ConsumeWithContext to be able to cancel delivering [\#192](https://github.com/rabbitmq/amqp091-go/pull/192) ([t2y](https://github.com/t2y)) + +## [v1.8.1](https://github.com/rabbitmq/amqp091-go/tree/v1.8.1) (2023-05-04) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.8.0...v1.8.1) + +**Fixed bugs:** + +- Fixed incorrect version reported in client properties [52ce2efd03c53dcf77d5496977da46840e9abd24](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) + +**Merged pull requests:** + +- Fix Example Client not reconnecting [\#186](https://github.com/rabbitmq/amqp091-go/pull/186) ([frankfil](https://github.com/frankfil)) + +## [v1.8.0](https://github.com/rabbitmq/amqp091-go/tree/v1.8.0) (2023-03-21) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.7.0...v1.8.0) + +**Closed issues:** + +- memory leak [\#179](https://github.com/rabbitmq/amqp091-go/issues/179) +- the publishWithContext interface will not return when it times out [\#178](https://github.com/rabbitmq/amqp091-go/issues/178) + +**Merged pull requests:** + +- Fix race condition on confirms [\#183](https://github.com/rabbitmq/amqp091-go/pull/183) ([calloway-jacob](https://github.com/calloway-jacob)) +- Add a CloseDeadline function to Connection [\#181](https://github.com/rabbitmq/amqp091-go/pull/181) ([Zerpet](https://github.com/Zerpet)) +- Fix memory leaks [\#180](https://github.com/rabbitmq/amqp091-go/pull/180) ([GXKe](https://github.com/GXKe)) +- Bump go.uber.org/goleak from 1.2.0 to 1.2.1 [\#177](https://github.com/rabbitmq/amqp091-go/pull/177) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.7.0](https://github.com/rabbitmq/amqp091-go/tree/v1.7.0) (2023-02-09) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.1...v1.7.0) + +**Closed issues:** + +- \#31 resurfacing \(?\) [\#170](https://github.com/rabbitmq/amqp091-go/issues/170) +- Deprecate QueueInspect [\#167](https://github.com/rabbitmq/amqp091-go/issues/167) +- v1.6.0 causing rabbit connection errors [\#160](https://github.com/rabbitmq/amqp091-go/issues/160) + +**Merged pull requests:** + +- Set channels and allocator to nil in shutdown [\#172](https://github.com/rabbitmq/amqp091-go/pull/172) ([lukebakken](https://github.com/lukebakken)) +- Fix racing in Open [\#171](https://github.com/rabbitmq/amqp091-go/pull/171) ([Zerpet](https://github.com/Zerpet)) +- adding go 1.20 to tests [\#169](https://github.com/rabbitmq/amqp091-go/pull/169) ([halilylm](https://github.com/halilylm)) +- Deprecate the QueueInspect function [\#168](https://github.com/rabbitmq/amqp091-go/pull/168) ([lukebakken](https://github.com/lukebakken)) +- Check if channel is nil before updating it [\#150](https://github.com/rabbitmq/amqp091-go/pull/150) ([julienschmidt](https://github.com/julienschmidt)) + +## [v1.6.1](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1) (2023-02-01) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.1-rc.2...v1.6.1) + +**Merged pull requests:** + +- Update Makefile targets related to RabbitMQ [\#163](https://github.com/rabbitmq/amqp091-go/pull/163) ([Zerpet](https://github.com/Zerpet)) + +## [v1.6.1-rc.2](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1-rc.2) (2023-01-31) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.1-rc.1...v1.6.1-rc.2) + +**Merged pull requests:** + +- Do not overly protect writes [\#162](https://github.com/rabbitmq/amqp091-go/pull/162) ([lukebakken](https://github.com/lukebakken)) + +## [v1.6.1-rc.1](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1-rc.1) (2023-01-31) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.0...v1.6.1-rc.1) + +**Closed issues:** + +- Calling Channel\(\) on an empty connection panics [\#148](https://github.com/rabbitmq/amqp091-go/issues/148) + +**Merged pull requests:** + +- Ensure flush happens and correctly lock connection for a series of unflushed writes [\#161](https://github.com/rabbitmq/amqp091-go/pull/161) ([lukebakken](https://github.com/lukebakken)) + +## [v1.6.0](https://github.com/rabbitmq/amqp091-go/tree/v1.6.0) (2023-01-20) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.5.0...v1.6.0) + +**Implemented enhancements:** + +- Add constants for Queue arguments [\#145](https://github.com/rabbitmq/amqp091-go/pull/145) ([Zerpet](https://github.com/Zerpet)) + +**Closed issues:** + +- README not up to date [\#154](https://github.com/rabbitmq/amqp091-go/issues/154) +- Allow re-using default connection config \(custom properties\) [\#152](https://github.com/rabbitmq/amqp091-go/issues/152) +- Rename package name to amqp in V2 [\#151](https://github.com/rabbitmq/amqp091-go/issues/151) +- Helper types to declare quorum queues [\#144](https://github.com/rabbitmq/amqp091-go/issues/144) +- Inefficient use of buffers reduces potential throughput for basicPublish with small messages. [\#141](https://github.com/rabbitmq/amqp091-go/issues/141) +- bug, close cause panic [\#130](https://github.com/rabbitmq/amqp091-go/issues/130) +- Publishing Headers are unable to store Table with slice values [\#125](https://github.com/rabbitmq/amqp091-go/issues/125) +- Example client can deadlock in Close due to unconsumed confirmations [\#122](https://github.com/rabbitmq/amqp091-go/issues/122) +- SAC not working properly [\#106](https://github.com/rabbitmq/amqp091-go/issues/106) + +**Merged pull requests:** + +- Add automatic CHANGELOG.md generation [\#158](https://github.com/rabbitmq/amqp091-go/pull/158) ([lukebakken](https://github.com/lukebakken)) +- Supply library-defined props with NewConnectionProperties [\#157](https://github.com/rabbitmq/amqp091-go/pull/157) ([slagiewka](https://github.com/slagiewka)) +- Fix linter warnings [\#156](https://github.com/rabbitmq/amqp091-go/pull/156) ([Zerpet](https://github.com/Zerpet)) +- Remove outdated information from README [\#155](https://github.com/rabbitmq/amqp091-go/pull/155) ([scriptcoded](https://github.com/scriptcoded)) +- Add example producer using DeferredConfirm [\#149](https://github.com/rabbitmq/amqp091-go/pull/149) ([Zerpet](https://github.com/Zerpet)) +- Ensure code is formatted [\#147](https://github.com/rabbitmq/amqp091-go/pull/147) ([lukebakken](https://github.com/lukebakken)) +- Fix inefficient use of buffers that reduces the potential throughput of basicPublish [\#142](https://github.com/rabbitmq/amqp091-go/pull/142) ([fadams](https://github.com/fadams)) +- Do not embed context in DeferredConfirmation [\#140](https://github.com/rabbitmq/amqp091-go/pull/140) ([tie](https://github.com/tie)) +- Add constant for default exchange [\#139](https://github.com/rabbitmq/amqp091-go/pull/139) ([marlongerson](https://github.com/marlongerson)) +- Fix indentation and remove unnecessary instructions [\#138](https://github.com/rabbitmq/amqp091-go/pull/138) ([alraujo](https://github.com/alraujo)) +- Remove unnecessary instruction [\#135](https://github.com/rabbitmq/amqp091-go/pull/135) ([alraujo](https://github.com/alraujo)) +- Fix example client to avoid deadlock in Close [\#123](https://github.com/rabbitmq/amqp091-go/pull/123) ([Zerpet](https://github.com/Zerpet)) +- Bump go.uber.org/goleak from 1.1.12 to 1.2.0 [\#116](https://github.com/rabbitmq/amqp091-go/pull/116) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.5.0](https://github.com/rabbitmq/amqp091-go/tree/v1.5.0) (2022-09-07) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.4.0...v1.5.0) + +**Implemented enhancements:** + +- Provide a friendly way to set connection name [\#105](https://github.com/rabbitmq/amqp091-go/issues/105) + +**Closed issues:** + +- Support connection.update-secret [\#107](https://github.com/rabbitmq/amqp091-go/issues/107) +- Example Client: Implementation of a Consumer with reconnection support [\#40](https://github.com/rabbitmq/amqp091-go/issues/40) + +**Merged pull requests:** + +- use PublishWithContext instead of Publish [\#115](https://github.com/rabbitmq/amqp091-go/pull/115) ([Gsantomaggio](https://github.com/Gsantomaggio)) +- Add support for connection.update-secret [\#114](https://github.com/rabbitmq/amqp091-go/pull/114) ([Zerpet](https://github.com/Zerpet)) +- Remove warning on RabbitMQ tutorials in go [\#113](https://github.com/rabbitmq/amqp091-go/pull/113) ([ChunyiLyu](https://github.com/ChunyiLyu)) +- Update AMQP Spec [\#110](https://github.com/rabbitmq/amqp091-go/pull/110) ([Zerpet](https://github.com/Zerpet)) +- Add an example of reliable consumer [\#109](https://github.com/rabbitmq/amqp091-go/pull/109) ([Zerpet](https://github.com/Zerpet)) +- Add convenience function to set connection name [\#108](https://github.com/rabbitmq/amqp091-go/pull/108) ([Zerpet](https://github.com/Zerpet)) + +## [v1.4.0](https://github.com/rabbitmq/amqp091-go/tree/v1.4.0) (2022-07-19) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.4...v1.4.0) + +**Closed issues:** + +- target machine actively refused connection [\#99](https://github.com/rabbitmq/amqp091-go/issues/99) +- 504 channel/connection is not open error occurred in multiple connection with same rabbitmq service [\#97](https://github.com/rabbitmq/amqp091-go/issues/97) +- Add possible cancel of DeferredConfirmation [\#92](https://github.com/rabbitmq/amqp091-go/issues/92) +- Documentation [\#89](https://github.com/rabbitmq/amqp091-go/issues/89) +- Channel Close gets stuck after closing a connection \(via management UI\) [\#88](https://github.com/rabbitmq/amqp091-go/issues/88) +- this library has same issue [\#83](https://github.com/rabbitmq/amqp091-go/issues/83) +- Provide a logging interface [\#81](https://github.com/rabbitmq/amqp091-go/issues/81) +- 1.4.0 release checklist [\#77](https://github.com/rabbitmq/amqp091-go/issues/77) +- Data race in the client example [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) +- reader go routine hangs and leaks when Connection.Close\(\) is called multiple times [\#69](https://github.com/rabbitmq/amqp091-go/issues/69) +- Support auto-reconnect and cluster [\#65](https://github.com/rabbitmq/amqp091-go/issues/65) +- Connection/Channel Deadlock [\#32](https://github.com/rabbitmq/amqp091-go/issues/32) +- Closing connection and/or channel hangs NotifyPublish is used [\#21](https://github.com/rabbitmq/amqp091-go/issues/21) +- Consumer channel isn't closed in the event of unexpected disconnection [\#18](https://github.com/rabbitmq/amqp091-go/issues/18) + +**Merged pull requests:** + +- fix race condition with context close and confirm at the same time on DeferredConfirmation. [\#101](https://github.com/rabbitmq/amqp091-go/pull/101) ([sapk](https://github.com/sapk)) +- Add build TLS config from URI [\#98](https://github.com/rabbitmq/amqp091-go/pull/98) ([reddec](https://github.com/reddec)) +- Use context for Publish methods [\#96](https://github.com/rabbitmq/amqp091-go/pull/96) ([sapk](https://github.com/sapk)) +- Added function to get the remote peer's IP address \(conn.RemoteAddr\(\)\) [\#95](https://github.com/rabbitmq/amqp091-go/pull/95) ([rabb1t](https://github.com/rabb1t)) +- Update connection documentation [\#90](https://github.com/rabbitmq/amqp091-go/pull/90) ([Zerpet](https://github.com/Zerpet)) +- Revert test to demonstrate actual bug [\#87](https://github.com/rabbitmq/amqp091-go/pull/87) ([lukebakken](https://github.com/lukebakken)) +- Minor improvements to examples [\#86](https://github.com/rabbitmq/amqp091-go/pull/86) ([lukebakken](https://github.com/lukebakken)) +- Do not skip flaky test in CI [\#85](https://github.com/rabbitmq/amqp091-go/pull/85) ([lukebakken](https://github.com/lukebakken)) +- Add logging [\#84](https://github.com/rabbitmq/amqp091-go/pull/84) ([lukebakken](https://github.com/lukebakken)) +- Add a win32 build [\#82](https://github.com/rabbitmq/amqp091-go/pull/82) ([lukebakken](https://github.com/lukebakken)) +- channel: return nothing instead of always a nil-error in receive methods [\#80](https://github.com/rabbitmq/amqp091-go/pull/80) ([fho](https://github.com/fho)) +- update the contributing & readme files, improve makefile [\#79](https://github.com/rabbitmq/amqp091-go/pull/79) ([fho](https://github.com/fho)) +- Fix lint errors [\#78](https://github.com/rabbitmq/amqp091-go/pull/78) ([lukebakken](https://github.com/lukebakken)) +- ci: run golangci-lint [\#76](https://github.com/rabbitmq/amqp091-go/pull/76) ([fho](https://github.com/fho)) +- ci: run test via make & remove travis CI config [\#75](https://github.com/rabbitmq/amqp091-go/pull/75) ([fho](https://github.com/fho)) +- ci: run tests with race detector [\#74](https://github.com/rabbitmq/amqp091-go/pull/74) ([fho](https://github.com/fho)) +- Detect go routine leaks in integration testcases [\#73](https://github.com/rabbitmq/amqp091-go/pull/73) ([fho](https://github.com/fho)) +- connection: fix: reader go-routine is leaked on connection close [\#70](https://github.com/rabbitmq/amqp091-go/pull/70) ([fho](https://github.com/fho)) +- adding best practises for NotifyPublish for issue\_21 scenario [\#68](https://github.com/rabbitmq/amqp091-go/pull/68) ([DanielePalaia](https://github.com/DanielePalaia)) +- Update Go version [\#67](https://github.com/rabbitmq/amqp091-go/pull/67) ([Zerpet](https://github.com/Zerpet)) +- Regenerate certs with SHA256 to fix test with Go 1.18+ [\#66](https://github.com/rabbitmq/amqp091-go/pull/66) ([anthonyfok](https://github.com/anthonyfok)) + +## [v1.3.4](https://github.com/rabbitmq/amqp091-go/tree/v1.3.4) (2022-04-01) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.3...v1.3.4) + +**Merged pull requests:** + +- bump version to 1.3.4 [\#63](https://github.com/rabbitmq/amqp091-go/pull/63) ([DanielePalaia](https://github.com/DanielePalaia)) +- updating doc [\#62](https://github.com/rabbitmq/amqp091-go/pull/62) ([DanielePalaia](https://github.com/DanielePalaia)) + +## [v1.3.3](https://github.com/rabbitmq/amqp091-go/tree/v1.3.3) (2022-04-01) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.2...v1.3.3) + +**Closed issues:** + +- Add Client Version [\#49](https://github.com/rabbitmq/amqp091-go/issues/49) +- OpenTelemetry Propagation [\#22](https://github.com/rabbitmq/amqp091-go/issues/22) + +**Merged pull requests:** + +- bump buildVersion for release [\#61](https://github.com/rabbitmq/amqp091-go/pull/61) ([DanielePalaia](https://github.com/DanielePalaia)) +- adding documentation for notifyClose best pratices [\#60](https://github.com/rabbitmq/amqp091-go/pull/60) ([DanielePalaia](https://github.com/DanielePalaia)) +- adding documentation on NotifyClose of connection and channel to enfo… [\#59](https://github.com/rabbitmq/amqp091-go/pull/59) ([DanielePalaia](https://github.com/DanielePalaia)) + +## [v1.3.2](https://github.com/rabbitmq/amqp091-go/tree/v1.3.2) (2022-03-28) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.1...v1.3.2) + +**Closed issues:** + +- Potential race condition in Connection module [\#31](https://github.com/rabbitmq/amqp091-go/issues/31) + +**Merged pull requests:** + +- bump versioning to 1.3.2 [\#58](https://github.com/rabbitmq/amqp091-go/pull/58) ([DanielePalaia](https://github.com/DanielePalaia)) + +## [v1.3.1](https://github.com/rabbitmq/amqp091-go/tree/v1.3.1) (2022-03-25) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.0...v1.3.1) + +**Closed issues:** + +- Possible deadlock on DeferredConfirmation.Wait\(\) [\#46](https://github.com/rabbitmq/amqp091-go/issues/46) +- Call to Delivery.Ack blocks indefinitely in case of disconnection [\#19](https://github.com/rabbitmq/amqp091-go/issues/19) +- Unexpacted behavor of channel.IsClosed\(\) [\#14](https://github.com/rabbitmq/amqp091-go/issues/14) +- A possible dead lock in connection close notification Go channel [\#11](https://github.com/rabbitmq/amqp091-go/issues/11) + +**Merged pull requests:** + +- These ones were the ones testing Open scenarios. The issue is that Op… [\#57](https://github.com/rabbitmq/amqp091-go/pull/57) ([DanielePalaia](https://github.com/DanielePalaia)) +- changing defaultVersion to buildVersion and create a simple change\_ve… [\#54](https://github.com/rabbitmq/amqp091-go/pull/54) ([DanielePalaia](https://github.com/DanielePalaia)) +- adding integration test for issue 11 [\#50](https://github.com/rabbitmq/amqp091-go/pull/50) ([DanielePalaia](https://github.com/DanielePalaia)) +- Remove the old link product [\#48](https://github.com/rabbitmq/amqp091-go/pull/48) ([Gsantomaggio](https://github.com/Gsantomaggio)) +- Fix deadlock on DeferredConfirmations [\#47](https://github.com/rabbitmq/amqp091-go/pull/47) ([SpencerTorres](https://github.com/SpencerTorres)) +- Example client: Rename Stream\(\) to Consume\(\) to avoid confusion with RabbitMQ streams [\#39](https://github.com/rabbitmq/amqp091-go/pull/39) ([andygrunwald](https://github.com/andygrunwald)) +- Example client: Rename `name` to `queueName` to make the usage clear and explicit [\#38](https://github.com/rabbitmq/amqp091-go/pull/38) ([andygrunwald](https://github.com/andygrunwald)) +- Client example: Renamed concept "Session" to "Client" [\#37](https://github.com/rabbitmq/amqp091-go/pull/37) ([andygrunwald](https://github.com/andygrunwald)) +- delete unuseful code [\#36](https://github.com/rabbitmq/amqp091-go/pull/36) ([liutaot](https://github.com/liutaot)) +- Client Example: Fix closing order [\#35](https://github.com/rabbitmq/amqp091-go/pull/35) ([andygrunwald](https://github.com/andygrunwald)) +- Client example: Use instance logger instead of global logger [\#34](https://github.com/rabbitmq/amqp091-go/pull/34) ([andygrunwald](https://github.com/andygrunwald)) + +## [v1.3.0](https://github.com/rabbitmq/amqp091-go/tree/v1.3.0) (2022-01-13) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.2.0...v1.3.0) + +**Closed issues:** + +- documentation of changes triggering version updates [\#29](https://github.com/rabbitmq/amqp091-go/issues/29) +- Persistent messages folder [\#27](https://github.com/rabbitmq/amqp091-go/issues/27) + +**Merged pull requests:** + +- Expose a method to enable out-of-order Publisher Confirms [\#33](https://github.com/rabbitmq/amqp091-go/pull/33) ([benmoss](https://github.com/benmoss)) +- Fix Signed 8-bit headers being treated as unsigned [\#26](https://github.com/rabbitmq/amqp091-go/pull/26) ([alex-goodisman](https://github.com/alex-goodisman)) + +## [v1.2.0](https://github.com/rabbitmq/amqp091-go/tree/v1.2.0) (2021-11-17) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.1.0...v1.2.0) + +**Closed issues:** + +- No access to this vhost [\#24](https://github.com/rabbitmq/amqp091-go/issues/24) +- copyright issue? [\#12](https://github.com/rabbitmq/amqp091-go/issues/12) +- A possible dead lock when publishing message with confirmation [\#10](https://github.com/rabbitmq/amqp091-go/issues/10) +- Semver release [\#7](https://github.com/rabbitmq/amqp091-go/issues/7) + +**Merged pull requests:** + +- Fix deadlock between publishing and receiving confirms [\#25](https://github.com/rabbitmq/amqp091-go/pull/25) ([benmoss](https://github.com/benmoss)) +- Add GetNextPublishSeqNo for channel in confirm mode [\#23](https://github.com/rabbitmq/amqp091-go/pull/23) ([kamal-github](https://github.com/kamal-github)) +- Added support for cert-only login without user and password [\#20](https://github.com/rabbitmq/amqp091-go/pull/20) ([mihaitodor](https://github.com/mihaitodor)) + +## [v1.1.0](https://github.com/rabbitmq/amqp091-go/tree/v1.1.0) (2021-09-21) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/ebd83429aa8cb06fa569473f623e87675f96d3a9...v1.1.0) + +**Closed issues:** + +- AMQPLAIN authentication does not work [\#15](https://github.com/rabbitmq/amqp091-go/issues/15) + +**Merged pull requests:** + +- Fix AMQPLAIN authentication mechanism [\#16](https://github.com/rabbitmq/amqp091-go/pull/16) ([hodbn](https://github.com/hodbn)) +- connection: clarify documented behavior of NotifyClose [\#13](https://github.com/rabbitmq/amqp091-go/pull/13) ([pabigot](https://github.com/pabigot)) +- Add a link to pkg.go.dev API docs [\#9](https://github.com/rabbitmq/amqp091-go/pull/9) ([benmoss](https://github.com/benmoss)) +- add test go version 1.16.x and 1.17.x [\#8](https://github.com/rabbitmq/amqp091-go/pull/8) ([k4n4ry](https://github.com/k4n4ry)) +- fix typos [\#6](https://github.com/rabbitmq/amqp091-go/pull/6) ([h44z](https://github.com/h44z)) +- Heartbeat interval should be timeout/2 [\#5](https://github.com/rabbitmq/amqp091-go/pull/5) ([ifo20](https://github.com/ifo20)) +- Exporting Channel State [\#4](https://github.com/rabbitmq/amqp091-go/pull/4) ([eibrunorodrigues](https://github.com/eibrunorodrigues)) +- Add codeql analysis [\#3](https://github.com/rabbitmq/amqp091-go/pull/3) ([MirahImage](https://github.com/MirahImage)) +- Add PR github action. [\#2](https://github.com/rabbitmq/amqp091-go/pull/2) ([MirahImage](https://github.com/MirahImage)) +- Update Copyright Statement [\#1](https://github.com/rabbitmq/amqp091-go/pull/1) ([rlewis24](https://github.com/rlewis24)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..24b5675 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md @@ -0,0 +1,77 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in RabbitMQ Operator project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at oss-coc@vmware.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq + diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md new file mode 100644 index 0000000..ec86fe5 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md @@ -0,0 +1,62 @@ +# Contributing + +## Workflow + +Here is the recommended workflow: + +1. Fork this repository, **github.com/rabbitmq/amqp091-go** +1. Create your feature branch (`git checkout -b my-new-feature`) +1. Run Static Checks +1. Run integration tests (see below) +1. **Implement tests** +1. Implement fixes +1. Commit your changes. Use a [good, descriptive, commit message][good-commit]. +1. Push to a branch (`git push -u origin my-new-feature`) +1. Submit a pull request + +[good-commit]: https://cbea.ms/git-commit/ + +## Running Static Checks + +golangci-lint must be installed to run the static checks. See [installation +docs](https://golangci-lint.run/usage/install/) for more information. + +The static checks can be run via: + +```shell +make checks +``` + +## Running Tests + +### Integration Tests + +Running the Integration tests require: + +* A running RabbitMQ node with all defaults: + [https://www.rabbitmq.com/download.html](https://www.rabbitmq.com/download.html) +* That the server is either reachable via `amqp://guest:guest@127.0.0.1:5672/` + or the environment variable `AMQP_URL` set to it's URL + (e.g.: `export AMQP_URL="amqp://guest:verysecretpasswd@rabbitmq-host:5772/`) + +The integration tests can be run via: + +```shell +make tests +``` + +Some tests require access to `rabbitmqctl` CLI. Use the environment variable +`RABBITMQ_RABBITMQCTL_PATH=/some/path/to/rabbitmqctl` to run those tests. + +If you have Docker available in your machine, you can run: + +```shell +make tests-docker +``` + +This target will start a RabbitMQ container, run the test suite with the environment +variable setup, and stop RabbitMQ container after a successful run. + +All integration tests should use the `integrationConnection(...)` test +helpers defined in `integration_test.go` to setup the integration environment +and logging. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE b/examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE new file mode 100644 index 0000000..72fa55e --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE @@ -0,0 +1,25 @@ +AMQP 0-9-1 Go Client +Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. + +Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile b/examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile new file mode 100644 index 0000000..7dc71bc --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile @@ -0,0 +1,57 @@ +.DEFAULT_GOAL := list + +# Insert a comment starting with '##' after a target, and it will be printed by 'make' and 'make list' +.PHONY: list +list: ## list Makefile targets + @echo "The most used targets: \n" + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' + +.PHONY: check-fmt +check-fmt: ## Ensure code is formatted + gofmt -l -d . # For the sake of debugging + test -z "$$(gofmt -l .)" + +.PHONY: fmt +fmt: ## Run go fmt against code + go fmt ./... + +.PHONY: tests +tests: ## Run all tests and requires a running rabbitmq-server. Use GO_TEST_FLAGS to add extra flags to go test + go test -race -v -tags integration $(GO_TEST_FLAGS) + +.PHONY: tests-docker +tests-docker: rabbitmq-server + RABBITMQ_RABBITMQCTL_PATH="DOCKER:$(CONTAINER_NAME)" go test -race -v -tags integration $(GO_TEST_FLAGS) + $(MAKE) stop-rabbitmq-server + +.PHONY: check +check: + golangci-lint run ./... + +CONTAINER_NAME ?= amqp091-go-rabbitmq + +.PHONY: rabbitmq-server +rabbitmq-server: ## Start a RabbitMQ server using Docker. Container name can be customised with CONTAINER_NAME=some-rabbit + docker run --detach --rm --name $(CONTAINER_NAME) \ + --publish 5672:5672 --publish 15672:15672 \ + --pull always rabbitmq:3-management + +.PHONY: stop-rabbitmq-server +stop-rabbitmq-server: ## Stop a RabbitMQ server using Docker. Container name can be customised with CONTAINER_NAME=some-rabbit + docker stop $(CONTAINER_NAME) + +certs: + ./certs.sh + +.PHONY: certs-rm +certs-rm: + rm -r ./certs/ + +.PHONY: rabbitmq-server-tls +rabbitmq-server-tls: | certs ## Start a RabbitMQ server using Docker. Container name can be customised with CONTAINER_NAME=some-rabbit + docker run --detach --rm --name $(CONTAINER_NAME) \ + --publish 5672:5672 --publish 5671:5671 --publish 15672:15672 \ + --mount type=bind,src=./certs/server,dst=/certs \ + --mount type=bind,src=./certs/ca/cacert.pem,dst=/certs/cacert.pem,readonly \ + --mount type=bind,src=./rabbitmq-confs/tls/90-tls.conf,dst=/etc/rabbitmq/conf.d/90-tls.conf \ + --pull always rabbitmq:3-management diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md new file mode 100644 index 0000000..6d3143f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md @@ -0,0 +1,105 @@ +# Go RabbitMQ Client Library + +[![amqp091-go](https://github.com/rabbitmq/amqp091-go/actions/workflows/tests.yml/badge.svg)](https://github.com/rabbitmq/amqp091-go/actions/workflows/tests.yml) +[![Go Reference](https://pkg.go.dev/badge/github.com/rabbitmq/amqp091-go.svg)](https://pkg.go.dev/github.com/rabbitmq/amqp091-go) +[![Go Report Card](https://goreportcard.com/badge/github.com/rabbitmq/amqp091-go)](https://goreportcard.com/report/github.com/rabbitmq/amqp091-go) + +This is a Go AMQP 0.9.1 client maintained by the [RabbitMQ core team](https://github.com/rabbitmq). +It was [originally developed by Sean Treadway](https://github.com/streadway/amqp). + +## Differences from streadway/amqp + +Some things are different compared to the original client, +others haven't changed. + +### Package Name + +This library uses a different package name. If moving from `streadway/amqp`, +using an alias may reduce the number of changes needed: + +``` go +amqp "github.com/rabbitmq/amqp091-go" +``` + +### License + +This client uses the same 2-clause BSD license as the original project. + +### Public API Evolution + + This client retains key API elements as practically possible. + It is, however, open to reasonable breaking public API changes suggested by the community. + We don't have the "no breaking public API changes ever" rule and fully recognize + that a good client API evolves over time. + + +## Project Maturity + +This project is based on a mature Go client that's been around for over a decade. + + +## Supported Go Versions + +This client supports two most recent Go release series. + + +## Supported RabbitMQ Versions + +This project supports RabbitMQ versions starting with `2.0` but primarily tested +against [currently supported RabbitMQ release series](https://www.rabbitmq.com/versions.html). + +Some features and behaviours may be server version-specific. + +## Goals + +Provide a functional interface that closely represents the AMQP 0.9.1 model +targeted to RabbitMQ as a server. This includes the minimum necessary to +interact the semantics of the protocol. + +## Non-goals + +Things not intended to be supported. + + * Auto reconnect and re-synchronization of client and server topologies. + * Reconnection would require understanding the error paths when the + topology cannot be declared on reconnect. This would require a new set + of types and code paths that are best suited at the call-site of this + package. AMQP has a dynamic topology that needs all peers to agree. If + this doesn't happen, the behavior is undefined. Instead of producing a + possible interface with undefined behavior, this package is designed to + be simple for the caller to implement the necessary connection-time + topology declaration so that reconnection is trivial and encapsulated in + the caller's application code. + * AMQP Protocol negotiation for forward or backward compatibility. + * 0.9.1 is stable and widely deployed. AMQP 1.0 is a divergent + specification (a different protocol) and belongs to a different library. + * Anything other than PLAIN and EXTERNAL authentication mechanisms. + * Keeping the mechanisms interface modular makes it possible to extend + outside of this package. If other mechanisms prove to be popular, then + we would accept patches to include them in this package. + * Support for [`basic.return` and `basic.ack` frame ordering](https://www.rabbitmq.com/confirms.html#when-publishes-are-confirmed). + This client uses Go channels for certain protocol events and ordering between + events sent to two different channels generally cannot be guaranteed. + +## Usage + +See the [_examples](_examples) subdirectory for simple producers and consumers executables. +If you have a use-case in mind which isn't well-represented by the examples, +please file an issue. + +## Documentation + + * [Godoc API reference](http://godoc.org/github.com/rabbitmq/amqp091-go) + * [RabbitMQ tutorials in Go](https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/go) + +## Contributing + +Pull requests are very much welcomed. Create your pull request on a non-main +branch, make sure a test or example is included that covers your change, and +your commits represent coherent changes that include a reason for the change. + +See [CONTRIBUTING.md](CONTRIBUTING.md) for more information. + +## License + +BSD 2 clause, see LICENSE for more details. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md new file mode 100644 index 0000000..1378d68 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md @@ -0,0 +1,16 @@ +# Guide to release a new version + +1. Update the `buildVersion` constant in [connection.go](https://github.com/rabbitmq/amqp091-go/blob/4886c35d10b273bd374e3ed2356144ad41d27940/connection.go#L31) +2. Commit and push. Include the version in the commit message e.g. [this commit](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) +3. Create a new [GitHub Release](https://github.com/rabbitmq/amqp091-go/releases). Create a new tag as `v..` + 1. Use auto-generate release notes feature in GitHub +4. Generate the change log, see [Changelog Generation](#changelog-generation) +5. Review the changelog. Watch out for issues closed as "not-fixed" or without a PR +6. Commit and Push. Pro-tip: include `[skip ci]` in the commit message to skip the CI run, since it's only documentation +7. Send an announcement to the mailing list. Take inspiration from [this message](https://groups.google.com/g/rabbitmq-users/c/EBGYGOWiSgs/m/0sSFuAGICwAJ) + +## Changelog Generation + +``` +github_changelog_generator --token GITHUB-TOKEN -u rabbitmq -p amqp091-go --no-unreleased --release-branch main +``` diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go new file mode 100644 index 0000000..f2925e7 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go @@ -0,0 +1,119 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bytes" + "fmt" + "math/big" +) + +const ( + free = 0 + allocated = 1 +) + +// allocator maintains a bitset of allocated numbers. +type allocator struct { + pool *big.Int + follow int + low int + high int +} + +// NewAllocator reserves and frees integers out of a range between low and +// high. +// +// O(N) worst case space used, where N is maximum allocated, divided by +// sizeof(big.Word) +func newAllocator(low, high int) *allocator { + return &allocator{ + pool: big.NewInt(0), + follow: low, + low: low, + high: high, + } +} + +// String returns a string describing the contents of the allocator like +// "allocator[low..high] reserved..until" +// +// O(N) where N is high-low +func (a allocator) String() string { + b := &bytes.Buffer{} + fmt.Fprintf(b, "allocator[%d..%d]", a.low, a.high) + + for low := a.low; low <= a.high; low++ { + high := low + for a.reserved(high) && high <= a.high { + high++ + } + + if high > low+1 { + fmt.Fprintf(b, " %d..%d", low, high-1) + } else if high > low { + fmt.Fprintf(b, " %d", high-1) + } + + low = high + } + return b.String() +} + +// Next reserves and returns the next available number out of the range between +// low and high. If no number is available, false is returned. +// +// O(N) worst case runtime where N is allocated, but usually O(1) due to a +// rolling index into the oldest allocation. +func (a *allocator) next() (int, bool) { + wrapped := a.follow + defer func() { + // make a.follow point to next value + if a.follow == a.high { + a.follow = a.low + } else { + a.follow += 1 + } + }() + + // Find trailing bit + for ; a.follow <= a.high; a.follow++ { + if a.reserve(a.follow) { + return a.follow, true + } + } + + // Find preceding free'd pool + a.follow = a.low + + for ; a.follow < wrapped; a.follow++ { + if a.reserve(a.follow) { + return a.follow, true + } + } + + return 0, false +} + +// reserve claims the bit if it is not already claimed, returning true if +// successfully claimed. +func (a *allocator) reserve(n int) bool { + if a.reserved(n) { + return false + } + a.pool.SetBit(a.pool, n-a.low, allocated) + return true +} + +// reserved returns true if the integer has been allocated +func (a *allocator) reserved(n int) bool { + return a.pool.Bit(n-a.low) == allocated +} + +// release frees the use of the number for another allocation +func (a *allocator) release(n int) { + a.pool.SetBit(a.pool, n-a.low, free) +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go new file mode 100644 index 0000000..0c07bb3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go @@ -0,0 +1,83 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bytes" + "fmt" +) + +// Authentication interface provides a means for different SASL authentication +// mechanisms to be used during connection tuning. +type Authentication interface { + Mechanism() string + Response() string +} + +// PlainAuth is a similar to Basic Auth in HTTP. +type PlainAuth struct { + Username string + Password string +} + +// Mechanism returns "PLAIN" +func (auth *PlainAuth) Mechanism() string { + return "PLAIN" +} + +// Response returns the null character delimited encoding for the SASL PLAIN Mechanism. +func (auth *PlainAuth) Response() string { + return fmt.Sprintf("\000%s\000%s", auth.Username, auth.Password) +} + +// AMQPlainAuth is similar to PlainAuth +type AMQPlainAuth struct { + Username string + Password string +} + +// Mechanism returns "AMQPLAIN" +func (auth *AMQPlainAuth) Mechanism() string { + return "AMQPLAIN" +} + +// Response returns an AMQP encoded credentials table, without the field table size. +func (auth *AMQPlainAuth) Response() string { + var buf bytes.Buffer + table := Table{"LOGIN": auth.Username, "PASSWORD": auth.Password} + if err := writeTable(&buf, table); err != nil { + return "" + } + return buf.String()[4:] +} + +// ExternalAuth for RabbitMQ-auth-mechanism-ssl. +type ExternalAuth struct { +} + +// Mechanism returns "EXTERNAL" +func (*ExternalAuth) Mechanism() string { + return "EXTERNAL" +} + +// Response returns an AMQP encoded credentials table, without the field table size. +func (*ExternalAuth) Response() string { + return "\000*\000*" +} + +// Finds the first mechanism preferred by the client that the server supports. +func pickSASLMechanism(client []Authentication, serverMechanisms []string) (auth Authentication, ok bool) { + + for _, auth = range client { + for _, mech := range serverMechanisms { + if auth.Mechanism() == mech { + return auth, true + } + } + } + + return +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh b/examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh new file mode 100644 index 0000000..0bbb1c6 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh @@ -0,0 +1,159 @@ +#!/bin/sh +# +# Creates the CA, server and client certs to be used by tls_test.go +# http://www.rabbitmq.com/ssl.html +# +# Copy stdout into the const section of tls_test.go or use for RabbitMQ +# +root=$PWD/certs + +if [ -f $root/ca/serial ]; then + echo >&2 "Previous installation found" + echo >&2 "Remove $root/ca and rerun to overwrite" + exit 1 +fi + +mkdir -p $root/ca/private +mkdir -p $root/ca/certs +mkdir -p $root/server +mkdir -p $root/client + +cd $root/ca + +chmod 700 private +touch index.txt +echo 'unique_subject = no' > index.txt.attr +echo '01' > serial +echo >openssl.cnf ' +[ ca ] +default_ca = testca + +[ testca ] +dir = . +certificate = $dir/cacert.pem +database = $dir/index.txt +new_certs_dir = $dir/certs +private_key = $dir/private/cakey.pem +serial = $dir/serial + +default_crl_days = 7 +default_days = 3650 +default_md = sha256 + +policy = testca_policy +x509_extensions = certificate_extensions + +[ testca_policy ] +commonName = supplied +stateOrProvinceName = optional +countryName = optional +emailAddress = optional +organizationName = optional +organizationalUnitName = optional + +[ certificate_extensions ] +basicConstraints = CA:false + +[ req ] +default_bits = 2048 +default_keyfile = ./private/cakey.pem +default_md = sha256 +prompt = yes +distinguished_name = root_ca_distinguished_name +x509_extensions = root_ca_extensions + +[ root_ca_distinguished_name ] +commonName = hostname + +[ root_ca_extensions ] +basicConstraints = CA:true +keyUsage = keyCertSign, cRLSign + +[ client_ca_extensions ] +basicConstraints = CA:false +keyUsage = keyEncipherment,digitalSignature +extendedKeyUsage = 1.3.6.1.5.5.7.3.2 + +[ server_ca_extensions ] +basicConstraints = CA:false +keyUsage = keyEncipherment,digitalSignature +extendedKeyUsage = 1.3.6.1.5.5.7.3.1 +subjectAltName = @alt_names + +[ alt_names ] +IP.1 = 127.0.0.1 +' + +openssl req \ + -x509 \ + -nodes \ + -config openssl.cnf \ + -newkey rsa:2048 \ + -days 3650 \ + -subj "/CN=MyTestCA/" \ + -out cacert.pem \ + -outform PEM + +openssl x509 \ + -in cacert.pem \ + -out cacert.cer \ + -outform DER + +openssl genrsa -out $root/server/key.pem 2048 +openssl genrsa -out $root/client/key.pem 2048 + +openssl req \ + -new \ + -nodes \ + -config openssl.cnf \ + -subj "/CN=localhost/O=server/" \ + -key $root/server/key.pem \ + -out $root/server/req.pem \ + -outform PEM + +openssl req \ + -new \ + -nodes \ + -config openssl.cnf \ + -subj "/CN=localhost/O=client/" \ + -key $root/client/key.pem \ + -out $root/client/req.pem \ + -outform PEM + +openssl ca \ + -config openssl.cnf \ + -in $root/server/req.pem \ + -out $root/server/cert.pem \ + -notext \ + -batch \ + -extensions server_ca_extensions + +openssl ca \ + -config openssl.cnf \ + -in $root/client/req.pem \ + -out $root/client/cert.pem \ + -notext \ + -batch \ + -extensions client_ca_extensions + +cat <<-END +const caCert = \` +`cat $root/ca/cacert.pem` +\` + +const serverCert = \` +`cat $root/server/cert.pem` +\` + +const serverKey = \` +`cat $root/server/key.pem` +\` + +const clientCert = \` +`cat $root/client/cert.pem` +\` + +const clientKey = \` +`cat $root/client/key.pem` +\` +END diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh b/examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh new file mode 100644 index 0000000..ff8e369 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh @@ -0,0 +1,4 @@ +#!/bin/bash +echo $1 > VERSION +sed -i -e "s/.*buildVersion = \"*.*/buildVersion = \"$1\"/" ./connection.go +go fmt ./... diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go new file mode 100644 index 0000000..3dfd7fa --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go @@ -0,0 +1,1828 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "context" + "reflect" + "sync" + "sync/atomic" +) + +// 0 1 3 7 size+7 size+8 +// +------+---------+-------------+ +------------+ +-----------+ +// | type | channel | size | | payload | | frame-end | +// +------+---------+-------------+ +------------+ +-----------+ +// +// octet short long size octets octet +const frameHeaderSize = 1 + 2 + 4 + 1 + +/* +Channel represents an AMQP channel. Used as a context for valid message +exchange. Errors on methods with this Channel as a receiver means this channel +should be discarded and a new channel established. +*/ +type Channel struct { + destructor sync.Once + m sync.Mutex // struct field mutex + confirmM sync.Mutex // publisher confirms state mutex + notifyM sync.RWMutex + + connection *Connection + + rpc chan message + consumers *consumers + + id uint16 + + // closed is set to 1 when the channel has been closed - see Channel.send() + closed int32 + close chan struct{} + + // true when we will never notify again + noNotify bool + + // Channel and Connection exceptions will be broadcast on these listeners. + closes []chan *Error + + // Listeners for active=true flow control. When true is sent to a listener, + // publishing should pause until false is sent to listeners. + flows []chan bool + + // Listeners for returned publishings for unroutable messages on mandatory + // publishings or undeliverable messages on immediate publishings. + returns []chan Return + + // Listeners for when the server notifies the client that + // a consumer has been cancelled. + cancels []chan string + + // Allocated when in confirm mode in order to track publish counter and order confirms + confirms *confirms + confirming bool + + // Selects on any errors from shutdown during RPC + errors chan *Error + + // State machine that manages frame order, must only be mutated by the connection + recv func(*Channel, frame) + + // Current state for frame re-assembly, only mutated from recv + message messageWithContent + header *headerFrame + body []byte +} + +// Constructs a new channel with the given framing rules +func newChannel(c *Connection, id uint16) *Channel { + return &Channel{ + connection: c, + id: id, + rpc: make(chan message), + consumers: makeConsumers(), + confirms: newConfirms(), + recv: (*Channel).recvMethod, + errors: make(chan *Error, 1), + close: make(chan struct{}), + } +} + +// Signal that from now on, Channel.send() should call Channel.sendClosed() +func (ch *Channel) setClosed() { + atomic.StoreInt32(&ch.closed, 1) +} + +// shutdown is called by Connection after the channel has been removed from the +// connection registry. +func (ch *Channel) shutdown(e *Error) { + ch.setClosed() + + ch.destructor.Do(func() { + ch.m.Lock() + defer ch.m.Unlock() + + // Grab an exclusive lock for the notify channels + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + // Broadcast abnormal shutdown + if e != nil { + for _, c := range ch.closes { + c <- e + } + // Notify RPC if we're selecting + ch.errors <- e + } + + ch.consumers.close() + + for _, c := range ch.closes { + close(c) + } + + for _, c := range ch.flows { + close(c) + } + + for _, c := range ch.returns { + close(c) + } + + for _, c := range ch.cancels { + close(c) + } + + // Set the slices to nil to prevent the dispatch() range from sending on + // the now closed channels after we release the notifyM mutex + ch.flows = nil + ch.closes = nil + ch.returns = nil + ch.cancels = nil + + if ch.confirms != nil { + ch.confirms.Close() + } + + close(ch.errors) + close(ch.close) + ch.noNotify = true + }) +} + +// send calls Channel.sendOpen() during normal operation. +// +// After the channel has been closed, send calls Channel.sendClosed(), ensuring +// only 'channel.close' is sent to the server. +func (ch *Channel) send(msg message) (err error) { + // If the channel is closed, use Channel.sendClosed() + if ch.IsClosed() { + return ch.sendClosed(msg) + } + + return ch.sendOpen(msg) +} + +func (ch *Channel) open() error { + return ch.call(&channelOpen{}, &channelOpenOk{}) +} + +// Performs a request/response call for when the message is not NoWait and is +// specified as Synchronous. +func (ch *Channel) call(req message, res ...message) error { + if err := ch.send(req); err != nil { + return err + } + + if req.wait() { + select { + case e, ok := <-ch.errors: + if ok { + return e + } + return ErrClosed + + case msg := <-ch.rpc: + if msg != nil { + for _, try := range res { + if reflect.TypeOf(msg) == reflect.TypeOf(try) { + // *res = *msg + vres := reflect.ValueOf(try).Elem() + vmsg := reflect.ValueOf(msg).Elem() + vres.Set(vmsg) + return nil + } + } + return ErrCommandInvalid + } + // RPC channel has been closed without an error, likely due to a hard + // error on the Connection. This indicates we have already been + // shutdown and if were waiting, will have returned from the errors chan. + return ErrClosed + } + } + + return nil +} + +func (ch *Channel) sendClosed(msg message) (err error) { + // After a 'channel.close' is sent or received the only valid response is + // channel.close-ok + if _, ok := msg.(*channelCloseOk); ok { + return ch.connection.send(&methodFrame{ + ChannelId: ch.id, + Method: msg, + }) + } + + return ErrClosed +} + +func (ch *Channel) sendOpen(msg message) (err error) { + if content, ok := msg.(messageWithContent); ok { + props, body := content.getContent() + class, _ := content.id() + + // catch client max frame size==0 and server max frame size==0 + // set size to length of what we're trying to publish + var size int + if ch.connection.Config.FrameSize > 0 { + size = ch.connection.Config.FrameSize - frameHeaderSize + } else { + size = len(body) + } + + // If the channel is closed, use Channel.sendClosed() + if ch.IsClosed() { + return ch.sendClosed(msg) + } + + // Flush the buffer only after all the Frames that comprise the Message + // have been written to maximise benefits of using a buffered writer. + defer func() { + if endError := ch.connection.endSendUnflushed(); endError != nil { + if err == nil { + err = endError + } + } + }() + + // We use sendUnflushed() in this method as sending the message requires + // sending multiple Frames (methodFrame, headerFrame, N x bodyFrame). + // Flushing after each Frame is inefficient, as it negates much of the + // benefit of using a buffered writer and results in more syscalls than + // necessary. Flushing buffers after every frame can have a significant + // performance impact when sending (e.g. basicPublish) small messages, + // so sendUnflushed() performs an *Unflushed* write, but is otherwise + // equivalent to the send() method. We later use the separate flush + // method to explicitly flush the buffer after all Frames are written. + if err = ch.connection.sendUnflushed(&methodFrame{ + ChannelId: ch.id, + Method: content, + }); err != nil { + return + } + + if err = ch.connection.sendUnflushed(&headerFrame{ + ChannelId: ch.id, + ClassId: class, + Size: uint64(len(body)), + Properties: props, + }); err != nil { + return + } + + // chunk body into size (max frame size - frame header size) + for i, j := 0, size; i < len(body); i, j = j, j+size { + if j > len(body) { + j = len(body) + } + + if err = ch.connection.sendUnflushed(&bodyFrame{ + ChannelId: ch.id, + Body: body[i:j], + }); err != nil { + return + } + } + } else { + // If the channel is closed, use Channel.sendClosed() + if ch.IsClosed() { + return ch.sendClosed(msg) + } + + err = ch.connection.send(&methodFrame{ + ChannelId: ch.id, + Method: msg, + }) + } + + return +} + +// Eventually called via the state machine from the connection's reader +// goroutine, so assumes serialized access. +func (ch *Channel) dispatch(msg message) { + switch m := msg.(type) { + case *channelClose: + // Note: channel state is set to closed immedately after the message is + // decoded by the Connection + + // lock before sending connection.close-ok + // to avoid unexpected interleaving with basic.publish frames if + // publishing is happening concurrently + ch.m.Lock() + if err := ch.send(&channelCloseOk{}); err != nil { + Logger.Printf("error sending channelCloseOk, channel id: %d error: %+v", ch.id, err) + } + ch.m.Unlock() + ch.connection.closeChannel(ch, newError(m.ReplyCode, m.ReplyText)) + + case *channelFlow: + ch.notifyM.RLock() + for _, c := range ch.flows { + c <- m.Active + } + ch.notifyM.RUnlock() + if err := ch.send(&channelFlowOk{Active: m.Active}); err != nil { + Logger.Printf("error sending channelFlowOk, channel id: %d error: %+v", ch.id, err) + } + + case *basicCancel: + ch.notifyM.RLock() + for _, c := range ch.cancels { + c <- m.ConsumerTag + } + ch.notifyM.RUnlock() + ch.consumers.cancel(m.ConsumerTag) + + case *basicReturn: + ret := newReturn(*m) + ch.notifyM.RLock() + for _, c := range ch.returns { + c <- *ret + } + ch.notifyM.RUnlock() + + case *basicAck: + if ch.confirming { + if m.Multiple { + ch.confirms.Multiple(Confirmation{m.DeliveryTag, true}) + } else { + ch.confirms.One(Confirmation{m.DeliveryTag, true}) + } + } + + case *basicNack: + if ch.confirming { + if m.Multiple { + ch.confirms.Multiple(Confirmation{m.DeliveryTag, false}) + } else { + ch.confirms.One(Confirmation{m.DeliveryTag, false}) + } + } + + case *basicDeliver: + ch.consumers.send(m.ConsumerTag, newDelivery(ch, m)) + // TODO log failed consumer and close channel, this can happen when + // deliveries are in flight and a no-wait cancel has happened + + default: + select { + case <-ch.close: + return + case ch.rpc <- msg: + } + } +} + +func (ch *Channel) transition(f func(*Channel, frame)) { + ch.recv = f +} + +func (ch *Channel) recvMethod(f frame) { + switch frame := f.(type) { + case *methodFrame: + if msg, ok := frame.Method.(messageWithContent); ok { + ch.body = make([]byte, 0) + ch.message = msg + ch.transition((*Channel).recvHeader) + return + } + + ch.dispatch(frame.Method) // termination state + ch.transition((*Channel).recvMethod) + + case *headerFrame: + // drop + ch.transition((*Channel).recvMethod) + + case *bodyFrame: + // drop + ch.transition((*Channel).recvMethod) + + default: + panic("unexpected frame type") + } +} + +func (ch *Channel) recvHeader(f frame) { + switch frame := f.(type) { + case *methodFrame: + // interrupt content and handle method + ch.recvMethod(f) + + case *headerFrame: + // start collecting if we expect body frames + ch.header = frame + + if frame.Size == 0 { + ch.message.setContent(ch.header.Properties, ch.body) + ch.dispatch(ch.message) // termination state + ch.transition((*Channel).recvMethod) + return + } + ch.transition((*Channel).recvContent) + + case *bodyFrame: + // drop and reset + ch.transition((*Channel).recvMethod) + + default: + panic("unexpected frame type") + } +} + +// state after method + header and before the length +// defined by the header has been reached +func (ch *Channel) recvContent(f frame) { + switch frame := f.(type) { + case *methodFrame: + // interrupt content and handle method + ch.recvMethod(f) + + case *headerFrame: + // drop and reset + ch.transition((*Channel).recvMethod) + + case *bodyFrame: + if cap(ch.body) == 0 { + ch.body = make([]byte, 0, ch.header.Size) + } + ch.body = append(ch.body, frame.Body...) + + if uint64(len(ch.body)) >= ch.header.Size { + ch.message.setContent(ch.header.Properties, ch.body) + ch.dispatch(ch.message) // termination state + ch.transition((*Channel).recvMethod) + return + } + + ch.transition((*Channel).recvContent) + + default: + panic("unexpected frame type") + } +} + +/* +Close initiate a clean channel closure by sending a close message with the error +code set to '200'. + +It is safe to call this method multiple times. +*/ +func (ch *Channel) Close() error { + if ch.IsClosed() { + return nil + } + + defer ch.connection.closeChannel(ch, nil) + return ch.call( + &channelClose{ReplyCode: replySuccess}, + &channelCloseOk{}, + ) +} + +// IsClosed returns true if the channel is marked as closed, otherwise false +// is returned. +func (ch *Channel) IsClosed() bool { + return atomic.LoadInt32(&ch.closed) == 1 +} + +/* +NotifyClose registers a listener for when the server sends a channel or +connection exception in the form of a Connection.Close or Channel.Close method. +Connection exceptions will be broadcast to all open channels and all channels +will be closed, where channel exceptions will only be broadcast to listeners to +this channel. + +The chan provided will be closed when the Channel is closed and on a +graceful close, no error will be sent. + +In case of a non graceful close the error will be notified synchronously by the library +so that it will be necessary to consume the Channel from the caller in order to avoid deadlocks +*/ +func (ch *Channel) NotifyClose(c chan *Error) chan *Error { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.closes = append(ch.closes, c) + } + + return c +} + +/* +NotifyFlow registers a listener for basic.flow methods sent by the server. +When `false` is sent on one of the listener channels, all publishers should +pause until a `true` is sent. + +The server may ask the producer to pause or restart the flow of Publishings +sent by on a channel. This is a simple flow-control mechanism that a server can +use to avoid overflowing its queues or otherwise finding itself receiving more +messages than it can process. Note that this method is not intended for window +control. It does not affect contents returned by basic.get-ok methods. + +When a new channel is opened, it is active (flow is active). Some +applications assume that channels are inactive until started. To emulate +this behavior a client MAY open the channel, then pause it. + +Publishers should respond to a flow messages as rapidly as possible and the +server may disconnect over producing channels that do not respect these +messages. + +basic.flow-ok methods will always be returned to the server regardless of +the number of listeners there are. + +To control the flow of deliveries from the server, use the Channel.Flow() +method instead. + +Note: RabbitMQ will rather use TCP pushback on the network connection instead +of sending basic.flow. This means that if a single channel is producing too +much on the same connection, all channels using that connection will suffer, +including acknowledgments from deliveries. Use different Connections if you +desire to interleave consumers and producers in the same process to avoid your +basic.ack messages from getting rate limited with your basic.publish messages. +*/ +func (ch *Channel) NotifyFlow(c chan bool) chan bool { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.flows = append(ch.flows, c) + } + + return c +} + +/* +NotifyReturn registers a listener for basic.return methods. These can be sent +from the server when a publish is undeliverable either from the mandatory or +immediate flags. + +A return struct has a copy of the Publishing along with some error +information about why the publishing failed. +*/ +func (ch *Channel) NotifyReturn(c chan Return) chan Return { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.returns = append(ch.returns, c) + } + + return c +} + +/* +NotifyCancel registers a listener for basic.cancel methods. These can be sent +from the server when a queue is deleted or when consuming from a mirrored queue +where the master has just failed (and was moved to another node). + +The subscription tag is returned to the listener. +*/ +func (ch *Channel) NotifyCancel(c chan string) chan string { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.cancels = append(ch.cancels, c) + } + + return c +} + +/* +NotifyConfirm calls NotifyPublish and starts a goroutine sending +ordered Ack and Nack DeliveryTag to the respective channels. + +For strict ordering, use NotifyPublish instead. +*/ +func (ch *Channel) NotifyConfirm(ack, nack chan uint64) (chan uint64, chan uint64) { + confirms := ch.NotifyPublish(make(chan Confirmation, cap(ack)+cap(nack))) + + go func() { + for c := range confirms { + if c.Ack { + ack <- c.DeliveryTag + } else { + nack <- c.DeliveryTag + } + } + close(ack) + if nack != ack { + close(nack) + } + }() + + return ack, nack +} + +/* +NotifyPublish registers a listener for reliable publishing. Receives from this +chan for every publish after Channel.Confirm will be in order starting with +DeliveryTag 1. + +There will be one and only one Confirmation Publishing starting with the +delivery tag of 1 and progressing sequentially until the total number of +Publishings have been seen by the server. + +Acknowledgments will be received in the order of delivery from the +NotifyPublish channels even if the server acknowledges them out of order. + +The listener chan will be closed when the Channel is closed. + +The capacity of the chan Confirmation must be at least as large as the +number of outstanding publishings. Not having enough buffered chans will +create a deadlock if you attempt to perform other operations on the Connection +or Channel while confirms are in-flight. + +It's advisable to wait for all Confirmations to arrive before calling +Channel.Close() or Connection.Close(). + +It is also advisable for the caller to consume from the channel returned till it is closed +to avoid possible deadlocks +*/ +func (ch *Channel) NotifyPublish(confirm chan Confirmation) chan Confirmation { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(confirm) + } else { + ch.confirms.Listen(confirm) + } + + return confirm +} + +/* +Qos controls how many messages or how many bytes the server will try to keep on +the network for consumers before receiving delivery acks. The intent of Qos is +to make sure the network buffers stay full between the server and client. + +With a prefetch count greater than zero, the server will deliver that many +messages to consumers before acknowledgments are received. The server ignores +this option when consumers are started with noAck because no acknowledgments +are expected or sent. + +With a prefetch size greater than zero, the server will try to keep at least +that many bytes of deliveries flushed to the network before receiving +acknowledgments from the consumers. This option is ignored when consumers are +started with noAck. + +When global is true, these Qos settings apply to all existing and future +consumers on all channels on the same connection. When false, the Channel.Qos +settings will apply to all existing and future consumers on this channel. + +Please see the RabbitMQ Consumer Prefetch documentation for an explanation of +how the global flag is implemented in RabbitMQ, as it differs from the +AMQP 0.9.1 specification in that global Qos settings are limited in scope to +channels, not connections (https://www.rabbitmq.com/consumer-prefetch.html). + +To get round-robin behavior between consumers consuming from the same queue on +different connections, set the prefetch count to 1, and the next available +message on the server will be delivered to the next available consumer. + +If your consumer work time is reasonably consistent and not much greater +than two times your network round trip time, you will see significant +throughput improvements starting with a prefetch count of 2 or slightly +greater as described by benchmarks on RabbitMQ. + +http://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/ +*/ +func (ch *Channel) Qos(prefetchCount, prefetchSize int, global bool) error { + return ch.call( + &basicQos{ + PrefetchCount: uint16(prefetchCount), + PrefetchSize: uint32(prefetchSize), + Global: global, + }, + &basicQosOk{}, + ) +} + +/* +Cancel stops deliveries to the consumer chan established in Channel.Consume and +identified by consumer. + +Only use this method to cleanly stop receiving deliveries from the server and +cleanly shut down the consumer chan identified by this tag. Using this method +and waiting for remaining messages to flush from the consumer chan will ensure +all messages received on the network will be delivered to the receiver of your +consumer chan. + +Continue consuming from the chan Delivery provided by Channel.Consume until the +chan closes. + +When noWait is true, do not wait for the server to acknowledge the cancel. +Only use this when you are certain there are no deliveries in flight that +require an acknowledgment, otherwise they will arrive and be dropped in the +client without an ack, and will not be redelivered to other consumers. +*/ +func (ch *Channel) Cancel(consumer string, noWait bool) error { + req := &basicCancel{ + ConsumerTag: consumer, + NoWait: noWait, + } + res := &basicCancelOk{} + + if err := ch.call(req, res); err != nil { + return err + } + + if req.wait() { + ch.consumers.cancel(res.ConsumerTag) + } else { + // Potentially could drop deliveries in flight + ch.consumers.cancel(consumer) + } + + return nil +} + +/* +QueueDeclare declares a queue to hold messages and deliver to consumers. +Declaring creates a queue if it doesn't already exist, or ensures that an +existing queue matches the same parameters. + +Every queue declared gets a default binding to the empty exchange "" which has +the type "direct" with the routing key matching the queue's name. With this +default binding, it is possible to publish messages that route directly to +this queue by publishing to "" with the routing key of the queue name. + + QueueDeclare("alerts", true, false, false, false, nil) + Publish("", "alerts", false, false, Publishing{Body: []byte("...")}) + + Delivery Exchange Key Queue + ----------------------------------------------- + key: alerts -> "" -> alerts -> alerts + +The queue name may be empty, in which case the server will generate a unique name +which will be returned in the Name field of Queue struct. + +Durable and Non-Auto-Deleted queues will survive server restarts and remain +when there are no remaining consumers or bindings. Persistent publishings will +be restored in this queue on server restart. These queues are only able to be +bound to durable exchanges. + +Non-Durable and Auto-Deleted queues will not be redeclared on server restart +and will be deleted by the server after a short time when the last consumer is +canceled or the last consumer's channel is closed. Queues with this lifetime +can also be deleted normally with QueueDelete. These durable queues can only +be bound to non-durable exchanges. + +Non-Durable and Non-Auto-Deleted queues will remain declared as long as the +server is running regardless of how many consumers. This lifetime is useful +for temporary topologies that may have long delays between consumer activity. +These queues can only be bound to non-durable exchanges. + +Durable and Auto-Deleted queues will be restored on server restart, but without +active consumers will not survive and be removed. This Lifetime is unlikely +to be useful. + +Exclusive queues are only accessible by the connection that declares them and +will be deleted when the connection closes. Channels on other connections +will receive an error when attempting to declare, bind, consume, purge or +delete a queue with the same name. + +When noWait is true, the queue will assume to be declared on the server. A +channel exception will arrive if the conditions are met for existing queues +or attempting to modify an existing queue from a different connection. + +When the error return value is not nil, you can assume the queue could not be +declared with these parameters, and the channel will be closed. +*/ +func (ch *Channel) QueueDeclare(name string, durable, autoDelete, exclusive, noWait bool, args Table) (Queue, error) { + if err := args.Validate(); err != nil { + return Queue{}, err + } + + req := &queueDeclare{ + Queue: name, + Passive: false, + Durable: durable, + AutoDelete: autoDelete, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &queueDeclareOk{} + + if err := ch.call(req, res); err != nil { + return Queue{}, err + } + + if req.wait() { + return Queue{ + Name: res.Queue, + Messages: int(res.MessageCount), + Consumers: int(res.ConsumerCount), + }, nil + } + + return Queue{Name: name}, nil +} + +/* +QueueDeclarePassive is functionally and parametrically equivalent to +QueueDeclare, except that it sets the "passive" attribute to true. A passive +queue is assumed by RabbitMQ to already exist, and attempting to connect to a +non-existent queue will cause RabbitMQ to throw an exception. This function +can be used to test for the existence of a queue. +*/ +func (ch *Channel) QueueDeclarePassive(name string, durable, autoDelete, exclusive, noWait bool, args Table) (Queue, error) { + if err := args.Validate(); err != nil { + return Queue{}, err + } + + req := &queueDeclare{ + Queue: name, + Passive: true, + Durable: durable, + AutoDelete: autoDelete, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &queueDeclareOk{} + + if err := ch.call(req, res); err != nil { + return Queue{}, err + } + + if req.wait() { + return Queue{ + Name: res.Queue, + Messages: int(res.MessageCount), + Consumers: int(res.ConsumerCount), + }, nil + } + + return Queue{Name: name}, nil +} + +/* +QueueInspect passively declares a queue by name to inspect the current message +count and consumer count. + +Use this method to check how many messages ready for delivery reside in the queue, +how many consumers are receiving deliveries, and whether a queue by this +name already exists. + +If the queue by this name exists, use Channel.QueueDeclare check if it is +declared with specific parameters. + +If a queue by this name does not exist, an error will be returned and the +channel will be closed. + +Deprecated: Use QueueDeclare with "Passive: true" instead. +*/ +func (ch *Channel) QueueInspect(name string) (Queue, error) { + req := &queueDeclare{ + Queue: name, + Passive: true, + } + res := &queueDeclareOk{} + + err := ch.call(req, res) + + state := Queue{ + Name: name, + Messages: int(res.MessageCount), + Consumers: int(res.ConsumerCount), + } + + return state, err +} + +/* +QueueBind binds an exchange to a queue so that publishings to the exchange will +be routed to the queue when the publishing routing key matches the binding +routing key. + + QueueBind("pagers", "alert", "log", false, nil) + QueueBind("emails", "info", "log", false, nil) + + Delivery Exchange Key Queue + ----------------------------------------------- + key: alert --> log ----> alert --> pagers + key: info ---> log ----> info ---> emails + key: debug --> log (none) (dropped) + +If a binding with the same key and arguments already exists between the +exchange and queue, the attempt to rebind will be ignored and the existing +binding will be retained. + +In the case that multiple bindings may cause the message to be routed to the +same queue, the server will only route the publishing once. This is possible +with topic exchanges. + + QueueBind("pagers", "alert", "amq.topic", false, nil) + QueueBind("emails", "info", "amq.topic", false, nil) + QueueBind("emails", "#", "amq.topic", false, nil) // match everything + + Delivery Exchange Key Queue + ----------------------------------------------- + key: alert --> amq.topic ----> alert --> pagers + key: info ---> amq.topic ----> # ------> emails + \---> info ---/ + key: debug --> amq.topic ----> # ------> emails + +It is only possible to bind a durable queue to a durable exchange regardless of +whether the queue or exchange is auto-deleted. Bindings between durable queues +and exchanges will also be restored on server restart. + +If the binding could not complete, an error will be returned and the channel +will be closed. + +When noWait is false and the queue could not be bound, the channel will be +closed with an error. +*/ +func (ch *Channel) QueueBind(name, key, exchange string, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &queueBind{ + Queue: name, + Exchange: exchange, + RoutingKey: key, + NoWait: noWait, + Arguments: args, + }, + &queueBindOk{}, + ) +} + +/* +QueueUnbind removes a binding between an exchange and queue matching the key and +arguments. +*/ +func (ch *Channel) QueueUnbind(name, key, exchange string, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &queueUnbind{ + Queue: name, + Exchange: exchange, + RoutingKey: key, + Arguments: args, + }, + &queueUnbindOk{}, + ) +} + +/* +QueuePurge removes all messages from the named queue which are not waiting to +be acknowledged. Messages that have been delivered but have not yet been +acknowledged will not be removed. + +When successful, returns the number of messages purged. + +If noWait is true, do not wait for the server response and the number of +messages purged will not be meaningful. +*/ +func (ch *Channel) QueuePurge(name string, noWait bool) (int, error) { + req := &queuePurge{ + Queue: name, + NoWait: noWait, + } + res := &queuePurgeOk{} + + err := ch.call(req, res) + + return int(res.MessageCount), err +} + +/* +QueueDelete removes the queue from the server including all bindings then +purges the messages based on server configuration, returning the number of +messages purged. + +When ifUnused is true, the queue will not be deleted if there are any +consumers on the queue. If there are consumers, an error will be returned and +the channel will be closed. + +When ifEmpty is true, the queue will not be deleted if there are any messages +remaining on the queue. If there are messages, an error will be returned and +the channel will be closed. + +When noWait is true, the queue will be deleted without waiting for a response +from the server. The purged message count will not be meaningful. If the queue +could not be deleted, a channel exception will be raised and the channel will +be closed. +*/ +func (ch *Channel) QueueDelete(name string, ifUnused, ifEmpty, noWait bool) (int, error) { + req := &queueDelete{ + Queue: name, + IfUnused: ifUnused, + IfEmpty: ifEmpty, + NoWait: noWait, + } + res := &queueDeleteOk{} + + err := ch.call(req, res) + + return int(res.MessageCount), err +} + +/* +Consume immediately starts delivering queued messages. + +Begin receiving on the returned chan Delivery before any other operation on the +Connection or Channel. + +Continues deliveries to the returned chan Delivery until Channel.Cancel, +Connection.Close, Channel.Close, or an AMQP exception occurs. Consumers must +range over the chan to ensure all deliveries are received. Unreceived +deliveries will block all methods on the same connection. + +All deliveries in AMQP must be acknowledged. It is expected of the consumer to +call Delivery.Ack after it has successfully processed the delivery. If the +consumer is cancelled or the channel or connection is closed any unacknowledged +deliveries will be requeued at the end of the same queue. + +The consumer is identified by a string that is unique and scoped for all +consumers on this channel. If you wish to eventually cancel the consumer, use +the same non-empty identifier in Channel.Cancel. An empty string will cause +the library to generate a unique identity. The consumer identity will be +included in every Delivery in the ConsumerTag field + +When autoAck (also known as noAck) is true, the server will acknowledge +deliveries to this consumer prior to writing the delivery to the network. When +autoAck is true, the consumer should not call Delivery.Ack. Automatically +acknowledging deliveries means that some deliveries may get lost if the +consumer is unable to process them after the server delivers them. +See http://www.rabbitmq.com/confirms.html for more details. + +When exclusive is true, the server will ensure that this is the sole consumer +from this queue. When exclusive is false, the server will fairly distribute +deliveries across multiple consumers. + +The noLocal flag is not supported by RabbitMQ. + +It's advisable to use separate connections for +Channel.Publish and Channel.Consume so not to have TCP pushback on publishing +affect the ability to consume messages, so this parameter is here mostly for +completeness. + +When noWait is true, do not wait for the server to confirm the request and +immediately begin deliveries. If it is not possible to consume, a channel +exception will be raised and the channel will be closed. + +Optional arguments can be provided that have specific semantics for the queue +or server. + +Inflight messages, limited by Channel.Qos will be buffered until received from +the returned chan. + +When the Channel or Connection is closed, all buffered and inflight messages will +be dropped. RabbitMQ will requeue messages not acknowledged. In other words, dropped +messages in this way won't be lost. + +When the consumer tag is cancelled, all inflight messages will be delivered until +the returned chan is closed. +*/ +func (ch *Channel) Consume(queue, consumer string, autoAck, exclusive, noLocal, noWait bool, args Table) (<-chan Delivery, error) { + // When we return from ch.call, there may be a delivery already for the + // consumer that hasn't been added to the consumer hash yet. Because of + // this, we never rely on the server picking a consumer tag for us. + + if err := args.Validate(); err != nil { + return nil, err + } + + if consumer == "" { + consumer = uniqueConsumerTag() + } + + req := &basicConsume{ + Queue: queue, + ConsumerTag: consumer, + NoLocal: noLocal, + NoAck: autoAck, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &basicConsumeOk{} + + deliveries := make(chan Delivery) + + ch.consumers.add(consumer, deliveries) + + if err := ch.call(req, res); err != nil { + ch.consumers.cancel(consumer) + return nil, err + } + + return deliveries, nil +} + +/* +ConsumeWithContext immediately starts delivering queued messages. + +This function is similar to Channel.Consume, and accepts a context to control +consumer lifecycle. When the context passed to this function is canceled, the +consumer associated with the deliveries channel will be canceled too. When the +context passed to this function is cancelled, the deliveries channel will be closed. + +An application is advised to keep on receiving messages from the delivery channel +until the channel is empty. This is specially important to avoid memory leaks from +unconsumed messages from the delivery channel. + +Begin receiving on the returned chan Delivery before any other operation on the +Connection or Channel. + +Continues deliveries to the returned chan Delivery until Channel.Cancel, +Connection.Close, Channel.Close, context is cancelled, or an AMQP exception +occurs. Consumers must range over the chan to ensure all deliveries are +received. Unreceived deliveries will block all methods on the same connection. + +All deliveries in AMQP must be acknowledged. It is expected of the consumer to +call Delivery.Ack after it has successfully processed the delivery. If the +consumer is cancelled or the channel or connection is closed any unacknowledged +deliveries will be requeued at the end of the same queue. + +The consumer is identified by a string that is unique and scoped for all +consumers on this channel. If you wish to eventually cancel the consumer, use +the same non-empty identifier in Channel.Cancel. An empty string will cause +the library to generate a unique identity. The consumer identity will be +included in every Delivery in the ConsumerTag field + +When autoAck (also known as noAck) is true, the server will acknowledge +deliveries to this consumer prior to writing the delivery to the network. When +autoAck is true, the consumer should not call Delivery.Ack. Automatically +acknowledging deliveries means that some deliveries may get lost if the +consumer is unable to process them after the server delivers them. +See http://www.rabbitmq.com/confirms.html for more details. + +When exclusive is true, the server will ensure that this is the sole consumer +from this queue. When exclusive is false, the server will fairly distribute +deliveries across multiple consumers. + +The noLocal flag is not supported by RabbitMQ. + +It's advisable to use separate connections for Channel.Publish and +Channel.Consume so not to have TCP pushback on publishing affect the ability to +consume messages, so this parameter is here mostly for completeness. + +When noWait is true, do not wait for the server to confirm the request and +immediately begin deliveries. If it is not possible to consume, a channel +exception will be raised and the channel will be closed. + +Optional arguments can be provided that have specific semantics for the queue +or server. + +Inflight messages, limited by Channel.Qos will be buffered until received from +the returned chan. + +When the Channel or Connection is closed, all buffered and inflight messages will +be dropped. RabbitMQ will requeue messages not acknowledged. In other words, dropped +messages in this way won't be lost. +*/ +func (ch *Channel) ConsumeWithContext(ctx context.Context, queue, consumer string, autoAck, exclusive, noLocal, noWait bool, args Table) (<-chan Delivery, error) { + // When we return from ch.call, there may be a delivery already for the + // consumer that hasn't been added to the consumer hash yet. Because of + // this, we never rely on the server picking a consumer tag for us. + + if err := args.Validate(); err != nil { + return nil, err + } + + if consumer == "" { + consumer = uniqueConsumerTag() + } + + req := &basicConsume{ + Queue: queue, + ConsumerTag: consumer, + NoLocal: noLocal, + NoAck: autoAck, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &basicConsumeOk{} + + select { + default: + case <-ctx.Done(): + return nil, ctx.Err() + } + + deliveries := make(chan Delivery) + + ch.consumers.add(consumer, deliveries) + + if err := ch.call(req, res); err != nil { + ch.consumers.cancel(consumer) + return nil, err + } + + go func() { + select { + case <-ch.consumers.closed: + return + case <-ctx.Done(): + if ch != nil { + _ = ch.Cancel(consumer, false) + } + } + }() + + return deliveries, nil +} + +/* +ExchangeDeclare declares an exchange on the server. If the exchange does not +already exist, the server will create it. If the exchange exists, the server +verifies that it is of the provided type, durability and auto-delete flags. + +Errors returned from this method will close the channel. + +Exchange names starting with "amq." are reserved for pre-declared and +standardized exchanges. The client MAY declare an exchange starting with +"amq." if the passive option is set, or the exchange already exists. Names can +consist of a non-empty sequence of letters, digits, hyphen, underscore, +period, or colon. + +Each exchange belongs to one of a set of exchange kinds/types implemented by +the server. The exchange types define the functionality of the exchange - i.e. +how messages are routed through it. Once an exchange is declared, its type +cannot be changed. The common types are "direct", "fanout", "topic" and +"headers". + +Durable and Non-Auto-Deleted exchanges will survive server restarts and remain +declared when there are no remaining bindings. This is the best lifetime for +long-lived exchange configurations like stable routes and default exchanges. + +Non-Durable and Auto-Deleted exchanges will be deleted when there are no +remaining bindings and not restored on server restart. This lifetime is +useful for temporary topologies that should not pollute the virtual host on +failure or after the consumers have completed. + +Non-Durable and Non-Auto-deleted exchanges will remain as long as the server is +running including when there are no remaining bindings. This is useful for +temporary topologies that may have long delays between bindings. + +Durable and Auto-Deleted exchanges will survive server restarts and will be +removed before and after server restarts when there are no remaining bindings. +These exchanges are useful for robust temporary topologies or when you require +binding durable queues to auto-deleted exchanges. + +Note: RabbitMQ declares the default exchange types like 'amq.fanout' as +durable, so queues that bind to these pre-declared exchanges must also be +durable. + +Exchanges declared as `internal` do not accept publishings. Internal +exchanges are useful when you wish to implement inter-exchange topologies +that should not be exposed to users of the broker. + +When noWait is true, declare without waiting for a confirmation from the server. +The channel may be closed as a result of an error. Add a NotifyClose listener +to respond to any exceptions. + +Optional amqp.Table of arguments that are specific to the server's implementation of +the exchange can be sent for exchange types that require extra parameters. +*/ +func (ch *Channel) ExchangeDeclare(name, kind string, durable, autoDelete, internal, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeDeclare{ + Exchange: name, + Type: kind, + Passive: false, + Durable: durable, + AutoDelete: autoDelete, + Internal: internal, + NoWait: noWait, + Arguments: args, + }, + &exchangeDeclareOk{}, + ) +} + +/* +ExchangeDeclarePassive is functionally and parametrically equivalent to +ExchangeDeclare, except that it sets the "passive" attribute to true. A passive +exchange is assumed by RabbitMQ to already exist, and attempting to connect to a +non-existent exchange will cause RabbitMQ to throw an exception. This function +can be used to detect the existence of an exchange. +*/ +func (ch *Channel) ExchangeDeclarePassive(name, kind string, durable, autoDelete, internal, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeDeclare{ + Exchange: name, + Type: kind, + Passive: true, + Durable: durable, + AutoDelete: autoDelete, + Internal: internal, + NoWait: noWait, + Arguments: args, + }, + &exchangeDeclareOk{}, + ) +} + +/* +ExchangeDelete removes the named exchange from the server. When an exchange is +deleted all queue bindings on the exchange are also deleted. If this exchange +does not exist, the channel will be closed with an error. + +When ifUnused is true, the server will only delete the exchange if it has no queue +bindings. If the exchange has queue bindings the server does not delete it +but close the channel with an exception instead. Set this to true if you are +not the sole owner of the exchange. + +When noWait is true, do not wait for a server confirmation that the exchange has +been deleted. Failing to delete the channel could close the channel. Add a +NotifyClose listener to respond to these channel exceptions. +*/ +func (ch *Channel) ExchangeDelete(name string, ifUnused, noWait bool) error { + return ch.call( + &exchangeDelete{ + Exchange: name, + IfUnused: ifUnused, + NoWait: noWait, + }, + &exchangeDeleteOk{}, + ) +} + +/* +ExchangeBind binds an exchange to another exchange to create inter-exchange +routing topologies on the server. This can decouple the private topology and +routing exchanges from exchanges intended solely for publishing endpoints. + +Binding two exchanges with identical arguments will not create duplicate +bindings. + +Binding one exchange to another with multiple bindings will only deliver a +message once. For example if you bind your exchange to `amq.fanout` with two +different binding keys, only a single message will be delivered to your +exchange even though multiple bindings will match. + +Given a message delivered to the source exchange, the message will be forwarded +to the destination exchange when the routing key is matched. + + ExchangeBind("sell", "MSFT", "trade", false, nil) + ExchangeBind("buy", "AAPL", "trade", false, nil) + + Delivery Source Key Destination + example exchange exchange + ----------------------------------------------- + key: AAPL --> trade ----> MSFT sell + \---> AAPL --> buy + +When noWait is true, do not wait for the server to confirm the binding. If any +error occurs the channel will be closed. Add a listener to NotifyClose to +handle these errors. + +Optional arguments specific to the exchanges bound can also be specified. +*/ +func (ch *Channel) ExchangeBind(destination, key, source string, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeBind{ + Destination: destination, + Source: source, + RoutingKey: key, + NoWait: noWait, + Arguments: args, + }, + &exchangeBindOk{}, + ) +} + +/* +ExchangeUnbind unbinds the destination exchange from the source exchange on the +server by removing the routing key between them. This is the inverse of +ExchangeBind. If the binding does not currently exist, an error will be +returned. + +When noWait is true, do not wait for the server to confirm the deletion of the +binding. If any error occurs the channel will be closed. Add a listener to +NotifyClose to handle these errors. + +Optional arguments that are specific to the type of exchanges bound can also be +provided. These must match the same arguments specified in ExchangeBind to +identify the binding. +*/ +func (ch *Channel) ExchangeUnbind(destination, key, source string, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeUnbind{ + Destination: destination, + Source: source, + RoutingKey: key, + NoWait: noWait, + Arguments: args, + }, + &exchangeUnbindOk{}, + ) +} + +/* +Publish sends a Publishing from the client to an exchange on the server. + +When you want a single message to be delivered to a single queue, you can +publish to the default exchange with the routingKey of the queue name. This is +because every declared queue gets an implicit route to the default exchange. + +Since publishings are asynchronous, any undeliverable message will get returned +by the server. Add a listener with Channel.NotifyReturn to handle any +undeliverable message when calling publish with either the mandatory or +immediate parameters as true. + +Publishings can be undeliverable when the mandatory flag is true and no queue is +bound that matches the routing key, or when the immediate flag is true and no +consumer on the matched queue is ready to accept the delivery. + +This can return an error when the channel, connection or socket is closed. The +error or lack of an error does not indicate whether the server has received this +publishing. + +It is possible for publishing to not reach the broker if the underlying socket +is shut down without pending publishing packets being flushed from the kernel +buffers. The easy way of making it probable that all publishings reach the +server is to always call Connection.Close before terminating your publishing +application. The way to ensure that all publishings reach the server is to add +a listener to Channel.NotifyPublish and put the channel in confirm mode with +Channel.Confirm. Publishing delivery tags and their corresponding +confirmations start at 1. Exit when all publishings are confirmed. + +When Publish does not return an error and the channel is in confirm mode, the +internal counter for DeliveryTags with the first confirmation starts at 1. +*/ +func (ch *Channel) Publish(exchange, key string, mandatory, immediate bool, msg Publishing) error { + _, err := ch.PublishWithDeferredConfirm(exchange, key, mandatory, immediate, msg) + return err +} + +/* +PublishWithContext sends a Publishing from the client to an exchange on the server. + +NOTE: this function is equivalent to [Channel.Publish]. Context is not honoured. + +When you want a single message to be delivered to a single queue, you can +publish to the default exchange with the routingKey of the queue name. This is +because every declared queue gets an implicit route to the default exchange. + +Since publishings are asynchronous, any undeliverable message will get returned +by the server. Add a listener with Channel.NotifyReturn to handle any +undeliverable message when calling publish with either the mandatory or +immediate parameters as true. + +Publishings can be undeliverable when the mandatory flag is true and no queue is +bound that matches the routing key, or when the immediate flag is true and no +consumer on the matched queue is ready to accept the delivery. + +This can return an error when the channel, connection or socket is closed. The +error or lack of an error does not indicate whether the server has received this +publishing. + +It is possible for publishing to not reach the broker if the underlying socket +is shut down without pending publishing packets being flushed from the kernel +buffers. The easy way of making it probable that all publishings reach the +server is to always call Connection.Close before terminating your publishing +application. The way to ensure that all publishings reach the server is to add +a listener to Channel.NotifyPublish and put the channel in confirm mode with +Channel.Confirm. Publishing delivery tags and their corresponding +confirmations start at 1. Exit when all publishings are confirmed. + +When Publish does not return an error and the channel is in confirm mode, the +internal counter for DeliveryTags with the first confirmation starts at 1. +*/ +func (ch *Channel) PublishWithContext(_ context.Context, exchange, key string, mandatory, immediate bool, msg Publishing) error { + return ch.Publish(exchange, key, mandatory, immediate, msg) +} + +/* +PublishWithDeferredConfirm behaves identically to Publish, but additionally +returns a DeferredConfirmation, allowing the caller to wait on the publisher +confirmation for this message. If the channel has not been put into confirm +mode, the DeferredConfirmation will be nil. +*/ +func (ch *Channel) PublishWithDeferredConfirm(exchange, key string, mandatory, immediate bool, msg Publishing) (*DeferredConfirmation, error) { + if err := msg.Headers.Validate(); err != nil { + return nil, err + } + + ch.m.Lock() + defer ch.m.Unlock() + + var dc *DeferredConfirmation + if ch.confirming { + dc = ch.confirms.publish() + } + + if err := ch.send(&basicPublish{ + Exchange: exchange, + RoutingKey: key, + Mandatory: mandatory, + Immediate: immediate, + Body: msg.Body, + Properties: properties{ + Headers: msg.Headers, + ContentType: msg.ContentType, + ContentEncoding: msg.ContentEncoding, + DeliveryMode: msg.DeliveryMode, + Priority: msg.Priority, + CorrelationId: msg.CorrelationId, + ReplyTo: msg.ReplyTo, + Expiration: msg.Expiration, + MessageId: msg.MessageId, + Timestamp: msg.Timestamp, + Type: msg.Type, + UserId: msg.UserId, + AppId: msg.AppId, + }, + }); err != nil { + if ch.confirming { + ch.confirms.unpublish() + } + return nil, err + } + + return dc, nil +} + +/* +PublishWithDeferredConfirmWithContext behaves identically to Publish but additionally returns a +DeferredConfirmation, allowing the caller to wait on the publisher confirmation +for this message. If the channel has not been put into confirm mode, +the DeferredConfirmation will be nil. + +NOTE: PublishWithDeferredConfirmWithContext is equivalent to its non-context variant. The context passed +to this function is not honoured. +*/ +func (ch *Channel) PublishWithDeferredConfirmWithContext(_ context.Context, exchange, key string, mandatory, immediate bool, msg Publishing) (*DeferredConfirmation, error) { + return ch.PublishWithDeferredConfirm(exchange, key, mandatory, immediate, msg) +} + +/* +Get synchronously receives a single Delivery from the head of a queue from the +server to the client. In almost all cases, using Channel.Consume will be +preferred. + +If there was a delivery waiting on the queue and that delivery was received, the +second return value will be true. If there was no delivery waiting or an error +occurred, the ok bool will be false. + +All deliveries must be acknowledged including those from Channel.Get. Call +Delivery.Ack on the returned delivery when you have fully processed this +delivery. + +When autoAck is true, the server will automatically acknowledge this message so +you don't have to. But if you are unable to fully process this message before +the channel or connection is closed, the message will not get requeued. +*/ +func (ch *Channel) Get(queue string, autoAck bool) (msg Delivery, ok bool, err error) { + req := &basicGet{Queue: queue, NoAck: autoAck} + res := &basicGetOk{} + empty := &basicGetEmpty{} + + if err := ch.call(req, res, empty); err != nil { + return Delivery{}, false, err + } + + if res.DeliveryTag > 0 { + return *(newDelivery(ch, res)), true, nil + } + + return Delivery{}, false, nil +} + +/* +Tx puts the channel into transaction mode on the server. All publishings and +acknowledgments following this method will be atomically committed or rolled +back for a single queue. Call either Channel.TxCommit or Channel.TxRollback to +leave a this transaction and immediately start a new transaction. + +The atomicity across multiple queues is not defined as queue declarations and +bindings are not included in the transaction. + +The behavior of publishings that are delivered as mandatory or immediate while +the channel is in a transaction is not defined. + +Once a channel has been put into transaction mode, it cannot be taken out of +transaction mode. Use a different channel for non-transactional semantics. +*/ +func (ch *Channel) Tx() error { + return ch.call( + &txSelect{}, + &txSelectOk{}, + ) +} + +/* +TxCommit atomically commits all publishings and acknowledgments for a single +queue and immediately start a new transaction. + +Calling this method without having called Channel.Tx is an error. +*/ +func (ch *Channel) TxCommit() error { + return ch.call( + &txCommit{}, + &txCommitOk{}, + ) +} + +/* +TxRollback atomically rolls back all publishings and acknowledgments for a +single queue and immediately start a new transaction. + +Calling this method without having called Channel.Tx is an error. +*/ +func (ch *Channel) TxRollback() error { + return ch.call( + &txRollback{}, + &txRollbackOk{}, + ) +} + +/* +Flow pauses the delivery of messages to consumers on this channel. Channels +are opened with flow control active, to open a channel with paused +deliveries immediately call this method with `false` after calling +Connection.Channel. + +When active is `false`, this method asks the server to temporarily pause deliveries +until called again with active as `true`. + +Channel.Get methods will not be affected by flow control. + +This method is not intended to act as window control. Use Channel.Qos to limit +the number of unacknowledged messages or bytes in flight instead. + +The server may also send us flow methods to throttle our publishings. A well +behaving publishing client should add a listener with Channel.NotifyFlow and +pause its publishings when `false` is sent on that channel. + +Note: RabbitMQ prefers to use TCP push back to control flow for all channels on +a connection, so under high volume scenarios, it's wise to open separate +Connections for publishings and deliveries. +*/ +func (ch *Channel) Flow(active bool) error { + return ch.call( + &channelFlow{Active: active}, + &channelFlowOk{}, + ) +} + +/* +Confirm puts this channel into confirm mode so that the client can ensure all +publishings have successfully been received by the server. After entering this +mode, the server will send a basic.ack or basic.nack message with the deliver +tag set to a 1 based incremental index corresponding to every publishing +received after the this method returns. + +Add a listener to Channel.NotifyPublish to respond to the Confirmations. If +Channel.NotifyPublish is not called, the Confirmations will be silently +ignored. + +The order of acknowledgments is not bound to the order of deliveries. + +Ack and Nack confirmations will arrive at some point in the future. + +Unroutable mandatory or immediate messages are acknowledged immediately after +any Channel.NotifyReturn listeners have been notified. Other messages are +acknowledged when all queues that should have the message routed to them have +either received acknowledgment of delivery or have enqueued the message, +persisting the message if necessary. + +When noWait is true, the client will not wait for a response. A channel +exception could occur if the server does not support this method. +*/ +func (ch *Channel) Confirm(noWait bool) error { + if err := ch.call( + &confirmSelect{Nowait: noWait}, + &confirmSelectOk{}, + ); err != nil { + return err + } + + ch.confirmM.Lock() + ch.confirming = true + ch.confirmM.Unlock() + + return nil +} + +/* +Recover redelivers all unacknowledged deliveries on this channel. + +When requeue is false, messages will be redelivered to the original consumer. + +When requeue is true, messages will be redelivered to any available consumer, +potentially including the original. + +If the deliveries cannot be recovered, an error will be returned and the channel +will be closed. + +Note: this method is not implemented on RabbitMQ, use Delivery.Nack instead + +Deprecated: This method is deprecated in RabbitMQ. RabbitMQ used Recover(true) +as a mechanism for consumers to tell the broker that they were ready for more +deliveries, back in 2008-2009. Support for this will be removed from RabbitMQ in +a future release. Use Nack() with requeue=true instead. +*/ +func (ch *Channel) Recover(requeue bool) error { + return ch.call( + &basicRecover{Requeue: requeue}, + &basicRecoverOk{}, + ) +} + +/* +Ack acknowledges a delivery by its delivery tag when having been consumed with +Channel.Consume or Channel.Get. + +Ack acknowledges all message received prior to the delivery tag when multiple +is true. + +See also Delivery.Ack +*/ +func (ch *Channel) Ack(tag uint64, multiple bool) error { + ch.m.Lock() + defer ch.m.Unlock() + + return ch.send(&basicAck{ + DeliveryTag: tag, + Multiple: multiple, + }) +} + +/* +Nack negatively acknowledges a delivery by its delivery tag. Prefer this +method to notify the server that you were not able to process this delivery and +it must be redelivered or dropped. + +See also Delivery.Nack +*/ +func (ch *Channel) Nack(tag uint64, multiple bool, requeue bool) error { + ch.m.Lock() + defer ch.m.Unlock() + + return ch.send(&basicNack{ + DeliveryTag: tag, + Multiple: multiple, + Requeue: requeue, + }) +} + +/* +Reject negatively acknowledges a delivery by its delivery tag. Prefer Nack +over Reject when communicating with a RabbitMQ server because you can Nack +multiple messages, reducing the amount of protocol messages to exchange. + +See also Delivery.Reject +*/ +func (ch *Channel) Reject(tag uint64, requeue bool) error { + ch.m.Lock() + defer ch.m.Unlock() + + return ch.send(&basicReject{ + DeliveryTag: tag, + Requeue: requeue, + }) +} + +// GetNextPublishSeqNo returns the sequence number of the next message to be +// published, when in confirm mode. +func (ch *Channel) GetNextPublishSeqNo() uint64 { + ch.confirms.publishedMut.Lock() + defer ch.confirms.publishedMut.Unlock() + + return ch.confirms.published + 1 +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go new file mode 100644 index 0000000..577e042 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go @@ -0,0 +1,238 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "context" + "sync" +) + +// confirms resequences and notifies one or multiple publisher confirmation listeners +type confirms struct { + m sync.Mutex + listeners []chan Confirmation + sequencer map[uint64]Confirmation + deferredConfirmations *deferredConfirmations + published uint64 + publishedMut sync.Mutex + expecting uint64 +} + +// newConfirms allocates a confirms +func newConfirms() *confirms { + return &confirms{ + sequencer: map[uint64]Confirmation{}, + deferredConfirmations: newDeferredConfirmations(), + published: 0, + expecting: 1, + } +} + +func (c *confirms) Listen(l chan Confirmation) { + c.m.Lock() + defer c.m.Unlock() + + c.listeners = append(c.listeners, l) +} + +// Publish increments the publishing counter +func (c *confirms) publish() *DeferredConfirmation { + c.publishedMut.Lock() + defer c.publishedMut.Unlock() + + c.published++ + return c.deferredConfirmations.Add(c.published) +} + +// unpublish decrements the publishing counter and removes the +// DeferredConfirmation. It must be called immediately after a publish fails. +func (c *confirms) unpublish() { + c.publishedMut.Lock() + defer c.publishedMut.Unlock() + c.deferredConfirmations.remove(c.published) + c.published-- +} + +// confirm confirms one publishing, increments the expecting delivery tag, and +// removes bookkeeping for that delivery tag. +func (c *confirms) confirm(confirmation Confirmation) { + delete(c.sequencer, c.expecting) + c.expecting++ + for _, l := range c.listeners { + l <- confirmation + } +} + +// resequence confirms any out of order delivered confirmations +func (c *confirms) resequence() { + c.publishedMut.Lock() + defer c.publishedMut.Unlock() + + for c.expecting <= c.published { + sequenced, found := c.sequencer[c.expecting] + if !found { + return + } + c.confirm(sequenced) + } +} + +// One confirms one publishing and all following in the publishing sequence +func (c *confirms) One(confirmed Confirmation) { + c.m.Lock() + defer c.m.Unlock() + + c.deferredConfirmations.Confirm(confirmed) + + if c.expecting == confirmed.DeliveryTag { + c.confirm(confirmed) + } else { + c.sequencer[confirmed.DeliveryTag] = confirmed + } + c.resequence() +} + +// Multiple confirms all publishings up until the delivery tag +func (c *confirms) Multiple(confirmed Confirmation) { + c.m.Lock() + defer c.m.Unlock() + + c.deferredConfirmations.ConfirmMultiple(confirmed) + + for c.expecting <= confirmed.DeliveryTag { + c.confirm(Confirmation{c.expecting, confirmed.Ack}) + } + c.resequence() +} + +// Cleans up the confirms struct and its dependencies. +// Closes all listeners, discarding any out of sequence confirmations +func (c *confirms) Close() error { + c.m.Lock() + defer c.m.Unlock() + + c.deferredConfirmations.Close() + + for _, l := range c.listeners { + close(l) + } + c.listeners = nil + return nil +} + +type deferredConfirmations struct { + m sync.Mutex + confirmations map[uint64]*DeferredConfirmation +} + +func newDeferredConfirmations() *deferredConfirmations { + return &deferredConfirmations{ + confirmations: map[uint64]*DeferredConfirmation{}, + } +} + +func (d *deferredConfirmations) Add(tag uint64) *DeferredConfirmation { + d.m.Lock() + defer d.m.Unlock() + + dc := &DeferredConfirmation{DeliveryTag: tag} + dc.done = make(chan struct{}) + d.confirmations[tag] = dc + return dc +} + +// remove is only used to drop a tag whose publish failed +func (d *deferredConfirmations) remove(tag uint64) { + d.m.Lock() + defer d.m.Unlock() + dc, found := d.confirmations[tag] + if !found { + return + } + close(dc.done) + delete(d.confirmations, tag) +} + +func (d *deferredConfirmations) Confirm(confirmation Confirmation) { + d.m.Lock() + defer d.m.Unlock() + + dc, found := d.confirmations[confirmation.DeliveryTag] + if !found { + // We should never receive a confirmation for a tag that hasn't + // been published, but a test causes this to happen. + return + } + dc.setAck(confirmation.Ack) + delete(d.confirmations, confirmation.DeliveryTag) +} + +func (d *deferredConfirmations) ConfirmMultiple(confirmation Confirmation) { + d.m.Lock() + defer d.m.Unlock() + + for k, v := range d.confirmations { + if k <= confirmation.DeliveryTag { + v.setAck(confirmation.Ack) + delete(d.confirmations, k) + } + } +} + +// Close nacks all pending DeferredConfirmations being blocked by dc.Wait(). +func (d *deferredConfirmations) Close() { + d.m.Lock() + defer d.m.Unlock() + + for k, v := range d.confirmations { + v.setAck(false) + delete(d.confirmations, k) + } +} + +// setAck sets the acknowledgement status of the confirmation. Note that it must +// not be called more than once. +func (d *DeferredConfirmation) setAck(ack bool) { + d.ack = ack + close(d.done) +} + +// Done returns the channel that can be used to wait for the publisher +// confirmation. +func (d *DeferredConfirmation) Done() <-chan struct{} { + return d.done +} + +// Acked returns the publisher confirmation in a non-blocking manner. It returns +// false if the confirmation was not acknowledged yet or received negative +// acknowledgement. +func (d *DeferredConfirmation) Acked() bool { + select { + case <-d.done: + default: + return false + } + return d.ack +} + +// Wait blocks until the publisher confirmation. It returns true if the server +// successfully received the publishing. +func (d *DeferredConfirmation) Wait() bool { + <-d.done + return d.ack +} + +// WaitContext waits until the publisher confirmation. It returns true if the +// server successfully received the publishing. If the context expires before +// that, ctx.Err() is returned. +func (d *DeferredConfirmation) WaitContext(ctx context.Context) (bool, error) { + select { + case <-ctx.Done(): + return false, ctx.Err() + case <-d.done: + } + return d.ack, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go new file mode 100644 index 0000000..e167a23 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go @@ -0,0 +1,1172 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bufio" + "crypto/tls" + "crypto/x509" + "errors" + "fmt" + "io" + "net" + "os" + "reflect" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" +) + +const ( + maxChannelMax = (2 << 15) - 1 + + defaultHeartbeat = 10 * time.Second + defaultConnectionTimeout = 30 * time.Second + defaultProduct = "AMQP 0.9.1 Client" + buildVersion = "1.10.0" + platform = "golang" + // Safer default that makes channel leaks a lot easier to spot + // before they create operational headaches. See https://github.com/rabbitmq/rabbitmq-server/issues/1593. + defaultChannelMax = uint16((2 << 10) - 1) + defaultLocale = "en_US" +) + +// Config is used in DialConfig and Open to specify the desired tuning +// parameters used during a connection open handshake. The negotiated tuning +// will be stored in the returned connection's Config field. +type Config struct { + // The SASL mechanisms to try in the client request, and the successful + // mechanism used on the Connection object. + // If SASL is nil, PlainAuth from the URL is used. + SASL []Authentication + + // Vhost specifies the namespace of permissions, exchanges, queues and + // bindings on the server. Dial sets this to the path parsed from the URL. + Vhost string + + ChannelMax uint16 // 0 max channels means 2^16 - 1 + FrameSize int // 0 max bytes means unlimited + Heartbeat time.Duration // less than 1s uses the server's interval + + // TLSClientConfig specifies the client configuration of the TLS connection + // when establishing a tls transport. + // If the URL uses an amqps scheme, then an empty tls.Config with the + // ServerName from the URL is used. + TLSClientConfig *tls.Config + + // Properties is table of properties that the client advertises to the server. + // This is an optional setting - if the application does not set this, + // the underlying library will use a generic set of client properties. + Properties Table + + // Connection locale that we expect to always be en_US + // Even though servers must return it as per the AMQP 0-9-1 spec, + // we are not aware of it being used other than to satisfy the spec requirements + Locale string + + // Dial returns a net.Conn prepared for a TLS handshake with TSLClientConfig, + // then an AMQP connection handshake. + // If Dial is nil, net.DialTimeout with a 30s connection and 30s deadline is + // used during TLS and AMQP handshaking. + Dial func(network, addr string) (net.Conn, error) +} + +// NewConnectionProperties creates an amqp.Table to be used as amqp.Config.Properties. +// +// Defaults to library-defined values. For empty properties, use make(amqp.Table) instead. +func NewConnectionProperties() Table { + return Table{ + "product": defaultProduct, + "version": buildVersion, + "platform": platform, + } +} + +// Connection manages the serialization and deserialization of frames from IO +// and dispatches the frames to the appropriate channel. All RPC methods and +// asynchronous Publishing, Delivery, Ack, Nack and Return messages are +// multiplexed on this channel. There must always be active receivers for +// every asynchronous message on this connection. +type Connection struct { + destructor sync.Once // shutdown once + sendM sync.Mutex // conn writer mutex + m sync.Mutex // struct field mutex + + conn io.ReadWriteCloser + + rpc chan message + writer *writer + sends chan time.Time // timestamps of each frame sent + deadlines chan readDeadliner // heartbeater updates read deadlines + + allocator *allocator // id generator valid after openTune + channels map[uint16]*Channel + + noNotify bool // true when we will never notify again + closes []chan *Error + blocks []chan Blocking + + errors chan *Error + // if connection is closed should close this chan + close chan struct{} + + Config Config // The negotiated Config after connection.open + + Major int // Server's major version + Minor int // Server's minor version + Properties Table // Server properties + Locales []string // Server locales + + closed int32 // Will be 1 if the connection is closed, 0 otherwise. Should only be accessed as atomic +} + +type readDeadliner interface { + SetReadDeadline(time.Time) error +} + +// DefaultDial establishes a connection when config.Dial is not provided +func DefaultDial(connectionTimeout time.Duration) func(network, addr string) (net.Conn, error) { + return func(network, addr string) (net.Conn, error) { + conn, err := net.DialTimeout(network, addr, connectionTimeout) + if err != nil { + return nil, err + } + + // Heartbeating hasn't started yet, don't stall forever on a dead server. + // A deadline is set for TLS and AMQP handshaking. After AMQP is established, + // the deadline is cleared in openComplete. + if err := conn.SetDeadline(time.Now().Add(connectionTimeout)); err != nil { + return nil, err + } + + return conn, nil + } +} + +// Dial accepts a string in the AMQP URI format and returns a new Connection +// over TCP using PlainAuth. Defaults to a server heartbeat interval of 10 +// seconds and sets the handshake deadline to 30 seconds. After handshake, +// deadlines are cleared. +// +// Dial uses the zero value of tls.Config when it encounters an amqps:// +// scheme. It is equivalent to calling DialTLS(amqp, nil). +func Dial(url string) (*Connection, error) { + return DialConfig(url, Config{ + Locale: defaultLocale, + }) +} + +// DialTLS accepts a string in the AMQP URI format and returns a new Connection +// over TCP using PlainAuth. Defaults to a server heartbeat interval of 10 +// seconds and sets the initial read deadline to 30 seconds. +// +// DialTLS uses the provided tls.Config when encountering an amqps:// scheme. +func DialTLS(url string, amqps *tls.Config) (*Connection, error) { + return DialConfig(url, Config{ + TLSClientConfig: amqps, + Locale: defaultLocale, + }) +} + +// DialTLS_ExternalAuth accepts a string in the AMQP URI format and returns a +// new Connection over TCP using EXTERNAL auth. Defaults to a server heartbeat +// interval of 10 seconds and sets the initial read deadline to 30 seconds. +// +// This mechanism is used, when RabbitMQ is configured for EXTERNAL auth with +// ssl_cert_login plugin for userless/passwordless logons +// +// DialTLS_ExternalAuth uses the provided tls.Config when encountering an +// amqps:// scheme. +func DialTLS_ExternalAuth(url string, amqps *tls.Config) (*Connection, error) { + return DialConfig(url, Config{ + TLSClientConfig: amqps, + SASL: []Authentication{&ExternalAuth{}}, + }) +} + +// DialConfig accepts a string in the AMQP URI format and a configuration for +// the transport and connection setup, returning a new Connection. Defaults to +// a server heartbeat interval of 10 seconds and sets the initial read deadline +// to 30 seconds. The heartbeat interval specified in the AMQP URI takes precedence +// over the value specified in the config. To disable heartbeats, you must use +// the AMQP URI and set heartbeat=0 there. +func DialConfig(url string, config Config) (*Connection, error) { + var err error + var conn net.Conn + + uri, err := ParseURI(url) + if err != nil { + return nil, err + } + + if config.SASL == nil { + if uri.AuthMechanism != nil { + for _, identifier := range uri.AuthMechanism { + switch strings.ToUpper(identifier) { + case "PLAIN": + config.SASL = append(config.SASL, uri.PlainAuth()) + case "AMQPLAIN": + config.SASL = append(config.SASL, uri.AMQPlainAuth()) + case "EXTERNAL": + config.SASL = append(config.SASL, &ExternalAuth{}) + default: + return nil, fmt.Errorf("unsupported auth_mechanism: %v", identifier) + } + } + } else { + config.SASL = []Authentication{uri.PlainAuth()} + } + } + + if config.Vhost == "" { + config.Vhost = uri.Vhost + } + + if uri.Heartbeat.hasValue { + config.Heartbeat = uri.Heartbeat.value + } else { + if config.Heartbeat == 0 { + config.Heartbeat = defaultHeartbeat + } + } + + if config.ChannelMax == 0 { + config.ChannelMax = uri.ChannelMax + } + + connectionTimeout := defaultConnectionTimeout + if uri.ConnectionTimeout != 0 { + connectionTimeout = time.Duration(uri.ConnectionTimeout) * time.Millisecond + } + + addr := net.JoinHostPort(uri.Host, strconv.FormatInt(int64(uri.Port), 10)) + + dialer := config.Dial + if dialer == nil { + dialer = DefaultDial(connectionTimeout) + } + + conn, err = dialer("tcp", addr) + if err != nil { + return nil, err + } + + if uri.Scheme == "amqps" { + if config.TLSClientConfig == nil { + tlsConfig, err := tlsConfigFromURI(uri) + if err != nil { + return nil, fmt.Errorf("create TLS config from URI: %w", err) + } + config.TLSClientConfig = tlsConfig + } + + // If ServerName has not been specified in TLSClientConfig, + // set it to the URI host used for this connection. + if config.TLSClientConfig.ServerName == "" { + config.TLSClientConfig.ServerName = uri.Host + } + + client := tls.Client(conn, config.TLSClientConfig) + if err := client.Handshake(); err != nil { + conn.Close() + return nil, err + } + + conn = client + } + + return Open(conn, config) +} + +/* +Open accepts an already established connection, or other io.ReadWriteCloser as +a transport. Use this method if you have established a TLS connection or wish +to use your own custom transport. +*/ +func Open(conn io.ReadWriteCloser, config Config) (*Connection, error) { + c := &Connection{ + conn: conn, + writer: &writer{bufio.NewWriter(conn)}, + channels: make(map[uint16]*Channel), + rpc: make(chan message), + sends: make(chan time.Time), + errors: make(chan *Error, 1), + close: make(chan struct{}), + deadlines: make(chan readDeadliner, 1), + } + go c.reader(conn) + return c, c.open(config) +} + +/* +UpdateSecret updates the secret used to authenticate this connection. It is used when +secrets have an expiration date and need to be renewed, like OAuth 2 tokens. + +It returns an error if the operation is not successful, or if the connection is closed. +*/ +func (c *Connection) UpdateSecret(newSecret, reason string) error { + if c.IsClosed() { + return ErrClosed + } + return c.call(&connectionUpdateSecret{ + NewSecret: newSecret, + Reason: reason, + }, &connectionUpdateSecretOk{}) +} + +/* +LocalAddr returns the local TCP peer address, or ":0" (the zero value of net.TCPAddr) +as a fallback default value if the underlying transport does not support LocalAddr(). +*/ +func (c *Connection) LocalAddr() net.Addr { + if conn, ok := c.conn.(interface { + LocalAddr() net.Addr + }); ok { + return conn.LocalAddr() + } + return &net.TCPAddr{} +} + +/* +RemoteAddr returns the remote TCP peer address, if known. +*/ +func (c *Connection) RemoteAddr() net.Addr { + if conn, ok := c.conn.(interface { + RemoteAddr() net.Addr + }); ok { + return conn.RemoteAddr() + } + return &net.TCPAddr{} +} + +// ConnectionState returns basic TLS details of the underlying transport. +// Returns a zero value when the underlying connection does not implement +// ConnectionState() tls.ConnectionState. +func (c *Connection) ConnectionState() tls.ConnectionState { + if conn, ok := c.conn.(interface { + ConnectionState() tls.ConnectionState + }); ok { + return conn.ConnectionState() + } + return tls.ConnectionState{} +} + +/* +NotifyClose registers a listener for close events either initiated by an error +accompanying a connection.close method or by a normal shutdown. + +The chan provided will be closed when the Connection is closed and on a +graceful close, no error will be sent. + +In case of a non graceful close the error will be notified synchronously by the library +so that it will be necessary to consume the Channel from the caller in order to avoid deadlocks + +To reconnect after a transport or protocol error, register a listener here and +re-run your setup process. +*/ +func (c *Connection) NotifyClose(receiver chan *Error) chan *Error { + c.m.Lock() + defer c.m.Unlock() + + if c.noNotify { + close(receiver) + } else { + c.closes = append(c.closes, receiver) + } + + return receiver +} + +/* +NotifyBlocked registers a listener for RabbitMQ specific TCP flow control +method extensions connection.blocked and connection.unblocked. Flow control is +active with a reason when Blocking.Blocked is true. When a Connection is +blocked, all methods will block across all connections until server resources +become free again. + +This optional extension is supported by the server when the +"connection.blocked" server capability key is true. +*/ +func (c *Connection) NotifyBlocked(receiver chan Blocking) chan Blocking { + c.m.Lock() + defer c.m.Unlock() + + if c.noNotify { + close(receiver) + } else { + c.blocks = append(c.blocks, receiver) + } + + return receiver +} + +/* +Close requests and waits for the response to close the AMQP connection. + +It's advisable to use this message when publishing to ensure all kernel buffers +have been flushed on the server and client before exiting. + +An error indicates that server may not have received this request to close but +the connection should be treated as closed regardless. + +After returning from this call, all resources associated with this connection, +including the underlying io, Channels, Notify listeners and Channel consumers +will also be closed. +*/ +func (c *Connection) Close() error { + if c.IsClosed() { + return ErrClosed + } + + defer c.shutdown(nil) + return c.call( + &connectionClose{ + ReplyCode: replySuccess, + ReplyText: "kthxbai", + }, + &connectionCloseOk{}, + ) +} + +// CloseDeadline requests and waits for the response to close this AMQP connection. +// +// Accepts a deadline for waiting the server response. The deadline is passed +// to the low-level connection i.e. network socket. +// +// Regardless of the error returned, the connection is considered closed, and it +// should not be used after calling this function. +// +// In the event of an I/O timeout, connection-closed listeners are NOT informed. +// +// After returning from this call, all resources associated with this connection, +// including the underlying io, Channels, Notify listeners and Channel consumers +// will also be closed. +func (c *Connection) CloseDeadline(deadline time.Time) error { + if c.IsClosed() { + return ErrClosed + } + + defer c.shutdown(nil) + + err := c.setDeadline(deadline) + if err != nil { + return err + } + + return c.call( + &connectionClose{ + ReplyCode: replySuccess, + ReplyText: "kthxbai", + }, + &connectionCloseOk{}, + ) +} + +func (c *Connection) closeWith(err *Error) error { + if c.IsClosed() { + return ErrClosed + } + + defer c.shutdown(err) + + return c.call( + &connectionClose{ + ReplyCode: uint16(err.Code), + ReplyText: err.Reason, + }, + &connectionCloseOk{}, + ) +} + +// IsClosed returns true if the connection is marked as closed, otherwise false +// is returned. +func (c *Connection) IsClosed() bool { + return atomic.LoadInt32(&c.closed) == 1 +} + +// setDeadline is a wrapper to type assert Connection.conn and set an I/O +// deadline in the underlying TCP connection socket, by calling +// net.Conn.SetDeadline(). It returns an error, in case the type assertion fails, +// although this should never happen. +func (c *Connection) setDeadline(t time.Time) error { + con, ok := c.conn.(net.Conn) + if !ok { + return errInvalidTypeAssertion + } + return con.SetDeadline(t) +} + +func (c *Connection) send(f frame) error { + if c.IsClosed() { + return ErrClosed + } + + c.sendM.Lock() + err := c.writer.WriteFrame(f) + c.sendM.Unlock() + + if err != nil { + // shutdown could be re-entrant from signaling notify chans + go c.shutdown(&Error{ + Code: FrameError, + Reason: err.Error(), + }) + } else { + // Broadcast we sent a frame, reducing heartbeats, only + // if there is something that can receive - like a non-reentrant + // call or if the heartbeater isn't running + select { + case c.sends <- time.Now(): + default: + } + } + + return err +} + +// This method is intended to be used with sendUnflushed() to end a sequence +// of sendUnflushed() calls and flush the connection +func (c *Connection) endSendUnflushed() error { + c.sendM.Lock() + defer c.sendM.Unlock() + return c.flush() +} + +// sendUnflushed performs an *Unflushed* write. It is otherwise equivalent to +// send(), and we provide a separate flush() function to explicitly flush the +// buffer after all Frames are written. +// +// Why is this a thing? +// +// send() method uses writer.WriteFrame(), which will write the Frame then +// flush the buffer. For cases like the sendOpen() method on Channel, which +// sends multiple Frames (methodFrame, headerFrame, N x bodyFrame), flushing +// after each Frame is inefficient as it negates much of the benefit of using a +// buffered writer, and results in more syscalls than necessary. Flushing buffers +// after every frame can have a significant performance impact when sending +// (basicPublish) small messages, so this method performs an *Unflushed* write +// but is otherwise equivalent to send() method, and we provide a separate +// flush method to explicitly flush the buffer after all Frames are written. +func (c *Connection) sendUnflushed(f frame) error { + if c.IsClosed() { + return ErrClosed + } + + c.sendM.Lock() + err := c.writer.WriteFrameNoFlush(f) + c.sendM.Unlock() + + if err != nil { + // shutdown could be re-entrant from signaling notify chans + go c.shutdown(&Error{ + Code: FrameError, + Reason: err.Error(), + }) + } + + return err +} + +// This method is intended to be used with sendUnflushed() to explicitly flush +// the buffer after all required Frames have been written to the buffer. +func (c *Connection) flush() (err error) { + if buf, ok := c.writer.w.(*bufio.Writer); ok { + err = buf.Flush() + + // Moving send notifier to flush increases basicPublish for the small message + // case. As sendUnflushed + flush is used for the case of sending semantically + // related Frames (e.g. a Message like basicPublish) there is no real advantage + // to sending per Frame vice per "group of related Frames" and for the case of + // small messages time.Now() is (relatively) expensive. + if err == nil { + // Broadcast we sent a frame, reducing heartbeats, only + // if there is something that can receive - like a non-reentrant + // call or if the heartbeater isn't running + select { + case c.sends <- time.Now(): + default: + } + } + } + + return +} + +func (c *Connection) shutdown(err *Error) { + atomic.StoreInt32(&c.closed, 1) + + c.destructor.Do(func() { + c.m.Lock() + defer c.m.Unlock() + + if err != nil { + for _, c := range c.closes { + c <- err + } + c.errors <- err + } + // Shutdown handler goroutine can still receive the result. + close(c.errors) + + for _, c := range c.closes { + close(c) + } + + for _, c := range c.blocks { + close(c) + } + + // Shutdown the channel, but do not use closeChannel() as it calls + // releaseChannel() which requires the connection lock. + // + // Ranging over c.channels and calling releaseChannel() that mutates + // c.channels is racy - see commit 6063341 for an example. + for _, ch := range c.channels { + ch.shutdown(err) + } + + c.conn.Close() + // reader exit + close(c.close) + + c.channels = nil + c.allocator = nil + c.noNotify = true + }) +} + +// All methods sent to the connection channel should be synchronous so we +// can handle them directly without a framing component +func (c *Connection) demux(f frame) { + if f.channel() == 0 { + c.dispatch0(f) + } else { + c.dispatchN(f) + } +} + +func (c *Connection) dispatch0(f frame) { + switch mf := f.(type) { + case *methodFrame: + switch m := mf.Method.(type) { + case *connectionClose: + // Send immediately as shutdown will close our side of the writer. + f := &methodFrame{ChannelId: 0, Method: &connectionCloseOk{}} + if err := c.send(f); err != nil { + Logger.Printf("error sending connectionCloseOk, error: %+v", err) + } + c.shutdown(newError(m.ReplyCode, m.ReplyText)) + case *connectionBlocked: + for _, c := range c.blocks { + c <- Blocking{Active: true, Reason: m.Reason} + } + case *connectionUnblocked: + for _, c := range c.blocks { + c <- Blocking{Active: false} + } + default: + select { + case <-c.close: + return + case c.rpc <- m: + } + + } + case *heartbeatFrame: + // kthx - all reads reset our deadline. so we can drop this + default: + // lolwat - channel0 only responds to methods and heartbeats + // closeWith use call don't block reader + go func() { + if err := c.closeWith(ErrUnexpectedFrame); err != nil { + Logger.Printf("error sending connectionCloseOk with ErrUnexpectedFrame, error: %+v", err) + } + }() + } +} + +func (c *Connection) dispatchN(f frame) { + c.m.Lock() + channel, ok := c.channels[f.channel()] + if ok { + updateChannel(f, channel) + } else { + Logger.Printf("[debug] dropping frame, channel %d does not exist", f.channel()) + } + c.m.Unlock() + + // Note: this could result in concurrent dispatch depending on + // how channels are managed in an application + if ok { + channel.recv(channel, f) + } else { + c.dispatchClosed(f) + } +} + +// section 2.3.7: "When a peer decides to close a channel or connection, it +// sends a Close method. The receiving peer MUST respond to a Close with a +// Close-Ok, and then both parties can close their channel or connection. Note +// that if peers ignore Close, deadlock can happen when both peers send Close +// at the same time." +// +// When we don't have a channel, so we must respond with close-ok on a close +// method. This can happen between a channel exception on an asynchronous +// method like basic.publish and a synchronous close with channel.close. +// In that case, we'll get both a channel.close and channel.close-ok in any +// order. +func (c *Connection) dispatchClosed(f frame) { + // Only consider method frames, drop content/header frames + if mf, ok := f.(*methodFrame); ok { + switch mf.Method.(type) { + case *channelClose: + f := &methodFrame{ChannelId: f.channel(), Method: &channelCloseOk{}} + if err := c.send(f); err != nil { + Logger.Printf("error sending channelCloseOk, channel id: %d error: %+v", f.channel(), err) + } + case *channelCloseOk: + // we are already closed, so do nothing + default: + // unexpected method on closed channel + // closeWith use call don't block reader + go func() { + if err := c.closeWith(ErrClosed); err != nil { + Logger.Printf("error sending connectionCloseOk with ErrClosed, error: %+v", err) + } + }() + } + } +} + +// Reads each frame off the IO and hand off to the connection object that +// will demux the streams and dispatch to one of the opened channels or +// handle on channel 0 (the connection channel). +func (c *Connection) reader(r io.Reader) { + buf := bufio.NewReader(r) + frames := &reader{buf} + conn, haveDeadliner := r.(readDeadliner) + + defer close(c.rpc) + + for { + frame, err := frames.ReadFrame() + + if err != nil { + c.shutdown(&Error{Code: FrameError, Reason: err.Error()}) + return + } + + c.demux(frame) + + if haveDeadliner { + select { + case c.deadlines <- conn: + default: + // On c.Close() c.heartbeater() might exit just before c.deadlines <- conn is called. + // Which results in this goroutine being stuck forever. + } + } + } +} + +// Ensures that at least one frame is being sent at the tuned interval with a +// jitter tolerance of 1s +func (c *Connection) heartbeater(interval time.Duration, done chan *Error) { + const maxServerHeartbeatsInFlight = 3 + + var sendTicks <-chan time.Time + if interval > 0 { + ticker := time.NewTicker(interval) + defer ticker.Stop() + sendTicks = ticker.C + } + + lastSent := time.Now() + + for { + select { + case at, stillSending := <-c.sends: + // When actively sending, depend on sent frames to reset server timer + if stillSending { + lastSent = at + } else { + return + } + + case at := <-sendTicks: + // When idle, fill the space with a heartbeat frame + if at.Sub(lastSent) > interval-time.Second { + if err := c.send(&heartbeatFrame{}); err != nil { + // send heartbeats even after close/closeOk so we + // tick until the connection starts erroring + return + } + } + + case conn := <-c.deadlines: + // When reading, reset our side of the deadline, if we've negotiated one with + // a deadline that covers at least 2 server heartbeats + if interval > 0 { + if err := conn.SetReadDeadline(time.Now().Add(maxServerHeartbeatsInFlight * interval)); err != nil { + var opErr *net.OpError + if !errors.As(err, &opErr) { + Logger.Printf("error setting read deadline in heartbeater: %+v", err) + return + } + } + } + + case <-done: + return + } + } +} + +// Convenience method to inspect the Connection.Properties["capabilities"] +// Table for server identified capabilities like "basic.ack" or +// "confirm.select". +func (c *Connection) isCapable(featureName string) bool { + capabilities, _ := c.Properties["capabilities"].(Table) + hasFeature, _ := capabilities[featureName].(bool) + return hasFeature +} + +// allocateChannel records but does not open a new channel with a unique id. +// This method is the initial part of the channel lifecycle and paired with +// releaseChannel +func (c *Connection) allocateChannel() (*Channel, error) { + c.m.Lock() + defer c.m.Unlock() + + if c.IsClosed() { + return nil, ErrClosed + } + + id, ok := c.allocator.next() + if !ok { + return nil, ErrChannelMax + } + + ch := newChannel(c, uint16(id)) + c.channels[uint16(id)] = ch + + return ch, nil +} + +// releaseChannel removes a channel from the registry as the final part of the +// channel lifecycle +func (c *Connection) releaseChannel(ch *Channel) { + c.m.Lock() + defer c.m.Unlock() + + if !c.IsClosed() { + got, ok := c.channels[ch.id] + if ok && got == ch { + delete(c.channels, ch.id) + c.allocator.release(int(ch.id)) + } + } +} + +// openChannel allocates and opens a channel, must be paired with closeChannel +func (c *Connection) openChannel() (*Channel, error) { + ch, err := c.allocateChannel() + if err != nil { + return nil, err + } + + if err := ch.open(); err != nil { + c.releaseChannel(ch) + return nil, err + } + return ch, nil +} + +// closeChannel releases and initiates a shutdown of the channel. All channel +// closures should be initiated here for proper channel lifecycle management on +// this connection. +func (c *Connection) closeChannel(ch *Channel, e *Error) { + ch.shutdown(e) + c.releaseChannel(ch) +} + +/* +Channel opens a unique, concurrent server channel to process the bulk of AMQP +messages. Any error from methods on this receiver will render the receiver +invalid and a new Channel should be opened. +*/ +func (c *Connection) Channel() (*Channel, error) { + return c.openChannel() +} + +func (c *Connection) call(req message, res ...message) error { + // Special case for when the protocol header frame is sent insted of a + // request method + if req != nil { + if err := c.send(&methodFrame{ChannelId: 0, Method: req}); err != nil { + return err + } + } + + var msg message + select { + case e, ok := <-c.errors: + if ok { + return e + } + return ErrClosed + case msg = <-c.rpc: + } + + // Try to match one of the result types + for _, try := range res { + if reflect.TypeOf(msg) == reflect.TypeOf(try) { + // *res = *msg + vres := reflect.ValueOf(try).Elem() + vmsg := reflect.ValueOf(msg).Elem() + vres.Set(vmsg) + return nil + } + } + return ErrCommandInvalid +} + +// Communication flow to open, use and close a connection. 'C:' are +// frames sent by the Client. 'S:' are frames sent by the Server. +// +// Connection = open-Connection *use-Connection close-Connection +// +// open-Connection = C:protocol-header +// S:START C:START-OK +// *challenge +// S:TUNE C:TUNE-OK +// C:OPEN S:OPEN-OK +// +// challenge = S:SECURE C:SECURE-OK +// +// use-Connection = *channel +// +// close-Connection = C:CLOSE S:CLOSE-OK +// S:CLOSE C:CLOSE-OK +func (c *Connection) open(config Config) error { + if err := c.send(&protocolHeader{}); err != nil { + return err + } + + return c.openStart(config) +} + +func (c *Connection) openStart(config Config) error { + start := &connectionStart{} + + if err := c.call(nil, start); err != nil { + return err + } + + c.Major = int(start.VersionMajor) + c.Minor = int(start.VersionMinor) + c.Properties = start.ServerProperties + c.Locales = strings.Split(start.Locales, " ") + + // eventually support challenge/response here by also responding to + // connectionSecure. + auth, ok := pickSASLMechanism(config.SASL, strings.Split(start.Mechanisms, " ")) + if !ok { + return ErrSASL + } + + // Save this mechanism off as the one we chose + c.Config.SASL = []Authentication{auth} + + // Set the connection locale to client locale + c.Config.Locale = config.Locale + + return c.openTune(config, auth) +} + +func (c *Connection) openTune(config Config, auth Authentication) error { + if len(config.Properties) == 0 { + config.Properties = NewConnectionProperties() + } + + config.Properties["capabilities"] = Table{ + "connection.blocked": true, + "consumer_cancel_notify": true, + "basic.nack": true, + "publisher_confirms": true, + } + + ok := &connectionStartOk{ + ClientProperties: config.Properties, + Mechanism: auth.Mechanism(), + Response: auth.Response(), + Locale: config.Locale, + } + tune := &connectionTune{} + + if err := c.call(ok, tune); err != nil { + // per spec, a connection can only be closed when it has been opened + // so at this point, we know it's an auth error, but the socket + // was closed instead. Return a meaningful error. + return ErrCredentials + } + + // Edge case that may race with c.shutdown() + // https://github.com/rabbitmq/amqp091-go/issues/170 + c.m.Lock() + + // When the server and client both use default 0, then the max channel is + // only limited by uint16. + c.Config.ChannelMax = pickUInt16(config.ChannelMax, tune.ChannelMax) + if c.Config.ChannelMax == 0 { + c.Config.ChannelMax = defaultChannelMax + } + c.Config.ChannelMax = minUInt16(c.Config.ChannelMax, maxChannelMax) + + c.allocator = newAllocator(1, int(c.Config.ChannelMax)) + + c.m.Unlock() + + // Frame size includes headers and end byte (len(payload)+8), even if + // this is less than FrameMinSize, use what the server sends because the + // alternative is to stop the handshake here. + c.Config.FrameSize = pick(config.FrameSize, int(tune.FrameMax)) + + // Save this off for resetDeadline() + c.Config.Heartbeat = time.Second * time.Duration(pick( + int(config.Heartbeat/time.Second), + int(tune.Heartbeat))) + + // "The client should start sending heartbeats after receiving a + // Connection.Tune method" + go c.heartbeater(c.Config.Heartbeat/2, c.NotifyClose(make(chan *Error, 1))) + + if err := c.send(&methodFrame{ + ChannelId: 0, + Method: &connectionTuneOk{ + ChannelMax: uint16(c.Config.ChannelMax), + FrameMax: uint32(c.Config.FrameSize), + Heartbeat: uint16(c.Config.Heartbeat / time.Second), + }, + }); err != nil { + return err + } + + return c.openVhost(config) +} + +func (c *Connection) openVhost(config Config) error { + req := &connectionOpen{VirtualHost: config.Vhost} + res := &connectionOpenOk{} + + if err := c.call(req, res); err != nil { + // Cannot be closed yet, but we know it's a vhost problem + return ErrVhost + } + + c.Config.Vhost = config.Vhost + + return c.openComplete() +} + +// openComplete performs any final Connection initialization dependent on the +// connection handshake and clears any state needed for TLS and AMQP handshaking. +func (c *Connection) openComplete() error { + // We clear the deadlines and let the heartbeater reset the read deadline if requested. + // RabbitMQ uses TCP flow control at this point for pushback so Writes can + // intentionally block. + if deadliner, ok := c.conn.(interface { + SetDeadline(time.Time) error + }); ok { + _ = deadliner.SetDeadline(time.Time{}) + } + + return nil +} + +// tlsConfigFromURI tries to create TLS configuration based on query parameters. +// Returns default (empty) config in case no suitable client cert and/or client key not provided. +// Returns error in case certificates can not be parsed. +func tlsConfigFromURI(uri URI) (*tls.Config, error) { + var certPool *x509.CertPool + if uri.CACertFile != "" { + data, err := os.ReadFile(uri.CACertFile) + if err != nil { + return nil, fmt.Errorf("read CA certificate: %w", err) + } + + certPool = x509.NewCertPool() + certPool.AppendCertsFromPEM(data) + } else if sysPool, err := x509.SystemCertPool(); err != nil { + return nil, fmt.Errorf("load system certificates: %w", err) + } else { + certPool = sysPool + } + + if uri.CertFile == "" || uri.KeyFile == "" { + // no client auth (mTLS), just server auth + return &tls.Config{ + RootCAs: certPool, + ServerName: uri.ServerName, + }, nil + } + + certificate, err := tls.LoadX509KeyPair(uri.CertFile, uri.KeyFile) + if err != nil { + return nil, fmt.Errorf("load client certificate: %w", err) + } + + return &tls.Config{ + Certificates: []tls.Certificate{certificate}, + RootCAs: certPool, + ServerName: uri.ServerName, + }, nil +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func maxUInt16(a, b uint16) uint16 { + if a > b { + return a + } + return b +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func minUInt16(a, b uint16) uint16 { + if a < b { + return a + } + return b +} + +func pickUInt16(client, server uint16) uint16 { + if client == 0 || server == 0 { + return maxUInt16(client, server) + } else { + return minUInt16(client, server) + } +} + +func pick(client, server int) int { + if client == 0 || server == 0 { + return max(client, server) + } + return min(client, server) +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go new file mode 100644 index 0000000..c352fec --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go @@ -0,0 +1,169 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "os" + "strconv" + "sync" + "sync/atomic" +) + +var consumerSeq uint64 + +const consumerTagLengthMax = 0xFF // see writeShortstr + +func uniqueConsumerTag() string { + return commandNameBasedUniqueConsumerTag(os.Args[0]) +} + +func commandNameBasedUniqueConsumerTag(commandName string) string { + tagPrefix := "ctag-" + tagInfix := commandName + tagSuffix := "-" + strconv.FormatUint(atomic.AddUint64(&consumerSeq, 1), 10) + + if len(tagPrefix)+len(tagInfix)+len(tagSuffix) > consumerTagLengthMax { + tagInfix = "streadway/amqp" + } + + return tagPrefix + tagInfix + tagSuffix +} + +type consumerBuffers map[string]chan *Delivery + +// Concurrent type that manages the consumerTag -> +// ingress consumerBuffer mapping +type consumers struct { + sync.WaitGroup // one for buffer + closed chan struct{} // signal buffer + + sync.Mutex // protects below + chans consumerBuffers +} + +func makeConsumers() *consumers { + return &consumers{ + closed: make(chan struct{}), + chans: make(consumerBuffers), + } +} + +func (subs *consumers) buffer(in chan *Delivery, out chan Delivery) { + defer close(out) + defer subs.Done() + + var inflight = in + var queue []*Delivery + + for delivery := range in { + queue = append(queue, delivery) + + for len(queue) > 0 { + select { + case <-subs.closed: + // closed before drained, drop in-flight + return + + case delivery, consuming := <-inflight: + if consuming { + queue = append(queue, delivery) + } else { + inflight = nil + } + + case out <- *queue[0]: + /* + * https://github.com/rabbitmq/amqp091-go/issues/179 + * https://github.com/rabbitmq/amqp091-go/pull/180 + * + * Comment from @lars-t-hansen: + * + * Given Go's slice semantics, and barring any information + * available to the compiler that proves that queue is the only + * pointer to the memory it references, the only meaning that + * queue = queue[1:] can have is basically queue += sizeof(queue + * element), ie, it bumps a pointer. Looking at the generated + * code for a simple example (on ARM64 in this case) bears this + * out. So what we're left with is an array that we have a + * pointer into the middle of. When the GC traces this pointer, + * it too does not know whether the array has multiple + * referents, and so its only sensible choice is to find the + * beginning of the array, and if the array is not already + * visited, mark every element in it, including the "dead" + * pointer. + * + * (Depending on the program dynamics, an element may eventually + * be appended to the queue when the queue is at capacity, and + * in this case the live elements are copied into a new array + * and the old array is left to be GC'd eventually, along with + * the dead object. But that can take time.) + */ + queue[0] = nil + queue = queue[1:] + } + } + } +} + +// On key conflict, close the previous channel. +func (subs *consumers) add(tag string, consumer chan Delivery) { + subs.Lock() + defer subs.Unlock() + + if prev, found := subs.chans[tag]; found { + close(prev) + } + + in := make(chan *Delivery) + subs.chans[tag] = in + + subs.Add(1) + go subs.buffer(in, consumer) +} + +func (subs *consumers) cancel(tag string) (found bool) { + subs.Lock() + defer subs.Unlock() + + ch, found := subs.chans[tag] + + if found { + delete(subs.chans, tag) + close(ch) + } + + return found +} + +func (subs *consumers) close() { + subs.Lock() + defer subs.Unlock() + + close(subs.closed) + + for tag, ch := range subs.chans { + delete(subs.chans, tag) + close(ch) + } + + subs.Wait() +} + +// Sends a delivery to a the consumer identified by `tag`. +// If unbuffered channels are used for Consume this method +// could block all deliveries until the consumer +// receives on the other end of the channel. +func (subs *consumers) send(tag string, msg *Delivery) bool { + subs.Lock() + defer subs.Unlock() + + buffer, found := subs.chans[tag] + if found { + buffer <- msg + } + + return found +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go new file mode 100644 index 0000000..e94cf34 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go @@ -0,0 +1,173 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "errors" + "time" +) + +var errDeliveryNotInitialized = errors.New("delivery not initialized") + +// Acknowledger notifies the server of successful or failed consumption of +// deliveries via identifier found in the Delivery.DeliveryTag field. +// +// Applications can provide mock implementations in tests of Delivery handlers. +type Acknowledger interface { + Ack(tag uint64, multiple bool) error + Nack(tag uint64, multiple bool, requeue bool) error + Reject(tag uint64, requeue bool) error +} + +// Delivery captures the fields for a previously delivered message resident in +// a queue to be delivered by the server to a consumer from Channel.Consume or +// Channel.Get. +type Delivery struct { + Acknowledger Acknowledger // the channel from which this delivery arrived + + Headers Table // Application or header exchange table + + // Properties + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + DeliveryMode uint8 // queue implementation use - non-persistent (1) or persistent (2) + Priority uint8 // queue implementation use - 0 to 9 + CorrelationId string // application use - correlation identifier + ReplyTo string // application use - address to reply to (ex: RPC) + Expiration string // implementation use - message expiration spec + MessageId string // application use - message identifier + Timestamp time.Time // application use - message timestamp + Type string // application use - message type name + UserId string // application use - creating user - should be authenticated user + AppId string // application use - creating application id + + // Valid only with Channel.Consume + ConsumerTag string + + // Valid only with Channel.Get + MessageCount uint32 + + DeliveryTag uint64 + Redelivered bool + Exchange string // basic.publish exchange + RoutingKey string // basic.publish routing key + + Body []byte +} + +func newDelivery(channel *Channel, msg messageWithContent) *Delivery { + props, body := msg.getContent() + + delivery := Delivery{ + Acknowledger: channel, + + Headers: props.Headers, + ContentType: props.ContentType, + ContentEncoding: props.ContentEncoding, + DeliveryMode: props.DeliveryMode, + Priority: props.Priority, + CorrelationId: props.CorrelationId, + ReplyTo: props.ReplyTo, + Expiration: props.Expiration, + MessageId: props.MessageId, + Timestamp: props.Timestamp, + Type: props.Type, + UserId: props.UserId, + AppId: props.AppId, + + Body: body, + } + + // Properties for the delivery types + switch m := msg.(type) { + case *basicDeliver: + delivery.ConsumerTag = m.ConsumerTag + delivery.DeliveryTag = m.DeliveryTag + delivery.Redelivered = m.Redelivered + delivery.Exchange = m.Exchange + delivery.RoutingKey = m.RoutingKey + + case *basicGetOk: + delivery.MessageCount = m.MessageCount + delivery.DeliveryTag = m.DeliveryTag + delivery.Redelivered = m.Redelivered + delivery.Exchange = m.Exchange + delivery.RoutingKey = m.RoutingKey + } + + return &delivery +} + +/* +Ack delegates an acknowledgement through the Acknowledger interface that the +client or server has finished work on a delivery. + +All deliveries in AMQP must be acknowledged. If you called Channel.Consume +with autoAck true then the server will be automatically ack each message and +this method should not be called. Otherwise, you must call Delivery.Ack after +you have successfully processed this delivery. + +When multiple is true, this delivery and all prior unacknowledged deliveries +on the same channel will be acknowledged. This is useful for batch processing +of deliveries. + +An error will indicate that the acknowledge could not be delivered to the +channel it was sent from. + +Either Delivery.Ack, Delivery.Reject or Delivery.Nack must be called for every +delivery that is not automatically acknowledged. +*/ +func (d Delivery) Ack(multiple bool) error { + if d.Acknowledger == nil { + return errDeliveryNotInitialized + } + return d.Acknowledger.Ack(d.DeliveryTag, multiple) +} + +/* +Reject delegates a negatively acknowledgement through the Acknowledger interface. + +When requeue is true, queue this message to be delivered to a consumer on a +different channel. When requeue is false or the server is unable to queue this +message, it will be dropped. + +If you are batch processing deliveries, and your server supports it, prefer +Delivery.Nack. + +Either Delivery.Ack, Delivery.Reject or Delivery.Nack must be called for every +delivery that is not automatically acknowledged. +*/ +func (d Delivery) Reject(requeue bool) error { + if d.Acknowledger == nil { + return errDeliveryNotInitialized + } + return d.Acknowledger.Reject(d.DeliveryTag, requeue) +} + +/* +Nack negatively acknowledge the delivery of message(s) identified by the +delivery tag from either the client or server. + +When multiple is true, nack messages up to and including delivered messages up +until the delivery tag delivered on the same channel. + +When requeue is true, request the server to deliver this message to a different +consumer. If it is not possible or requeue is false, the message will be +dropped or delivered to a server configured dead-letter queue. + +This method must not be used to select or requeue messages the client wishes +not to handle, rather it is to inform the server that the client is incapable +of handling this message at this time. + +Either Delivery.Ack, Delivery.Reject or Delivery.Nack must be called for every +delivery that is not automatically acknowledged. +*/ +func (d Delivery) Nack(multiple, requeue bool) error { + if d.Acknowledger == nil { + return errDeliveryNotInitialized + } + return d.Acknowledger.Nack(d.DeliveryTag, multiple, requeue) +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go new file mode 100644 index 0000000..461173f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go @@ -0,0 +1,160 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package amqp091 is an AMQP 0.9.1 client with RabbitMQ extensions + +Understand the AMQP 0.9.1 messaging model by reviewing these links first. Much +of the terminology in this library directly relates to AMQP concepts. + + Resources + + http://www.rabbitmq.com/tutorials/amqp-concepts.html + http://www.rabbitmq.com/getstarted.html + http://www.rabbitmq.com/amqp-0-9-1-reference.html + +# Design + +Most other broker clients publish to queues, but in AMQP, clients publish +Exchanges instead. AMQP is programmable, meaning that both the producers and +consumers agree on the configuration of the broker, instead of requiring an +operator or system configuration that declares the logical topology in the +broker. The routing between producers and consumer queues is via Bindings. +These bindings form the logical topology of the broker. + +In this library, a message sent from publisher is called a "Publishing" and a +message received to a consumer is called a "Delivery". The fields of +Publishings and Deliveries are close but not exact mappings to the underlying +wire format to maintain stronger types. Many other libraries will combine +message properties with message headers. In this library, the message well +known properties are strongly typed fields on the Publishings and Deliveries, +whereas the user defined headers are in the Headers field. + +The method naming closely matches the protocol's method name with positional +parameters mapping to named protocol message fields. The motivation here is to +present a comprehensive view over all possible interactions with the server. + +Generally, methods that map to protocol methods of the "basic" class will be +elided in this interface, and "select" methods of various channel mode selectors +will be elided for example Channel.Confirm and Channel.Tx. + +The library is intentionally designed to be synchronous, where responses for +each protocol message are required to be received in an RPC manner. Some +methods have a noWait parameter like Channel.QueueDeclare, and some methods are +asynchronous like Channel.Publish. The error values should still be checked for +these methods as they will indicate IO failures like when the underlying +connection closes. + +# Asynchronous Events + +Clients of this library may be interested in receiving some of the protocol +messages other than Deliveries like basic.ack methods while a channel is in +confirm mode. + +The Notify* methods with Connection and Channel receivers model the pattern of +asynchronous events like closes due to exceptions, or messages that are sent out +of band from an RPC call like basic.ack or basic.flow. + +Any asynchronous events, including Deliveries and Publishings must always have +a receiver until the corresponding chans are closed. Without asynchronous +receivers, the synchronous methods will block. + +# Use Case + +It's important as a client to an AMQP topology to ensure the state of the +broker matches your expectations. For both publish and consume use cases, +make sure you declare the queues, exchanges and bindings you expect to exist +prior to calling [Channel.PublishWithContext] or [Channel.Consume]. + + // Connections start with amqp.Dial() typically from a command line argument + // or environment variable. + connection, err := amqp.Dial(os.Getenv("AMQP_URL")) + + // To cleanly shutdown by flushing kernel buffers, make sure to close and + // wait for the response. + defer connection.Close() + + // Most operations happen on a channel. If any error is returned on a + // channel, the channel will no longer be valid, throw it away and try with + // a different channel. If you use many channels, it's useful for the + // server to + channel, err := connection.Channel() + + // Declare your topology here, if it doesn't exist, it will be created, if + // it existed already and is not what you expect, then that's considered an + // error. + + // Use your connection on this topology with either Publish or Consume, or + // inspect your queues with QueueInspect. It's unwise to mix Publish and + // Consume to let TCP do its job well. + +# SSL/TLS - Secure connections + +When Dial encounters an amqps:// scheme, it will use the zero value of a +tls.Config. This will only perform server certificate and host verification. + +Use DialTLS when you wish to provide a client certificate (recommended), include +a private certificate authority's certificate in the cert chain for server +validity, or run insecure by not verifying the server certificate. DialTLS will +use the provided tls.Config when it encounters an amqps:// scheme and will dial +a plain connection when it encounters an amqp:// scheme. + +SSL/TLS in RabbitMQ is documented here: http://www.rabbitmq.com/ssl.html + +# Best practises for Connection and Channel notifications: + +In order to be notified when a connection or channel gets closed, both +structures offer the possibility to register channels using +[Channel.NotifyClose] and [Connection.NotifyClose] functions: + + notifyConnCloseCh := conn.NotifyClose(make(chan *amqp.Error, 1)) + +No errors will be sent in case of a graceful connection close. In case of a +non-graceful closure due to e.g. network issue, or forced connection closure +from the Management UI, the error will be notified synchronously by the library. + +The library sends to notification channels just once. After sending a +notification to all channels, the library closes all registered notification +channels. After receiving a notification, the application should create and +register a new channel. To avoid deadlocks in the library, it is necessary to +consume from the channels. This could be done inside a different goroutine with +a select listening on the two channels inside a for loop like: + + go func() { + for notifyConnClose != nil || notifyChanClose != nil { + select { + case err, ok := <-notifyConnClose: + if !ok { + notifyConnClose = nil + } else { + fmt.Printf("connection closed, error %s", err) + } + case err, ok := <-notifyChanClose: + if !ok { + notifyChanClose = nil + } else { + fmt.Printf("channel closed, error %s", err) + } + } + } + }() + +It is strongly recommended to use buffered channels to avoid deadlocks inside +the library. + +# Best practises for NotifyPublish notifications: + +Using [Channel.NotifyPublish] allows the caller of the library to be notified, +through a go channel, when a message has been received and confirmed by the +broker. It's advisable to wait for all Confirmations to arrive before calling +[Channel.Close] or [Connection.Close]. It is also necessary to consume from this +channel until it gets closed. The library sends synchronously to the registered channel. +It is advisable to use a buffered channel, with capacity set to the maximum acceptable +number of unconfirmed messages. + +It is important to consume from the confirmation channel at all times, in order to avoid +deadlocks in the library. +*/ +package amqp091 diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go new file mode 100644 index 0000000..c9f03ea --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go @@ -0,0 +1,23 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gofuzz +// +build gofuzz + +package amqp091 + +import "bytes" + +func Fuzz(data []byte) int { + r := reader{bytes.NewReader(data)} + frame, err := r.ReadFrame() + if err != nil { + if frame != nil { + panic("frame is not nil") + } + return 0 + } + return 1 +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 new file mode 100644 index 0000000..c933543 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 @@ -0,0 +1,14 @@ +$DebugPreference = 'Continue' +$ErrorActionPreference = 'Stop' + +Set-PSDebug -Off +Set-StrictMode -Version 'Latest' -ErrorAction 'Stop' -Verbose + +New-Variable -Name curdir -Option Constant -Value $PSScriptRoot + +$specDir = Resolve-Path -LiteralPath (Join-Path -Path $curdir -ChildPath 'spec') +$amqpSpecXml = Resolve-Path -LiteralPath (Join-Path -Path $specDir -ChildPath 'amqp0-9-1.stripped.extended.xml') +$gen = Resolve-Path -LiteralPath (Join-Path -Path $specDir -ChildPath 'gen.go') +$spec091 = Resolve-Path -LiteralPath (Join-Path -Path $curdir -ChildPath 'spec091.go') + +Get-Content -LiteralPath $amqpSpecXml | go run $gen | gofmt | Set-Content -Force -Path $spec091 diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh new file mode 100644 index 0000000..d46e19b --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh @@ -0,0 +1,2 @@ +#!/bin/sh +go run spec/gen.go < spec/amqp0-9-1.stripped.extended.xml | gofmt > spec091.go diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go new file mode 100644 index 0000000..7540f13 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go @@ -0,0 +1,23 @@ +// Copyright (c) 2022 VMware, Inc. or its affiliates. All Rights Reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +type Logging interface { + Printf(format string, v ...interface{}) +} + +var Logger Logging = NullLogger{} + +// Enables logging using a custom Logging instance. Note that this is +// not thread safe and should be called at application start +func SetLogger(logger Logging) { + Logger = logger +} + +type NullLogger struct { +} + +func (l NullLogger) Printf(format string, v ...interface{}) { +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go new file mode 100644 index 0000000..a8bed13 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go @@ -0,0 +1,450 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bytes" + "encoding/binary" + "errors" + "io" + "time" +) + +/* +ReadFrame reads a frame from an input stream and returns an interface that can be cast into +one of the following: + + methodFrame + PropertiesFrame + bodyFrame + heartbeatFrame + +2.3.5 frame Details + +All frames consist of a header (7 octets), a payload of arbitrary size, and a +'frame-end' octet that detects malformed frames: + + 0 1 3 7 size+7 size+8 + +------+---------+-------------+ +------------+ +-----------+ + | type | channel | size | | payload | | frame-end | + +------+---------+-------------+ +------------+ +-----------+ + octet short long size octets octet + +To read a frame, we: + 1. Read the header and check the frame type and channel. + 2. Depending on the frame type, we read the payload and process it. + 3. Read the frame end octet. + +In realistic implementations where performance is a concern, we would use +“read-ahead buffering” or + +“gathering reads” to avoid doing three separate system calls to read a frame. +*/ +func (r *reader) ReadFrame() (frame frame, err error) { + var scratch [7]byte + + if _, err = io.ReadFull(r.r, scratch[:7]); err != nil { + return + } + + typ := scratch[0] + channel := binary.BigEndian.Uint16(scratch[1:3]) + size := binary.BigEndian.Uint32(scratch[3:7]) + + switch typ { + case frameMethod: + if frame, err = r.parseMethodFrame(channel, size); err != nil { + return + } + + case frameHeader: + if frame, err = r.parseHeaderFrame(channel, size); err != nil { + return + } + + case frameBody: + if frame, err = r.parseBodyFrame(channel, size); err != nil { + return nil, err + } + + case frameHeartbeat: + if frame, err = r.parseHeartbeatFrame(channel, size); err != nil { + return + } + + default: + return nil, ErrFrame + } + + if _, err = io.ReadFull(r.r, scratch[:1]); err != nil { + return nil, err + } + + if scratch[0] != frameEnd { + return nil, ErrFrame + } + + return +} + +func readShortstr(r io.Reader) (v string, err error) { + var length uint8 + if err = binary.Read(r, binary.BigEndian, &length); err != nil { + return + } + + bytes := make([]byte, length) + if _, err = io.ReadFull(r, bytes); err != nil { + return + } + return string(bytes), nil +} + +func readLongstr(r io.Reader) (v string, err error) { + var length uint32 + if err = binary.Read(r, binary.BigEndian, &length); err != nil { + return + } + + // slices can't be longer than max int32 value + if length > (^uint32(0) >> 1) { + return + } + + bytes := make([]byte, length) + if _, err = io.ReadFull(r, bytes); err != nil { + return + } + return string(bytes), nil +} + +func readDecimal(r io.Reader) (v Decimal, err error) { + if err = binary.Read(r, binary.BigEndian, &v.Scale); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &v.Value); err != nil { + return + } + return +} + +func readTimestamp(r io.Reader) (v time.Time, err error) { + var sec int64 + if err = binary.Read(r, binary.BigEndian, &sec); err != nil { + return + } + return time.Unix(sec, 0), nil +} + +/* +'A': []interface{} +'D': Decimal +'F': Table +'I': int32 +'S': string +'T': time.Time +'V': nil +'b': int8 +'B': byte +'d': float64 +'f': float32 +'l': int64 +'s': int16 +'t': bool +'x': []byte +*/ +func readField(r io.Reader) (v interface{}, err error) { + var typ byte + if err = binary.Read(r, binary.BigEndian, &typ); err != nil { + return + } + + switch typ { + case 't': + var value uint8 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value != 0, nil + + case 'B': + var value [1]byte + if _, err = io.ReadFull(r, value[0:1]); err != nil { + return + } + return value[0], nil + + case 'b': + var value int8 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 's': + var value int16 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'I': + var value int32 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'l': + var value int64 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'f': + var value float32 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'd': + var value float64 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'D': + return readDecimal(r) + + case 'S': + return readLongstr(r) + + case 'A': + return readArray(r) + + case 'T': + return readTimestamp(r) + + case 'F': + return readTable(r) + + case 'x': + var len int32 + if err = binary.Read(r, binary.BigEndian, &len); err != nil { + return nil, err + } + + value := make([]byte, len) + if _, err = io.ReadFull(r, value); err != nil { + return nil, err + } + return value, err + + case 'V': + return nil, nil + } + + return nil, ErrSyntax +} + +/* +Field tables are long strings that contain packed name-value pairs. The +name-value pairs are encoded as short string defining the name, and octet +defining the values type and then the value itself. The valid field types for +tables are an extension of the native integer, bit, string, and timestamp +types, and are shown in the grammar. Multi-octet integer fields are always +held in network byte order. +*/ +func readTable(r io.Reader) (table Table, err error) { + var nested bytes.Buffer + var str string + + if str, err = readLongstr(r); err != nil { + return + } + + nested.Write([]byte(str)) + + table = make(Table) + + for nested.Len() > 0 { + var key string + var value interface{} + + if key, err = readShortstr(&nested); err != nil { + return + } + + if value, err = readField(&nested); err != nil { + return + } + + table[key] = value + } + + return +} + +func readArray(r io.Reader) ([]interface{}, error) { + var ( + size uint32 + err error + ) + + if err = binary.Read(r, binary.BigEndian, &size); err != nil { + return nil, err + } + + var ( + lim = &io.LimitedReader{R: r, N: int64(size)} + arr []interface{} + field interface{} + ) + + for { + if field, err = readField(lim); err != nil { + if err == io.EOF { + break + } + return nil, err + } + arr = append(arr, field) + } + + return arr, nil +} + +// Checks if this bit mask matches the flags bitset +func hasProperty(mask uint16, prop int) bool { + return int(mask)&prop > 0 +} + +func (r *reader) parseHeaderFrame(channel uint16, size uint32) (frame frame, err error) { + hf := &headerFrame{ + ChannelId: channel, + } + + if err = binary.Read(r.r, binary.BigEndian, &hf.ClassId); err != nil { + return + } + + if err = binary.Read(r.r, binary.BigEndian, &hf.weight); err != nil { + return + } + + if err = binary.Read(r.r, binary.BigEndian, &hf.Size); err != nil { + return + } + + var flags uint16 + + if err = binary.Read(r.r, binary.BigEndian, &flags); err != nil { + return + } + + if hasProperty(flags, flagContentType) { + if hf.Properties.ContentType, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagContentEncoding) { + if hf.Properties.ContentEncoding, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagHeaders) { + if hf.Properties.Headers, err = readTable(r.r); err != nil { + return + } + } + if hasProperty(flags, flagDeliveryMode) { + if err = binary.Read(r.r, binary.BigEndian, &hf.Properties.DeliveryMode); err != nil { + return + } + } + if hasProperty(flags, flagPriority) { + if err = binary.Read(r.r, binary.BigEndian, &hf.Properties.Priority); err != nil { + return + } + } + if hasProperty(flags, flagCorrelationId) { + if hf.Properties.CorrelationId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagReplyTo) { + if hf.Properties.ReplyTo, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagExpiration) { + if hf.Properties.Expiration, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagMessageId) { + if hf.Properties.MessageId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagTimestamp) { + if hf.Properties.Timestamp, err = readTimestamp(r.r); err != nil { + return + } + } + if hasProperty(flags, flagType) { + if hf.Properties.Type, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagUserId) { + if hf.Properties.UserId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagAppId) { + if hf.Properties.AppId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagReserved1) { + if hf.Properties.reserved1, err = readShortstr(r.r); err != nil { + return + } + } + + return hf, nil +} + +func (r *reader) parseBodyFrame(channel uint16, size uint32) (frame frame, err error) { + bf := &bodyFrame{ + ChannelId: channel, + Body: make([]byte, size), + } + + if _, err = io.ReadFull(r.r, bf.Body); err != nil { + return nil, err + } + + return bf, nil +} + +var errHeartbeatPayload = errors.New("Heartbeats should not have a payload") + +func (r *reader) parseHeartbeatFrame(channel uint16, size uint32) (frame frame, err error) { + hf := &heartbeatFrame{ + ChannelId: channel, + } + + if size > 0 { + return nil, errHeartbeatPayload + } + + return hf, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go new file mode 100644 index 0000000..cdc3875 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go @@ -0,0 +1,64 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "time" +) + +// Return captures a flattened struct of fields returned by the server when a +// Publishing is unable to be delivered either due to the `mandatory` flag set +// and no route found, or `immediate` flag set and no free consumer. +type Return struct { + ReplyCode uint16 // reason + ReplyText string // description + Exchange string // basic.publish exchange + RoutingKey string // basic.publish routing key + + // Properties + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + Headers Table // Application or header exchange table + DeliveryMode uint8 // queue implementation use - non-persistent (1) or persistent (2) + Priority uint8 // queue implementation use - 0 to 9 + CorrelationId string // application use - correlation identifier + ReplyTo string // application use - address to to reply to (ex: RPC) + Expiration string // implementation use - message expiration spec + MessageId string // application use - message identifier + Timestamp time.Time // application use - message timestamp + Type string // application use - message type name + UserId string // application use - creating user id + AppId string // application use - creating application + + Body []byte +} + +func newReturn(msg basicReturn) *Return { + props, body := msg.getContent() + + return &Return{ + ReplyCode: msg.ReplyCode, + ReplyText: msg.ReplyText, + Exchange: msg.Exchange, + RoutingKey: msg.RoutingKey, + + Headers: props.Headers, + ContentType: props.ContentType, + ContentEncoding: props.ContentEncoding, + DeliveryMode: props.DeliveryMode, + Priority: props.Priority, + CorrelationId: props.CorrelationId, + ReplyTo: props.ReplyTo, + Expiration: props.Expiration, + MessageId: props.MessageId, + Timestamp: props.Timestamp, + Type: props.Type, + UserId: props.UserId, + AppId: props.AppId, + + Body: body, + } +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go new file mode 100644 index 0000000..6e02ba9 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go @@ -0,0 +1,3382 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* GENERATED FILE - DO NOT EDIT */ +/* Rebuild from the spec/gen.go tool */ + +package amqp091 + +import ( + "encoding/binary" + "fmt" + "io" +) + +// Error codes that can be sent from the server during a connection or +// channel exception or used by the client to indicate a class of error like +// ErrCredentials. The text of the error is likely more interesting than +// these constants. +const ( + frameMethod = 1 + frameHeader = 2 + frameBody = 3 + frameHeartbeat = 8 + frameMinSize = 4096 + frameEnd = 206 + replySuccess = 200 + ContentTooLarge = 311 + NoRoute = 312 + NoConsumers = 313 + ConnectionForced = 320 + InvalidPath = 402 + AccessRefused = 403 + NotFound = 404 + ResourceLocked = 405 + PreconditionFailed = 406 + FrameError = 501 + SyntaxError = 502 + CommandInvalid = 503 + ChannelError = 504 + UnexpectedFrame = 505 + ResourceError = 506 + NotAllowed = 530 + NotImplemented = 540 + InternalError = 541 +) + +func isSoftExceptionCode(code int) bool { + switch code { + case 311: + return true + case 312: + return true + case 313: + return true + case 403: + return true + case 404: + return true + case 405: + return true + case 406: + return true + + } + return false +} + +type connectionStart struct { + VersionMajor byte + VersionMinor byte + ServerProperties Table + Mechanisms string + Locales string +} + +func (msg *connectionStart) id() (uint16, uint16) { + return 10, 10 +} + +func (msg *connectionStart) wait() bool { + return true +} + +func (msg *connectionStart) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.VersionMajor); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.VersionMinor); err != nil { + return + } + + if err = writeTable(w, msg.ServerProperties); err != nil { + return + } + + if err = writeLongstr(w, msg.Mechanisms); err != nil { + return + } + if err = writeLongstr(w, msg.Locales); err != nil { + return + } + + return +} + +func (msg *connectionStart) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.VersionMajor); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.VersionMinor); err != nil { + return + } + + if msg.ServerProperties, err = readTable(r); err != nil { + return + } + + if msg.Mechanisms, err = readLongstr(r); err != nil { + return + } + if msg.Locales, err = readLongstr(r); err != nil { + return + } + + return +} + +type connectionStartOk struct { + ClientProperties Table + Mechanism string + Response string + Locale string +} + +func (msg *connectionStartOk) id() (uint16, uint16) { + return 10, 11 +} + +func (msg *connectionStartOk) wait() bool { + return true +} + +func (msg *connectionStartOk) write(w io.Writer) (err error) { + + if err = writeTable(w, msg.ClientProperties); err != nil { + return + } + + if err = writeShortstr(w, msg.Mechanism); err != nil { + return + } + + if err = writeLongstr(w, msg.Response); err != nil { + return + } + + if err = writeShortstr(w, msg.Locale); err != nil { + return + } + + return +} + +func (msg *connectionStartOk) read(r io.Reader) (err error) { + + if msg.ClientProperties, err = readTable(r); err != nil { + return + } + + if msg.Mechanism, err = readShortstr(r); err != nil { + return + } + + if msg.Response, err = readLongstr(r); err != nil { + return + } + + if msg.Locale, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionSecure struct { + Challenge string +} + +func (msg *connectionSecure) id() (uint16, uint16) { + return 10, 20 +} + +func (msg *connectionSecure) wait() bool { + return true +} + +func (msg *connectionSecure) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.Challenge); err != nil { + return + } + + return +} + +func (msg *connectionSecure) read(r io.Reader) (err error) { + + if msg.Challenge, err = readLongstr(r); err != nil { + return + } + + return +} + +type connectionSecureOk struct { + Response string +} + +func (msg *connectionSecureOk) id() (uint16, uint16) { + return 10, 21 +} + +func (msg *connectionSecureOk) wait() bool { + return true +} + +func (msg *connectionSecureOk) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.Response); err != nil { + return + } + + return +} + +func (msg *connectionSecureOk) read(r io.Reader) (err error) { + + if msg.Response, err = readLongstr(r); err != nil { + return + } + + return +} + +type connectionTune struct { + ChannelMax uint16 + FrameMax uint32 + Heartbeat uint16 +} + +func (msg *connectionTune) id() (uint16, uint16) { + return 10, 30 +} + +func (msg *connectionTune) wait() bool { + return true +} + +func (msg *connectionTune) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ChannelMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.FrameMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.Heartbeat); err != nil { + return + } + + return +} + +func (msg *connectionTune) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ChannelMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.FrameMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.Heartbeat); err != nil { + return + } + + return +} + +type connectionTuneOk struct { + ChannelMax uint16 + FrameMax uint32 + Heartbeat uint16 +} + +func (msg *connectionTuneOk) id() (uint16, uint16) { + return 10, 31 +} + +func (msg *connectionTuneOk) wait() bool { + return true +} + +func (msg *connectionTuneOk) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ChannelMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.FrameMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.Heartbeat); err != nil { + return + } + + return +} + +func (msg *connectionTuneOk) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ChannelMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.FrameMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.Heartbeat); err != nil { + return + } + + return +} + +type connectionOpen struct { + VirtualHost string + reserved1 string + reserved2 bool +} + +func (msg *connectionOpen) id() (uint16, uint16) { + return 10, 40 +} + +func (msg *connectionOpen) wait() bool { + return true +} + +func (msg *connectionOpen) write(w io.Writer) (err error) { + var bits byte + + if err = writeShortstr(w, msg.VirtualHost); err != nil { + return + } + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + if msg.reserved2 { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *connectionOpen) read(r io.Reader) (err error) { + var bits byte + + if msg.VirtualHost, err = readShortstr(r); err != nil { + return + } + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.reserved2 = (bits&(1<<0) > 0) + + return +} + +type connectionOpenOk struct { + reserved1 string +} + +func (msg *connectionOpenOk) id() (uint16, uint16) { + return 10, 41 +} + +func (msg *connectionOpenOk) wait() bool { + return true +} + +func (msg *connectionOpenOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *connectionOpenOk) read(r io.Reader) (err error) { + + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionClose struct { + ReplyCode uint16 + ReplyText string + ClassId uint16 + MethodId uint16 +} + +func (msg *connectionClose) id() (uint16, uint16) { + return 10, 50 +} + +func (msg *connectionClose) wait() bool { + return true +} + +func (msg *connectionClose) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ReplyCode); err != nil { + return + } + + if err = writeShortstr(w, msg.ReplyText); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.ClassId); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.MethodId); err != nil { + return + } + + return +} + +func (msg *connectionClose) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ReplyCode); err != nil { + return + } + + if msg.ReplyText, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.ClassId); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.MethodId); err != nil { + return + } + + return +} + +type connectionCloseOk struct { +} + +func (msg *connectionCloseOk) id() (uint16, uint16) { + return 10, 51 +} + +func (msg *connectionCloseOk) wait() bool { + return true +} + +func (msg *connectionCloseOk) write(w io.Writer) (err error) { + + return +} + +func (msg *connectionCloseOk) read(r io.Reader) (err error) { + + return +} + +type connectionBlocked struct { + Reason string +} + +func (msg *connectionBlocked) id() (uint16, uint16) { + return 10, 60 +} + +func (msg *connectionBlocked) wait() bool { + return false +} + +func (msg *connectionBlocked) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.Reason); err != nil { + return + } + + return +} + +func (msg *connectionBlocked) read(r io.Reader) (err error) { + + if msg.Reason, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionUnblocked struct { +} + +func (msg *connectionUnblocked) id() (uint16, uint16) { + return 10, 61 +} + +func (msg *connectionUnblocked) wait() bool { + return false +} + +func (msg *connectionUnblocked) write(w io.Writer) (err error) { + + return +} + +func (msg *connectionUnblocked) read(r io.Reader) (err error) { + + return +} + +type connectionUpdateSecret struct { + NewSecret string + Reason string +} + +func (msg *connectionUpdateSecret) id() (uint16, uint16) { + return 10, 70 +} + +func (msg *connectionUpdateSecret) wait() bool { + return true +} + +func (msg *connectionUpdateSecret) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.NewSecret); err != nil { + return + } + + if err = writeShortstr(w, msg.Reason); err != nil { + return + } + + return +} + +func (msg *connectionUpdateSecret) read(r io.Reader) (err error) { + + if msg.NewSecret, err = readLongstr(r); err != nil { + return + } + + if msg.Reason, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionUpdateSecretOk struct { +} + +func (msg *connectionUpdateSecretOk) id() (uint16, uint16) { + return 10, 71 +} + +func (msg *connectionUpdateSecretOk) wait() bool { + return true +} + +func (msg *connectionUpdateSecretOk) write(w io.Writer) (err error) { + + return +} + +func (msg *connectionUpdateSecretOk) read(r io.Reader) (err error) { + + return +} + +type channelOpen struct { + reserved1 string +} + +func (msg *channelOpen) id() (uint16, uint16) { + return 20, 10 +} + +func (msg *channelOpen) wait() bool { + return true +} + +func (msg *channelOpen) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *channelOpen) read(r io.Reader) (err error) { + + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + return +} + +type channelOpenOk struct { + reserved1 string +} + +func (msg *channelOpenOk) id() (uint16, uint16) { + return 20, 11 +} + +func (msg *channelOpenOk) wait() bool { + return true +} + +func (msg *channelOpenOk) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *channelOpenOk) read(r io.Reader) (err error) { + + if msg.reserved1, err = readLongstr(r); err != nil { + return + } + + return +} + +type channelFlow struct { + Active bool +} + +func (msg *channelFlow) id() (uint16, uint16) { + return 20, 20 +} + +func (msg *channelFlow) wait() bool { + return true +} + +func (msg *channelFlow) write(w io.Writer) (err error) { + var bits byte + + if msg.Active { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *channelFlow) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Active = (bits&(1<<0) > 0) + + return +} + +type channelFlowOk struct { + Active bool +} + +func (msg *channelFlowOk) id() (uint16, uint16) { + return 20, 21 +} + +func (msg *channelFlowOk) wait() bool { + return false +} + +func (msg *channelFlowOk) write(w io.Writer) (err error) { + var bits byte + + if msg.Active { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *channelFlowOk) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Active = (bits&(1<<0) > 0) + + return +} + +type channelClose struct { + ReplyCode uint16 + ReplyText string + ClassId uint16 + MethodId uint16 +} + +func (msg *channelClose) id() (uint16, uint16) { + return 20, 40 +} + +func (msg *channelClose) wait() bool { + return true +} + +func (msg *channelClose) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ReplyCode); err != nil { + return + } + + if err = writeShortstr(w, msg.ReplyText); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.ClassId); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.MethodId); err != nil { + return + } + + return +} + +func (msg *channelClose) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ReplyCode); err != nil { + return + } + + if msg.ReplyText, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.ClassId); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.MethodId); err != nil { + return + } + + return +} + +type channelCloseOk struct { +} + +func (msg *channelCloseOk) id() (uint16, uint16) { + return 20, 41 +} + +func (msg *channelCloseOk) wait() bool { + return true +} + +func (msg *channelCloseOk) write(w io.Writer) (err error) { + + return +} + +func (msg *channelCloseOk) read(r io.Reader) (err error) { + + return +} + +type exchangeDeclare struct { + reserved1 uint16 + Exchange string + Type string + Passive bool + Durable bool + AutoDelete bool + Internal bool + NoWait bool + Arguments Table +} + +func (msg *exchangeDeclare) id() (uint16, uint16) { + return 40, 10 +} + +func (msg *exchangeDeclare) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeDeclare) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.Type); err != nil { + return + } + + if msg.Passive { + bits |= 1 << 0 + } + + if msg.Durable { + bits |= 1 << 1 + } + + if msg.AutoDelete { + bits |= 1 << 2 + } + + if msg.Internal { + bits |= 1 << 3 + } + + if msg.NoWait { + bits |= 1 << 4 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *exchangeDeclare) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.Type, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Passive = (bits&(1<<0) > 0) + msg.Durable = (bits&(1<<1) > 0) + msg.AutoDelete = (bits&(1<<2) > 0) + msg.Internal = (bits&(1<<3) > 0) + msg.NoWait = (bits&(1<<4) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type exchangeDeclareOk struct { +} + +func (msg *exchangeDeclareOk) id() (uint16, uint16) { + return 40, 11 +} + +func (msg *exchangeDeclareOk) wait() bool { + return true +} + +func (msg *exchangeDeclareOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeDeclareOk) read(r io.Reader) (err error) { + + return +} + +type exchangeDelete struct { + reserved1 uint16 + Exchange string + IfUnused bool + NoWait bool +} + +func (msg *exchangeDelete) id() (uint16, uint16) { + return 40, 20 +} + +func (msg *exchangeDelete) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeDelete) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + + if msg.IfUnused { + bits |= 1 << 0 + } + + if msg.NoWait { + bits |= 1 << 1 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *exchangeDelete) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.IfUnused = (bits&(1<<0) > 0) + msg.NoWait = (bits&(1<<1) > 0) + + return +} + +type exchangeDeleteOk struct { +} + +func (msg *exchangeDeleteOk) id() (uint16, uint16) { + return 40, 21 +} + +func (msg *exchangeDeleteOk) wait() bool { + return true +} + +func (msg *exchangeDeleteOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeDeleteOk) read(r io.Reader) (err error) { + + return +} + +type exchangeBind struct { + reserved1 uint16 + Destination string + Source string + RoutingKey string + NoWait bool + Arguments Table +} + +func (msg *exchangeBind) id() (uint16, uint16) { + return 40, 30 +} + +func (msg *exchangeBind) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeBind) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Destination); err != nil { + return + } + if err = writeShortstr(w, msg.Source); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *exchangeBind) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Destination, err = readShortstr(r); err != nil { + return + } + if msg.Source, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type exchangeBindOk struct { +} + +func (msg *exchangeBindOk) id() (uint16, uint16) { + return 40, 31 +} + +func (msg *exchangeBindOk) wait() bool { + return true +} + +func (msg *exchangeBindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeBindOk) read(r io.Reader) (err error) { + + return +} + +type exchangeUnbind struct { + reserved1 uint16 + Destination string + Source string + RoutingKey string + NoWait bool + Arguments Table +} + +func (msg *exchangeUnbind) id() (uint16, uint16) { + return 40, 40 +} + +func (msg *exchangeUnbind) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeUnbind) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Destination); err != nil { + return + } + if err = writeShortstr(w, msg.Source); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *exchangeUnbind) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Destination, err = readShortstr(r); err != nil { + return + } + if msg.Source, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type exchangeUnbindOk struct { +} + +func (msg *exchangeUnbindOk) id() (uint16, uint16) { + return 40, 51 +} + +func (msg *exchangeUnbindOk) wait() bool { + return true +} + +func (msg *exchangeUnbindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeUnbindOk) read(r io.Reader) (err error) { + + return +} + +type queueDeclare struct { + reserved1 uint16 + Queue string + Passive bool + Durable bool + Exclusive bool + AutoDelete bool + NoWait bool + Arguments Table +} + +func (msg *queueDeclare) id() (uint16, uint16) { + return 50, 10 +} + +func (msg *queueDeclare) wait() bool { + return true && !msg.NoWait +} + +func (msg *queueDeclare) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.Passive { + bits |= 1 << 0 + } + + if msg.Durable { + bits |= 1 << 1 + } + + if msg.Exclusive { + bits |= 1 << 2 + } + + if msg.AutoDelete { + bits |= 1 << 3 + } + + if msg.NoWait { + bits |= 1 << 4 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *queueDeclare) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Passive = (bits&(1<<0) > 0) + msg.Durable = (bits&(1<<1) > 0) + msg.Exclusive = (bits&(1<<2) > 0) + msg.AutoDelete = (bits&(1<<3) > 0) + msg.NoWait = (bits&(1<<4) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type queueDeclareOk struct { + Queue string + MessageCount uint32 + ConsumerCount uint32 +} + +func (msg *queueDeclareOk) id() (uint16, uint16) { + return 50, 11 +} + +func (msg *queueDeclareOk) wait() bool { + return true +} + +func (msg *queueDeclareOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.ConsumerCount); err != nil { + return + } + + return +} + +func (msg *queueDeclareOk) read(r io.Reader) (err error) { + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.ConsumerCount); err != nil { + return + } + + return +} + +type queueBind struct { + reserved1 uint16 + Queue string + Exchange string + RoutingKey string + NoWait bool + Arguments Table +} + +func (msg *queueBind) id() (uint16, uint16) { + return 50, 20 +} + +func (msg *queueBind) wait() bool { + return true && !msg.NoWait +} + +func (msg *queueBind) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *queueBind) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type queueBindOk struct { +} + +func (msg *queueBindOk) id() (uint16, uint16) { + return 50, 21 +} + +func (msg *queueBindOk) wait() bool { + return true +} + +func (msg *queueBindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *queueBindOk) read(r io.Reader) (err error) { + + return +} + +type queueUnbind struct { + reserved1 uint16 + Queue string + Exchange string + RoutingKey string + Arguments Table +} + +func (msg *queueUnbind) id() (uint16, uint16) { + return 50, 50 +} + +func (msg *queueUnbind) wait() bool { + return true +} + +func (msg *queueUnbind) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *queueUnbind) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type queueUnbindOk struct { +} + +func (msg *queueUnbindOk) id() (uint16, uint16) { + return 50, 51 +} + +func (msg *queueUnbindOk) wait() bool { + return true +} + +func (msg *queueUnbindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *queueUnbindOk) read(r io.Reader) (err error) { + + return +} + +type queuePurge struct { + reserved1 uint16 + Queue string + NoWait bool +} + +func (msg *queuePurge) id() (uint16, uint16) { + return 50, 30 +} + +func (msg *queuePurge) wait() bool { + return true && !msg.NoWait +} + +func (msg *queuePurge) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *queuePurge) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + return +} + +type queuePurgeOk struct { + MessageCount uint32 +} + +func (msg *queuePurgeOk) id() (uint16, uint16) { + return 50, 31 +} + +func (msg *queuePurgeOk) wait() bool { + return true +} + +func (msg *queuePurgeOk) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + + return +} + +func (msg *queuePurgeOk) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + + return +} + +type queueDelete struct { + reserved1 uint16 + Queue string + IfUnused bool + IfEmpty bool + NoWait bool +} + +func (msg *queueDelete) id() (uint16, uint16) { + return 50, 40 +} + +func (msg *queueDelete) wait() bool { + return true && !msg.NoWait +} + +func (msg *queueDelete) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.IfUnused { + bits |= 1 << 0 + } + + if msg.IfEmpty { + bits |= 1 << 1 + } + + if msg.NoWait { + bits |= 1 << 2 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *queueDelete) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.IfUnused = (bits&(1<<0) > 0) + msg.IfEmpty = (bits&(1<<1) > 0) + msg.NoWait = (bits&(1<<2) > 0) + + return +} + +type queueDeleteOk struct { + MessageCount uint32 +} + +func (msg *queueDeleteOk) id() (uint16, uint16) { + return 50, 41 +} + +func (msg *queueDeleteOk) wait() bool { + return true +} + +func (msg *queueDeleteOk) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + + return +} + +func (msg *queueDeleteOk) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + + return +} + +type basicQos struct { + PrefetchSize uint32 + PrefetchCount uint16 + Global bool +} + +func (msg *basicQos) id() (uint16, uint16) { + return 60, 10 +} + +func (msg *basicQos) wait() bool { + return true +} + +func (msg *basicQos) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.PrefetchSize); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.PrefetchCount); err != nil { + return + } + + if msg.Global { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicQos) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.PrefetchSize); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.PrefetchCount); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Global = (bits&(1<<0) > 0) + + return +} + +type basicQosOk struct { +} + +func (msg *basicQosOk) id() (uint16, uint16) { + return 60, 11 +} + +func (msg *basicQosOk) wait() bool { + return true +} + +func (msg *basicQosOk) write(w io.Writer) (err error) { + + return +} + +func (msg *basicQosOk) read(r io.Reader) (err error) { + + return +} + +type basicConsume struct { + reserved1 uint16 + Queue string + ConsumerTag string + NoLocal bool + NoAck bool + Exclusive bool + NoWait bool + Arguments Table +} + +func (msg *basicConsume) id() (uint16, uint16) { + return 60, 20 +} + +func (msg *basicConsume) wait() bool { + return true && !msg.NoWait +} + +func (msg *basicConsume) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + if msg.NoLocal { + bits |= 1 << 0 + } + + if msg.NoAck { + bits |= 1 << 1 + } + + if msg.Exclusive { + bits |= 1 << 2 + } + + if msg.NoWait { + bits |= 1 << 3 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *basicConsume) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoLocal = (bits&(1<<0) > 0) + msg.NoAck = (bits&(1<<1) > 0) + msg.Exclusive = (bits&(1<<2) > 0) + msg.NoWait = (bits&(1<<3) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type basicConsumeOk struct { + ConsumerTag string +} + +func (msg *basicConsumeOk) id() (uint16, uint16) { + return 60, 21 +} + +func (msg *basicConsumeOk) wait() bool { + return true +} + +func (msg *basicConsumeOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + return +} + +func (msg *basicConsumeOk) read(r io.Reader) (err error) { + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicCancel struct { + ConsumerTag string + NoWait bool +} + +func (msg *basicCancel) id() (uint16, uint16) { + return 60, 30 +} + +func (msg *basicCancel) wait() bool { + return true && !msg.NoWait +} + +func (msg *basicCancel) write(w io.Writer) (err error) { + var bits byte + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicCancel) read(r io.Reader) (err error) { + var bits byte + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + return +} + +type basicCancelOk struct { + ConsumerTag string +} + +func (msg *basicCancelOk) id() (uint16, uint16) { + return 60, 31 +} + +func (msg *basicCancelOk) wait() bool { + return true +} + +func (msg *basicCancelOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + return +} + +func (msg *basicCancelOk) read(r io.Reader) (err error) { + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicPublish struct { + reserved1 uint16 + Exchange string + RoutingKey string + Mandatory bool + Immediate bool + Properties properties + Body []byte +} + +func (msg *basicPublish) id() (uint16, uint16) { + return 60, 40 +} + +func (msg *basicPublish) wait() bool { + return false +} + +func (msg *basicPublish) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicPublish) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicPublish) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.Mandatory { + bits |= 1 << 0 + } + + if msg.Immediate { + bits |= 1 << 1 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicPublish) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Mandatory = (bits&(1<<0) > 0) + msg.Immediate = (bits&(1<<1) > 0) + + return +} + +type basicReturn struct { + ReplyCode uint16 + ReplyText string + Exchange string + RoutingKey string + Properties properties + Body []byte +} + +func (msg *basicReturn) id() (uint16, uint16) { + return 60, 50 +} + +func (msg *basicReturn) wait() bool { + return false +} + +func (msg *basicReturn) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicReturn) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicReturn) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ReplyCode); err != nil { + return + } + + if err = writeShortstr(w, msg.ReplyText); err != nil { + return + } + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + return +} + +func (msg *basicReturn) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ReplyCode); err != nil { + return + } + + if msg.ReplyText, err = readShortstr(r); err != nil { + return + } + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicDeliver struct { + ConsumerTag string + DeliveryTag uint64 + Redelivered bool + Exchange string + RoutingKey string + Properties properties + Body []byte +} + +func (msg *basicDeliver) id() (uint16, uint16) { + return 60, 60 +} + +func (msg *basicDeliver) wait() bool { + return false +} + +func (msg *basicDeliver) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicDeliver) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicDeliver) write(w io.Writer) (err error) { + var bits byte + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Redelivered { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + return +} + +func (msg *basicDeliver) read(r io.Reader) (err error) { + var bits byte + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Redelivered = (bits&(1<<0) > 0) + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicGet struct { + reserved1 uint16 + Queue string + NoAck bool +} + +func (msg *basicGet) id() (uint16, uint16) { + return 60, 70 +} + +func (msg *basicGet) wait() bool { + return true +} + +func (msg *basicGet) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.NoAck { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicGet) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoAck = (bits&(1<<0) > 0) + + return +} + +type basicGetOk struct { + DeliveryTag uint64 + Redelivered bool + Exchange string + RoutingKey string + MessageCount uint32 + Properties properties + Body []byte +} + +func (msg *basicGetOk) id() (uint16, uint16) { + return 60, 71 +} + +func (msg *basicGetOk) wait() bool { + return true +} + +func (msg *basicGetOk) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicGetOk) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicGetOk) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Redelivered { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + + return +} + +func (msg *basicGetOk) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Redelivered = (bits&(1<<0) > 0) + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + + return +} + +type basicGetEmpty struct { + reserved1 string +} + +func (msg *basicGetEmpty) id() (uint16, uint16) { + return 60, 72 +} + +func (msg *basicGetEmpty) wait() bool { + return true +} + +func (msg *basicGetEmpty) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *basicGetEmpty) read(r io.Reader) (err error) { + + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicAck struct { + DeliveryTag uint64 + Multiple bool +} + +func (msg *basicAck) id() (uint16, uint16) { + return 60, 80 +} + +func (msg *basicAck) wait() bool { + return false +} + +func (msg *basicAck) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Multiple { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicAck) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Multiple = (bits&(1<<0) > 0) + + return +} + +type basicReject struct { + DeliveryTag uint64 + Requeue bool +} + +func (msg *basicReject) id() (uint16, uint16) { + return 60, 90 +} + +func (msg *basicReject) wait() bool { + return false +} + +func (msg *basicReject) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Requeue { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicReject) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Requeue = (bits&(1<<0) > 0) + + return +} + +type basicRecoverAsync struct { + Requeue bool +} + +func (msg *basicRecoverAsync) id() (uint16, uint16) { + return 60, 100 +} + +func (msg *basicRecoverAsync) wait() bool { + return false +} + +func (msg *basicRecoverAsync) write(w io.Writer) (err error) { + var bits byte + + if msg.Requeue { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicRecoverAsync) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Requeue = (bits&(1<<0) > 0) + + return +} + +type basicRecover struct { + Requeue bool +} + +func (msg *basicRecover) id() (uint16, uint16) { + return 60, 110 +} + +func (msg *basicRecover) wait() bool { + return true +} + +func (msg *basicRecover) write(w io.Writer) (err error) { + var bits byte + + if msg.Requeue { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicRecover) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Requeue = (bits&(1<<0) > 0) + + return +} + +type basicRecoverOk struct { +} + +func (msg *basicRecoverOk) id() (uint16, uint16) { + return 60, 111 +} + +func (msg *basicRecoverOk) wait() bool { + return true +} + +func (msg *basicRecoverOk) write(w io.Writer) (err error) { + + return +} + +func (msg *basicRecoverOk) read(r io.Reader) (err error) { + + return +} + +type basicNack struct { + DeliveryTag uint64 + Multiple bool + Requeue bool +} + +func (msg *basicNack) id() (uint16, uint16) { + return 60, 120 +} + +func (msg *basicNack) wait() bool { + return false +} + +func (msg *basicNack) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Multiple { + bits |= 1 << 0 + } + + if msg.Requeue { + bits |= 1 << 1 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicNack) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Multiple = (bits&(1<<0) > 0) + msg.Requeue = (bits&(1<<1) > 0) + + return +} + +type txSelect struct { +} + +func (msg *txSelect) id() (uint16, uint16) { + return 90, 10 +} + +func (msg *txSelect) wait() bool { + return true +} + +func (msg *txSelect) write(w io.Writer) (err error) { + + return +} + +func (msg *txSelect) read(r io.Reader) (err error) { + + return +} + +type txSelectOk struct { +} + +func (msg *txSelectOk) id() (uint16, uint16) { + return 90, 11 +} + +func (msg *txSelectOk) wait() bool { + return true +} + +func (msg *txSelectOk) write(w io.Writer) (err error) { + + return +} + +func (msg *txSelectOk) read(r io.Reader) (err error) { + + return +} + +type txCommit struct { +} + +func (msg *txCommit) id() (uint16, uint16) { + return 90, 20 +} + +func (msg *txCommit) wait() bool { + return true +} + +func (msg *txCommit) write(w io.Writer) (err error) { + + return +} + +func (msg *txCommit) read(r io.Reader) (err error) { + + return +} + +type txCommitOk struct { +} + +func (msg *txCommitOk) id() (uint16, uint16) { + return 90, 21 +} + +func (msg *txCommitOk) wait() bool { + return true +} + +func (msg *txCommitOk) write(w io.Writer) (err error) { + + return +} + +func (msg *txCommitOk) read(r io.Reader) (err error) { + + return +} + +type txRollback struct { +} + +func (msg *txRollback) id() (uint16, uint16) { + return 90, 30 +} + +func (msg *txRollback) wait() bool { + return true +} + +func (msg *txRollback) write(w io.Writer) (err error) { + + return +} + +func (msg *txRollback) read(r io.Reader) (err error) { + + return +} + +type txRollbackOk struct { +} + +func (msg *txRollbackOk) id() (uint16, uint16) { + return 90, 31 +} + +func (msg *txRollbackOk) wait() bool { + return true +} + +func (msg *txRollbackOk) write(w io.Writer) (err error) { + + return +} + +func (msg *txRollbackOk) read(r io.Reader) (err error) { + + return +} + +type confirmSelect struct { + Nowait bool +} + +func (msg *confirmSelect) id() (uint16, uint16) { + return 85, 10 +} + +func (msg *confirmSelect) wait() bool { + return true +} + +func (msg *confirmSelect) write(w io.Writer) (err error) { + var bits byte + + if msg.Nowait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *confirmSelect) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Nowait = (bits&(1<<0) > 0) + + return +} + +type confirmSelectOk struct { +} + +func (msg *confirmSelectOk) id() (uint16, uint16) { + return 85, 11 +} + +func (msg *confirmSelectOk) wait() bool { + return true +} + +func (msg *confirmSelectOk) write(w io.Writer) (err error) { + + return +} + +func (msg *confirmSelectOk) read(r io.Reader) (err error) { + + return +} + +func (r *reader) parseMethodFrame(channel uint16, size uint32) (f frame, err error) { + mf := &methodFrame{ + ChannelId: channel, + } + + if err = binary.Read(r.r, binary.BigEndian, &mf.ClassId); err != nil { + return + } + + if err = binary.Read(r.r, binary.BigEndian, &mf.MethodId); err != nil { + return + } + + switch mf.ClassId { + + case 10: // connection + switch mf.MethodId { + + case 10: // connection start + // fmt.Println("NextMethod: class:10 method:10") + method := &connectionStart{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // connection start-ok + // fmt.Println("NextMethod: class:10 method:11") + method := &connectionStartOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // connection secure + // fmt.Println("NextMethod: class:10 method:20") + method := &connectionSecure{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // connection secure-ok + // fmt.Println("NextMethod: class:10 method:21") + method := &connectionSecureOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // connection tune + // fmt.Println("NextMethod: class:10 method:30") + method := &connectionTune{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // connection tune-ok + // fmt.Println("NextMethod: class:10 method:31") + method := &connectionTuneOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // connection open + // fmt.Println("NextMethod: class:10 method:40") + method := &connectionOpen{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 41: // connection open-ok + // fmt.Println("NextMethod: class:10 method:41") + method := &connectionOpenOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 50: // connection close + // fmt.Println("NextMethod: class:10 method:50") + method := &connectionClose{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 51: // connection close-ok + // fmt.Println("NextMethod: class:10 method:51") + method := &connectionCloseOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 60: // connection blocked + // fmt.Println("NextMethod: class:10 method:60") + method := &connectionBlocked{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 61: // connection unblocked + // fmt.Println("NextMethod: class:10 method:61") + method := &connectionUnblocked{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 70: // connection update-secret + // fmt.Println("NextMethod: class:10 method:70") + method := &connectionUpdateSecret{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 71: // connection update-secret-ok + // fmt.Println("NextMethod: class:10 method:71") + method := &connectionUpdateSecretOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 20: // channel + switch mf.MethodId { + + case 10: // channel open + // fmt.Println("NextMethod: class:20 method:10") + method := &channelOpen{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // channel open-ok + // fmt.Println("NextMethod: class:20 method:11") + method := &channelOpenOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // channel flow + // fmt.Println("NextMethod: class:20 method:20") + method := &channelFlow{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // channel flow-ok + // fmt.Println("NextMethod: class:20 method:21") + method := &channelFlowOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // channel close + // fmt.Println("NextMethod: class:20 method:40") + method := &channelClose{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 41: // channel close-ok + // fmt.Println("NextMethod: class:20 method:41") + method := &channelCloseOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 40: // exchange + switch mf.MethodId { + + case 10: // exchange declare + // fmt.Println("NextMethod: class:40 method:10") + method := &exchangeDeclare{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // exchange declare-ok + // fmt.Println("NextMethod: class:40 method:11") + method := &exchangeDeclareOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // exchange delete + // fmt.Println("NextMethod: class:40 method:20") + method := &exchangeDelete{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // exchange delete-ok + // fmt.Println("NextMethod: class:40 method:21") + method := &exchangeDeleteOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // exchange bind + // fmt.Println("NextMethod: class:40 method:30") + method := &exchangeBind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // exchange bind-ok + // fmt.Println("NextMethod: class:40 method:31") + method := &exchangeBindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // exchange unbind + // fmt.Println("NextMethod: class:40 method:40") + method := &exchangeUnbind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 51: // exchange unbind-ok + // fmt.Println("NextMethod: class:40 method:51") + method := &exchangeUnbindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 50: // queue + switch mf.MethodId { + + case 10: // queue declare + // fmt.Println("NextMethod: class:50 method:10") + method := &queueDeclare{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // queue declare-ok + // fmt.Println("NextMethod: class:50 method:11") + method := &queueDeclareOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // queue bind + // fmt.Println("NextMethod: class:50 method:20") + method := &queueBind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // queue bind-ok + // fmt.Println("NextMethod: class:50 method:21") + method := &queueBindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 50: // queue unbind + // fmt.Println("NextMethod: class:50 method:50") + method := &queueUnbind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 51: // queue unbind-ok + // fmt.Println("NextMethod: class:50 method:51") + method := &queueUnbindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // queue purge + // fmt.Println("NextMethod: class:50 method:30") + method := &queuePurge{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // queue purge-ok + // fmt.Println("NextMethod: class:50 method:31") + method := &queuePurgeOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // queue delete + // fmt.Println("NextMethod: class:50 method:40") + method := &queueDelete{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 41: // queue delete-ok + // fmt.Println("NextMethod: class:50 method:41") + method := &queueDeleteOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 60: // basic + switch mf.MethodId { + + case 10: // basic qos + // fmt.Println("NextMethod: class:60 method:10") + method := &basicQos{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // basic qos-ok + // fmt.Println("NextMethod: class:60 method:11") + method := &basicQosOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // basic consume + // fmt.Println("NextMethod: class:60 method:20") + method := &basicConsume{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // basic consume-ok + // fmt.Println("NextMethod: class:60 method:21") + method := &basicConsumeOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // basic cancel + // fmt.Println("NextMethod: class:60 method:30") + method := &basicCancel{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // basic cancel-ok + // fmt.Println("NextMethod: class:60 method:31") + method := &basicCancelOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // basic publish + // fmt.Println("NextMethod: class:60 method:40") + method := &basicPublish{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 50: // basic return + // fmt.Println("NextMethod: class:60 method:50") + method := &basicReturn{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 60: // basic deliver + // fmt.Println("NextMethod: class:60 method:60") + method := &basicDeliver{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 70: // basic get + // fmt.Println("NextMethod: class:60 method:70") + method := &basicGet{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 71: // basic get-ok + // fmt.Println("NextMethod: class:60 method:71") + method := &basicGetOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 72: // basic get-empty + // fmt.Println("NextMethod: class:60 method:72") + method := &basicGetEmpty{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 80: // basic ack + // fmt.Println("NextMethod: class:60 method:80") + method := &basicAck{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 90: // basic reject + // fmt.Println("NextMethod: class:60 method:90") + method := &basicReject{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 100: // basic recover-async + // fmt.Println("NextMethod: class:60 method:100") + method := &basicRecoverAsync{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 110: // basic recover + // fmt.Println("NextMethod: class:60 method:110") + method := &basicRecover{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 111: // basic recover-ok + // fmt.Println("NextMethod: class:60 method:111") + method := &basicRecoverOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 120: // basic nack + // fmt.Println("NextMethod: class:60 method:120") + method := &basicNack{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 90: // tx + switch mf.MethodId { + + case 10: // tx select + // fmt.Println("NextMethod: class:90 method:10") + method := &txSelect{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // tx select-ok + // fmt.Println("NextMethod: class:90 method:11") + method := &txSelectOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // tx commit + // fmt.Println("NextMethod: class:90 method:20") + method := &txCommit{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // tx commit-ok + // fmt.Println("NextMethod: class:90 method:21") + method := &txCommitOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // tx rollback + // fmt.Println("NextMethod: class:90 method:30") + method := &txRollback{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // tx rollback-ok + // fmt.Println("NextMethod: class:90 method:31") + method := &txRollbackOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 85: // confirm + switch mf.MethodId { + + case 10: // confirm select + // fmt.Println("NextMethod: class:85 method:10") + method := &confirmSelect{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // confirm select-ok + // fmt.Println("NextMethod: class:85 method:11") + method := &confirmSelectOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + default: + return nil, fmt.Errorf("Bad method frame, unknown class %d", mf.ClassId) + } + + return mf, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go new file mode 100644 index 0000000..1e15ed0 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go @@ -0,0 +1,568 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "fmt" + "io" + "time" +) + +// DefaultExchange is the default direct exchange that binds every queue by its +// name. Applications can route to a queue using the queue name as routing key. +const DefaultExchange = "" + +// Constants for standard AMQP 0-9-1 exchange types. +const ( + ExchangeDirect = "direct" + ExchangeFanout = "fanout" + ExchangeTopic = "topic" + ExchangeHeaders = "headers" +) + +var ( + // ErrClosed is returned when the channel or connection is not open + ErrClosed = &Error{Code: ChannelError, Reason: "channel/connection is not open"} + + // ErrChannelMax is returned when Connection.Channel has been called enough + // times that all channel IDs have been exhausted in the client or the + // server. + ErrChannelMax = &Error{Code: ChannelError, Reason: "channel id space exhausted"} + + // ErrSASL is returned from Dial when the authentication mechanism could not + // be negotiated. + ErrSASL = &Error{Code: AccessRefused, Reason: "SASL could not negotiate a shared mechanism"} + + // ErrCredentials is returned when the authenticated client is not authorized + // to any vhost. + ErrCredentials = &Error{Code: AccessRefused, Reason: "username or password not allowed"} + + // ErrVhost is returned when the authenticated user is not permitted to + // access the requested Vhost. + ErrVhost = &Error{Code: AccessRefused, Reason: "no access to this vhost"} + + // ErrSyntax is hard protocol error, indicating an unsupported protocol, + // implementation or encoding. + ErrSyntax = &Error{Code: SyntaxError, Reason: "invalid field or value inside of a frame"} + + // ErrFrame is returned when the protocol frame cannot be read from the + // server, indicating an unsupported protocol or unsupported frame type. + ErrFrame = &Error{Code: FrameError, Reason: "frame could not be parsed"} + + // ErrCommandInvalid is returned when the server sends an unexpected response + // to this requested message type. This indicates a bug in this client. + ErrCommandInvalid = &Error{Code: CommandInvalid, Reason: "unexpected command received"} + + // ErrUnexpectedFrame is returned when something other than a method or + // heartbeat frame is delivered to the Connection, indicating a bug in the + // client. + ErrUnexpectedFrame = &Error{Code: UnexpectedFrame, Reason: "unexpected frame received"} + + // ErrFieldType is returned when writing a message containing a Go type unsupported by AMQP. + ErrFieldType = &Error{Code: SyntaxError, Reason: "unsupported table field type"} +) + +// internal errors used inside the library +var ( + errInvalidTypeAssertion = &Error{Code: InternalError, Reason: "type assertion unsuccessful", Server: false, Recover: true} +) + +// Error captures the code and reason a channel or connection has been closed +// by the server. +type Error struct { + Code int // constant code from the specification + Reason string // description of the error + Server bool // true when initiated from the server, false when from this library + Recover bool // true when this error can be recovered by retrying later or with different parameters +} + +func newError(code uint16, text string) *Error { + return &Error{ + Code: int(code), + Reason: text, + Recover: isSoftExceptionCode(int(code)), + Server: true, + } +} + +func (e Error) Error() string { + return fmt.Sprintf("Exception (%d) Reason: %q", e.Code, e.Reason) +} + +// Used by header frames to capture routing and header information +type properties struct { + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + Headers Table // Application or header exchange table + DeliveryMode uint8 // queue implementation use - Transient (1) or Persistent (2) + Priority uint8 // queue implementation use - 0 to 9 + CorrelationId string // application use - correlation identifier + ReplyTo string // application use - address to to reply to (ex: RPC) + Expiration string // implementation use - message expiration spec + MessageId string // application use - message identifier + Timestamp time.Time // application use - message timestamp + Type string // application use - message type name + UserId string // application use - creating user id + AppId string // application use - creating application + reserved1 string // was cluster-id - process for buffer consumption +} + +// DeliveryMode. Transient means higher throughput but messages will not be +// restored on broker restart. The delivery mode of publishings is unrelated +// to the durability of the queues they reside on. Transient messages will +// not be restored to durable queues, persistent messages will be restored to +// durable queues and lost on non-durable queues during server restart. +// +// This remains typed as uint8 to match Publishing.DeliveryMode. Other +// delivery modes specific to custom queue implementations are not enumerated +// here. +const ( + Transient uint8 = 1 + Persistent uint8 = 2 +) + +// The property flags are an array of bits that indicate the presence or +// absence of each property value in sequence. The bits are ordered from most +// high to low - bit 15 indicates the first property. +const ( + flagContentType = 0x8000 + flagContentEncoding = 0x4000 + flagHeaders = 0x2000 + flagDeliveryMode = 0x1000 + flagPriority = 0x0800 + flagCorrelationId = 0x0400 + flagReplyTo = 0x0200 + flagExpiration = 0x0100 + flagMessageId = 0x0080 + flagTimestamp = 0x0040 + flagType = 0x0020 + flagUserId = 0x0010 + flagAppId = 0x0008 + flagReserved1 = 0x0004 +) + +// Expiration. These constants can be used to set a messages expiration TTL. +// They should be viewed as a clarification of the expiration functionality in +// messages and their usage is not enforced by this pkg. +// +// The server requires a string value that is interpreted by the server as +// milliseconds. If no value is set, which translates to the nil value of +// string, the message will never expire by itself. This does not influence queue +// configured TTL configurations. +const ( + NeverExpire string = "" // empty value means never expire + ImmediatelyExpire string = "0" // 0 means immediately expire +) + +// Queue captures the current server state of the queue on the server returned +// from Channel.QueueDeclare or Channel.QueueInspect. +type Queue struct { + Name string // server confirmed or generated name + Messages int // count of messages not awaiting acknowledgment + Consumers int // number of consumers receiving deliveries +} + +// Publishing captures the client message sent to the server. The fields +// outside of the Headers table included in this struct mirror the underlying +// fields in the content frame. They use native types for convenience and +// efficiency. +type Publishing struct { + // Application or exchange specific fields, + // the headers exchange will inspect this field. + Headers Table + + // Properties + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + DeliveryMode uint8 // Transient (0 or 1) or Persistent (2) + Priority uint8 // 0 to 9 + CorrelationId string // correlation identifier + ReplyTo string // address to to reply to (ex: RPC) + // Expiration represents the message TTL in milliseconds. A value of "0" + // indicates that the message will immediately expire if the message arrives + // at its destination and the message is not directly handled by a consumer + // that currently has the capacatity to do so. If you wish the message to + // not expire on its own, set this value to any ttl value, empty string or + // use the corresponding constants NeverExpire and ImmediatelyExpire. This + // does not influence queue configured TTL values. + Expiration string + MessageId string // message identifier + Timestamp time.Time // message timestamp + Type string // message type name + UserId string // creating user id - ex: "guest" + AppId string // creating application id + + // The application specific payload of the message + Body []byte +} + +// Blocking notifies the server's TCP flow control of the Connection. When a +// server hits a memory or disk alarm it will block all connections until the +// resources are reclaimed. Use NotifyBlock on the Connection to receive these +// events. +type Blocking struct { + Active bool // TCP pushback active/inactive on server + Reason string // Server reason for activation +} + +// DeferredConfirmation represents a future publisher confirm for a message. It +// allows users to directly correlate a publishing to a confirmation. These are +// returned from PublishWithDeferredConfirm on Channels. +type DeferredConfirmation struct { + DeliveryTag uint64 + + done chan struct{} + ack bool +} + +// Confirmation notifies the acknowledgment or negative acknowledgement of a +// publishing identified by its delivery tag. Use NotifyPublish on the Channel +// to consume these events. +type Confirmation struct { + DeliveryTag uint64 // A 1 based counter of publishings from when the channel was put in Confirm mode + Ack bool // True when the server successfully received the publishing +} + +// Decimal matches the AMQP decimal type. Scale is the number of decimal +// digits Scale == 2, Value == 12345, Decimal == 123.45 +type Decimal struct { + Scale uint8 + Value int32 +} + +// Most common queue argument keys in queue declaration. For a comprehensive list +// of queue arguments, visit [RabbitMQ Queue docs]. +// +// [QueueTypeArg] queue argument is used to declare quorum and stream queues. +// Accepted values are [QueueTypeClassic] (default), [QueueTypeQuorum] and +// [QueueTypeStream]. [Quorum Queues] accept (almost) all queue arguments as their +// Classic Queues counterparts. Check [feature comparison] docs for more +// information. +// +// Queues can define their [max length] using [QueueMaxLenArg] and +// [QueueMaxLenBytesArg] queue arguments. Overflow behaviour is set using +// [QueueOverflowArg]. Accepted values are [QueueOverflowDropHead] (default), +// [QueueOverflowRejectPublish] and [QueueOverflowRejectPublishDLX]. +// +// [Queue TTL] can be defined using [QueueTTLArg]. That is, the time-to-live for an +// unused queue. [Queue Message TTL] can be defined using [QueueMessageTTLArg]. +// This will set a time-to-live for messages in the queue. +// +// [Stream retention] can be configured using [StreamMaxLenBytesArg], to set the +// maximum size of the stream. Please note that stream queues always keep, at +// least, one segment. [Stream retention] can also be set using [StreamMaxAgeArg], +// to set time-based retention. Values are string with unit suffix. Valid +// suffixes are Y, M, D, h, m, s. E.g. "7D" for one week. The maximum segment +// size can be set using [StreamMaxSegmentSizeBytesArg]. The default value is +// 500_000_000 bytes ~= 500 megabytes +// +// Starting with RabbitMQ 3.12, consumer timeout can be configured as a queue +// argument. This is the timeout for a consumer to acknowledge a message. The +// value is the time in milliseconds. The timeout is evaluated periodically, +// at one minute intervals. Values lower than one minute are not supported. +// See the [consumer timeout] guide for more information. +// +// [Single Active Consumer] on quorum and classic queues can be configured +// using [SingleActiveConsumerArg]. This argument expects a boolean value. It is +// false by default. +// +// [RabbitMQ Queue docs]: https://rabbitmq.com/queues.html +// [Stream retention]: https://rabbitmq.com/streams.html#retention +// [max length]: https://rabbitmq.com/maxlength.html +// [Queue TTL]: https://rabbitmq.com/ttl.html#queue-ttl +// [Queue Message TTL]: https://rabbitmq.com/ttl.html#per-queue-message-ttl +// [Quorum Queues]: https://rabbitmq.com/quorum-queues.html +// [feature comparison]: https://rabbitmq.com/quorum-queues.html#feature-comparison +// [consumer timeout]: https://rabbitmq.com/consumers.html#acknowledgement-timeout +// [Single Active Consumer]: https://rabbitmq.com/consumers.html#single-active-consumer +const ( + QueueTypeArg = "x-queue-type" + QueueMaxLenArg = "x-max-length" + QueueMaxLenBytesArg = "x-max-length-bytes" + StreamMaxLenBytesArg = "x-max-length-bytes" + QueueOverflowArg = "x-overflow" + QueueMessageTTLArg = "x-message-ttl" + QueueTTLArg = "x-expires" + StreamMaxAgeArg = "x-max-age" + StreamMaxSegmentSizeBytesArg = "x-stream-max-segment-size-bytes" + // QueueVersionArg declares the Classic Queue version to use. Expects an integer, either 1 or 2. + QueueVersionArg = "x-queue-version" + // ConsumerTimeoutArg is available in RabbitMQ 3.12+ as a queue argument. + ConsumerTimeoutArg = "x-consumer-timeout" + SingleActiveConsumerArg = "x-single-active-consumer" +) + +// Values for queue arguments. Use as values for queue arguments during queue declaration. +// The following argument table will create a classic queue, with max length set to 100 messages, +// and a queue TTL of 30 minutes. +// +// args := amqp.Table{ +// amqp.QueueTypeArg: QueueTypeClassic, +// amqp.QueueMaxLenArg: 100, +// amqp.QueueTTLArg: 1800000, +// } +// +// Refer to [Channel.QueueDeclare] for more examples. +const ( + QueueTypeClassic = "classic" + QueueTypeQuorum = "quorum" + QueueTypeStream = "stream" + QueueOverflowDropHead = "drop-head" + QueueOverflowRejectPublish = "reject-publish" + QueueOverflowRejectPublishDLX = "reject-publish-dlx" +) + +// Table stores user supplied fields of the following types: +// +// bool +// byte +// int8 +// float32 +// float64 +// int +// int16 +// int32 +// int64 +// nil +// string +// time.Time +// amqp.Decimal +// amqp.Table +// []byte +// []interface{} - containing above types +// +// Functions taking a table will immediately fail when the table contains a +// value of an unsupported type. +// +// The caller must be specific in which precision of integer it wishes to +// encode. +// +// Use a type assertion when reading values from a table for type conversion. +// +// RabbitMQ expects int32 for integer values. +type Table map[string]interface{} + +func validateField(f interface{}) error { + switch fv := f.(type) { + case nil, bool, byte, int8, int, int16, int32, int64, float32, float64, string, []byte, Decimal, time.Time: + return nil + + case []interface{}: + for _, v := range fv { + if err := validateField(v); err != nil { + return fmt.Errorf("in array %s", err) + } + } + return nil + + case Table: + for k, v := range fv { + if err := validateField(v); err != nil { + return fmt.Errorf("table field %q %s", k, err) + } + } + return nil + } + + return fmt.Errorf("value %T not supported", f) +} + +// Validate returns and error if any Go types in the table are incompatible with AMQP types. +func (t Table) Validate() error { + return validateField(t) +} + +// Sets the connection name property. This property can be used in +// amqp.Config to set a custom connection name during amqp.DialConfig(). This +// can be helpful to identify specific connections in RabbitMQ, for debugging or +// tracing purposes. +func (t Table) SetClientConnectionName(connName string) { + t["connection_name"] = connName +} + +type message interface { + id() (uint16, uint16) + wait() bool + read(io.Reader) error + write(io.Writer) error +} + +type messageWithContent interface { + message + getContent() (properties, []byte) + setContent(properties, []byte) +} + +/* +The base interface implemented as: + +2.3.5 frame Details + +All frames consist of a header (7 octets), a payload of arbitrary size, and a 'frame-end' octet that detects +malformed frames: + + 0 1 3 7 size+7 size+8 + +------+---------+-------------+ +------------+ +-----------+ + | type | channel | size | | payload | | frame-end | + +------+---------+-------------+ +------------+ +-----------+ + octet short long size octets octet + +To read a frame, we: + + 1. Read the header and check the frame type and channel. + 2. Depending on the frame type, we read the payload and process it. + 3. Read the frame end octet. + +In realistic implementations where performance is a concern, we would use +“read-ahead buffering” or “gathering reads” to avoid doing three separate +system calls to read a frame. +*/ +type frame interface { + write(io.Writer) error + channel() uint16 +} + +/* +Perform any updates on the channel immediately after the frame is decoded while the +connection mutex is held. +*/ +func updateChannel(f frame, channel *Channel) { + if mf, isMethodFrame := f.(*methodFrame); isMethodFrame { + if _, isChannelClose := mf.Method.(*channelClose); isChannelClose { + channel.setClosed() + } + } +} + +type reader struct { + r io.Reader +} + +type writer struct { + w io.Writer +} + +// Implements the frame interface for Connection RPC +type protocolHeader struct{} + +func (protocolHeader) write(w io.Writer) error { + _, err := w.Write([]byte{'A', 'M', 'Q', 'P', 0, 0, 9, 1}) + return err +} + +func (protocolHeader) channel() uint16 { + panic("only valid as initial handshake") +} + +/* +Method frames carry the high-level protocol commands (which we call "methods"). +One method frame carries one command. The method frame payload has this format: + + 0 2 4 + +----------+-----------+-------------- - - + | class-id | method-id | arguments... + +----------+-----------+-------------- - - + short short ... + +To process a method frame, we: + 1. Read the method frame payload. + 2. Unpack it into a structure. A given method always has the same structure, + so we can unpack the method rapidly. 3. Check that the method is allowed in + the current context. + 4. Check that the method arguments are valid. + 5. Execute the method. + +Method frame bodies are constructed as a list of AMQP data fields (bits, +integers, strings and string tables). The marshalling code is trivially +generated directly from the protocol specifications, and can be very rapid. +*/ +type methodFrame struct { + ChannelId uint16 + ClassId uint16 + MethodId uint16 + Method message +} + +func (f *methodFrame) channel() uint16 { return f.ChannelId } + +/* +Heartbeating is a technique designed to undo one of TCP/IP's features, namely +its ability to recover from a broken physical connection by closing only after +a quite long time-out. In some scenarios we need to know very rapidly if a +peer is disconnected or not responding for other reasons (e.g. it is looping). +Since heartbeating can be done at a low level, we implement this as a special +type of frame that peers exchange at the transport level, rather than as a +class method. +*/ +type heartbeatFrame struct { + ChannelId uint16 +} + +func (f *heartbeatFrame) channel() uint16 { return f.ChannelId } + +/* +Certain methods (such as Basic.Publish, Basic.Deliver, etc.) are formally +defined as carrying content. When a peer sends such a method frame, it always +follows it with a content header and zero or more content body frames. + +A content header frame has this format: + + 0 2 4 12 14 + +----------+--------+-----------+----------------+------------- - - + | class-id | weight | body size | property flags | property list... + +----------+--------+-----------+----------------+------------- - - + short short long long short remainder... + +We place content body in distinct frames (rather than including it in the +method) so that AMQP may support "zero copy" techniques in which content is +never marshalled or encoded. We place the content properties in their own +frame so that recipients can selectively discard contents they do not want to +process +*/ +type headerFrame struct { + ChannelId uint16 + ClassId uint16 + weight uint16 + Size uint64 + Properties properties +} + +func (f *headerFrame) channel() uint16 { return f.ChannelId } + +/* +Content is the application data we carry from client-to-client via the AMQP +server. Content is, roughly speaking, a set of properties plus a binary data +part. The set of allowed properties are defined by the Basic class, and these +form the "content header frame". The data can be any size, and MAY be broken +into several (or many) chunks, each forming a "content body frame". + +Looking at the frames for a specific channel, as they pass on the wire, we +might see something like this: + + [method] + [method] [header] [body] [body] + [method] + ... +*/ +type bodyFrame struct { + ChannelId uint16 + Body []byte +} + +func (f *bodyFrame) channel() uint16 { return f.ChannelId } + +type heartbeatDuration struct { + value time.Duration + hasValue bool +} + +func newHeartbeatDurationFromSeconds(s int) heartbeatDuration { + v := time.Duration(s) * time.Second + return heartbeatDuration{ + value: v, + hasValue: true, + } +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go new file mode 100644 index 0000000..ddc4b1a --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go @@ -0,0 +1,254 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "errors" + "fmt" + "net" + "net/url" + "strconv" + "strings" +) + +var errURIScheme = errors.New("AMQP scheme must be either 'amqp://' or 'amqps://'") +var errURIWhitespace = errors.New("URI must not contain whitespace") + +var schemePorts = map[string]int{ + "amqp": 5672, + "amqps": 5671, +} + +var defaultURI = URI{ + Scheme: "amqp", + Host: "localhost", + Port: 5672, + Username: "guest", + Password: "guest", + Vhost: "/", +} + +// URI represents a parsed AMQP URI string. +type URI struct { + Scheme string + Host string + Port int + Username string + Password string + Vhost string + CertFile string // client TLS auth - path to certificate (PEM) + CACertFile string // client TLS auth - path to CA certificate (PEM) + KeyFile string // client TLS auth - path to private key (PEM) + ServerName string // client TLS auth - server name + AuthMechanism []string + Heartbeat heartbeatDuration + ConnectionTimeout int + ChannelMax uint16 +} + +// ParseURI attempts to parse the given AMQP URI according to the spec. +// See http://www.rabbitmq.com/uri-spec.html. +// +// Default values for the fields are: +// +// Scheme: amqp +// Host: localhost +// Port: 5672 +// Username: guest +// Password: guest +// Vhost: / +// +// Supports TLS query parameters. See https://www.rabbitmq.com/uri-query-parameters.html +// +// certfile: +// keyfile: +// cacertfile: +// server_name_indication: +// auth_mechanism: +// heartbeat: +// connection_timeout: +// channel_max: +// +// If cacertfile is not provided, system CA certificates will be used. +// Mutual TLS (client auth) will be enabled only in case keyfile AND certfile provided. +// +// If Config.TLSClientConfig is set, TLS parameters from URI will be ignored. +func ParseURI(uri string) (URI, error) { + builder := defaultURI + + if strings.Contains(uri, " ") { + return builder, errURIWhitespace + } + + u, err := url.Parse(uri) + if err != nil { + return builder, err + } + + defaultPort, okScheme := schemePorts[u.Scheme] + + if okScheme { + builder.Scheme = u.Scheme + } else { + return builder, errURIScheme + } + + host := u.Hostname() + port := u.Port() + + if host != "" { + builder.Host = host + } + + if port != "" { + port32, err := strconv.ParseInt(port, 10, 32) + if err != nil { + return builder, err + } + builder.Port = int(port32) + } else { + builder.Port = defaultPort + } + + if u.User != nil { + builder.Username = u.User.Username() + if password, ok := u.User.Password(); ok { + builder.Password = password + } + } + + if u.Path != "" { + if strings.HasPrefix(u.Path, "/") { + if u.Host == "" && strings.HasPrefix(u.Path, "///") { + // net/url doesn't handle local context authorities and leaves that up + // to the scheme handler. In our case, we translate amqp:/// into the + // default host and whatever the vhost should be + if len(u.Path) > 3 { + builder.Vhost = u.Path[3:] + } + } else if len(u.Path) > 1 { + builder.Vhost = u.Path[1:] + } + } else { + builder.Vhost = u.Path + } + } + + // see https://www.rabbitmq.com/uri-query-parameters.html + params := u.Query() + builder.CertFile = params.Get("certfile") + builder.KeyFile = params.Get("keyfile") + builder.CACertFile = params.Get("cacertfile") + builder.ServerName = params.Get("server_name_indication") + builder.AuthMechanism = params["auth_mechanism"] + + if params.Has("heartbeat") { + value, err := strconv.Atoi(params.Get("heartbeat")) + if err != nil { + return builder, fmt.Errorf("heartbeat is not an integer: %v", err) + } + builder.Heartbeat = newHeartbeatDurationFromSeconds(value) + } + + if params.Has("connection_timeout") { + value, err := strconv.Atoi(params.Get("connection_timeout")) + if err != nil { + return builder, fmt.Errorf("connection_timeout is not an integer: %v", err) + } + builder.ConnectionTimeout = value + } + + if params.Has("channel_max") { + value, err := strconv.ParseUint(params.Get("channel_max"), 10, 16) + if err != nil { + return builder, fmt.Errorf("connection_timeout is not an integer: %v", err) + } + builder.ChannelMax = uint16(value) + } + + return builder, nil +} + +// PlainAuth returns a PlainAuth structure based on the parsed URI's +// Username and Password fields. +func (uri URI) PlainAuth() *PlainAuth { + return &PlainAuth{ + Username: uri.Username, + Password: uri.Password, + } +} + +// AMQPlainAuth returns a PlainAuth structure based on the parsed URI's +// Username and Password fields. +func (uri URI) AMQPlainAuth() *AMQPlainAuth { + return &AMQPlainAuth{ + Username: uri.Username, + Password: uri.Password, + } +} + +func (uri URI) String() string { + authority, err := url.Parse("") + if err != nil { + return err.Error() + } + + authority.Scheme = uri.Scheme + + if uri.Username != defaultURI.Username || uri.Password != defaultURI.Password { + authority.User = url.User(uri.Username) + + if uri.Password != defaultURI.Password { + authority.User = url.UserPassword(uri.Username, uri.Password) + } + } + + if defaultPort, found := schemePorts[uri.Scheme]; !found || defaultPort != uri.Port { + authority.Host = net.JoinHostPort(uri.Host, strconv.Itoa(uri.Port)) + } else { + // JoinHostPort() automatically add brackets to the host if it's + // an IPv6 address. + // + // If not port is specified, JoinHostPort() return an IP address in the + // form of "[::1]:", so we use TrimSuffix() to remove the extra ":". + authority.Host = strings.TrimSuffix(net.JoinHostPort(uri.Host, ""), ":") + } + + if uri.Vhost != defaultURI.Vhost { + // Make sure net/url does not double escape, e.g. + // "%2F" does not become "%252F". + authority.Path = uri.Vhost + authority.RawPath = url.QueryEscape(uri.Vhost) + } else { + authority.Path = "/" + } + + if uri.CertFile != "" || uri.KeyFile != "" || uri.CACertFile != "" || uri.ServerName != "" { + rawQuery := strings.Builder{} + if uri.CertFile != "" { + rawQuery.WriteString("certfile=") + rawQuery.WriteString(uri.CertFile) + rawQuery.WriteRune('&') + } + if uri.KeyFile != "" { + rawQuery.WriteString("keyfile=") + rawQuery.WriteString(uri.KeyFile) + rawQuery.WriteRune('&') + } + if uri.CACertFile != "" { + rawQuery.WriteString("cacertfile=") + rawQuery.WriteString(uri.CACertFile) + rawQuery.WriteRune('&') + } + if uri.ServerName != "" { + rawQuery.WriteString("server_name_indication=") + rawQuery.WriteString(uri.ServerName) + } + authority.RawQuery = rawQuery.String() + } + + return authority.String() +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go new file mode 100644 index 0000000..dcec314 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go @@ -0,0 +1,426 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bufio" + "bytes" + "encoding/binary" + "errors" + "io" + "math" + "time" +) + +func (w *writer) WriteFrameNoFlush(frame frame) (err error) { + err = frame.write(w.w) + return +} + +func (w *writer) WriteFrame(frame frame) (err error) { + if err = frame.write(w.w); err != nil { + return + } + + if buf, ok := w.w.(*bufio.Writer); ok { + err = buf.Flush() + } + + return +} + +func (f *methodFrame) write(w io.Writer) (err error) { + var payload bytes.Buffer + + if f.Method == nil { + return errors.New("malformed frame: missing method") + } + + class, method := f.Method.id() + + if err = binary.Write(&payload, binary.BigEndian, class); err != nil { + return + } + + if err = binary.Write(&payload, binary.BigEndian, method); err != nil { + return + } + + if err = f.Method.write(&payload); err != nil { + return + } + + return writeFrame(w, frameMethod, f.ChannelId, payload.Bytes()) +} + +// Heartbeat +// +// Payload is empty +func (f *heartbeatFrame) write(w io.Writer) (err error) { + return writeFrame(w, frameHeartbeat, f.ChannelId, []byte{}) +} + +// CONTENT HEADER +// 0 2 4 12 14 +// +----------+--------+-----------+----------------+------------- - - +// | class-id | weight | body size | property flags | property list... +// +----------+--------+-----------+----------------+------------- - - +// +// short short long long short remainder... +func (f *headerFrame) write(w io.Writer) (err error) { + var payload bytes.Buffer + + if err = binary.Write(&payload, binary.BigEndian, f.ClassId); err != nil { + return + } + + if err = binary.Write(&payload, binary.BigEndian, f.weight); err != nil { + return + } + + if err = binary.Write(&payload, binary.BigEndian, f.Size); err != nil { + return + } + + // First pass will build the mask to be serialized, second pass will serialize + // each of the fields that appear in the mask. + + var mask uint16 + + if len(f.Properties.ContentType) > 0 { + mask = mask | flagContentType + } + if len(f.Properties.ContentEncoding) > 0 { + mask = mask | flagContentEncoding + } + if f.Properties.Headers != nil && len(f.Properties.Headers) > 0 { + mask = mask | flagHeaders + } + if f.Properties.DeliveryMode > 0 { + mask = mask | flagDeliveryMode + } + if f.Properties.Priority > 0 { + mask = mask | flagPriority + } + if len(f.Properties.CorrelationId) > 0 { + mask = mask | flagCorrelationId + } + if len(f.Properties.ReplyTo) > 0 { + mask = mask | flagReplyTo + } + if len(f.Properties.Expiration) > 0 { + mask = mask | flagExpiration + } + if len(f.Properties.MessageId) > 0 { + mask = mask | flagMessageId + } + if !f.Properties.Timestamp.IsZero() { + mask = mask | flagTimestamp + } + if len(f.Properties.Type) > 0 { + mask = mask | flagType + } + if len(f.Properties.UserId) > 0 { + mask = mask | flagUserId + } + if len(f.Properties.AppId) > 0 { + mask = mask | flagAppId + } + + if err = binary.Write(&payload, binary.BigEndian, mask); err != nil { + return + } + + if hasProperty(mask, flagContentType) { + if err = writeShortstr(&payload, f.Properties.ContentType); err != nil { + return + } + } + if hasProperty(mask, flagContentEncoding) { + if err = writeShortstr(&payload, f.Properties.ContentEncoding); err != nil { + return + } + } + if hasProperty(mask, flagHeaders) { + if err = writeTable(&payload, f.Properties.Headers); err != nil { + return + } + } + if hasProperty(mask, flagDeliveryMode) { + if err = binary.Write(&payload, binary.BigEndian, f.Properties.DeliveryMode); err != nil { + return + } + } + if hasProperty(mask, flagPriority) { + if err = binary.Write(&payload, binary.BigEndian, f.Properties.Priority); err != nil { + return + } + } + if hasProperty(mask, flagCorrelationId) { + if err = writeShortstr(&payload, f.Properties.CorrelationId); err != nil { + return + } + } + if hasProperty(mask, flagReplyTo) { + if err = writeShortstr(&payload, f.Properties.ReplyTo); err != nil { + return + } + } + if hasProperty(mask, flagExpiration) { + if err = writeShortstr(&payload, f.Properties.Expiration); err != nil { + return + } + } + if hasProperty(mask, flagMessageId) { + if err = writeShortstr(&payload, f.Properties.MessageId); err != nil { + return + } + } + if hasProperty(mask, flagTimestamp) { + if err = binary.Write(&payload, binary.BigEndian, uint64(f.Properties.Timestamp.Unix())); err != nil { + return + } + } + if hasProperty(mask, flagType) { + if err = writeShortstr(&payload, f.Properties.Type); err != nil { + return + } + } + if hasProperty(mask, flagUserId) { + if err = writeShortstr(&payload, f.Properties.UserId); err != nil { + return + } + } + if hasProperty(mask, flagAppId) { + if err = writeShortstr(&payload, f.Properties.AppId); err != nil { + return + } + } + + return writeFrame(w, frameHeader, f.ChannelId, payload.Bytes()) +} + +// Body +// +// Payload is one byterange from the full body who's size is declared in the +// Header frame +func (f *bodyFrame) write(w io.Writer) (err error) { + return writeFrame(w, frameBody, f.ChannelId, f.Body) +} + +func writeFrame(w io.Writer, typ uint8, channel uint16, payload []byte) (err error) { + end := []byte{frameEnd} + size := uint(len(payload)) + + _, err = w.Write([]byte{ + typ, + byte((channel & 0xff00) >> 8), + byte((channel & 0x00ff) >> 0), + byte((size & 0xff000000) >> 24), + byte((size & 0x00ff0000) >> 16), + byte((size & 0x0000ff00) >> 8), + byte((size & 0x000000ff) >> 0), + }) + + if err != nil { + return + } + + if _, err = w.Write(payload); err != nil { + return + } + + if _, err = w.Write(end); err != nil { + return + } + + return +} + +func writeShortstr(w io.Writer, s string) (err error) { + b := []byte(s) + + var length = uint8(len(b)) + + if err = binary.Write(w, binary.BigEndian, length); err != nil { + return + } + + if _, err = w.Write(b[:length]); err != nil { + return + } + + return +} + +func writeLongstr(w io.Writer, s string) (err error) { + b := []byte(s) + + var length = uint32(len(b)) + + if err = binary.Write(w, binary.BigEndian, length); err != nil { + return + } + + if _, err = w.Write(b[:length]); err != nil { + return + } + + return +} + +/* +'A': []interface{} +'D': Decimal +'F': Table +'I': int32 +'S': string +'T': time.Time +'V': nil +'b': int8 +'B': byte +'d': float64 +'f': float32 +'l': int64 +'s': int16 +'t': bool +'x': []byte +*/ +func writeField(w io.Writer, value interface{}) (err error) { + var buf [9]byte + var enc []byte + + switch v := value.(type) { + case bool: + buf[0] = 't' + if v { + buf[1] = byte(1) + } else { + buf[1] = byte(0) + } + enc = buf[:2] + + case byte: + buf[0] = 'B' + buf[1] = v + enc = buf[:2] + + case int8: + buf[0] = 'b' + buf[1] = uint8(v) + enc = buf[:2] + + case int16: + buf[0] = 's' + binary.BigEndian.PutUint16(buf[1:3], uint16(v)) + enc = buf[:3] + + case int: + buf[0] = 'I' + binary.BigEndian.PutUint32(buf[1:5], uint32(v)) + enc = buf[:5] + + case int32: + buf[0] = 'I' + binary.BigEndian.PutUint32(buf[1:5], uint32(v)) + enc = buf[:5] + + case int64: + buf[0] = 'l' + binary.BigEndian.PutUint64(buf[1:9], uint64(v)) + enc = buf[:9] + + case float32: + buf[0] = 'f' + binary.BigEndian.PutUint32(buf[1:5], math.Float32bits(v)) + enc = buf[:5] + + case float64: + buf[0] = 'd' + binary.BigEndian.PutUint64(buf[1:9], math.Float64bits(v)) + enc = buf[:9] + + case Decimal: + buf[0] = 'D' + buf[1] = v.Scale + binary.BigEndian.PutUint32(buf[2:6], uint32(v.Value)) + enc = buf[:6] + + case string: + buf[0] = 'S' + binary.BigEndian.PutUint32(buf[1:5], uint32(len(v))) + enc = append(buf[:5], []byte(v)...) + + case []interface{}: // field-array + buf[0] = 'A' + + sec := new(bytes.Buffer) + for _, val := range v { + if err = writeField(sec, val); err != nil { + return + } + } + + binary.BigEndian.PutUint32(buf[1:5], uint32(sec.Len())) + if _, err = w.Write(buf[:5]); err != nil { + return + } + + if _, err = w.Write(sec.Bytes()); err != nil { + return + } + + return + + case time.Time: + buf[0] = 'T' + binary.BigEndian.PutUint64(buf[1:9], uint64(v.Unix())) + enc = buf[:9] + + case Table: + if _, err = w.Write([]byte{'F'}); err != nil { + return + } + return writeTable(w, v) + + case []byte: + buf[0] = 'x' + binary.BigEndian.PutUint32(buf[1:5], uint32(len(v))) + if _, err = w.Write(buf[0:5]); err != nil { + return + } + if _, err = w.Write(v); err != nil { + return + } + return + + case nil: + buf[0] = 'V' + enc = buf[:1] + + default: + return ErrFieldType + } + + _, err = w.Write(enc) + + return +} + +func writeTable(w io.Writer, table Table) (err error) { + var buf bytes.Buffer + + for key, val := range table { + if err = writeShortstr(&buf, key); err != nil { + return + } + if err = writeField(&buf, val); err != nil { + return + } + } + + return writeLongstr(w, buf.String()) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE new file mode 100644 index 0000000..81fb4ea --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE @@ -0,0 +1,25 @@ +MIT License + +Copyright (C) 2021 Gabriele Santomaggio +Portions Copyright (C) vmware + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go new file mode 100644 index 0000000..448f7db --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go @@ -0,0 +1,157 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "io" +) + +// buffer is similar to bytes.Buffer but specialized for this package +type buffer struct { + b []byte + i int +} + +func (b *buffer) next(n int64) ([]byte, bool) { + if b.readCheck(n) { + buf := b.b[b.i:len(b.b)] + b.i = len(b.b) + return buf, false + } + + buf := b.b[b.i : b.i+int(n)] + b.i += int(n) + return buf, true +} + +func (b *buffer) skip(n int) { + b.i += n +} + +func (b *buffer) readCheck(n int64) bool { + return int64(b.i)+n > int64(len(b.b)) +} + +func (b *buffer) readByte() (byte, error) { + if b.readCheck(1) { + return 0, io.EOF + } + + byte_ := b.b[b.i] + b.i++ + return byte_, nil +} + +func (b *buffer) readType() (amqpType, error) { + n, err := b.readByte() + return amqpType(n), err +} + +func (b *buffer) peekType() (amqpType, error) { + if b.readCheck(1) { + return 0, io.EOF + } + + return amqpType(b.b[b.i]), nil +} + +func (b *buffer) readUint16() (uint16, error) { + if b.readCheck(2) { + return 0, io.EOF + } + + n := binary.BigEndian.Uint16(b.b[b.i:]) + b.i += 2 + return n, nil +} + +func (b *buffer) readUint32() (uint32, error) { + if b.readCheck(4) { + return 0, io.EOF + } + + n := binary.BigEndian.Uint32(b.b[b.i:]) + b.i += 4 + return n, nil +} + +func (b *buffer) readUint64() (uint64, error) { + if b.readCheck(8) { + return 0, io.EOF + } + + n := binary.BigEndian.Uint64(b.b[b.i : b.i+8]) + b.i += 8 + return n, nil +} + +func (b *buffer) write(p []byte) { + b.b = append(b.b, p...) +} + +func (b *buffer) writeByte(byte_ byte) { + b.b = append(b.b, byte_) +} + +func (b *buffer) writeString(s string) { + b.b = append(b.b, s...) +} + +func (b *buffer) len() int { + return len(b.b) - b.i +} + +func (b *buffer) bytes() []byte { + return b.b[b.i:] +} + +func (b *buffer) writeUint16(n uint16) { + b.b = append(b.b, + byte(n>>8), + byte(n), + ) +} + +func (b *buffer) writeUint32(n uint32) { + b.b = append(b.b, + byte(n>>24), + byte(n>>16), + byte(n>>8), + byte(n), + ) +} + +func (b *buffer) writeUint64(n uint64) { + b.b = append(b.b, + byte(n>>56), + byte(n>>48), + byte(n>>40), + byte(n>>32), + byte(n>>24), + byte(n>>16), + byte(n>>8), + byte(n), + ) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go new file mode 100644 index 0000000..ebebcf1 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go @@ -0,0 +1,1156 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "math" + "reflect" + "time" +) + +// unmarshaler is fulfilled by types that can unmarshal +// themselves from AMQP data. +type unmarshaler interface { + unmarshal(r *buffer) error +} + +// unmarshal decodes AMQP encoded data into i. +// +// The decoding method is based on the type of i. +// +// If i implements unmarshaler, i.unmarshal() will be called. +// +// Pointers to primitive types will be decoded via the appropriate read[type] function. +// +// If it is a pointer to a pointer (**Type), it will be dereferenced and a new instance +// of (*Type) is allocated via reflection. +// +// Common map types (map[string]string, map[Symbol]interface{}, and +// map[interface{}]interface{}), will be decoded via conversion to the mapStringAny, +// mapSymbolAny, and mapAnyAny types. +func unmarshal(r *buffer, i interface{}) error { + if tryReadNull(r) { + return nil + } + + switch t := i.(type) { + case *int: + val, err := readInt(r) + if err != nil { + return err + } + *t = val + case *int8: + val, err := readSbyte(r) + if err != nil { + return err + } + *t = val + case *int16: + val, err := readShort(r) + if err != nil { + return err + } + *t = val + case *int32: + val, err := readInt32(r) + if err != nil { + return err + } + *t = val + case *int64: + val, err := readLong(r) + if err != nil { + return err + } + *t = val + case *uint64: + val, err := readUlong(r) + if err != nil { + return err + } + *t = val + case *uint32: + val, err := readUint32(r) + if err != nil { + return err + } + *t = val + case **uint32: // fastpath for uint32 pointer fields + val, err := readUint32(r) + if err != nil { + return err + } + *t = &val + case *uint16: + val, err := readUshort(r) + if err != nil { + return err + } + *t = val + case *uint8: + val, err := readUbyte(r) + if err != nil { + return err + } + *t = val + case *float32: + val, err := readFloat(r) + if err != nil { + return err + } + *t = val + case *float64: + val, err := readDouble(r) + if err != nil { + return err + } + *t = val + case *string: + val, err := readString(r) + if err != nil { + return err + } + *t = val + case *symbol: + s, err := readString(r) + if err != nil { + return err + } + *t = symbol(s) + case *[]byte: + val, err := readBinary(r) + if err != nil { + return err + } + *t = val + case *bool: + b, err := readBool(r) + if err != nil { + return err + } + *t = b + case *time.Time: + ts, err := readTimestamp(r) + if err != nil { + return err + } + *t = ts + case *[]int8: + return (*arrayInt8)(t).unmarshal(r) + case *[]uint16: + return (*arrayUint16)(t).unmarshal(r) + case *[]int16: + return (*arrayInt16)(t).unmarshal(r) + case *[]uint32: + return (*arrayUint32)(t).unmarshal(r) + case *[]int32: + return (*arrayInt32)(t).unmarshal(r) + case *[]uint64: + return (*arrayUint64)(t).unmarshal(r) + case *[]int64: + return (*arrayInt64)(t).unmarshal(r) + case *[]float32: + return (*arrayFloat)(t).unmarshal(r) + case *[]float64: + return (*arrayDouble)(t).unmarshal(r) + case *[]bool: + return (*arrayBool)(t).unmarshal(r) + case *[]string: + return (*arrayString)(t).unmarshal(r) + case *[]symbol: + return (*arraySymbol)(t).unmarshal(r) + case *[][]byte: + return (*arrayBinary)(t).unmarshal(r) + case *[]time.Time: + return (*arrayTimestamp)(t).unmarshal(r) + case *[]UUID: + return (*arrayUUID)(t).unmarshal(r) + case *[]interface{}: + return (*list)(t).unmarshal(r) + case *map[interface{}]interface{}: + return (*mapAnyAny)(t).unmarshal(r) + case *map[string]interface{}: + return (*mapStringAny)(t).unmarshal(r) + case *map[symbol]interface{}: + return (*mapSymbolAny)(t).unmarshal(r) + case *deliveryState: + type_, err := peekMessageType(r.bytes()) + if err != nil { + return err + } + + switch amqpType(type_) { + case typeCodeStateAccepted: + *t = new(stateAccepted) + case typeCodeStateModified: + *t = new(stateModified) + case typeCodeStateReceived: + *t = new(stateReceived) + case typeCodeStateRejected: + *t = new(stateRejected) + case typeCodeStateReleased: + *t = new(stateReleased) + default: + return errorErrorf("unexpected type %d for deliveryState", type_) + } + return unmarshal(r, *t) + + case *interface{}: + v, err := readAny(r) + if err != nil { + return err + } + *t = v + + case unmarshaler: + return t.unmarshal(r) + default: + // handle **T + v := reflect.Indirect(reflect.ValueOf(i)) + + // can't unmarshal into a non-pointer + if v.Kind() != reflect.Ptr { + return errorErrorf("unable to unmarshal %T", i) + } + + // if nil pointer, allocate a new value to + // unmarshal into + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + + return unmarshal(r, v.Interface()) + } + return nil +} + +// unmarshalComposite is a helper for use in a composite's unmarshal() function. +// +// The composite from r will be unmarshaled into zero or more fields. An error +// will be returned if typ does not match the decoded type. +func unmarshalComposite(r *buffer, type_ amqpType, fields ...unmarshalField) error { + cType, numFields, err := readCompositeHeader(r) + if err != nil { + return err + } + + // check type matches expectation + if cType != type_ { + return errorErrorf("invalid header %#0x for %#0x", cType, type_) + } + + // Validate the field count is less than or equal to the number of fields + // provided. Fields may be omitted by the sender if they are not set. + if numFields > int64(len(fields)) { + return errorErrorf("invalid field count %d for %#0x", numFields, type_) + } + + for i, field := range fields[:numFields] { + // If the field is null and handleNull is set, call it. + if tryReadNull(r) { + if field.handleNull != nil { + err = field.handleNull() + if err != nil { + return err + } + } + continue + } + + // Unmarshal each of the received fields. + err = unmarshal(r, field.field) + if err != nil { + return errorWrapf(err, "unmarshaling field %d", i) + } + } + + // check and call handleNull for the remaining fields + for _, field := range fields[numFields:] { + if field.handleNull != nil { + err = field.handleNull() + if err != nil { + return err + } + } + } + + return nil +} + +// unmarshalField is a struct that contains a field to be unmarshaled into. +// +// An optional nullHandler can be set. If the composite field being unmarshaled +// is null and handleNull is not nil, nullHandler will be called. +type unmarshalField struct { + field interface{} + handleNull nullHandler +} + +// nullHandler is a function to be called when a composite's field +// is null. +type nullHandler func() error + +// readCompositeHeader reads and consumes the composite header from r. +func readCompositeHeader(r *buffer) (_ amqpType, fields int64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, 0, err + } + + // compsites always start with 0x0 + if type_ != 0 { + return 0, 0, errorErrorf("invalid composite header %#02x", type_) + } + + // next, the composite type is encoded as an AMQP uint8 + v, err := readUlong(r) + if err != nil { + return 0, 0, err + } + + // fields are represented as a list + fields, err = readListHeader(r) + + return amqpType(v), fields, err +} + +func readListHeader(r *buffer) (length int64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + listLength := r.len() + + switch type_ { + case typeCodeList0: + return 0, nil + case typeCodeList8: + buf, ok := r.next(2) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[1] + + size := int(buf[0]) + if size > listLength-1 { + return 0, errorNew("invalid length") + } + length = int64(buf[1]) + case typeCodeList32: + buf, ok := r.next(8) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[7] + + size := int(binary.BigEndian.Uint32(buf[:4])) + if size > listLength-4 { + return 0, errorNew("invalid length") + } + length = int64(binary.BigEndian.Uint32(buf[4:8])) + default: + return 0, errorErrorf("type code %#02x is not a recognized list type", type_) + } + + return length, nil +} + +func readArrayHeader(r *buffer) (length int64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + arrayLength := r.len() + + switch type_ { + case typeCodeArray8: + buf, ok := r.next(2) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[1] + + size := int(buf[0]) + if size > arrayLength-1 { + return 0, errorNew("invalid length") + } + length = int64(buf[1]) + case typeCodeArray32: + buf, ok := r.next(8) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[7] + + size := binary.BigEndian.Uint32(buf[:4]) + if int(size) > arrayLength-4 { + return 0, errorErrorf("invalid length for type %02x", type_) + } + length = int64(binary.BigEndian.Uint32(buf[4:8])) + default: + return 0, errorErrorf("type code %#02x is not a recognized array type", type_) + } + return length, nil +} + +func readString(r *buffer) (string, error) { + type_, err := r.readType() + if err != nil { + return "", err + } + + var length int64 + switch type_ { + case typeCodeStr8, typeCodeSym8: + n, err := r.readByte() + if err != nil { + return "", err + } + length = int64(n) + case typeCodeStr32, typeCodeSym32: + buf, ok := r.next(4) + if !ok { + return "", errorErrorf("invalid length for type %#02x", type_) + } + length = int64(binary.BigEndian.Uint32(buf)) + default: + return "", errorErrorf("type code %#02x is not a recognized string type", type_) + } + + buf, ok := r.next(length) + if !ok { + return "", errorNew("invalid length") + } + return string(buf), nil +} + +func readBinary(r *buffer) ([]byte, error) { + type_, err := r.readType() + if err != nil { + return nil, err + } + + var length int64 + switch type_ { + case typeCodeVbin8: + n, err := r.readByte() + if err != nil { + return nil, err + } + length = int64(n) + case typeCodeVbin32: + buf, ok := r.next(4) + if !ok { + return nil, errorErrorf("invalid length for type %#02x", type_) + } + length = int64(binary.BigEndian.Uint32(buf)) + default: + return nil, errorErrorf("type code %#02x is not a recognized binary type", type_) + } + + if length == 0 { + // An empty value and a nil value are distinct, + // ensure that the returned value is not nil in this case. + return make([]byte, 0), nil + } + + buf, ok := r.next(length) + if !ok { + return nil, errorNew("invalid length") + } + return append([]byte(nil), buf...), nil +} + +func readAny(r *buffer) (interface{}, error) { + if tryReadNull(r) { + return nil, nil + } + + type_, err := r.peekType() + if err != nil { + return nil, errorNew("invalid length") + } + + switch type_ { + // composite + case 0x0: + return readComposite(r) + + // bool + case typeCodeBool, typeCodeBoolTrue, typeCodeBoolFalse: + return readBool(r) + + // uint + case typeCodeUbyte: + return readUbyte(r) + case typeCodeUshort: + return readUshort(r) + case typeCodeUint, + typeCodeSmallUint, + typeCodeUint0: + return readUint32(r) + case typeCodeUlong, + typeCodeSmallUlong, + typeCodeUlong0: + return readUlong(r) + + // int + case typeCodeByte: + return readSbyte(r) + case typeCodeShort: + return readShort(r) + case typeCodeInt, + typeCodeSmallint: + return readInt32(r) + case typeCodeLong, + typeCodeSmalllong: + return readLong(r) + + // floating point + case typeCodeFloat: + return readFloat(r) + case typeCodeDouble: + return readDouble(r) + + // binary + case typeCodeVbin8, typeCodeVbin32: + return readBinary(r) + + // strings + case typeCodeStr8, typeCodeStr32: + return readString(r) + case typeCodeSym8, typeCodeSym32: + // symbols currently decoded as string to avoid + // exposing symbol type in message, this may need + // to change if users need to distinguish strings + // from symbols + return readString(r) + + // timestamp + case typeCodeTimestamp: + return readTimestamp(r) + + // UUID + case typeCodeUUID: + return readUUID(r) + + // arrays + case typeCodeArray8, typeCodeArray32: + return readAnyArray(r) + + // lists + case typeCodeList0, typeCodeList8, typeCodeList32: + return readAnyList(r) + + // maps + case typeCodeMap8: + return readAnyMap(r) + case typeCodeMap32: + return readAnyMap(r) + + // TODO: implement + case typeCodeDecimal32: + return nil, errorNew("decimal32 not implemented") + case typeCodeDecimal64: + return nil, errorNew("decimal64 not implemented") + case typeCodeDecimal128: + return nil, errorNew("decimal128 not implemented") + case typeCodeChar: + return nil, errorNew("char not implemented") + default: + return nil, errorErrorf("unknown type %#02x", type_) + } +} + +func readAnyMap(r *buffer) (interface{}, error) { + var m map[interface{}]interface{} + err := (*mapAnyAny)(&m).unmarshal(r) + if err != nil { + return nil, err + } + + if len(m) == 0 { + return m, nil + } + + stringKeys := true +Loop: + for key := range m { + switch key.(type) { + case string: + case symbol: + default: + stringKeys = false + break Loop + } + } + + if stringKeys { + mm := make(map[string]interface{}, len(m)) + for key, value := range m { + switch key := key.(type) { + case string: + mm[key] = value + case symbol: + mm[string(key)] = value + } + } + return mm, nil + } + + return m, nil +} + +func readAnyList(r *buffer) (interface{}, error) { + var a []interface{} + err := (*list)(&a).unmarshal(r) + return a, err +} + +func readAnyArray(r *buffer) (interface{}, error) { + // get the array type + buf := r.bytes() + if len(buf) < 1 { + return nil, errorNew("invalid length") + } + + var typeIdx int + switch amqpType(buf[0]) { + case typeCodeArray8: + typeIdx = 3 + case typeCodeArray32: + typeIdx = 9 + default: + return nil, errorErrorf("invalid array type %02x", buf[0]) + } + if len(buf) < typeIdx+1 { + return nil, errorNew("invalid length") + } + + switch amqpType(buf[typeIdx]) { + case typeCodeByte: + var a []int8 + err := (*arrayInt8)(&a).unmarshal(r) + return a, err + case typeCodeUbyte: + var a ArrayUByte + err := a.unmarshal(r) + return a, err + case typeCodeUshort: + var a []uint16 + err := (*arrayUint16)(&a).unmarshal(r) + return a, err + case typeCodeShort: + var a []int16 + err := (*arrayInt16)(&a).unmarshal(r) + return a, err + case typeCodeUint0, typeCodeSmallUint, typeCodeUint: + var a []uint32 + err := (*arrayUint32)(&a).unmarshal(r) + return a, err + case typeCodeSmallint, typeCodeInt: + var a []int32 + err := (*arrayInt32)(&a).unmarshal(r) + return a, err + case typeCodeUlong0, typeCodeSmallUlong, typeCodeUlong: + var a []uint64 + err := (*arrayUint64)(&a).unmarshal(r) + return a, err + case typeCodeSmalllong, typeCodeLong: + var a []int64 + err := (*arrayInt64)(&a).unmarshal(r) + return a, err + case typeCodeFloat: + var a []float32 + err := (*arrayFloat)(&a).unmarshal(r) + return a, err + case typeCodeDouble: + var a []float64 + err := (*arrayDouble)(&a).unmarshal(r) + return a, err + case typeCodeBool, typeCodeBoolTrue, typeCodeBoolFalse: + var a []bool + err := (*arrayBool)(&a).unmarshal(r) + return a, err + case typeCodeStr8, typeCodeStr32: + var a []string + err := (*arrayString)(&a).unmarshal(r) + return a, err + case typeCodeSym8, typeCodeSym32: + var a []symbol + err := (*arraySymbol)(&a).unmarshal(r) + return a, err + case typeCodeVbin8, typeCodeVbin32: + var a [][]byte + err := (*arrayBinary)(&a).unmarshal(r) + return a, err + case typeCodeTimestamp: + var a []time.Time + err := (*arrayTimestamp)(&a).unmarshal(r) + return a, err + case typeCodeUUID: + var a []UUID + err := (*arrayUUID)(&a).unmarshal(r) + return a, err + default: + return nil, errorErrorf("array decoding not implemented for %#02x", buf[typeIdx]) + } +} + +func readComposite(r *buffer) (interface{}, error) { + buf := r.bytes() + + if len(buf) < 2 { + return nil, errorNew("invalid length for composite") + } + + // compsites start with 0x0 + if amqpType(buf[0]) != 0x0 { + return nil, errorErrorf("invalid composite header %#02x", buf[0]) + } + + var compositeType uint64 + switch amqpType(buf[1]) { + case typeCodeSmallUlong: + if len(buf) < 3 { + return nil, errorNew("invalid length for smallulong") + } + compositeType = uint64(buf[2]) + case typeCodeUlong: + if len(buf) < 10 { + return nil, errorNew("invalid length for ulong") + } + compositeType = binary.BigEndian.Uint64(buf[2:]) + } + + if compositeType > math.MaxUint8 { + // try as described type + var dt describedType + err := dt.unmarshal(r) + return dt, err + } + + switch amqpType(compositeType) { + // Error + case typeCodeError: + t := new(Error) + err := t.unmarshal(r) + return t, err + + // Lifetime Policies + case typeCodeDeleteOnClose: + t := deleteOnClose + err := t.unmarshal(r) + return t, err + case typeCodeDeleteOnNoMessages: + t := deleteOnNoMessages + err := t.unmarshal(r) + return t, err + case typeCodeDeleteOnNoLinks: + t := deleteOnNoLinks + err := t.unmarshal(r) + return t, err + case typeCodeDeleteOnNoLinksOrMessages: + t := deleteOnNoLinksOrMessages + err := t.unmarshal(r) + return t, err + + // Delivery States + case typeCodeStateAccepted: + t := new(stateAccepted) + err := t.unmarshal(r) + return t, err + case typeCodeStateModified: + t := new(stateModified) + err := t.unmarshal(r) + return t, err + case typeCodeStateReceived: + t := new(stateReceived) + err := t.unmarshal(r) + return t, err + case typeCodeStateRejected: + t := new(stateRejected) + err := t.unmarshal(r) + return t, err + case typeCodeStateReleased: + t := new(stateReleased) + err := t.unmarshal(r) + return t, err + + case typeCodeOpen, + typeCodeBegin, + typeCodeAttach, + typeCodeFlow, + typeCodeTransfer, + typeCodeDisposition, + typeCodeDetach, + typeCodeEnd, + typeCodeClose, + typeCodeSource, + typeCodeTarget, + typeCodeMessageHeader, + typeCodeDeliveryAnnotations, + typeCodeMessageAnnotations, + typeCodeMessageProperties, + typeCodeApplicationProperties, + typeCodeApplicationData, + typeCodeAMQPSequence, + typeCodeAMQPValue, + typeCodeFooter, + typeCodeSASLMechanism, + typeCodeSASLInit, + typeCodeSASLChallenge, + typeCodeSASLResponse, + typeCodeSASLOutcome: + return nil, errorErrorf("readComposite unmarshal not implemented for %#02x", compositeType) + + default: + // try as described type + var dt describedType + err := dt.unmarshal(r) + return dt, err + } +} + +func readTimestamp(r *buffer) (time.Time, error) { + type_, err := r.readType() + if err != nil { + return time.Time{}, err + } + + if type_ != typeCodeTimestamp { + return time.Time{}, errorErrorf("invalid type for timestamp %02x", type_) + } + + n, err := r.readUint64() + ms := int64(n) + return time.Unix(ms/1000, (ms%1000)*1000000).UTC(), err +} + +func readInt(r *buffer) (int, error) { + type_, err := r.peekType() + if err != nil { + return 0, err + } + + switch type_ { + // Unsigned + case typeCodeUbyte: + n, err := readUbyte(r) + return int(n), err + case typeCodeUshort: + n, err := readUshort(r) + return int(n), err + case typeCodeUint0, typeCodeSmallUint, typeCodeUint: + n, err := readUint32(r) + return int(n), err + case typeCodeUlong0, typeCodeSmallUlong, typeCodeUlong: + n, err := readUlong(r) + return int(n), err + + // Signed + case typeCodeByte: + n, err := readSbyte(r) + return int(n), err + case typeCodeShort: + n, err := readShort(r) + return int(n), err + case typeCodeSmallint, typeCodeInt: + n, err := readInt32(r) + return int(n), err + case typeCodeSmalllong, typeCodeLong: + n, err := readLong(r) + return int(n), err + default: + return 0, errorErrorf("type code %#02x is not a recognized number type", type_) + } +} + +func readLong(r *buffer) (int64, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeSmalllong: + n, err := r.readByte() + return int64(n), err + case typeCodeLong: + n, err := r.readUint64() + return int64(n), err + default: + return 0, errorErrorf("invalid type for uint32 %02x", type_) + } +} + +func readInt32(r *buffer) (int32, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeSmallint: + n, err := r.readByte() + return int32(n), err + case typeCodeInt: + n, err := r.readUint32() + return int32(n), err + default: + return 0, errorErrorf("invalid type for int32 %02x", type_) + } +} + +func readShort(r *buffer) (int16, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeShort { + return 0, errorErrorf("invalid type for short %02x", type_) + } + + n, err := r.readUint16() + return int16(n), err +} + +func readSbyte(r *buffer) (int8, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeByte { + return 0, errorErrorf("invalid type for int8 %02x", type_) + } + + n, err := r.readByte() + return int8(n), err +} + +func readUbyte(r *buffer) (uint8, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeUbyte { + return 0, errorErrorf("invalid type for ubyte %02x", type_) + } + + return r.readByte() +} + +func readUshort(r *buffer) (uint16, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeUshort { + return 0, errorErrorf("invalid type for ushort %02x", type_) + } + + return r.readUint16() +} + +func readUint32(r *buffer) (uint32, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeUint0: + return 0, nil + case typeCodeSmallUint: + n, err := r.readByte() + return uint32(n), err + case typeCodeUint: + return r.readUint32() + default: + return 0, errorErrorf("invalid type for uint32 %02x", type_) + } +} + +func readUlong(r *buffer) (uint64, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeUlong0: + return 0, nil + case typeCodeSmallUlong: + n, err := r.readByte() + return uint64(n), err + case typeCodeUlong: + return r.readUint64() + default: + return 0, errorErrorf("invalid type for uint32 %02x", type_) + } +} + +func readFloat(r *buffer) (float32, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeFloat { + return 0, errorErrorf("invalid type for float32 %02x", type_) + } + + bits, err := r.readUint32() + return math.Float32frombits(bits), err +} + +func readDouble(r *buffer) (float64, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeDouble { + return 0, errorErrorf("invalid type for float64 %02x", type_) + } + + bits, err := r.readUint64() + return math.Float64frombits(bits), err +} + +func readBool(r *buffer) (bool, error) { + type_, err := r.readType() + if err != nil { + return false, err + } + + switch type_ { + case typeCodeBool: + b, err := r.readByte() + return b != 0, err + case typeCodeBoolTrue: + return true, nil + case typeCodeBoolFalse: + return false, nil + default: + return false, errorErrorf("type code %#02x is not a recognized bool type", type_) + } +} + +func readUint(r *buffer) (value uint64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeUint0, typeCodeUlong0: + return 0, nil + case typeCodeUbyte, typeCodeSmallUint, typeCodeSmallUlong: + n, err := r.readByte() + return uint64(n), err + case typeCodeUshort: + n, err := r.readUint16() + return uint64(n), err + case typeCodeUint: + n, err := r.readUint32() + return uint64(n), err + case typeCodeUlong: + return r.readUint64() + default: + return 0, errorErrorf("type code %#02x is not a recognized number type", type_) + } +} + +func readUUID(r *buffer) (UUID, error) { + var uuid UUID + + type_, err := r.readType() + if err != nil { + return uuid, err + } + + if type_ != typeCodeUUID { + return uuid, errorErrorf("type code %#00x is not a UUID", type_) + } + + buf, ok := r.next(16) + if !ok { + return uuid, errorNew("invalid length") + } + copy(uuid[:], buf) + + return uuid, nil +} + +func readMapHeader(r *buffer) (count uint32, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + length := r.len() + + switch type_ { + case typeCodeMap8: + buf, ok := r.next(2) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[1] + + size := int(buf[0]) + if size > length-1 { + return 0, errorNew("invalid length") + } + count = uint32(buf[1]) + case typeCodeMap32: + buf, ok := r.next(8) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[7] + + size := int(binary.BigEndian.Uint32(buf[:4])) + if size > length-4 { + return 0, errorNew("invalid length") + } + count = binary.BigEndian.Uint32(buf[4:8]) + default: + return 0, errorErrorf("invalid map type %#02x", type_) + } + + if int(count) > r.len() { + return 0, errorNew("invalid length") + } + return count, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go new file mode 100644 index 0000000..30cc186 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go @@ -0,0 +1,589 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "math" + "time" + "unicode/utf8" +) + +type marshaler interface { + marshal(*buffer) error +} + +func marshal(wr *buffer, i interface{}) error { + switch t := i.(type) { + case nil: + wr.writeByte(byte(typeCodeNull)) + case bool: + if t { + wr.writeByte(byte(typeCodeBoolTrue)) + } else { + wr.writeByte(byte(typeCodeBoolFalse)) + } + case *bool: + if *t { + wr.writeByte(byte(typeCodeBoolTrue)) + } else { + wr.writeByte(byte(typeCodeBoolFalse)) + } + case uint: + writeUint64(wr, uint64(t)) + case *uint: + writeUint64(wr, uint64(*t)) + case uint64: + writeUint64(wr, t) + case *uint64: + writeUint64(wr, *t) + case uint32: + writeUint32(wr, t) + case *uint32: + writeUint32(wr, *t) + case uint16: + wr.writeByte(byte(typeCodeUshort)) + wr.writeUint16(t) + case *uint16: + wr.writeByte(byte(typeCodeUshort)) + wr.writeUint16(*t) + case uint8: + wr.write([]byte{ + byte(typeCodeUbyte), + t, + }) + case *uint8: + wr.write([]byte{ + byte(typeCodeUbyte), + *t, + }) + case int: + writeInt64(wr, int64(t)) + case *int: + writeInt64(wr, int64(*t)) + case int8: + wr.write([]byte{ + byte(typeCodeByte), + uint8(t), + }) + case *int8: + wr.write([]byte{ + byte(typeCodeByte), + uint8(*t), + }) + case int16: + wr.writeByte(byte(typeCodeShort)) + wr.writeUint16(uint16(t)) + case *int16: + wr.writeByte(byte(typeCodeShort)) + wr.writeUint16(uint16(*t)) + case int32: + writeInt32(wr, t) + case *int32: + writeInt32(wr, *t) + case int64: + writeInt64(wr, t) + case *int64: + writeInt64(wr, *t) + case float32: + writeFloat(wr, t) + case *float32: + writeFloat(wr, *t) + case float64: + writeDouble(wr, t) + case *float64: + writeDouble(wr, *t) + case string: + return writeString(wr, t) + case *string: + return writeString(wr, *t) + case []byte: + return writeBinary(wr, t) + case *[]byte: + return writeBinary(wr, *t) + case map[interface{}]interface{}: + return writeMap(wr, t) + case *map[interface{}]interface{}: + return writeMap(wr, *t) + case map[string]interface{}: + return writeMap(wr, t) + case *map[string]interface{}: + return writeMap(wr, *t) + case map[symbol]interface{}: + return writeMap(wr, t) + case *map[symbol]interface{}: + return writeMap(wr, *t) + case unsettled: + return writeMap(wr, t) + case *unsettled: + return writeMap(wr, *t) + case time.Time: + writeTimestamp(wr, t) + case *time.Time: + writeTimestamp(wr, *t) + case []int8: + return arrayInt8(t).marshal(wr) + case *[]int8: + return arrayInt8(*t).marshal(wr) + case []uint16: + return arrayUint16(t).marshal(wr) + case *[]uint16: + return arrayUint16(*t).marshal(wr) + case []int16: + return arrayInt16(t).marshal(wr) + case *[]int16: + return arrayInt16(*t).marshal(wr) + case []uint32: + return arrayUint32(t).marshal(wr) + case *[]uint32: + return arrayUint32(*t).marshal(wr) + case []int32: + return arrayInt32(t).marshal(wr) + case *[]int32: + return arrayInt32(*t).marshal(wr) + case []uint64: + return arrayUint64(t).marshal(wr) + case *[]uint64: + return arrayUint64(*t).marshal(wr) + case []int64: + return arrayInt64(t).marshal(wr) + case *[]int64: + return arrayInt64(*t).marshal(wr) + case []float32: + return arrayFloat(t).marshal(wr) + case *[]float32: + return arrayFloat(*t).marshal(wr) + case []float64: + return arrayDouble(t).marshal(wr) + case *[]float64: + return arrayDouble(*t).marshal(wr) + case []bool: + return arrayBool(t).marshal(wr) + case *[]bool: + return arrayBool(*t).marshal(wr) + case []string: + return arrayString(t).marshal(wr) + case *[]string: + return arrayString(*t).marshal(wr) + case []symbol: + return arraySymbol(t).marshal(wr) + case *[]symbol: + return arraySymbol(*t).marshal(wr) + case [][]byte: + return arrayBinary(t).marshal(wr) + case *[][]byte: + return arrayBinary(*t).marshal(wr) + case []time.Time: + return arrayTimestamp(t).marshal(wr) + case *[]time.Time: + return arrayTimestamp(*t).marshal(wr) + case []UUID: + return arrayUUID(t).marshal(wr) + case *[]UUID: + return arrayUUID(*t).marshal(wr) + case []interface{}: + return list(t).marshal(wr) + case *[]interface{}: + return list(*t).marshal(wr) + case marshaler: + return t.marshal(wr) + default: + return errorErrorf("marshal not implemented for %T", i) + } + return nil +} + +func writeInt32(wr *buffer, n int32) { + if n < 128 && n >= -128 { + wr.write([]byte{ + byte(typeCodeSmallint), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeInt)) + wr.writeUint32(uint32(n)) +} + +func writeInt64(wr *buffer, n int64) { + if n < 128 && n >= -128 { + wr.write([]byte{ + byte(typeCodeSmalllong), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeLong)) + wr.writeUint64(uint64(n)) +} + +func writeUint32(wr *buffer, n uint32) { + if n == 0 { + wr.writeByte(byte(typeCodeUint0)) + return + } + + if n < 256 { + wr.write([]byte{ + byte(typeCodeSmallUint), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeUint)) + wr.writeUint32(n) +} + +func writeUint64(wr *buffer, n uint64) { + if n == 0 { + wr.writeByte(byte(typeCodeUlong0)) + return + } + + if n < 256 { + wr.write([]byte{ + byte(typeCodeSmallUlong), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeUlong)) + wr.writeUint64(n) +} + +func writeFloat(wr *buffer, f float32) { + wr.writeByte(byte(typeCodeFloat)) + wr.writeUint32(math.Float32bits(f)) +} + +func writeDouble(wr *buffer, f float64) { + wr.writeByte(byte(typeCodeDouble)) + wr.writeUint64(math.Float64bits(f)) +} + +func writeTimestamp(wr *buffer, t time.Time) { + wr.writeByte(byte(typeCodeTimestamp)) + ms := t.UnixNano() / int64(time.Millisecond) + wr.writeUint64(uint64(ms)) +} + +// marshalField is a field to be marshaled +type marshalField struct { + value interface{} // value to be marshaled, use pointers to avoid interface conversion overhead + omit bool // indicates that this field should be omitted (set to null) +} + +// marshalComposite is a helper for us in a composite's marshal() function. +// +// The returned bytes include the composite header and fields. Fields with +// omit set to true will be encoded as null or omitted altogether if there are +// no non-null fields after them. +func marshalComposite(wr *buffer, code amqpType, fields []marshalField) error { + // lastSetIdx is the last index to have a non-omitted field. + // start at -1 as it's possible to have no fields in a composite + lastSetIdx := -1 + + // marshal each field into it's index in rawFields, + // null fields are skipped, leaving the index nil. + for i, f := range fields { + if f.omit { + continue + } + lastSetIdx = i + } + + // write header only + if lastSetIdx == -1 { + wr.write([]byte{ + 0x0, + byte(typeCodeSmallUlong), + byte(code), + byte(typeCodeList0), + }) + return nil + } + + // write header + writeDescriptor(wr, code) + + // write fields + wr.writeByte(byte(typeCodeList32)) + + // write temp size, replace later + sizeIdx := wr.len() + wr.write([]byte{0, 0, 0, 0}) + preFieldLen := wr.len() + + // field count + wr.writeUint32(uint32(lastSetIdx + 1)) + + // write null to each index up to lastSetIdx + for _, f := range fields[:lastSetIdx+1] { + if f.omit { + wr.writeByte(byte(typeCodeNull)) + continue + } + err := marshal(wr, f.value) + if err != nil { + return err + } + } + + // fix size + size := uint32(wr.len() - preFieldLen) + buf := wr.bytes() + binary.BigEndian.PutUint32(buf[sizeIdx:], size) + + return nil +} + +func writeDescriptor(wr *buffer, code amqpType) { + wr.write([]byte{ + 0x0, + byte(typeCodeSmallUlong), + byte(code), + }) +} + +func writeString(wr *buffer, str string) error { + if !utf8.ValidString(str) { + return errorNew("not a valid UTF-8 string") + } + l := len(str) + + switch { + // Str8 + case l < 256: + wr.write([]byte{ + byte(typeCodeStr8), + byte(l), + }) + wr.writeString(str) + return nil + + // Str32 + case uint(l) < math.MaxUint32: + wr.writeByte(byte(typeCodeStr32)) + wr.writeUint32(uint32(l)) + wr.writeString(str) + return nil + + default: + return errorNew("too long") + } +} + +func writeBinary(wr *buffer, bin []byte) error { + l := len(bin) + + switch { + // List8 + case l < 256: + wr.write([]byte{ + byte(typeCodeVbin8), + byte(l), + }) + wr.write(bin) + return nil + + // List32 + case uint(l) < math.MaxUint32: + wr.writeByte(byte(typeCodeVbin32)) + wr.writeUint32(uint32(l)) + wr.write(bin) + return nil + + default: + return errorNew("too long") + } +} + +func writeMap(wr *buffer, m interface{}) error { + startIdx := wr.len() + wr.write([]byte{ + byte(typeCodeMap32), // type + 0, 0, 0, 0, // size placeholder + 0, 0, 0, 0, // length placeholder + }) + + var pairs int + switch m := m.(type) { + case map[interface{}]interface{}: + pairs = len(m) * 2 + for key, val := range m { + err := marshal(wr, key) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case map[string]interface{}: + pairs = len(m) * 2 + for key, val := range m { + err := writeString(wr, key) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case map[symbol]interface{}: + pairs = len(m) * 2 + for key, val := range m { + err := key.marshal(wr) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case unsettled: + pairs = len(m) * 2 + for key, val := range m { + err := writeString(wr, key) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case filter: + pairs = len(m) * 2 + for key, val := range m { + err := key.marshal(wr) + if err != nil { + return err + } + err = val.marshal(wr) + if err != nil { + return err + } + } + case Annotations: + pairs = len(m) * 2 + for key, val := range m { + switch key := key.(type) { + case string: + err := symbol(key).marshal(wr) + if err != nil { + return err + } + case symbol: + err := key.marshal(wr) + if err != nil { + return err + } + case int64: + writeInt64(wr, key) + case int: + writeInt64(wr, int64(key)) + default: + return errorErrorf("unsupported Annotations key type %T", key) + } + + err := marshal(wr, val) + if err != nil { + return err + } + } + default: + return errorErrorf("unsupported map type %T", m) + } + + if uint(pairs) > math.MaxUint32-4 { + return errorNew("map contains too many elements") + } + + // overwrite placeholder size and length + bytes := wr.bytes()[startIdx+1 : startIdx+9] + _ = bytes[7] // bounds check hint + + length := wr.len() - startIdx - 1 - 4 // -1 for type, -4 for length + binary.BigEndian.PutUint32(bytes[:4], uint32(length)) + binary.BigEndian.PutUint32(bytes[4:8], uint32(pairs)) + + return nil +} + +// type length sizes +const ( + array8TLSize = 2 + array32TLSize = 5 +) + +func writeArrayHeader(wr *buffer, length, typeSize int, type_ amqpType) { + size := length * typeSize + + // array type + if size+array8TLSize <= math.MaxUint8 { + wr.write([]byte{ + byte(typeCodeArray8), // type + byte(size + array8TLSize), // size + byte(length), // length + byte(type_), // element type + }) + } else { + wr.writeByte(byte(typeCodeArray32)) //type + wr.writeUint32(uint32(size + array32TLSize)) // size + wr.writeUint32(uint32(length)) // length + wr.writeByte(byte(type_)) // element type + } +} + +func writeVariableArrayHeader(wr *buffer, length, elementsSizeTotal int, type_ amqpType) { + // 0xA_ == 1, 0xB_ == 4 + // http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#doc-idp82960 + elementTypeSize := 1 + if type_&0xf0 == 0xb0 { + elementTypeSize = 4 + } + + size := elementsSizeTotal + (length * elementTypeSize) // size excluding array length + if size+array8TLSize <= math.MaxUint8 { + wr.write([]byte{ + byte(typeCodeArray8), // type + byte(size + array8TLSize), // size + byte(length), // length + byte(type_), // element type + }) + } else { + wr.writeByte(byte(typeCodeArray32)) // type + wr.writeUint32(uint32(size + array32TLSize)) // size + wr.writeUint32(uint32(length)) // length + wr.writeByte(byte(type_)) // element type + } +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go new file mode 100644 index 0000000..5bb2867 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go @@ -0,0 +1,39 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +//go:build !pkgerrors +// +build !pkgerrors + +package amqp + +import ( + "errors" + "fmt" +) + +// Default stdlib-based error functions. +var ( + errorNew = errors.New + errorErrorf = fmt.Errorf + errorWrapf = func(err error, _ string, _ ...interface{}) error { return err } +) diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go new file mode 100644 index 0000000..23067f3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go @@ -0,0 +1,2676 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "encoding/hex" + "fmt" + "math" + "reflect" + "time" + "unicode/utf8" +) + +type amqpType uint8 +type ProtoID uint8 + +// Type codes +const ( + typeCodeNull amqpType = 0x40 + + // Bool + typeCodeBool amqpType = 0x56 // boolean with the octet 0x00 being false and octet 0x01 being true + typeCodeBoolTrue amqpType = 0x41 + typeCodeBoolFalse amqpType = 0x42 + + // Unsigned + typeCodeUbyte amqpType = 0x50 // 8-bit unsigned integer (1) + typeCodeUshort amqpType = 0x60 // 16-bit unsigned integer in network byte order (2) + typeCodeUint amqpType = 0x70 // 32-bit unsigned integer in network byte order (4) + typeCodeSmallUint amqpType = 0x52 // unsigned integer value in the range 0 to 255 inclusive (1) + typeCodeUint0 amqpType = 0x43 // the uint value 0 (0) + typeCodeUlong amqpType = 0x80 // 64-bit unsigned integer in network byte order (8) + typeCodeSmallUlong amqpType = 0x53 // unsigned long value in the range 0 to 255 inclusive (1) + typeCodeUlong0 amqpType = 0x44 // the ulong value 0 (0) + + // Signed + typeCodeByte amqpType = 0x51 // 8-bit two's-complement integer (1) + typeCodeShort amqpType = 0x61 // 16-bit two's-complement integer in network byte order (2) + typeCodeInt amqpType = 0x71 // 32-bit two's-complement integer in network byte order (4) + typeCodeSmallint amqpType = 0x54 // 8-bit two's-complement integer (1) + typeCodeLong amqpType = 0x81 // 64-bit two's-complement integer in network byte order (8) + typeCodeSmalllong amqpType = 0x55 // 8-bit two's-complement integer + + // Decimal + typeCodeFloat amqpType = 0x72 // IEEE 754-2008 binary32 (4) + typeCodeDouble amqpType = 0x82 // IEEE 754-2008 binary64 (8) + typeCodeDecimal32 amqpType = 0x74 // IEEE 754-2008 decimal32 using the Binary Integer Decimal encoding (4) + typeCodeDecimal64 amqpType = 0x84 // IEEE 754-2008 decimal64 using the Binary Integer Decimal encoding (8) + typeCodeDecimal128 amqpType = 0x94 // IEEE 754-2008 decimal128 using the Binary Integer Decimal encoding (16) + + // Other + typeCodeChar amqpType = 0x73 // a UTF-32BE encoded Unicode character (4) + typeCodeTimestamp amqpType = 0x83 // 64-bit two's-complement integer representing milliseconds since the unix epoch + typeCodeUUID amqpType = 0x98 // UUID as defined in section 4.1.2 of RFC-4122 + + // Variable Length + typeCodeVbin8 amqpType = 0xa0 // up to 2^8 - 1 octets of binary data (1 + variable) + typeCodeVbin32 amqpType = 0xb0 // up to 2^32 - 1 octets of binary data (4 + variable) + typeCodeStr8 amqpType = 0xa1 // up to 2^8 - 1 octets worth of UTF-8 Unicode (with no byte order mark) (1 + variable) + typeCodeStr32 amqpType = 0xb1 // up to 2^32 - 1 octets worth of UTF-8 Unicode (with no byte order mark) (4 +variable) + typeCodeSym8 amqpType = 0xa3 // up to 2^8 - 1 seven bit ASCII characters representing a symbolic value (1 + variable) + typeCodeSym32 amqpType = 0xb3 // up to 2^32 - 1 seven bit ASCII characters representing a symbolic value (4 + variable) + + // Compound + typeCodeList0 amqpType = 0x45 // the empty list (i.e. the list with no elements) (0) + typeCodeList8 amqpType = 0xc0 // up to 2^8 - 1 list elements with total size less than 2^8 octets (1 + compound) + typeCodeList32 amqpType = 0xd0 // up to 2^32 - 1 list elements with total size less than 2^32 octets (4 + compound) + typeCodeMap8 amqpType = 0xc1 // up to 2^8 - 1 octets of encoded map data (1 + compound) + typeCodeMap32 amqpType = 0xd1 // up to 2^32 - 1 octets of encoded map data (4 + compound) + typeCodeArray8 amqpType = 0xe0 // up to 2^8 - 1 array elements with total size less than 2^8 octets (1 + array) + typeCodeArray32 amqpType = 0xf0 // up to 2^32 - 1 array elements with total size less than 2^32 octets (4 + array) + + // Composites + typeCodeOpen amqpType = 0x10 + typeCodeBegin amqpType = 0x11 + typeCodeAttach amqpType = 0x12 + typeCodeFlow amqpType = 0x13 + typeCodeTransfer amqpType = 0x14 + typeCodeDisposition amqpType = 0x15 + typeCodeDetach amqpType = 0x16 + typeCodeEnd amqpType = 0x17 + typeCodeClose amqpType = 0x18 + + typeCodeSource amqpType = 0x28 + typeCodeTarget amqpType = 0x29 + typeCodeError amqpType = 0x1d + + typeCodeMessageHeader amqpType = 0x70 + typeCodeDeliveryAnnotations amqpType = 0x71 + typeCodeMessageAnnotations amqpType = 0x72 + typeCodeMessageProperties amqpType = 0x73 + typeCodeApplicationProperties amqpType = 0x74 + typeCodeApplicationData amqpType = 0x75 + typeCodeAMQPSequence amqpType = 0x76 + typeCodeAMQPValue amqpType = 0x77 + typeCodeFooter amqpType = 0x78 + + typeCodeStateReceived amqpType = 0x23 + typeCodeStateAccepted amqpType = 0x24 + typeCodeStateRejected amqpType = 0x25 + typeCodeStateReleased amqpType = 0x26 + typeCodeStateModified amqpType = 0x27 + + typeCodeSASLMechanism amqpType = 0x40 + typeCodeSASLInit amqpType = 0x41 + typeCodeSASLChallenge amqpType = 0x42 + typeCodeSASLResponse amqpType = 0x43 + typeCodeSASLOutcome amqpType = 0x44 + + typeCodeDeleteOnClose amqpType = 0x2b + typeCodeDeleteOnNoLinks amqpType = 0x2c + typeCodeDeleteOnNoMessages amqpType = 0x2d + typeCodeDeleteOnNoLinksOrMessages amqpType = 0x2e +) + +// Frame structure: +// +// header (8 bytes) +// 0-3: SIZE (total size, at least 8 bytes for header, uint32) +// 4: DOFF (data offset,at least 2, count of 4 bytes words, uint8) +// 5: TYPE (frame type) +// 0x0: AMQP +// 0x1: SASL +// 6-7: type dependent (channel for AMQP) +// extended header (opt) +// body (opt) + +type deliveryState interface{} // TODO: http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transactions-v1.0-os.html#type-declared + +type unsettled map[string]deliveryState + +func (u unsettled) marshal(wr *buffer) error { + return writeMap(wr, u) +} + +func (u *unsettled) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + m := make(unsettled, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + var value deliveryState + err = unmarshal(r, &value) + if err != nil { + return err + } + m[key] = value + } + *u = m + return nil +} + +type filter map[symbol]*describedType + +func (f filter) marshal(wr *buffer) error { + return writeMap(wr, f) +} + +func (f *filter) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + m := make(filter, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + var value describedType + err = unmarshal(r, &value) + if err != nil { + return err + } + m[symbol(key)] = &value + } + *f = m + return nil +} + +// ErrorCondition is one of the error conditions defined in the AMQP spec. +type ErrorCondition string + +func (ec ErrorCondition) marshal(wr *buffer) error { + return (symbol)(ec).marshal(wr) +} + +func (ec *ErrorCondition) unmarshal(r *buffer) error { + s, err := readString(r) + *ec = ErrorCondition(s) + return err +} + +// Error Conditions +const ( + // AMQP Errors + ErrorInternalError ErrorCondition = "amqp:internal-error" + ErrorNotFound ErrorCondition = "amqp:not-found" + ErrorUnauthorizedAccess ErrorCondition = "amqp:unauthorized-access" + ErrorDecodeError ErrorCondition = "amqp:decode-error" + ErrorResourceLimitExceeded ErrorCondition = "amqp:resource-limit-exceeded" + ErrorNotAllowed ErrorCondition = "amqp:not-allowed" + ErrorInvalidField ErrorCondition = "amqp:invalid-field" + ErrorNotImplemented ErrorCondition = "amqp:not-implemented" + ErrorResourceLocked ErrorCondition = "amqp:resource-locked" + ErrorPreconditionFailed ErrorCondition = "amqp:precondition-failed" + ErrorResourceDeleted ErrorCondition = "amqp:resource-deleted" + ErrorIllegalState ErrorCondition = "amqp:illegal-state" + ErrorFrameSizeTooSmall ErrorCondition = "amqp:frame-size-too-small" + + // Connection Errors + ErrorConnectionForced ErrorCondition = "amqp:connection:forced" + ErrorFramingError ErrorCondition = "amqp:connection:framing-error" + ErrorConnectionRedirect ErrorCondition = "amqp:connection:redirect" + + // Session Errors + ErrorWindowViolation ErrorCondition = "amqp:session:window-violation" + ErrorErrantLink ErrorCondition = "amqp:session:errant-link" + ErrorHandleInUse ErrorCondition = "amqp:session:handle-in-use" + ErrorUnattachedHandle ErrorCondition = "amqp:session:unattached-handle" + + // Link Errors + ErrorDetachForced ErrorCondition = "amqp:link:detach-forced" + ErrorTransferLimitExceeded ErrorCondition = "amqp:link:transfer-limit-exceeded" + ErrorMessageSizeExceeded ErrorCondition = "amqp:link:message-size-exceeded" + ErrorLinkRedirect ErrorCondition = "amqp:link:redirect" + ErrorStolen ErrorCondition = "amqp:link:stolen" +) + +/* + + + + + + +*/ + +// Error is an AMQP error. +type Error struct { + // A symbolic value indicating the error condition. + Condition ErrorCondition + + // descriptive text about the error condition + // + // This text supplies any supplementary details not indicated by the condition field. + // This text can be logged as an aid to resolving issues. + Description string + + // map carrying information about the error condition + Info map[string]interface{} +} + +func (e *Error) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeError, []marshalField{ + {value: &e.Condition, omit: false}, + {value: &e.Description, omit: e.Description == ""}, + {value: e.Info, omit: len(e.Info) == 0}, + }) +} + +func (e *Error) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeError, []unmarshalField{ + {field: &e.Condition, handleNull: func() error { return errorNew("Error.Condition is required") }}, + {field: &e.Description}, + {field: &e.Info}, + }...) +} + +func (e *Error) String() string { + if e == nil { + return "*Error(nil)" + } + return fmt.Sprintf("*Error{Condition: %s, Description: %s, Info: %v}", + e.Condition, + e.Description, + e.Info, + ) +} + +func (e *Error) Error() string { + return e.String() +} + +// Message is an AMQP message. +type Message struct { + // Message format code. + // + // The upper three octets of a message format code identify a particular message + // format. The lowest octet indicates the version of said message format. Any + // given version of a format is forwards compatible with all higher versions. + Format uint32 + + // The DeliveryTag can be up to 32 octets of binary data. + // Note that when mode one is enabled there will be no delivery tag. + DeliveryTag []byte + + // The header section carries standard delivery details about the transfer + // of a message through the AMQP network. + Header *MessageHeader + // If the header section is omitted the receiver MUST assume the appropriate + // default values (or the meaning implied by no value being set) for the + // fields within the header unless other target or node specific defaults + // have otherwise been set. + + // The delivery-annotations section is used for delivery-specific non-standard + // properties at the head of the message. Delivery annotations convey information + // from the sending peer to the receiving peer. + DeliveryAnnotations Annotations + // If the recipient does not understand the annotation it cannot be acted upon + // and its effects (such as any implied propagation) cannot be acted upon. + // Annotations might be specific to one implementation, or common to multiple + // implementations. The capabilities negotiated on link attach and on the source + // and target SHOULD be used to establish which annotations a peer supports. A + // registry of defined annotations and their meanings is maintained [AMQPDELANN]. + // The symbolic key "rejected" is reserved for the use of communicating error + // information regarding rejected messages. Any values associated with the + // "rejected" key MUST be of type error. + // + // If the delivery-annotations section is omitted, it is equivalent to a + // delivery-annotations section containing an empty map of annotations. + + // The message-annotations section is used for properties of the message which + // are aimed at the infrastructure. + Annotations Annotations + // The message-annotations section is used for properties of the message which + // are aimed at the infrastructure and SHOULD be propagated across every + // delivery step. UnConfirmedMessage annotations convey information about the message. + // Intermediaries MUST propagate the annotations unless the annotations are + // explicitly augmented or modified (e.g., by the use of the modified outcome). + // + // The capabilities negotiated on link attach and on the source and target can + // be used to establish which annotations a peer understands; however, in a + // network of AMQP intermediaries it might not be possible to know if every + // intermediary will understand the annotation. Note that for some annotations + // it might not be necessary for the intermediary to understand their purpose, + // i.e., they could be used purely as an attribute which can be filtered on. + // + // A registry of defined annotations and their meanings is maintained [AMQPMESSANN]. + // + // If the message-annotations section is omitted, it is equivalent to a + // message-annotations section containing an empty map of annotations. + + // The properties section is used for a defined set of standard properties of + // the message. + Properties *MessageProperties + // The properties section is part of the bare message; therefore, + // if retransmitted by an intermediary, it MUST remain unaltered. + + // The application-properties section is a part of the bare message used for + // structured application data. Intermediaries can use the data within this + // structure for the purposes of filtering or routing. + ApplicationProperties map[string]interface{} + // The keys of this map are restricted to be of type string (which excludes + // the possibility of a null key) and the values are restricted to be of + // simple types only, that is, excluding map, list, and array types. + + // Data payloads. + Data [][]byte + // A data section contains opaque binary data. + // TODO: this could be data(s), amqp-sequence(s), amqp-value rather than single data: + // "The body consists of one of the following three choices: one or more data + // sections, one or more amqp-sequence sections, or a single amqp-value section." + + // Value payload. + Value interface{} + // An amqp-value section contains a single AMQP value. + + // The footer section is used for details about the message or delivery which + // can only be calculated or evaluated once the whole bare message has been + // constructed or seen (for example message hashes, HMACs, signatures and + // encryption details). + Footer Annotations + + // Mark the message as settled when LinkSenderSettle is ModeMixed. + // + // This field is ignored when LinkSenderSettle is not ModeMixed. + SendSettled bool + + //receiver *Receiver // Receiver the message was received from + settled bool // whether transfer was settled by sender + + // doneSignal is a channel that indicate when a message is considered acted upon by downstream handler + doneSignal chan struct{} +} + +type AMQP10 struct { + publishingId int64 + hasPublishingId bool + message *Message + Properties *MessageProperties + Annotations Annotations + header *MessageHeader + amqpData interface{} + ApplicationProperties map[string]interface{} +} + +func NewMessage(data []byte) *AMQP10 { + return &AMQP10{ + message: newMessage(data), + publishingId: 0, + hasPublishingId: false, + } +} + +func (amqp *AMQP10) SetPublishingId(id int64) { + amqp.hasPublishingId = true + amqp.publishingId = id +} + +func (amqp *AMQP10) HasPublishingId() bool { + return amqp.hasPublishingId +} + +func (amqp *AMQP10) GetPublishingId() int64 { + return amqp.publishingId +} + +func (amqp *AMQP10) MarshalBinary() ([]byte, error) { + amqp.message.Properties = amqp.Properties + amqp.message.ApplicationProperties = amqp.ApplicationProperties + amqp.message.Annotations = amqp.Annotations + return amqp.message.MarshalBinary() +} + +func (amqp *AMQP10) UnmarshalBinary(data []byte) error { + return amqp.message.UnmarshalBinary(data) +} + +func (amqp *AMQP10) GetData() [][]byte { + return amqp.message.Data +} + +func (amqp *AMQP10) GetMessageProperties() *MessageProperties { + return amqp.message.Properties +} + +func (amqp *AMQP10) GetMessageAnnotations() Annotations { + return amqp.message.Annotations +} + +func (amqp *AMQP10) GetApplicationProperties() map[string]interface{} { + return amqp.message.ApplicationProperties +} + +func (amqp *AMQP10) GetMessageHeader() *MessageHeader { + return amqp.message.Header +} + +func (amqp *AMQP10) GetAMQPValue() interface{} { + return amqp.message.Value +} + +// NewMessage returns a *Message with data as the payload. +// +// This constructor is intended as a helper for basic Messages with a +// single data payload. It is valid to construct a Message directly for +// more complex usages. +func newMessage(data []byte) *Message { + return &Message{ + Data: [][]byte{data}, + doneSignal: make(chan struct{}), + } +} + +// done closes the internal doneSignal channel to let the receiver know that this message has been acted upon +func (m *Message) done() { + // TODO: move initialization in ctor and use ctor everywhere? + if m.doneSignal != nil { + close(m.doneSignal) + } +} + +// GetData returns the first []byte from the Data field +// or nil if Data is empty. +func (m *Message) GetData() []byte { + if len(m.Data) < 1 { + return nil + } + return m.Data[0] +} + +// Ignore notifies the amqp message pump that the message has been handled +// without any disposition. It frees the amqp receiver to get the next message +// this is implicitly done after calling message dispositions (Accept/Release/Reject/Modify) +func (m *Message) Ignore() { + if m.shouldSendDisposition() { + m.done() + } +} + +// MarshalBinary encodes the message into binary form. +func (m *Message) MarshalBinary() ([]byte, error) { + buf := new(buffer) + err := m.marshal(buf) + return buf.b, err +} + +func (m *Message) shouldSendDisposition() bool { + return !m.settled +} + +func (m *Message) marshal(wr *buffer) error { + if m.Header != nil { + err := m.Header.marshal(wr) + if err != nil { + return err + } + } + + if m.DeliveryAnnotations != nil { + writeDescriptor(wr, typeCodeDeliveryAnnotations) + err := marshal(wr, m.DeliveryAnnotations) + if err != nil { + return err + } + } + + if m.Annotations != nil { + writeDescriptor(wr, typeCodeMessageAnnotations) + err := marshal(wr, m.Annotations) + if err != nil { + return err + } + } + + if m.Properties != nil { + err := marshal(wr, m.Properties) + if err != nil { + return err + } + } + + if m.ApplicationProperties != nil { + writeDescriptor(wr, typeCodeApplicationProperties) + err := marshal(wr, m.ApplicationProperties) + if err != nil { + return err + } + } + + for _, data := range m.Data { + writeDescriptor(wr, typeCodeApplicationData) + err := writeBinary(wr, data) + if err != nil { + return err + } + } + + if m.Value != nil { + writeDescriptor(wr, typeCodeAMQPValue) + err := marshal(wr, m.Value) + if err != nil { + return err + } + } + + if m.Footer != nil { + writeDescriptor(wr, typeCodeFooter) + err := marshal(wr, m.Footer) + if err != nil { + return err + } + } + + return nil +} + +// UnmarshalBinary decodes the message from binary form. +func (m *Message) UnmarshalBinary(data []byte) error { + buf := &buffer{ + b: data, + } + return m.unmarshal(buf) +} + +func (m *Message) unmarshal(r *buffer) error { + // loop, decoding sections until bytes have been consumed + for r.len() > 0 { + // determine type + type_, err := peekMessageType(r.bytes()) + if err != nil { + return err + } + + var ( + section interface{} + // section header is read from r before + // unmarshaling section is set to true + discardHeader = true + ) + switch amqpType(type_) { + + case typeCodeMessageHeader: + discardHeader = false + section = &m.Header + + case typeCodeDeliveryAnnotations: + section = &m.DeliveryAnnotations + + case typeCodeMessageAnnotations: + section = &m.Annotations + + case typeCodeMessageProperties: + discardHeader = false + section = &m.Properties + + case typeCodeApplicationProperties: + section = &m.ApplicationProperties + + case typeCodeApplicationData: + r.skip(3) + + var data []byte + err = unmarshal(r, &data) + if err != nil { + return err + } + + m.Data = append(m.Data, data) + continue + + case typeCodeFooter: + section = &m.Footer + + case typeCodeAMQPValue: + section = &m.Value + + default: + return errorErrorf("unknown message section %#02x", type_) + } + + if discardHeader { + r.skip(3) + } + + err = unmarshal(r, section) + if err != nil { + return err + } + } + return nil +} + +// peekMessageType reads the message type without +// modifying any data. +func peekMessageType(buf []byte) (uint8, error) { + if len(buf) < 3 { + return 0, errorNew("invalid message") + } + + if buf[0] != 0 { + return 0, errorErrorf("invalid composite header %02x", buf[0]) + } + + // copied from readUlong to avoid allocations + t := amqpType(buf[1]) + if t == typeCodeUlong0 { + return 0, nil + } + + if t == typeCodeSmallUlong { + if len(buf[2:]) == 0 { + return 0, errorNew("invalid ulong") + } + return buf[2], nil + } + + if t != typeCodeUlong { + return 0, errorErrorf("invalid type for uint32 %02x", t) + } + + if len(buf[2:]) < 8 { + return 0, errorNew("invalid ulong") + } + v := binary.BigEndian.Uint64(buf[2:10]) + + return uint8(v), nil +} + +func tryReadNull(r *buffer) bool { + if r.len() > 0 && amqpType(r.bytes()[0]) == typeCodeNull { + r.skip(1) + return true + } + return false +} + +// Annotations keys must be of type string, int, or int64. +// +// String keys are encoded as AMQP Symbols. +type Annotations map[interface{}]interface{} + +func (a Annotations) marshal(wr *buffer) error { + return writeMap(wr, a) +} + +func (a *Annotations) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + m := make(Annotations, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readAny(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + m[key] = value + } + *a = m + return nil +} + +/* + + + + + + + + +*/ + +// MessageHeader carries standard delivery details about the transfer +// of a message. +type MessageHeader struct { + Durable bool + Priority uint8 + TTL time.Duration // from milliseconds + FirstAcquirer bool + DeliveryCount uint32 +} + +func (h *MessageHeader) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeMessageHeader, []marshalField{ + {value: &h.Durable, omit: !h.Durable}, + {value: &h.Priority, omit: h.Priority == 4}, + {value: (*milliseconds)(&h.TTL), omit: h.TTL == 0}, + {value: &h.FirstAcquirer, omit: !h.FirstAcquirer}, + {value: &h.DeliveryCount, omit: h.DeliveryCount == 0}, + }) +} + +func (h *MessageHeader) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeMessageHeader, []unmarshalField{ + {field: &h.Durable}, + {field: &h.Priority, handleNull: func() error { h.Priority = 4; return nil }}, + {field: (*milliseconds)(&h.TTL)}, + {field: &h.FirstAcquirer}, + {field: &h.DeliveryCount}, + }...) +} + +/* + + + + + + + + + + + + + + + + +*/ + +// MessageProperties is the defined set of properties for AMQP messages. +type MessageProperties struct { + // Message-id, if set, uniquely identifies a message within the message system. + // The message producer is usually responsible for setting the message-id in + // such a way that it is assured to be globally unique. A broker MAY discard a + // message as a duplicate if the value of the message-id matches that of a + // previously received message sent to the same node. + MessageID interface{} // uint64, UUID, []byte, or string + + // The identity of the user responsible for producing the message. + // The client sets this value, and it MAY be authenticated by intermediaries. + UserID []byte + + // The to field identifies the node that is the intended destination of the message. + // On any given transfer this might not be the node at the receiving end of the link. + To string + + // A common field for summary information about the message content and purpose. + Subject string + + // The address of the node to send replies to. + ReplyTo string + + // This is a client-specific id that can be used to mark or identify messages + // between clients. + CorrelationID interface{} // uint64, UUID, []byte, or string + + // The RFC-2046 [RFC2046] MIME type for the message's application-data section + // (body). As per RFC-2046 [RFC2046] this can contain a charset parameter defining + // the character encoding used: e.g., 'text/plain; charset="utf-8"'. + // + // For clarity, as per section 7.2.1 of RFC-2616 [RFC2616], where the content type + // is unknown the content-type SHOULD NOT be set. This allows the recipient the + // opportunity to determine the actual type. Where the section is known to be truly + // opaque binary data, the content-type SHOULD be set to application/octet-stream. + // + // When using an application-data section with a section code other than data, + // content-type SHOULD NOT be set. + ContentType string + + // The content-encoding property is used as a modifier to the content-type. + // When present, its value indicates what additional content encodings have been + // applied to the application-data, and thus what decoding mechanisms need to be + // applied in order to obtain the media-type referenced by the content-type header + // field. + // + // Content-encoding is primarily used to allow a document to be compressed without + // losing the identity of its underlying content type. + // + // Content-encodings are to be interpreted as per section 3.5 of RFC 2616 [RFC2616]. + // Valid content-encodings are registered at IANA [IANAHTTPPARAMS]. + // + // The content-encoding MUST NOT be set when the application-data section is other + // than data. The binary representation of all other application-data section types + // is defined completely in terms of the AMQP type system. + // + // Implementations MUST NOT use the identity encoding. Instead, implementations + // SHOULD NOT set this property. Implementations SHOULD NOT use the compress encoding, + // except as to remain compatible with messages originally sent with other protocols, + // e.g. HTTP or SMTP. + // + // Implementations SHOULD NOT specify multiple content-encoding values except as to + // be compatible with messages originally sent with other protocols, e.g. HTTP or SMTP. + ContentEncoding string + + // An absolute time when this message is considered to be expired. + AbsoluteExpiryTime time.Time + + // An absolute time when this message was created. + CreationTime time.Time + + // Identifies the group the message belongs to. + GroupID string + + // The relative position of this message within its group. + GroupSequence uint32 // RFC-1982 sequence number + + // This is a client-specific id that is used so that client can send replies to this + // message to a specific group. + ReplyToGroupID string +} + +func (p *MessageProperties) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeMessageProperties, []marshalField{ + {value: p.MessageID, omit: p.MessageID == nil}, + {value: &p.UserID, omit: len(p.UserID) == 0}, + {value: &p.To, omit: p.To == ""}, + {value: &p.Subject, omit: p.Subject == ""}, + {value: &p.ReplyTo, omit: p.ReplyTo == ""}, + {value: p.CorrelationID, omit: p.CorrelationID == nil}, + {value: (*symbol)(&p.ContentType), omit: p.ContentType == ""}, + {value: (*symbol)(&p.ContentEncoding), omit: p.ContentEncoding == ""}, + {value: &p.AbsoluteExpiryTime, omit: p.AbsoluteExpiryTime.IsZero()}, + {value: &p.CreationTime, omit: p.CreationTime.IsZero()}, + {value: &p.GroupID, omit: p.GroupID == ""}, + {value: &p.GroupSequence}, + {value: &p.ReplyToGroupID, omit: p.ReplyToGroupID == ""}, + }) +} + +func (p *MessageProperties) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeMessageProperties, []unmarshalField{ + {field: &p.MessageID}, + {field: &p.UserID}, + {field: &p.To}, + {field: &p.Subject}, + {field: &p.ReplyTo}, + {field: &p.CorrelationID}, + {field: &p.ContentType}, + {field: &p.ContentEncoding}, + {field: &p.AbsoluteExpiryTime}, + {field: &p.CreationTime}, + {field: &p.GroupID}, + {field: &p.GroupSequence}, + {field: &p.ReplyToGroupID}, + }...) +} + +/* + + + + + +*/ + +type stateReceived struct { + // When sent by the sender this indicates the first section of the message + // (with section-number 0 being the first section) for which data can be resent. + // Data from sections prior to the given section cannot be retransmitted for + // this delivery. + // + // When sent by the receiver this indicates the first section of the message + // for which all data might not yet have been received. + SectionNumber uint32 + + // When sent by the sender this indicates the first byte of the encoded section + // data of the section given by section-number for which data can be resent + // (with section-offset 0 being the first byte). Bytes from the same section + // prior to the given offset section cannot be retransmitted for this delivery. + // + // When sent by the receiver this indicates the first byte of the given section + // which has not yet been received. Note that if a receiver has received all of + // section number X (which contains N bytes of data), but none of section number + // X + 1, then it can indicate this by sending either Received(section-number=X, + // section-offset=N) or Received(section-number=X+1, section-offset=0). The state + // Received(section-number=0, section-offset=0) indicates that no message data + // at all has been transferred. + SectionOffset uint64 +} + +func (sr *stateReceived) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateReceived, []marshalField{ + {value: &sr.SectionNumber, omit: false}, + {value: &sr.SectionOffset, omit: false}, + }) +} + +func (sr *stateReceived) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateReceived, []unmarshalField{ + {field: &sr.SectionNumber, handleNull: func() error { return errorNew("StateReceiver.SectionNumber is required") }}, + {field: &sr.SectionOffset, handleNull: func() error { return errorNew("StateReceiver.SectionOffset is required") }}, + }...) +} + +/* + + + +*/ + +type stateAccepted struct{} + +func (sa *stateAccepted) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateAccepted, nil) +} + +func (sa *stateAccepted) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateAccepted) +} + +func (sa *stateAccepted) String() string { + return "Accepted" +} + +/* + + + + +*/ + +type stateRejected struct { + Error *Error +} + +func (sr *stateRejected) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateRejected, []marshalField{ + {value: sr.Error, omit: sr.Error == nil}, + }) +} + +func (sr *stateRejected) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateRejected, + unmarshalField{field: &sr.Error}, + ) +} + +func (sr *stateRejected) String() string { + return fmt.Sprintf("Rejected{Error: %v}", sr.Error) +} + +/* + + + +*/ + +type stateReleased struct{} + +func (sr *stateReleased) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateReleased, nil) +} + +func (sr *stateReleased) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateReleased) +} + +func (sr *stateReleased) String() string { + return "Released" +} + +/* + + + + + + +*/ + +type stateModified struct { + // count the transfer as an unsuccessful delivery attempt + // + // If the delivery-failed flag is set, any messages modified + // MUST have their delivery-count incremented. + DeliveryFailed bool + + // prevent redelivery + // + // If the undeliverable-here is set, then any messages released MUST NOT + // be redelivered to the modifying link endpoint. + UndeliverableHere bool + + // message attributes + // Map containing attributes to combine with the existing message-annotations + // held in the message's header section. Where the existing message-annotations + // of the message contain an entry with the same key as an entry in this field, + // the value in this field associated with that key replaces the one in the + // existing headers; where the existing message-annotations has no such value, + // the value in this map is added. + MessageAnnotations Annotations +} + +func (sm *stateModified) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateModified, []marshalField{ + {value: &sm.DeliveryFailed, omit: !sm.DeliveryFailed}, + {value: &sm.UndeliverableHere, omit: !sm.UndeliverableHere}, + {value: sm.MessageAnnotations, omit: sm.MessageAnnotations == nil}, + }) +} + +func (sm *stateModified) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateModified, []unmarshalField{ + {field: &sm.DeliveryFailed}, + {field: &sm.UndeliverableHere}, + {field: &sm.MessageAnnotations}, + }...) +} + +func (sm *stateModified) String() string { + return fmt.Sprintf("Modified{DeliveryFailed: %t, UndeliverableHere: %t, MessageAnnotations: %v}", sm.DeliveryFailed, sm.UndeliverableHere, sm.MessageAnnotations) +} + +/* + + + + + + +*/ + +// symbol is an AMQP symbolic string. +type symbol string + +func (s symbol) marshal(wr *buffer) error { + l := len(s) + switch { + // Sym8 + case l < 256: + wr.write([]byte{ + byte(typeCodeSym8), + byte(l), + }) + wr.writeString(string(s)) + + // Sym32 + case uint(l) < math.MaxUint32: + wr.writeByte(uint8(typeCodeSym32)) + wr.writeUint32(uint32(l)) + wr.writeString(string(s)) + default: + return errorNew("too long") + } + return nil +} + +type milliseconds time.Duration + +func (m milliseconds) marshal(wr *buffer) error { + writeUint32(wr, uint32(m/milliseconds(time.Millisecond))) + return nil +} + +func (m *milliseconds) unmarshal(r *buffer) error { + n, err := readUint(r) + *m = milliseconds(time.Duration(n) * time.Millisecond) + return err +} + +// mapAnyAny is used to decode AMQP maps who's keys are undefined or +// inconsistently typed. +type mapAnyAny map[interface{}]interface{} + +func (m mapAnyAny) marshal(wr *buffer) error { + return writeMap(wr, map[interface{}]interface{}(m)) +} + +func (m *mapAnyAny) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + mm := make(mapAnyAny, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readAny(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + + // https://golang.org/ref/spec#Map_types: + // The comparison operators == and != must be fully defined + // for operands of the key type; thus the key type must not + // be a function, map, or slice. + switch reflect.ValueOf(key).Kind() { + case reflect.Slice, reflect.Func, reflect.Map: + return errorNew("invalid map key") + } + + mm[key] = value + } + *m = mm + return nil +} + +// mapStringAny is used to decode AMQP maps that have string keys +type mapStringAny map[string]interface{} + +func (m mapStringAny) marshal(wr *buffer) error { + return writeMap(wr, map[string]interface{}(m)) +} + +func (m *mapStringAny) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + mm := make(mapStringAny, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + mm[key] = value + } + *m = mm + + return nil +} + +// mapStringAny is used to decode AMQP maps that have Symbol keys +type mapSymbolAny map[symbol]interface{} + +func (m mapSymbolAny) marshal(wr *buffer) error { + return writeMap(wr, map[symbol]interface{}(m)) +} + +func (m *mapSymbolAny) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + mm := make(mapSymbolAny, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + mm[symbol(key)] = value + } + *m = mm + return nil +} + +// UUID is a 128 bit identifier as defined in RFC 4122. +type UUID [16]byte + +// String returns the hex encoded representation described in RFC 4122, Section 3. +func (u UUID) String() string { + var buf [36]byte + hex.Encode(buf[:8], u[:4]) + buf[8] = '-' + hex.Encode(buf[9:13], u[4:6]) + buf[13] = '-' + hex.Encode(buf[14:18], u[6:8]) + buf[18] = '-' + hex.Encode(buf[19:23], u[8:10]) + buf[23] = '-' + hex.Encode(buf[24:], u[10:]) + return string(buf[:]) +} + +func (u UUID) marshal(wr *buffer) error { + wr.writeByte(byte(typeCodeUUID)) + wr.write(u[:]) + return nil +} + +func (u *UUID) unmarshal(r *buffer) error { + un, err := readUUID(r) + *u = un + return err +} + +type lifetimePolicy uint8 + +const ( + deleteOnClose = lifetimePolicy(typeCodeDeleteOnClose) + deleteOnNoLinks = lifetimePolicy(typeCodeDeleteOnNoLinks) + deleteOnNoMessages = lifetimePolicy(typeCodeDeleteOnNoMessages) + deleteOnNoLinksOrMessages = lifetimePolicy(typeCodeDeleteOnNoLinksOrMessages) +) + +func (p lifetimePolicy) marshal(wr *buffer) error { + wr.write([]byte{ + 0x0, + byte(typeCodeSmallUlong), + byte(p), + byte(typeCodeList0), + }) + return nil +} + +func (p *lifetimePolicy) unmarshal(r *buffer) error { + typ, fields, err := readCompositeHeader(r) + if err != nil { + return err + } + if fields != 0 { + return errorErrorf("invalid size %d for lifetime-policy") + } + *p = lifetimePolicy(typ) + return nil +} + +// Sender Settlement Modes +const ( + // Sender will send all deliveries initially unsettled to the receiver. + ModeUnsettled SenderSettleMode = 0 + + // Sender will send all deliveries settled to the receiver. + ModeSettled SenderSettleMode = 1 + + // Sender MAY send a mixture of settled and unsettled deliveries to the receiver. + ModeMixed SenderSettleMode = 2 +) + +// SenderSettleMode specifies how the sender will settle messages. +type SenderSettleMode uint8 + +func (m *SenderSettleMode) String() string { + if m == nil { + return "" + } + + switch *m { + case ModeUnsettled: + return "unsettled" + + case ModeSettled: + return "settled" + + case ModeMixed: + return "mixed" + + default: + return fmt.Sprintf("unknown sender mode %d", uint8(*m)) + } +} + +func (m SenderSettleMode) marshal(wr *buffer) error { + return marshal(wr, uint8(m)) +} + +func (m *SenderSettleMode) unmarshal(r *buffer) error { + n, err := readUbyte(r) + *m = SenderSettleMode(n) + return err +} + +// Receiver Settlement Modes +const ( + // Receiver will spontaneously settle all incoming transfers. + ModeFirst ReceiverSettleMode = 0 + + // Receiver will only settle after sending the disposition to the + // sender and receiving a disposition indicating settlement of + // the delivery from the sender. + ModeSecond ReceiverSettleMode = 1 +) + +// ReceiverSettleMode specifies how the receiver will settle messages. +type ReceiverSettleMode uint8 + +func (m *ReceiverSettleMode) String() string { + if m == nil { + return "" + } + + switch *m { + case ModeFirst: + return "first" + + case ModeSecond: + return "second" + + default: + return fmt.Sprintf("unknown receiver mode %d", uint8(*m)) + } +} + +func (m ReceiverSettleMode) marshal(wr *buffer) error { + return marshal(wr, uint8(m)) +} + +func (m *ReceiverSettleMode) unmarshal(r *buffer) error { + n, err := readUbyte(r) + *m = ReceiverSettleMode(n) + return err +} + +// Durability Policies +const ( + // No terminus state is retained durably. + DurabilityNone Durability = 0 + + // Only the existence and configuration of the terminus is + // retained durably. + DurabilityConfiguration Durability = 1 + + // In addition to the existence and configuration of the + // terminus, the unsettled state for durable messages is + // retained durably. + DurabilityUnsettledState Durability = 2 +) + +// Durability specifies the durability of a link. +type Durability uint32 + +func (d *Durability) String() string { + if d == nil { + return "" + } + + switch *d { + case DurabilityNone: + return "none" + case DurabilityConfiguration: + return "configuration" + case DurabilityUnsettledState: + return "unsettled-state" + default: + return fmt.Sprintf("unknown durability %d", *d) + } +} + +func (d Durability) marshal(wr *buffer) error { + return marshal(wr, uint32(d)) +} + +func (d *Durability) unmarshal(r *buffer) error { + return unmarshal(r, (*uint32)(d)) +} + +// Expiry Policies +const ( + // The expiry timer starts when terminus is detached. + ExpiryLinkDetach ExpiryPolicy = "link-detach" + + // The expiry timer starts when the most recently + // associated session is ended. + ExpirySessionEnd ExpiryPolicy = "session-end" + + // The expiry timer starts when most recently associated + // connection is closed. + ExpiryConnectionClose ExpiryPolicy = "connection-close" + + // The terminus never expires. + ExpiryNever ExpiryPolicy = "never" +) + +// ExpiryPolicy specifies when the expiry timer of a terminus +// starts counting down from the timeout value. +// +// If the link is subsequently re-attached before the terminus is expired, +// then the count down is aborted. If the conditions for the +// terminus-expiry-policy are subsequently re-met, the expiry timer restarts +// from its originally configured timeout value. +type ExpiryPolicy symbol + +func (e ExpiryPolicy) validate() error { + switch e { + case ExpiryLinkDetach, + ExpirySessionEnd, + ExpiryConnectionClose, + ExpiryNever: + return nil + default: + return errorErrorf("unknown expiry-policy %q", e) + } +} + +func (e ExpiryPolicy) marshal(wr *buffer) error { + return symbol(e).marshal(wr) +} + +func (e *ExpiryPolicy) unmarshal(r *buffer) error { + err := unmarshal(r, (*symbol)(e)) + if err != nil { + return err + } + return e.validate() +} + +func (e *ExpiryPolicy) String() string { + if e == nil { + return "" + } + return string(*e) +} + +type describedType struct { + descriptor interface{} + value interface{} +} + +func (t describedType) marshal(wr *buffer) error { + wr.writeByte(0x0) // descriptor constructor + err := marshal(wr, t.descriptor) + if err != nil { + return err + } + return marshal(wr, t.value) +} + +func (t *describedType) unmarshal(r *buffer) error { + b, err := r.readByte() + if err != nil { + return err + } + + if b != 0x0 { + return errorErrorf("invalid described type header %02x", b) + } + + err = unmarshal(r, &t.descriptor) + if err != nil { + return err + } + return unmarshal(r, &t.value) +} + +func (t describedType) String() string { + return fmt.Sprintf("describedType{descriptor: %v, value: %v}", + t.descriptor, + t.value, + ) +} + +// SLICES + +// ArrayUByte allows encoding []uint8/[]byte as an array +// rather than binary data. +type ArrayUByte []uint8 + +func (a ArrayUByte) marshal(wr *buffer) error { + const typeSize = 1 + + writeArrayHeader(wr, len(a), typeSize, typeCodeUbyte) + wr.write(a) + + return nil +} + +func (a *ArrayUByte) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeUbyte { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + buf, ok := r.next(length) + if !ok { + return errorErrorf("invalid length %d", length) + } + *a = append([]byte(nil), buf...) + + return nil +} + +type arrayInt8 []int8 + +func (a arrayInt8) marshal(wr *buffer) error { + const typeSize = 1 + + writeArrayHeader(wr, len(a), typeSize, typeCodeByte) + + for _, value := range a { + wr.writeByte(uint8(value)) + } + + return nil +} + +func (a *arrayInt8) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeByte { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + buf, ok := r.next(length) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]int8, length) + } else { + aa = aa[:length] + } + + for i, value := range buf { + aa[i] = int8(value) + } + + *a = aa + return nil +} + +type arrayUint16 []uint16 + +func (a arrayUint16) marshal(wr *buffer) error { + const typeSize = 2 + + writeArrayHeader(wr, len(a), typeSize, typeCodeUshort) + + for _, element := range a { + wr.writeUint16(element) + } + + return nil +} + +func (a *arrayUint16) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeUshort { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + const typeSize = 2 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]uint16, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = binary.BigEndian.Uint16(buf[bufIdx:]) + bufIdx += 2 + } + + *a = aa + return nil +} + +type arrayInt16 []int16 + +func (a arrayInt16) marshal(wr *buffer) error { + const typeSize = 2 + + writeArrayHeader(wr, len(a), typeSize, typeCodeShort) + + for _, element := range a { + wr.writeUint16(uint16(element)) + } + + return nil +} + +func (a *arrayInt16) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeShort { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + const typeSize = 2 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]int16, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = int16(binary.BigEndian.Uint16(buf[bufIdx : bufIdx+2])) + bufIdx += 2 + } + + *a = aa + return nil +} + +type arrayUint32 []uint32 + +func (a arrayUint32) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmallUint + ) + for _, n := range a { + if n > math.MaxUint8 { + typeSize = 4 + typeCode = typeCodeUint + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeUint { + for _, element := range a { + wr.writeUint32(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayUint32) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeUint0: + if int64(cap(aa)) < length { + aa = make([]uint32, length) + } else { + aa = aa[:length] + for i := range aa { + aa[i] = 0 + } + } + case typeCodeSmallUint: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]uint32, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = uint32(n) + } + case typeCodeUint: + const typeSize = 4 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + if int64(cap(aa)) < length { + aa = make([]uint32, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = binary.BigEndian.Uint32(buf[bufIdx : bufIdx+4]) + bufIdx += 4 + } + default: + return errorErrorf("invalid type for []uint32 %02x", type_) + } + + *a = aa + return nil +} + +type arrayInt32 []int32 + +func (a arrayInt32) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmallint + ) + for _, n := range a { + if n > math.MaxInt8 { + typeSize = 4 + typeCode = typeCodeInt + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeInt { + for _, element := range a { + wr.writeUint32(uint32(element)) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayInt32) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeSmallint: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]int32, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = int32(int8(n)) + } + case typeCodeInt: + const typeSize = 4 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + if int64(cap(aa)) < length { + aa = make([]int32, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = int32(binary.BigEndian.Uint32(buf[bufIdx:])) + bufIdx += 4 + } + default: + return errorErrorf("invalid type for []int32 %02x", type_) + } + + *a = aa + return nil +} + +type arrayUint64 []uint64 + +func (a arrayUint64) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmallUlong + ) + for _, n := range a { + if n > math.MaxUint8 { + typeSize = 8 + typeCode = typeCodeUlong + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeUlong { + for _, element := range a { + wr.writeUint64(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayUint64) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeUlong0: + if int64(cap(aa)) < length { + aa = make([]uint64, length) + } else { + aa = aa[:length] + for i := range aa { + aa[i] = 0 + } + } + case typeCodeSmallUlong: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]uint64, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = uint64(n) + } + case typeCodeUlong: + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]uint64, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = binary.BigEndian.Uint64(buf[bufIdx : bufIdx+8]) + bufIdx += 8 + } + default: + return errorErrorf("invalid type for []uint64 %02x", type_) + } + + *a = aa + return nil +} + +type arrayInt64 []int64 + +func (a arrayInt64) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmalllong + ) + for _, n := range a { + if n > math.MaxUint8 { + typeSize = 8 + typeCode = typeCodeLong + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeLong { + for _, element := range a { + wr.writeUint64(uint64(element)) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayInt64) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeSmalllong: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]int64, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = int64(int8(n)) + } + case typeCodeLong: + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]int64, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = int64(binary.BigEndian.Uint64(buf[bufIdx:])) + bufIdx += 8 + } + default: + return errorErrorf("invalid type for []uint64 %02x", type_) + } + + *a = aa + return nil +} + +type arrayFloat []float32 + +func (a arrayFloat) marshal(wr *buffer) error { + const typeSize = 4 + + writeArrayHeader(wr, len(a), typeSize, typeCodeFloat) + + for _, element := range a { + wr.writeUint32(math.Float32bits(element)) + } + + return nil +} + +func (a *arrayFloat) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeFloat { + return errorErrorf("invalid type for []float32 %02x", type_) + } + + const typeSize = 4 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]float32, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + bits := binary.BigEndian.Uint32(buf[bufIdx:]) + aa[i] = math.Float32frombits(bits) + bufIdx += typeSize + } + + *a = aa + return nil +} + +type arrayDouble []float64 + +func (a arrayDouble) marshal(wr *buffer) error { + const typeSize = 8 + + writeArrayHeader(wr, len(a), typeSize, typeCodeDouble) + + for _, element := range a { + wr.writeUint64(math.Float64bits(element)) + } + + return nil +} + +func (a *arrayDouble) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeDouble { + return errorErrorf("invalid type for []float64 %02x", type_) + } + + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]float64, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + bits := binary.BigEndian.Uint64(buf[bufIdx:]) + aa[i] = math.Float64frombits(bits) + bufIdx += typeSize + } + + *a = aa + return nil +} + +type arrayBool []bool + +func (a arrayBool) marshal(wr *buffer) error { + const typeSize = 1 + + writeArrayHeader(wr, len(a), typeSize, typeCodeBool) + + for _, element := range a { + value := byte(0) + if element { + value = 1 + } + wr.writeByte(value) + } + + return nil +} + +func (a *arrayBool) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]bool, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeBool: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + for i, value := range buf { + if value == 0 { + aa[i] = false + } else { + aa[i] = true + } + } + + case typeCodeBoolTrue: + for i := range aa { + aa[i] = true + } + case typeCodeBoolFalse: + for i := range aa { + aa[i] = false + } + default: + return errorErrorf("invalid type for []bool %02x", type_) + } + + *a = aa + return nil +} + +type arrayString []string + +func (a arrayString) marshal(wr *buffer) error { + var ( + elementType = typeCodeStr8 + elementsSizeTotal int + ) + for _, element := range a { + if !utf8.ValidString(element) { + return errorNew("not a valid UTF-8 string") + } + + elementsSizeTotal += len(element) + + if len(element) > math.MaxUint8 { + elementType = typeCodeStr32 + } + } + + writeVariableArrayHeader(wr, len(a), elementsSizeTotal, elementType) + + if elementType == typeCodeStr32 { + for _, element := range a { + wr.writeUint32(uint32(len(element))) + wr.writeString(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(len(element))) + wr.writeString(element) + } + } + + return nil +} + +func (a *arrayString) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + const typeSize = 2 // assume all strings are at least 2 bytes + if length*typeSize > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]string, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeStr8: + for i := range aa { + size, err := r.readByte() + if err != nil { + return err + } + + buf, ok := r.next(int64(size)) + if !ok { + return errorNew("invalid length") + } + + aa[i] = string(buf) + } + case typeCodeStr32: + for i := range aa { + buf, ok := r.next(4) + if !ok { + return errorNew("invalid length") + } + size := int64(binary.BigEndian.Uint32(buf)) + + buf, ok = r.next(size) + if !ok { + return errorNew("invalid length") + } + aa[i] = string(buf) + } + default: + return errorErrorf("invalid type for []string %02x", type_) + } + + *a = aa + return nil +} + +type arraySymbol []symbol + +func (a arraySymbol) marshal(wr *buffer) error { + var ( + elementType = typeCodeSym8 + elementsSizeTotal int + ) + for _, element := range a { + elementsSizeTotal += len(element) + + if len(element) > math.MaxUint8 { + elementType = typeCodeSym32 + } + } + + writeVariableArrayHeader(wr, len(a), elementsSizeTotal, elementType) + + if elementType == typeCodeSym32 { + for _, element := range a { + wr.writeUint32(uint32(len(element))) + wr.writeString(string(element)) + } + } else { + for _, element := range a { + wr.writeByte(byte(len(element))) + wr.writeString(string(element)) + } + } + + return nil +} + +func (a *arraySymbol) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + const typeSize = 2 // assume all symbols are at least 2 bytes + if length*typeSize > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]symbol, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeSym8: + for i := range aa { + size, err := r.readByte() + if err != nil { + return err + } + + buf, ok := r.next(int64(size)) + if !ok { + return errorNew("invalid length") + } + aa[i] = symbol(buf) + } + case typeCodeSym32: + for i := range aa { + buf, ok := r.next(4) + if !ok { + return errorNew("invalid length") + } + size := int64(binary.BigEndian.Uint32(buf)) + + buf, ok = r.next(size) + if !ok { + return errorNew("invalid length") + } + aa[i] = symbol(buf) + } + default: + return errorErrorf("invalid type for []symbol %02x", type_) + } + + *a = aa + return nil +} + +type arrayBinary [][]byte + +func (a arrayBinary) marshal(wr *buffer) error { + var ( + elementType = typeCodeVbin8 + elementsSizeTotal int + ) + for _, element := range a { + elementsSizeTotal += len(element) + + if len(element) > math.MaxUint8 { + elementType = typeCodeVbin32 + } + } + + writeVariableArrayHeader(wr, len(a), elementsSizeTotal, elementType) + + if elementType == typeCodeVbin32 { + for _, element := range a { + wr.writeUint32(uint32(len(element))) + wr.write(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(len(element))) + wr.write(element) + } + } + + return nil +} + +func (a *arrayBinary) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + const typeSize = 2 // assume all binary is at least 2 bytes + if length*typeSize > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([][]byte, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeVbin8: + for i := range aa { + size, err := r.readByte() + if err != nil { + return err + } + + buf, ok := r.next(int64(size)) + if !ok { + return errorErrorf("invalid length %d", length) + } + aa[i] = append([]byte(nil), buf...) + } + case typeCodeVbin32: + for i := range aa { + buf, ok := r.next(4) + if !ok { + return errorNew("invalid length") + } + size := binary.BigEndian.Uint32(buf) + + buf, ok = r.next(int64(size)) + if !ok { + return errorNew("invalid length") + } + aa[i] = append([]byte(nil), buf...) + } + default: + return errorErrorf("invalid type for [][]byte %02x", type_) + } + + *a = aa + return nil +} + +type arrayTimestamp []time.Time + +func (a arrayTimestamp) marshal(wr *buffer) error { + const typeSize = 8 + + writeArrayHeader(wr, len(a), typeSize, typeCodeTimestamp) + + for _, element := range a { + ms := element.UnixNano() / int64(time.Millisecond) + wr.writeUint64(uint64(ms)) + } + + return nil +} + +func (a *arrayTimestamp) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeTimestamp { + return errorErrorf("invalid type for []time.Time %02x", type_) + } + + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]time.Time, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + ms := int64(binary.BigEndian.Uint64(buf[bufIdx:])) + bufIdx += typeSize + aa[i] = time.Unix(ms/1000, (ms%1000)*1000000).UTC() + } + + *a = aa + return nil +} + +type arrayUUID []UUID + +func (a arrayUUID) marshal(wr *buffer) error { + const typeSize = 16 + + writeArrayHeader(wr, len(a), typeSize, typeCodeUUID) + + for _, element := range a { + wr.write(element[:]) + } + + return nil +} + +func (a *arrayUUID) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeUUID { + return errorErrorf("invalid type for []UUID %#02x", type_) + } + + const typeSize = 16 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]UUID, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + copy(aa[i][:], buf[bufIdx:bufIdx+16]) + bufIdx += 16 + } + + *a = aa + return nil +} + +// LIST + +type list []interface{} + +func (l list) marshal(wr *buffer) error { + length := len(l) + + // type + if length == 0 { + wr.writeByte(byte(typeCodeList0)) + return nil + } + wr.writeByte(byte(typeCodeList32)) + + // size + sizeIdx := wr.len() + wr.write([]byte{0, 0, 0, 0}) + + // length + wr.writeUint32(uint32(length)) + + for _, element := range l { + err := marshal(wr, element) + if err != nil { + return err + } + } + + // overwrite size + binary.BigEndian.PutUint32(wr.bytes()[sizeIdx:], uint32(wr.len()-(sizeIdx+4))) + + return nil +} + +func (l *list) unmarshal(r *buffer) error { + length, err := readListHeader(r) + if err != nil { + return err + } + + // assume that all types are at least 1 byte + if length > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + ll := *l + if int64(cap(ll)) < length { + ll = make([]interface{}, length) + } else { + ll = ll[:length] + } + + for i := range ll { + ll[i], err = readAny(r) + if err != nil { + return err + } + } + + *l = ll + return nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go new file mode 100644 index 0000000..0d261b1 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go @@ -0,0 +1,31 @@ +package logs + +import ( + "fmt" + "log" +) + +const ( + INFO = 0 + DEBUG = 1 +) + +var LogLevel int8 + +func LogInfo(message string, v ...interface{}) { + log.Printf(fmt.Sprintf("[info] - %s", message), v...) +} + +func LogError(message string, v ...interface{}) { + log.Printf(fmt.Sprintf("[error] - %s", message), v...) +} + +func LogDebug(message string, v ...interface{}) { + if LogLevel > INFO { + log.Printf(fmt.Sprintf("[debug] - %s", message), v...) + } +} + +func LogWarn(message string, v ...interface{}) { + log.Printf(fmt.Sprintf("[warn] - %s", message), v...) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go new file mode 100644 index 0000000..23314d3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go @@ -0,0 +1,19 @@ +package message + +import "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + +type StreamMessage interface { + MarshalBinary() ([]byte, error) + UnmarshalBinary(data []byte) error + SetPublishingId(id int64) + GetPublishingId() int64 + HasPublishingId() bool + GetData() [][]byte + GetMessageProperties() *amqp.MessageProperties + GetMessageAnnotations() amqp.Annotations + GetApplicationProperties() map[string]interface{} + + // GetMessageHeader GetAMQPValue read only values see: rabbitmq-stream-go-client/issues/128 + GetMessageHeader() *amqp.MessageHeader + GetAMQPValue() interface{} +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go new file mode 100644 index 0000000..29eaa38 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go @@ -0,0 +1,360 @@ +package stream + +import ( + "bufio" + "bytes" + "compress/gzip" + "fmt" + "github.com/golang/snappy" + "github.com/klauspost/compress/zstd" + "github.com/pierrec/lz4" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "io" + "io/ioutil" +) + +const ( + None = byte(0) + GZIP = byte(1) + SNAPPY = byte(2) + LZ4 = byte(3) + ZSTD = byte(4) +) + +type Compression struct { + enabled bool + value byte +} + +func (compression Compression) String() string { + return fmt.Sprintf("value %d (enable: %t)", compression.value, + compression.enabled) +} + +func (compression Compression) None() Compression { + return Compression{value: None, enabled: true} +} + +func (compression Compression) Gzip() Compression { + return Compression{value: GZIP, enabled: true} +} + +func (compression Compression) Snappy() Compression { + return Compression{value: SNAPPY, enabled: true} +} + +func (compression Compression) Zstd() Compression { + return Compression{value: ZSTD, enabled: true} +} + +func (compression Compression) Lz4() Compression { + return Compression{value: LZ4, enabled: true} +} + +type subEntry struct { + messages []messageSequence + publishingId int64 // need to store the publishingId useful in case of aggregation + + unCompressedSize int + sizeInBytes int + dataInBytes []byte +} +type subEntries struct { + items []*subEntry + totalSizeInBytes int +} + +type iCompress interface { + Compress(subEntries *subEntries) + UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader +} + +func compressByValue(value byte) iCompress { + + switch value { + case GZIP: + return compressGZIP{} + case SNAPPY: + return compressSnappy{} + case LZ4: + return compressLZ4{} + case ZSTD: + return compressZSTD{} + } + + return compressNONE{} +} + +type compressNONE struct { +} + +func (es compressNONE) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + for _, msg := range entry.messages { + writeInt(&tmp, len(msg.messageBytes)) + tmp.Write(msg.messageBytes) + } + entry.dataInBytes = tmp.Bytes() + entry.sizeInBytes += len(entry.dataInBytes) + subEntries.totalSizeInBytes += len(entry.dataInBytes) + } +} + +func (es compressNONE) UnCompress(source *bufio.Reader, _, _ uint32) *bufio.Reader { + return source +} + +type compressGZIP struct { +} + +func (es compressGZIP) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w := gzip.NewWriter(&tmp) + for _, msg := range entry.messages { + size := len(msg.messageBytes) + //w.Write(bytesFromInt((uint32(size) >> 24) & 0xFF)) + //w.Write(bytesFromInt((uint32(size) >> 16) & 0xFF)) + //w.Write(bytesFromInt((uint32(size) >> 8) & 0xFF)) + //w.Write(bytesFromInt((uint32(size) >> 0) & 0xFF)) + w.Write(bytesFromInt(uint32(size))) + w.Write(msg.messageBytes) + } + w.Flush() + w.Close() + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressGZIP) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("GZIP Error during reading buffer %s", err) + } + + reader, err := gzip.NewReader(bytes.NewBuffer(zipperBuffer)) + + if err != nil { + logs.LogError("Error creating GZIP NewReader %s", err) + } + defer reader.Close() + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) +} + +type compressSnappy struct { +} + +func (es compressSnappy) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w := snappy.NewBufferedWriter(&tmp) + for _, msg := range entry.messages { + size := len(msg.messageBytes) + if _, err := w.Write(bytesFromInt(uint32(size))); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + if _, err := w.Write(msg.messageBytes); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + } + if err := w.Flush(); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + if err := w.Close(); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressSnappy) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("SNAPPY Error during reading buffer %s", err) + } + + reader := snappy.NewReader(bytes.NewBuffer(zipperBuffer)) + if err != nil { + logs.LogError("Error creating SNAPPY NewReader %s", err) + } + defer reader.Reset(nil) + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) + +} + +type compressLZ4 struct { +} + +func (es compressLZ4) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w := lz4.NewWriter(&tmp) + for _, msg := range entry.messages { + size := len(msg.messageBytes) + if _, err := w.Write(bytesFromInt(uint32(size))); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + if _, err := w.Write(msg.messageBytes); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + } + if err := w.Flush(); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + if err := w.Close(); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressLZ4) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("LZ4 Error during reading buffer %s", err) + } + + reader := lz4.NewReader(bytes.NewBuffer(zipperBuffer)) + defer reader.Reset(nil) + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) + +} + +type compressZSTD struct { +} + +func (es compressZSTD) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w, err := zstd.NewWriter(&tmp) + if err != nil { + logs.LogError("Error creating ZSTD compression algorithm writer %v", err) + //return err // TODO we should return error if we cannot compress + } + + for _, msg := range entry.messages { + size := len(msg.messageBytes) + if _, err := w.Write(bytesFromInt(uint32(size))); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + if _, err := w.Write(msg.messageBytes); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + } + if err := w.Flush(); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + if err := w.Close(); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressZSTD) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("ZSTD Error during reading buffer %s", err) + } + + reader, err := zstd.NewReader(bytes.NewBuffer(zipperBuffer)) + if err != nil { + logs.LogError("Error creating ZSTD NewReader %s", err) + } + defer reader.Reset(nil) + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) + +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go new file mode 100644 index 0000000..2f9b787 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go @@ -0,0 +1,149 @@ +package stream + +import ( + "fmt" + "regexp" + "strconv" + "strings" + "sync" +) + +var lock = &sync.Mutex{} + +type availableFeatures struct { + is313OrMore bool + is311OrMore bool + brokerFilterEnabled bool + brokerVersion string + brokerSingleActiveConsumerEnabled bool +} + +func newAvailableFeatures() *availableFeatures { + lock.Lock() + defer lock.Unlock() + return &availableFeatures{} +} + +func (a *availableFeatures) Is311OrMore() bool { + lock.Lock() + defer lock.Unlock() + return a.is311OrMore +} + +func (a *availableFeatures) Is313OrMore() bool { + lock.Lock() + defer lock.Unlock() + return a.is313OrMore +} + +func (a *availableFeatures) BrokerFilterEnabled() bool { + lock.Lock() + defer lock.Unlock() + return a.brokerFilterEnabled +} + +func (a *availableFeatures) IsBrokerSingleActiveConsumerEnabled() bool { + lock.Lock() + defer lock.Unlock() + return a.brokerSingleActiveConsumerEnabled == a.is311OrMore +} + +func (a *availableFeatures) SetVersion(version string) error { + lock.Lock() + defer lock.Unlock() + if extractVersion(version) == "" { + return fmt.Errorf("invalid version format: %s", version) + } + a.brokerVersion = version + a.is311OrMore = IsVersionGreaterOrEqual(extractVersion(version), "3.11.0") + a.is313OrMore = IsVersionGreaterOrEqual(extractVersion(version), "3.13.0") + a.brokerSingleActiveConsumerEnabled = a.is311OrMore + return nil +} + +func (a *availableFeatures) GetCommands() []commandVersion { + lock.Lock() + defer lock.Unlock() + return []commandVersion{ + &PublishFilter{}, + } +} + +func (a *availableFeatures) ParseCommandVersions(commandVersions []commandVersion) { + lock.Lock() + defer lock.Unlock() + for _, commandVersion := range commandVersions { + if commandVersion.GetCommandKey() == commandPublish { + a.brokerFilterEnabled = commandVersion.GetMinVersion() <= PublishFilter{}.GetMinVersion() && + commandVersion.GetMaxVersion() >= PublishFilter{}.GetMaxVersion() + } + } +} + +func (a *availableFeatures) String() string { + return fmt.Sprintf("brokerVersion: %s, is311OrMore: %t, is313OrMore: %t, brokerFilterEnabled: %t", a.brokerVersion, a.is311OrMore, a.is313OrMore, a.brokerFilterEnabled) +} + +func extractVersion(fullVersion string) string { + pattern := `(\d+\.\d+\.\d+)` + regex := regexp.MustCompile(pattern) + match := regex.FindStringSubmatch(fullVersion) + + if len(match) > 1 { + return match[1] + } + return "" +} + +func IsVersionGreaterOrEqual(version, target string) bool { + v1, err := parseVersion(version) + if err != nil { + return false + } + + v2, err := parseVersion(target) + if err != nil { + return false + } + return v1.Compare(v2) >= 0 +} + +func parseVersion(version string) (Version, error) { + parts := strings.Split(version, ".") + if len(parts) != 3 { + return Version{}, fmt.Errorf("invalid version format: %s", version) + } + + major, err := strconv.Atoi(parts[0]) + if err != nil { + return Version{}, fmt.Errorf("invalid major version: %s", parts[0]) + } + + minor, err := strconv.Atoi(parts[1]) + if err != nil { + return Version{}, fmt.Errorf("invalid minor version: %s", parts[1]) + } + + patch, err := strconv.Atoi(parts[2]) + if err != nil { + return Version{}, fmt.Errorf("invalid patch version: %s", parts[2]) + } + + return Version{Major: major, Minor: minor, Patch: patch}, nil +} + +type Version struct { + Major int + Minor int + Patch int +} + +func (v Version) Compare(other Version) int { + if v.Major != other.Major { + return v.Major - other.Major + } + if v.Minor != other.Minor { + return v.Minor - other.Minor + } + return v.Patch - other.Patch +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go new file mode 100644 index 0000000..5092565 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go @@ -0,0 +1,190 @@ +package stream + +import ( + "crypto/tls" + "fmt" + "strconv" + "strings" + "sync" + "time" +) + +type AddressResolver struct { + Host string + Port int +} + +type TCPParameters struct { + tlsConfig *tls.Config + RequestedHeartbeat time.Duration + RequestedMaxFrameSize int + WriteBuffer int + ReadBuffer int + NoDelay bool +} + +type Broker struct { + Host string + Port string + User string + Vhost string + Uri string + Password string + Scheme string + + advHost string + advPort string +} + +func newBrokerDefault() *Broker { + return &Broker{ + Scheme: "rabbitmq-stream", + Host: "localhost", + Port: StreamTcpPort, + User: "guest", + Password: "guest", + Vhost: "/", + } +} + +func newTCPParameterDefault() *TCPParameters { + return &TCPParameters{ + RequestedHeartbeat: 60 * time.Second, + RequestedMaxFrameSize: 1048576, + WriteBuffer: 8192, + ReadBuffer: 65536, + NoDelay: false, + tlsConfig: nil, + } +} + +func (br *Broker) isTLS() bool { + return strings.Index(br.Scheme, "+tls") > 0 +} + +func (br *Broker) mergeWithDefault() { + broker := newBrokerDefault() + if br.Host == "" { + br.Host = broker.Host + } + if br.Vhost == "" { + br.Vhost = broker.Vhost + } + + if br.User == "" { + br.User = broker.User + } + if br.User == "" { + br.User = broker.User + } + if br.Password == "" { + br.Password = broker.Password + } + if br.Port == "" || br.Port == "0" { + br.Port = broker.Port + } + if br.Scheme == "" { + br.Scheme = broker.Scheme + } + +} + +func (br *Broker) cloneFrom(broker *Broker, resolver *AddressResolver) { + br.User = broker.User + br.Password = broker.Password + br.Vhost = broker.Vhost + br.Scheme = broker.Scheme + if resolver != nil { + br.Host = resolver.Host + br.Port = strconv.Itoa(resolver.Port) + } +} + +func (br *Broker) GetUri() string { + if br.Uri == "" { + br.Uri = fmt.Sprintf("%s://%s:%s@%s:%s/%s", + br.Scheme, + br.User, br.Password, + br.Host, br.Port, br.Vhost) + } + return br.Uri +} + +func newBroker(host string, port string) *Broker { + return &Broker{ + Host: host, + Port: port, + } +} + +type Brokers struct { + items *sync.Map +} + +func newBrokers() *Brokers { + return &Brokers{items: &sync.Map{}} +} + +func (brs *Brokers) Add(brokerReference int16, host string, port uint32) *Broker { + broker := newBroker(host, strconv.Itoa(int(port))) + brs.items.Store(brokerReference, broker) + return broker +} + +func (brs *Brokers) Get(brokerReference int16) *Broker { + value, ok := brs.items.Load(brokerReference) + if !ok { + return nil + } + + return value.(*Broker) +} + +func (br *Broker) hostPort() string { + return fmt.Sprintf("%s:%s", br.Host, br.Port) +} + +type StreamMetadata struct { + stream string + responseCode uint16 + Leader *Broker + Replicas []*Broker +} + +func (sm StreamMetadata) String() string { + replicas := "" + for _, replica := range sm.Replicas { + replicas += fmt.Sprintf(" - %s:%s", replica.Host, replica.Port) + } + return fmt.Sprintf("leader %s:%s, followers %s ", sm.Leader.Host, sm.Leader.Port, replicas) +} + +func (StreamMetadata) New(stream string, responseCode uint16, + leader *Broker, replicas []*Broker) *StreamMetadata { + return &StreamMetadata{stream: stream, responseCode: responseCode, + Leader: leader, Replicas: replicas} +} + +type StreamsMetadata struct { + items *sync.Map +} + +func (StreamsMetadata) New() *StreamsMetadata { + return &StreamsMetadata{&sync.Map{}} +} + +func (smd *StreamsMetadata) Add(stream string, responseCode uint16, + leader *Broker, replicas []*Broker) *StreamMetadata { + streamMetadata := StreamMetadata{}.New(stream, responseCode, + leader, replicas) + smd.items.Store(stream, streamMetadata) + return streamMetadata +} + +func (smd *StreamsMetadata) Get(stream string) *StreamMetadata { + value, ok := smd.items.Load(stream) + if !ok { + return nil + } + return value.(*StreamMetadata) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go new file mode 100644 index 0000000..3f677fe --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go @@ -0,0 +1,64 @@ +package stream + +import ( + "bufio" + "encoding/binary" + "io" +) + +func readUShort(readerStream io.Reader) uint16 { + var res uint16 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readShort(readerStream io.Reader) int16 { + var res int16 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readUInt(readerStream io.Reader) (uint32, error) { + var res uint32 + err := binary.Read(readerStream, binary.BigEndian, &res) + return res, err +} + +func peekByte(readerStream *bufio.Reader) (uint8, error) { + res, err := readerStream.Peek(1) + if err != nil { + return 0, err + } + return res[0], nil +} + +func readInt64(readerStream io.Reader) int64 { + var res int64 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readByte(readerStream io.Reader) uint8 { + var res uint8 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readByteError(readerStream io.Reader) (uint8, error) { + var res uint8 + err := binary.Read(readerStream, binary.BigEndian, &res) + return res, err +} + +func readString(readerStream io.Reader) string { + lenString := readUShort(readerStream) + buff := make([]byte, lenString) + _ = binary.Read(readerStream, binary.BigEndian, &buff) + return string(buff) +} + +func readUint8Array(readerStream io.Reader, size uint32) []uint8 { + var res = make([]uint8, size) + _, _ = io.ReadFull(readerStream, res) + return res +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go new file mode 100644 index 0000000..dc5d318 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go @@ -0,0 +1,159 @@ +package stream + +import ( + "bufio" + "bytes" + "encoding/binary" +) + +func writeLong(inputBuff *bytes.Buffer, value int64) { + writeULong(inputBuff, uint64(value)) +} + +func writeULong(inputBuff *bytes.Buffer, value uint64) { + var buff = make([]byte, 8) + binary.BigEndian.PutUint64(buff, value) + inputBuff.Write(buff) +} + +func writeBLong(inputBuff *bufio.Writer, value int64) { + writeBULong(inputBuff, uint64(value)) +} +func writeBULong(inputBuff *bufio.Writer, value uint64) { + var buff = make([]byte, 8) + binary.BigEndian.PutUint64(buff, value) + inputBuff.Write(buff) +} + +func writeShort(inputBuff *bytes.Buffer, value int16) { + writeUShort(inputBuff, uint16(value)) +} + +func writeUShort(inputBuff *bytes.Buffer, value uint16) { + var buff = make([]byte, 2) + binary.BigEndian.PutUint16(buff, value) + inputBuff.Write(buff) +} + +func writeBShort(inputBuff *bufio.Writer, value int16) { + writeBUShort(inputBuff, uint16(value)) +} +func writeBUShort(inputBuff *bufio.Writer, value uint16) { + var buff = make([]byte, 2) + binary.BigEndian.PutUint16(buff, value) + inputBuff.Write(buff) +} + +func writeBString(inputBuff *bufio.Writer, value string) { + writeBUShort(inputBuff, uint16(len(value))) + inputBuff.Write([]byte(value)) +} + +func writeByte(inputBuff *bytes.Buffer, value byte) { + var buff = make([]byte, 1) + buff[0] = value + inputBuff.Write(buff) +} + +func writeBByte(inputBuff *bufio.Writer, value byte) { + var buff = make([]byte, 1) + buff[0] = value + inputBuff.Write(buff) +} + +func writeInt(inputBuff *bytes.Buffer, value int) { + writeUInt(inputBuff, uint32(value)) +} +func writeUInt(inputBuff *bytes.Buffer, value uint32) { + var buff = make([]byte, 4) + binary.BigEndian.PutUint32(buff, value) + inputBuff.Write(buff) +} + +func writeBInt(inputBuff *bufio.Writer, value int) { + writeBUInt(inputBuff, uint32(value)) +} + +func writeBUInt(inputBuff *bufio.Writer, value uint32) { + var buff = make([]byte, 4) + binary.BigEndian.PutUint32(buff, value) + inputBuff.Write(buff) +} + +func bytesFromInt(value uint32) []byte { + var buff = make([]byte, 4) + binary.BigEndian.PutUint32(buff, value) + return buff +} +func writeString(inputBuff *bytes.Buffer, value string) { + writeUShort(inputBuff, uint16(len(value))) + inputBuff.Write([]byte(value)) +} + +func writeStringArray(inputBuff *bytes.Buffer, array []string) { + writeInt(inputBuff, len(array)) + for _, s := range array { + writeString(inputBuff, s) + } +} + +func writeMapStringString(inputBuff *bytes.Buffer, mapString map[string]string) { + writeInt(inputBuff, len(mapString)) + for k, v := range mapString { + writeString(inputBuff, k) + writeString(inputBuff, v) + } + +} + +func writeBytes(inputBuff *bytes.Buffer, value []byte) { + inputBuff.Write(value) +} + +// writeProtocolHeader protocol utils functions +func writeProtocolHeader(inputBuff *bytes.Buffer, + length int, command uint16, + correlationId ...int) { + + writeInt(inputBuff, length) + writeUShort(inputBuff, command) + writeShort(inputBuff, version1) + if len(correlationId) > 0 { + writeInt(inputBuff, correlationId[0]) + } + +} + +func writeBProtocolHeader(inputBuff *bufio.Writer, + length int, command int16, + correlationId ...int) { + writeBProtocolHeaderVersion(inputBuff, length, command, version1, correlationId...) +} + +func writeBProtocolHeaderVersion(inputBuff *bufio.Writer, + length int, command int16, version int16, + correlationId ...int) { + + writeBInt(inputBuff, length) + writeBShort(inputBuff, command) + writeBShort(inputBuff, version) + if len(correlationId) > 0 { + writeBInt(inputBuff, correlationId[0]) + } +} + +func sizeOfStringArray(array []string) int { + size := 0 + for _, s := range array { + size += 2 + len(s) + } + return size +} + +func sizeOfMapStringString(mapString map[string]string) int { + size := 0 + for k, v := range mapString { + size += 2 + len(k) + 2 + len(v) + } + return size +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go new file mode 100644 index 0000000..e8ba938 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go @@ -0,0 +1,1121 @@ +package stream + +import ( + "bufio" + "bytes" + "crypto/tls" + "errors" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "math/rand" + "net" + "net/url" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" +) + +// SaslConfiguration see +// +// SaslConfigurationPlain = "PLAIN" +// SaslConfigurationExternal = "EXTERNAL" +// + +type SaslConfiguration struct { + Mechanism string +} + +func newSaslConfigurationDefault() *SaslConfiguration { + return &SaslConfiguration{ + Mechanism: SaslConfigurationPlain, + } +} + +type TuneState struct { + requestedMaxFrameSize int + requestedHeartbeat int +} + +type ClientProperties struct { + items map[string]string +} + +type ConnectionProperties struct { + host string + port string +} + +type HeartBeat struct { + mutex sync.Mutex + value time.Time +} + +type Client struct { + socket socket + destructor *sync.Once + clientProperties ClientProperties + connectionProperties ConnectionProperties + tuneState TuneState + coordinator *Coordinator + broker *Broker + tcpParameters *TCPParameters + saslConfiguration *SaslConfiguration + + mutex *sync.Mutex + metadataListener metadataListener + lastHeartBeat HeartBeat + socketCallTimeout time.Duration + availableFeatures *availableFeatures + serverProperties map[string]string +} + +func newClient(connectionName string, broker *Broker, + tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, rpcTimeOut time.Duration) *Client { + var clientBroker = broker + if broker == nil { + clientBroker = newBrokerDefault() + } + if tcpParameters == nil { + tcpParameters = newTCPParameterDefault() + } + + if saslConfiguration == nil { + saslConfiguration = newSaslConfigurationDefault() + } + + c := &Client{ + coordinator: NewCoordinator(), + broker: clientBroker, + tcpParameters: tcpParameters, + saslConfiguration: saslConfiguration, + destructor: &sync.Once{}, + mutex: &sync.Mutex{}, + clientProperties: ClientProperties{items: make(map[string]string)}, + connectionProperties: ConnectionProperties{}, + lastHeartBeat: HeartBeat{ + value: time.Now(), + }, + socket: socket{ + mutex: &sync.Mutex{}, + destructor: &sync.Once{}, + }, + socketCallTimeout: rpcTimeOut, + availableFeatures: newAvailableFeatures(), + } + c.setConnectionName(connectionName) + return c +} + +func (c *Client) getSocket() *socket { + //c.mutex.Lock() + //defer c.mutex.Unlock() + return &c.socket +} + +func (c *Client) setSocketConnection(connection net.Conn) { + //c.mutex.Lock() + //defer c.mutex.Unlock() + c.socket.connection = connection + c.socket.writer = bufio.NewWriter(connection) +} + +func (c *Client) getTuneState() TuneState { + c.mutex.Lock() + defer c.mutex.Unlock() + return c.tuneState +} + +func (c *Client) getLastHeartBeat() time.Time { + c.lastHeartBeat.mutex.Lock() + defer c.lastHeartBeat.mutex.Unlock() + return c.lastHeartBeat.value +} + +func (c *Client) setLastHeartBeat(value time.Time) { + c.lastHeartBeat.mutex.Lock() + defer c.lastHeartBeat.mutex.Unlock() + c.lastHeartBeat.value = value +} + +func (c *Client) connect() error { + c.mutex.Lock() + defer c.mutex.Unlock() + if !c.socket.isOpen() { + u, err := url.Parse(c.broker.GetUri()) + if err != nil { + return err + } + host, port := u.Hostname(), u.Port() + c.tuneState.requestedMaxFrameSize = c.tcpParameters.RequestedMaxFrameSize + c.tuneState.requestedHeartbeat = int(c.tcpParameters.RequestedHeartbeat.Seconds()) + + servAddr := net.JoinHostPort(host, port) + tcpAddr, errorResolve := net.ResolveTCPAddr("tcp", servAddr) + if errorResolve != nil { + logs.LogDebug("Resolve error %s", errorResolve) + return errorResolve + } + connection, errorConnection := net.DialTCP("tcp", nil, tcpAddr) + if errorConnection != nil { + logs.LogDebug("%s", errorConnection) + return errorConnection + } + + if err = connection.SetWriteBuffer(c.tcpParameters.WriteBuffer); err != nil { + logs.LogError("Failed to SetWriteBuffer to %d due to %v", c.tcpParameters.WriteBuffer, err) + return err + } + if err = connection.SetReadBuffer(c.tcpParameters.ReadBuffer); err != nil { + logs.LogError("Failed to SetReadBuffer to %d due to %v", c.tcpParameters.ReadBuffer, err) + return err + } + if err = connection.SetNoDelay(c.tcpParameters.NoDelay); err != nil { + logs.LogError("Failed to SetNoDelay to %b due to %v", c.tcpParameters.NoDelay, err) + return err + } + + if c.broker.isTLS() { + conf := &tls.Config{} + if c.tcpParameters.tlsConfig != nil { + conf = c.tcpParameters.tlsConfig + } + c.setSocketConnection(tls.Client(connection, conf)) + } else { + c.setSocketConnection(connection) + } + + c.socket.setOpen() + + go c.handleResponse() + serverProperties, err2 := c.peerProperties() + c.serverProperties = serverProperties + if err2 != nil { + logs.LogError("Can't set the peer-properties. Check if the stream server is running/reachable") + return err2 + } + + pwd, _ := u.User.Password() + err2 = c.authenticate(u.User.Username(), pwd) + if err2 != nil { + logs.LogDebug("User:%s, %s", u.User.Username(), err2) + return err2 + } + vhost := "/" + if len(u.Path) > 1 { + vhost, _ = url.QueryUnescape(u.Path[1:]) + } + err2 = c.open(vhost) + if err2 != nil { + logs.LogDebug("%s", err2) + return err2 + } + + logs.LogDebug("Server properties: %s", c.serverProperties) + if serverProperties["version"] == "" { + logs.LogInfo( + "Server version is less than 3.11.0, skipping command version exchange") + } else { + err := c.exchangeVersion(c.serverProperties["version"]) + if err != nil { + return err + } + logs.LogDebug("available features: %s", c.availableFeatures) + } + + c.heartBeat() + logs.LogDebug("User %s, connected to: %s, vhost:%s", u.User.Username(), + net.JoinHostPort(host, port), + vhost) + } + return nil +} + +func (c *Client) setConnectionName(connectionName string) { + c.clientProperties.items["connection_name"] = connectionName +} + +func (c *Client) peerProperties() (map[string]string, error) { + clientPropertiesSize := 4 // size of the map, always there + + c.clientProperties.items["product"] = "RabbitMQ Stream" + c.clientProperties.items["copyright"] = "Copyright (c) 2021 VMware, Inc. or its affiliates." + c.clientProperties.items["information"] = "Licensed under the MPL 2.0. See https://www.rabbitmq.com/" + c.clientProperties.items["version"] = ClientVersion + c.clientProperties.items["platform"] = "Golang" + for key, element := range c.clientProperties.items { + clientPropertiesSize = clientPropertiesSize + 2 + len(key) + 2 + len(element) + } + + length := 2 + 2 + 4 + clientPropertiesSize + resp := c.coordinator.NewResponse(commandPeerProperties) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandPeerProperties, + correlationId) + writeInt(b, len(c.clientProperties.items)) + + for key, element := range c.clientProperties.items { + writeString(b, key) + writeString(b, element) + } + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + serverProperties := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return serverProperties.(map[string]string), nil +} + +func (c *Client) authenticate(user string, password string) error { + + saslMechanisms, err := c.getSaslMechanisms() + if err != nil { + return err + } + saslMechanism := "" + for i := 0; i < len(saslMechanisms); i++ { + if saslMechanisms[i] == c.saslConfiguration.Mechanism { + saslMechanism = c.saslConfiguration.Mechanism + break + } + } + if saslMechanism == "" { + return fmt.Errorf("no matching mechanism found") + } + + response := unicodeNull + user + unicodeNull + password + saslResponse := []byte(response) + return c.sendSaslAuthenticate(saslMechanism, saslResponse) +} + +func (c *Client) getSaslMechanisms() ([]string, error) { + length := 2 + 2 + 4 + resp := c.coordinator.NewResponse(commandSaslHandshake) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandSaslHandshake, + correlationId) + + errWrite := c.socket.writeAndFlush(b.Bytes()) + data := <-resp.data + err := c.coordinator.RemoveResponseById(correlationId) + if err != nil { + return nil, err + } + if errWrite != nil { + return nil, errWrite + } + return data.([]string), nil + +} + +func (c *Client) sendSaslAuthenticate(saslMechanism string, challengeResponse []byte) error { + length := 2 + 2 + 4 + 2 + len(saslMechanism) + 4 + len(challengeResponse) + resp := c.coordinator.NewResponse(commandSaslAuthenticate) + respTune := c.coordinator.NewResponseWitName("tune") + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandSaslAuthenticate, + correlationId) + + writeString(b, saslMechanism) + writeInt(b, len(challengeResponse)) + b.Write(challengeResponse) + err := c.handleWrite(b.Bytes(), resp) + if err.Err != nil { + return err.Err + } + // double read for TUNE + tuneData := <-respTune.data + errR := c.coordinator.RemoveResponseByName("tune") + if errR != nil { + return errR + } + + return c.socket.writeAndFlush(tuneData.([]byte)) +} + +func (c *Client) exchangeVersion(serverVersion string) error { + _ = c.availableFeatures.SetVersion(serverVersion) + + commands := c.availableFeatures.GetCommands() + + length := 2 + 2 + 4 + + 4 + // commands size + len(commands)*(2+2+2) + resp := c.coordinator.NewResponse(commandExchangeVersion) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandExchangeVersion, + correlationId) + + writeInt(b, len(commands)) + + for _, command := range commands { + writeUShort(b, command.GetCommandKey()) + writeUShort(b, command.GetMinVersion()) + writeUShort(b, command.GetMaxVersion()) + } + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return err.Err + } + + commandsResponse := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + c.availableFeatures.ParseCommandVersions(commandsResponse.([]commandVersion)) + return nil +} + +func (c *Client) open(virtualHost string) error { + length := 2 + 2 + 4 + 2 + len(virtualHost) + resp := c.coordinator.NewResponse(commandOpen, virtualHost) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandOpen, + correlationId) + writeString(b, virtualHost) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return err.Err + } + + advHostPort := <-resp.data + c.connectionProperties.host = advHostPort.(ConnectionProperties).host + c.connectionProperties.port = advHostPort.(ConnectionProperties).port + + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return nil + +} + +func (c *Client) DeleteStream(streamName string) error { + length := 2 + 2 + 4 + 2 + len(streamName) + resp := c.coordinator.NewResponse(commandDeleteStream, streamName) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandDeleteStream, + correlationId) + + writeString(b, streamName) + + return c.handleWrite(b.Bytes(), resp).Err +} + +func (c *Client) heartBeat() { + ticker := time.NewTicker(60 * time.Second) + tickerHeatBeat := time.NewTicker(20 * time.Second) + resp := c.coordinator.NewResponseWitName("heartbeat") + var heartBeatMissed int32 + go func() { + for c.socket.isOpen() { + <-tickerHeatBeat.C + if time.Since(c.getLastHeartBeat()) > time.Duration(c.tuneState.requestedHeartbeat)*time.Second { + v := atomic.AddInt32(&heartBeatMissed, 1) + logs.LogWarn("Missing heart beat: %d", v) + if v >= 2 { + logs.LogWarn("Too many heartbeat missing: %d", v) + c.Close() + } + } else { + atomic.StoreInt32(&heartBeatMissed, 0) + } + + } + tickerHeatBeat.Stop() + }() + + go func() { + for { + select { + case code := <-resp.code: + if code.id == closeChannel { + _ = c.coordinator.RemoveResponseByName("heartbeat") + } + ticker.Stop() + return + case <-ticker.C: + logs.LogDebug("Sending heart beat: %s", time.Now()) + c.sendHeartbeat() + } + } + }() + +} + +func (c *Client) sendHeartbeat() { + length := 4 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandHeartbeat) + _ = c.socket.writeAndFlush(b.Bytes()) +} + +func (c *Client) closeHartBeat() { + c.destructor.Do(func() { + r, err := c.coordinator.GetResponseByName("heartbeat") + if err != nil { + logs.LogDebug("error removing heartbeat: %s", err) + } else { + r.code <- Code{id: closeChannel} + } + }) + +} + +func (c *Client) Close() error { + for _, p := range c.coordinator.Producers() { + err := c.coordinator.RemoveProducerById(p.(*Producer).id, Event{ + Command: CommandClose, + StreamName: p.(*Producer).GetStreamName(), + Name: p.(*Producer).GetName(), + Reason: SocketClosed, + Err: nil, + }) + + if err != nil { + logs.LogWarn("error removing producer: %s", err) + } + } + + for _, cs := range c.coordinator.consumers { + err := c.coordinator.RemoveConsumerById(cs.(*Consumer).ID, Event{ + Command: CommandClose, + StreamName: cs.(*Consumer).GetStreamName(), + Name: cs.(*Consumer).GetName(), + Reason: SocketClosed, + Err: nil, + }) + if err != nil { + logs.LogWarn("error removing consumer: %s", err) + } + } + + if c.metadataListener != nil { + close(c.metadataListener) + c.metadataListener = nil + } + + if c.getSocket().isOpen() { + + c.closeHartBeat() + res := c.coordinator.NewResponse(CommandClose) + length := 2 + 2 + 4 + 2 + 2 + len("OK") + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandClose, res.correlationid) + writeUShort(b, responseCodeOk) + writeString(b, "OK") + + errW := c.socket.writeAndFlush(b.Bytes()) + if errW != nil { + logs.LogWarn("error during Send client close %s", errW) + } + _ = c.coordinator.RemoveResponseById(res.correlationid) + } + c.getSocket().shutdown(nil) + return nil +} + +func (c *Client) DeclarePublisher(streamName string, options *ProducerOptions) (*Producer, error) { + if options == nil { + options = NewProducerOptions() + } + + if options.IsFilterEnabled() && !c.availableFeatures.BrokerFilterEnabled() { + return nil, FilterNotSupported + } + + if options.isSubEntriesBatching() && options.IsFilterEnabled() { + return nil, fmt.Errorf("sub-entry batching can't be enabled with filter") + } + if options.QueueSize < minQueuePublisherSize || options.QueueSize > maxQueuePublisherSize { + return nil, fmt.Errorf("QueueSize values must be between %d and %d", + minQueuePublisherSize, maxQueuePublisherSize) + } + + if options.BatchSize < minBatchSize || options.BatchSize > maxBatchSize { + return nil, fmt.Errorf("BatchSize values must be between %d and %d", + minBatchSize, maxBatchSize) + } + + if options.BatchPublishingDelay < minBatchPublishingDelay || options.BatchPublishingDelay > maxBatchPublishingDelay { + return nil, fmt.Errorf("BatchPublishingDelay values must be between %d and %d", + minBatchPublishingDelay, maxBatchPublishingDelay) + } + + if options.SubEntrySize < minSubEntrySize || options.SubEntrySize > maxSubEntrySize { + return nil, fmt.Errorf("SubEntrySize values must be between %d and %d", + minSubEntrySize, maxSubEntrySize) + } + + if !options.isSubEntriesBatching() { + if options.Compression.enabled { + return nil, fmt.Errorf("sub-entry batching must be enabled to enable compression") + } + } + + if !options.isSubEntriesBatching() { + if options.Compression.value != None && options.Compression.value != GZIP { + return nil, fmt.Errorf("compression values valid are: %d (None) %d (Gzip)", None, GZIP) + } + } + + producer, err := c.coordinator.NewProducer(&ProducerOptions{ + client: c, + streamName: streamName, + Name: options.Name, + QueueSize: options.QueueSize, + BatchSize: options.BatchSize, + BatchPublishingDelay: options.BatchPublishingDelay, + SubEntrySize: options.SubEntrySize, + Compression: options.Compression, + ConfirmationTimeOut: options.ConfirmationTimeOut, + ClientProvidedName: options.ClientProvidedName, + Filter: options.Filter, + }) + + if err != nil { + return nil, err + } + res := c.internalDeclarePublisher(streamName, producer) + if res.Err == nil { + producer.startPublishTask() + producer.startUnconfirmedMessagesTimeOutTask() + } + return producer, res.Err +} + +func (c *Client) internalDeclarePublisher(streamName string, producer *Producer) responseError { + publisherReferenceSize := 0 + if producer.options != nil { + if producer.options.Name != "" { + publisherReferenceSize = len(producer.options.Name) + } + } + + length := 2 + 2 + 4 + 1 + 2 + publisherReferenceSize + 2 + len(streamName) + resp := c.coordinator.NewResponse(commandDeclarePublisher, streamName) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandDeclarePublisher, + correlationId) + + writeByte(b, producer.id) + writeShort(b, int16(publisherReferenceSize)) + if publisherReferenceSize > 0 { + writeBytes(b, []byte(producer.options.Name)) + } + + writeString(b, streamName) + res := c.handleWrite(b.Bytes(), resp) + + if publisherReferenceSize > 0 { + v, _ := c.queryPublisherSequence(producer.options.Name, streamName) + producer.sequence = v + } + + return res +} + +func (c *Client) metaData(streams ...string) *StreamsMetadata { + + length := 2 + 2 + 4 + 4 // API code, version, correlation id, size of array + for _, stream := range streams { + length += 2 + length += len(stream) + + } + resp := c.coordinator.NewResponse(commandMetadata) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandMetadata, + correlationId) + + writeInt(b, len(streams)) + for _, stream := range streams { + writeString(b, stream) + } + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil + } + + data := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return data.(*StreamsMetadata) +} + +func (c *Client) queryPublisherSequence(publisherReference string, stream string) (int64, error) { + + length := 2 + 2 + 4 + 2 + len(publisherReference) + 2 + len(stream) + resp := c.coordinator.NewResponse(commandQueryPublisherSequence) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandQueryPublisherSequence, correlationId) + + writeString(b, publisherReference) + writeString(b, stream) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return 0, err.Err + } + + sequence := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return sequence.(int64), nil + +} + +func (c *Client) BrokerLeader(stream string) (*Broker, error) { + + streamsMetadata := c.metaData(stream) + if streamsMetadata == nil { + return nil, fmt.Errorf("leader error for stream for stream: %s", stream) + } + + streamMetadata := streamsMetadata.Get(stream) + if streamMetadata.responseCode != responseCodeOk { + return nil, lookErrorCode(streamMetadata.responseCode) + } + if streamMetadata.Leader == nil { + return nil, LeaderNotReady + } + + streamMetadata.Leader.advPort = streamMetadata.Leader.Port + streamMetadata.Leader.advHost = streamMetadata.Leader.Host + + // see: https://github.com/rabbitmq/rabbitmq-stream-go-client/pull/317 + _, err := net.LookupIP(streamMetadata.Leader.Host) + if err != nil { + var dnsError *net.DNSError + if errors.As(err, &dnsError) { + if strings.EqualFold(c.broker.Host, "localhost") { + logs.LogWarn("Can't lookup the DNS for %s, error: %s. Trying localhost..", streamMetadata.Leader.Host, err) + streamMetadata.Leader.Host = "localhost" + } else { + logs.LogWarn("Can't lookup the DNS for %s, error: %s", streamMetadata.Leader.Host, err) + } + } + } + + return streamMetadata.Leader, nil +} + +func (c *Client) StreamExists(stream string) bool { + streamsMetadata := c.metaData(stream) + if streamsMetadata == nil { + return false + } + + streamMetadata := streamsMetadata.Get(stream) + return streamMetadata.responseCode == responseCodeOk +} +func (c *Client) BrokerForConsumer(stream string) (*Broker, error) { + streamsMetadata := c.metaData(stream) + if streamsMetadata == nil { + return nil, fmt.Errorf("leader error for stream: %s", stream) + } + + streamMetadata := streamsMetadata.Get(stream) + if streamMetadata.responseCode != responseCodeOk { + return nil, lookErrorCode(streamMetadata.responseCode) + } + + if streamMetadata.Leader == nil { + return nil, LeaderNotReady + } + + brokers := make([]*Broker, 0, 1+len(streamMetadata.Replicas)) + brokers = append(brokers, streamMetadata.Leader) + for idx, replica := range streamMetadata.Replicas { + if replica == nil { + logs.LogWarn("Stream %s replica not ready: %d", stream, idx) + continue + } + brokers = append(brokers, replica) + } + + rand.Seed(time.Now().UnixNano()) + n := rand.Intn(len(brokers)) + return brokers[n], nil +} + +func (c *Client) DeclareStream(streamName string, options *StreamOptions) error { + if streamName == "" { + return fmt.Errorf("stream Name can't be empty") + } + + resp := c.coordinator.NewResponse(commandCreateStream, streamName) + length := 2 + 2 + 4 + 2 + len(streamName) + 4 + correlationId := resp.correlationid + if options == nil { + options = NewStreamOptions() + } + + args, err := options.buildParameters() + if err != nil { + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return err + } + for key, element := range args { + length = length + 2 + len(key) + 2 + len(element) + } + var b = bytes.NewBuffer(make([]byte, 0, length)) + writeProtocolHeader(b, length, commandCreateStream, + correlationId) + writeString(b, streamName) + writeInt(b, len(args)) + + for key, element := range args { + writeString(b, key) + writeString(b, element) + } + + return c.handleWrite(b.Bytes(), resp).Err + +} + +func (c *Client) queryOffset(consumerName string, streamName string) (int64, error) { + length := 2 + 2 + 4 + 2 + len(consumerName) + 2 + len(streamName) + + resp := c.coordinator.NewResponse(CommandQueryOffset) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandQueryOffset, + correlationId) + + writeString(b, consumerName) + writeString(b, streamName) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return 0, err.Err + } + + offset := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return offset.(int64), nil +} + +func (c *Client) DeclareSubscriber(streamName string, + messagesHandler MessagesHandler, + options *ConsumerOptions) (*Consumer, error) { + if options == nil { + options = NewConsumerOptions() + } + + if options.initialCredits <= 0 { + options.initialCredits = 10 + } + if containsOnlySpaces(options.ConsumerName) { + return nil, fmt.Errorf("consumer name contains only spaces") + } + + if options.IsSingleActiveConsumerEnabled() && !c.availableFeatures.IsBrokerSingleActiveConsumerEnabled() { + return nil, SingleActiveConsumerNotSupported + } + + if options.IsSingleActiveConsumerEnabled() && strings.TrimSpace(options.ConsumerName) == "" { + return nil, fmt.Errorf("single active enabled but name is empty. You need to set a name") + } + + if options.IsSingleActiveConsumerEnabled() && options.SingleActiveConsumer.ConsumerUpdate == nil { + return nil, fmt.Errorf("single active enabled but consumer update function is nil. Consumer update must be set") + } + + if options.IsFilterEnabled() && !c.availableFeatures.BrokerFilterEnabled() { + return nil, FilterNotSupported + } + + if options.IsFilterEnabled() && options.Filter.PostFilter == nil { + return nil, fmt.Errorf("filter enabled but post filter is nil. Post filter must be set") + } + + if options.IsFilterEnabled() && (options.Filter.Values == nil || len(options.Filter.Values) == 0) { + return nil, fmt.Errorf("filter enabled but no values. At least one value must be set") + } + + if options.IsFilterEnabled() { + for _, value := range options.Filter.Values { + if value == "" { + return nil, fmt.Errorf("filter enabled but one of the value is empty") + } + } + } + + if options.Offset.typeOfs <= 0 || options.Offset.typeOfs > 6 { + return nil, fmt.Errorf("specify a valid Offset") + } + + if options.autoCommitStrategy.flushInterval < 1*time.Second { + return nil, fmt.Errorf("flush internal must be bigger than one second") + } + + if options.autoCommitStrategy.messageCountBeforeStorage < 1 { + return nil, fmt.Errorf("message count before storage must be bigger than one") + } + + if options.Offset.isLastConsumed() { + lastOffset, err := c.queryOffset(options.ConsumerName, streamName) + switch { + case err == nil, errors.Is(err, OffsetNotFoundError): + if errors.Is(err, OffsetNotFoundError) { + options.Offset.typeOfs = typeFirst + options.Offset.offset = 0 + break + } else { + options.Offset.offset = lastOffset + options.Offset.typeOfs = typeOffset + break + } + default: + return nil, err + } + } + + options.client = c + options.streamName = streamName + consumer := c.coordinator.NewConsumer(messagesHandler, options) + + length := 2 + 2 + 4 + 1 + 2 + len(streamName) + 2 + 2 + if options.Offset.isOffset() || + options.Offset.isTimestamp() { + length += 8 + } + + // copy the option offset to the consumer offset + // the option.offset won't change ( in case we need to retrive the original configuration) + // consumer.current offset will be moved when reading + consumer.setCurrentOffset(options.Offset.offset) + + /// define the consumerOptions + consumerProperties := make(map[string]string) + + if options.ConsumerName != "" { + consumerProperties["name"] = options.ConsumerName + } + + if options.IsSingleActiveConsumerEnabled() { + consumerProperties["single-active-consumer"] = "true" + if options.SingleActiveConsumer.superStream != "" { + consumerProperties["super-stream"] = options.SingleActiveConsumer.superStream + } + } + + if options.Filter != nil { + for i, filterValue := range options.Filter.Values { + k := fmt.Sprintf("%s%d", subscriptionPropertyFilterPrefix, i) + consumerProperties[k] = filterValue + } + + consumerProperties[subscriptionPropertyMatchUnfiltered] = strconv.FormatBool(options.Filter.MatchUnfiltered) + } + + if len(consumerProperties) > 0 { + length += 4 // size of the properties map + + for k, v := range consumerProperties { + length += 2 + len(k) + length += 2 + len(v) + + } + } + + resp := c.coordinator.NewResponse(commandSubscribe, streamName) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandSubscribe, + correlationId) + writeByte(b, consumer.ID) + + writeString(b, streamName) + + writeShort(b, options.Offset.typeOfs) + + if options.Offset.isOffset() || + options.Offset.isTimestamp() { + writeLong(b, options.Offset.offset) + } + writeShort(b, options.initialCredits) + if len(consumerProperties) > 0 { + writeInt(b, len(consumerProperties)) + for k, v := range consumerProperties { + writeString(b, k) + writeString(b, v) + } + } + + err := c.handleWrite(b.Bytes(), resp) + + canDispatch := func(offsetMessage *offsetMessage) bool { + if !consumer.isActive() { + logs.LogDebug("The consumer is not active anymore the message will be skipped, partition %s", streamName) + return false + } + + if options.IsFilterEnabled() && options.Filter.PostFilter != nil { + return options.Filter.PostFilter(offsetMessage.message) + } + return true + } + + go func() { + for { + select { + case code := <-consumer.response.code: + if code.id == closeChannel { + return + } + + case chunk := <-consumer.response.chunkForConsumer: + for _, offMessage := range chunk.offsetMessages { + consumer.setCurrentOffset(offMessage.offset) + if canDispatch(offMessage) { + consumer.MessagesHandler(ConsumerContext{Consumer: consumer, chunkInfo: &chunk}, offMessage.message) + } + if consumer.options.autocommit { + consumer.messageCountBeforeStorage += 1 + if consumer.messageCountBeforeStorage >= consumer.options.autoCommitStrategy.messageCountBeforeStorage { + consumer.cacheStoreOffset() + consumer.messageCountBeforeStorage = 0 + } + } + } + + case <-time.After(consumer.options.autoCommitStrategy.flushInterval): + consumer.cacheStoreOffset() + + } + } + }() + return consumer, err.Err +} + +func (c *Client) StreamStats(streamName string) (*StreamStats, error) { + + resp := c.coordinator.NewResponse(commandStreamStatus) + correlationId := resp.correlationid + + length := 2 + 2 + 4 + 2 + len(streamName) + + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandStreamStatus, + correlationId) + writeString(b, streamName) + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + offset := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + m, ok := offset.(map[string]int64) + if !ok { + return nil, fmt.Errorf("invalid response, expected map[string]int64 but got %T", offset) + } + return newStreamStats(m, streamName), nil +} + +func (c *Client) DeclareSuperStream(superStream string, options SuperStreamOptions) error { + + if superStream == "" || containsOnlySpaces(superStream) { + return fmt.Errorf("super Stream Name can't be empty") + } + + if options == nil { + return fmt.Errorf("options can't be nil") + } + + if len(options.getPartitions(superStream)) == 0 { + return fmt.Errorf("partitions can't be empty") + } + + if len(options.getBindingKeys()) == 0 { + return fmt.Errorf("binding keys can't be empty") + } + + for _, key := range options.getBindingKeys() { + if key == "" || containsOnlySpaces(key) { + return fmt.Errorf("binding key can't be empty") + } + } + + for _, partition := range options.getPartitions(superStream) { + if partition == "" || containsOnlySpaces(partition) { + return fmt.Errorf("partition can't be empty") + } + } + + length := 2 + 2 + 4 + + 2 + len(superStream) + 4 + + sizeOfStringArray(options.getPartitions(superStream)) + 4 + + sizeOfStringArray(options.getBindingKeys()) + 4 + + sizeOfMapStringString(options.getArgs()) + + resp := c.coordinator.NewResponse(commandCreateSuperStream, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandCreateSuperStream, correlationId) + writeString(b, superStream) + writeStringArray(b, options.getPartitions(superStream)) + writeStringArray(b, options.getBindingKeys()) + writeMapStringString(b, options.getArgs()) + + return c.handleWrite(b.Bytes(), resp).Err +} + +func (c *Client) DeleteSuperStream(superStream string) error { + length := 2 + 2 + 4 + 2 + len(superStream) + resp := c.coordinator.NewResponse(commandDeleteSuperStream, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandDeleteSuperStream, + correlationId) + writeString(b, superStream) + return c.handleWrite(b.Bytes(), resp).Err +} + +func (c *Client) QueryPartitions(superStream string) ([]string, error) { + length := 2 + 2 + 4 + 2 + len(superStream) + resp := c.coordinator.NewResponse(commandQueryPartition, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandQueryPartition, + correlationId) + writeString(b, superStream) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + data := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return data.([]string), nil +} + +func (c *Client) queryRoute(superStream string, routingKey string) ([]string, error) { + + length := 2 + 2 + 4 + 2 + len(superStream) + 2 + len(routingKey) + resp := c.coordinator.NewResponse(commandQueryRoute, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandQueryRoute, + correlationId) + writeString(b, routingKey) + writeString(b, superStream) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + data := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return data.([]string), nil + +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go new file mode 100644 index 0000000..145d360 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go @@ -0,0 +1,232 @@ +package stream + +import ( + "fmt" + "time" + + "github.com/pkg/errors" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" +) + +// is needed to indicate the general status +// for example the producer status + +const ( + open = iota + closed = iota +) + +const initBufferPublishSize = 2 + 2 + 1 + 4 + +const ( + ClientVersion = "1.4.6" + + commandDeclarePublisher = 1 + commandPublish = 2 + commandPublishConfirm = 3 + commandPublishError = 4 + commandQueryPublisherSequence = 5 + CommandDeletePublisher = 6 + commandSubscribe = 7 + commandDeliver = 8 + commandCredit = 9 + commandStoreOffset = 10 + CommandQueryOffset = 11 + CommandUnsubscribe = 12 + commandCreateStream = 13 + commandDeleteStream = 14 + commandMetadata = 15 + CommandMetadataUpdate = 16 + commandPeerProperties = 17 + commandSaslHandshake = 18 + commandSaslAuthenticate = 19 + commandTune = 20 + commandOpen = 21 + CommandClose = 22 + commandHeartbeat = 23 + commandQueryRoute = 24 + commandQueryPartition = 25 + consumerUpdateQueryResponse = 26 + commandExchangeVersion = 27 + commandStreamStatus = 28 + commandCreateSuperStream = 29 + commandDeleteSuperStream = 30 + commandConsumerUpdate = 0x801a + + /// used only for tests + commandUnitTest = 99 + + version1 = 1 + version2 = 2 + unicodeNull = "\u0000" + + responseCodeOk = uint16(1) + responseCodeStreamDoesNotExist = uint16(2) + responseCodeSubscriptionIdAlreadyExists = uint16(3) + responseCodeSubscriptionIdDoesNotExist = uint16(4) + responseCodeStreamAlreadyExists = uint16(5) + responseCodeStreamNotAvailable = uint16(6) + responseCodeSaslMechanismNotSupported = uint16(7) + responseCodeAuthenticationFailure = uint16(8) + responseCodeSaslError = uint16(9) + responseCodeSaslChallenge = uint16(10) + responseCodeAuthenticationFailureLoopback = uint16(11) + responseCodeVirtualHostAccessFailure = uint16(12) + responseCodeUnknownFrame = uint16(13) + responseCodeFrameTooLarge = uint16(14) + responseCodeInternalError = uint16(15) + responseCodeAccessRefused = uint16(16) + responseCodePreconditionFailed = uint16(17) + responseCodePublisherDoesNotExist = uint16(18) + responseCodeNoOffset = uint16(19) + + /// responses out of protocol + closeChannel = uint16(60) + connectionCloseError = uint16(61) + timeoutError = uint16(62) + + /// + defaultSocketCallTimeout = 10 * time.Second + + // + LocalhostUriConnection = "rabbitmq-stream://guest:guest@localhost:5552/%2f" + + /// + defaultWriteSocketBuffer = 8092 + defaultReadSocketBuffer = 65536 + defaultQueuePublisherSize = 10000 + minQueuePublisherSize = 100 + maxQueuePublisherSize = 1_000_000 + + minBatchSize = 1 + maxBatchSize = 10_000 + + minSubEntrySize = 1 + maxSubEntrySize = 65535 + + minBatchPublishingDelay = 50 + maxBatchPublishingDelay = 500 + + defaultBatchSize = 100 + defaultBatchPublishingDelay = 100 + defaultConfirmationTimeOut = 10 * time.Second + // + + SocketClosed = "socket client closed" + MetaDataUpdate = "metadata Data update" + LeaderLocatorBalanced = "balanced" + LeaderLocatorClientLocal = "client-local" + + StreamTcpPort = "5552" + + subscriptionPropertyFilterPrefix = "filter." + subscriptionPropertyMatchUnfiltered = "match-unfiltered" +) + +var AlreadyClosed = errors.New("Already Closed") + +var PreconditionFailed = errors.New("Precondition Failed") +var AuthenticationFailure = errors.New("Authentication Failure") +var StreamDoesNotExist = errors.New("Stream Does Not Exist") +var StreamAlreadyExists = errors.New("Stream Already Exists") +var VirtualHostAccessFailure = errors.New("Virtual Host Access Failure") +var SubscriptionIdDoesNotExist = errors.New("Subscription Id Does Not Exist") +var PublisherDoesNotExist = errors.New("Publisher Does Not Exist") +var OffsetNotFoundError = errors.New("Offset not found") +var FrameTooLarge = errors.New("Frame Too Large, the buffer is too big") +var CodeAccessRefused = errors.New("Resources Access Refused") +var ConnectionClosed = errors.New("Can't Send the message, connection closed") +var StreamNotAvailable = errors.New("Stream Not Available") +var UnknownFrame = errors.New("Unknown Frame") +var InternalError = errors.New("Internal Error") +var AuthenticationFailureLoopbackError = errors.New("Authentication Failure Loopback Error") +var ConfirmationTimoutError = errors.New("Confirmation Timeout Error") +var FilterNotSupported = errors.New("Filtering is not supported by the broker " + + "(requires RabbitMQ 3.13+ and stream_filtering feature flag activated)") +var SingleActiveConsumerNotSupported = errors.New("Single Active Consumer is not supported by the broker " + + "(requires RabbitMQ 3.11+ and stream_single_active_consumer feature flag activated)") + +var ErrProducerNotFound = errors.New("Producer not found in the SuperStream Producer") +var ErrMessageRouteNotFound = errors.New("Message Route not found for the message key") +var ErrSuperStreamProducerOptionsNotDefined = errors.New("SuperStreamProducerOptions not defined. The SuperStreamProducerOptions is mandatory with the RoutingStrategy") +var ErrSuperStreamConsumerOptionsNotDefined = errors.New("SuperStreamConsumerOptions not defined.") + +var ErrEnvironmentNotDefined = errors.New("Environment not defined") + +var LeaderNotReady = errors.New("Leader not Ready yet") + +func lookErrorCode(errorCode uint16) error { + switch errorCode { + case responseCodeOk: + return nil + case responseCodeAuthenticationFailure: + return AuthenticationFailure + case responseCodeStreamDoesNotExist: + return StreamDoesNotExist + case responseCodeStreamAlreadyExists: + return StreamAlreadyExists + case responseCodeVirtualHostAccessFailure: + return VirtualHostAccessFailure + case responseCodeSubscriptionIdDoesNotExist: + return SubscriptionIdDoesNotExist + case responseCodePublisherDoesNotExist: + return PublisherDoesNotExist + case responseCodeNoOffset: + return OffsetNotFoundError + case responseCodePreconditionFailed: + return PreconditionFailed + case responseCodeFrameTooLarge: + return FrameTooLarge + case responseCodeAccessRefused: + return CodeAccessRefused + case responseCodeStreamNotAvailable: + return StreamNotAvailable + case responseCodeUnknownFrame: + return UnknownFrame + case responseCodeInternalError: + return InternalError + case responseCodeAuthenticationFailureLoopback: + return AuthenticationFailureLoopbackError + default: + { + logs.LogWarn("Error not handled %d", errorCode) + return errors.New("Generic Error") + } + } +} + +func lookUpCommand(command uint16) string { + var constLookup = map[uint16]string{ + commandPeerProperties: `commandPeerProperties`, + commandSaslHandshake: `commandSaslHandshake`, + commandSaslAuthenticate: `commandSaslAuthenticate`, + commandTune: `commandTune`, + commandOpen: `commandOpen`, + commandHeartbeat: `commandHeartbeat`, + CommandMetadataUpdate: `CommandMetadataUpdate`, + commandMetadata: `CommandMetadata`, + commandDeleteStream: `CommandDeleteStream`, + commandCreateStream: `CommandCreateStream`, + CommandUnsubscribe: `CommandUnsubscribe`, + CommandQueryOffset: `CommandQueryOffset`, + commandCredit: `CommandCredit`, + commandDeliver: `CommandDeliver`, + commandSubscribe: `CommandSubscribe`, + CommandDeletePublisher: `CommandDeletePublisher`, + commandPublishError: `CommandPublishError`, + commandPublishConfirm: `CommandPublishConfirm`, + commandDeclarePublisher: `CommandDeclarePublisher`, + commandUnitTest: `UnitTest`, + CommandClose: `CommandClose`, + } + if constLookup[command] == "" { + return fmt.Sprintf("Command not handled %d", command) + } + + return constLookup[command] +} + +const ( + SaslConfigurationPlain = "PLAIN" + SaslConfigurationExternal = "EXTERNAL" +) diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go new file mode 100644 index 0000000..f310f83 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go @@ -0,0 +1,521 @@ +package stream + +import ( + "bytes" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + logs "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "sync" + "time" +) + +type Consumer struct { + ID uint8 + response *Response + options *ConsumerOptions + onClose onInternalClose + mutex *sync.Mutex + MessagesHandler MessagesHandler + // different form ConsumerOptions.offset. ConsumerOptions.offset is just the configuration + // and won't change. currentOffset is the status of the offset + currentOffset int64 + + // Remembers the last stored offset (manual or automatic) to avoid to store always the same values + lastStoredOffset int64 + + closeHandler chan Event + // see autocommit strategy + // it is needed to trigger the + // auto-commit after messageCountBeforeStorage + messageCountBeforeStorage int + + status int + + // Single Active consumer. The consumer can be running + // but not active. This flag is used to know if the consumer + // is in waiting mode or not. + // in normal mode, the consumer is always isPromotedAsActive==true + isPromotedAsActive bool +} + +func (consumer *Consumer) setStatus(status int) { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + consumer.status = status +} + +func (consumer *Consumer) getStatus() int { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.status +} + +func (consumer *Consumer) GetStreamName() string { + if consumer.options == nil { + return "" + } + return consumer.options.streamName +} + +func (consumer *Consumer) GetName() string { + if consumer.options == nil { + return "" + } + return consumer.options.ConsumerName +} + +func (consumer *Consumer) setCurrentOffset(offset int64) { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + consumer.currentOffset = offset +} + +func (consumer *Consumer) GetOffset() int64 { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.currentOffset +} + +// isActive returns true if the consumer is promoted as active +// used for Single Active Consumer. Always true in other cases +func (consumer *Consumer) isActive() bool { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.isPromotedAsActive +} + +func (consumer *Consumer) setPromotedAsActive(promoted bool) { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + consumer.isPromotedAsActive = promoted + +} + +func (consumer *Consumer) GetLastStoredOffset() int64 { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.lastStoredOffset +} + +func (consumer *Consumer) updateLastStoredOffset() bool { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + if consumer.lastStoredOffset < consumer.currentOffset { + consumer.lastStoredOffset = consumer.currentOffset + return true + } + return false +} + +func (consumer *Consumer) GetCloseHandler() chan Event { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.closeHandler +} + +func (consumer *Consumer) NotifyClose() ChannelClose { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + ch := make(chan Event, 1) + consumer.closeHandler = ch + return ch +} + +type ConsumerContext struct { + Consumer *Consumer + chunkInfo *chunkInfo +} + +func (cc ConsumerContext) GetEntriesCount() uint16 { + return cc.chunkInfo.numEntries +} + +type MessagesHandler func(consumerContext ConsumerContext, message *amqp.Message) + +type AutoCommitStrategy struct { + messageCountBeforeStorage int + flushInterval time.Duration +} + +func (ac *AutoCommitStrategy) SetCountBeforeStorage(messageCountBeforeStorage int) *AutoCommitStrategy { + ac.messageCountBeforeStorage = messageCountBeforeStorage + return ac +} +func (ac *AutoCommitStrategy) SetFlushInterval(flushInterval time.Duration) *AutoCommitStrategy { + ac.flushInterval = flushInterval + return ac +} + +func NewAutoCommitStrategy() *AutoCommitStrategy { + return &AutoCommitStrategy{ + messageCountBeforeStorage: 10_000, + flushInterval: 5 * time.Second, + } +} + +type PostFilter func(message *amqp.Message) bool + +type ConsumerFilter struct { + Values []string + MatchUnfiltered bool + PostFilter PostFilter +} + +func NewConsumerFilter(values []string, matchUnfiltered bool, postFilter PostFilter) *ConsumerFilter { + return &ConsumerFilter{ + Values: values, + MatchUnfiltered: matchUnfiltered, + PostFilter: postFilter, + } +} + +type ConsumerUpdate func(streamName string, isActive bool) OffsetSpecification + +type SingleActiveConsumer struct { + Enabled bool + // ConsumerUpdate is the function that will be called when the consumer is promoted + // that is when the consumer is active. The function will receive a boolean that is true + // the user can decide to return a new offset to start from. + ConsumerUpdate ConsumerUpdate + // This offset is the one form the user that decides from the ConsumerUpdate function + // nothing to do with: ConsumerOptions.Offset + // the ConsumerOptions.Offset is the initial offset and in case of SingleActiveConsumer + // is not used because the consumer will be promoted and the offset will be set by the ConsumerUpdate + // This is needed to filter the messages during the promotion where needed + offsetSpecification OffsetSpecification + + // SingleActiveConsumer can be used with the super stream consumer + // in this case we need to pass the super stream name + superStream string +} + +func NewSingleActiveConsumer(ConsumerUpdate ConsumerUpdate) *SingleActiveConsumer { + return &SingleActiveConsumer{ + Enabled: true, + ConsumerUpdate: ConsumerUpdate, + } +} + +func newSingleActiveConsumerWithAllParameters( + ConsumerUpdate ConsumerUpdate, isEnabled bool, superStream string) *SingleActiveConsumer { + return &SingleActiveConsumer{ + Enabled: isEnabled, + ConsumerUpdate: ConsumerUpdate, + superStream: superStream, + } +} + +func (s *SingleActiveConsumer) SetEnabled(enabled bool) *SingleActiveConsumer { + s.Enabled = enabled + return s +} + +type ConsumerOptions struct { + client *Client + ConsumerName string + streamName string + autocommit bool + autoCommitStrategy *AutoCommitStrategy + Offset OffsetSpecification + CRCCheck bool + initialCredits int16 + ClientProvidedName string + Filter *ConsumerFilter + SingleActiveConsumer *SingleActiveConsumer +} + +func NewConsumerOptions() *ConsumerOptions { + return &ConsumerOptions{ + Offset: OffsetSpecification{}.Last(), + autocommit: false, + autoCommitStrategy: NewAutoCommitStrategy(), + CRCCheck: false, + initialCredits: 10, + ClientProvidedName: "go-stream-consumer", + Filter: nil, + } +} + +func (c *ConsumerOptions) SetConsumerName(consumerName string) *ConsumerOptions { + c.ConsumerName = consumerName + return c +} + +func (c *ConsumerOptions) SetCRCCheck(CRCCheck bool) *ConsumerOptions { + c.CRCCheck = CRCCheck + return c +} + +func (c *ConsumerOptions) SetInitialCredits(initialCredits int16) *ConsumerOptions { + c.initialCredits = initialCredits + return c +} + +func (c *ConsumerOptions) SetAutoCommit(autoCommitStrategy *AutoCommitStrategy) *ConsumerOptions { + c.autocommit = true + if autoCommitStrategy == nil { + c.autoCommitStrategy = NewAutoCommitStrategy() + } else { + c.autoCommitStrategy = autoCommitStrategy + } + return c +} + +func (c *ConsumerOptions) SetManualCommit() *ConsumerOptions { + c.autocommit = false + return c +} +func (c *ConsumerOptions) SetOffset(offset OffsetSpecification) *ConsumerOptions { + c.Offset = offset + return c +} + +func (c *ConsumerOptions) SetClientProvidedName(clientProvidedName string) *ConsumerOptions { + c.ClientProvidedName = clientProvidedName + return c +} + +func (c *ConsumerOptions) SetFilter(filter *ConsumerFilter) *ConsumerOptions { + c.Filter = filter + return c +} + +func (c *ConsumerOptions) SetSingleActiveConsumer(singleActiveConsumer *SingleActiveConsumer) *ConsumerOptions { + c.SingleActiveConsumer = singleActiveConsumer + return c +} + +func (c *ConsumerOptions) IsSingleActiveConsumerEnabled() bool { + return c.SingleActiveConsumer != nil && c.SingleActiveConsumer.Enabled +} + +func (c *ConsumerOptions) IsFilterEnabled() bool { + return c.Filter != nil +} + +func (c *Client) credit(subscriptionId byte, credit int16) { + length := 2 + 2 + 1 + 2 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandCredit) + writeByte(b, subscriptionId) + writeShort(b, credit) + err := c.socket.writeAndFlush(b.Bytes()) + if err != nil { + logs.LogWarn("credit error:%s", err) + } +} + +func (consumer *Consumer) Close() error { + if consumer.getStatus() == closed { + return AlreadyClosed + } + consumer.cacheStoreOffset() + + consumer.setStatus(closed) + _, errGet := consumer.options.client.coordinator.GetConsumerById(consumer.ID) + if errGet != nil { + return nil + } + + length := 2 + 2 + 4 + 1 + resp := consumer.options.client.coordinator.NewResponse(CommandUnsubscribe) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandUnsubscribe, + correlationId) + + writeByte(b, consumer.ID) + err := consumer.options.client.handleWrite(b.Bytes(), resp) + if err.Err != nil && err.isTimeout { + return err.Err + } + consumer.response.code <- Code{id: closeChannel} + errC := consumer.options.client.coordinator.RemoveConsumerById(consumer.ID, Event{ + Command: CommandUnsubscribe, + StreamName: consumer.GetStreamName(), + Name: consumer.GetName(), + Reason: "unSubscribe", + Err: nil, + }) + + if errC != nil { + logs.LogWarn("Error during remove consumer id:%s", errC) + + } + + if consumer.options.client.coordinator.ConsumersCount() == 0 { + err := consumer.options.client.Close() + if err != nil { + return err + } + } + + ch := make(chan uint8, 1) + ch <- consumer.ID + consumer.onClose(ch) + close(ch) + return err.Err +} + +func (consumer *Consumer) cacheStoreOffset() { + if consumer.options.autocommit { + err := consumer.internalStoreOffset() + if err != nil { + logs.LogError("cache Store Offset error : %s", err) + } + } +} + +func (consumer *Consumer) StoreOffset() error { + return consumer.internalStoreOffset() +} +func (consumer *Consumer) StoreCustomOffset(offset int64) error { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + + if consumer.lastStoredOffset < offset { + consumer.lastStoredOffset = offset + return consumer.writeOffsetToSocket(offset) + } + return nil +} +func (consumer *Consumer) internalStoreOffset() error { + if consumer.options.streamName == "" { + return fmt.Errorf("stream Name can't be empty") + } + + if consumer.updateLastStoredOffset() { + return consumer.writeOffsetToSocket(consumer.GetOffset()) + } + return nil +} +func (consumer *Consumer) writeOffsetToSocket(offset int64) error { + length := 2 + 2 + 2 + len(consumer.options.ConsumerName) + 2 + + len(consumer.options.streamName) + 8 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandStoreOffset) + + writeString(b, consumer.options.ConsumerName) + writeString(b, consumer.options.streamName) + + writeLong(b, offset) + return consumer.options.client.socket.writeAndFlush(b.Bytes()) +} + +func (consumer *Consumer) writeConsumeUpdateOffsetToSocket(correlationID uint32, offsetSpec OffsetSpecification) error { + length := 2 + 2 + 4 + 2 + 2 + if offsetSpec.isOffset() || + offsetSpec.isTimestamp() { + length += 8 + } + + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandConsumerUpdate) + + writeUInt(b, correlationID) + writeUShort(b, responseCodeOk) + + writeShort(b, offsetSpec.typeOfs) + + if offsetSpec.isOffset() || + offsetSpec.isTimestamp() { + writeLong(b, offsetSpec.offset) + } + return consumer.options.client.socket.writeAndFlush(b.Bytes()) +} + +func (consumer *Consumer) QueryOffset() (int64, error) { + return consumer.options.client.queryOffset(consumer.options.ConsumerName, consumer.options.streamName) +} + +/* +SetOffset constants +*/ +const ( + typeFirst = int16(1) + typeLast = int16(2) + typeNext = int16(3) + typeOffset = int16(4) + typeTimestamp = int16(5) + // Deprecated: see LastConsumed() + typeLastConsumed = int16(6) +) + +type OffsetSpecification struct { + typeOfs int16 + offset int64 +} + +func (o OffsetSpecification) First() OffsetSpecification { + o.typeOfs = typeFirst + return o +} + +func (o OffsetSpecification) Last() OffsetSpecification { + o.typeOfs = typeLast + return o +} + +func (o OffsetSpecification) Next() OffsetSpecification { + o.typeOfs = typeNext + return o +} + +func (o OffsetSpecification) Offset(offset int64) OffsetSpecification { + o.typeOfs = typeOffset + o.offset = offset + return o +} + +func (o OffsetSpecification) Timestamp(offset int64) OffsetSpecification { + o.typeOfs = typeTimestamp + o.offset = offset + return o +} + +func (o OffsetSpecification) isOffset() bool { + return o.typeOfs == typeOffset || o.typeOfs == typeLastConsumed +} + +// Deprecated: see LastConsumed() +func (o OffsetSpecification) isLastConsumed() bool { + return o.typeOfs == typeLastConsumed +} +func (o OffsetSpecification) isTimestamp() bool { + return o.typeOfs == typeTimestamp +} + +// Deprecated: The method name may be misleading. +// The method does not indicate the last message consumed of the stream but the last stored offset. +// The method was added to help the user, but it created confusion. +// Use `QueryOffset` instead.: +// +// offset, err := env.QueryOffset(consumerName, streamName) +// // check the error +// .... +// SetOffset(stream.OffsetSpecification{}.Offset(offset)). +// +// So in this way it possible to start from the last offset stored and customize the behavior +func (o OffsetSpecification) LastConsumed() OffsetSpecification { + o.typeOfs = typeLastConsumed + o.offset = -1 + return o +} + +func (o OffsetSpecification) String() string { + switch o.typeOfs { + case typeFirst: + return "first" + case typeNext: + return "next" + case typeLast: + return "last" + case typeLastConsumed: + return "last consumed" + case typeOffset: + return fmt.Sprintf("%s, value: %d", "offset", o.offset) + case typeTimestamp: + return fmt.Sprintf("%s, value: %d", "time-stamp", o.offset) + } + return "" +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go new file mode 100644 index 0000000..3ace056 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go @@ -0,0 +1,85 @@ +package stream + +import ( + "fmt" + "github.com/pkg/errors" + "regexp" + "strconv" + "strings" +) + +const ( + UnitMb = "mb" + UnitKb = "kb" + UnitGb = "gb" + UnitTb = "tb" + kilobytesMultiplier = 1000 + megabytesMultiplier = 1000 * 1000 + gigabytesMultiplier = 1000 * 1000 * 1000 + terabytesMultiplier = 1000 * 1000 * 1000 * 1000 +) + +type ByteCapacity struct { + bytes int64 + error error +} + +func (byteCapacity ByteCapacity) B(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value, error: nil} +} + +func (byteCapacity ByteCapacity) KB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * kilobytesMultiplier, error: nil} +} + +func (byteCapacity ByteCapacity) MB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * megabytesMultiplier, error: nil} +} + +func (byteCapacity ByteCapacity) GB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * gigabytesMultiplier, error: nil} +} +func (byteCapacity ByteCapacity) TB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * terabytesMultiplier, error: nil} +} + +func (byteCapacity ByteCapacity) From(value string) *ByteCapacity { + if value == "" || value == "0" { + return &ByteCapacity{bytes: 0, error: nil} + } + + match, err := regexp.Compile("^((kb|mb|gb|tb))") + if err != nil { + return &ByteCapacity{bytes: 0, + error: errors.New(fmt.Sprintf("Capacity, invalid unit size format:%s", value))} + } + + foundUnitSize := strings.ToLower(value[len(value)-2:]) + + if match.MatchString(foundUnitSize) { + + size, err := strconv.Atoi(value[:len(value)-2]) + if err != nil { + return &ByteCapacity{bytes: 0, error: errors.New(fmt.Sprintf("Capacity, Invalid number format: %s", value))} + } + + switch foundUnitSize { + case UnitKb: + return byteCapacity.KB(int64(size)) + + case UnitMb: + return byteCapacity.MB(int64(size)) + + case UnitGb: + return byteCapacity.GB(int64(size)) + + case UnitTb: + return byteCapacity.TB(int64(size)) + } + + } + + return &ByteCapacity{bytes: 0, + error: errors.New(fmt.Sprintf("Capacity, Invalid unit size format: %s", value))} + +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go new file mode 100644 index 0000000..9764776 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go @@ -0,0 +1,305 @@ +package stream + +import ( + "fmt" + "github.com/pkg/errors" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "strconv" + "sync" + "time" +) + +type Coordinator struct { + counter int + producers map[interface{}]interface{} + consumers map[interface{}]interface{} + responses map[interface{}]interface{} + nextItemProducer uint8 + nextItemConsumer uint8 + mutex *sync.Mutex +} + +type Code struct { + id uint16 +} + +type offsetMessage struct { + message *amqp.Message + offset int64 +} + +type offsetMessages = []*offsetMessage +type chunkInfo struct { + offsetMessages offsetMessages + numEntries uint16 +} + +type Response struct { + code chan Code + data chan interface{} + chunkForConsumer chan chunkInfo + commandDescription string + correlationid int +} + +func NewCoordinator() *Coordinator { + return &Coordinator{mutex: &sync.Mutex{}, + producers: make(map[interface{}]interface{}), + consumers: make(map[interface{}]interface{}), + responses: make(map[interface{}]interface{})} +} + +// producersEnvironment +func (coordinator *Coordinator) NewProducer( + parameters *ProducerOptions) (*Producer, error) { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + size := 10000 + if parameters != nil { + size = parameters.QueueSize + } + + var lastId, err = coordinator.getNextProducerItem() + if err != nil { + return nil, err + } + var producer = &Producer{id: lastId, + options: parameters, + mutex: &sync.Mutex{}, + mutexPending: &sync.Mutex{}, + unConfirmedMessages: map[int64]*ConfirmationStatus{}, + status: open, + messageSequenceCh: make(chan messageSequence, size), + pendingMessages: pendingMessagesSequence{ + messages: make([]messageSequence, 0), + size: initBufferPublishSize, + }} + coordinator.producers[lastId] = producer + return producer, err +} + +func (coordinator *Coordinator) RemoveConsumerById(id interface{}, reason Event) error { + consumer, err := coordinator.GetConsumerById(id) + if err != nil { + return err + } + reason.StreamName = consumer.GetStreamName() + reason.Name = consumer.GetName() + + if closeHandler := consumer.GetCloseHandler(); closeHandler != nil { + closeHandler <- reason + close(closeHandler) + } + + return coordinator.removeById(id, coordinator.consumers) +} +func (coordinator *Coordinator) RemoveProducerById(id uint8, reason Event) error { + + producer, err := coordinator.GetProducerById(id) + if err != nil { + return err + } + reason.StreamName = producer.GetStreamName() + reason.Name = producer.GetName() + tentatives := 0 + for producer.lenUnConfirmed() > 0 && tentatives < 3 { + time.Sleep(200 * time.Millisecond) + tentatives++ + } + + if producer.closeHandler != nil { + producer.closeHandler <- reason + } + + return coordinator.removeById(id, coordinator.producers) +} + +func (coordinator *Coordinator) RemoveResponseById(id interface{}) error { + resp, err := coordinator.GetResponseByName(fmt.Sprintf("%d", id)) + if err != nil { + return err + } + + err = coordinator.removeById(fmt.Sprintf("%d", id), coordinator.responses) + close(resp.code) + close(resp.data) + close(resp.chunkForConsumer) + return err +} + +func (coordinator *Coordinator) ProducersCount() int { + return coordinator.count(coordinator.producers) +} + +// response +func newResponse(commandDescription string) *Response { + res := &Response{} + res.commandDescription = commandDescription + res.code = make(chan Code, 1) + res.data = make(chan interface{}, 1) + res.chunkForConsumer = make(chan chunkInfo, 100) + return res +} + +func (coordinator *Coordinator) NewResponseWitName(id string) *Response { + coordinator.mutex.Lock() + coordinator.counter++ + res := newResponse(id) + res.correlationid = coordinator.counter + coordinator.responses[id] = res + coordinator.mutex.Unlock() + return res +} + +func (coordinator *Coordinator) NewResponse(commandId uint16, info ...string) *Response { + description := lookUpCommand(commandId) + if len(info) > 0 { + description = fmt.Sprintf("%s, - %s", description, info[0]) + } + + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + coordinator.counter++ + res := newResponse(description) + res.correlationid = coordinator.counter + coordinator.responses[strconv.Itoa(coordinator.counter)] = res + return res +} + +func (coordinator *Coordinator) GetResponseByName(id string) (*Response, error) { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if coordinator.responses[id] == nil { + return nil, errors.New("Response #{id} not found ") + } + switch coordinator.responses[id].(type) { + case *Response: + return coordinator.responses[id].(*Response), nil + } + + return nil, nil +} + +func (coordinator *Coordinator) RemoveResponseByName(id string) error { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if coordinator.responses[id] == nil { + return errors.New("Response #{id} not found ") + } + coordinator.responses[id] = nil + delete(coordinator.responses, id) + return nil +} + +// Consumer functions +func (coordinator *Coordinator) NewConsumer(messagesHandler MessagesHandler, + parameters *ConsumerOptions) *Consumer { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + var lastId, _ = coordinator.getNextConsumerItem() + var item = &Consumer{ID: lastId, options: parameters, + response: newResponse(lookUpCommand(commandSubscribe)), + status: open, + mutex: &sync.Mutex{}, + MessagesHandler: messagesHandler, + lastStoredOffset: -1, // because 0 is a valid value for the offset + isPromotedAsActive: true, + } + + coordinator.consumers[lastId] = item + return item +} + +func (coordinator *Coordinator) GetConsumerById(id interface{}) (*Consumer, error) { + v, err := coordinator.getById(id, coordinator.consumers) + if err != nil { + return nil, err + } + return v.(*Consumer), err +} + +func (coordinator *Coordinator) GetResponseById(id uint32) (*Response, error) { + v, err := coordinator.getById(fmt.Sprintf("%d", id), coordinator.responses) + if err != nil { + return nil, err + } + return v.(*Response), err +} + +func (coordinator *Coordinator) ConsumersCount() int { + return coordinator.count(coordinator.consumers) +} + +func (coordinator *Coordinator) GetProducerById(id interface{}) (*Producer, error) { + v, err := coordinator.getById(id, coordinator.producers) + if err != nil { + return nil, err + } + return v.(*Producer), err +} + +// general functions + +func (coordinator *Coordinator) getById(id interface{}, refmap map[interface{}]interface{}) (interface{}, error) { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if refmap[id] == nil { + return nil, errors.New("item #{id} not found ") + } + return refmap[id], nil +} + +func (coordinator *Coordinator) removeById(id interface{}, refmap map[interface{}]interface{}) error { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if refmap[id] == nil { + return fmt.Errorf("remove failed, id %d not found", id) + } + refmap[id] = nil + delete(refmap, id) + return nil +} + +func (coordinator *Coordinator) count(refmap map[interface{}]interface{}) int { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + return len(refmap) +} +func (coordinator *Coordinator) getNextProducerItem() (uint8, error) { + if coordinator.nextItemProducer >= ^uint8(0) { + return coordinator.reuseFreeId(coordinator.producers) + } + res := coordinator.nextItemProducer + coordinator.nextItemProducer++ + return res, nil +} + +func (coordinator *Coordinator) getNextConsumerItem() (uint8, error) { + if coordinator.nextItemConsumer >= ^uint8(0) { + return coordinator.reuseFreeId(coordinator.consumers) + } + res := coordinator.nextItemConsumer + coordinator.nextItemConsumer++ + return res, nil +} + +func (coordinator *Coordinator) reuseFreeId(refMap map[interface{}]interface{}) (byte, error) { + maxValue := int(^uint8(0)) + var result byte + for i := 0; i < maxValue; i++ { + if refMap[byte(i)] == nil { + return byte(i), nil + } + result++ + } + if result >= ^uint8(0) { + return 0, errors.New("No more items available") + } + return result, nil +} + +func (coordinator *Coordinator) Producers() map[interface{}]interface{} { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + return coordinator.producers +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go new file mode 100644 index 0000000..c0eeef1 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go @@ -0,0 +1,867 @@ +package stream + +import ( + "crypto/tls" + "errors" + "fmt" + "math/rand" + "net/url" + "strconv" + "strings" + "sync" + "time" + + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" +) + +type Environment struct { + producers *producersEnvironment + consumers *consumersEnvironment + options *EnvironmentOptions + closed bool +} + +func NewEnvironment(options *EnvironmentOptions) (*Environment, error) { + if options == nil { + options = NewEnvironmentOptions() + } + + if options.RPCTimeout <= 0 { + options.RPCTimeout = defaultSocketCallTimeout + } + + client := newClient("go-stream-locator", nil, + options.TCPParameters, options.SaslConfiguration, options.RPCTimeout) + defer func(client *Client) { + err := client.Close() + if err != nil { + return + } + }(client) + + if options.MaxConsumersPerClient <= 0 || options.MaxProducersPerClient <= 0 || + options.MaxConsumersPerClient > 254 || options.MaxProducersPerClient > 254 { + return nil, fmt.Errorf(" MaxConsumersPerClient and MaxProducersPerClient must be between 1 and 254") + } + + if options.SaslConfiguration != nil { + if options.SaslConfiguration.Mechanism != SaslConfigurationPlain && options.SaslConfiguration.Mechanism != SaslConfigurationExternal { + return nil, fmt.Errorf("SaslConfiguration mechanism must be PLAIN or EXTERNAL") + } + } + + if len(options.ConnectionParameters) == 0 { + options.ConnectionParameters = []*Broker{newBrokerDefault()} + } + var connectionError error + for idx, parameter := range options.ConnectionParameters { + + if parameter.Uri != "" { + u, err := url.Parse(parameter.Uri) + if err != nil { + return nil, err + } + parameter.Scheme = u.Scheme + parameter.User = u.User.Username() + parameter.Password, _ = u.User.Password() + parameter.Host = u.Host + parameter.Port = u.Port() + + if vhost := strings.TrimPrefix(u.Path, "/"); len(vhost) > 0 { + if vhost != "/" && strings.Contains(vhost, "/") { + return nil, errors.New("multiple segments in URI path: " + u.Path) + } + parameter.Vhost = vhost + } + } + + parameter.mergeWithDefault() + + client.broker = parameter + + connectionError = client.connect() + if connectionError == nil { + break + } else { + nextIfThereIs := "" + if idx < len(options.ConnectionParameters)-1 { + nextIfThereIs = "Trying the next broker..." + } + logs.LogError("New environment creation. Can't connect to the broker: %s port: %s. %s", + parameter.Host, parameter.Port, nextIfThereIs) + + } + } + + return &Environment{ + options: options, + producers: newProducers(options.MaxProducersPerClient), + consumers: newConsumerEnvironment(options.MaxConsumersPerClient), + closed: false, + }, connectionError +} +func (env *Environment) newReconnectClient() (*Client, error) { + broker := env.options.ConnectionParameters[0] + client := newClient("go-stream-locator", broker, env.options.TCPParameters, + env.options.SaslConfiguration, env.options.RPCTimeout) + + err := client.connect() + tentatives := 1 + for err != nil { + sleepTime := rand.Intn(5000) + (tentatives * 1000) + + logs.LogError("Can't connect the locator client, error:%s, retry in %d milliseconds, broker: ", err, sleepTime, + client.broker) + + time.Sleep(time.Duration(sleepTime) * time.Millisecond) + rand.Seed(time.Now().UnixNano()) + n := rand.Intn(len(env.options.ConnectionParameters)) + client = newClient("stream-locator", env.options.ConnectionParameters[n], env.options.TCPParameters, + env.options.SaslConfiguration, env.options.RPCTimeout) + tentatives = tentatives + 1 + err = client.connect() + + } + + return client, client.connect() +} + +func (env *Environment) DeclareStream(streamName string, options *StreamOptions) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + if err := client.DeclareStream(streamName, options); err != nil && err != StreamAlreadyExists { + return err + } + return nil +} + +func (env *Environment) DeleteStream(streamName string) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + return client.DeleteStream(streamName) +} + +func (env *Environment) NewProducer(streamName string, producerOptions *ProducerOptions) (*Producer, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + + return env.producers.newProducer(client, streamName, producerOptions, env.options.AddressResolver, env.options.RPCTimeout) +} + +func (env *Environment) StreamExists(streamName string) (bool, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return false, err + } + return client.StreamExists(streamName), nil +} + +func (env *Environment) QueryOffset(consumerName string, streamName string) (int64, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return 0, err + } + return client.queryOffset(consumerName, streamName) +} + +// QuerySequence gets the last id stored for a producer +// you can also see producer.GetLastPublishingId() that is the easier way to get the last-id +func (env *Environment) QuerySequence(publisherReference string, streamName string) (int64, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return 0, err + } + return client.queryPublisherSequence(publisherReference, streamName) +} + +func (env *Environment) StreamStats(streamName string) (*StreamStats, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + return client.StreamStats(streamName) +} + +func (env *Environment) StreamMetaData(streamName string) (*StreamMetadata, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + streamsMetadata := client.metaData(streamName) + streamMetadata := streamsMetadata.Get(streamName) + if streamMetadata.responseCode != responseCodeOk { + return nil, lookErrorCode(streamMetadata.responseCode) + } + + tentatives := 0 + for streamMetadata == nil || streamMetadata.Leader == nil && tentatives < 3 { + streamsMetadata = client.metaData(streamName) + streamMetadata = streamsMetadata.Get(streamName) + tentatives++ + time.Sleep(100 * time.Millisecond) + } + + if streamMetadata.Leader == nil { + + return nil, LeaderNotReady + } + + return streamMetadata, nil +} + +func (env *Environment) NewConsumer(streamName string, + messagesHandler MessagesHandler, + options *ConsumerOptions) (*Consumer, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + + return env.consumers.NewSubscriber(client, streamName, messagesHandler, options, env.options.AddressResolver, env.options.RPCTimeout) +} + +func (env *Environment) NewSuperStreamProducer(superStream string, superStreamProducerOptions *SuperStreamProducerOptions) (*SuperStreamProducer, error) { + var p, err = newSuperStreamProducer(env, superStream, superStreamProducerOptions) + if err != nil { + return nil, err + } + return p, p.init() +} + +func (env *Environment) Close() error { + _ = env.producers.close() + _ = env.consumers.close() + env.closed = true + return nil +} + +func (env *Environment) IsClosed() bool { + return env.closed +} + +type EnvironmentOptions struct { + ConnectionParameters []*Broker + TCPParameters *TCPParameters + SaslConfiguration *SaslConfiguration + MaxProducersPerClient int + MaxConsumersPerClient int + AddressResolver *AddressResolver + RPCTimeout time.Duration +} + +func NewEnvironmentOptions() *EnvironmentOptions { + return &EnvironmentOptions{ + MaxProducersPerClient: 1, + MaxConsumersPerClient: 1, + ConnectionParameters: []*Broker{}, + TCPParameters: newTCPParameterDefault(), + SaslConfiguration: newSaslConfigurationDefault(), + RPCTimeout: defaultSocketCallTimeout, + } +} + +func (envOptions *EnvironmentOptions) SetAddressResolver(addressResolver AddressResolver) *EnvironmentOptions { + envOptions.AddressResolver = &AddressResolver{ + Host: addressResolver.Host, + Port: addressResolver.Port, + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetMaxProducersPerClient(maxProducersPerClient int) *EnvironmentOptions { + envOptions.MaxProducersPerClient = maxProducersPerClient + return envOptions +} + +func (envOptions *EnvironmentOptions) SetMaxConsumersPerClient(maxConsumersPerClient int) *EnvironmentOptions { + envOptions.MaxConsumersPerClient = maxConsumersPerClient + return envOptions +} + +func (envOptions *EnvironmentOptions) SetUri(uri string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Uri: uri}) + } else { + envOptions.ConnectionParameters[0].Uri = uri + } + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetUris(uris []string) *EnvironmentOptions { + for _, s := range uris { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Uri: s}) + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetHost(host string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Host: host}) + } else { + envOptions.ConnectionParameters[0].Host = host + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetVHost(vhost string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Vhost: vhost}) + } else { + envOptions.ConnectionParameters[0].Vhost = vhost + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetSaslConfiguration(value string) *EnvironmentOptions { + if envOptions.SaslConfiguration == nil { + envOptions.SaslConfiguration = newSaslConfigurationDefault() + } + envOptions.SaslConfiguration.Mechanism = value + return envOptions +} + +func (envOptions *EnvironmentOptions) SetTLSConfig(config *tls.Config) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.tlsConfig = config + return envOptions +} + +func (envOptions *EnvironmentOptions) IsTLS(val bool) *EnvironmentOptions { + if val { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Scheme: "rabbitmq-stream+tls"}) + } else { + for _, parameter := range envOptions.ConnectionParameters { + parameter.Scheme = "rabbitmq-stream+tls" + } + } + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetPort(port int) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + brokerOptions := newBrokerDefault() + brokerOptions.Port = strconv.Itoa(port) + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, brokerOptions) + } else { + envOptions.ConnectionParameters[0].Port = strconv.Itoa(port) + } + return envOptions + +} + +func (envOptions *EnvironmentOptions) SetUser(user string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{User: user}) + } else { + envOptions.ConnectionParameters[0].User = user + } + return envOptions + +} + +func (envOptions *EnvironmentOptions) SetPassword(password string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Password: password}) + } else { + envOptions.ConnectionParameters[0].Password = password + } + return envOptions + +} + +func (envOptions *EnvironmentOptions) SetRequestedHeartbeat(requestedHeartbeat time.Duration) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.RequestedHeartbeat = requestedHeartbeat + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetRequestedMaxFrameSize(requestedMaxFrameSize int) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.RequestedMaxFrameSize = requestedMaxFrameSize + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetWriteBuffer(writeBuffer int) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.WriteBuffer = writeBuffer + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetReadBuffer(readBuffer int) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.ReadBuffer = readBuffer + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetNoDelay(noDelay bool) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.NoDelay = noDelay + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetRPCTimeout(timeout time.Duration) *EnvironmentOptions { + envOptions.RPCTimeout = timeout + return envOptions +} + +type environmentCoordinator struct { + mutex *sync.Mutex + mutexContext *sync.RWMutex + clientsPerContext map[int]*Client + maxItemsForClient int + nextId int +} + +func (cc *environmentCoordinator) isProducerListFull(clientsPerContextId int) bool { + return cc.clientsPerContext[clientsPerContextId].coordinator. + ProducersCount() >= cc.maxItemsForClient +} + +func (cc *environmentCoordinator) isConsumerListFull(clientsPerContextId int) bool { + return cc.clientsPerContext[clientsPerContextId].coordinator. + ConsumersCount() >= cc.maxItemsForClient +} + +func (cc *environmentCoordinator) maybeCleanClients() { + cc.mutex.Lock() + defer cc.mutex.Unlock() + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + for i, client := range cc.clientsPerContext { + if !client.socket.isOpen() { + delete(cc.clientsPerContext, i) + } + } +} + +func (c *Client) maybeCleanProducers(streamName string) { + c.mutex.Lock() + for pidx, producer := range c.coordinator.Producers() { + if producer.(*Producer).GetStreamName() == streamName { + err := c.coordinator.RemoveProducerById(pidx.(uint8), Event{ + Command: CommandMetadataUpdate, + StreamName: streamName, + Name: producer.(*Producer).GetName(), + Reason: MetaDataUpdate, + Err: nil, + }) + if err != nil { + return + } + } + } + c.mutex.Unlock() + if c.coordinator.ProducersCount() == 0 { + err := c.Close() + if err != nil { + return + } + } +} + +func (c *Client) maybeCleanConsumers(streamName string) { + c.mutex.Lock() + for pidx, consumer := range c.coordinator.consumers { + if consumer.(*Consumer).options.streamName == streamName { + err := c.coordinator.RemoveConsumerById(pidx.(uint8), Event{ + Command: CommandMetadataUpdate, + StreamName: streamName, + Name: consumer.(*Consumer).GetName(), + Reason: MetaDataUpdate, + Err: nil, + }) + if err != nil { + return + } + } + } + c.mutex.Unlock() + if c.coordinator.ConsumersCount() == 0 { + err := c.Close() + if err != nil { + return + } + } +} + +func (cc *environmentCoordinator) newProducer(leader *Broker, tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, streamName string, + options *ProducerOptions, rpcTimeout time.Duration) (*Producer, error) { + cc.mutex.Lock() + defer cc.mutex.Unlock() + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + var clientResult *Client + for i, client := range cc.clientsPerContext { + if !cc.isProducerListFull(i) { + clientResult = client + break + } + } + clientProvidedName := "go-stream-producer" + if options != nil && options.ClientProvidedName != "" { + clientProvidedName = options.ClientProvidedName + } + + if clientResult == nil { + clientResult = cc.newClientForProducer(clientProvidedName, leader, tcpParameters, saslConfiguration, rpcTimeout) + } + + err := clientResult.connect() + if err != nil { + return nil, err + } + + for clientResult.connectionProperties.host != leader.advHost || + clientResult.connectionProperties.port != leader.advPort { + logs.LogDebug("connectionProperties host %s doesn't mach with the advertised_host %s, advertised_port %d .. retry", + clientResult.connectionProperties.host, + leader.advHost, leader.advPort) + err := clientResult.Close() + if err != nil { + return nil, err + } + clientResult = cc.newClientForProducer(options.ClientProvidedName, leader, tcpParameters, saslConfiguration, rpcTimeout) + err = clientResult.connect() + if err != nil { + return nil, err + } + time.Sleep(1 * time.Second) + } + + producer, err := clientResult.DeclarePublisher(streamName, options) + + if err != nil { + return nil, err + } + + return producer, nil +} + +func (cc *environmentCoordinator) newClientForProducer(connectionName string, leader *Broker, tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, rpcTimeOut time.Duration) *Client { + clientResult := newClient(connectionName, leader, tcpParameters, saslConfiguration, rpcTimeOut) + chMeta := make(chan metaDataUpdateEvent, 1) + clientResult.metadataListener = chMeta + go func(ch <-chan metaDataUpdateEvent, cl *Client) { + for metaDataUpdateEvent := range ch { + clientResult.maybeCleanProducers(metaDataUpdateEvent.StreamName) + cc.maybeCleanClients() + if !cl.socket.isOpen() { + return + } + } + + }(chMeta, clientResult) + + cc.nextId++ + cc.clientsPerContext[cc.nextId] = clientResult + return clientResult +} + +func (cc *environmentCoordinator) newConsumer(connectionName string, leader *Broker, tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, + streamName string, messagesHandler MessagesHandler, + options *ConsumerOptions, rpcTimeout time.Duration) (*Consumer, error) { + cc.mutex.Lock() + defer cc.mutex.Unlock() + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + var clientResult *Client + for i, client := range cc.clientsPerContext { + if !cc.isConsumerListFull(i) { + clientResult = client + break + } + } + + if clientResult == nil { + clientResult = newClient(connectionName, leader, tcpParameters, saslConfiguration, rpcTimeout) + chMeta := make(chan metaDataUpdateEvent) + clientResult.metadataListener = chMeta + go func(ch <-chan metaDataUpdateEvent, cl *Client) { + for metaDataUpdateEvent := range ch { + clientResult.maybeCleanConsumers(metaDataUpdateEvent.StreamName) + cc.maybeCleanClients() + if !cl.socket.isOpen() { + return + } + } + + }(chMeta, clientResult) + + cc.nextId++ + cc.clientsPerContext[cc.nextId] = clientResult + } + // try to reconnect in case the socket is closed + err := clientResult.connect() + if err != nil { + return nil, err + } + + subscriber, err := clientResult.DeclareSubscriber(streamName, messagesHandler, options) + + if err != nil { + return nil, err + } + return subscriber, nil +} + +func (cc *environmentCoordinator) Close() error { + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + for _, client := range cc.clientsPerContext { + err := client.Close() + if err != nil { + logs.LogWarn("Error during close the client, %s", err) + } + } + return nil +} + +func (cc *environmentCoordinator) getClientsPerContext() map[int]*Client { + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + return cc.clientsPerContext +} + +type producersEnvironment struct { + mutex *sync.Mutex + producersCoordinator map[string]*environmentCoordinator + maxItemsForClient int +} + +func newProducers(maxItemsForClient int) *producersEnvironment { + producers := &producersEnvironment{ + mutex: &sync.Mutex{}, + producersCoordinator: map[string]*environmentCoordinator{}, + maxItemsForClient: maxItemsForClient, + } + return producers +} + +func (ps *producersEnvironment) newProducer(clientLocator *Client, streamName string, + options *ProducerOptions, resolver *AddressResolver, rpcTimeOut time.Duration) (*Producer, error) { + ps.mutex.Lock() + defer ps.mutex.Unlock() + leader, err := clientLocator.BrokerLeader(streamName) + if err != nil { + return nil, err + } + coordinatorKey := leader.hostPort() + if ps.producersCoordinator[coordinatorKey] == nil { + ps.producersCoordinator[coordinatorKey] = &environmentCoordinator{ + clientsPerContext: map[int]*Client{}, + mutex: &sync.Mutex{}, + maxItemsForClient: ps.maxItemsForClient, + mutexContext: &sync.RWMutex{}, + nextId: 0, + } + } + leader.cloneFrom(clientLocator.broker, resolver) + + producer, err := ps.producersCoordinator[coordinatorKey].newProducer(leader, clientLocator.tcpParameters, + clientLocator.saslConfiguration, streamName, options, rpcTimeOut) + if err != nil { + return nil, err + } + producer.onClose = func(ch <-chan uint8) { + for _, coordinator := range ps.producersCoordinator { + coordinator.maybeCleanClients() + } + } + + return producer, err +} + +func (ps *producersEnvironment) close() error { + ps.mutex.Lock() + defer ps.mutex.Unlock() + for _, coordinator := range ps.producersCoordinator { + _ = coordinator.Close() + } + return nil +} + +func (ps *producersEnvironment) getCoordinators() map[string]*environmentCoordinator { + ps.mutex.Lock() + defer ps.mutex.Unlock() + return ps.producersCoordinator +} + +type consumersEnvironment struct { + mutex *sync.Mutex + consumersCoordinator map[string]*environmentCoordinator + maxItemsForClient int +} + +func newConsumerEnvironment(maxItemsForClient int) *consumersEnvironment { + producers := &consumersEnvironment{ + mutex: &sync.Mutex{}, + consumersCoordinator: map[string]*environmentCoordinator{}, + maxItemsForClient: maxItemsForClient, + } + return producers +} + +func (ps *consumersEnvironment) NewSubscriber(clientLocator *Client, streamName string, + messagesHandler MessagesHandler, + consumerOptions *ConsumerOptions, resolver *AddressResolver, rpcTimeout time.Duration) (*Consumer, error) { + ps.mutex.Lock() + defer ps.mutex.Unlock() + consumerBroker, err := clientLocator.BrokerForConsumer(streamName) + if err != nil { + return nil, err + } + coordinatorKey := consumerBroker.hostPort() + if ps.consumersCoordinator[coordinatorKey] == nil { + ps.consumersCoordinator[coordinatorKey] = &environmentCoordinator{ + clientsPerContext: map[int]*Client{}, + mutex: &sync.Mutex{}, + maxItemsForClient: ps.maxItemsForClient, + mutexContext: &sync.RWMutex{}, + nextId: 0, + } + } + consumerBroker.cloneFrom(clientLocator.broker, resolver) + clientProvidedName := "go-stream-consumer" + if consumerOptions != nil && consumerOptions.ClientProvidedName != "" { + clientProvidedName = consumerOptions.ClientProvidedName + } + consumer, err := ps.consumersCoordinator[coordinatorKey]. + newConsumer(clientProvidedName, consumerBroker, clientLocator.tcpParameters, + clientLocator.saslConfiguration, + streamName, messagesHandler, consumerOptions, rpcTimeout) + if err != nil { + return nil, err + } + consumer.onClose = func(ch <-chan uint8) { + for _, coordinator := range ps.consumersCoordinator { + coordinator.maybeCleanClients() + } + } + return consumer, err +} + +func (ps *consumersEnvironment) close() error { + ps.mutex.Lock() + defer ps.mutex.Unlock() + for _, coordinator := range ps.consumersCoordinator { + _ = coordinator.Close() + } + return nil +} + +func (ps *consumersEnvironment) getCoordinators() map[string]*environmentCoordinator { + ps.mutex.Lock() + defer ps.mutex.Unlock() + return ps.consumersCoordinator +} + +// Super stream + +func (env *Environment) DeclareSuperStream(superStreamName string, options SuperStreamOptions) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + if err := client.DeclareSuperStream(superStreamName, options); err != nil && !errors.Is(err, StreamAlreadyExists) { + return err + } + return nil +} + +func (env *Environment) DeleteSuperStream(superStreamName string) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + return client.DeleteSuperStream(superStreamName) +} + +func (env *Environment) QueryPartitions(superStreamName string) ([]string, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + return client.QueryPartitions(superStreamName) +} + +func (env *Environment) QueryRoute(superStream string, routingKey string) ([]string, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + return client.queryRoute(superStream, routingKey) +} + +func (env *Environment) NewSuperStreamConsumer(superStream string, messagesHandler MessagesHandler, options *SuperStreamConsumerOptions) (*SuperStreamConsumer, error) { + s, err := newSuperStreamConsumer(env, superStream, messagesHandler, options) + if err != nil { + return nil, err + } + err = s.init() + return s, err +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go new file mode 100644 index 0000000..307a661 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go @@ -0,0 +1,57 @@ +//go:build debug +// +build debug + +package stream + +//type ProducersCoordinator = environmentCoordinator +// +//func (env *Environment) ClientCoordinator() map[string]*ProducersCoordinator { +// return env.producers.producersCoordinator +//} +// +//func (env *Environment) Nodes() []string { +// var result []string +// for s, _ := range env.producers.producersCoordinator { +// result = append(result, s) +// } +// sort.Strings(result) +// return result +//} +// +//func (env *Environment) ProducerPerStream(streamName string) []*Producer { +// var result []*Producer +// for _, p := range env.producers.producersCoordinator { +// for _, client := range p.getClientsPerContext() { +// for _, prod := range client.coordinator.producers { +// if prod.(*Producer).options.streamName == streamName { +// result = append(result, prod.(*Producer)) +// } +// } +// } +// } +// return result +//} +// +//func (env *Environment) ClientsPerStream(streamName string) []*Client { +// var result []*Client +// for _, p := range env.producers.producersCoordinator { +// for _, client := range p.getClientsPerContext() { +// for _, prod := range client.coordinator.producers { +// if prod.(*Producer).options.streamName == streamName { +// result = append(result, client) +// } +// } +// } +// } +// return result +//} +// +//func (env *Environment) Coordinators() []*Coordinator { +// var result []*Coordinator +// for _, p := range env.producers.producersCoordinator { +// for _, client := range p.getClientsPerContext() { +// result = append(result, client.coordinator) +// } +// } +// return result +//} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go new file mode 100644 index 0000000..01e1b96 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go @@ -0,0 +1,48 @@ +package stream + +type commandVersion interface { + GetMinVersion() uint16 + GetMaxVersion() uint16 + GetCommandKey() uint16 +} + +type commandVersionResponse struct { + minVersion uint16 + maxVersion uint16 + commandKey uint16 +} + +func (c commandVersionResponse) GetMinVersion() uint16 { + return c.minVersion +} + +func (c commandVersionResponse) GetMaxVersion() uint16 { + return c.maxVersion +} + +func (c commandVersionResponse) GetCommandKey() uint16 { + return c.commandKey +} + +func newCommandVersionResponse(minVersion, maxVersion, commandKey uint16) commandVersionResponse { + return commandVersionResponse{ + minVersion: minVersion, + maxVersion: maxVersion, + commandKey: commandKey, + } +} + +type PublishFilter struct { +} + +func (p PublishFilter) GetMinVersion() uint16 { + return version1 +} + +func (p PublishFilter) GetMaxVersion() uint16 { + return version2 +} + +func (p PublishFilter) GetCommandKey() uint16 { + return commandPublish +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go new file mode 100644 index 0000000..b5c74b2 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go @@ -0,0 +1,20 @@ +package stream + +type Event struct { + Command uint16 + StreamName string + Name string + Reason string + Err error +} + +type metaDataUpdateEvent struct { + StreamName string + code uint16 +} + +type onInternalClose func(ch <-chan uint8) +type metadataListener chan metaDataUpdateEvent + +type ChannelClose = <-chan Event +type ChannelPublishConfirm chan []*ConfirmationStatus diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go new file mode 100644 index 0000000..296378d --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go @@ -0,0 +1,703 @@ +package stream + +import ( + "bufio" + "bytes" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message" + "sync" + "sync/atomic" + "time" +) + +type ConfirmationStatus struct { + inserted time.Time + message message.StreamMessage + producerID uint8 + publishingId int64 + confirmed bool + err error + errorCode uint16 + linkedTo []*ConfirmationStatus +} + +func (cs *ConfirmationStatus) IsConfirmed() bool { + return cs.confirmed +} + +func (cs *ConfirmationStatus) GetProducerID() uint8 { + return cs.producerID +} + +func (cs *ConfirmationStatus) GetPublishingId() int64 { + return cs.publishingId +} + +func (cs *ConfirmationStatus) GetError() error { + return cs.err +} + +func (cs *ConfirmationStatus) LinkedMessages() []*ConfirmationStatus { + return cs.linkedTo +} + +func (cs *ConfirmationStatus) GetMessage() message.StreamMessage { + return cs.message +} + +func (cs *ConfirmationStatus) GetErrorCode() uint16 { + return cs.errorCode +} + +type pendingMessagesSequence struct { + messages []messageSequence + size int +} + +type messageSequence struct { + messageBytes []byte + unCompressedSize int + publishingId int64 + filterValue string +} + +type Producer struct { + id uint8 + options *ProducerOptions + onClose onInternalClose + unConfirmedMessages map[int64]*ConfirmationStatus + sequence int64 + mutex *sync.Mutex + mutexPending *sync.Mutex + publishConfirm chan []*ConfirmationStatus + closeHandler chan Event + status int + + /// needed for the async publish + messageSequenceCh chan messageSequence + pendingMessages pendingMessagesSequence +} + +type FilterValue func(message message.StreamMessage) string + +type ProducerFilter struct { + FilterValue FilterValue +} + +func NewProducerFilter(filterValue FilterValue) *ProducerFilter { + return &ProducerFilter{ + FilterValue: filterValue, + } +} + +type ProducerOptions struct { + client *Client + streamName string + Name string // Producer name, it is useful to handle deduplication messages + QueueSize int // Internal queue to handle back-pressure, low value reduces the back-pressure on the server + BatchSize int // It is the batch-unCompressedSize aggregation, low value reduce the latency, high value increase the throughput + BatchPublishingDelay int // Period to Send a batch of messages. + SubEntrySize int // Size of sub Entry, to aggregate more subEntry using one publishing id + Compression Compression // Compression type, it is valid only if SubEntrySize > 1 + ConfirmationTimeOut time.Duration // Time to wait for the confirmation + ClientProvidedName string // Client provider name that will be shown in the management UI + Filter *ProducerFilter // Enable the filter feature, by default is disabled. Pointer nil +} + +func (po *ProducerOptions) SetProducerName(name string) *ProducerOptions { + po.Name = name + return po +} + +func (po *ProducerOptions) SetQueueSize(size int) *ProducerOptions { + po.QueueSize = size + return po +} + +func (po *ProducerOptions) SetBatchSize(size int) *ProducerOptions { + po.BatchSize = size + return po +} + +func (po *ProducerOptions) SetBatchPublishingDelay(size int) *ProducerOptions { + po.BatchPublishingDelay = size + return po +} + +func (po *ProducerOptions) SetSubEntrySize(size int) *ProducerOptions { + po.SubEntrySize = size + return po +} + +func (po *ProducerOptions) SetCompression(compression Compression) *ProducerOptions { + po.Compression = compression + return po +} + +func (po *ProducerOptions) SetConfirmationTimeOut(duration time.Duration) *ProducerOptions { + po.ConfirmationTimeOut = duration + return po +} + +func (po *ProducerOptions) SetClientProvidedName(name string) *ProducerOptions { + po.ClientProvidedName = name + return po +} + +func (po *ProducerOptions) SetFilter(filter *ProducerFilter) *ProducerOptions { + po.Filter = filter + return po +} + +func (po *ProducerOptions) IsFilterEnabled() bool { + return po.Filter != nil +} + +func NewProducerOptions() *ProducerOptions { + return &ProducerOptions{ + QueueSize: defaultQueuePublisherSize, + BatchSize: defaultBatchSize, + BatchPublishingDelay: defaultBatchPublishingDelay, + SubEntrySize: 1, + Compression: Compression{}, + ConfirmationTimeOut: defaultConfirmationTimeOut, + ClientProvidedName: "go-stream-producer", + Filter: nil, + } +} + +func (producer *Producer) GetUnConfirmed() map[int64]*ConfirmationStatus { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return producer.unConfirmedMessages +} + +func (producer *Producer) addUnConfirmed(sequence int64, message message.StreamMessage, producerID uint8) { + producer.mutex.Lock() + defer producer.mutex.Unlock() + producer.unConfirmedMessages[sequence] = &ConfirmationStatus{ + inserted: time.Now(), + message: message, + producerID: producerID, + publishingId: sequence, + confirmed: false, + } +} + +func (po *ProducerOptions) isSubEntriesBatching() bool { + return po.SubEntrySize > 1 +} + +func (producer *Producer) removeUnConfirmed(sequence int64) { + producer.mutex.Lock() + defer producer.mutex.Unlock() + delete(producer.unConfirmedMessages, sequence) +} + +func (producer *Producer) lenUnConfirmed() int { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return len(producer.unConfirmedMessages) +} + +func (producer *Producer) lenPendingMessages() int { + producer.mutexPending.Lock() + defer producer.mutexPending.Unlock() + return len(producer.pendingMessages.messages) +} + +func (producer *Producer) getUnConfirmed(sequence int64) *ConfirmationStatus { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return producer.unConfirmedMessages[sequence] +} + +func (producer *Producer) NotifyPublishConfirmation() ChannelPublishConfirm { + ch := make(chan []*ConfirmationStatus) + producer.publishConfirm = ch + return ch +} + +func (producer *Producer) NotifyClose() ChannelClose { + ch := make(chan Event, 1) + producer.closeHandler = ch + return ch +} + +func (producer *Producer) GetOptions() *ProducerOptions { + return producer.options +} + +func (producer *Producer) GetBroker() *Broker { + return producer.options.client.broker +} +func (producer *Producer) setStatus(status int) { + producer.mutex.Lock() + defer producer.mutex.Unlock() + producer.status = status +} + +func (producer *Producer) getStatus() int { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return producer.status +} + +func (producer *Producer) sendBufferedMessages() { + + if len(producer.pendingMessages.messages) > 0 { + err := producer.internalBatchSend(producer.pendingMessages.messages) + if err != nil { + return + } + producer.pendingMessages.messages = producer.pendingMessages.messages[:0] + producer.pendingMessages.size = initBufferPublishSize + } +} + +func (producer *Producer) startUnconfirmedMessagesTimeOutTask() { + + go func() { + for producer.getStatus() == open { + time.Sleep(2 * time.Second) + producer.mutex.Lock() + for _, msg := range producer.unConfirmedMessages { + if time.Since(msg.inserted) > producer.options.ConfirmationTimeOut { + msg.err = ConfirmationTimoutError + msg.errorCode = timeoutError + msg.confirmed = false + if producer.publishConfirm != nil { + producer.publishConfirm <- []*ConfirmationStatus{msg} + } + delete(producer.unConfirmedMessages, msg.publishingId) + } + } + producer.mutex.Unlock() + } + time.Sleep(5 * time.Second) + producer.flushUnConfirmedMessages(timeoutError, ConfirmationTimoutError) + }() + +} + +func (producer *Producer) startPublishTask() { + go func(ch chan messageSequence) { + var ticker = time.NewTicker(time.Duration(producer.options.BatchPublishingDelay) * time.Millisecond) + defer ticker.Stop() + for { + select { + + case msg, running := <-ch: + { + if !running { + + producer.flushUnConfirmedMessages(connectionCloseError, ConnectionClosed) + if producer.publishConfirm != nil { + close(producer.publishConfirm) + producer.publishConfirm = nil + } + if producer.closeHandler != nil { + close(producer.closeHandler) + producer.closeHandler = nil + } + return + } + producer.mutexPending.Lock() + if producer.pendingMessages.size+msg.unCompressedSize >= producer.options.client.getTuneState(). + requestedMaxFrameSize { + producer.sendBufferedMessages() + } + + producer.pendingMessages.size += msg.unCompressedSize + producer.pendingMessages.messages = append(producer.pendingMessages.messages, msg) + if len(producer.pendingMessages.messages) >= (producer.options.BatchSize) { + producer.sendBufferedMessages() + } + producer.mutexPending.Unlock() + } + + case <-ticker.C: + producer.mutexPending.Lock() + producer.sendBufferedMessages() + producer.mutexPending.Unlock() + } + } + }(producer.messageSequenceCh) + +} + +func (producer *Producer) sendBytes(streamMessage message.StreamMessage, messageBytes []byte) error { + if len(messageBytes)+initBufferPublishSize > producer.options.client.getTuneState().requestedMaxFrameSize { + return FrameTooLarge + } + + filterValue := "" + if producer.options.IsFilterEnabled() { + filterValue = producer.options.Filter.FilterValue(streamMessage) + } + + sequence := producer.assignPublishingID(streamMessage) + producer.addUnConfirmed(sequence, streamMessage, producer.id) + + if producer.getStatus() == open { + producer.messageSequenceCh <- messageSequence{ + messageBytes: messageBytes, + unCompressedSize: len(messageBytes), + publishingId: sequence, + filterValue: filterValue, + } + } else { + // TODO: Change the error message with a typed error + return fmt.Errorf("producer id: %d closed", producer.id) + } + + return nil +} + +func (producer *Producer) Send(streamMessage message.StreamMessage) error { + messageBytes, err := streamMessage.MarshalBinary() + if err != nil { + return err + } + return producer.sendBytes(streamMessage, messageBytes) +} + +func (producer *Producer) assignPublishingID(message message.StreamMessage) int64 { + sequence := message.GetPublishingId() + // in case of sub entry the deduplication is disabled + if !message.HasPublishingId() || producer.options.isSubEntriesBatching() { + sequence = atomic.AddInt64(&producer.sequence, 1) + } + return sequence +} + +func (producer *Producer) BatchSend(batchMessages []message.StreamMessage) error { + var messagesSequence = make([]messageSequence, len(batchMessages)) + totalBufferToSend := 0 + for i, batchMessage := range batchMessages { + messageBytes, err := batchMessage.MarshalBinary() + if err != nil { + return err + } + filterValue := "" + if producer.options.IsFilterEnabled() { + filterValue = producer.options.Filter.FilterValue(batchMessage) + } + + sequence := producer.assignPublishingID(batchMessage) + totalBufferToSend += len(messageBytes) + messagesSequence[i] = messageSequence{ + messageBytes: messageBytes, + unCompressedSize: len(messageBytes), + publishingId: sequence, + filterValue: filterValue, + } + + producer.addUnConfirmed(sequence, batchMessage, producer.id) + } + + if totalBufferToSend+initBufferPublishSize > producer.options.client.tuneState.requestedMaxFrameSize { + for _, msg := range messagesSequence { + + unConfirmedMessage := producer.getUnConfirmed(msg.publishingId) + + //producer.mutex.Lock() + if producer.publishConfirm != nil { + unConfirmedMessage.err = FrameTooLarge + unConfirmedMessage.errorCode = responseCodeFrameTooLarge + producer.publishConfirm <- []*ConfirmationStatus{unConfirmedMessage} + } + //producer.mutex.Unlock() + producer.removeUnConfirmed(msg.publishingId) + } + + return FrameTooLarge + } + + return producer.internalBatchSend(messagesSequence) +} + +func (producer *Producer) GetID() uint8 { + return producer.id +} +func (producer *Producer) internalBatchSend(messagesSequence []messageSequence) error { + return producer.internalBatchSendProdId(messagesSequence, producer.GetID()) +} + +func (producer *Producer) simpleAggregation(messagesSequence []messageSequence, b *bufio.Writer) { + for _, msg := range messagesSequence { + r := msg.messageBytes + writeBLong(b, msg.publishingId) // publishingId + writeBInt(b, len(r)) // len + b.Write(r) + } +} + +func (producer *Producer) subEntryAggregation(aggregation subEntries, b *bufio.Writer, compression Compression) { + /// 51 messages + // aggregation.items == (5 --> [10] messages) + (1 --> [1]message) + for _, entry := range aggregation.items { + writeBLong(b, entry.publishingId) + writeBByte(b, 0x80| + compression.value<<4) // 1=SubBatchEntryType:1,CompressionType:3,Reserved:4, + writeBShort(b, int16(len(entry.messages))) + writeBInt(b, entry.unCompressedSize) + writeBInt(b, entry.sizeInBytes) + b.Write(entry.dataInBytes) + } +} + +func (producer *Producer) aggregateEntities(msgs []messageSequence, size int, compression Compression) (subEntries, error) { + subEntries := subEntries{} + + var entry *subEntry + for _, msg := range msgs { + if len(subEntries.items) == 0 || len(entry.messages) >= size { + entry = &subEntry{} + entry.publishingId = -1 + subEntries.items = append(subEntries.items, entry) + } + entry.messages = append(entry.messages, msg) + binary := msg.messageBytes + entry.unCompressedSize += len(binary) + 4 + + // in case of subEntry we need to pick only one publishingId + // we peek the first one of the entries + // suppose you have 10 messages with publishingId [5..15] + if entry.publishingId < 0 { + entry.publishingId = msg.publishingId + } + + /// since there is only one publishingId + // the others publishingId(s) are linked + // so the client confirms all the messages + //when the client receives the confirmation form the server + // see: server_frame:handleConfirm/2 + // suppose you have 10 messages with publishingId [5..15] + // the message 5 is linked to 6,7,8,9..15 + + if entry.publishingId != msg.publishingId { + unConfirmed := producer.getUnConfirmed(entry.publishingId) + if unConfirmed != nil { + unConfirmed.linkedTo = + append(unConfirmed.linkedTo, + producer.getUnConfirmed(msg.publishingId)) + } + } + } + + compressByValue(compression.value).Compress(&subEntries) + + return subEntries, nil +} + +/// the producer id is always the producer.GetID(). This function is needed only for testing +// some condition, like simulate publish error, see + +func (producer *Producer) internalBatchSendProdId(messagesSequence []messageSequence, producerID uint8) error { + producer.options.client.socket.mutex.Lock() + defer producer.options.client.socket.mutex.Unlock() + if producer.getStatus() == closed { + return fmt.Errorf("producer id: %d closed", producer.id) + } + + if producer.options.IsFilterEnabled() && + // this check is just for safety. The producer can't be created with Filter and SubEntry > 1 + !producer.options.isSubEntriesBatching() { + return producer.sendWithFilter(messagesSequence, producerID) + } + + var msgLen int + var aggregation subEntries + + if producer.options.isSubEntriesBatching() { + var err error + aggregation, err = producer.aggregateEntities(messagesSequence, producer.options.SubEntrySize, + producer.options.Compression) + if err != nil { + return err + } + msgLen += ((8 + 1 + 2 + 4 + 4) * len(aggregation.items)) + aggregation.totalSizeInBytes + } + + if !producer.options.isSubEntriesBatching() { + for _, msg := range messagesSequence { + msgLen += msg.unCompressedSize + 8 + 4 + } + } + + frameHeaderLength := initBufferPublishSize + length := frameHeaderLength + msgLen + + writeBProtocolHeader(producer.options.client.socket.writer, length, commandPublish) + writeBByte(producer.options.client.socket.writer, producerID) + numberOfMessages := len(messagesSequence) + numberOfMessages = numberOfMessages / producer.options.SubEntrySize + if len(messagesSequence)%producer.options.SubEntrySize != 0 { + numberOfMessages += 1 + } + + writeBInt(producer.options.client.socket.writer, numberOfMessages) //toExcluded - fromInclude + + if producer.options.isSubEntriesBatching() { + producer.subEntryAggregation(aggregation, producer.options.client.socket.writer, producer.options.Compression) + } + + if !producer.options.isSubEntriesBatching() { + producer.simpleAggregation(messagesSequence, producer.options.client.socket.writer) + } + + err := producer.options.client.socket.writer.Flush() //writeAndFlush(b.Bytes()) + if err != nil { + logs.LogError("Producer BatchSend error during flush: %s", err) + producer.setStatus(closed) + return err + } + return nil +} + +func (producer *Producer) flushUnConfirmedMessages(errorCode uint16, err error) { + producer.mutex.Lock() + + for _, msg := range producer.unConfirmedMessages { + msg.confirmed = false + msg.err = err + msg.errorCode = errorCode + if producer.publishConfirm != nil { + producer.publishConfirm <- []*ConfirmationStatus{msg} + } + delete(producer.unConfirmedMessages, msg.publishingId) + } + + producer.mutex.Unlock() +} + +func (producer *Producer) GetLastPublishingId() (int64, error) { + return producer.options.client.queryPublisherSequence(producer.GetName(), producer.GetStreamName()) +} +func (producer *Producer) Close() error { + if producer.getStatus() == closed { + return AlreadyClosed + } + + producer.waitForInflightMessages() + producer.setStatus(closed) + + if !producer.options.client.socket.isOpen() { + return fmt.Errorf("tcp connection is closed") + } + + err := producer.options.client.deletePublisher(producer.id) + if err != nil { + logs.LogError("error delete Publisher on closing: %s", err) + } + if producer.options.client.coordinator.ProducersCount() == 0 { + err := producer.options.client.Close() + if err != nil { + logs.LogError("error during closing client: %s", err) + } + } + + if producer.onClose != nil { + ch := make(chan uint8, 1) + ch <- producer.id + producer.onClose(ch) + close(ch) + } + + close(producer.messageSequenceCh) + return nil +} + +func (producer *Producer) waitForInflightMessages() { + // during the close there cloud be pending messages + // it waits for producer.options.BatchPublishingDelay + // to flush the last messages + // see issues/103 + + channelLength := len(producer.messageSequenceCh) + pendingMessagesLen := producer.lenPendingMessages() + tentatives := 0 + + for (channelLength > 0 || pendingMessagesLen > 0 || producer.lenUnConfirmed() > 0) && tentatives < 3 { + logs.LogDebug("waitForInflightMessages, channel: %d - pending messages len: %d - unconfirmed len: %d - retry: %d", + channelLength, pendingMessagesLen, + producer.lenUnConfirmed(), tentatives) + time.Sleep(time.Duration(2*producer.options.BatchPublishingDelay) * time.Millisecond) + channelLength = len(producer.messageSequenceCh) + pendingMessagesLen = producer.lenPendingMessages() + tentatives++ + } +} + +func (producer *Producer) GetStreamName() string { + if producer.options == nil { + return "" + } + return producer.options.streamName +} + +func (producer *Producer) GetName() string { + if producer.options == nil { + return "" + } + return producer.options.Name +} + +func (producer *Producer) sendWithFilter(messagesSequence []messageSequence, producerID uint8) error { + frameHeaderLength := initBufferPublishSize + var msgLen int + for _, msg := range messagesSequence { + msgLen += msg.unCompressedSize + 8 + 4 + if msg.filterValue != "" { + msgLen += 2 + len(msg.filterValue) + } + } + length := frameHeaderLength + msgLen + + writeBProtocolHeaderVersion(producer.options.client.socket.writer, length, commandPublish, version2) + writeBByte(producer.options.client.socket.writer, producerID) + numberOfMessages := len(messagesSequence) + writeBInt(producer.options.client.socket.writer, numberOfMessages) + + for _, msg := range messagesSequence { + writeBLong(producer.options.client.socket.writer, msg.publishingId) + if msg.filterValue != "" { + writeBString(producer.options.client.socket.writer, msg.filterValue) + } else { + writeBInt(producer.options.client.socket.writer, -1) + } + writeBInt(producer.options.client.socket.writer, len(msg.messageBytes)) // len + _, err := producer.options.client.socket.writer.Write(msg.messageBytes) + if err != nil { + return err + } + } + + return producer.options.client.socket.writer.Flush() + +} + +func (c *Client) deletePublisher(publisherId byte) error { + length := 2 + 2 + 4 + 1 + resp := c.coordinator.NewResponse(CommandDeletePublisher) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandDeletePublisher, + correlationId) + + writeByte(b, publisherId) + errWrite := c.handleWrite(b.Bytes(), resp) + + err := c.coordinator.RemoveProducerById(publisherId, Event{ + Command: CommandDeletePublisher, + Reason: "deletePublisher", + Err: nil, + }) + if err != nil { + logs.LogWarn("producer id: %d already removed", publisherId) + } + + return errWrite.Err +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go new file mode 100644 index 0000000..67a76c3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go @@ -0,0 +1,662 @@ +package stream + +import ( + "bufio" + "bytes" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "hash/crc32" + "io" + "time" +) + +type ReaderProtocol struct { + FrameLen uint32 + CommandID uint16 + Key uint16 + Version uint16 + CorrelationId uint32 + ResponseCode uint16 + PublishID uint8 + PublishingIdCount uint64 +} + +func logErrorCommand(error error, details string) { + if error != nil { + logs.LogError("Error handling command response: %s - details: %s", error, details) + } +} + +func (c *Client) handleResponse() { + buffer := bufio.NewReader(c.socket.connection) + for { + readerProtocol := &ReaderProtocol{} + frameLen, err := readUInt(buffer) + if err != nil { + logs.LogDebug("Read connection failed: %s", err) + _ = c.Close() + break + } + c.setLastHeartBeat(time.Now()) + readerProtocol.FrameLen = frameLen + readerProtocol.CommandID = uShortExtractResponseCode(readUShort(buffer)) + readerProtocol.Version = readUShort(buffer) + + switch readerProtocol.CommandID { + + case commandPeerProperties: + { + c.handlePeerProperties(readerProtocol, buffer) + } + case commandSaslHandshake: + { + c.handleSaslHandshakeResponse(readerProtocol, buffer) + } + case commandTune: + { + c.handleTune(buffer) + } + case commandDeclarePublisher, + CommandDeletePublisher, commandDeleteStream, + commandCreateStream, commandSaslAuthenticate, commandSubscribe, + CommandUnsubscribe, commandCreateSuperStream, commandDeleteSuperStream: + { + c.handleGenericResponse(readerProtocol, buffer) + } + case commandOpen: + { + c.commandOpen(readerProtocol, buffer) + } + case commandPublishError: + { + c.handlePublishError(buffer) + + } + case commandPublishConfirm: + { + c.handleConfirm(readerProtocol, buffer) + } + case commandDeliver: + { + c.handleDeliver(buffer) + + } + case commandQueryPublisherSequence: + { + c.queryPublisherSequenceFrameHandler(readerProtocol, buffer) + } + case CommandMetadataUpdate: + { + + c.metadataUpdateFrameHandler(buffer) + } + case commandCredit: + { + c.creditNotificationFrameHandler(readerProtocol, buffer) + } + case commandHeartbeat: + { + + c.handleHeartbeat() + + } + case CommandQueryOffset: + { + c.queryOffsetFrameHandler(readerProtocol, buffer) + + } + case commandStreamStatus: + { + c.streamStatusFrameHandler(readerProtocol, buffer) + } + case commandMetadata: + { + c.metadataFrameHandler(readerProtocol, buffer) + } + case CommandClose: + { + c.closeFrameHandler(readerProtocol, buffer) + } + case commandExchangeVersion: + { + c.handleExchangeVersionResponse(readerProtocol, buffer) + } + case consumerUpdateQueryResponse: + { + c.handleConsumerUpdate(readerProtocol, buffer) + } + case commandQueryPartition: + { + c.handleQueryPartitions(readerProtocol, buffer) + } + case commandQueryRoute: + { + c.handleQueryRoute(readerProtocol, buffer) + } + default: + { + logs.LogWarn("Command not implemented %d buff:%d \n", readerProtocol.CommandID, buffer.Buffered()) + break + } + } + } + +} + +func (c *Client) handleSaslHandshakeResponse(streamingRes *ReaderProtocol, r *bufio.Reader) interface{} { + streamingRes.CorrelationId, _ = readUInt(r) + streamingRes.ResponseCode = uShortExtractResponseCode(readUShort(r)) + mechanismsCount, _ := readUInt(r) + var mechanisms []string + for i := 0; i < int(mechanismsCount); i++ { + mechanism := readString(r) + mechanisms = append(mechanisms, mechanism) + } + + res, err := c.coordinator.GetResponseById(streamingRes.CorrelationId) + if err != nil { + // TODO handle response + return err + } + res.data <- mechanisms + + return mechanisms +} + +func (c *Client) handlePeerProperties(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + serverPropertiesCount, _ := readUInt(r) + serverProperties := make(map[string]string) + + for i := 0; i < int(serverPropertiesCount); i++ { + key := readString(r) + value := readString(r) + serverProperties[key] = value + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handlePeerProperties") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- serverProperties + +} + +func (c *Client) handleTune(r *bufio.Reader) interface{} { + + serverMaxFrameSize, _ := readUInt(r) + serverHeartbeat, _ := readUInt(r) + + maxFrameSize := serverMaxFrameSize + heartbeat := serverHeartbeat + + length := 2 + 2 + 4 + 4 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeInt(b, length) + writeUShort(b, uShortEncodeResponseCode(commandTune)) + writeShort(b, version1) + writeUInt(b, maxFrameSize) + writeUInt(b, heartbeat) + res, err := c.coordinator.GetResponseByName("tune") + logErrorCommand(err, "handleTune") + res.data <- b.Bytes() + return b.Bytes() + +} + +func (c *Client) handleGenericResponse(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleGenericResponse") + res.code <- Code{id: readProtocol.ResponseCode} +} + +func (c *Client) commandOpen(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + clientProperties := ConnectionProperties{} + connectionPropertiesCount, _ := readUInt(r) + for i := 0; i < int(connectionPropertiesCount); i++ { + v := readString(r) + switch v { + + case "advertised_host": + { + clientProperties.host = readString(r) + } + case "advertised_port": + { + clientProperties.port = readString(r) + } + + } + + } + + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "commandOpen") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- clientProperties + +} + +func (c *Client) handleConfirm(readProtocol *ReaderProtocol, r *bufio.Reader) interface{} { + + readProtocol.PublishID = readByte(r) + //readProtocol.PublishingIdCount = ReadIntFromReader(testEnvironment.reader) + publishingIdCount, _ := readUInt(r) + //var _publishingId int64 + producer, err := c.coordinator.GetProducerById(readProtocol.PublishID) + if err != nil { + logs.LogWarn("can't find the producer during confirmation: %s", err) + return nil + } + var unConfirmed []*ConfirmationStatus + for publishingIdCount != 0 { + seq := readInt64(r) + + m := producer.getUnConfirmed(seq) + if m != nil { + m.confirmed = true + unConfirmed = append(unConfirmed, m) + producer.removeUnConfirmed(m.publishingId) + + // in case of sub-batch entry the client receives only + // one publishingId (or sequence) + // so the other messages are confirmed using the linkedTo + for _, message := range m.linkedTo { + message.confirmed = true + unConfirmed = append(unConfirmed, message) + producer.removeUnConfirmed(message.publishingId) + } + } + //} else { + //logs.LogWarn("message %d not found in confirmation", seq) + //} + publishingIdCount-- + } + + producer.mutex.Lock() + if producer.publishConfirm != nil { + producer.publishConfirm <- unConfirmed + } + producer.mutex.Unlock() + + return 0 +} + +func (c *Client) queryPublisherSequenceFrameHandler(readProtocol *ReaderProtocol, r *bufio.Reader) { + + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + sequence := readInt64(r) + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "queryPublisherSequenceFrameHandler") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- sequence +} +func (c *Client) handleDeliver(r *bufio.Reader) { + + subscriptionId := readByte(r) + consumer, err := c.coordinator.GetConsumerById(subscriptionId) + if err != nil { + logs.LogError("Handle Deliver consumer not found %s", err) + return + + } + + _ = readByte(r) + chunkType := readByte(r) + if chunkType != 0 { + logs.LogWarn("Invalid chunkType: %d ", chunkType) + } + + numEntries := readUShort(r) + numRecords, _ := readUInt(r) + _ = readInt64(r) // timestamp + _ = readInt64(r) // epoch, unsigned long + offset := readInt64(r) // offset position + crc, _ := readUInt(r) /// crc and dataLength are needed to calculate the CRC + dataLength, _ := readUInt(r) + _, _ = readUInt(r) + _, _ = readUInt(r) + + c.credit(subscriptionId, 1) + + var offsetLimit int64 = -1 + + // we can have two cases + // 1. single active consumer is enabled + // 2. single active consumer is not enabled + + // single active consumer is enabled + // we need to check if the consumer has an offset + // if the consumer has an offset we need to filter the messages + + if consumer.options.IsSingleActiveConsumerEnabled() { + if consumer.options.SingleActiveConsumer.offsetSpecification.isOffset() { + offsetLimit = consumer.options.SingleActiveConsumer.offsetSpecification.offset + } + } else { + // single active consumer is not enabled + // So the standard offset is used + if consumer.options.Offset.isOffset() { + offsetLimit = consumer.GetOffset() + } + } + + filter := offsetLimit != -1 + + //messages + batchConsumingMessages := make(offsetMessages, 0, numRecords) + var chunk chunkInfo + chunk.numEntries = numEntries + var bytesBuffer = make([]byte, int(dataLength)) + _, err = io.ReadFull(r, bytesBuffer) + logErrorCommand(err, "handleDeliver") + + /// headers ---> payload -> messages + + if consumer.options.CRCCheck { + checkSum := crc32.ChecksumIEEE(bytesBuffer) + if crc != checkSum { + logs.LogError("Error during the checkSum, expected %d, checksum %d", crc, checkSum) + panic("Error during CRC") + } /// ??? + } + + bufferReader := bytes.NewReader(bytesBuffer) + dataReader := bufio.NewReader(bufferReader) + + for numRecords != 0 { + entryType, err := peekByte(dataReader) + + if err != nil { + if err == io.EOF { + logs.LogDebug("EOF reading entryType %s ", err) + return + } else { + logs.LogWarn("error reading entryType %s ", err) + } + } + if (entryType & 0x80) == 0 { + batchConsumingMessages = c.decodeMessage(dataReader, + filter, + offset, + offsetLimit, + batchConsumingMessages) + numRecords-- + offset++ + } else { + entryType, _ := readByteError(dataReader) + // sub-batch case. + numRecordsInBatch := readUShort(dataReader) + uncompressedDataSize, _ := readUInt(dataReader) //uncompressedDataSize + dataSize, _ := readUInt(dataReader) + numRecords -= uint32(numRecordsInBatch) + compression := (entryType & 0x70) >> 4 //compression + uncompressedReader := compressByValue(compression).UnCompress(dataReader, + dataSize, + uncompressedDataSize) + + for numRecordsInBatch != 0 { + batchConsumingMessages = c.decodeMessage(uncompressedReader, + filter, + offset, + offsetLimit, + batchConsumingMessages) + numRecordsInBatch-- + offset++ + } + + } + } + chunk.offsetMessages = batchConsumingMessages + if consumer.getStatus() == open { + consumer.response.chunkForConsumer <- chunk + } else { + logs.LogDebug("The consumer %s for the stream %s is closed during the chunk dispatching. "+ + "Messages won't dispatched", consumer.GetName(), consumer.GetStreamName()) + } + +} + +func (c *Client) decodeMessage(r *bufio.Reader, filter bool, offset int64, offsetLimit int64, batchConsumingMessages offsetMessages) offsetMessages { + sizeMessage, _ := readUInt(r) + arrayMessage := readUint8Array(r, sizeMessage) + if filter && (offset < offsetLimit) { + /// TODO set recordset as filtered + } else { + msg := &amqp.Message{} + err := msg.UnmarshalBinary(arrayMessage) + logErrorCommand(err, "error unmarshal messages") + batchConsumingMessages = append(batchConsumingMessages, + &offsetMessage{offset: offset, message: msg}) + } + return batchConsumingMessages +} + +func (c *Client) creditNotificationFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + subscriptionId := readByte(r) + consumer, err := c.coordinator.GetConsumerById(subscriptionId) + if err != nil { + logs.LogWarn("received a credit for an unknown subscriptionId: %d", subscriptionId) + return + } + + if consumer != nil && consumer.getStatus() == closed { + logs.LogDebug("received a credit for a closed consumer %d", subscriptionId) + return + } + +} + +func (c *Client) queryOffsetFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + c.handleGenericResponse(readProtocol, r) + offset := readInt64(r) + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "queryOffsetFrameHandler") + res.data <- offset +} + +func (c *Client) handlePublishError(buffer *bufio.Reader) { + + publisherId := readByte(buffer) + + publishingErrorCount, _ := readUInt(buffer) + var publishingId int64 + var code uint16 + for publishingErrorCount != 0 { + publishingId = readInt64(buffer) + code = readUShort(buffer) + producer, err := c.coordinator.GetProducerById(publisherId) + if err != nil { + logs.LogWarn("producer id %d not found, publish error :%s", publisherId, lookErrorCode(code)) + producer = &Producer{unConfirmedMessages: map[int64]*ConfirmationStatus{}} + } else { + unConfirmedMessage := producer.getUnConfirmed(publishingId) + + producer.mutex.Lock() + + if producer.publishConfirm != nil && unConfirmedMessage != nil { + unConfirmedMessage.errorCode = code + unConfirmedMessage.err = lookErrorCode(code) + producer.publishConfirm <- []*ConfirmationStatus{unConfirmedMessage} + } + producer.mutex.Unlock() + producer.removeUnConfirmed(publishingId) + } + publishingErrorCount-- + } + +} + +func (c *Client) metadataUpdateFrameHandler(buffer *bufio.Reader) { + code := readUShort(buffer) + if code == responseCodeStreamNotAvailable { + stream := readString(buffer) + logs.LogDebug("stream %s is no longer available", stream) + c.mutex.Lock() + c.metadataListener <- metaDataUpdateEvent{ + StreamName: stream, + code: responseCodeStreamNotAvailable, + } + c.mutex.Unlock() + + } else { + //TODO handle the error, see the java code + logs.LogWarn("unsupported metadata update code %d", code) + } +} + +func (c *Client) streamStatusFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + + c.handleGenericResponse(readProtocol, r) + + count, _ := readUInt(r) + streamStatus := make(map[string]int64) + + for i := 0; i < int(count); i++ { + key := readString(r) + value := readInt64(r) + streamStatus[key] = value + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "streamStatusFrameHandler") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- streamStatus + +} + +func (c *Client) metadataFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = responseCodeOk + brokers := newBrokers() + brokersCount, _ := readUInt(r) + for i := 0; i < int(brokersCount); i++ { + brokerReference := readShort(r) + host := readString(r) + port, _ := readUInt(r) + brokers.Add(brokerReference, host, port) + } + + streamsMetadata := StreamsMetadata{}.New() + streamsCount, _ := readUInt(r) + for i := 0; i < int(streamsCount); i++ { + stream := readString(r) + responseCode := readUShort(r) + var leader *Broker + var replicas []*Broker + leaderReference := readShort(r) + leader = brokers.Get(leaderReference) + replicasCount, _ := readUInt(r) + for i := 0; i < int(replicasCount); i++ { + replicaReference := readShort(r) + replicas = append(replicas, brokers.Get(replicaReference)) + } + streamsMetadata.Add(stream, responseCode, leader, replicas) + } + + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "metadataFrameHandler") + + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- streamsMetadata +} + +func (c *Client) closeFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + closeReason := readString(r) + logs.LogDebug("Received close from server, reason: %s %s %d", lookErrorCode(readProtocol.ResponseCode), + closeReason, readProtocol.ResponseCode) + + length := 2 + 2 + 4 + 2 + var b = bytes.NewBuffer(make([]byte, 0, length)) + writeProtocolHeader(b, length, uShortEncodeResponseCode(CommandClose), + int(readProtocol.CorrelationId)) + writeUShort(b, responseCodeOk) + + err := c.socket.writeAndFlush(b.Bytes()) + logErrorCommand(err, "Socket write buffer closeFrameHandler") + +} + +func (c *Client) handleConsumerUpdate(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + subscriptionId := readByte(r) + isActive := readByte(r) + consumer, err := c.coordinator.GetConsumerById(subscriptionId) + + logErrorCommand(err, "handleConsumerUpdate") + if consumer == nil { + logs.LogWarn("consumer not found %d. The consumer maybe removed before the update", subscriptionId) + return + } + consumer.setPromotedAsActive(isActive == 1) + responseOff := consumer.options.SingleActiveConsumer.ConsumerUpdate(consumer.GetStreamName(), + isActive == 1) + consumer.options.SingleActiveConsumer.offsetSpecification = responseOff + err = consumer.writeConsumeUpdateOffsetToSocket(readProtocol.CorrelationId, responseOff) + logErrorCommand(err, "handleConsumerUpdate writeConsumeUpdateOffsetToSocket") +} + +func (c *Client) handleQueryPartitions(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + partitions := make([]string, 0) + partitionsCount, _ := readUInt(r) + for i := 0; i < int(partitionsCount); i++ { + partition := readString(r) + partitions = append(partitions, partition) + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleQueryPartitions") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- partitions +} + +func (c *Client) handleQueryRoute(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + numStreams, _ := readUInt(r) + + routes := make([]string, 0) + for i := 0; i < int(numStreams); i++ { + route := readString(r) + routes = append(routes, route) + } + + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleQueryRoute") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- routes +} + +func (c *Client) handleExchangeVersionResponse(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + commandsSize, _ := readUInt(r) + commands := make([]commandVersion, 0) + for i := 0; i < int(commandsSize); i++ { + commandKey := readUShort(r) + minVersion := readUShort(r) + maxVersion := readUShort(r) + commands = append(commands, newCommandVersionResponse(minVersion, maxVersion, commandKey)) + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleExchangeVersionResponse") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- commands +} + +func (c *Client) handleHeartbeat() { + logs.LogDebug("Heart beat received at %s", time.Now()) + c.setLastHeartBeat(time.Now()) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go new file mode 100644 index 0000000..43ef1b7 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go @@ -0,0 +1,83 @@ +package stream + +import ( + "bufio" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "net" + "sync" +) + +type socket struct { + connection net.Conn + writer *bufio.Writer + mutex *sync.Mutex + closed int32 + destructor *sync.Once +} + +func (sck *socket) setOpen() { + sck.mutex.Lock() + defer sck.mutex.Unlock() + sck.closed = 1 +} + +func (sck *socket) isOpen() bool { + sck.mutex.Lock() + defer sck.mutex.Unlock() + return sck.closed == 1 +} +func (sck *socket) shutdown(err error) { + if !sck.isOpen() { + return + } + sck.mutex.Lock() + sck.closed = 0 + sck.mutex.Unlock() + + sck.destructor.Do(func() { + sck.mutex.Lock() + defer sck.mutex.Unlock() + err := sck.connection.Close() + if err != nil { + logs.LogWarn("error during close socket: %s", err) + } + }) + +} + +func (sck *socket) writeAndFlush(buffer []byte) error { + sck.mutex.Lock() + defer sck.mutex.Unlock() + _, err := sck.writer.Write(buffer) + if err != nil { + return err + } + err = sck.writer.Flush() + if err != nil { + return err + } + + return nil +} + +func (c *Client) handleWrite(buffer []byte, response *Response) responseError { + return c.handleWriteWithResponse(buffer, response, true) +} + +func (c *Client) handleWriteWithResponse(buffer []byte, response *Response, removeResponse bool) responseError { + result := c.socket.writeAndFlush(buffer) + resultCode := waitCodeWithTimeOut(response, c.socketCallTimeout) + /// we need to remove the response before evaluate the + // buffer errSocket + if removeResponse { + result = c.coordinator.RemoveResponseById(response.correlationid) + } + + if result != nil { + // we just log + fmt.Printf("Error handleWrite %s", result) + } + + return resultCode +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go new file mode 100644 index 0000000..6831816 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go @@ -0,0 +1,60 @@ +package stream + +import ( + "fmt" + "time" +) + +type StreamOptions struct { + MaxAge time.Duration + MaxLengthBytes *ByteCapacity + MaxSegmentSizeBytes *ByteCapacity +} + +func (s *StreamOptions) SetMaxAge(maxAge time.Duration) *StreamOptions { + s.MaxAge = maxAge + return s +} + +func (s *StreamOptions) SetMaxLengthBytes(maxLength *ByteCapacity) *StreamOptions { + s.MaxLengthBytes = maxLength + return s +} + +func (s *StreamOptions) SetMaxSegmentSizeBytes(segmentSize *ByteCapacity) *StreamOptions { + s.MaxSegmentSizeBytes = segmentSize + return s +} + +func (s StreamOptions) buildParameters() (map[string]string, error) { + res := map[string]string{"queue-leader-locator": "least-leaders"} + + if s.MaxLengthBytes != nil { + if s.MaxLengthBytes.error != nil { + return nil, s.MaxLengthBytes.error + } + + if s.MaxLengthBytes.bytes > 0 { + res["max-length-bytes"] = fmt.Sprintf("%d", s.MaxLengthBytes.bytes) + } + } + + if s.MaxSegmentSizeBytes != nil { + if s.MaxSegmentSizeBytes.error != nil { + return nil, s.MaxSegmentSizeBytes.error + } + + if s.MaxSegmentSizeBytes.bytes > 0 { + res["stream-max-segment-size-bytes"] = fmt.Sprintf("%d", s.MaxSegmentSizeBytes.bytes) + } + } + + if s.MaxAge > 0 { + res["max-age"] = fmt.Sprintf("%.0fs", s.MaxAge.Seconds()) + } + return res, nil +} + +func NewStreamOptions() *StreamOptions { + return &StreamOptions{} +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go new file mode 100644 index 0000000..072f17f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go @@ -0,0 +1,50 @@ +package stream + +import "fmt" + +type StreamStats struct { + stats map[string]int64 + streamName string +} + +func newStreamStats(stats map[string]int64, streamName string) *StreamStats { + return &StreamStats{stats: stats, streamName: streamName} + +} + +// FirstOffset - The first offset in the stream. +// return first offset in the stream / +// Error if there is no first offset yet +func (s *StreamStats) FirstOffset() (int64, error) { + if s.stats["first_chunk_id"] == -1 { + return -1, fmt.Errorf("FirstOffset not found for %s", s.streamName) + } + return s.stats["first_chunk_id"], nil +} + +// Deprecated: The method name may be misleading. +// It does not indicate the last offset of the stream. It indicates the last uncommited chunk id. This information is not necessary. The user should use CommittedChunkId(). +func (s *StreamStats) LastOffset() (int64, error) { + if s.stats["last_chunk_id"] == -1 { + return -1, fmt.Errorf("LastOffset not found for %s", s.streamName) + } + return s.stats["last_chunk_id"], nil +} + +// CommittedChunkId - The ID (offset) of the committed chunk (block of messages) in the stream. +// +// It is the offset of the first message in the last chunk confirmed by a quorum of the stream +// cluster members (leader and replicas). +// +// The committed chunk ID is a good indication of what the last offset of a stream can be at a +// given time. The value can be stale as soon as the application reads it though, as the committed +// chunk ID for a stream that is published to changes all the time. +// +// return committed offset in this stream +// Error if there is no committed chunk yet +func (s *StreamStats) CommittedChunkId() (int64, error) { + if s.stats["committed_chunk_id"] == -1 { + return -1, fmt.Errorf("CommittedChunkId not found for %s", s.streamName) + } + return s.stats["committed_chunk_id"], nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go new file mode 100644 index 0000000..a217c0e --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go @@ -0,0 +1,180 @@ +package stream + +import ( + "fmt" + "time" +) + +//public TimeSpan MaxAge +//{ +//set => Args["max-age"] = $"{value.TotalSeconds}s"; +//} +// +//public ulong MaxLengthBytes +//{ +//set => Args["max-length-bytes"] = $"{value}"; +//} +// +//public LeaderLocator LeaderLocator +//{ +//set => Args["queue-leader-locator"] = $"{value.ToString()}"; +//} +// +//public int MaxSegmentSizeBytes +//{ +//set => Args["stream-max-segment-size-bytes"] = $"{value}"; +//} + +const maxAge = "max-age" +const maxLengthBytes = "max-length-bytes" +const queueLeaderLocator = "queue-leader-locator" +const streamMaxSegmentSizeBytes = "stream-max-segment-size-bytes" + +type SuperStreamOptions interface { + getPartitions(prefix string) []string + getBindingKeys() []string + getArgs() map[string]string +} + +type PartitionsOptions struct { + Partitions int + MaxAge time.Duration + MaxLengthBytes *ByteCapacity + MaxSegmentSizeBytes *ByteCapacity + LeaderLocator string + args map[string]string +} + +func NewPartitionsOptions(partitions int) *PartitionsOptions { + return &PartitionsOptions{ + Partitions: partitions, + args: make(map[string]string), + } +} + +func (t *PartitionsOptions) SetMaxAge(maxAge time.Duration) *PartitionsOptions { + t.MaxAge = maxAge + return t +} + +func (t *PartitionsOptions) SetMaxLengthBytes(maxLengthBytes *ByteCapacity) *PartitionsOptions { + t.MaxLengthBytes = maxLengthBytes + return t +} + +func (t *PartitionsOptions) SetMaxSegmentSizeBytes(maxSegmentSizeBytes *ByteCapacity) *PartitionsOptions { + t.MaxSegmentSizeBytes = maxSegmentSizeBytes + return t +} + +func (t *PartitionsOptions) SetBalancedLeaderLocator() *PartitionsOptions { + t.LeaderLocator = LeaderLocatorBalanced + return t +} + +func (t *PartitionsOptions) SetClientLocalLocator() *PartitionsOptions { + t.LeaderLocator = LeaderLocatorClientLocal + return t +} + +func (t *PartitionsOptions) getPartitions(prefix string) []string { + var partitions []string + for i := 0; i < t.Partitions; i++ { + partitions = append(partitions, fmt.Sprintf("%s-%d", prefix, i)) + + } + return partitions +} + +func (t *PartitionsOptions) getBindingKeys() []string { + var bindingKeys []string + for i := 0; i < t.Partitions; i++ { + bindingKeys = append(bindingKeys, fmt.Sprintf("%d", i)) + } + return bindingKeys +} + +func (t *PartitionsOptions) getArgs() map[string]string { + if t.MaxAge > 0 { + t.args[maxAge] = fmt.Sprintf("%ds", int(t.MaxAge.Seconds())) + } + if t.MaxLengthBytes != nil { + t.args[maxLengthBytes] = fmt.Sprintf("%d", t.MaxLengthBytes.bytes) + } + if t.MaxSegmentSizeBytes != nil { + t.args[streamMaxSegmentSizeBytes] = fmt.Sprintf("%d", t.MaxSegmentSizeBytes.bytes) + } + if t.LeaderLocator != "" { + t.args[queueLeaderLocator] = t.LeaderLocator + } + return t.args +} + +type BindingsOptions struct { + Bindings []string + MaxAge time.Duration + MaxLengthBytes *ByteCapacity + MaxSegmentSizeBytes *ByteCapacity + LeaderLocator string + args map[string]string +} + +func NewBindingsOptions(bindings []string) *BindingsOptions { + return &BindingsOptions{ + Bindings: bindings, + args: make(map[string]string), + } +} + +func (t *BindingsOptions) SetMaxAge(maxAge time.Duration) *BindingsOptions { + t.MaxAge = maxAge + return t +} + +func (t *BindingsOptions) SetMaxLengthBytes(maxLengthBytes *ByteCapacity) *BindingsOptions { + t.MaxLengthBytes = maxLengthBytes + return t +} + +func (t *BindingsOptions) SetMaxSegmentSizeBytes(maxSegmentSizeBytes *ByteCapacity) *BindingsOptions { + t.MaxSegmentSizeBytes = maxSegmentSizeBytes + return t +} + +func (t *BindingsOptions) SetBalancedLeaderLocator() *BindingsOptions { + t.LeaderLocator = LeaderLocatorBalanced + return t +} + +func (t *BindingsOptions) SetClientLocalLocator() *BindingsOptions { + t.LeaderLocator = LeaderLocatorClientLocal + return t +} + +func (t *BindingsOptions) getPartitions(prefix string) []string { + var partitions []string + for _, bindingKey := range t.Bindings { + partitions = append(partitions, fmt.Sprintf("%s-%s", prefix, bindingKey)) + } + return partitions +} + +func (t *BindingsOptions) getBindingKeys() []string { + return t.Bindings +} + +func (t *BindingsOptions) getArgs() map[string]string { + if t.MaxAge > 0 { + t.args[maxAge] = fmt.Sprintf("%ds", int(t.MaxAge.Seconds())) + } + if t.MaxLengthBytes != nil { + t.args[maxLengthBytes] = fmt.Sprintf("%d", t.MaxLengthBytes.bytes) + } + if t.MaxSegmentSizeBytes != nil { + t.args[streamMaxSegmentSizeBytes] = fmt.Sprintf("%d", t.MaxSegmentSizeBytes.bytes) + } + if t.LeaderLocator != "" { + t.args[queueLeaderLocator] = t.LeaderLocator + } + return t.args +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go new file mode 100644 index 0000000..ea2c9c2 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go @@ -0,0 +1,270 @@ +package stream + +import ( + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "sync" + "time" +) + +type SuperStreamConsumerOptions struct { + ClientProvidedName string + Offset OffsetSpecification + Filter *ConsumerFilter + SingleActiveConsumer *SingleActiveConsumer + ConsumerName string + AutoCommitStrategy *AutoCommitStrategy + Autocommit bool +} + +func NewSuperStreamConsumerOptions() *SuperStreamConsumerOptions { + return &SuperStreamConsumerOptions{ + Offset: OffsetSpecification{}.Next(), + Autocommit: false, + } +} + +func (s *SuperStreamConsumerOptions) SetClientProvidedName(clientProvidedName string) *SuperStreamConsumerOptions { + s.ClientProvidedName = clientProvidedName + return s +} + +func (s *SuperStreamConsumerOptions) SetOffset(offset OffsetSpecification) *SuperStreamConsumerOptions { + s.Offset = offset + return s +} + +func (s *SuperStreamConsumerOptions) SetSingleActiveConsumer(singleActiveConsumer *SingleActiveConsumer) *SuperStreamConsumerOptions { + s.SingleActiveConsumer = singleActiveConsumer + return s +} + +func (s *SuperStreamConsumerOptions) SetFilter(filter *ConsumerFilter) *SuperStreamConsumerOptions { + s.Filter = filter + return s +} + +func (s *SuperStreamConsumerOptions) SetConsumerName(consumerName string) *SuperStreamConsumerOptions { + s.ConsumerName = consumerName + return s +} + +func (s *SuperStreamConsumerOptions) SetAutoCommit(autoCommitStrategy *AutoCommitStrategy) *SuperStreamConsumerOptions { + s.Autocommit = true + s.AutoCommitStrategy = autoCommitStrategy + return s +} + +func (s *SuperStreamConsumerOptions) SetManualCommit() *SuperStreamConsumerOptions { + s.Autocommit = false + return s +} + +// CPartitionClose is a struct that is used to notify the user when a partition from a consumer is closed +// The user can use the NotifyPartitionClose to get the channel +type CPartitionClose struct { + Partition string + Event Event + Context CPartitionContext +} + +// CPartitionContext is an interface that is used to expose partition information and methods +// to the user. The user can use the CPartitionContext to reconnect a partition to the SuperStreamConsumer +// Specifying the offset to start from +type CPartitionContext interface { + ConnectPartition(partition string, offset OffsetSpecification) error +} + +type SuperStreamConsumer struct { + // Only the active consumers are stored here + activeConsumers []*Consumer + // we need to copy the partitions here since the + //activeConsumers is only the consumers active + // in a normal situation len(partitions) == len(consumers) + // but in case of disconnection the len(partitions) can be > len(consumers) + // since the consumer is in reconnection + partitions []string + env *Environment + mutex sync.Mutex + chSuperStreamPartitionClose chan CPartitionClose + + SuperStream string + SuperStreamConsumerOptions *SuperStreamConsumerOptions + MessagesHandler MessagesHandler +} + +func newSuperStreamConsumer(env *Environment, superStream string, MessagesHandler MessagesHandler, superStreamConsumerOptions *SuperStreamConsumerOptions) (*SuperStreamConsumer, error) { + + if env == nil { + return nil, ErrEnvironmentNotDefined + } + + if superStreamConsumerOptions == nil { + return nil, ErrSuperStreamConsumerOptionsNotDefined + } + + if superStream == "" || containsOnlySpaces(superStream) { + return nil, fmt.Errorf("super Stream Name can't be empty") + } + + logs.LogDebug("Creating a SuperStreamConsumer for: %s", superStream) + + return &SuperStreamConsumer{ + env: env, + SuperStream: superStream, + SuperStreamConsumerOptions: superStreamConsumerOptions, + MessagesHandler: MessagesHandler, + }, nil +} + +func (s *SuperStreamConsumer) init() error { + partitions, err := s.env.QueryPartitions(s.SuperStream) + s.partitions = partitions + if err != nil { + return err + } + for _, p := range partitions { + err = s.ConnectPartition(p, s.SuperStreamConsumerOptions.Offset) + if err != nil { + return err + } + } + return nil +} + +// NotifyPartitionClose returns a channel that will be notified when a partition is closed +// Event will give the reason of the close +// size is the size of the channel +func (s *SuperStreamConsumer) NotifyPartitionClose(size int) chan CPartitionClose { + ch := make(chan CPartitionClose, size) + s.chSuperStreamPartitionClose = ch + return ch +} + +func (s *SuperStreamConsumer) getConsumers() []*Consumer { + s.mutex.Lock() + defer s.mutex.Unlock() + return s.activeConsumers +} + +func (s *SuperStreamConsumer) ConnectPartition(partition string, offset OffsetSpecification) error { + logs.LogDebug("[SuperStreamConsumer] ConnectPartition for partition: %s", partition) + s.mutex.Lock() + found := false + for _, p := range s.partitions { + if p == partition { + found = true + break + } + } + if !found { + s.mutex.Unlock() + return fmt.Errorf("partition %s not found in the super stream %s", partition, s.SuperStream) + } + for _, consumer := range s.activeConsumers { + if consumer.GetStreamName() == partition { + s.mutex.Unlock() + return fmt.Errorf("consumer already connected to: %s partition ", partition) + } + } + s.mutex.Unlock() + var options = NewConsumerOptions().SetOffset(offset) + if s.SuperStreamConsumerOptions.ClientProvidedName != "" { + options = options.SetClientProvidedName(s.SuperStreamConsumerOptions.ClientProvidedName) + } + + options = options.SetFilter(s.SuperStreamConsumerOptions.Filter) + + if s.SuperStreamConsumerOptions.Autocommit { + options = options.SetAutoCommit(s.SuperStreamConsumerOptions.AutoCommitStrategy) + } else { + options = options.SetManualCommit() + } + + if s.SuperStreamConsumerOptions.SingleActiveConsumer != nil { + // mandatory to enable the super stream consumer + // we need to create a new SAC for each consumer since we need to store: `offsetSpecification OffsetSpecification` + // differently. We can leave the ConsumerUpdate pointer to be the same for all the consumers. + // ConsumerUpdate contains all the info to work alone + sacForConsumer := + newSingleActiveConsumerWithAllParameters( + s.SuperStreamConsumerOptions.SingleActiveConsumer.ConsumerUpdate, + s.SuperStreamConsumerOptions.SingleActiveConsumer.Enabled, + s.SuperStream) + options = options.SetSingleActiveConsumer(sacForConsumer) + } + + // set the same handler for all the partitions + // with consumerContext.Consumer.GetStreamName() it is possible to know the partition + // and to handle the message in a different way + // s.MessagesHandler is not mandatory even if it is a good practice to set it + messagesHandler := func(consumerContext ConsumerContext, message *amqp.Message) { + if s.MessagesHandler != nil { + s.MessagesHandler(consumerContext, message) + } else { + logs.LogWarn("[SuperStreamConsumer] No handler set for partition: %s", consumerContext.Consumer.GetStreamName()) + } + } + consumer, err := s.env.NewConsumer(partition, messagesHandler, + options.SetConsumerName(s.SuperStreamConsumerOptions.ConsumerName)) + if err != nil { + return err + } + s.mutex.Lock() + s.activeConsumers = append(s.activeConsumers, consumer) + closedEvent := consumer.NotifyClose() + s.mutex.Unlock() + + go func(gpartion string, _closedEvent <-chan Event) { + logs.LogDebug("[SuperStreamConsumer] chSuperStreamPartitionClose started for partition: %s", gpartion) + // one shot event + event := <-_closedEvent + s.mutex.Lock() + for i := range s.activeConsumers { + if s.activeConsumers[i].GetStreamName() == gpartion { + s.activeConsumers = append(s.activeConsumers[:i], s.activeConsumers[i+1:]...) + break + } + } + s.mutex.Unlock() + if s.chSuperStreamPartitionClose != nil { + s.mutex.Lock() + s.chSuperStreamPartitionClose <- CPartitionClose{ + Partition: gpartion, + Event: event, + Context: s, + } + s.mutex.Unlock() + } + logs.LogDebug("[SuperStreamConsumer] chSuperStreamPartitionClose for partition: %s", gpartion) + }(partition, closedEvent) + + return nil +} + +func (s *SuperStreamConsumer) Close() error { + logs.LogDebug("[SuperStreamConsumer] Closing SuperStreamConsumer for: %s", s.SuperStream) + s.mutex.Lock() + defer s.mutex.Unlock() + for len(s.activeConsumers) > 0 { + err := s.activeConsumers[0].Close() + if err != nil { + return err + } + s.activeConsumers = s.activeConsumers[1:] + } + + // give the time to raise the close event + go func() { + time.Sleep(2 * time.Second) + s.mutex.Lock() + if s.chSuperStreamPartitionClose != nil { + close(s.chSuperStreamPartitionClose) + } + s.mutex.Unlock() + }() + + logs.LogDebug("[SuperStreamConsumer] Closed SuperStreamConsumer for: %s", s.SuperStream) + return nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go new file mode 100644 index 0000000..47fe89c --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go @@ -0,0 +1,416 @@ +package stream + +import ( + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message" + "github.com/spaolacci/murmur3" + "sync" + "time" +) + +// The base interface for routing strategies +// The client is shipped with two routing strategies: +// - HashRoutingStrategy +// - KeyRoutingStrategy +// The user can implement its own routing strategy by implementing this interface. +// In most of the cases these two strategies are enough. +// See the test: Implement custom routing strategy in case you need to implement a custom routing strategy + +type RoutingStrategy interface { + //Route Based on the message and the partitions the routing strategy returns the partitions where the message should be sent + // It could be zero, one or more partitions + Route(message message.StreamMessage, partitions []string) ([]string, error) + + // SetRouteParameters is useful for the routing key strategies to set the query route function + // or in general to set the parameters needed by the routing strategy + SetRouteParameters(superStream string, queryRoute func(superStream string, routingKey string) ([]string, error)) +} + +// HashRoutingMurmurStrategy is a routing strategy that uses the murmur3 hash function + +// DON'T Touch this value. It makes the hash compatible with the Java/.Net/Python client + +const SEED = 104729 + +type HashRoutingStrategy struct { + RoutingKeyExtractor func(message message.StreamMessage) string +} + +func NewHashRoutingStrategy(routingKeyExtractor func(message message.StreamMessage) string) *HashRoutingStrategy { + return &HashRoutingStrategy{ + RoutingKeyExtractor: routingKeyExtractor, + } +} + +func (h *HashRoutingStrategy) Route(message message.StreamMessage, partitions []string) ([]string, error) { + + key := h.RoutingKeyExtractor(message) + murmurHash := murmur3.New32WithSeed(SEED) + _, _ = murmurHash.Write([]byte(key)) + murmurHash.Sum32() + index := murmurHash.Sum32() % uint32(len(partitions)) + return []string{partitions[index]}, nil +} +func (h *HashRoutingStrategy) SetRouteParameters(_ string, _ func(superStream string, routingKey string) ([]string, error)) { +} + +// end of HashRoutingMurmurStrategy + +// KeyRoutingStrategy is a routing strategy that uses the key of the message +type KeyRoutingStrategy struct { + // provided by the user to define the key based on a message + RoutingKeyExtractor func(message message.StreamMessage) string + + queryRoute func(superStream string, routingKey string) ([]string, error) + superStream string + cacheRouting map[string][]string +} + +func NewKeyRoutingStrategy( + routingKeyExtractor func(message message.StreamMessage) string) *KeyRoutingStrategy { + return &KeyRoutingStrategy{ + RoutingKeyExtractor: routingKeyExtractor, + cacheRouting: make(map[string][]string), + } +} + +func (k *KeyRoutingStrategy) SetRouteParameters(superStream string, queryRoute func(superStream string, routingKey string) ([]string, error)) { + k.superStream = superStream + k.queryRoute = queryRoute +} + +func (k *KeyRoutingStrategy) Route(message message.StreamMessage, partitions []string) ([]string, error) { + key := k.RoutingKeyExtractor(message) + var routing []string + // check if the routing is already in cache. + // Cache is useful to avoid multiple queries for the same key + // so only the first message with a key will be queried + if k.cacheRouting[key] != nil { + routing = append(routing, k.cacheRouting[key]...) + } else { + r, err := k.queryRoute(k.superStream, key) + if err != nil { + return nil, err + } + routing = append(routing, r...) + k.cacheRouting[key] = routing + } + + for _, p := range partitions { + for _, r := range routing { + if r == p { + return []string{p}, nil + } + } + } + + // The message is not routed since does not have a partition based on the key + // It can happen if the key selected is not in the routing table + // differently from the hash strategy the key strategy can have zero partitions + return nil, ErrMessageRouteNotFound +} + +// end of KeyRoutingStrategy + +type SuperStreamProducerOptions struct { + RoutingStrategy RoutingStrategy + ClientProvidedName string + Filter *ProducerFilter // Enable the filter feature, by default is disabled. Pointer nil +} + +// NewSuperStreamProducerOptions creates a new SuperStreamProducerOptions +// The RoutingStrategy is mandatory +func NewSuperStreamProducerOptions(routingStrategy RoutingStrategy) *SuperStreamProducerOptions { + return &SuperStreamProducerOptions{ + RoutingStrategy: routingStrategy, + } +} + +func (o SuperStreamProducerOptions) SetClientProvidedName(clientProvidedName string) *SuperStreamProducerOptions { + o.ClientProvidedName = clientProvidedName + return &o +} + +func (o SuperStreamProducerOptions) SetFilter(filter *ProducerFilter) *SuperStreamProducerOptions { + o.Filter = filter + return &o +} + +// PartitionPublishConfirm is a struct that is used to notify the user when a message is confirmed or not per partition +// The user can use the NotifyPublishConfirmation to get the channel +type PartitionPublishConfirm struct { + Partition string + ConfirmationStatus []*ConfirmationStatus +} + +// PPartitionClose is a struct that is used to notify the user when a partition from a producer is closed +// The user can use the NotifyPartitionClose to get the channel +type PPartitionClose struct { + Partition string + Event Event + Context PPartitionContext +} + +// PPartitionContext is an interface that is used to expose partition information and methods +// to the user. The user can use the PPartitionContext to reconnect a partition to the SuperStreamProducer +type PPartitionContext interface { + ConnectPartition(partition string) error +} + +type SuperStreamProducer struct { + // Only the active producers are stored here + activeProducers []*Producer + // we need to copy the partitions here since the + //activeProducers is only the producers active + // in a normal situation len(partitions) == len(activeProducers) + // but in case of disconnection the len(partitions) can be > len(activeProducers) + // since the producer is in reconnection + partitions []string + + env *Environment + mutex sync.Mutex + chNotifyPublishConfirmation chan PartitionPublishConfirm + chSuperStreamPartitionClose chan PPartitionClose + + // public + SuperStream string + SuperStreamProducerOptions *SuperStreamProducerOptions +} + +func newSuperStreamProducer(env *Environment, superStream string, superStreamProducerOptions *SuperStreamProducerOptions) (*SuperStreamProducer, error) { + + if env == nil { + return nil, ErrEnvironmentNotDefined + } + + if superStreamProducerOptions == nil { + return nil, ErrSuperStreamProducerOptionsNotDefined + } + + if superStreamProducerOptions.RoutingStrategy == nil { + return nil, ErrSuperStreamProducerOptionsNotDefined + } + + if superStream == "" || containsOnlySpaces(superStream) { + + return nil, fmt.Errorf("super Stream Name can't be empty") + } + + logs.LogDebug("Creating a SuperStreamProducer for: %s", superStream) + return &SuperStreamProducer{ + activeProducers: make([]*Producer, 0), + env: env, + SuperStream: superStream, + SuperStreamProducerOptions: superStreamProducerOptions, + mutex: sync.Mutex{}, + }, nil +} + +func (s *SuperStreamProducer) init() error { + // set the routing strategy parameters + s.SuperStreamProducerOptions.RoutingStrategy.SetRouteParameters(s.SuperStream, s.env.QueryRoute) + + partitions, err := s.env.QueryPartitions(s.SuperStream) + s.partitions = partitions + if err != nil { + return err + } + for _, p := range partitions { + err = s.ConnectPartition(p) + if err != nil { + return err + } + } + return nil +} + +// ConnectPartition connects a partition to the SuperStreamProducer part of PPartitionContext interface +// The super stream producer is a producer that can send messages to multiple partitions +// that are hidden to the user. +// with the ConnectPartition the user can re-connect a partition to the SuperStreamProducer +// that should be used only in case of disconnection +func (s *SuperStreamProducer) ConnectPartition(partition string) error { + logs.LogDebug("[SuperStreamProducer] ConnectPartition for partition: %s", partition) + + s.mutex.Lock() + found := false + for _, p := range s.partitions { + if p == partition { + found = true + break + } + } + if !found { + s.mutex.Unlock() + return fmt.Errorf("partition %s not found in the super stream %s", partition, s.SuperStream) + } + for _, producer := range s.activeProducers { + if producer.GetStreamName() == partition { + s.mutex.Unlock() + return fmt.Errorf("producer already connected to: %s partition ", partition) + } + } + + s.mutex.Unlock() + var options = NewProducerOptions() + if s.SuperStreamProducerOptions.ClientProvidedName != "" { + options.ClientProvidedName = s.SuperStreamProducerOptions.ClientProvidedName + } + options = options.SetFilter(s.SuperStreamProducerOptions.Filter) + + producer, err := s.env.NewProducer(partition, options) + if err != nil { + return err + } + s.mutex.Lock() + s.activeProducers = append(s.activeProducers, producer) + chSingleStreamPublishConfirmation := producer.NotifyPublishConfirmation() + closedEvent := producer.NotifyClose() + s.mutex.Unlock() + + go func(gpartion string, _closedEvent <-chan Event) { + logs.LogDebug("[SuperStreamProducer] chSuperStreamPartitionClose started for partition: %s", gpartion) + event := <-_closedEvent + + s.mutex.Lock() + for i := range s.activeProducers { + if s.activeProducers[i].GetStreamName() == gpartion { + s.activeProducers = append(s.activeProducers[:i], s.activeProducers[i+1:]...) + break + } + } + s.mutex.Unlock() + if s.chSuperStreamPartitionClose != nil { + s.mutex.Lock() + s.chSuperStreamPartitionClose <- PPartitionClose{ + Partition: gpartion, + Event: event, + Context: s, + } + s.mutex.Unlock() + } + logs.LogDebug("[SuperStreamProducer] chSuperStreamPartitionClose for partition: %s", gpartion) + }(partition, closedEvent) + + go func(gpartion string, ch <-chan []*ConfirmationStatus) { + logs.LogDebug("[SuperStreamProducer] chNotifyPublishConfirmation started - partition: %s", gpartion) + for confirmed := range ch { + if s.chNotifyPublishConfirmation != nil { + s.chNotifyPublishConfirmation <- PartitionPublishConfirm{ + Partition: gpartion, + ConfirmationStatus: confirmed, + } + + } + } + logs.LogDebug("[SuperStreamProducer] chNotifyPublishConfirmation closed - partition: %s", gpartion) + }(partition, chSingleStreamPublishConfirmation) + + return nil +} + +// NotifyPublishConfirmation returns a channel that will be notified when a message is confirmed or not per partition +// size is the size of the channel +func (s *SuperStreamProducer) NotifyPublishConfirmation(size int) chan PartitionPublishConfirm { + ch := make(chan PartitionPublishConfirm, size) + s.chNotifyPublishConfirmation = ch + return ch +} + +// NotifyPartitionClose returns a channel that will be notified when a partition is closed +// Event will give the reason of the close +// size is the size of the channel +func (s *SuperStreamProducer) NotifyPartitionClose(size int) chan PPartitionClose { + ch := make(chan PPartitionClose, size) + s.chSuperStreamPartitionClose = ch + return ch +} + +func (s *SuperStreamProducer) GetPartitions() []string { + s.mutex.Lock() + defer s.mutex.Unlock() + return s.partitions +} + +func (s *SuperStreamProducer) getProducer(partition string) *Producer { + s.mutex.Lock() + defer s.mutex.Unlock() + for _, p := range s.activeProducers { + if p.GetStreamName() == partition { + return p + } + } + return nil +} + +func (s *SuperStreamProducer) getProducers() []*Producer { + s.mutex.Lock() + defer s.mutex.Unlock() + return s.activeProducers +} + +// Send sends a message to the partitions based on the routing strategy +func (s *SuperStreamProducer) Send(message message.StreamMessage) error { + b, err := message.MarshalBinary() + if err != nil { + return err + } + + ps, err := s.SuperStreamProducerOptions.RoutingStrategy.Route(message, s.GetPartitions()) + + // the routing strategy can return zero partitions + // in case the message is not routed. It can happen when the strategy is based on the key + // it can return ErrMessageRouteNotFound + if err != nil { + return err + } + + for _, p := range ps { + producer := s.getProducer(p) + if producer == nil { + // the producer is not. It can happen if the tcp connection for the partition is dropped + // the user can reconnect the partition using the ConnectPartition + // The client returns an error. Even there could be other partitions where the message can be sent. + // but won't to that to break the expectation of the user. The routing should be always the same + // for the same message. The user has to handle the error and decide to send the message again + return ErrProducerNotFound + } + + err = producer.sendBytes(message, b) + if err != nil { + return err + } + } + return nil +} + +func (s *SuperStreamProducer) Close() error { + logs.LogDebug("[SuperStreamProducer] Closing a SuperStreamProducer for: %s", s.SuperStream) + s.mutex.Lock() + defer s.mutex.Unlock() + for len(s.activeProducers) > 0 { + err := s.activeProducers[0].Close() + if err != nil { + return err + } + s.activeProducers = s.activeProducers[1:] + } + + // give the time to raise the close event + go func() { + time.Sleep(2 * time.Second) + s.mutex.Lock() + if s.chNotifyPublishConfirmation != nil { + close(s.chNotifyPublishConfirmation) + s.chNotifyPublishConfirmation = nil + } + if s.chSuperStreamPartitionClose != nil { + close(s.chSuperStreamPartitionClose) + s.chSuperStreamPartitionClose = nil + } + s.mutex.Unlock() + }() + logs.LogDebug("[SuperStreamProducer] Closed SuperStreamProducer for: %s", s.SuperStream) + return nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go new file mode 100644 index 0000000..c62b889 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go @@ -0,0 +1,59 @@ +package stream + +import ( + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "strings" + "time" +) + +type responseError struct { + Err error + isTimeout bool +} + +func newResponseError(err error, timeout bool) responseError { + return responseError{ + Err: err, + isTimeout: timeout, + } +} + +func uShortExtractResponseCode(code uint16) uint16 { + return code & 0b0111_1111_1111_1111 +} + +//func UIntExtractResponseCode(code int32) int32 { +// return code & 0b0111_1111_1111_1111 +//} + +func uShortEncodeResponseCode(code uint16) uint16 { + return code | 0b1000_0000_0000_0000 +} + +func waitCodeWithDefaultTimeOut(response *Response) responseError { + return waitCodeWithTimeOut(response, defaultSocketCallTimeout) +} +func waitCodeWithTimeOut(response *Response, timeout time.Duration) responseError { + select { + case code := <-response.code: + if code.id != responseCodeOk { + return newResponseError(lookErrorCode(code.id), false) + } + return newResponseError(nil, false) + case <-time.After(timeout): + logs.LogError("timeout %d ns - waiting Code, operation: %s", timeout.Milliseconds(), response.commandDescription) + + return newResponseError( + fmt.Errorf("timeout %d ms - waiting Code, operation: %s ", + timeout.Milliseconds(), response.commandDescription), true) + } +} + +func SetLevelInfo(value int8) { + logs.LogLevel = value +} + +func containsOnlySpaces(input string) bool { + return len(input) > 0 && len(strings.TrimSpace(input)) == 0 +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/.gitignore b/examples/go/vendor/github.com/spaolacci/murmur3/.gitignore new file mode 100644 index 0000000..0026861 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/.gitignore @@ -0,0 +1,22 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml b/examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml new file mode 100644 index 0000000..9bfca9c --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml @@ -0,0 +1,7 @@ +language: go + +go: + - 1.x + - master + +script: go test diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/LICENSE b/examples/go/vendor/github.com/spaolacci/murmur3/LICENSE new file mode 100644 index 0000000..2a46fd7 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/LICENSE @@ -0,0 +1,24 @@ +Copyright 2013, Sébastien Paolacci. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the library nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/README.md b/examples/go/vendor/github.com/spaolacci/murmur3/README.md new file mode 100644 index 0000000..e463678 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/README.md @@ -0,0 +1,86 @@ +murmur3 +======= + +[![Build Status](https://travis-ci.org/spaolacci/murmur3.svg?branch=master)](https://travis-ci.org/spaolacci/murmur3) + +Native Go implementation of Austin Appleby's third MurmurHash revision (aka +MurmurHash3). + +Reference algorithm has been slightly hacked as to support the streaming mode +required by Go's standard [Hash interface](http://golang.org/pkg/hash/#Hash). + + +Benchmarks +---------- + +Go tip as of 2014-06-12 (i.e almost go1.3), core i7 @ 3.4 Ghz. All runs +include hasher instantiation and sequence finalization. + +
          +
          +Benchmark32_1        500000000     7.69 ns/op      130.00 MB/s
          +Benchmark32_2        200000000     8.83 ns/op      226.42 MB/s
          +Benchmark32_4        500000000     7.99 ns/op      500.39 MB/s
          +Benchmark32_8        200000000     9.47 ns/op      844.69 MB/s
          +Benchmark32_16       100000000     12.1 ns/op     1321.61 MB/s
          +Benchmark32_32       100000000     18.3 ns/op     1743.93 MB/s
          +Benchmark32_64        50000000     30.9 ns/op     2071.64 MB/s
          +Benchmark32_128       50000000     57.6 ns/op     2222.96 MB/s
          +Benchmark32_256       20000000      116 ns/op     2188.60 MB/s
          +Benchmark32_512       10000000      226 ns/op     2260.59 MB/s
          +Benchmark32_1024       5000000      452 ns/op     2263.73 MB/s
          +Benchmark32_2048       2000000      891 ns/op     2296.02 MB/s
          +Benchmark32_4096       1000000     1787 ns/op     2290.92 MB/s
          +Benchmark32_8192        500000     3593 ns/op     2279.68 MB/s
          +Benchmark128_1       100000000     26.1 ns/op       38.33 MB/s
          +Benchmark128_2       100000000     29.0 ns/op       69.07 MB/s
          +Benchmark128_4        50000000     29.8 ns/op      134.17 MB/s
          +Benchmark128_8        50000000     31.6 ns/op      252.86 MB/s
          +Benchmark128_16      100000000     26.5 ns/op      603.42 MB/s
          +Benchmark128_32      100000000     28.6 ns/op     1117.15 MB/s
          +Benchmark128_64       50000000     35.5 ns/op     1800.97 MB/s
          +Benchmark128_128      50000000     50.9 ns/op     2515.50 MB/s
          +Benchmark128_256      20000000     76.9 ns/op     3330.11 MB/s
          +Benchmark128_512      20000000      135 ns/op     3769.09 MB/s
          +Benchmark128_1024     10000000      250 ns/op     4094.38 MB/s
          +Benchmark128_2048      5000000      477 ns/op     4290.75 MB/s
          +Benchmark128_4096      2000000      940 ns/op     4353.29 MB/s
          +Benchmark128_8192      1000000     1838 ns/op     4455.47 MB/s
          +
          +
          + + +
          +
          +benchmark              Go1.0 MB/s    Go1.1 MB/s  speedup    Go1.2 MB/s  speedup    Go1.3 MB/s  speedup
          +Benchmark32_1               98.90        118.59    1.20x        114.79    0.97x        130.00    1.13x
          +Benchmark32_2              168.04        213.31    1.27x        210.65    0.99x        226.42    1.07x
          +Benchmark32_4              414.01        494.19    1.19x        490.29    0.99x        500.39    1.02x
          +Benchmark32_8              662.19        836.09    1.26x        836.46    1.00x        844.69    1.01x
          +Benchmark32_16             917.46       1304.62    1.42x       1297.63    0.99x       1321.61    1.02x
          +Benchmark32_32            1141.93       1737.54    1.52x       1728.24    0.99x       1743.93    1.01x
          +Benchmark32_64            1289.47       2039.51    1.58x       2038.20    1.00x       2071.64    1.02x
          +Benchmark32_128           1299.23       2097.63    1.61x       2177.13    1.04x       2222.96    1.02x
          +Benchmark32_256           1369.90       2202.34    1.61x       2213.15    1.00x       2188.60    0.99x
          +Benchmark32_512           1399.56       2255.72    1.61x       2264.49    1.00x       2260.59    1.00x
          +Benchmark32_1024          1410.90       2285.82    1.62x       2270.99    0.99x       2263.73    1.00x
          +Benchmark32_2048          1422.14       2297.62    1.62x       2269.59    0.99x       2296.02    1.01x
          +Benchmark32_4096          1420.53       2307.81    1.62x       2273.43    0.99x       2290.92    1.01x
          +Benchmark32_8192          1424.79       2312.87    1.62x       2286.07    0.99x       2279.68    1.00x
          +Benchmark128_1               8.32         30.15    3.62x         30.84    1.02x         38.33    1.24x
          +Benchmark128_2              16.38         59.72    3.65x         59.37    0.99x         69.07    1.16x
          +Benchmark128_4              32.26        112.96    3.50x        114.24    1.01x        134.17    1.17x
          +Benchmark128_8              62.68        217.88    3.48x        218.18    1.00x        252.86    1.16x
          +Benchmark128_16            128.47        451.57    3.51x        474.65    1.05x        603.42    1.27x
          +Benchmark128_32            246.18        910.42    3.70x        871.06    0.96x       1117.15    1.28x
          +Benchmark128_64            449.05       1477.64    3.29x       1449.24    0.98x       1800.97    1.24x
          +Benchmark128_128           762.61       2222.42    2.91x       2217.30    1.00x       2515.50    1.13x
          +Benchmark128_256          1179.92       3005.46    2.55x       2931.55    0.98x       3330.11    1.14x
          +Benchmark128_512          1616.51       3590.75    2.22x       3592.08    1.00x       3769.09    1.05x
          +Benchmark128_1024         1964.36       3979.67    2.03x       4034.01    1.01x       4094.38    1.01x
          +Benchmark128_2048         2225.07       4156.93    1.87x       4244.17    1.02x       4290.75    1.01x
          +Benchmark128_4096         2360.15       4299.09    1.82x       4392.35    1.02x       4353.29    0.99x
          +Benchmark128_8192         2411.50       4356.84    1.81x       4480.68    1.03x       4455.47    0.99x
          +
          +
          + diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur.go new file mode 100644 index 0000000..1252cf7 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur.go @@ -0,0 +1,64 @@ +// Copyright 2013, Sébastien Paolacci. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package murmur3 implements Austin Appleby's non-cryptographic MurmurHash3. + + Reference implementation: + http://code.google.com/p/smhasher/wiki/MurmurHash3 + + History, characteristics and (legacy) perfs: + https://sites.google.com/site/murmurhash/ + https://sites.google.com/site/murmurhash/statistics +*/ +package murmur3 + +type bmixer interface { + bmix(p []byte) (tail []byte) + Size() (n int) + reset() +} + +type digest struct { + clen int // Digested input cumulative length. + tail []byte // 0 to Size()-1 bytes view of `buf'. + buf [16]byte // Expected (but not required) to be Size() large. + seed uint32 // Seed for initializing the hash. + bmixer +} + +func (d *digest) BlockSize() int { return 1 } + +func (d *digest) Write(p []byte) (n int, err error) { + n = len(p) + d.clen += n + + if len(d.tail) > 0 { + // Stick back pending bytes. + nfree := d.Size() - len(d.tail) // nfree ∈ [1, d.Size()-1]. + if nfree < len(p) { + // One full block can be formed. + block := append(d.tail, p[:nfree]...) + p = p[nfree:] + _ = d.bmix(block) // No tail. + } else { + // Tail's buf is large enough to prevent reallocs. + p = append(d.tail, p...) + } + } + + d.tail = d.bmix(p) + + // Keep own copy of the 0 to Size()-1 pending bytes. + nn := copy(d.buf[:], d.tail) + d.tail = d.buf[:nn] + + return n, nil +} + +func (d *digest) Reset() { + d.clen = 0 + d.tail = nil + d.bmixer.reset() +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go new file mode 100644 index 0000000..a4b618b --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go @@ -0,0 +1,203 @@ +package murmur3 + +import ( + //"encoding/binary" + "hash" + "unsafe" +) + +const ( + c1_128 = 0x87c37b91114253d5 + c2_128 = 0x4cf5ad432745937f +) + +// Make sure interfaces are correctly implemented. +var ( + _ hash.Hash = new(digest128) + _ Hash128 = new(digest128) + _ bmixer = new(digest128) +) + +// Hash128 represents a 128-bit hasher +// Hack: the standard api doesn't define any Hash128 interface. +type Hash128 interface { + hash.Hash + Sum128() (uint64, uint64) +} + +// digest128 represents a partial evaluation of a 128 bites hash. +type digest128 struct { + digest + h1 uint64 // Unfinalized running hash part 1. + h2 uint64 // Unfinalized running hash part 2. +} + +// New128 returns a 128-bit hasher +func New128() Hash128 { return New128WithSeed(0) } + +// New128WithSeed returns a 128-bit hasher set with explicit seed value +func New128WithSeed(seed uint32) Hash128 { + d := new(digest128) + d.seed = seed + d.bmixer = d + d.Reset() + return d +} + +func (d *digest128) Size() int { return 16 } + +func (d *digest128) reset() { d.h1, d.h2 = uint64(d.seed), uint64(d.seed) } + +func (d *digest128) Sum(b []byte) []byte { + h1, h2 := d.Sum128() + return append(b, + byte(h1>>56), byte(h1>>48), byte(h1>>40), byte(h1>>32), + byte(h1>>24), byte(h1>>16), byte(h1>>8), byte(h1), + + byte(h2>>56), byte(h2>>48), byte(h2>>40), byte(h2>>32), + byte(h2>>24), byte(h2>>16), byte(h2>>8), byte(h2), + ) +} + +func (d *digest128) bmix(p []byte) (tail []byte) { + h1, h2 := d.h1, d.h2 + + nblocks := len(p) / 16 + for i := 0; i < nblocks; i++ { + t := (*[2]uint64)(unsafe.Pointer(&p[i*16])) + k1, k2 := t[0], t[1] + + k1 *= c1_128 + k1 = (k1 << 31) | (k1 >> 33) // rotl64(k1, 31) + k1 *= c2_128 + h1 ^= k1 + + h1 = (h1 << 27) | (h1 >> 37) // rotl64(h1, 27) + h1 += h2 + h1 = h1*5 + 0x52dce729 + + k2 *= c2_128 + k2 = (k2 << 33) | (k2 >> 31) // rotl64(k2, 33) + k2 *= c1_128 + h2 ^= k2 + + h2 = (h2 << 31) | (h2 >> 33) // rotl64(h2, 31) + h2 += h1 + h2 = h2*5 + 0x38495ab5 + } + d.h1, d.h2 = h1, h2 + return p[nblocks*d.Size():] +} + +func (d *digest128) Sum128() (h1, h2 uint64) { + + h1, h2 = d.h1, d.h2 + + var k1, k2 uint64 + switch len(d.tail) & 15 { + case 15: + k2 ^= uint64(d.tail[14]) << 48 + fallthrough + case 14: + k2 ^= uint64(d.tail[13]) << 40 + fallthrough + case 13: + k2 ^= uint64(d.tail[12]) << 32 + fallthrough + case 12: + k2 ^= uint64(d.tail[11]) << 24 + fallthrough + case 11: + k2 ^= uint64(d.tail[10]) << 16 + fallthrough + case 10: + k2 ^= uint64(d.tail[9]) << 8 + fallthrough + case 9: + k2 ^= uint64(d.tail[8]) << 0 + + k2 *= c2_128 + k2 = (k2 << 33) | (k2 >> 31) // rotl64(k2, 33) + k2 *= c1_128 + h2 ^= k2 + + fallthrough + + case 8: + k1 ^= uint64(d.tail[7]) << 56 + fallthrough + case 7: + k1 ^= uint64(d.tail[6]) << 48 + fallthrough + case 6: + k1 ^= uint64(d.tail[5]) << 40 + fallthrough + case 5: + k1 ^= uint64(d.tail[4]) << 32 + fallthrough + case 4: + k1 ^= uint64(d.tail[3]) << 24 + fallthrough + case 3: + k1 ^= uint64(d.tail[2]) << 16 + fallthrough + case 2: + k1 ^= uint64(d.tail[1]) << 8 + fallthrough + case 1: + k1 ^= uint64(d.tail[0]) << 0 + k1 *= c1_128 + k1 = (k1 << 31) | (k1 >> 33) // rotl64(k1, 31) + k1 *= c2_128 + h1 ^= k1 + } + + h1 ^= uint64(d.clen) + h2 ^= uint64(d.clen) + + h1 += h2 + h2 += h1 + + h1 = fmix64(h1) + h2 = fmix64(h2) + + h1 += h2 + h2 += h1 + + return h1, h2 +} + +func fmix64(k uint64) uint64 { + k ^= k >> 33 + k *= 0xff51afd7ed558ccd + k ^= k >> 33 + k *= 0xc4ceb9fe1a85ec53 + k ^= k >> 33 + return k +} + +/* +func rotl64(x uint64, r byte) uint64 { + return (x << r) | (x >> (64 - r)) +} +*/ + +// Sum128 returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New128() +// hasher.Write(data) +// return hasher.Sum128() +func Sum128(data []byte) (h1 uint64, h2 uint64) { return Sum128WithSeed(data, 0) } + +// Sum128WithSeed returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New128WithSeed(seed) +// hasher.Write(data) +// return hasher.Sum128() +func Sum128WithSeed(data []byte, seed uint32) (h1 uint64, h2 uint64) { + d := &digest128{h1: uint64(seed), h2: uint64(seed)} + d.seed = seed + d.tail = d.bmix(data) + d.clen = len(data) + return d.Sum128() +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go new file mode 100644 index 0000000..e32c995 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go @@ -0,0 +1,167 @@ +package murmur3 + +// http://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/hash/Murmur3_32HashFunction.java + +import ( + "hash" + "unsafe" +) + +// Make sure interfaces are correctly implemented. +var ( + _ hash.Hash = new(digest32) + _ hash.Hash32 = new(digest32) + _ bmixer = new(digest32) +) + +const ( + c1_32 uint32 = 0xcc9e2d51 + c2_32 uint32 = 0x1b873593 +) + +// digest32 represents a partial evaluation of a 32 bites hash. +type digest32 struct { + digest + h1 uint32 // Unfinalized running hash. +} + +// New32 returns new 32-bit hasher +func New32() hash.Hash32 { return New32WithSeed(0) } + +// New32WithSeed returns new 32-bit hasher set with explicit seed value +func New32WithSeed(seed uint32) hash.Hash32 { + d := new(digest32) + d.seed = seed + d.bmixer = d + d.Reset() + return d +} + +func (d *digest32) Size() int { return 4 } + +func (d *digest32) reset() { d.h1 = d.seed } + +func (d *digest32) Sum(b []byte) []byte { + h := d.Sum32() + return append(b, byte(h>>24), byte(h>>16), byte(h>>8), byte(h)) +} + +// Digest as many blocks as possible. +func (d *digest32) bmix(p []byte) (tail []byte) { + h1 := d.h1 + + nblocks := len(p) / 4 + for i := 0; i < nblocks; i++ { + k1 := *(*uint32)(unsafe.Pointer(&p[i*4])) + + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + + h1 ^= k1 + h1 = (h1 << 13) | (h1 >> 19) // rotl32(h1, 13) + h1 = h1*4 + h1 + 0xe6546b64 + } + d.h1 = h1 + return p[nblocks*d.Size():] +} + +func (d *digest32) Sum32() (h1 uint32) { + + h1 = d.h1 + + var k1 uint32 + switch len(d.tail) & 3 { + case 3: + k1 ^= uint32(d.tail[2]) << 16 + fallthrough + case 2: + k1 ^= uint32(d.tail[1]) << 8 + fallthrough + case 1: + k1 ^= uint32(d.tail[0]) + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + h1 ^= k1 + } + + h1 ^= uint32(d.clen) + + h1 ^= h1 >> 16 + h1 *= 0x85ebca6b + h1 ^= h1 >> 13 + h1 *= 0xc2b2ae35 + h1 ^= h1 >> 16 + + return h1 +} + +/* +func rotl32(x uint32, r byte) uint32 { + return (x << r) | (x >> (32 - r)) +} +*/ + +// Sum32 returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New32() +// hasher.Write(data) +// return hasher.Sum32() +func Sum32(data []byte) uint32 { return Sum32WithSeed(data, 0) } + +// Sum32WithSeed returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New32WithSeed(seed) +// hasher.Write(data) +// return hasher.Sum32() +func Sum32WithSeed(data []byte, seed uint32) uint32 { + + h1 := seed + + nblocks := len(data) / 4 + var p uintptr + if len(data) > 0 { + p = uintptr(unsafe.Pointer(&data[0])) + } + p1 := p + uintptr(4*nblocks) + for ; p < p1; p += 4 { + k1 := *(*uint32)(unsafe.Pointer(p)) + + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + + h1 ^= k1 + h1 = (h1 << 13) | (h1 >> 19) // rotl32(h1, 13) + h1 = h1*4 + h1 + 0xe6546b64 + } + + tail := data[nblocks*4:] + + var k1 uint32 + switch len(tail) & 3 { + case 3: + k1 ^= uint32(tail[2]) << 16 + fallthrough + case 2: + k1 ^= uint32(tail[1]) << 8 + fallthrough + case 1: + k1 ^= uint32(tail[0]) + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + h1 ^= k1 + } + + h1 ^= uint32(len(data)) + + h1 ^= h1 >> 16 + h1 *= 0x85ebca6b + h1 ^= h1 >> 13 + h1 *= 0xc2b2ae35 + h1 ^= h1 >> 16 + + return h1 +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go new file mode 100644 index 0000000..65a410a --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go @@ -0,0 +1,57 @@ +package murmur3 + +import ( + "hash" +) + +// Make sure interfaces are correctly implemented. +var ( + _ hash.Hash = new(digest64) + _ hash.Hash64 = new(digest64) + _ bmixer = new(digest64) +) + +// digest64 is half a digest128. +type digest64 digest128 + +// New64 returns a 64-bit hasher +func New64() hash.Hash64 { return New64WithSeed(0) } + +// New64WithSeed returns a 64-bit hasher set with explicit seed value +func New64WithSeed(seed uint32) hash.Hash64 { + d := (*digest64)(New128WithSeed(seed).(*digest128)) + return d +} + +func (d *digest64) Sum(b []byte) []byte { + h1 := d.Sum64() + return append(b, + byte(h1>>56), byte(h1>>48), byte(h1>>40), byte(h1>>32), + byte(h1>>24), byte(h1>>16), byte(h1>>8), byte(h1)) +} + +func (d *digest64) Sum64() uint64 { + h1, _ := (*digest128)(d).Sum128() + return h1 +} + +// Sum64 returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New64() +// hasher.Write(data) +// return hasher.Sum64() +func Sum64(data []byte) uint64 { return Sum64WithSeed(data, 0) } + +// Sum64WithSeed returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New64WithSeed(seed) +// hasher.Write(data) +// return hasher.Sum64() +func Sum64WithSeed(data []byte, seed uint32) uint64 { + d := &digest128{h1: uint64(seed), h2: uint64(seed)} + d.seed = seed + d.tail = d.bmix(data) + d.clen = len(data) + h1, _ := d.Sum128() + return h1 +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml new file mode 100644 index 0000000..b869c8a --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml @@ -0,0 +1,1137 @@ + + + + http://fullgrid.eu/CGMES/3.0 + + http://iec.ch/TC57/ns/CIM/Topology-EU/3.0 + CGMES Conformity Assessment Test Configuration. The Test Configuration is owned by ENTSO-E and is provided by ENTSO-E “as it is”. To the fullest extent permitted by law, ENTSO-E shall not be liable for any damages of any kind arising out of the use of the model (including any of its subsequent modifications). ENTSO-E neither warrants, nor represents that the use of the model will not infringe the rights of third parties. Any use of the model shall include a reference to ENTSO-E. ENTSO-E web site is the only official source of information related to the model. + 1 + 2021-02-09T19:30:00Z + 2020-12-10T00:21:43Z + + + 45632379-b134-4567-89d8-d078f7024572 + + + + 687df623-5d6c-4f1b-8a3f-cef1121e6913 + + + + 8f236cf1-aee0-4528-bf73-68d92cc13ef2 + + + + 164ba4ef-12a8-4422-ad31-84cab195bce1 + + + + ba63bc14-e688-4573-bd62-341bb2e21818 + + + + 8d77cc45-66ee-4786-bae7-80d17c20cb95 + + + + 7bcb938b-6851-4539-b5fc-5102b019b9f6 + + + + 9e34a4c3-251b-4372-b961-031cf1dcd75c + + + + 8e842efc-1fd1-41b2-90e5-ba043659c601 + 00X-BE-BE-000890 + + Busbar_HVDC2 + BE_Busbar_HVDC2 + + + BE_Busbar_HVDC2 + + + 303f7acf-f00d-454a-ae9d-48e2c5dee000 + + + + a60f78b7-11d6-43c7-857d-dbb917f6e0d0 + + + + feb9a3f7-803a-4a9b-8140-967e399d6a0f + + + + 384f8540-9466-4223-8dd4-afc916d0b2de + + + + 037bb39f-be77-4b83-8638-9c8dff4eb966 + + + + 60922706-95b3-4701-a808-200fd054f4db + + + + efd8cd3b-6165-4e29-9a1f-3880b5929482 + + + + 0dc9f108-e9be-46ce-a3e6-480b092ef022 + + + + 2980a786-db33-46bd-9ee8-38dabcf63533 + + + + dfdc986a-93b6-454c-b9d8-6ab4aadb0139 + + + + 840e2c69-6ffd-45e6-8d60-bdedc73acfef + + + + ee9fd077-8248-4bf4-a8d5-0844a5539a14 + + + + ff3d16a7-77d9-4f86-945a-b1b8fee995fb + + + + 4159ba79-72c7-4f5c-a6e2-0451b9ae3e7e + + + + b8f5b2e0-3522-4465-8ce7-e238a863c46c + + + + 5f967934-b637-4643-901c-8f9a47e324f7 + + + + a0101413-5457-41e0-9630-6d98ea6a8bf3 + + + + 9072b316-0b11-4ded-a59b-5b1e5d78567a + + + + 08d5cb60-f1e7-452a-8023-3b7292cc23ce + + + + 133a4f91-0480-444a-b15a-a5e1a1180e8d + + + + 5acea568-6d34-4843-a49f-0f845a51ead8 + + + + d57e4856-e833-4957-9ec8-386ef7d7de69 + + + + 849d1e5e-e6be-44db-8c04-98bccae89af2 + + + + bea678e0-7b4d-4185-993d-5e34b2a113e9 + + + + cde8db64-6196-4941-81e6-df90b5c87180 + + + + 7182b03c-2864-4f5b-8287-6f5bee6721a3 + + + + 17c1fd73-ab8f-4984-aab3-a0e80f6cddbc + 00X-BE-BE-000884 + + BE-B_9 + BBRUS151; BGENT_51 + + + BE-Busbar_9 + + + 58539a9c-b33c-42d9-b4ce-20111fc7eec1 + + + + e3feb6f4-0db7-4468-b49e-6ea9d6f83d1a + + + + 7f830c46-a1e0-466c-bad5-1b7523147805 + 10T-AT-DE-00016Z + XZE_ST23 + RG CE; 220 kV; OHL + + + TN_Border_ST23 + + + 80b3660a-6dd4-40d0-80be-7df2dc3b7db8 + + + + 7cd843a6-816b-40ae-b465-e1e450c7ce64 + + + + e1b13b57-0529-49c0-97fd-209d7093608a + + + + 0fb2b82a-b699-45eb-8a93-46d4e0b9d7c8 + + + + 85f20ec0-c6d5-4006-8b49-031de3899693 + + + + 0f671737-5b7a-4c5a-ab99-8c102f193064 + + + + 4e3f37e9-3453-4533-aa69-ca23a5a8642b + 00X-BE-BE-000883 + + BE-B_8 + BBRUS_21; this is UCTE code + + + BE-Busbar_8 + + + ce8698bf-251b-4488-9712-ef00202026a8 + + + + e151673a-9d7b-40dd-980b-e59ad9645907 + + + + 38912491-185e-4869-8e8d-61dc9cc0a7f6 + + + + c32d3466-e3f9-496e-83ee-f1ba90914509 + + + + d9233706-3e52-481d-aa08-444ef6cf8c2b + + + + b6bb3424-88af-4934-a46c-ef220f778cbb + + + + 77d5bdef-c991-42df-ac4f-ce50efe43a1c + + + + 92843ea6-287e-4704-9a1e-b7d78e89a05b + + + + a3d9ac34-1e35-45aa-ad48-7c688258fafd + + + + d04a76b2-d483-41f4-bfcb-481b879d4c8b + + + + 57f8af45-64f0-4db8-9d31-5f9621f384c3 + + + + 5cb37c65-a942-4845-bf27-fba46cca9ed5 + + + + 9eadcaa7-ab1e-4ff7-a3ce-b2713eec1a7a + 00X-BE-BE-000876 + + BE-B_11 + BBRUS151; BGENT_51 + + + BE-Busbar_11 + + + 2c8ee2b2-260e-4c33-b9e1-e10787860a20 + + + + 19d85411-f52b-4d38-b4b5-2693ee7ee283 + + + + 2f3dcf10-5f8d-468a-baef-31bc1d8ef5d6 + + + + c73c1c1d-e7c5-4cbf-a9b0-9b0688a064a6 + HVDC1_3 + 00X-BE-BE-000524 + HVDC1_3 + + HVDC1_3 + + + 7874083b-e588-416d-b125-863c2681f6a3 + 00X-BE-BE-000877 + + BE-B_12 + BBRUS_21; this is UCTE code + + + BE-Busbar_12 + + + ab584b99-9e29-4139-8b44-d348148497b2 + + + + 6e942772-b225-4879-936d-4ee33471d459 + + + + 025515c7-3a78-4107-ac53-501375104606 + + + + 23854dcf-2b82-459e-8eb4-0d114fc828c0 + + + + 578f0373-5866-4a4f-ac13-c5a1a95820ae + + + + c591a9ca-ff19-47b9-8389-7713c79f1169 + 00X-BE-BE-000885 + + BE_HVDC_BUS2 + BE_HVDC_BUS2 + + + BE_HVDC_BUS2 + + + 2e18bb26-ab9d-41a8-9a1e-71aa3c98d425 + BE_DC2 + 00X-BE-BE-000519 + BE_DC2 + + BE_DC2 + + + efc034b8-2e9e-45e8-a693-ae080c0171b6 + + + + bc40de8c-e3cc-40aa-af5a-ff135ea68372 + + + + 4ed1d67b-3d76-47a7-9785-2ad6afaf4692 + + + + bd9d594b-e909-4890-9225-27b54a7c272a + 10T-ES-PT-10004U + XCA_AL11 + RG CE; 400 kV; OHL (2) + + + TN_Border_AL11 + + + 16aacbf6-ce19-446e-950a-6be6e23cbc50 + + + + 90cef915-b3de-43f7-860f-3ba67465fb40 + + + + 42e15ef0-928f-455b-accd-06e7cb0d0391 + + + + 5ece2949-f82e-419c-83a4-cddcf0be3216 + + + + ac800544-8184-44f2-8bf6-992eebc5c21d + + + + 1fdbd284-1504-4db8-a8c2-ee935f36879e + 00X-BE-BE-000875 + + BE-B_10 + BBRUS151; BGENT_51 + + + BE-Busbar_10 + + + 178f1d1c-1ad2-4e72-815f-47af95869edf + + + + 62e05955-9dd9-41c2-9753-75f04838d258 + DC_Ground2 + 00X-BE-BE-000521 + DC_Ground2 + + DC_Ground2 + + + 0e8a2acc-6550-4ab7-8a61-975dea4b0ea5 + BE_DC1 + 00X-BE-BE-000518 + BE_DC1 + + BE_DC1 + + + 3a30332a-986d-4998-ace3-9644bf8dcbfe + + + + b3659b6d-c8c4-48c2-a722-b317c3d1c36b + + + + 34d01770-11e9-46c7-b8da-20855cfcffeb + DC_Ground1 + 00X-BE-BE-000520 + DC_Ground1 + + DC_Ground1 + + + b41eee9a-af69-4a72-9aa8-c2c2982b9e6f + + + + 34777fdd-896d-4653-bcac-e065743e3741 + 00X-BE-BE-000879 + + BE-B_4 + BGENT_71; This is the old UCTE code from UCTE DEF + + + BE-Busbar_4 + + + 4bee3ced-e8f9-42ac-acbc-d762adb5308b + 00X-BE-BE-000886 + + BE_TR_BUS2 + BE_TR_BUS2 + + + BE_TR_BUS2 + + + ab189ae0-a556-4670-b1b8-552560a36e42 + + + + aaf1cff3-362d-4daa-b9f7-2c9236695198 + + + + 97226393-e1b3-46e0-a7c3-9e97f3b6cc5b + + + + 38e57012-ac9b-4999-9921-1dfafcb73e3b + + + + 0c729e41-a3aa-4eb6-81fa-ccd5bcb659a9 + + + + 5d88525f-7b2a-421d-90c1-f93007ecfbd6 + + + + 87a7036b-8a12-4916-b16c-6a80a381c2b4 + + + + 4dd077d5-c166-4699-baeb-2220f706002b + + + + 1f281a59-6fd9-43b5-a726-524fdb702854 + + + + 57409aea-48bd-4459-aa86-3a066b9137b1 + + + + 12c81581-5bb7-4e28-9318-74f36bcdc9fb + + + + 2bc64e4a-6acb-4ca2-86c3-5891c2e159f0 + + + + 34b1404e-6aad-472d-87c7-6b0e05d2098c + + + + 8b5e73bc-bc88-49d9-be57-26f606221816 + 10T-AT-SI-00001T + XKA_MA11 + RG CE; 400 kV; OHL (2) + + + TN_Border_MA11 + + + 99c5d0ee-e030-4023-aa67-c27c4b5ff3fc + + + + 610ee89a-c562-4b47-9401-bda854b4c527 + + + + da666ea8-7bf5-4a22-84c5-d5d21f692314 + + + + d282a4f2-fc06-4e2b-94d8-d5472ba7db8b + 10T-AT-DE-00017X + XZE_ST24 + RG CE; 220 kV; OHL + + + TN_Border_ST24 + + + 3baaf355-f5c1-433c-9760-e05436f3c56b + + + + d444a448-d542-4929-a369-0bf360079f5b + HVDC1_6 + 00X-BE-BE-000527 + HVDC1_6 + + HVDC1_6 + + + d3435b9a-1077-49ac-ab24-969734b70fd5 + + + + de3eef82-d6ea-418e-99ba-d74914b15b9a + + + + 8c1565e9-3ef8-4549-bf2b-1ebb100a2e84 + + + + 6b8d843e-5770-404a-a606-e1f2f5a1b610 + + + + 6710b466-00d6-4556-b436-985eb08f7dd0 + 00X-BE-BE-000878 + + BE-B_2 + BBRUS_21; this is UCTE code + + + BE-Busbar_2 + + + d3101b41-2d49-43ee-95b7-d60c445a55cc + + + + fa2d9b9b-2b79-4cf6-a7cc-a2dbb8730383 + + + + e655fcb2-ef0c-402c-a219-4e6e593c20f1 + + + + 11f04fbd-68fa-40f4-90c8-895443fc13b8 + + + + 19efee65-a452-4166-a77e-c1faf80fcc01 + + + + 2deccb06-c8b3-4cb2-815f-9c0460a7804d + + + + 82597a1a-4990-4232-9b1a-f5cec51fddb2 + + + + ff52e713-2bd1-46b0-a1cc-c02adfc2d49f + + + + d259a2ef-04ff-4790-ac13-b4c48f8e92c2 + + + + 98718b6d-a18c-4a66-958c-45d312a3274e + + + + fba07dcf-75e0-406f-a2f8-c39bb2286375 + + + + b2d0dab2-7918-469a-bea3-20aacee128b1 + + + + e52b1dd6-e7a2-4c80-95f4-9dc78ea013d1 + + + + 155a50ec-13d8-4104-879f-e998411be2ea + HVDC1_4 + 00X-BE-BE-000525 + HVDC1_4 + + HVDC1_4 + + + 5ae0dbff-af2b-4772-a820-ab3a1900bc6f + + + + 05675d2d-bb4c-4165-808f-0c7671a790cd + 10T-AT-DE-00017X + + BE_PCC1 + 10T-AT-DE-00017X + + + BE_PCC1 + + + e98c20a2-dd4e-4991-9fb4-83740f8bd21d + + + + e6d0a011-742f-4ffd-98a3-27c9e62a2342 + + + + 1798cbd9-2f4b-4c2c-8273-89bd5d85c2f6 + + + + 161b1f6c-7aef-4965-9d9c-6ea8d3d70f31 + + + + bec23818-76a9-4e47-aecd-76f8ad3f1199 + 00X-BE-BE-000889 + + Busbar_HVDC1 + BE_Busbar_HVDC1 + + + BE_Busbar_HVDC1 + + + f7f6140a-34b2-4e4d-ad50-094ed6af7871 + + + + b99f6c0d-ad5c-4676-859f-b8ce00d084d6 + + + + 37e90dfb-9d6c-4233-a4fd-6f4c2c909ecd + + + + b594eb01-62a7-4d95-8e36-64eb4167d74c + + + + 54c60386-8d0b-4c67-8bac-aa59bd70edae + + + + 09c73520-69d4-45ef-a4db-0624af71fe02 + + + + 125e8e92-2c08-46c4-a157-817f265a2082 + + + + a6c9e04c-9659-4516-bde6-5e31ba66cd38 + 10T-AT-DE-00017X + + BE_PCC2 + 10T-AT-DE-00017X + + + BE_PCC2 + + + e77ed075-af58-45a2-8eb7-18619927f281 + + + + 1c0d415d-7e56-4fad-a127-f131cf53b9cb + + + + 994f164c-430a-4188-86c1-0a05cec9a038 + + + + c859beb5-62f0-43c0-a269-b41d4f9a5c37 + 00X-BE-BE-000888 + + N1230816360 + N1230816360 + + + N1230816360 + + + 64f68467-97cd-4d00-af35-5ed6b4999a42 + + + + baeaf7ca-dde1-418e-9b16-46d6d5f52b25 + + + + f7553918-5286-47f3-a1dc-b4384ce8f2c0 + + + + fd8c8a4f-2f26-4912-b11f-5d52accad641 + HVDC1_Ground + 00X-BE-BE-000528 + HVDC1_Ground + + HVDC1_Ground + + + 0cab8253-91fd-4bfb-92b5-ed814a6c9b6a + + + + 0b49b82b-ea9a-4b28-8efa-d9ae99317d6c + + + + d1bd4ca1-5868-4513-909e-c9157477036c + + + + b694653e-31fd-45a1-a9e0-9f2edd706286 + + + + c2795549-c17e-4131-8575-581918c58e8c + + + + 51db23af-0ffa-4d23-bc57-6cc727548ca8 + + + + 930595c9-d686-47cb-8afe-e55225cc50e6 + + + + 659ac0ba-1b4b-4c08-a2f5-b3946091f293 + + + + 1eb0ff0f-da46-48de-afac-443fb5dde198 + + + + c9d619f4-d71d-4c2a-9eb1-497fa5f98132 + + + + d82b939b-41aa-47ff-87e4-be803991ad29 + 00X-BE-BE-000881 + + BE-B_6 + BBRUS151; BGENT_51 + + + BE-Busbar_6 + + + 97cc87be-cffe-4d92-8788-417f7e2a5b93 + + + + 7eefb27f-c416-4f84-9ef2-54b9c4d600dc + + + + 49ec0066-52af-4e6f-8da4-3198fe9acb5d + 00X-BE-BE-000880 + + BE-B_5 + BGENT_72; this is old code + + + BE-Busbar_5 + + + 16fb020d-850b-44b1-bd8c-47785995aaed + + + + 6fb0e7d3-8125-46b1-9cd3-1c66c1ee513a + + + + 58889b22-7bd5-4e54-8602-2e115bfa2ed7 + 00X-BE-BE-000882 + + BE-B_6 + BBRUS151; BGENT_51 + + + BE-Busbar_7 + + + b615eb40-31fc-4935-9b55-f9033450fbe7 + + + + 79041560-a1d6-4700-a235-7161f661a00a + + + + 9bf7da84-3812-4188-95f5-53805ffde524 + + + + 5cb80971-4471-4593-9462-84d6ec8fe185 + + + + b7a85241-4141-4241-b08b-df7d3bd0c06f + HVDC2_Ground + 00X-BE-BE-000530 + HVDC2_Ground + + HVDC2_Ground + + + 8ac543ac-abfb-4f9b-9381-72709bd8188e + + + + 5b11fb75-b075-4c01-8a5c-ecfc6cc6e616 + HVDC2_1 + 00X-BE-BE-000529 + HVDC2_1 + + HVDC2_1 + + + d4fc45b2-7090-4d26-b620-e7a319aca9b5 + HVDC1_5 + 00X-BE-BE-000526 + HVDC1_5 + + HVDC1_5 + + + 1c2e9c9b-9b85-4dac-aeb8-9c59f22463cb + HVDC1_1 + 00X-BE-BE-000522 + HVDC1_1 + + HVDC1_1 + + + 876b0e1a-3cfa-4931-88b4-3e1439d04af9 + + + + c3aa9ba4-1bbf-4c07-85f0-979c47f95590 + + + + 3e67aaae-e737-48e8-bd0a-3a83abe8acb6 + 10T-AT-DE-00017X + + BE_PCC1 + 10T-AT-DE-00017X + + + BE_PCC1 + + + 0a4c0246-5ce8-4a18-8450-bfa5f2dfc36d + + + + a8dd8cef-cd85-4f55-8015-ea212e461656 + + + + 4a362149-e88c-4573-a8d4-0d80ec7cd98f + + + + 72e3acb0-9f6c-496b-b809-4fb66c773b55 + + + + ae7c4142-8e9a-46c5-a68d-ae5d969e5c1a + + + + 0ecdd1da-2e90-4480-aa7d-c8a06c92d368 + + + + 8add0faf-5960-4882-a293-a5f79aef82c3 + + + + e8f391bc-4299-47cc-a9d8-f2f048bee440 + + + + 37a16d83-6e29-4d0d-b8e9-bb90b89c49da + + + + 7b9a6932-fb0a-4070-bf83-49866b2ed339 + + + + ad2cf75e-896e-4b4e-b31f-8da2c25dd597 + + + + 866f8f54-565d-4fbb-9c4f-780298f80752 + 10T-AT-HU-00002U + XWI_GY11 + RG CE; 400 kV; OHL + + + TN_Border_GY11 + + + 517422d7-067a-4154-af5c-c6945326f563 + + + + 918484e1-e9d6-41ec-88c6-4d3a8cec53cd + + + + d1f919a1-11e3-4e2d-b07f-4238275a71f3 + + + + 69fb097a-8366-4f62-8cac-095c41649501 + + + + a906ab69-b9c1-41b3-9a12-f4b3a85f72e8 + + + + 4b1a0c1a-85a4-4a85-9e20-db775ae9dcce + HVDC1_2 + 00X-BE-BE-000523 + HVDC1_2 + + HVDC1_2 + + + 0a99a983-5858-4f6c-a9fd-df5fcee2b80b + + + + e84ba2ff-8bac-4d71-9765-61c7633df57a + + + + dafa1358-665c-4751-bcd3-7cda376a6ae0 + + + + d2489a52-7225-49de-9fe0-22f1af25476d + + + + d84be2ac-c639-49b2-b9f7-207a02ecfd03 + + + + 27531589-b71f-4972-90e7-86167a4b9602 + + + + 147ffaf7-18ac-46a4-b11a-ec2c6b2874e2 + + + + 5331ff9a-14e7-4c10-9b85-0f5cc1dddab4 + + + + 7fe13068-5ecc-4d5a-b423-9eed457c2d83 + + + + d28d9755-daef-408a-b849-76ac918c7329 + + + + fde26acf-bab2-45e7-8726-3142a35455aa + + + + eaa3e478-b1a8-4ff7-b385-83bfe5a934f6 + 00X-BE-BE-000887 + + BE_TR_BUS4 + BE_TR_BUS4 + + + BE_TR_BUS4 + + + 3878043d-c093-43e6-9524-6d17580a3260 + + + + 67a35a3d-35a0-4bbe-a48a-f28228a67469 + 10T-AT-DE-00017X + + BE_PCC2 + 10T-AT-DE-00017X + + + BE_PCC2 + + + 9d3b821b-e098-4c15-a451-fe880d8132ea + + + + 56c26ce6-779a-47c9-a2d0-ddc7c2551ae5 + + + + 8ffdf52f-e0f8-46c1-afc2-3343393c4888 + + + + 7f45eb82-d863-4941-b88e-273f9b31e3ac + + + + 27ebbaea-e522-44e7-8d1d-c15f8a2eaa25 + + + + 582efea1-35f4-49d2-a2d0-0561ea2dd546 + + + + 6d2f3f51-3a6c-4a38-af83-9cf46f957e3d + + + + df276256-6f23-4ec4-8f8a-774bc1b4d407 + + + + 96633a4f-906a-4c5f-851e-f38dcb46ac7a + + + + f2afe0fa-05f2-4341-9ec7-c7b903686551 + + + + df495554-db4f-4213-8c44-0a79b89f6d3c + + + + c9d59e6b-7f84-431e-a521-2af97ba77125 + + + + 437ce796-5b3f-45ff-a3dd-4653b19bc1e4 + + + + 49aa21f8-8463-4b00-b93d-960ae7dd2811 + + + + 06c74a2d-4f1c-40de-935f-e1b7b7fe4cba + + + + 9be289e1-b82c-45ee-8939-459f032f6baf + + + + 78ad3b07-15b8-40aa-b4d6-ceeb8abbd988 + + + + fc5daa58-55cb-47f5-ac39-4e1ab12e0282 + + + diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go new file mode 100644 index 0000000..b6dd835 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go @@ -0,0 +1,551 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/data.proto + +// +//Messages to support data injection in the platform. +//The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). +// +//Data are grouped into sets, where each id identifies a specific measurement. The id does not identify the instance of measurement, but the class of measurement. Measurement ID can be used to retrieve additional medata about the measurement, from example, in the CIM OP profile associated to the monitored grid. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DataType int32 + +const ( + DataType_DATA_TYPE_UNSPECIFIED DataType = 0 //No type define + DataType_DATA_TYPE_ACTIVE_POWER DataType = 1 //Real power in a non-three phase circuit. It maps to an Analog. + DataType_DATA_TYPE_ANGLE DataType = 2 //Angle between voltage and current. It maps to an Analog. + DataType_DATA_TYPE_AUTOMATIC DataType = 3 //Automatic operation (not manual). It maps to Discrete (True or False). + DataType_DATA_TYPE_BOOLEAN DataType = 4 //Boolean. It maps to Discrete (True or False). + DataType_DATA_TYPE_CONFIG_CHANGE DataType = 5 // Configuration change. It maps to Discrete (True or False). + DataType_DATA_TYPE_CURRENT_SEQUENCE_NEGATIVE DataType = 6 //Current sequence negative. It maps to Phasor. + DataType_DATA_TYPE_CURRENT_SEQUENCE_POSITIVE DataType = 7 //Current sequence positive. It maps to Phasor. + DataType_DATA_TYPE_CURRENT_SEQUENCE_ZERO DataType = 8 //Current sequence zero. It maps to Phasor. + DataType_DATA_TYPE_DATA_ERROR DataType = 9 //Data error. It maps to Discrete (True or False). + DataType_DATA_TYPE_DATA_MODIFIED DataType = 10 //Data modified. It maps to Discrete (True or False). + DataType_DATA_TYPE_DATA_SORTING DataType = 11 //Data sorting. It maps to Discrete. + DataType_DATA_TYPE_ENERGY DataType = 12 //Energy. It maps to an Analog. + DataType_DATA_TYPE_FREQUENCY DataType = 13 //Frequency. It maps to an Analog. + DataType_DATA_TYPE_LINE_CURRENT DataType = 14 //Line current. It maps to an Analog. + DataType_DATA_TYPE_LINE_TO_LINE_VOLTAGE DataType = 15 //Line to line voltage. It maps to an Analog. + DataType_DATA_TYPE_LOCAL_OPERATION DataType = 16 //Local operation (not remote). It maps to Discrete. + DataType_DATA_TYPE_OPERATION_COUNT DataType = 17 //Operation count – typically for switches. It maps to Discrete. + DataType_DATA_TYPE_PACKET_LATENCY DataType = 18 //Packet latency. It maps to Analog. + DataType_DATA_TYPE_PHASE_VOLTAGE DataType = 19 //Line to ground voltage. It maps to Analog. + DataType_DATA_TYPE_PHASOR_CURRENT DataType = 20 //Phasor current in a non-three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_PHASOR_VOLTAGE DataType = 21 //Phasor voltage in a non-three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_PMU_SYNC DataType = 22 //PMU synchronized. It maps to Discrete (True or False) + DataType_DATA_TYPE_PMU_TIME_QUALITY DataType = 23 //PMU time quality. It maps to Discrete + DataType_DATA_TYPE_PMU_TRIGGER_DETECTED DataType = 24 //PMU trigger detected. It maps to Discrete (True or False) + DataType_DATA_TYPE_POWER DataType = 25 //Apparent power in a non-three phase circuit. It maps to Analog. + DataType_DATA_TYPE_POWER_FACTOR DataType = 26 //Power factor. It maps to Analog. + DataType_DATA_TYPE_PRESSURE DataType = 27 //Pressure. It maps to Analog. + DataType_DATA_TYPE_RATE_OF_CHANGE_OF_FREQUENCY DataType = 28 //Rate of change of frequency. It maps to Analog. + DataType_DATA_TYPE_REACTIVE_POWER DataType = 29 //Reactive power in a non-three phase circuit. It maps to Analog. + DataType_DATA_TYPE_SWITCH_POSITION DataType = 30 //Switch position. It maps to Discrete (True or False). + DataType_DATA_TYPE_TAP_POSITION DataType = 31 //Tap position of power transformer or phaseshifter. It maps to Discrete. + DataType_DATA_TYPE_TEMPERATURE DataType = 32 //Temperature. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_ACTIVE_POWER DataType = 33 //Total real power in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_CURRENT DataType = 34 //Total current (rms) in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_POWER DataType = 35 //Total apparent power in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_POWER_FACTOR DataType = 36 //Three phase power factor. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_REACTIVE_POWER DataType = 37 //Total reactive power in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_TRIGGER_REASON DataType = 38 //Trigger reason. It maps to Discrete. + DataType_DATA_TYPE_UNLOCKED_TIME DataType = 39 //Unlocked time. //Three phase active power. It maps to Discrete. + DataType_DATA_TYPE_VOLTAGE_SEQUENCE_NEGATIVE DataType = 40 //Voltage negative sequence in a three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_VOLTAGE_SEQUENCE_POSITIVE DataType = 41 //Voltage positive sequence in a three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_VOLTAGE_SEQUENCE_ZERO DataType = 42 //Voltage zero sequence in a three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_DISCRETE DataType = 43 //Discrete. It maps to Discrete. + DataType_DATA_TYPE_ANALOG DataType = 44 //Analog. It maps to Analog. + DataType_DATA_TYPE_NORMALIZED_RESIDUAL DataType = 45 //Normalized Residual. It maps to Analog. + DataType_DATA_TYPE_OBJECTIVE_FUNCTION DataType = 46 //Objective Function. It maps to Analog. + DataType_DATA_TYPE_SWITCH_POSITION_CHECK DataType = 47 //Switch Position Check. It maps to Boolean. + DataType_DATA_TYPE_TEMPERATURE_ALARM DataType = 48 //Temperature Alarm. It maps to Boolean. + DataType_DATA_TYPE_PRESSURE_ALARM DataType = 49 //Pressure Alarm. It maps to Boolean. + DataType_DATA_TYPE_DOOR_ALARM DataType = 50 //Door Alarm. It maps to Boolean. +) + +// Enum value maps for DataType. +var ( + DataType_name = map[int32]string{ + 0: "DATA_TYPE_UNSPECIFIED", + 1: "DATA_TYPE_ACTIVE_POWER", + 2: "DATA_TYPE_ANGLE", + 3: "DATA_TYPE_AUTOMATIC", + 4: "DATA_TYPE_BOOLEAN", + 5: "DATA_TYPE_CONFIG_CHANGE", + 6: "DATA_TYPE_CURRENT_SEQUENCE_NEGATIVE", + 7: "DATA_TYPE_CURRENT_SEQUENCE_POSITIVE", + 8: "DATA_TYPE_CURRENT_SEQUENCE_ZERO", + 9: "DATA_TYPE_DATA_ERROR", + 10: "DATA_TYPE_DATA_MODIFIED", + 11: "DATA_TYPE_DATA_SORTING", + 12: "DATA_TYPE_ENERGY", + 13: "DATA_TYPE_FREQUENCY", + 14: "DATA_TYPE_LINE_CURRENT", + 15: "DATA_TYPE_LINE_TO_LINE_VOLTAGE", + 16: "DATA_TYPE_LOCAL_OPERATION", + 17: "DATA_TYPE_OPERATION_COUNT", + 18: "DATA_TYPE_PACKET_LATENCY", + 19: "DATA_TYPE_PHASE_VOLTAGE", + 20: "DATA_TYPE_PHASOR_CURRENT", + 21: "DATA_TYPE_PHASOR_VOLTAGE", + 22: "DATA_TYPE_PMU_SYNC", + 23: "DATA_TYPE_PMU_TIME_QUALITY", + 24: "DATA_TYPE_PMU_TRIGGER_DETECTED", + 25: "DATA_TYPE_POWER", + 26: "DATA_TYPE_POWER_FACTOR", + 27: "DATA_TYPE_PRESSURE", + 28: "DATA_TYPE_RATE_OF_CHANGE_OF_FREQUENCY", + 29: "DATA_TYPE_REACTIVE_POWER", + 30: "DATA_TYPE_SWITCH_POSITION", + 31: "DATA_TYPE_TAP_POSITION", + 32: "DATA_TYPE_TEMPERATURE", + 33: "DATA_TYPE_THREE_PHASE_ACTIVE_POWER", + 34: "DATA_TYPE_THREE_PHASE_CURRENT", + 35: "DATA_TYPE_THREE_PHASE_POWER", + 36: "DATA_TYPE_THREE_PHASE_POWER_FACTOR", + 37: "DATA_TYPE_THREE_PHASE_REACTIVE_POWER", + 38: "DATA_TYPE_TRIGGER_REASON", + 39: "DATA_TYPE_UNLOCKED_TIME", + 40: "DATA_TYPE_VOLTAGE_SEQUENCE_NEGATIVE", + 41: "DATA_TYPE_VOLTAGE_SEQUENCE_POSITIVE", + 42: "DATA_TYPE_VOLTAGE_SEQUENCE_ZERO", + 43: "DATA_TYPE_DISCRETE", + 44: "DATA_TYPE_ANALOG", + 45: "DATA_TYPE_NORMALIZED_RESIDUAL", + 46: "DATA_TYPE_OBJECTIVE_FUNCTION", + 47: "DATA_TYPE_SWITCH_POSITION_CHECK", + 48: "DATA_TYPE_TEMPERATURE_ALARM", + 49: "DATA_TYPE_PRESSURE_ALARM", + 50: "DATA_TYPE_DOOR_ALARM", + } + DataType_value = map[string]int32{ + "DATA_TYPE_UNSPECIFIED": 0, + "DATA_TYPE_ACTIVE_POWER": 1, + "DATA_TYPE_ANGLE": 2, + "DATA_TYPE_AUTOMATIC": 3, + "DATA_TYPE_BOOLEAN": 4, + "DATA_TYPE_CONFIG_CHANGE": 5, + "DATA_TYPE_CURRENT_SEQUENCE_NEGATIVE": 6, + "DATA_TYPE_CURRENT_SEQUENCE_POSITIVE": 7, + "DATA_TYPE_CURRENT_SEQUENCE_ZERO": 8, + "DATA_TYPE_DATA_ERROR": 9, + "DATA_TYPE_DATA_MODIFIED": 10, + "DATA_TYPE_DATA_SORTING": 11, + "DATA_TYPE_ENERGY": 12, + "DATA_TYPE_FREQUENCY": 13, + "DATA_TYPE_LINE_CURRENT": 14, + "DATA_TYPE_LINE_TO_LINE_VOLTAGE": 15, + "DATA_TYPE_LOCAL_OPERATION": 16, + "DATA_TYPE_OPERATION_COUNT": 17, + "DATA_TYPE_PACKET_LATENCY": 18, + "DATA_TYPE_PHASE_VOLTAGE": 19, + "DATA_TYPE_PHASOR_CURRENT": 20, + "DATA_TYPE_PHASOR_VOLTAGE": 21, + "DATA_TYPE_PMU_SYNC": 22, + "DATA_TYPE_PMU_TIME_QUALITY": 23, + "DATA_TYPE_PMU_TRIGGER_DETECTED": 24, + "DATA_TYPE_POWER": 25, + "DATA_TYPE_POWER_FACTOR": 26, + "DATA_TYPE_PRESSURE": 27, + "DATA_TYPE_RATE_OF_CHANGE_OF_FREQUENCY": 28, + "DATA_TYPE_REACTIVE_POWER": 29, + "DATA_TYPE_SWITCH_POSITION": 30, + "DATA_TYPE_TAP_POSITION": 31, + "DATA_TYPE_TEMPERATURE": 32, + "DATA_TYPE_THREE_PHASE_ACTIVE_POWER": 33, + "DATA_TYPE_THREE_PHASE_CURRENT": 34, + "DATA_TYPE_THREE_PHASE_POWER": 35, + "DATA_TYPE_THREE_PHASE_POWER_FACTOR": 36, + "DATA_TYPE_THREE_PHASE_REACTIVE_POWER": 37, + "DATA_TYPE_TRIGGER_REASON": 38, + "DATA_TYPE_UNLOCKED_TIME": 39, + "DATA_TYPE_VOLTAGE_SEQUENCE_NEGATIVE": 40, + "DATA_TYPE_VOLTAGE_SEQUENCE_POSITIVE": 41, + "DATA_TYPE_VOLTAGE_SEQUENCE_ZERO": 42, + "DATA_TYPE_DISCRETE": 43, + "DATA_TYPE_ANALOG": 44, + "DATA_TYPE_NORMALIZED_RESIDUAL": 45, + "DATA_TYPE_OBJECTIVE_FUNCTION": 46, + "DATA_TYPE_SWITCH_POSITION_CHECK": 47, + "DATA_TYPE_TEMPERATURE_ALARM": 48, + "DATA_TYPE_PRESSURE_ALARM": 49, + "DATA_TYPE_DOOR_ALARM": 50, + } +) + +func (x DataType) Enum() *DataType { + p := new(DataType) + *p = x + return p +} + +func (x DataType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DataType) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_data_proto_enumTypes[0].Descriptor() +} + +func (DataType) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_data_proto_enumTypes[0] +} + +func (x DataType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DataType.Descriptor instead. +func (DataType) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_data_proto_rawDescGZIP(), []int{0} +} + +type Data struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. +} + +func (x *Data) Reset() { + *x = Data{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Data) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Data) ProtoMessage() {} + +func (x *Data) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Data.ProtoReflect.Descriptor instead. +func (*Data) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_data_proto_rawDescGZIP(), []int{0} +} + +func (x *Data) GetDataType() DataType { + if x != nil { + return x.DataType + } + return DataType_DATA_TYPE_UNSPECIFIED +} + +func (x *Data) GetMeasuredAt() int64 { + if x != nil { + return x.MeasuredAt + } + return 0 +} + +func (x *Data) GetValue() uint64 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +type DataSet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. +} + +func (x *DataSet) Reset() { + *x = DataSet{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataSet) ProtoMessage() {} + +func (x *DataSet) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataSet.ProtoReflect.Descriptor instead. +func (*DataSet) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_data_proto_rawDescGZIP(), []int{1} +} + +func (x *DataSet) GetProducerId() string { + if x != nil { + return x.ProducerId + } + return "" +} + +func (x *DataSet) GetData() map[string]*Data { + if x != nil { + return x.Data + } + return nil +} + +var File_zaphiro_grid_v1_data_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_data_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x22, 0x82, 0x01, + 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, 0x12, 0x36, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4e, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, + 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0xb6, 0x0c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, + 0x0a, 0x16, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x02, 0x12, + 0x17, 0x0a, 0x13, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x54, + 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x04, 0x12, + 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x47, 0x41, 0x54, + 0x49, 0x56, 0x45, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, + 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x07, 0x12, 0x23, + 0x0a, 0x1f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, + 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x5a, 0x45, 0x52, + 0x4f, 0x10, 0x08, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x09, 0x12, 0x1b, 0x0a, + 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x4f, 0x52, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x0c, 0x12, 0x17, 0x0a, 0x13, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x4e, 0x43, 0x59, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, + 0x0e, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, + 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, + 0x41, 0x47, 0x45, 0x10, 0x0f, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x10, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x10, + 0x12, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, + 0x48, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x10, 0x13, 0x12, 0x1c, + 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, + 0x4f, 0x52, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x14, 0x12, 0x1c, 0x0a, 0x18, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x4f, 0x52, + 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x10, 0x15, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4d, 0x55, 0x5f, 0x53, 0x59, 0x4e, 0x43, + 0x10, 0x16, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x50, 0x4d, 0x55, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, + 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x50, 0x4d, 0x55, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x54, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x10, 0x18, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x19, 0x12, 0x1a, 0x0a, 0x16, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x46, + 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x1a, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x53, 0x55, 0x52, 0x45, 0x10, 0x1b, 0x12, + 0x29, 0x0a, 0x25, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x54, + 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x46, + 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, + 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x50, 0x4f, 0x53, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x50, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x1f, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x45, 0x52, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x20, 0x12, 0x26, + 0x0a, 0x22, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, + 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x50, + 0x4f, 0x57, 0x45, 0x52, 0x10, 0x21, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x22, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, 0x41, + 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x23, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, + 0x10, 0x24, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x25, 0x12, 0x1c, 0x0a, 0x18, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, + 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, + 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x27, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x51, + 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x28, + 0x12, 0x27, 0x0a, 0x23, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, + 0x4c, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, + 0x4f, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x29, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, + 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x2a, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, + 0x52, 0x45, 0x54, 0x45, 0x10, 0x2b, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x2c, 0x12, 0x21, 0x0a, 0x1d, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, + 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x10, 0x2d, 0x12, + 0x20, 0x0a, 0x1c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x2e, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x48, 0x45, 0x43, 0x4b, 0x10, 0x2f, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x45, 0x52, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, + 0x41, 0x4c, 0x41, 0x52, 0x4d, 0x10, 0x30, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x4c, + 0x41, 0x52, 0x4d, 0x10, 0x31, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x4f, 0x52, 0x5f, 0x41, 0x4c, 0x41, 0x52, 0x4d, 0x10, 0x32, 0x42, + 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_data_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_data_proto_rawDescData = file_zaphiro_grid_v1_data_proto_rawDesc +) + +func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + }) + return file_zaphiro_grid_v1_data_proto_rawDescData +} + +var file_zaphiro_grid_v1_data_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_zaphiro_grid_v1_data_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_zaphiro_grid_v1_data_proto_goTypes = []interface{}{ + (DataType)(0), // 0: zaphiro.grid.v1.DataType + (*Data)(nil), // 1: zaphiro.grid.v1.Data + (*DataSet)(nil), // 2: zaphiro.grid.v1.DataSet + nil, // 3: zaphiro.grid.v1.DataSet.DataEntry +} +var file_zaphiro_grid_v1_data_proto_depIdxs = []int32{ + 0, // 0: zaphiro.grid.v1.Data.dataType:type_name -> zaphiro.grid.v1.DataType + 3, // 1: zaphiro.grid.v1.DataSet.data:type_name -> zaphiro.grid.v1.DataSet.DataEntry + 1, // 2: zaphiro.grid.v1.DataSet.DataEntry.value:type_name -> zaphiro.grid.v1.Data + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_data_proto_init() } +func file_zaphiro_grid_v1_data_proto_init() { + if File_zaphiro_grid_v1_data_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_data_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Data); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_data_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataSet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_data_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_data_proto_rawDesc, + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_data_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_data_proto_depIdxs, + EnumInfos: file_zaphiro_grid_v1_data_proto_enumTypes, + MessageInfos: file_zaphiro_grid_v1_data_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_data_proto = out.File + file_zaphiro_grid_v1_data_proto_rawDesc = nil + file_zaphiro_grid_v1_data_proto_goTypes = nil + file_zaphiro_grid_v1_data_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go new file mode 100644 index 0000000..3e405cb --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go @@ -0,0 +1,662 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/device_event.proto + +// +//Messages to support device event detection in the platform. Device events are sub classes of Events. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DeviceEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) +} + +func (x *DeviceEvent) Reset() { + *x = DeviceEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeviceEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeviceEvent) ProtoMessage() {} + +func (x *DeviceEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeviceEvent.ProtoReflect.Descriptor instead. +func (*DeviceEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{0} +} + +func (x *DeviceEvent) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *DeviceEvent) GetDeviceID() string { + if x != nil { + return x.DeviceID + } + return "" +} + +func (x *DeviceEvent) GetSubstationID() string { + if x != nil { + return x.SubstationID + } + return "" +} + +func (x *DeviceEvent) GetValue() float64 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *DeviceEvent) GetReferenceLimit() float64 { + if x != nil && x.ReferenceLimit != nil { + return *x.ReferenceLimit + } + return 0 +} + +func (x *DeviceEvent) GetCode() string { + if x != nil && x.Code != nil { + return *x.Code + } + return "" +} + +type CommunicationError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *CommunicationError) Reset() { + *x = CommunicationError{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunicationError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunicationError) ProtoMessage() {} + +func (x *CommunicationError) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunicationError.ProtoReflect.Descriptor instead. +func (*CommunicationError) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{1} +} + +func (x *CommunicationError) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type TimeQuality struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *TimeQuality) Reset() { + *x = TimeQuality{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TimeQuality) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TimeQuality) ProtoMessage() {} + +func (x *TimeQuality) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TimeQuality.ProtoReflect.Descriptor instead. +func (*TimeQuality) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{2} +} + +func (x *TimeQuality) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type SyncStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *SyncStatus) Reset() { + *x = SyncStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncStatus) ProtoMessage() {} + +func (x *SyncStatus) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncStatus.ProtoReflect.Descriptor instead. +func (*SyncStatus) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{3} +} + +func (x *SyncStatus) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type Power struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *Power) Reset() { + *x = Power{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Power) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Power) ProtoMessage() {} + +func (x *Power) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Power.ProtoReflect.Descriptor instead. +func (*Power) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{4} +} + +func (x *Power) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *Config) Reset() { + *x = Config{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Config) ProtoMessage() {} + +func (x *Config) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{5} +} + +func (x *Config) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type Trigger struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *Trigger) Reset() { + *x = Trigger{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Trigger) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Trigger) ProtoMessage() {} + +func (x *Trigger) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Trigger.ProtoReflect.Descriptor instead. +func (*Trigger) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{6} +} + +func (x *Trigger) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type DataError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *DataError) Reset() { + *x = DataError{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataError) ProtoMessage() {} + +func (x *DataError) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataError.ProtoReflect.Descriptor instead. +func (*DataError) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{7} +} + +func (x *DataError) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +var File_zaphiro_grid_v1_device_event_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_device_event_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, + 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, + 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x82, 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, + 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x32, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x41, 0x0a, 0x0b, 0x54, 0x69, 0x6d, 0x65, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x22, 0x40, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x3b, 0x0a, 0x05, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, + 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x3d, 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x3f, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x32, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_device_event_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_device_event_proto_rawDescData = file_zaphiro_grid_v1_device_event_proto_rawDesc +) + +func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + }) + return file_zaphiro_grid_v1_device_event_proto_rawDescData +} + +var file_zaphiro_grid_v1_device_event_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_zaphiro_grid_v1_device_event_proto_goTypes = []interface{}{ + (*DeviceEvent)(nil), // 0: zaphiro.grid.v1.DeviceEvent + (*CommunicationError)(nil), // 1: zaphiro.grid.v1.CommunicationError + (*TimeQuality)(nil), // 2: zaphiro.grid.v1.TimeQuality + (*SyncStatus)(nil), // 3: zaphiro.grid.v1.SyncStatus + (*Power)(nil), // 4: zaphiro.grid.v1.Power + (*Config)(nil), // 5: zaphiro.grid.v1.Config + (*Trigger)(nil), // 6: zaphiro.grid.v1.Trigger + (*DataError)(nil), // 7: zaphiro.grid.v1.DataError + (*Event)(nil), // 8: zaphiro.grid.v1.Event +} +var file_zaphiro_grid_v1_device_event_proto_depIdxs = []int32{ + 8, // 0: zaphiro.grid.v1.DeviceEvent.event:type_name -> zaphiro.grid.v1.Event + 0, // 1: zaphiro.grid.v1.CommunicationError.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 2: zaphiro.grid.v1.TimeQuality.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 3: zaphiro.grid.v1.SyncStatus.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 4: zaphiro.grid.v1.Power.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 5: zaphiro.grid.v1.Config.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 6: zaphiro.grid.v1.Trigger.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 7: zaphiro.grid.v1.DataError.event:type_name -> zaphiro.grid.v1.DeviceEvent + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_device_event_proto_init() } +func file_zaphiro_grid_v1_device_event_proto_init() { + if File_zaphiro_grid_v1_device_event_proto != nil { + return + } + file_zaphiro_grid_v1_event_proto_init() + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_device_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunicationError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TimeQuality); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Power); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Trigger); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_device_event_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_device_event_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_device_event_proto_depIdxs, + MessageInfos: file_zaphiro_grid_v1_device_event_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_device_event_proto = out.File + file_zaphiro_grid_v1_device_event_proto_rawDesc = nil + file_zaphiro_grid_v1_device_event_proto_goTypes = nil + file_zaphiro_grid_v1_device_event_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go new file mode 100644 index 0000000..da69596 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go @@ -0,0 +1,343 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/event.proto + +// +//Messages to support event detection in the platform. +//The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type EventStatus int32 + +const ( + EventStatus_EVENT_STATUS_UNSPECIFIED EventStatus = 0 //No status defined + EventStatus_EVENT_STATUS_STARTED EventStatus = 1 //Event started + EventStatus_EVENT_STATUS_IN_PROGRESS EventStatus = 2 //Event is still active + EventStatus_EVENT_STATUS_ENDED EventStatus = 3 //Event ended + EventStatus_EVENT_STATUS_UNKNOWN EventStatus = 4 //Information available don't allow us to know if the even is active or complete +) + +// Enum value maps for EventStatus. +var ( + EventStatus_name = map[int32]string{ + 0: "EVENT_STATUS_UNSPECIFIED", + 1: "EVENT_STATUS_STARTED", + 2: "EVENT_STATUS_IN_PROGRESS", + 3: "EVENT_STATUS_ENDED", + 4: "EVENT_STATUS_UNKNOWN", + } + EventStatus_value = map[string]int32{ + "EVENT_STATUS_UNSPECIFIED": 0, + "EVENT_STATUS_STARTED": 1, + "EVENT_STATUS_IN_PROGRESS": 2, + "EVENT_STATUS_ENDED": 3, + "EVENT_STATUS_UNKNOWN": 4, + } +) + +func (x EventStatus) Enum() *EventStatus { + p := new(EventStatus) + *p = x + return p +} + +func (x EventStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EventStatus) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_event_proto_enumTypes[0].Descriptor() +} + +func (EventStatus) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_event_proto_enumTypes[0] +} + +func (x EventStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EventStatus.Descriptor instead. +func (EventStatus) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_event_proto_rawDescGZIP(), []int{0} +} + +type EventSourceType int32 + +const ( + EventSourceType_EVENT_SOURCE_UNSPECIFIED EventSourceType = 0 //No source type defined + EventSourceType_EVENT_SOURCE_DEVICE EventSourceType = 1 //The source of the event was a device (e.g. PMU) + EventSourceType_EVENT_SOURCE_SERVICE EventSourceType = 2 //The source of the event was a service (e.g. state estimator) + EventSourceType_EVENT_SOURCE_EXTERNAL_SERVICE EventSourceType = 3 //The source of the event was a service external to SynchroGuard platform (e.g. SCADA) +) + +// Enum value maps for EventSourceType. +var ( + EventSourceType_name = map[int32]string{ + 0: "EVENT_SOURCE_UNSPECIFIED", + 1: "EVENT_SOURCE_DEVICE", + 2: "EVENT_SOURCE_SERVICE", + 3: "EVENT_SOURCE_EXTERNAL_SERVICE", + } + EventSourceType_value = map[string]int32{ + "EVENT_SOURCE_UNSPECIFIED": 0, + "EVENT_SOURCE_DEVICE": 1, + "EVENT_SOURCE_SERVICE": 2, + "EVENT_SOURCE_EXTERNAL_SERVICE": 3, + } +) + +func (x EventSourceType) Enum() *EventSourceType { + p := new(EventSourceType) + *p = x + return p +} + +func (x EventSourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EventSourceType) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_event_proto_enumTypes[1].Descriptor() +} + +func (EventSourceType) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_event_proto_enumTypes[1] +} + +func (x EventSourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EventSourceType.Descriptor instead. +func (EventSourceType) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_event_proto_rawDescGZIP(), []int{1} +} + +type Event struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. +} + +func (x *Event) Reset() { + *x = Event{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_event_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_event_proto_rawDescGZIP(), []int{0} +} + +func (x *Event) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Event) GetSourceId() string { + if x != nil { + return x.SourceId + } + return "" +} + +func (x *Event) GetSourceType() EventSourceType { + if x != nil { + return x.SourceType + } + return EventSourceType_EVENT_SOURCE_UNSPECIFIED +} + +func (x *Event) GetOccurredAt() int64 { + if x != nil { + return x.OccurredAt + } + return 0 +} + +func (x *Event) GetDetectedAt() int64 { + if x != nil && x.DetectedAt != nil { + return *x.DetectedAt + } + return 0 +} + +func (x *Event) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *Event) GetStatus() EventStatus { + if x != nil && x.Status != nil { + return *x.Status + } + return EventStatus_EVENT_STATUS_UNSPECIFIED +} + +var File_zaphiro_grid_v1_event_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_event_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x22, 0xa9, + 0x02, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, + 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x48, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x95, 0x01, 0x0a, 0x0b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, + 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x04, 0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, + 0x14, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, + 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_event_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_event_proto_rawDescData = file_zaphiro_grid_v1_event_proto_rawDesc +) + +func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + }) + return file_zaphiro_grid_v1_event_proto_rawDescData +} + +var file_zaphiro_grid_v1_event_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_zaphiro_grid_v1_event_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_zaphiro_grid_v1_event_proto_goTypes = []interface{}{ + (EventStatus)(0), // 0: zaphiro.grid.v1.EventStatus + (EventSourceType)(0), // 1: zaphiro.grid.v1.EventSourceType + (*Event)(nil), // 2: zaphiro.grid.v1.Event +} +var file_zaphiro_grid_v1_event_proto_depIdxs = []int32{ + 1, // 0: zaphiro.grid.v1.Event.sourceType:type_name -> zaphiro.grid.v1.EventSourceType + 0, // 1: zaphiro.grid.v1.Event.status:type_name -> zaphiro.grid.v1.EventStatus + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_event_proto_init() } +func file_zaphiro_grid_v1_event_proto_init() { + if File_zaphiro_grid_v1_event_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Event); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_event_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_event_proto_rawDesc, + NumEnums: 2, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_event_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_event_proto_depIdxs, + EnumInfos: file_zaphiro_grid_v1_event_proto_enumTypes, + MessageInfos: file_zaphiro_grid_v1_event_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_event_proto = out.File + file_zaphiro_grid_v1_event_proto_rawDesc = nil + file_zaphiro_grid_v1_event_proto_goTypes = nil + file_zaphiro_grid_v1_event_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go new file mode 100644 index 0000000..be9ed10 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go @@ -0,0 +1,821 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/fault.proto + +// +//Messages describing faults. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type PhaseConnectedFaultKind int32 + +const ( + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED PhaseConnectedFaultKind = 0 + // The fault connects the indicated phases to ground. The line to line fault impedance is not used and assumed infinite. The full ground impedance is connected between each phase specified in the fault and ground, but not between the phases. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND PhaseConnectedFaultKind = 1 + // The fault connects the specified phases together without a connection to ground. The ground impedance of this fault is ignored. The line to line impedance is connected between each of the phases specified in the fault. For example three times for a three phase fault, one time for a two phase fault. A single phase fault should not be specified. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE PhaseConnectedFaultKind = 2 + // The fault connects the indicated phases to ground and to each other. The line to line impedance is connected between each of the phases specified in the fault in a full mesh. For example three times for a three phase fault, one time for a two phase fault. A single phase fault should not be specified. The full ground impedance is connected between each phase specified in the fault and ground. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE_TO_GROUND PhaseConnectedFaultKind = 3 + // The fault is when the conductor path is broken between two terminals. Additional coexisting faults may be required if the broken conductor also causes connections to grounds or other lines or phases. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_OPEN PhaseConnectedFaultKind = 4 +) + +// Enum value maps for PhaseConnectedFaultKind. +var ( + PhaseConnectedFaultKind_name = map[int32]string{ + 0: "PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED", + 1: "PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND", + 2: "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE", + 3: "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE_TO_GROUND", + 4: "PHASE_CONNECTED_FAULT_KIND_LINE_OPEN", + } + PhaseConnectedFaultKind_value = map[string]int32{ + "PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED": 0, + "PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND": 1, + "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE": 2, + "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE_TO_GROUND": 3, + "PHASE_CONNECTED_FAULT_KIND_LINE_OPEN": 4, + } +) + +func (x PhaseConnectedFaultKind) Enum() *PhaseConnectedFaultKind { + p := new(PhaseConnectedFaultKind) + *p = x + return p +} + +func (x PhaseConnectedFaultKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PhaseConnectedFaultKind) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_fault_proto_enumTypes[0].Descriptor() +} + +func (PhaseConnectedFaultKind) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_fault_proto_enumTypes[0] +} + +func (x PhaseConnectedFaultKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PhaseConnectedFaultKind.Descriptor instead. +func (PhaseConnectedFaultKind) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{0} +} + +type PhaseCode int32 + +const ( + PhaseCode_PHASE_CODE_UNSPECIFIED PhaseCode = 0 //No phases specified. + PhaseCode_PHASE_CODE_A PhaseCode = 1 //Phase A. + PhaseCode_PHASE_CODE_B PhaseCode = 2 //Phase B. + PhaseCode_PHASE_CODE_C PhaseCode = 3 //Phase C. + PhaseCode_PHASE_CODE_N PhaseCode = 4 //Neutral phase. + PhaseCode_PHASE_CODE_AB PhaseCode = 5 //Phases A and B. + PhaseCode_PHASE_CODE_AC PhaseCode = 6 //Phases A and C. + PhaseCode_PHASE_CODE_BC PhaseCode = 7 //Phases B and C. + PhaseCode_PHASE_CODE_AN PhaseCode = 8 //Phases A and neutral. + PhaseCode_PHASE_CODE_BN PhaseCode = 9 //Phases B and neutral. + PhaseCode_PHASE_CODE_CN PhaseCode = 10 //Phases C and neutral. + PhaseCode_PHASE_CODE_ABC PhaseCode = 11 //Phases A, B, and C. + PhaseCode_PHASE_CODE_ABN PhaseCode = 12 //Phases A, B, and neutral. + PhaseCode_PHASE_CODE_ACN PhaseCode = 13 //Phases A, C and neutral. + PhaseCode_PHASE_CODE_BCN PhaseCode = 14 //Phases B, C, and neutral. + PhaseCode_PHASE_CODE_ABCN PhaseCode = 15 //Phases A, B, C, and N. + PhaseCode_PHASE_CODE_S1N PhaseCode = 16 //Secondary phase 1 and neutral. + PhaseCode_PHASE_CODE_S2N PhaseCode = 17 //Secondary phase 2 and neutral. + PhaseCode_PHASE_CODE_S12N PhaseCode = 18 //Secondary phases 1, 2, and neutral. + PhaseCode_PHASE_CODE_S1 PhaseCode = 19 //Secondary phase 1. + PhaseCode_PHASE_CODE_S2 PhaseCode = 20 //Secondary phase 2. + PhaseCode_PHASE_CODE_S12 PhaseCode = 21 //Secondary phase 1 and 2. + PhaseCode_PHASE_CODE_X PhaseCode = 22 //Unknown non-neutral phase. + PhaseCode_PHASE_CODE_XY PhaseCode = 23 //Two unknown non-neutral phases. + PhaseCode_PHASE_CODE_XN PhaseCode = 24 //Unknown non-neutral phase plus neutral. + PhaseCode_PHASE_CODE_XYN PhaseCode = 25 //Two unknown non-neutral phases plus neutral. +) + +// Enum value maps for PhaseCode. +var ( + PhaseCode_name = map[int32]string{ + 0: "PHASE_CODE_UNSPECIFIED", + 1: "PHASE_CODE_A", + 2: "PHASE_CODE_B", + 3: "PHASE_CODE_C", + 4: "PHASE_CODE_N", + 5: "PHASE_CODE_AB", + 6: "PHASE_CODE_AC", + 7: "PHASE_CODE_BC", + 8: "PHASE_CODE_AN", + 9: "PHASE_CODE_BN", + 10: "PHASE_CODE_CN", + 11: "PHASE_CODE_ABC", + 12: "PHASE_CODE_ABN", + 13: "PHASE_CODE_ACN", + 14: "PHASE_CODE_BCN", + 15: "PHASE_CODE_ABCN", + 16: "PHASE_CODE_S1N", + 17: "PHASE_CODE_S2N", + 18: "PHASE_CODE_S12N", + 19: "PHASE_CODE_S1", + 20: "PHASE_CODE_S2", + 21: "PHASE_CODE_S12", + 22: "PHASE_CODE_X", + 23: "PHASE_CODE_XY", + 24: "PHASE_CODE_XN", + 25: "PHASE_CODE_XYN", + } + PhaseCode_value = map[string]int32{ + "PHASE_CODE_UNSPECIFIED": 0, + "PHASE_CODE_A": 1, + "PHASE_CODE_B": 2, + "PHASE_CODE_C": 3, + "PHASE_CODE_N": 4, + "PHASE_CODE_AB": 5, + "PHASE_CODE_AC": 6, + "PHASE_CODE_BC": 7, + "PHASE_CODE_AN": 8, + "PHASE_CODE_BN": 9, + "PHASE_CODE_CN": 10, + "PHASE_CODE_ABC": 11, + "PHASE_CODE_ABN": 12, + "PHASE_CODE_ACN": 13, + "PHASE_CODE_BCN": 14, + "PHASE_CODE_ABCN": 15, + "PHASE_CODE_S1N": 16, + "PHASE_CODE_S2N": 17, + "PHASE_CODE_S12N": 18, + "PHASE_CODE_S1": 19, + "PHASE_CODE_S2": 20, + "PHASE_CODE_S12": 21, + "PHASE_CODE_X": 22, + "PHASE_CODE_XY": 23, + "PHASE_CODE_XN": 24, + "PHASE_CODE_XYN": 25, + } +) + +func (x PhaseCode) Enum() *PhaseCode { + p := new(PhaseCode) + *p = x + return p +} + +func (x PhaseCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PhaseCode) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_fault_proto_enumTypes[1].Descriptor() +} + +func (PhaseCode) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_fault_proto_enumTypes[1] +} + +func (x PhaseCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PhaseCode.Descriptor instead. +func (PhaseCode) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{1} +} + +type FaultEventType int32 + +const ( + FaultEventType_FAULT_EVENT_TYPE_UNSPECIFIED FaultEventType = 0 //No status defined + FaultEventType_FAULT_EVENT_TYPE_STARTED FaultEventType = 1 //Fault started + FaultEventType_FAULT_EVENT_TYPE_LOCATED FaultEventType = 2 //Fault located + FaultEventType_FAULT_EVENT_TYPE_ENDED FaultEventType = 3 //Fault ended + FaultEventType_FAULT_EVENT_TYPE_UNKNOWN FaultEventType = 4 //Information available don't allow us to know if the Fault is active or complete +) + +// Enum value maps for FaultEventType. +var ( + FaultEventType_name = map[int32]string{ + 0: "FAULT_EVENT_TYPE_UNSPECIFIED", + 1: "FAULT_EVENT_TYPE_STARTED", + 2: "FAULT_EVENT_TYPE_LOCATED", + 3: "FAULT_EVENT_TYPE_ENDED", + 4: "FAULT_EVENT_TYPE_UNKNOWN", + } + FaultEventType_value = map[string]int32{ + "FAULT_EVENT_TYPE_UNSPECIFIED": 0, + "FAULT_EVENT_TYPE_STARTED": 1, + "FAULT_EVENT_TYPE_LOCATED": 2, + "FAULT_EVENT_TYPE_ENDED": 3, + "FAULT_EVENT_TYPE_UNKNOWN": 4, + } +) + +func (x FaultEventType) Enum() *FaultEventType { + p := new(FaultEventType) + *p = x + return p +} + +func (x FaultEventType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FaultEventType) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_fault_proto_enumTypes[2].Descriptor() +} + +func (FaultEventType) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_fault_proto_enumTypes[2] +} + +func (x FaultEventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FaultEventType.Descriptor instead. +func (FaultEventType) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{2} +} + +type Fault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) +} + +func (x *Fault) Reset() { + *x = Fault{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Fault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Fault) ProtoMessage() {} + +func (x *Fault) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Fault.ProtoReflect.Descriptor instead. +func (*Fault) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{0} +} + +func (x *Fault) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Fault) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +func (x *Fault) GetKind() PhaseConnectedFaultKind { + if x != nil { + return x.Kind + } + return PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED +} + +func (x *Fault) GetPhases() PhaseCode { + if x != nil { + return x.Phases + } + return PhaseCode_PHASE_CODE_UNSPECIFIED +} + +func (x *Fault) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *Fault) GetFaultEventType() FaultEventType { + if x != nil { + return x.FaultEventType + } + return FaultEventType_FAULT_EVENT_TYPE_UNSPECIFIED +} + +func (x *Fault) GetFaultyEquipmentId() string { + if x != nil && x.FaultyEquipmentId != nil { + return *x.FaultyEquipmentId + } + return "" +} + +func (x *Fault) GetFaultCurrent() float32 { + if x != nil && x.FaultCurrent != nil { + return *x.FaultCurrent + } + return 0 +} + +func (x *Fault) GetImpactedEquipmentIds() []string { + if x != nil { + return x.ImpactedEquipmentIds + } + return nil +} + +func (x *Fault) GetUsedMeasurementIds() []*FaultMeasurement { + if x != nil { + return x.UsedMeasurementIds + } + return nil +} + +func (x *Fault) GetMeasurementTimestamp() int64 { + if x != nil && x.MeasurementTimestamp != nil { + return *x.MeasurementTimestamp + } + return 0 +} + +func (x *Fault) GetLocationProbability() float32 { + if x != nil && x.LocationProbability != nil { + return *x.LocationProbability + } + return 0 +} + +type LineFault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. +} + +func (x *LineFault) Reset() { + *x = LineFault{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LineFault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LineFault) ProtoMessage() {} + +func (x *LineFault) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LineFault.ProtoReflect.Descriptor instead. +func (*LineFault) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{1} +} + +func (x *LineFault) GetFault() *Fault { + if x != nil { + return x.Fault + } + return nil +} + +func (x *LineFault) GetLengthFromTerminal1() float32 { + if x != nil && x.LengthFromTerminal1 != nil { + return *x.LengthFromTerminal1 + } + return 0 +} + +func (x *LineFault) GetLengthUncertainty() float32 { + if x != nil && x.LengthUncertainty != nil { + return *x.LengthUncertainty + } + return 0 +} + +type EquipmentFault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. +} + +func (x *EquipmentFault) Reset() { + *x = EquipmentFault{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EquipmentFault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EquipmentFault) ProtoMessage() {} + +func (x *EquipmentFault) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EquipmentFault.ProtoReflect.Descriptor instead. +func (*EquipmentFault) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{2} +} + +func (x *EquipmentFault) GetFault() *Fault { + if x != nil { + return x.Fault + } + return nil +} + +func (x *EquipmentFault) GetTerminalID() string { + if x != nil && x.TerminalID != nil { + return *x.TerminalID + } + return "" +} + +type FaultMeasurement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PositiveSign bool `protobuf:"varint,1,opt,name=positiveSign,proto3" json:"positiveSign,omitempty"` // The sign to be used for the measurement (`true` positive, `false` negative). + MeasurementID string `protobuf:"bytes,2,opt,name=measurementID,proto3" json:"measurementID,omitempty"` // The ID of a measurement used to locate the fault. +} + +func (x *FaultMeasurement) Reset() { + *x = FaultMeasurement{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FaultMeasurement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FaultMeasurement) ProtoMessage() {} + +func (x *FaultMeasurement) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FaultMeasurement.ProtoReflect.Descriptor instead. +func (*FaultMeasurement) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{3} +} + +func (x *FaultMeasurement) GetPositiveSign() bool { + if x != nil { + return x.PositiveSign + } + return false +} + +func (x *FaultMeasurement) GetMeasurementID() string { + if x != nil { + return x.MeasurementID + } + return "" +} + +var File_zaphiro_grid_v1_fault_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_fault_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x22, 0xd2, + 0x05, 0x0a, 0x05, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, + 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, + 0x75, 0x6c, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, + 0x06, 0x70, 0x68, 0x61, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x70, 0x68, 0x61, 0x73, 0x65, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x47, 0x0a, 0x0e, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x11, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x79, 0x45, 0x71, 0x75, + 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x02, 0x52, 0x0c, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, + 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x14, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x45, 0x71, 0x75, 0x69, + 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x64, + 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, + 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x61, 0x73, + 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x12, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x6d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x14, 0x6d, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x04, 0x52, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x22, 0xd1, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x6e, 0x65, 0x46, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, + 0x35, 0x0a, 0x13, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x13, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x61, 0x6c, 0x31, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x11, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x55, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x01, 0x52, 0x11, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x55, 0x6e, 0x63, 0x65, 0x72, + 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, + 0x31, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x55, 0x6e, 0x63, 0x65, + 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x22, 0x72, 0x0a, 0x0e, 0x45, 0x71, 0x75, 0x69, 0x70, + 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, + 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x44, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x44, 0x22, 0x5c, 0x0a, 0x10, 0x46, + 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, + 0x69, 0x67, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x65, 0x61, 0x73, + 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x2a, 0x82, 0x02, 0x0a, 0x17, 0x50, 0x68, + 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, 0x75, 0x6c, + 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, + 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, + 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4c, + 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x35, 0x0a, + 0x31, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, + 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x45, + 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x4e, 0x44, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x04, 0x2a, 0x89, + 0x04, 0x0a, 0x09, 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53, + 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x10, 0x03, 0x12, 0x10, + 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x10, 0x04, + 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, + 0x42, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x41, 0x43, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x43, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, + 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4e, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4e, 0x10, 0x09, 0x12, + 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4e, + 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x41, 0x42, 0x43, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x42, 0x4e, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x43, 0x4e, 0x10, 0x0d, 0x12, 0x12, + 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x43, 0x4e, + 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x41, 0x42, 0x43, 0x4e, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x31, 0x4e, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x50, + 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x32, 0x4e, 0x10, 0x11, 0x12, + 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x31, + 0x32, 0x4e, 0x10, 0x12, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x53, 0x31, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x32, 0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x31, 0x32, 0x10, 0x15, 0x12, 0x10, + 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x10, 0x16, + 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, + 0x59, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x58, 0x4e, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x59, 0x4e, 0x10, 0x19, 0x2a, 0xa8, 0x01, 0x0a, 0x0e, 0x46, + 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x1c, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, + 0x18, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x46, + 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x04, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_fault_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_fault_proto_rawDescData = file_zaphiro_grid_v1_fault_proto_rawDesc +) + +func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + }) + return file_zaphiro_grid_v1_fault_proto_rawDescData +} + +var file_zaphiro_grid_v1_fault_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_zaphiro_grid_v1_fault_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_zaphiro_grid_v1_fault_proto_goTypes = []interface{}{ + (PhaseConnectedFaultKind)(0), // 0: zaphiro.grid.v1.PhaseConnectedFaultKind + (PhaseCode)(0), // 1: zaphiro.grid.v1.PhaseCode + (FaultEventType)(0), // 2: zaphiro.grid.v1.FaultEventType + (*Fault)(nil), // 3: zaphiro.grid.v1.Fault + (*LineFault)(nil), // 4: zaphiro.grid.v1.LineFault + (*EquipmentFault)(nil), // 5: zaphiro.grid.v1.EquipmentFault + (*FaultMeasurement)(nil), // 6: zaphiro.grid.v1.FaultMeasurement +} +var file_zaphiro_grid_v1_fault_proto_depIdxs = []int32{ + 0, // 0: zaphiro.grid.v1.Fault.kind:type_name -> zaphiro.grid.v1.PhaseConnectedFaultKind + 1, // 1: zaphiro.grid.v1.Fault.phases:type_name -> zaphiro.grid.v1.PhaseCode + 2, // 2: zaphiro.grid.v1.Fault.faultEventType:type_name -> zaphiro.grid.v1.FaultEventType + 6, // 3: zaphiro.grid.v1.Fault.usedMeasurementIds:type_name -> zaphiro.grid.v1.FaultMeasurement + 3, // 4: zaphiro.grid.v1.LineFault.fault:type_name -> zaphiro.grid.v1.Fault + 3, // 5: zaphiro.grid.v1.EquipmentFault.fault:type_name -> zaphiro.grid.v1.Fault + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_fault_proto_init() } +func file_zaphiro_grid_v1_fault_proto_init() { + if File_zaphiro_grid_v1_fault_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_fault_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Fault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LineFault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EquipmentFault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FaultMeasurement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_zaphiro_grid_v1_fault_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_zaphiro_grid_v1_fault_proto_msgTypes[2].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_fault_proto_rawDesc, + NumEnums: 3, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_fault_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_fault_proto_depIdxs, + EnumInfos: file_zaphiro_grid_v1_fault_proto_enumTypes, + MessageInfos: file_zaphiro_grid_v1_fault_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_fault_proto = out.File + file_zaphiro_grid_v1_fault_proto_rawDesc = nil + file_zaphiro_grid_v1_fault_proto_goTypes = nil + file_zaphiro_grid_v1_fault_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go new file mode 100644 index 0000000..2da6e2a --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go @@ -0,0 +1,1272 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/grid_event.proto + +// +//Messages to support grid event detection in the platform. Grid events are sub classes of Events. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GridEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. +} + +func (x *GridEvent) Reset() { + *x = GridEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GridEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GridEvent) ProtoMessage() {} + +func (x *GridEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GridEvent.ProtoReflect.Descriptor instead. +func (*GridEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{0} +} + +func (x *GridEvent) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *GridEvent) GetComponentID() string { + if x != nil { + return x.ComponentID + } + return "" +} + +func (x *GridEvent) GetSubstationID() string { + if x != nil && x.SubstationID != nil { + return *x.SubstationID + } + return "" +} + +func (x *GridEvent) GetValue() float64 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *GridEvent) GetReferenceLimit() float64 { + if x != nil { + return x.ReferenceLimit + } + return 0 +} + +func (x *GridEvent) GetProbability() float64 { + if x != nil && x.Probability != nil { + return *x.Probability + } + return 0 +} + +type VoltageEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured +} + +func (x *VoltageEvent) Reset() { + *x = VoltageEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageEvent) ProtoMessage() {} + +func (x *VoltageEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageEvent.ProtoReflect.Descriptor instead. +func (*VoltageEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{1} +} + +func (x *VoltageEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +func (x *VoltageEvent) GetPhaseCode() PhaseCode { + if x != nil && x.PhaseCode != nil { + return *x.PhaseCode + } + return PhaseCode_PHASE_CODE_UNSPECIFIED +} + +type CurrentEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message +} + +func (x *CurrentEvent) Reset() { + *x = CurrentEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CurrentEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CurrentEvent) ProtoMessage() {} + +func (x *CurrentEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CurrentEvent.ProtoReflect.Descriptor instead. +func (*CurrentEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{2} +} + +func (x *CurrentEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +type PhaseEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message +} + +func (x *PhaseEvent) Reset() { + *x = PhaseEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PhaseEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PhaseEvent) ProtoMessage() {} + +func (x *PhaseEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PhaseEvent.ProtoReflect.Descriptor instead. +func (*PhaseEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{3} +} + +func (x *PhaseEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +type FrequencyEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message +} + +func (x *FrequencyEvent) Reset() { + *x = FrequencyEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FrequencyEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrequencyEvent) ProtoMessage() {} + +func (x *FrequencyEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrequencyEvent.ProtoReflect.Descriptor instead. +func (*FrequencyEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{4} +} + +func (x *FrequencyEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +type LineCongestion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *CurrentEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base current grid event message +} + +func (x *LineCongestion) Reset() { + *x = LineCongestion{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LineCongestion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LineCongestion) ProtoMessage() {} + +func (x *LineCongestion) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LineCongestion.ProtoReflect.Descriptor instead. +func (*LineCongestion) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{5} +} + +func (x *LineCongestion) GetEvent() *CurrentEvent { + if x != nil { + return x.Event + } + return nil +} + +type TransformerCongestion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *CurrentEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base current grid event message +} + +func (x *TransformerCongestion) Reset() { + *x = TransformerCongestion{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransformerCongestion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformerCongestion) ProtoMessage() {} + +func (x *TransformerCongestion) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformerCongestion.ProtoReflect.Descriptor instead. +func (*TransformerCongestion) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{6} +} + +func (x *TransformerCongestion) GetEvent() *CurrentEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageUnbalance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageUnbalance) Reset() { + *x = VoltageUnbalance{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageUnbalance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageUnbalance) ProtoMessage() {} + +func (x *VoltageUnbalance) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageUnbalance.ProtoReflect.Descriptor instead. +func (*VoltageUnbalance) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{7} +} + +func (x *VoltageUnbalance) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageDip struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageDip) Reset() { + *x = VoltageDip{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageDip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageDip) ProtoMessage() {} + +func (x *VoltageDip) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageDip.ProtoReflect.Descriptor instead. +func (*VoltageDip) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{8} +} + +func (x *VoltageDip) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageInterruption struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageInterruption) Reset() { + *x = VoltageInterruption{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageInterruption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageInterruption) ProtoMessage() {} + +func (x *VoltageInterruption) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageInterruption.ProtoReflect.Descriptor instead. +func (*VoltageInterruption) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{9} +} + +func (x *VoltageInterruption) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageSwell struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageSwell) Reset() { + *x = VoltageSwell{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageSwell) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageSwell) ProtoMessage() {} + +func (x *VoltageSwell) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageSwell.ProtoReflect.Descriptor instead. +func (*VoltageSwell) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{10} +} + +func (x *VoltageSwell) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageLimit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageLimit) Reset() { + *x = VoltageLimit{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageLimit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageLimit) ProtoMessage() {} + +func (x *VoltageLimit) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageLimit.ProtoReflect.Descriptor instead. +func (*VoltageLimit) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{11} +} + +func (x *VoltageLimit) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageRapidChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageRapidChange) Reset() { + *x = VoltageRapidChange{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageRapidChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageRapidChange) ProtoMessage() {} + +func (x *VoltageRapidChange) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageRapidChange.ProtoReflect.Descriptor instead. +func (*VoltageRapidChange) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{12} +} + +func (x *VoltageRapidChange) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type OverFrequency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *FrequencyEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base frequency grid event message +} + +func (x *OverFrequency) Reset() { + *x = OverFrequency{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OverFrequency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OverFrequency) ProtoMessage() {} + +func (x *OverFrequency) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OverFrequency.ProtoReflect.Descriptor instead. +func (*OverFrequency) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{13} +} + +func (x *OverFrequency) GetEvent() *FrequencyEvent { + if x != nil { + return x.Event + } + return nil +} + +type UnderFrequency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *FrequencyEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base frequency grid event message +} + +func (x *UnderFrequency) Reset() { + *x = UnderFrequency{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnderFrequency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnderFrequency) ProtoMessage() {} + +func (x *UnderFrequency) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnderFrequency.ProtoReflect.Descriptor instead. +func (*UnderFrequency) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{14} +} + +func (x *UnderFrequency) GetEvent() *FrequencyEvent { + if x != nil { + return x.Event + } + return nil +} + +type SteadyOscillation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *PhaseEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base phase grid event message +} + +func (x *SteadyOscillation) Reset() { + *x = SteadyOscillation{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SteadyOscillation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SteadyOscillation) ProtoMessage() {} + +func (x *SteadyOscillation) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SteadyOscillation.ProtoReflect.Descriptor instead. +func (*SteadyOscillation) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{15} +} + +func (x *SteadyOscillation) GetEvent() *PhaseEvent { + if x != nil { + return x.Event + } + return nil +} + +type TransientOscillation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *PhaseEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base phase grid event message +} + +func (x *TransientOscillation) Reset() { + *x = TransientOscillation{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransientOscillation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransientOscillation) ProtoMessage() {} + +func (x *TransientOscillation) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransientOscillation.ProtoReflect.Descriptor instead. +func (*TransientOscillation) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{16} +} + +func (x *TransientOscillation) GetEvent() *PhaseEvent { + if x != nil { + return x.Event + } + return nil +} + +var File_zaphiro_grid_v1_grid_event_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_grid_event_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0f, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, + 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x02, + 0x0a, 0x09, 0x47, 0x72, 0x69, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, + 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x27, 0x0a, 0x0c, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, + 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x0c, 0x56, + 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, + 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, + 0x09, 0x70, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, + 0x70, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x40, 0x0a, 0x0c, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, 0x68, + 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0x0a, 0x0a, + 0x50, 0x68, 0x61, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, 0x68, + 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x42, 0x0a, 0x0e, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, + 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x72, 0x69, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x45, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x4c, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x10, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, + 0x55, 0x6e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x74, 0x61, + 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x41, + 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69, 0x70, 0x12, 0x33, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, + 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x4a, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, + 0x0c, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x53, 0x77, 0x65, 0x6c, 0x6c, 0x12, 0x33, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x49, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x61, 0x70, 0x69, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x33, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x0d, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x0e, 0x55, 0x6e, + 0x64, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x35, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x11, 0x53, 0x74, 0x65, 0x61, 0x64, 0x79, 0x4f, 0x73, 0x63, + 0x69, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x49, 0x0a, 0x14, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x73, 0x63, 0x69, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, + 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_grid_event_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_grid_event_proto_rawDescData = file_zaphiro_grid_v1_grid_event_proto_rawDesc +) + +func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + }) + return file_zaphiro_grid_v1_grid_event_proto_rawDescData +} + +var file_zaphiro_grid_v1_grid_event_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_zaphiro_grid_v1_grid_event_proto_goTypes = []interface{}{ + (*GridEvent)(nil), // 0: zaphiro.grid.v1.GridEvent + (*VoltageEvent)(nil), // 1: zaphiro.grid.v1.VoltageEvent + (*CurrentEvent)(nil), // 2: zaphiro.grid.v1.CurrentEvent + (*PhaseEvent)(nil), // 3: zaphiro.grid.v1.PhaseEvent + (*FrequencyEvent)(nil), // 4: zaphiro.grid.v1.FrequencyEvent + (*LineCongestion)(nil), // 5: zaphiro.grid.v1.LineCongestion + (*TransformerCongestion)(nil), // 6: zaphiro.grid.v1.TransformerCongestion + (*VoltageUnbalance)(nil), // 7: zaphiro.grid.v1.VoltageUnbalance + (*VoltageDip)(nil), // 8: zaphiro.grid.v1.VoltageDip + (*VoltageInterruption)(nil), // 9: zaphiro.grid.v1.VoltageInterruption + (*VoltageSwell)(nil), // 10: zaphiro.grid.v1.VoltageSwell + (*VoltageLimit)(nil), // 11: zaphiro.grid.v1.VoltageLimit + (*VoltageRapidChange)(nil), // 12: zaphiro.grid.v1.VoltageRapidChange + (*OverFrequency)(nil), // 13: zaphiro.grid.v1.OverFrequency + (*UnderFrequency)(nil), // 14: zaphiro.grid.v1.UnderFrequency + (*SteadyOscillation)(nil), // 15: zaphiro.grid.v1.SteadyOscillation + (*TransientOscillation)(nil), // 16: zaphiro.grid.v1.TransientOscillation + (*Event)(nil), // 17: zaphiro.grid.v1.Event + (PhaseCode)(0), // 18: zaphiro.grid.v1.PhaseCode +} +var file_zaphiro_grid_v1_grid_event_proto_depIdxs = []int32{ + 17, // 0: zaphiro.grid.v1.GridEvent.event:type_name -> zaphiro.grid.v1.Event + 0, // 1: zaphiro.grid.v1.VoltageEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 18, // 2: zaphiro.grid.v1.VoltageEvent.phaseCode:type_name -> zaphiro.grid.v1.PhaseCode + 0, // 3: zaphiro.grid.v1.CurrentEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 0, // 4: zaphiro.grid.v1.PhaseEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 0, // 5: zaphiro.grid.v1.FrequencyEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 2, // 6: zaphiro.grid.v1.LineCongestion.event:type_name -> zaphiro.grid.v1.CurrentEvent + 2, // 7: zaphiro.grid.v1.TransformerCongestion.event:type_name -> zaphiro.grid.v1.CurrentEvent + 1, // 8: zaphiro.grid.v1.VoltageUnbalance.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 9: zaphiro.grid.v1.VoltageDip.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 10: zaphiro.grid.v1.VoltageInterruption.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 11: zaphiro.grid.v1.VoltageSwell.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 12: zaphiro.grid.v1.VoltageLimit.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 13: zaphiro.grid.v1.VoltageRapidChange.event:type_name -> zaphiro.grid.v1.VoltageEvent + 4, // 14: zaphiro.grid.v1.OverFrequency.event:type_name -> zaphiro.grid.v1.FrequencyEvent + 4, // 15: zaphiro.grid.v1.UnderFrequency.event:type_name -> zaphiro.grid.v1.FrequencyEvent + 3, // 16: zaphiro.grid.v1.SteadyOscillation.event:type_name -> zaphiro.grid.v1.PhaseEvent + 3, // 17: zaphiro.grid.v1.TransientOscillation.event:type_name -> zaphiro.grid.v1.PhaseEvent + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_grid_event_proto_init() } +func file_zaphiro_grid_v1_grid_event_proto_init() { + if File_zaphiro_grid_v1_grid_event_proto != nil { + return + } + file_zaphiro_grid_v1_event_proto_init() + file_zaphiro_grid_v1_fault_proto_init() + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_grid_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GridEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrentEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PhaseEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FrequencyEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LineCongestion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransformerCongestion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageUnbalance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageDip); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageInterruption); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageSwell); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageLimit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageRapidChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OverFrequency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnderFrequency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SteadyOscillation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransientOscillation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_zaphiro_grid_v1_grid_event_proto_msgTypes[1].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_grid_event_proto_rawDesc, + NumEnums: 0, + NumMessages: 17, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_grid_event_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_grid_event_proto_depIdxs, + MessageInfos: file_zaphiro_grid_v1_grid_event_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_grid_event_proto = out.File + file_zaphiro_grid_v1_grid_event_proto_rawDesc = nil + file_zaphiro_grid_v1_grid_event_proto_goTypes = nil + file_zaphiro_grid_v1_grid_event_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go new file mode 100644 index 0000000..130f1a1 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go @@ -0,0 +1,547 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/topology.proto + +// +//Messages to support topology data exchange in the platform. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Topology struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. +} + +func (x *Topology) Reset() { + *x = Topology{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Topology) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topology) ProtoMessage() {} + +func (x *Topology) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topology.ProtoReflect.Descriptor instead. +func (*Topology) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{0} +} + +func (x *Topology) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *Topology) GetTp() []byte { + if x != nil { + return x.Tp + } + return nil +} + +// A topology Node information. +// To be used in ComputedTopology message. +type TopologicalNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. +} + +func (x *TopologicalNode) Reset() { + *x = TopologicalNode{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TopologicalNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TopologicalNode) ProtoMessage() {} + +func (x *TopologicalNode) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TopologicalNode.ProtoReflect.Descriptor instead. +func (*TopologicalNode) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{1} +} + +func (x *TopologicalNode) GetTerminalIds() []string { + if x != nil { + return x.TerminalIds + } + return nil +} + +func (x *TopologicalNode) GetConnectivityNodeIds() []string { + if x != nil { + return x.ConnectivityNodeIds + } + return nil +} + +func (x *TopologicalNode) GetBranchIds() []string { + if x != nil { + return x.BranchIds + } + return nil +} + +func (x *TopologicalNode) GetConnectivityNodeContainerId() string { + if x != nil { + return x.ConnectivityNodeContainerId + } + return "" +} + +func (x *TopologicalNode) GetBaseVoltageId() string { + if x != nil { + return x.BaseVoltageId + } + return "" +} + +func (x *TopologicalNode) GetBaseVoltage() float64 { + if x != nil { + return x.BaseVoltage + } + return 0 +} + +// A topology Island information. +// To be used in ComputedTopology message. +type TopologicalIsland struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. +} + +func (x *TopologicalIsland) Reset() { + *x = TopologicalIsland{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TopologicalIsland) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TopologicalIsland) ProtoMessage() {} + +func (x *TopologicalIsland) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TopologicalIsland.ProtoReflect.Descriptor instead. +func (*TopologicalIsland) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{2} +} + +func (x *TopologicalIsland) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TopologicalIsland) GetTopologicalNodes() map[string]*TopologicalNode { + if x != nil { + return x.TopologicalNodes + } + return nil +} + +// A wrapper in order to use an array in the map in TopologicalIsland. +// It represents the connections between the TopologicalNodes in the TopologicalIsland. +type BranchConnection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TopologicalNodeIds []string `protobuf:"bytes,1,rep,name=TopologicalNodeIds,proto3" json:"TopologicalNodeIds,omitempty"` // The list of TopologicalNode ids connected to the Branch. +} + +func (x *BranchConnection) Reset() { + *x = BranchConnection{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BranchConnection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BranchConnection) ProtoMessage() {} + +func (x *BranchConnection) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BranchConnection.ProtoReflect.Descriptor instead. +func (*BranchConnection) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{3} +} + +func (x *BranchConnection) GetTopologicalNodeIds() []string { + if x != nil { + return x.TopologicalNodeIds + } + return nil +} + +// A processed topology information. +// Headers used in rabbitMQ: +// `id` (string): id of the `Topology` +// `type` (string): always `ComputedTopology` +// `producerId` (string): the id of the producer (e.g. a PMU) linked to the dataset. +// `timestampId` (int64): related measurement Unix msec timestamp (if any) +// `subnetworkId` (string): the sub network id for which the topology was computed +type ComputedTopology struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. +} + +func (x *ComputedTopology) Reset() { + *x = ComputedTopology{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ComputedTopology) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ComputedTopology) ProtoMessage() {} + +func (x *ComputedTopology) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ComputedTopology.ProtoReflect.Descriptor instead. +func (*ComputedTopology) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{4} +} + +func (x *ComputedTopology) GetEqId() string { + if x != nil { + return x.EqId + } + return "" +} + +func (x *ComputedTopology) GetTopologicalIslands() map[string]*TopologicalIsland { + if x != nil { + return x.TopologicalIslands + } + return nil +} + +func (x *ComputedTopology) GetBranchConnections() map[string]*BranchConnection { + if x != nil { + return x.BranchConnections + } + return nil +} + +var File_zaphiro_grid_v1_topology_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_topology_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0f, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x22, 0x38, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x70, 0x22, 0x8d, 0x02, 0x0a, 0x0f, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x64, + 0x73, 0x12, 0x30, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x64, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x49, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x49, 0x64, + 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x73, 0x65, 0x56, 0x6f, 0x6c, 0x74, 0x61, + 0x67, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x61, 0x73, 0x65, + 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x73, + 0x65, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, + 0x42, 0x61, 0x73, 0x65, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x11, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x64, 0x0a, 0x10, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x2e, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, + 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x1a, 0x65, 0x0a, 0x15, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, + 0x0a, 0x10, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, + 0x64, 0x73, 0x22, 0xcd, 0x03, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x54, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x71, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x71, 0x49, 0x64, 0x12, 0x69, 0x0a, 0x12, 0x74, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x12, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, + 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x66, 0x0a, 0x11, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x42, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x69, + 0x0a, 0x17, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, + 0x61, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x7a, 0x61, 0x70, + 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, 0x16, 0x42, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, + 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_topology_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_topology_proto_rawDescData = file_zaphiro_grid_v1_topology_proto_rawDesc +) + +func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + }) + return file_zaphiro_grid_v1_topology_proto_rawDescData +} + +var file_zaphiro_grid_v1_topology_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_zaphiro_grid_v1_topology_proto_goTypes = []interface{}{ + (*Topology)(nil), // 0: zaphiro.grid.v1.Topology + (*TopologicalNode)(nil), // 1: zaphiro.grid.v1.TopologicalNode + (*TopologicalIsland)(nil), // 2: zaphiro.grid.v1.TopologicalIsland + (*BranchConnection)(nil), // 3: zaphiro.grid.v1.BranchConnection + (*ComputedTopology)(nil), // 4: zaphiro.grid.v1.ComputedTopology + nil, // 5: zaphiro.grid.v1.TopologicalIsland.TopologicalNodesEntry + nil, // 6: zaphiro.grid.v1.ComputedTopology.TopologicalIslandsEntry + nil, // 7: zaphiro.grid.v1.ComputedTopology.BranchConnectionsEntry +} +var file_zaphiro_grid_v1_topology_proto_depIdxs = []int32{ + 5, // 0: zaphiro.grid.v1.TopologicalIsland.TopologicalNodes:type_name -> zaphiro.grid.v1.TopologicalIsland.TopologicalNodesEntry + 6, // 1: zaphiro.grid.v1.ComputedTopology.topologicalIslands:type_name -> zaphiro.grid.v1.ComputedTopology.TopologicalIslandsEntry + 7, // 2: zaphiro.grid.v1.ComputedTopology.BranchConnections:type_name -> zaphiro.grid.v1.ComputedTopology.BranchConnectionsEntry + 1, // 3: zaphiro.grid.v1.TopologicalIsland.TopologicalNodesEntry.value:type_name -> zaphiro.grid.v1.TopologicalNode + 2, // 4: zaphiro.grid.v1.ComputedTopology.TopologicalIslandsEntry.value:type_name -> zaphiro.grid.v1.TopologicalIsland + 3, // 5: zaphiro.grid.v1.ComputedTopology.BranchConnectionsEntry.value:type_name -> zaphiro.grid.v1.BranchConnection + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_topology_proto_init() } +func file_zaphiro_grid_v1_topology_proto_init() { + if File_zaphiro_grid_v1_topology_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_topology_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Topology); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TopologicalNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TopologicalIsland); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BranchConnection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ComputedTopology); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_topology_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_topology_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_topology_proto_depIdxs, + MessageInfos: file_zaphiro_grid_v1_topology_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_topology_proto = out.File + file_zaphiro_grid_v1_topology_proto_rawDesc = nil + file_zaphiro_grid_v1_topology_proto_goTypes = nil + file_zaphiro_grid_v1_topology_proto_depIdxs = nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/LICENSE b/examples/go/vendor/google.golang.org/protobuf/LICENSE new file mode 100644 index 0000000..49ea0f9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2018 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/google.golang.org/protobuf/PATENTS b/examples/go/vendor/google.golang.org/protobuf/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go new file mode 100644 index 0000000..24bc98a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go @@ -0,0 +1,772 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package prototext + +import ( + "fmt" + "unicode/utf8" + + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/encoding/text" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/internal/set" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Unmarshal reads the given []byte into the given [proto.Message]. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +func Unmarshal(b []byte, m proto.Message) error { + return UnmarshalOptions{}.Unmarshal(b, m) +} + +// UnmarshalOptions is a configurable textproto format unmarshaler. +type UnmarshalOptions struct { + pragma.NoUnkeyedLiterals + + // AllowPartial accepts input for messages that will result in missing + // required fields. If AllowPartial is false (the default), Unmarshal will + // return error if there are any missing required fields. + AllowPartial bool + + // DiscardUnknown specifies whether to ignore unknown fields when parsing. + // An unknown field is any field whose field name or field number does not + // resolve to any known or extension field in the message. + // By default, unmarshal rejects unknown fields as an error. + DiscardUnknown bool + + // Resolver is used for looking up types when unmarshaling + // google.protobuf.Any messages or extension fields. + // If nil, this defaults to using protoregistry.GlobalTypes. + Resolver interface { + protoregistry.MessageTypeResolver + protoregistry.ExtensionTypeResolver + } +} + +// Unmarshal reads the given []byte and populates the given [proto.Message] +// using options in the UnmarshalOptions object. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error { + return o.unmarshal(b, m) +} + +// unmarshal is a centralized function that all unmarshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for unmarshal that do not go through this. +func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error { + proto.Reset(m) + + if o.Resolver == nil { + o.Resolver = protoregistry.GlobalTypes + } + + dec := decoder{text.NewDecoder(b), o} + if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil { + return err + } + if o.AllowPartial { + return nil + } + return proto.CheckInitialized(m) +} + +type decoder struct { + *text.Decoder + opts UnmarshalOptions +} + +// newError returns an error object with position info. +func (d decoder) newError(pos int, f string, x ...any) error { + line, column := d.Position(pos) + head := fmt.Sprintf("(line %d:%d): ", line, column) + return errors.New(head+f, x...) +} + +// unexpectedTokenError returns a syntax error for the given unexpected token. +func (d decoder) unexpectedTokenError(tok text.Token) error { + return d.syntaxError(tok.Pos(), "unexpected token: %s", tok.RawString()) +} + +// syntaxError returns a syntax error for given position. +func (d decoder) syntaxError(pos int, f string, x ...any) error { + line, column := d.Position(pos) + head := fmt.Sprintf("syntax error (line %d:%d): ", line, column) + return errors.New(head+f, x...) +} + +// unmarshalMessage unmarshals into the given protoreflect.Message. +func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error { + messageDesc := m.Descriptor() + if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { + return errors.New("no support for proto1 MessageSets") + } + + if messageDesc.FullName() == genid.Any_message_fullname { + return d.unmarshalAny(m, checkDelims) + } + + if checkDelims { + tok, err := d.Read() + if err != nil { + return err + } + + if tok.Kind() != text.MessageOpen { + return d.unexpectedTokenError(tok) + } + } + + var seenNums set.Ints + var seenOneofs set.Ints + fieldDescs := messageDesc.Fields() + + for { + // Read field name. + tok, err := d.Read() + if err != nil { + return err + } + switch typ := tok.Kind(); typ { + case text.Name: + // Continue below. + case text.EOF: + if checkDelims { + return text.ErrUnexpectedEOF + } + return nil + default: + if checkDelims && typ == text.MessageClose { + return nil + } + return d.unexpectedTokenError(tok) + } + + // Resolve the field descriptor. + var name protoreflect.Name + var fd protoreflect.FieldDescriptor + var xt protoreflect.ExtensionType + var xtErr error + var isFieldNumberName bool + + switch tok.NameKind() { + case text.IdentName: + name = protoreflect.Name(tok.IdentName()) + fd = fieldDescs.ByTextName(string(name)) + + case text.TypeName: + // Handle extensions only. This code path is not for Any. + xt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName())) + + case text.FieldNumber: + isFieldNumberName = true + num := protoreflect.FieldNumber(tok.FieldNumber()) + if !num.IsValid() { + return d.newError(tok.Pos(), "invalid field number: %d", num) + } + fd = fieldDescs.ByNumber(num) + if fd == nil { + xt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num) + } + } + + if xt != nil { + fd = xt.TypeDescriptor() + if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() { + return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName()) + } + } else if xtErr != nil && xtErr != protoregistry.NotFound { + return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr) + } + if flags.ProtoLegacy { + if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() { + fd = nil // reset since the weak reference is not linked in + } + } + + // Handle unknown fields. + if fd == nil { + if d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) { + d.skipValue() + continue + } + return d.newError(tok.Pos(), "unknown field: %v", tok.RawString()) + } + + // Handle fields identified by field number. + if isFieldNumberName { + // TODO: Add an option to permit parsing field numbers. + // + // This requires careful thought as the MarshalOptions.EmitUnknown + // option allows formatting unknown fields as the field number and the + // best-effort textual representation of the field value. In that case, + // it may not be possible to unmarshal the value from a parser that does + // have information about the unknown field. + return d.newError(tok.Pos(), "cannot specify field by number: %v", tok.RawString()) + } + + switch { + case fd.IsList(): + kind := fd.Kind() + if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + + list := m.Mutable(fd).List() + if err := d.unmarshalList(fd, list); err != nil { + return err + } + + case fd.IsMap(): + mmap := m.Mutable(fd).Map() + if err := d.unmarshalMap(fd, mmap); err != nil { + return err + } + + default: + kind := fd.Kind() + if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + + // If field is a oneof, check if it has already been set. + if od := fd.ContainingOneof(); od != nil { + idx := uint64(od.Index()) + if seenOneofs.Has(idx) { + return d.newError(tok.Pos(), "error parsing %q, oneof %v is already set", tok.RawString(), od.FullName()) + } + seenOneofs.Set(idx) + } + + num := uint64(fd.Number()) + if seenNums.Has(num) { + return d.newError(tok.Pos(), "non-repeated field %q is repeated", tok.RawString()) + } + + if err := d.unmarshalSingular(fd, m); err != nil { + return err + } + seenNums.Set(num) + } + } + + return nil +} + +// unmarshalSingular unmarshals a non-repeated field value specified by the +// given FieldDescriptor. +func (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error { + var val protoreflect.Value + var err error + switch fd.Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + val = m.NewField(fd) + err = d.unmarshalMessage(val.Message(), true) + default: + val, err = d.unmarshalScalar(fd) + } + if err == nil { + m.Set(fd, val) + } + return err +} + +// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the +// given FieldDescriptor. +func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { + tok, err := d.Read() + if err != nil { + return protoreflect.Value{}, err + } + + if tok.Kind() != text.Scalar { + return protoreflect.Value{}, d.unexpectedTokenError(tok) + } + + kind := fd.Kind() + switch kind { + case protoreflect.BoolKind: + if b, ok := tok.Bool(); ok { + return protoreflect.ValueOfBool(b), nil + } + + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + if n, ok := tok.Int32(); ok { + return protoreflect.ValueOfInt32(n), nil + } + + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + if n, ok := tok.Int64(); ok { + return protoreflect.ValueOfInt64(n), nil + } + + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + if n, ok := tok.Uint32(); ok { + return protoreflect.ValueOfUint32(n), nil + } + + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + if n, ok := tok.Uint64(); ok { + return protoreflect.ValueOfUint64(n), nil + } + + case protoreflect.FloatKind: + if n, ok := tok.Float32(); ok { + return protoreflect.ValueOfFloat32(n), nil + } + + case protoreflect.DoubleKind: + if n, ok := tok.Float64(); ok { + return protoreflect.ValueOfFloat64(n), nil + } + + case protoreflect.StringKind: + if s, ok := tok.String(); ok { + if strs.EnforceUTF8(fd) && !utf8.ValidString(s) { + return protoreflect.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8") + } + return protoreflect.ValueOfString(s), nil + } + + case protoreflect.BytesKind: + if b, ok := tok.String(); ok { + return protoreflect.ValueOfBytes([]byte(b)), nil + } + + case protoreflect.EnumKind: + if lit, ok := tok.Enum(); ok { + // Lookup EnumNumber based on name. + if enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil { + return protoreflect.ValueOfEnum(enumVal.Number()), nil + } + } + if num, ok := tok.Int32(); ok { + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil + } + + default: + panic(fmt.Sprintf("invalid scalar kind %v", kind)) + } + + return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) +} + +// unmarshalList unmarshals into given protoreflect.List. A list value can +// either be in [] syntax or simply just a single scalar/message value. +func (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error { + tok, err := d.Peek() + if err != nil { + return err + } + + switch fd.Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + switch tok.Kind() { + case text.ListOpen: + d.Read() + for { + tok, err := d.Peek() + if err != nil { + return err + } + + switch tok.Kind() { + case text.ListClose: + d.Read() + return nil + case text.MessageOpen: + pval := list.NewElement() + if err := d.unmarshalMessage(pval.Message(), true); err != nil { + return err + } + list.Append(pval) + default: + return d.unexpectedTokenError(tok) + } + } + + case text.MessageOpen: + pval := list.NewElement() + if err := d.unmarshalMessage(pval.Message(), true); err != nil { + return err + } + list.Append(pval) + return nil + } + + default: + switch tok.Kind() { + case text.ListOpen: + d.Read() + for { + tok, err := d.Peek() + if err != nil { + return err + } + + switch tok.Kind() { + case text.ListClose: + d.Read() + return nil + case text.Scalar: + pval, err := d.unmarshalScalar(fd) + if err != nil { + return err + } + list.Append(pval) + default: + return d.unexpectedTokenError(tok) + } + } + + case text.Scalar: + pval, err := d.unmarshalScalar(fd) + if err != nil { + return err + } + list.Append(pval) + return nil + } + } + + return d.unexpectedTokenError(tok) +} + +// unmarshalMap unmarshals into given protoreflect.Map. A map value is a +// textproto message containing {key: , value: }. +func (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error { + // Determine ahead whether map entry is a scalar type or a message type in + // order to call the appropriate unmarshalMapValue func inside + // unmarshalMapEntry. + var unmarshalMapValue func() (protoreflect.Value, error) + switch fd.MapValue().Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + unmarshalMapValue = func() (protoreflect.Value, error) { + pval := mmap.NewValue() + if err := d.unmarshalMessage(pval.Message(), true); err != nil { + return protoreflect.Value{}, err + } + return pval, nil + } + default: + unmarshalMapValue = func() (protoreflect.Value, error) { + return d.unmarshalScalar(fd.MapValue()) + } + } + + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.MessageOpen: + return d.unmarshalMapEntry(fd, mmap, unmarshalMapValue) + + case text.ListOpen: + for { + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.ListClose: + return nil + case text.MessageOpen: + if err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil { + return err + } + default: + return d.unexpectedTokenError(tok) + } + } + + default: + return d.unexpectedTokenError(tok) + } +} + +// unmarshalMap unmarshals into given protoreflect.Map. A map value is a +// textproto message containing {key: , value: }. +func (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error { + var key protoreflect.MapKey + var pval protoreflect.Value +Loop: + for { + // Read field name. + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.Name: + if tok.NameKind() != text.IdentName { + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "unknown map entry field %q", tok.RawString()) + } + d.skipValue() + continue Loop + } + // Continue below. + case text.MessageClose: + break Loop + default: + return d.unexpectedTokenError(tok) + } + + switch name := protoreflect.Name(tok.IdentName()); name { + case genid.MapEntry_Key_field_name: + if !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + if key.IsValid() { + return d.newError(tok.Pos(), "map entry %q cannot be repeated", name) + } + val, err := d.unmarshalScalar(fd.MapKey()) + if err != nil { + return err + } + key = val.MapKey() + + case genid.MapEntry_Value_field_name: + if kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) { + if !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + } + if pval.IsValid() { + return d.newError(tok.Pos(), "map entry %q cannot be repeated", name) + } + pval, err = unmarshalMapValue() + if err != nil { + return err + } + + default: + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "unknown map entry field %q", name) + } + d.skipValue() + } + } + + if !key.IsValid() { + key = fd.MapKey().Default().MapKey() + } + if !pval.IsValid() { + switch fd.MapValue().Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + // If value field is not set for message/group types, construct an + // empty one as default. + pval = mmap.NewValue() + default: + pval = fd.MapValue().Default() + } + } + mmap.Set(key, pval) + return nil +} + +// unmarshalAny unmarshals an Any textproto. It can either be in expanded form +// or non-expanded form. +func (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error { + var typeURL string + var bValue []byte + var seenTypeUrl bool + var seenValue bool + var isExpanded bool + + if checkDelims { + tok, err := d.Read() + if err != nil { + return err + } + + if tok.Kind() != text.MessageOpen { + return d.unexpectedTokenError(tok) + } + } + +Loop: + for { + // Read field name. Can only have 3 possible field names, i.e. type_url, + // value and type URL name inside []. + tok, err := d.Read() + if err != nil { + return err + } + if typ := tok.Kind(); typ != text.Name { + if checkDelims { + if typ == text.MessageClose { + break Loop + } + } else if typ == text.EOF { + break Loop + } + return d.unexpectedTokenError(tok) + } + + switch tok.NameKind() { + case text.IdentName: + // Both type_url and value fields require field separator :. + if !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + + switch name := protoreflect.Name(tok.IdentName()); name { + case genid.Any_TypeUrl_field_name: + if seenTypeUrl { + return d.newError(tok.Pos(), "duplicate %v field", genid.Any_TypeUrl_field_fullname) + } + if isExpanded { + return d.newError(tok.Pos(), "conflict with [%s] field", typeURL) + } + tok, err := d.Read() + if err != nil { + return err + } + var ok bool + typeURL, ok = tok.String() + if !ok { + return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_TypeUrl_field_fullname, tok.RawString()) + } + seenTypeUrl = true + + case genid.Any_Value_field_name: + if seenValue { + return d.newError(tok.Pos(), "duplicate %v field", genid.Any_Value_field_fullname) + } + if isExpanded { + return d.newError(tok.Pos(), "conflict with [%s] field", typeURL) + } + tok, err := d.Read() + if err != nil { + return err + } + s, ok := tok.String() + if !ok { + return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_Value_field_fullname, tok.RawString()) + } + bValue = []byte(s) + seenValue = true + + default: + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname) + } + } + + case text.TypeName: + if isExpanded { + return d.newError(tok.Pos(), "cannot have more than one type") + } + if seenTypeUrl { + return d.newError(tok.Pos(), "conflict with type_url field") + } + typeURL = tok.TypeName() + var err error + bValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos()) + if err != nil { + return err + } + isExpanded = true + + default: + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname) + } + } + } + + fds := m.Descriptor().Fields() + if len(typeURL) > 0 { + m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL)) + } + if len(bValue) > 0 { + m.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue)) + } + return nil +} + +func (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) { + mt, err := d.opts.Resolver.FindMessageByURL(typeURL) + if err != nil { + return nil, d.newError(pos, "unable to resolve message [%v]: %v", typeURL, err) + } + // Create new message for the embedded message type and unmarshal the value + // field into it. + m := mt.New() + if err := d.unmarshalMessage(m, true); err != nil { + return nil, err + } + // Serialize the embedded message and return the resulting bytes. + b, err := proto.MarshalOptions{ + AllowPartial: true, // Never check required fields inside an Any. + Deterministic: true, + }.Marshal(m.Interface()) + if err != nil { + return nil, d.newError(pos, "error in marshaling message into Any.value: %v", err) + } + return b, nil +} + +// skipValue makes the decoder parse a field value in order to advance the read +// to the next field. It relies on Read returning an error if the types are not +// in valid sequence. +func (d decoder) skipValue() error { + tok, err := d.Read() + if err != nil { + return err + } + // Only need to continue reading for messages and lists. + switch tok.Kind() { + case text.MessageOpen: + return d.skipMessageValue() + + case text.ListOpen: + for { + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.ListClose: + return nil + case text.MessageOpen: + if err := d.skipMessageValue(); err != nil { + return err + } + default: + // Skip items. This will not validate whether skipped values are + // of the same type or not, same behavior as C++ + // TextFormat::Parser::AllowUnknownField(true) version 3.8.0. + } + } + } + return nil +} + +// skipMessageValue makes the decoder parse and skip over all fields in a +// message. It assumes that the previous read type is MessageOpen. +func (d decoder) skipMessageValue() error { + for { + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.MessageClose: + return nil + case text.Name: + if err := d.skipValue(); err != nil { + return err + } + } + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go new file mode 100644 index 0000000..162b4f9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go @@ -0,0 +1,7 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package prototext marshals and unmarshals protocol buffer messages as the +// textproto format. +package prototext diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go new file mode 100644 index 0000000..1f57e66 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go @@ -0,0 +1,380 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package prototext + +import ( + "fmt" + "strconv" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/encoding/text" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +const defaultIndent = " " + +// Format formats the message as a multiline string. +// This function is only intended for human consumption and ignores errors. +// Do not depend on the output being stable. Its output will change across +// different builds of your program, even when using the same version of the +// protobuf module. +func Format(m proto.Message) string { + return MarshalOptions{Multiline: true}.Format(m) +} + +// Marshal writes the given [proto.Message] in textproto format using default +// options. Do not depend on the output being stable. Its output will change +// across different builds of your program, even when using the same version of +// the protobuf module. +func Marshal(m proto.Message) ([]byte, error) { + return MarshalOptions{}.Marshal(m) +} + +// MarshalOptions is a configurable text format marshaler. +type MarshalOptions struct { + pragma.NoUnkeyedLiterals + + // Multiline specifies whether the marshaler should format the output in + // indented-form with every textual element on a new line. + // If Indent is an empty string, then an arbitrary indent is chosen. + Multiline bool + + // Indent specifies the set of indentation characters to use in a multiline + // formatted output such that every entry is preceded by Indent and + // terminated by a newline. If non-empty, then Multiline is treated as true. + // Indent can only be composed of space or tab characters. + Indent string + + // EmitASCII specifies whether to format strings and bytes as ASCII only + // as opposed to using UTF-8 encoding when possible. + EmitASCII bool + + // allowInvalidUTF8 specifies whether to permit the encoding of strings + // with invalid UTF-8. This is unexported as it is intended to only + // be specified by the Format method. + allowInvalidUTF8 bool + + // AllowPartial allows messages that have missing required fields to marshal + // without returning an error. If AllowPartial is false (the default), + // Marshal will return error if there are any missing required fields. + AllowPartial bool + + // EmitUnknown specifies whether to emit unknown fields in the output. + // If specified, the unmarshaler may be unable to parse the output. + // The default is to exclude unknown fields. + EmitUnknown bool + + // Resolver is used for looking up types when expanding google.protobuf.Any + // messages. If nil, this defaults to using protoregistry.GlobalTypes. + Resolver interface { + protoregistry.ExtensionTypeResolver + protoregistry.MessageTypeResolver + } +} + +// Format formats the message as a string. +// This method is only intended for human consumption and ignores errors. +// Do not depend on the output being stable. Its output will change across +// different builds of your program, even when using the same version of the +// protobuf module. +func (o MarshalOptions) Format(m proto.Message) string { + if m == nil || !m.ProtoReflect().IsValid() { + return "" // invalid syntax, but okay since this is for debugging + } + o.allowInvalidUTF8 = true + o.AllowPartial = true + o.EmitUnknown = true + b, _ := o.Marshal(m) + return string(b) +} + +// Marshal writes the given [proto.Message] in textproto format using options in +// MarshalOptions object. Do not depend on the output being stable. Its output +// will change across different builds of your program, even when using the +// same version of the protobuf module. +func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { + return o.marshal(nil, m) +} + +// MarshalAppend appends the textproto format encoding of m to b, +// returning the result. +func (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) { + return o.marshal(b, m) +} + +// marshal is a centralized function that all marshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for marshal that do not go through this. +func (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) { + var delims = [2]byte{'{', '}'} + + if o.Multiline && o.Indent == "" { + o.Indent = defaultIndent + } + if o.Resolver == nil { + o.Resolver = protoregistry.GlobalTypes + } + + internalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII) + if err != nil { + return nil, err + } + + // Treat nil message interface as an empty message, + // in which case there is nothing to output. + if m == nil { + return b, nil + } + + enc := encoder{internalEnc, o} + err = enc.marshalMessage(m.ProtoReflect(), false) + if err != nil { + return nil, err + } + out := enc.Bytes() + if len(o.Indent) > 0 && len(out) > 0 { + out = append(out, '\n') + } + if o.AllowPartial { + return out, nil + } + return out, proto.CheckInitialized(m) +} + +type encoder struct { + *text.Encoder + opts MarshalOptions +} + +// marshalMessage marshals the given protoreflect.Message. +func (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error { + messageDesc := m.Descriptor() + if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { + return errors.New("no support for proto1 MessageSets") + } + + if inclDelims { + e.StartMessage() + defer e.EndMessage() + } + + // Handle Any expansion. + if messageDesc.FullName() == genid.Any_message_fullname { + if e.marshalAny(m) { + return nil + } + // If unable to expand, continue on to marshal Any as a regular message. + } + + // Marshal fields. + var err error + order.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + if err = e.marshalField(fd.TextName(), v, fd); err != nil { + return false + } + return true + }) + if err != nil { + return err + } + + // Marshal unknown fields. + if e.opts.EmitUnknown { + e.marshalUnknown(m.GetUnknown()) + } + + return nil +} + +// marshalField marshals the given field with protoreflect.Value. +func (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error { + switch { + case fd.IsList(): + return e.marshalList(name, val.List(), fd) + case fd.IsMap(): + return e.marshalMap(name, val.Map(), fd) + default: + e.WriteName(name) + return e.marshalSingular(val, fd) + } +} + +// marshalSingular marshals the given non-repeated field value. This includes +// all scalar types, enums, messages, and groups. +func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { + kind := fd.Kind() + switch kind { + case protoreflect.BoolKind: + e.WriteBool(val.Bool()) + + case protoreflect.StringKind: + s := val.String() + if !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) { + return errors.InvalidUTF8(string(fd.FullName())) + } + e.WriteString(s) + + case protoreflect.Int32Kind, protoreflect.Int64Kind, + protoreflect.Sint32Kind, protoreflect.Sint64Kind, + protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind: + e.WriteInt(val.Int()) + + case protoreflect.Uint32Kind, protoreflect.Uint64Kind, + protoreflect.Fixed32Kind, protoreflect.Fixed64Kind: + e.WriteUint(val.Uint()) + + case protoreflect.FloatKind: + // Encoder.WriteFloat handles the special numbers NaN and infinites. + e.WriteFloat(val.Float(), 32) + + case protoreflect.DoubleKind: + // Encoder.WriteFloat handles the special numbers NaN and infinites. + e.WriteFloat(val.Float(), 64) + + case protoreflect.BytesKind: + e.WriteString(string(val.Bytes())) + + case protoreflect.EnumKind: + num := val.Enum() + if desc := fd.Enum().Values().ByNumber(num); desc != nil { + e.WriteLiteral(string(desc.Name())) + } else { + // Use numeric value if there is no enum description. + e.WriteInt(int64(num)) + } + + case protoreflect.MessageKind, protoreflect.GroupKind: + return e.marshalMessage(val.Message(), true) + + default: + panic(fmt.Sprintf("%v has unknown kind: %v", fd.FullName(), kind)) + } + return nil +} + +// marshalList marshals the given protoreflect.List as multiple name-value fields. +func (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error { + size := list.Len() + for i := 0; i < size; i++ { + e.WriteName(name) + if err := e.marshalSingular(list.Get(i), fd); err != nil { + return err + } + } + return nil +} + +// marshalMap marshals the given protoreflect.Map as multiple name-value fields. +func (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { + var err error + order.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool { + e.WriteName(name) + e.StartMessage() + defer e.EndMessage() + + e.WriteName(string(genid.MapEntry_Key_field_name)) + err = e.marshalSingular(key.Value(), fd.MapKey()) + if err != nil { + return false + } + + e.WriteName(string(genid.MapEntry_Value_field_name)) + err = e.marshalSingular(val, fd.MapValue()) + if err != nil { + return false + } + return true + }) + return err +} + +// marshalUnknown parses the given []byte and marshals fields out. +// This function assumes proper encoding in the given []byte. +func (e encoder) marshalUnknown(b []byte) { + const dec = 10 + const hex = 16 + for len(b) > 0 { + num, wtype, n := protowire.ConsumeTag(b) + b = b[n:] + e.WriteName(strconv.FormatInt(int64(num), dec)) + + switch wtype { + case protowire.VarintType: + var v uint64 + v, n = protowire.ConsumeVarint(b) + e.WriteUint(v) + case protowire.Fixed32Type: + var v uint32 + v, n = protowire.ConsumeFixed32(b) + e.WriteLiteral("0x" + strconv.FormatUint(uint64(v), hex)) + case protowire.Fixed64Type: + var v uint64 + v, n = protowire.ConsumeFixed64(b) + e.WriteLiteral("0x" + strconv.FormatUint(v, hex)) + case protowire.BytesType: + var v []byte + v, n = protowire.ConsumeBytes(b) + e.WriteString(string(v)) + case protowire.StartGroupType: + e.StartMessage() + var v []byte + v, n = protowire.ConsumeGroup(num, b) + e.marshalUnknown(v) + e.EndMessage() + default: + panic(fmt.Sprintf("prototext: error parsing unknown field wire type: %v", wtype)) + } + + b = b[n:] + } +} + +// marshalAny marshals the given google.protobuf.Any message in expanded form. +// It returns true if it was able to marshal, else false. +func (e encoder) marshalAny(any protoreflect.Message) bool { + // Construct the embedded message. + fds := any.Descriptor().Fields() + fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) + typeURL := any.Get(fdType).String() + mt, err := e.opts.Resolver.FindMessageByURL(typeURL) + if err != nil { + return false + } + m := mt.New().Interface() + + // Unmarshal bytes into embedded message. + fdValue := fds.ByNumber(genid.Any_Value_field_number) + value := any.Get(fdValue) + err = proto.UnmarshalOptions{ + AllowPartial: true, + Resolver: e.opts.Resolver, + }.Unmarshal(value.Bytes(), m) + if err != nil { + return false + } + + // Get current encoder position. If marshaling fails, reset encoder output + // back to this position. + pos := e.Snapshot() + + // Field name is the proto field name enclosed in []. + e.WriteName("[" + typeURL + "]") + err = e.marshalMessage(m.ProtoReflect(), true) + if err != nil { + e.Reset(pos) + return false + } + return true +} diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go b/examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go new file mode 100644 index 0000000..e942bc9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go @@ -0,0 +1,547 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protowire parses and formats the raw wire encoding. +// See https://protobuf.dev/programming-guides/encoding. +// +// For marshaling and unmarshaling entire protobuf messages, +// use the [google.golang.org/protobuf/proto] package instead. +package protowire + +import ( + "io" + "math" + "math/bits" + + "google.golang.org/protobuf/internal/errors" +) + +// Number represents the field number. +type Number int32 + +const ( + MinValidNumber Number = 1 + FirstReservedNumber Number = 19000 + LastReservedNumber Number = 19999 + MaxValidNumber Number = 1<<29 - 1 + DefaultRecursionLimit = 10000 +) + +// IsValid reports whether the field number is semantically valid. +func (n Number) IsValid() bool { + return MinValidNumber <= n && n <= MaxValidNumber +} + +// Type represents the wire type. +type Type int8 + +const ( + VarintType Type = 0 + Fixed32Type Type = 5 + Fixed64Type Type = 1 + BytesType Type = 2 + StartGroupType Type = 3 + EndGroupType Type = 4 +) + +const ( + _ = -iota + errCodeTruncated + errCodeFieldNumber + errCodeOverflow + errCodeReserved + errCodeEndGroup + errCodeRecursionDepth +) + +var ( + errFieldNumber = errors.New("invalid field number") + errOverflow = errors.New("variable length integer overflow") + errReserved = errors.New("cannot parse reserved wire type") + errEndGroup = errors.New("mismatching end group marker") + errParse = errors.New("parse error") +) + +// ParseError converts an error code into an error value. +// This returns nil if n is a non-negative number. +func ParseError(n int) error { + if n >= 0 { + return nil + } + switch n { + case errCodeTruncated: + return io.ErrUnexpectedEOF + case errCodeFieldNumber: + return errFieldNumber + case errCodeOverflow: + return errOverflow + case errCodeReserved: + return errReserved + case errCodeEndGroup: + return errEndGroup + default: + return errParse + } +} + +// ConsumeField parses an entire field record (both tag and value) and returns +// the field number, the wire type, and the total length. +// This returns a negative length upon an error (see [ParseError]). +// +// The total length includes the tag header and the end group marker (if the +// field is a group). +func ConsumeField(b []byte) (Number, Type, int) { + num, typ, n := ConsumeTag(b) + if n < 0 { + return 0, 0, n // forward error code + } + m := ConsumeFieldValue(num, typ, b[n:]) + if m < 0 { + return 0, 0, m // forward error code + } + return num, typ, n + m +} + +// ConsumeFieldValue parses a field value and returns its length. +// This assumes that the field [Number] and wire [Type] have already been parsed. +// This returns a negative length upon an error (see [ParseError]). +// +// When parsing a group, the length includes the end group marker and +// the end group is verified to match the starting field number. +func ConsumeFieldValue(num Number, typ Type, b []byte) (n int) { + return consumeFieldValueD(num, typ, b, DefaultRecursionLimit) +} + +func consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) { + switch typ { + case VarintType: + _, n = ConsumeVarint(b) + return n + case Fixed32Type: + _, n = ConsumeFixed32(b) + return n + case Fixed64Type: + _, n = ConsumeFixed64(b) + return n + case BytesType: + _, n = ConsumeBytes(b) + return n + case StartGroupType: + if depth < 0 { + return errCodeRecursionDepth + } + n0 := len(b) + for { + num2, typ2, n := ConsumeTag(b) + if n < 0 { + return n // forward error code + } + b = b[n:] + if typ2 == EndGroupType { + if num != num2 { + return errCodeEndGroup + } + return n0 - len(b) + } + + n = consumeFieldValueD(num2, typ2, b, depth-1) + if n < 0 { + return n // forward error code + } + b = b[n:] + } + case EndGroupType: + return errCodeEndGroup + default: + return errCodeReserved + } +} + +// AppendTag encodes num and typ as a varint-encoded tag and appends it to b. +func AppendTag(b []byte, num Number, typ Type) []byte { + return AppendVarint(b, EncodeTag(num, typ)) +} + +// ConsumeTag parses b as a varint-encoded tag, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeTag(b []byte) (Number, Type, int) { + v, n := ConsumeVarint(b) + if n < 0 { + return 0, 0, n // forward error code + } + num, typ := DecodeTag(v) + if num < MinValidNumber { + return 0, 0, errCodeFieldNumber + } + return num, typ, n +} + +func SizeTag(num Number) int { + return SizeVarint(EncodeTag(num, 0)) // wire type has no effect on size +} + +// AppendVarint appends v to b as a varint-encoded uint64. +func AppendVarint(b []byte, v uint64) []byte { + switch { + case v < 1<<7: + b = append(b, byte(v)) + case v < 1<<14: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte(v>>7)) + case v < 1<<21: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte(v>>14)) + case v < 1<<28: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte(v>>21)) + case v < 1<<35: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte(v>>28)) + case v < 1<<42: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte(v>>35)) + case v < 1<<49: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte(v>>42)) + case v < 1<<56: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte((v>>42)&0x7f|0x80), + byte(v>>49)) + case v < 1<<63: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte((v>>42)&0x7f|0x80), + byte((v>>49)&0x7f|0x80), + byte(v>>56)) + default: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte((v>>42)&0x7f|0x80), + byte((v>>49)&0x7f|0x80), + byte((v>>56)&0x7f|0x80), + 1) + } + return b +} + +// ConsumeVarint parses b as a varint-encoded uint64, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeVarint(b []byte) (v uint64, n int) { + var y uint64 + if len(b) <= 0 { + return 0, errCodeTruncated + } + v = uint64(b[0]) + if v < 0x80 { + return v, 1 + } + v -= 0x80 + + if len(b) <= 1 { + return 0, errCodeTruncated + } + y = uint64(b[1]) + v += y << 7 + if y < 0x80 { + return v, 2 + } + v -= 0x80 << 7 + + if len(b) <= 2 { + return 0, errCodeTruncated + } + y = uint64(b[2]) + v += y << 14 + if y < 0x80 { + return v, 3 + } + v -= 0x80 << 14 + + if len(b) <= 3 { + return 0, errCodeTruncated + } + y = uint64(b[3]) + v += y << 21 + if y < 0x80 { + return v, 4 + } + v -= 0x80 << 21 + + if len(b) <= 4 { + return 0, errCodeTruncated + } + y = uint64(b[4]) + v += y << 28 + if y < 0x80 { + return v, 5 + } + v -= 0x80 << 28 + + if len(b) <= 5 { + return 0, errCodeTruncated + } + y = uint64(b[5]) + v += y << 35 + if y < 0x80 { + return v, 6 + } + v -= 0x80 << 35 + + if len(b) <= 6 { + return 0, errCodeTruncated + } + y = uint64(b[6]) + v += y << 42 + if y < 0x80 { + return v, 7 + } + v -= 0x80 << 42 + + if len(b) <= 7 { + return 0, errCodeTruncated + } + y = uint64(b[7]) + v += y << 49 + if y < 0x80 { + return v, 8 + } + v -= 0x80 << 49 + + if len(b) <= 8 { + return 0, errCodeTruncated + } + y = uint64(b[8]) + v += y << 56 + if y < 0x80 { + return v, 9 + } + v -= 0x80 << 56 + + if len(b) <= 9 { + return 0, errCodeTruncated + } + y = uint64(b[9]) + v += y << 63 + if y < 2 { + return v, 10 + } + return 0, errCodeOverflow +} + +// SizeVarint returns the encoded size of a varint. +// The size is guaranteed to be within 1 and 10, inclusive. +func SizeVarint(v uint64) int { + // This computes 1 + (bits.Len64(v)-1)/7. + // 9/64 is a good enough approximation of 1/7 + return int(9*uint32(bits.Len64(v))+64) / 64 +} + +// AppendFixed32 appends v to b as a little-endian uint32. +func AppendFixed32(b []byte, v uint32) []byte { + return append(b, + byte(v>>0), + byte(v>>8), + byte(v>>16), + byte(v>>24)) +} + +// ConsumeFixed32 parses b as a little-endian uint32, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeFixed32(b []byte) (v uint32, n int) { + if len(b) < 4 { + return 0, errCodeTruncated + } + v = uint32(b[0])<<0 | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 + return v, 4 +} + +// SizeFixed32 returns the encoded size of a fixed32; which is always 4. +func SizeFixed32() int { + return 4 +} + +// AppendFixed64 appends v to b as a little-endian uint64. +func AppendFixed64(b []byte, v uint64) []byte { + return append(b, + byte(v>>0), + byte(v>>8), + byte(v>>16), + byte(v>>24), + byte(v>>32), + byte(v>>40), + byte(v>>48), + byte(v>>56)) +} + +// ConsumeFixed64 parses b as a little-endian uint64, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeFixed64(b []byte) (v uint64, n int) { + if len(b) < 8 { + return 0, errCodeTruncated + } + v = uint64(b[0])<<0 | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 + return v, 8 +} + +// SizeFixed64 returns the encoded size of a fixed64; which is always 8. +func SizeFixed64() int { + return 8 +} + +// AppendBytes appends v to b as a length-prefixed bytes value. +func AppendBytes(b []byte, v []byte) []byte { + return append(AppendVarint(b, uint64(len(v))), v...) +} + +// ConsumeBytes parses b as a length-prefixed bytes value, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeBytes(b []byte) (v []byte, n int) { + m, n := ConsumeVarint(b) + if n < 0 { + return nil, n // forward error code + } + if m > uint64(len(b[n:])) { + return nil, errCodeTruncated + } + return b[n:][:m], n + int(m) +} + +// SizeBytes returns the encoded size of a length-prefixed bytes value, +// given only the length. +func SizeBytes(n int) int { + return SizeVarint(uint64(n)) + n +} + +// AppendString appends v to b as a length-prefixed bytes value. +func AppendString(b []byte, v string) []byte { + return append(AppendVarint(b, uint64(len(v))), v...) +} + +// ConsumeString parses b as a length-prefixed bytes value, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeString(b []byte) (v string, n int) { + bb, n := ConsumeBytes(b) + return string(bb), n +} + +// AppendGroup appends v to b as group value, with a trailing end group marker. +// The value v must not contain the end marker. +func AppendGroup(b []byte, num Number, v []byte) []byte { + return AppendVarint(append(b, v...), EncodeTag(num, EndGroupType)) +} + +// ConsumeGroup parses b as a group value until the trailing end group marker, +// and verifies that the end marker matches the provided num. The value v +// does not contain the end marker, while the length does contain the end marker. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeGroup(num Number, b []byte) (v []byte, n int) { + n = ConsumeFieldValue(num, StartGroupType, b) + if n < 0 { + return nil, n // forward error code + } + b = b[:n] + + // Truncate off end group marker, but need to handle denormalized varints. + // Assuming end marker is never 0 (which is always the case since + // EndGroupType is non-zero), we can truncate all trailing bytes where the + // lower 7 bits are all zero (implying that the varint is denormalized). + for len(b) > 0 && b[len(b)-1]&0x7f == 0 { + b = b[:len(b)-1] + } + b = b[:len(b)-SizeTag(num)] + return b, n +} + +// SizeGroup returns the encoded size of a group, given only the length. +func SizeGroup(num Number, n int) int { + return n + SizeTag(num) +} + +// DecodeTag decodes the field [Number] and wire [Type] from its unified form. +// The [Number] is -1 if the decoded field number overflows int32. +// Other than overflow, this does not check for field number validity. +func DecodeTag(x uint64) (Number, Type) { + // NOTE: MessageSet allows for larger field numbers than normal. + if x>>3 > uint64(math.MaxInt32) { + return -1, 0 + } + return Number(x >> 3), Type(x & 7) +} + +// EncodeTag encodes the field [Number] and wire [Type] into its unified form. +func EncodeTag(num Number, typ Type) uint64 { + return uint64(num)<<3 | uint64(typ&7) +} + +// DecodeZigZag decodes a zig-zag-encoded uint64 as an int64. +// +// Input: {…, 5, 3, 1, 0, 2, 4, 6, …} +// Output: {…, -3, -2, -1, 0, +1, +2, +3, …} +func DecodeZigZag(x uint64) int64 { + return int64(x>>1) ^ int64(x)<<63>>63 +} + +// EncodeZigZag encodes an int64 as a zig-zag-encoded uint64. +// +// Input: {…, -3, -2, -1, 0, +1, +2, +3, …} +// Output: {…, 5, 3, 1, 0, 2, 4, 6, …} +func EncodeZigZag(x int64) uint64 { + return uint64(x<<1) ^ uint64(x>>63) +} + +// DecodeBool decodes a uint64 as a bool. +// +// Input: { 0, 1, 2, …} +// Output: {false, true, true, …} +func DecodeBool(x uint64) bool { + return x != 0 +} + +// EncodeBool encodes a bool as a uint64. +// +// Input: {false, true} +// Output: { 0, 1} +func EncodeBool(x bool) uint64 { + if x { + return 1 + } + return 0 +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go b/examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go new file mode 100644 index 0000000..87e46bd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go @@ -0,0 +1,414 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package descfmt provides functionality to format descriptors. +package descfmt + +import ( + "fmt" + "io" + "reflect" + "strconv" + "strings" + + "google.golang.org/protobuf/internal/detrand" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type list interface { + Len() int + pragma.DoNotImplement +} + +func FormatList(s fmt.State, r rune, vs list) { + io.WriteString(s, formatListOpt(vs, true, r == 'v' && (s.Flag('+') || s.Flag('#')))) +} +func formatListOpt(vs list, isRoot, allowMulti bool) string { + start, end := "[", "]" + if isRoot { + var name string + switch vs.(type) { + case protoreflect.Names: + name = "Names" + case protoreflect.FieldNumbers: + name = "FieldNumbers" + case protoreflect.FieldRanges: + name = "FieldRanges" + case protoreflect.EnumRanges: + name = "EnumRanges" + case protoreflect.FileImports: + name = "FileImports" + case protoreflect.Descriptor: + name = reflect.ValueOf(vs).MethodByName("Get").Type().Out(0).Name() + "s" + default: + name = reflect.ValueOf(vs).Elem().Type().Name() + } + start, end = name+"{", "}" + } + + var ss []string + switch vs := vs.(type) { + case protoreflect.Names: + for i := 0; i < vs.Len(); i++ { + ss = append(ss, fmt.Sprint(vs.Get(i))) + } + return start + joinStrings(ss, false) + end + case protoreflect.FieldNumbers: + for i := 0; i < vs.Len(); i++ { + ss = append(ss, fmt.Sprint(vs.Get(i))) + } + return start + joinStrings(ss, false) + end + case protoreflect.FieldRanges: + for i := 0; i < vs.Len(); i++ { + r := vs.Get(i) + if r[0]+1 == r[1] { + ss = append(ss, fmt.Sprintf("%d", r[0])) + } else { + ss = append(ss, fmt.Sprintf("%d:%d", r[0], r[1])) // enum ranges are end exclusive + } + } + return start + joinStrings(ss, false) + end + case protoreflect.EnumRanges: + for i := 0; i < vs.Len(); i++ { + r := vs.Get(i) + if r[0] == r[1] { + ss = append(ss, fmt.Sprintf("%d", r[0])) + } else { + ss = append(ss, fmt.Sprintf("%d:%d", r[0], int64(r[1])+1)) // enum ranges are end inclusive + } + } + return start + joinStrings(ss, false) + end + case protoreflect.FileImports: + for i := 0; i < vs.Len(); i++ { + var rs records + rv := reflect.ValueOf(vs.Get(i)) + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("IsPublic"), "IsPublic"}, + {rv.MethodByName("IsWeak"), "IsWeak"}, + }...) + ss = append(ss, "{"+rs.Join()+"}") + } + return start + joinStrings(ss, allowMulti) + end + default: + _, isEnumValue := vs.(protoreflect.EnumValueDescriptors) + for i := 0; i < vs.Len(); i++ { + m := reflect.ValueOf(vs).MethodByName("Get") + v := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface() + ss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue, nil)) + } + return start + joinStrings(ss, allowMulti && isEnumValue) + end + } +} + +type methodAndName struct { + method reflect.Value + name string +} + +func FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) { + io.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')), nil)) +} + +func InternalFormatDescOptForTesting(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { + return formatDescOpt(t, isRoot, allowMulti, record) +} + +func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { + rv := reflect.ValueOf(t) + rt := rv.MethodByName("ProtoType").Type().In(0) + + start, end := "{", "}" + if isRoot { + start = rt.Name() + "{" + } + + _, isFile := t.(protoreflect.FileDescriptor) + rs := records{ + allowMulti: allowMulti, + record: record, + } + if t.IsPlaceholder() { + if isFile { + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + }...) + } else { + rs.Append(rv, []methodAndName{ + {rv.MethodByName("FullName"), "FullName"}, + {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + }...) + } + } else { + switch { + case isFile: + rs.Append(rv, methodAndName{rv.MethodByName("Syntax"), "Syntax"}) + case isRoot: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Syntax"), "Syntax"}, + {rv.MethodByName("FullName"), "FullName"}, + }...) + default: + rs.Append(rv, methodAndName{rv.MethodByName("Name"), "Name"}) + } + switch t := t.(type) { + case protoreflect.FieldDescriptor: + accessors := []methodAndName{ + {rv.MethodByName("Number"), "Number"}, + {rv.MethodByName("Cardinality"), "Cardinality"}, + {rv.MethodByName("Kind"), "Kind"}, + {rv.MethodByName("HasJSONName"), "HasJSONName"}, + {rv.MethodByName("JSONName"), "JSONName"}, + {rv.MethodByName("HasPresence"), "HasPresence"}, + {rv.MethodByName("IsExtension"), "IsExtension"}, + {rv.MethodByName("IsPacked"), "IsPacked"}, + {rv.MethodByName("IsWeak"), "IsWeak"}, + {rv.MethodByName("IsList"), "IsList"}, + {rv.MethodByName("IsMap"), "IsMap"}, + {rv.MethodByName("MapKey"), "MapKey"}, + {rv.MethodByName("MapValue"), "MapValue"}, + {rv.MethodByName("HasDefault"), "HasDefault"}, + {rv.MethodByName("Default"), "Default"}, + {rv.MethodByName("ContainingOneof"), "ContainingOneof"}, + {rv.MethodByName("ContainingMessage"), "ContainingMessage"}, + {rv.MethodByName("Message"), "Message"}, + {rv.MethodByName("Enum"), "Enum"}, + } + for _, s := range accessors { + switch s.name { + case "MapKey": + if k := t.MapKey(); k != nil { + rs.recs = append(rs.recs, [2]string{"MapKey", k.Kind().String()}) + } + case "MapValue": + if v := t.MapValue(); v != nil { + switch v.Kind() { + case protoreflect.EnumKind: + rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Enum().FullName())}) + case protoreflect.MessageKind, protoreflect.GroupKind: + rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Message().FullName())}) + default: + rs.AppendRecs("MapValue", [2]string{"MapValue", v.Kind().String()}) + } + } + case "ContainingOneof": + if od := t.ContainingOneof(); od != nil { + rs.AppendRecs("ContainingOneof", [2]string{"Oneof", string(od.Name())}) + } + case "ContainingMessage": + if t.IsExtension() { + rs.AppendRecs("ContainingMessage", [2]string{"Extendee", string(t.ContainingMessage().FullName())}) + } + case "Message": + if !t.IsMap() { + rs.Append(rv, s) + } + default: + rs.Append(rv, s) + } + } + case protoreflect.OneofDescriptor: + var ss []string + fs := t.Fields() + for i := 0; i < fs.Len(); i++ { + ss = append(ss, string(fs.Get(i).Name())) + } + if len(ss) > 0 { + rs.AppendRecs("Fields", [2]string{"Fields", "[" + joinStrings(ss, false) + "]"}) + } + + case protoreflect.FileDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("Imports"), "Imports"}, + {rv.MethodByName("Messages"), "Messages"}, + {rv.MethodByName("Enums"), "Enums"}, + {rv.MethodByName("Extensions"), "Extensions"}, + {rv.MethodByName("Services"), "Services"}, + }...) + + case protoreflect.MessageDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("IsMapEntry"), "IsMapEntry"}, + {rv.MethodByName("Fields"), "Fields"}, + {rv.MethodByName("Oneofs"), "Oneofs"}, + {rv.MethodByName("ReservedNames"), "ReservedNames"}, + {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, + {rv.MethodByName("RequiredNumbers"), "RequiredNumbers"}, + {rv.MethodByName("ExtensionRanges"), "ExtensionRanges"}, + {rv.MethodByName("Messages"), "Messages"}, + {rv.MethodByName("Enums"), "Enums"}, + {rv.MethodByName("Extensions"), "Extensions"}, + }...) + + case protoreflect.EnumDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Values"), "Values"}, + {rv.MethodByName("ReservedNames"), "ReservedNames"}, + {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, + {rv.MethodByName("IsClosed"), "IsClosed"}, + }...) + + case protoreflect.EnumValueDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Number"), "Number"}, + }...) + + case protoreflect.ServiceDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Methods"), "Methods"}, + }...) + + case protoreflect.MethodDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Input"), "Input"}, + {rv.MethodByName("Output"), "Output"}, + {rv.MethodByName("IsStreamingClient"), "IsStreamingClient"}, + {rv.MethodByName("IsStreamingServer"), "IsStreamingServer"}, + }...) + } + if m := rv.MethodByName("GoType"); m.IsValid() { + rs.Append(rv, methodAndName{m, "GoType"}) + } + } + return start + rs.Join() + end +} + +type records struct { + recs [][2]string + allowMulti bool + + // record is a function that will be called for every Append() or + // AppendRecs() call, to be used for testing with the + // InternalFormatDescOptForTesting function. + record func(string) +} + +func (rs *records) AppendRecs(fieldName string, newRecs [2]string) { + if rs.record != nil { + rs.record(fieldName) + } + rs.recs = append(rs.recs, newRecs) +} + +func (rs *records) Append(v reflect.Value, accessors ...methodAndName) { + for _, a := range accessors { + if rs.record != nil { + rs.record(a.name) + } + var rv reflect.Value + if a.method.IsValid() { + rv = a.method.Call(nil)[0] + } + if v.Kind() == reflect.Struct && !rv.IsValid() { + rv = v.FieldByName(a.name) + } + if !rv.IsValid() { + panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a.name)) + } + if _, ok := rv.Interface().(protoreflect.Value); ok { + rv = rv.MethodByName("Interface").Call(nil)[0] + if !rv.IsNil() { + rv = rv.Elem() + } + } + + // Ignore zero values. + var isZero bool + switch rv.Kind() { + case reflect.Interface, reflect.Slice: + isZero = rv.IsNil() + case reflect.Bool: + isZero = rv.Bool() == false + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + isZero = rv.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + isZero = rv.Uint() == 0 + case reflect.String: + isZero = rv.String() == "" + } + if n, ok := rv.Interface().(list); ok { + isZero = n.Len() == 0 + } + if isZero { + continue + } + + // Format the value. + var s string + v := rv.Interface() + switch v := v.(type) { + case list: + s = formatListOpt(v, false, rs.allowMulti) + case protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor: + s = string(v.(protoreflect.Descriptor).Name()) + case protoreflect.Descriptor: + s = string(v.FullName()) + case string: + s = strconv.Quote(v) + case []byte: + s = fmt.Sprintf("%q", v) + default: + s = fmt.Sprint(v) + } + rs.recs = append(rs.recs, [2]string{a.name, s}) + } +} + +func (rs *records) Join() string { + var ss []string + + // In single line mode, simply join all records with commas. + if !rs.allowMulti { + for _, r := range rs.recs { + ss = append(ss, r[0]+formatColon(0)+r[1]) + } + return joinStrings(ss, false) + } + + // In allowMulti line mode, align single line records for more readable output. + var maxLen int + flush := func(i int) { + for _, r := range rs.recs[len(ss):i] { + ss = append(ss, r[0]+formatColon(maxLen-len(r[0]))+r[1]) + } + maxLen = 0 + } + for i, r := range rs.recs { + if isMulti := strings.Contains(r[1], "\n"); isMulti { + flush(i) + ss = append(ss, r[0]+formatColon(0)+strings.Join(strings.Split(r[1], "\n"), "\n\t")) + } else if maxLen < len(r[0]) { + maxLen = len(r[0]) + } + } + flush(len(rs.recs)) + return joinStrings(ss, true) +} + +func formatColon(padding int) string { + // Deliberately introduce instability into the debug output to + // discourage users from performing string comparisons. + // This provides us flexibility to change the output in the future. + if detrand.Bool() { + return ":" + strings.Repeat(" ", 1+padding) // use non-breaking spaces (U+00a0) + } else { + return ":" + strings.Repeat(" ", 1+padding) // use regular spaces (U+0020) + } +} + +func joinStrings(ss []string, isMulti bool) string { + if len(ss) == 0 { + return "" + } + if isMulti { + return "\n\t" + strings.Join(ss, "\n\t") + "\n" + } + return strings.Join(ss, ", ") +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go b/examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go new file mode 100644 index 0000000..8401be8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package descopts contains the nil pointers to concrete descriptor options. +// +// This package exists as a form of reverse dependency injection so that certain +// packages (e.g., internal/filedesc and internal/filetype can avoid a direct +// dependency on the descriptor proto package). +package descopts + +import pref "google.golang.org/protobuf/reflect/protoreflect" + +// These variables are set by the init function in descriptor.pb.go via logic +// in internal/filetype. In other words, so long as the descriptor proto package +// is linked in, these variables will be populated. +// +// Each variable is populated with a nil pointer to the options struct. +var ( + File pref.ProtoMessage + Enum pref.ProtoMessage + EnumValue pref.ProtoMessage + Message pref.ProtoMessage + Field pref.ProtoMessage + Oneof pref.ProtoMessage + ExtensionRange pref.ProtoMessage + Service pref.ProtoMessage + Method pref.ProtoMessage +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go b/examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go new file mode 100644 index 0000000..49c8676 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go @@ -0,0 +1,69 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package detrand provides deterministically random functionality. +// +// The pseudo-randomness of these functions is seeded by the program binary +// itself and guarantees that the output does not change within a program, +// while ensuring that the output is unstable across different builds. +package detrand + +import ( + "encoding/binary" + "hash/fnv" + "os" +) + +// Disable disables detrand such that all functions returns the zero value. +// This function is not concurrent-safe and must be called during program init. +func Disable() { + randSeed = 0 +} + +// Bool returns a deterministically random boolean. +func Bool() bool { + return randSeed%2 == 1 +} + +// Intn returns a deterministically random integer between 0 and n-1, inclusive. +func Intn(n int) int { + if n <= 0 { + panic("must be positive") + } + return int(randSeed % uint64(n)) +} + +// randSeed is a best-effort at an approximate hash of the Go binary. +var randSeed = binaryHash() + +func binaryHash() uint64 { + // Open the Go binary. + s, err := os.Executable() + if err != nil { + return 0 + } + f, err := os.Open(s) + if err != nil { + return 0 + } + defer f.Close() + + // Hash the size and several samples of the Go binary. + const numSamples = 8 + var buf [64]byte + h := fnv.New64() + fi, err := f.Stat() + if err != nil { + return 0 + } + binary.LittleEndian.PutUint64(buf[:8], uint64(fi.Size())) + h.Write(buf[:8]) + for i := int64(0); i < numSamples; i++ { + if _, err := f.ReadAt(buf[:], i*fi.Size()/numSamples); err != nil { + return 0 + } + h.Write(buf[:]) + } + return h.Sum64() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go b/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go new file mode 100644 index 0000000..14656b6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go @@ -0,0 +1,12 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package editiondefaults contains the binary representation of the editions +// defaults. +package editiondefaults + +import _ "embed" + +//go:embed editions_defaults.binpb +var Defaults []byte diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb b/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb new file mode 100644 index 0000000000000000000000000000000000000000..ff6a38360add36f53d48bb0863b701696e0d7b2d GIT binary patch literal 93 zcmd;*mUzal#C*w)K}(Q>QGiK;Nr72|(SYfa9TNv5m$bxlxFnMRqXeS@6Ht;7B*_4j Ve8H{+(u69m1u{(G8N0>{b^xZ!4_5#H literal 0 HcmV?d00001 diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go new file mode 100644 index 0000000..328dc73 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go @@ -0,0 +1,213 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package defval marshals and unmarshals textual forms of default values. +// +// This package handles both the form historically used in Go struct field tags +// and also the form used by google.protobuf.FieldDescriptorProto.default_value +// since they differ in superficial ways. +package defval + +import ( + "fmt" + "math" + "strconv" + + ptext "google.golang.org/protobuf/internal/encoding/text" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Format is the serialization format used to represent the default value. +type Format int + +const ( + _ Format = iota + + // Descriptor uses the serialization format that protoc uses with the + // google.protobuf.FieldDescriptorProto.default_value field. + Descriptor + + // GoTag uses the historical serialization format in Go struct field tags. + GoTag +) + +// Unmarshal deserializes the default string s according to the given kind k. +// When k is an enum, a list of enum value descriptors must be provided. +func Unmarshal(s string, k protoreflect.Kind, evs protoreflect.EnumValueDescriptors, f Format) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) { + switch k { + case protoreflect.BoolKind: + if f == GoTag { + switch s { + case "1": + return protoreflect.ValueOfBool(true), nil, nil + case "0": + return protoreflect.ValueOfBool(false), nil, nil + } + } else { + switch s { + case "true": + return protoreflect.ValueOfBool(true), nil, nil + case "false": + return protoreflect.ValueOfBool(false), nil, nil + } + } + case protoreflect.EnumKind: + if f == GoTag { + // Go tags use the numeric form of the enum value. + if n, err := strconv.ParseInt(s, 10, 32); err == nil { + if ev := evs.ByNumber(protoreflect.EnumNumber(n)); ev != nil { + return protoreflect.ValueOfEnum(ev.Number()), ev, nil + } + } + } else { + // Descriptor default_value use the enum identifier. + ev := evs.ByName(protoreflect.Name(s)) + if ev != nil { + return protoreflect.ValueOfEnum(ev.Number()), ev, nil + } + } + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + if v, err := strconv.ParseInt(s, 10, 32); err == nil { + return protoreflect.ValueOfInt32(int32(v)), nil, nil + } + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + if v, err := strconv.ParseInt(s, 10, 64); err == nil { + return protoreflect.ValueOfInt64(int64(v)), nil, nil + } + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + if v, err := strconv.ParseUint(s, 10, 32); err == nil { + return protoreflect.ValueOfUint32(uint32(v)), nil, nil + } + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + if v, err := strconv.ParseUint(s, 10, 64); err == nil { + return protoreflect.ValueOfUint64(uint64(v)), nil, nil + } + case protoreflect.FloatKind, protoreflect.DoubleKind: + var v float64 + var err error + switch s { + case "-inf": + v = math.Inf(-1) + case "inf": + v = math.Inf(+1) + case "nan": + v = math.NaN() + default: + v, err = strconv.ParseFloat(s, 64) + } + if err == nil { + if k == protoreflect.FloatKind { + return protoreflect.ValueOfFloat32(float32(v)), nil, nil + } else { + return protoreflect.ValueOfFloat64(float64(v)), nil, nil + } + } + case protoreflect.StringKind: + // String values are already unescaped and can be used as is. + return protoreflect.ValueOfString(s), nil, nil + case protoreflect.BytesKind: + if b, ok := unmarshalBytes(s); ok { + return protoreflect.ValueOfBytes(b), nil, nil + } + } + return protoreflect.Value{}, nil, errors.New("could not parse value for %v: %q", k, s) +} + +// Marshal serializes v as the default string according to the given kind k. +// When specifying the Descriptor format for an enum kind, the associated +// enum value descriptor must be provided. +func Marshal(v protoreflect.Value, ev protoreflect.EnumValueDescriptor, k protoreflect.Kind, f Format) (string, error) { + switch k { + case protoreflect.BoolKind: + if f == GoTag { + if v.Bool() { + return "1", nil + } else { + return "0", nil + } + } else { + if v.Bool() { + return "true", nil + } else { + return "false", nil + } + } + case protoreflect.EnumKind: + if f == GoTag { + return strconv.FormatInt(int64(v.Enum()), 10), nil + } else { + return string(ev.Name()), nil + } + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + return strconv.FormatInt(v.Int(), 10), nil + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + return strconv.FormatUint(v.Uint(), 10), nil + case protoreflect.FloatKind, protoreflect.DoubleKind: + f := v.Float() + switch { + case math.IsInf(f, -1): + return "-inf", nil + case math.IsInf(f, +1): + return "inf", nil + case math.IsNaN(f): + return "nan", nil + default: + if k == protoreflect.FloatKind { + return strconv.FormatFloat(f, 'g', -1, 32), nil + } else { + return strconv.FormatFloat(f, 'g', -1, 64), nil + } + } + case protoreflect.StringKind: + // String values are serialized as is without any escaping. + return v.String(), nil + case protoreflect.BytesKind: + if s, ok := marshalBytes(v.Bytes()); ok { + return s, nil + } + } + return "", errors.New("could not format value for %v: %v", k, v) +} + +// unmarshalBytes deserializes bytes by applying C unescaping. +func unmarshalBytes(s string) ([]byte, bool) { + // Bytes values use the same escaping as the text format, + // however they lack the surrounding double quotes. + v, err := ptext.UnmarshalString(`"` + s + `"`) + if err != nil { + return nil, false + } + return []byte(v), true +} + +// marshalBytes serializes bytes by using C escaping. +// To match the exact output of protoc, this is identical to the +// CEscape function in strutil.cc of the protoc source code. +func marshalBytes(b []byte) (string, bool) { + var s []byte + for _, c := range b { + switch c { + case '\n': + s = append(s, `\n`...) + case '\r': + s = append(s, `\r`...) + case '\t': + s = append(s, `\t`...) + case '"': + s = append(s, `\"`...) + case '\'': + s = append(s, `\'`...) + case '\\': + s = append(s, `\\`...) + default: + if printableASCII := c >= 0x20 && c <= 0x7e; printableASCII { + s = append(s, c) + } else { + s = append(s, fmt.Sprintf(`\%03o`, c)...) + } + } + } + return string(s), true +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go new file mode 100644 index 0000000..a6693f0 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go @@ -0,0 +1,242 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package messageset encodes and decodes the obsolete MessageSet wire format. +package messageset + +import ( + "math" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// The MessageSet wire format is equivalent to a message defined as follows, +// where each Item defines an extension field with a field number of 'type_id' +// and content of 'message'. MessageSet extensions must be non-repeated message +// fields. +// +// message MessageSet { +// repeated group Item = 1 { +// required int32 type_id = 2; +// required string message = 3; +// } +// } +const ( + FieldItem = protowire.Number(1) + FieldTypeID = protowire.Number(2) + FieldMessage = protowire.Number(3) +) + +// ExtensionName is the field name for extensions of MessageSet. +// +// A valid MessageSet extension must be of the form: +// +// message MyMessage { +// extend proto2.bridge.MessageSet { +// optional MyMessage message_set_extension = 1234; +// } +// ... +// } +const ExtensionName = "message_set_extension" + +// IsMessageSet returns whether the message uses the MessageSet wire format. +func IsMessageSet(md protoreflect.MessageDescriptor) bool { + xmd, ok := md.(interface{ IsMessageSet() bool }) + return ok && xmd.IsMessageSet() +} + +// IsMessageSetExtension reports this field properly extends a MessageSet. +func IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool { + switch { + case fd.Name() != ExtensionName: + return false + case !IsMessageSet(fd.ContainingMessage()): + return false + case fd.FullName().Parent() != fd.Message().FullName(): + return false + } + return true +} + +// SizeField returns the size of a MessageSet item field containing an extension +// with the given field number, not counting the contents of the message subfield. +func SizeField(num protowire.Number) int { + return 2*protowire.SizeTag(FieldItem) + protowire.SizeTag(FieldTypeID) + protowire.SizeVarint(uint64(num)) +} + +// Unmarshal parses a MessageSet. +// +// It calls fn with the type ID and value of each item in the MessageSet. +// Unknown fields are discarded. +// +// If wantLen is true, the item values include the varint length prefix. +// This is ugly, but simplifies the fast-path decoder in internal/impl. +func Unmarshal(b []byte, wantLen bool, fn func(typeID protowire.Number, value []byte) error) error { + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return protowire.ParseError(n) + } + b = b[n:] + if num != FieldItem || wtyp != protowire.StartGroupType { + n := protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return protowire.ParseError(n) + } + b = b[n:] + continue + } + typeID, value, n, err := ConsumeFieldValue(b, wantLen) + if err != nil { + return err + } + b = b[n:] + if typeID == 0 { + continue + } + if err := fn(typeID, value); err != nil { + return err + } + } + return nil +} + +// ConsumeFieldValue parses b as a MessageSet item field value until and including +// the trailing end group marker. It assumes the start group tag has already been parsed. +// It returns the contents of the type_id and message subfields and the total +// item length. +// +// If wantLen is true, the returned message value includes the length prefix. +func ConsumeFieldValue(b []byte, wantLen bool) (typeid protowire.Number, message []byte, n int, err error) { + ilen := len(b) + for { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + b = b[n:] + switch { + case num == FieldItem && wtyp == protowire.EndGroupType: + if wantLen && len(message) == 0 { + // The message field was missing, which should never happen. + // Be prepared for this case anyway. + message = protowire.AppendVarint(message, 0) + } + return typeid, message, ilen - len(b), nil + case num == FieldTypeID && wtyp == protowire.VarintType: + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + b = b[n:] + if v < 1 || v > math.MaxInt32 { + return 0, nil, 0, errors.New("invalid type_id in message set") + } + typeid = protowire.Number(v) + case num == FieldMessage && wtyp == protowire.BytesType: + m, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + if message == nil { + if wantLen { + message = b[:n:n] + } else { + message = m[:len(m):len(m)] + } + } else { + // This case should never happen in practice, but handle it for + // correctness: The MessageSet item contains multiple message + // fields, which need to be merged. + // + // In the case where we're returning the length, this becomes + // quite inefficient since we need to strip the length off + // the existing data and reconstruct it with the combined length. + if wantLen { + _, nn := protowire.ConsumeVarint(message) + m0 := message[nn:] + message = nil + message = protowire.AppendVarint(message, uint64(len(m0)+len(m))) + message = append(message, m0...) + message = append(message, m...) + } else { + message = append(message, m...) + } + } + b = b[n:] + default: + // We have no place to put it, so we just ignore unknown fields. + n := protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + b = b[n:] + } + } +} + +// AppendFieldStart appends the start of a MessageSet item field containing +// an extension with the given number. The caller must add the message +// subfield (including the tag). +func AppendFieldStart(b []byte, num protowire.Number) []byte { + b = protowire.AppendTag(b, FieldItem, protowire.StartGroupType) + b = protowire.AppendTag(b, FieldTypeID, protowire.VarintType) + b = protowire.AppendVarint(b, uint64(num)) + return b +} + +// AppendFieldEnd appends the trailing end group marker for a MessageSet item field. +func AppendFieldEnd(b []byte) []byte { + return protowire.AppendTag(b, FieldItem, protowire.EndGroupType) +} + +// SizeUnknown returns the size of an unknown fields section in MessageSet format. +// +// See AppendUnknown. +func SizeUnknown(unknown []byte) (size int) { + for len(unknown) > 0 { + num, typ, n := protowire.ConsumeTag(unknown) + if n < 0 || typ != protowire.BytesType { + return 0 + } + unknown = unknown[n:] + _, n = protowire.ConsumeBytes(unknown) + if n < 0 { + return 0 + } + unknown = unknown[n:] + size += SizeField(num) + protowire.SizeTag(FieldMessage) + n + } + return size +} + +// AppendUnknown appends unknown fields to b in MessageSet format. +// +// For historic reasons, unresolved items in a MessageSet are stored in a +// message's unknown fields section in non-MessageSet format. That is, an +// unknown item with typeID T and value V appears in the unknown fields as +// a field with number T and value V. +// +// This function converts the unknown fields back into MessageSet form. +func AppendUnknown(b, unknown []byte) ([]byte, error) { + for len(unknown) > 0 { + num, typ, n := protowire.ConsumeTag(unknown) + if n < 0 || typ != protowire.BytesType { + return nil, errors.New("invalid data in message set unknown fields") + } + unknown = unknown[n:] + _, n = protowire.ConsumeBytes(unknown) + if n < 0 { + return nil, errors.New("invalid data in message set unknown fields") + } + b = AppendFieldStart(b, num) + b = protowire.AppendTag(b, FieldMessage, protowire.BytesType) + b = append(b, unknown[:n]...) + b = AppendFieldEnd(b) + unknown = unknown[n:] + } + return b, nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go new file mode 100644 index 0000000..7e87c76 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go @@ -0,0 +1,207 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package tag marshals and unmarshals the legacy struct tags as generated +// by historical versions of protoc-gen-go. +package tag + +import ( + "reflect" + "strconv" + "strings" + + "google.golang.org/protobuf/internal/encoding/defval" + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var byteType = reflect.TypeOf(byte(0)) + +// Unmarshal decodes the tag into a prototype.Field. +// +// The goType is needed to determine the original protoreflect.Kind since the +// tag does not record sufficient information to determine that. +// The type is the underlying field type (e.g., a repeated field may be +// represented by []T, but the Go type passed in is just T). +// A list of enum value descriptors must be provided for enum fields. +// This does not populate the Enum or Message (except for weak message). +// +// This function is a best effort attempt; parsing errors are ignored. +func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor { + f := new(filedesc.Field) + f.L0.ParentFile = filedesc.SurrogateProto2 + f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures + for len(tag) > 0 { + i := strings.IndexByte(tag, ',') + if i < 0 { + i = len(tag) + } + switch s := tag[:i]; { + case strings.HasPrefix(s, "name="): + f.L0.FullName = protoreflect.FullName(s[len("name="):]) + case strings.Trim(s, "0123456789") == "": + n, _ := strconv.ParseUint(s, 10, 32) + f.L1.Number = protoreflect.FieldNumber(n) + case s == "opt": + f.L1.Cardinality = protoreflect.Optional + case s == "req": + f.L1.Cardinality = protoreflect.Required + case s == "rep": + f.L1.Cardinality = protoreflect.Repeated + case s == "varint": + switch goType.Kind() { + case reflect.Bool: + f.L1.Kind = protoreflect.BoolKind + case reflect.Int32: + f.L1.Kind = protoreflect.Int32Kind + case reflect.Int64: + f.L1.Kind = protoreflect.Int64Kind + case reflect.Uint32: + f.L1.Kind = protoreflect.Uint32Kind + case reflect.Uint64: + f.L1.Kind = protoreflect.Uint64Kind + } + case s == "zigzag32": + if goType.Kind() == reflect.Int32 { + f.L1.Kind = protoreflect.Sint32Kind + } + case s == "zigzag64": + if goType.Kind() == reflect.Int64 { + f.L1.Kind = protoreflect.Sint64Kind + } + case s == "fixed32": + switch goType.Kind() { + case reflect.Int32: + f.L1.Kind = protoreflect.Sfixed32Kind + case reflect.Uint32: + f.L1.Kind = protoreflect.Fixed32Kind + case reflect.Float32: + f.L1.Kind = protoreflect.FloatKind + } + case s == "fixed64": + switch goType.Kind() { + case reflect.Int64: + f.L1.Kind = protoreflect.Sfixed64Kind + case reflect.Uint64: + f.L1.Kind = protoreflect.Fixed64Kind + case reflect.Float64: + f.L1.Kind = protoreflect.DoubleKind + } + case s == "bytes": + switch { + case goType.Kind() == reflect.String: + f.L1.Kind = protoreflect.StringKind + case goType.Kind() == reflect.Slice && goType.Elem() == byteType: + f.L1.Kind = protoreflect.BytesKind + default: + f.L1.Kind = protoreflect.MessageKind + } + case s == "group": + f.L1.Kind = protoreflect.GroupKind + case strings.HasPrefix(s, "enum="): + f.L1.Kind = protoreflect.EnumKind + case strings.HasPrefix(s, "json="): + jsonName := s[len("json="):] + if jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) { + f.L1.StringName.InitJSON(jsonName) + } + case s == "packed": + f.L1.EditionFeatures.IsPacked = true + case strings.HasPrefix(s, "weak="): + f.L1.IsWeak = true + f.L1.Message = filedesc.PlaceholderMessage(protoreflect.FullName(s[len("weak="):])) + case strings.HasPrefix(s, "def="): + // The default tag is special in that everything afterwards is the + // default regardless of the presence of commas. + s, i = tag[len("def="):], len(tag) + v, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag) + f.L1.Default = filedesc.DefaultValue(v, ev) + case s == "proto3": + f.L0.ParentFile = filedesc.SurrogateProto3 + } + tag = strings.TrimPrefix(tag[i:], ",") + } + + // The generator uses the group message name instead of the field name. + // We obtain the real field name by lowercasing the group name. + if f.L1.Kind == protoreflect.GroupKind { + f.L0.FullName = protoreflect.FullName(strings.ToLower(string(f.L0.FullName))) + } + return f +} + +// Marshal encodes the protoreflect.FieldDescriptor as a tag. +// +// The enumName must be provided if the kind is an enum. +// Historically, the formulation of the enum "name" was the proto package +// dot-concatenated with the generated Go identifier for the enum type. +// Depending on the context on how Marshal is called, there are different ways +// through which that information is determined. As such it is the caller's +// responsibility to provide a function to obtain that information. +func Marshal(fd protoreflect.FieldDescriptor, enumName string) string { + var tag []string + switch fd.Kind() { + case protoreflect.BoolKind, protoreflect.EnumKind, protoreflect.Int32Kind, protoreflect.Uint32Kind, protoreflect.Int64Kind, protoreflect.Uint64Kind: + tag = append(tag, "varint") + case protoreflect.Sint32Kind: + tag = append(tag, "zigzag32") + case protoreflect.Sint64Kind: + tag = append(tag, "zigzag64") + case protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind: + tag = append(tag, "fixed32") + case protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind: + tag = append(tag, "fixed64") + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind: + tag = append(tag, "bytes") + case protoreflect.GroupKind: + tag = append(tag, "group") + } + tag = append(tag, strconv.Itoa(int(fd.Number()))) + switch fd.Cardinality() { + case protoreflect.Optional: + tag = append(tag, "opt") + case protoreflect.Required: + tag = append(tag, "req") + case protoreflect.Repeated: + tag = append(tag, "rep") + } + if fd.IsPacked() { + tag = append(tag, "packed") + } + name := string(fd.Name()) + if fd.Kind() == protoreflect.GroupKind { + // The name of the FieldDescriptor for a group field is + // lowercased. To find the original capitalization, we + // look in the field's MessageType. + name = string(fd.Message().Name()) + } + tag = append(tag, "name="+name) + if jsonName := fd.JSONName(); jsonName != "" && jsonName != name && !fd.IsExtension() { + // NOTE: The jsonName != name condition is suspect, but it preserve + // the exact same semantics from the previous generator. + tag = append(tag, "json="+jsonName) + } + if fd.IsWeak() { + tag = append(tag, "weak="+string(fd.Message().FullName())) + } + // The previous implementation does not tag extension fields as proto3, + // even when the field is defined in a proto3 file. Match that behavior + // for consistency. + if fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension() { + tag = append(tag, "proto3") + } + if fd.Kind() == protoreflect.EnumKind && enumName != "" { + tag = append(tag, "enum="+enumName) + } + if fd.ContainingOneof() != nil { + tag = append(tag, "oneof") + } + // This must appear last in the tag, since commas in strings aren't escaped. + if fd.HasDefault() { + def, _ := defval.Marshal(fd.Default(), fd.DefaultEnumValue(), fd.Kind(), defval.GoTag) + tag = append(tag, "def="+def) + } + return strings.Join(tag, ",") +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go new file mode 100644 index 0000000..099b2bf --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go @@ -0,0 +1,686 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "bytes" + "fmt" + "io" + "strconv" + "unicode/utf8" + + "google.golang.org/protobuf/internal/errors" +) + +// Decoder is a token-based textproto decoder. +type Decoder struct { + // lastCall is last method called, either readCall or peekCall. + // Initial value is readCall. + lastCall call + + // lastToken contains the last read token. + lastToken Token + + // lastErr contains the last read error. + lastErr error + + // openStack is a stack containing the byte characters for MessageOpen and + // ListOpen kinds. The top of stack represents the message or the list that + // the current token is nested in. An empty stack means the current token is + // at the top level message. The characters '{' and '<' both represent the + // MessageOpen kind. + openStack []byte + + // orig is used in reporting line and column. + orig []byte + // in contains the unconsumed input. + in []byte +} + +// NewDecoder returns a Decoder to read the given []byte. +func NewDecoder(b []byte) *Decoder { + return &Decoder{orig: b, in: b} +} + +// ErrUnexpectedEOF means that EOF was encountered in the middle of the input. +var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF) + +// call specifies which Decoder method was invoked. +type call uint8 + +const ( + readCall call = iota + peekCall +) + +// Peek looks ahead and returns the next token and error without advancing a read. +func (d *Decoder) Peek() (Token, error) { + defer func() { d.lastCall = peekCall }() + if d.lastCall == readCall { + d.lastToken, d.lastErr = d.Read() + } + return d.lastToken, d.lastErr +} + +// Read returns the next token. +// It will return an error if there is no valid token. +func (d *Decoder) Read() (Token, error) { + defer func() { d.lastCall = readCall }() + if d.lastCall == peekCall { + return d.lastToken, d.lastErr + } + + tok, err := d.parseNext(d.lastToken.kind) + if err != nil { + return Token{}, err + } + + switch tok.kind { + case comma, semicolon: + tok, err = d.parseNext(tok.kind) + if err != nil { + return Token{}, err + } + } + d.lastToken = tok + return tok, nil +} + +const ( + mismatchedFmt = "mismatched close character %q" + unexpectedFmt = "unexpected character %q" +) + +// parseNext parses the next Token based on given last kind. +func (d *Decoder) parseNext(lastKind Kind) (Token, error) { + // Trim leading spaces. + d.consume(0) + isEOF := false + if len(d.in) == 0 { + isEOF = true + } + + switch lastKind { + case EOF: + return d.consumeToken(EOF, 0, 0), nil + + case bof: + // Start of top level message. Next token can be EOF or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + return d.parseFieldName() + + case Name: + // Next token can be MessageOpen, ListOpen or Scalar. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case '{', '<': + d.pushOpenStack(ch) + return d.consumeToken(MessageOpen, 1, 0), nil + case '[': + d.pushOpenStack(ch) + return d.consumeToken(ListOpen, 1, 0), nil + default: + return d.parseScalar() + } + + case Scalar: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. + // Next token can be EOF, comma, semicolon or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + switch d.in[0] { + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case MessageOpen: + // Next token can be MessageClose, comma, semicolon or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case ListOpen: + // Next token can be ListClose or comma. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case ']': + d.popOpenStack() + return d.consumeToken(ListClose, 1, 0), nil + case ',': + return d.consumeToken(comma, 1, 0), nil + default: + return Token{}, d.newSyntaxError(unexpectedFmt, ch) + } + } + + case MessageOpen: + // Next token can be MessageClose or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + _, closeCh := d.currentOpenKind() + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + default: + return d.parseFieldName() + } + + case MessageClose: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. + // Next token can be EOF, comma, semicolon or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + switch ch := d.in[0]; ch { + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case MessageOpen: + // Next token can be MessageClose, comma, semicolon or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case ListOpen: + // Next token can be ListClose or comma + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(ListClose, 1, 0), nil + case ',': + return d.consumeToken(comma, 1, 0), nil + default: + return Token{}, d.newSyntaxError(unexpectedFmt, ch) + } + } + + case ListOpen: + // Next token can be ListClose, MessageStart or Scalar. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case ']': + d.popOpenStack() + return d.consumeToken(ListClose, 1, 0), nil + case '{', '<': + d.pushOpenStack(ch) + return d.consumeToken(MessageOpen, 1, 0), nil + default: + return d.parseScalar() + } + + case ListClose: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. + // Next token can be EOF, comma, semicolon or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + switch ch := d.in[0]; ch { + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case MessageOpen: + // Next token can be MessageClose, comma, semicolon or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + default: + // It is not possible to have this case. Let it panic below. + } + + case comma, semicolon: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. Next token can be EOF or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + return d.parseFieldName() + + case MessageOpen: + // Next token can be MessageClose or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + default: + return d.parseFieldName() + } + + case ListOpen: + if lastKind == semicolon { + // It is not be possible to have this case as logic here + // should not have produced a semicolon Token when inside a + // list. Let it panic below. + break + } + // Next token can be MessageOpen or Scalar. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case '{', '<': + d.pushOpenStack(ch) + return d.consumeToken(MessageOpen, 1, 0), nil + default: + return d.parseScalar() + } + } + } + + line, column := d.Position(len(d.orig) - len(d.in)) + panic(fmt.Sprintf("Decoder.parseNext: bug at handling line %d:%d with lastKind=%v", line, column, lastKind)) +} + +var otherCloseChar = map[byte]byte{ + '}': '>', + '>': '}', +} + +// currentOpenKind indicates whether current position is inside a message, list +// or top-level message by returning MessageOpen, ListOpen or bof respectively. +// If the returned kind is either a MessageOpen or ListOpen, it also returns the +// corresponding closing character. +func (d *Decoder) currentOpenKind() (Kind, byte) { + if len(d.openStack) == 0 { + return bof, 0 + } + openCh := d.openStack[len(d.openStack)-1] + switch openCh { + case '{': + return MessageOpen, '}' + case '<': + return MessageOpen, '>' + case '[': + return ListOpen, ']' + } + panic(fmt.Sprintf("Decoder: openStack contains invalid byte %c", openCh)) +} + +func (d *Decoder) pushOpenStack(ch byte) { + d.openStack = append(d.openStack, ch) +} + +func (d *Decoder) popOpenStack() { + d.openStack = d.openStack[:len(d.openStack)-1] +} + +// parseFieldName parses field name and separator. +func (d *Decoder) parseFieldName() (tok Token, err error) { + defer func() { + if err == nil && d.tryConsumeChar(':') { + tok.attrs |= hasSeparator + } + }() + + // Extension or Any type URL. + if d.in[0] == '[' { + return d.parseTypeName() + } + + // Identifier. + if size := parseIdent(d.in, false); size > 0 { + return d.consumeToken(Name, size, uint8(IdentName)), nil + } + + // Field number. Identify if input is a valid number that is not negative + // and is decimal integer within 32-bit range. + if num := parseNumber(d.in); num.size > 0 { + str := num.string(d.in) + if !num.neg && num.kind == numDec { + if _, err := strconv.ParseInt(str, 10, 32); err == nil { + return d.consumeToken(Name, num.size, uint8(FieldNumber)), nil + } + } + return Token{}, d.newSyntaxError("invalid field number: %s", str) + } + + return Token{}, d.newSyntaxError("invalid field name: %s", errId(d.in)) +} + +// parseTypeName parses Any type URL or extension field name. The name is +// enclosed in [ and ] characters. The C++ parser does not handle many legal URL +// strings. This implementation is more liberal and allows for the pattern +// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed +// in between [ ], '.', '/' and the sub names. +func (d *Decoder) parseTypeName() (Token, error) { + startPos := len(d.orig) - len(d.in) + // Use alias s to advance first in order to use d.in for error handling. + // Caller already checks for [ as first character. + s := consume(d.in[1:], 0) + if len(s) == 0 { + return Token{}, ErrUnexpectedEOF + } + + var name []byte + for len(s) > 0 && isTypeNameChar(s[0]) { + name = append(name, s[0]) + s = s[1:] + } + s = consume(s, 0) + + var closed bool + for len(s) > 0 && !closed { + switch { + case s[0] == ']': + s = s[1:] + closed = true + + case s[0] == '/', s[0] == '.': + if len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') { + return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s", + d.orig[startPos:len(d.orig)-len(s)+1]) + } + name = append(name, s[0]) + s = s[1:] + s = consume(s, 0) + for len(s) > 0 && isTypeNameChar(s[0]) { + name = append(name, s[0]) + s = s[1:] + } + s = consume(s, 0) + + default: + return Token{}, d.newSyntaxError( + "invalid type URL/extension field name: %s", d.orig[startPos:len(d.orig)-len(s)+1]) + } + } + + if !closed { + return Token{}, ErrUnexpectedEOF + } + + // First character cannot be '.'. Last character cannot be '.' or '/'. + size := len(name) + if size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' { + return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s", + d.orig[startPos:len(d.orig)-len(s)]) + } + + d.in = s + endPos := len(d.orig) - len(d.in) + d.consume(0) + + return Token{ + kind: Name, + attrs: uint8(TypeName), + pos: startPos, + raw: d.orig[startPos:endPos], + str: string(name), + }, nil +} + +func isTypeNameChar(b byte) bool { + return (b == '-' || b == '_' || + ('0' <= b && b <= '9') || + ('a' <= b && b <= 'z') || + ('A' <= b && b <= 'Z')) +} + +func isWhiteSpace(b byte) bool { + switch b { + case ' ', '\n', '\r', '\t': + return true + default: + return false + } +} + +// parseIdent parses an unquoted proto identifier and returns size. +// If allowNeg is true, it allows '-' to be the first character in the +// identifier. This is used when parsing literal values like -infinity, etc. +// Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*` +func parseIdent(input []byte, allowNeg bool) int { + var size int + + s := input + if len(s) == 0 { + return 0 + } + + if allowNeg && s[0] == '-' { + s = s[1:] + size++ + if len(s) == 0 { + return 0 + } + } + + switch { + case s[0] == '_', + 'a' <= s[0] && s[0] <= 'z', + 'A' <= s[0] && s[0] <= 'Z': + s = s[1:] + size++ + default: + return 0 + } + + for len(s) > 0 && (s[0] == '_' || + 'a' <= s[0] && s[0] <= 'z' || + 'A' <= s[0] && s[0] <= 'Z' || + '0' <= s[0] && s[0] <= '9') { + s = s[1:] + size++ + } + + if len(s) > 0 && !isDelim(s[0]) { + return 0 + } + + return size +} + +// parseScalar parses for a string, literal or number value. +func (d *Decoder) parseScalar() (Token, error) { + if d.in[0] == '"' || d.in[0] == '\'' { + return d.parseStringValue() + } + + if tok, ok := d.parseLiteralValue(); ok { + return tok, nil + } + + if tok, ok := d.parseNumberValue(); ok { + return tok, nil + } + + return Token{}, d.newSyntaxError("invalid scalar value: %s", errId(d.in)) +} + +// parseLiteralValue parses a literal value. A literal value is used for +// bools, special floats and enums. This function simply identifies that the +// field value is a literal. +func (d *Decoder) parseLiteralValue() (Token, bool) { + size := parseIdent(d.in, true) + if size == 0 { + return Token{}, false + } + return d.consumeToken(Scalar, size, literalValue), true +} + +// consumeToken constructs a Token for given Kind from d.in and consumes given +// size-length from it. +func (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token { + // Important to compute raw and pos before consuming. + tok := Token{ + kind: kind, + attrs: attrs, + pos: len(d.orig) - len(d.in), + raw: d.in[:size], + } + d.consume(size) + return tok +} + +// newSyntaxError returns a syntax error with line and column information for +// current position. +func (d *Decoder) newSyntaxError(f string, x ...any) error { + e := errors.New(f, x...) + line, column := d.Position(len(d.orig) - len(d.in)) + return errors.New("syntax error (line %d:%d): %v", line, column, e) +} + +// Position returns line and column number of given index of the original input. +// It will panic if index is out of range. +func (d *Decoder) Position(idx int) (line int, column int) { + b := d.orig[:idx] + line = bytes.Count(b, []byte("\n")) + 1 + if i := bytes.LastIndexByte(b, '\n'); i >= 0 { + b = b[i+1:] + } + column = utf8.RuneCount(b) + 1 // ignore multi-rune characters + return line, column +} + +func (d *Decoder) tryConsumeChar(c byte) bool { + if len(d.in) > 0 && d.in[0] == c { + d.consume(1) + return true + } + return false +} + +// consume consumes n bytes of input and any subsequent whitespace or comments. +func (d *Decoder) consume(n int) { + d.in = consume(d.in, n) + return +} + +// consume consumes n bytes of input and any subsequent whitespace or comments. +func consume(b []byte, n int) []byte { + b = b[n:] + for len(b) > 0 { + switch b[0] { + case ' ', '\n', '\r', '\t': + b = b[1:] + case '#': + if i := bytes.IndexByte(b, '\n'); i >= 0 { + b = b[i+len("\n"):] + } else { + b = nil + } + default: + return b + } + } + return b +} + +// errId extracts a byte sequence that looks like an invalid ID +// (for the purposes of error reporting). +func errId(seq []byte) []byte { + const maxLen = 32 + for i := 0; i < len(seq); { + if i > maxLen { + return append(seq[:i:i], "…"...) + } + r, size := utf8.DecodeRune(seq[i:]) + if r > utf8.RuneSelf || (r != '/' && isDelim(byte(r))) { + if i == 0 { + // Either the first byte is invalid UTF-8 or a + // delimiter, or the first rune is non-ASCII. + // Return it as-is. + i = size + } + return seq[:i:i] + } + i += size + } + // No delimiter found. + return seq +} + +// isDelim returns true if given byte is a delimiter character. +func isDelim(c byte) bool { + return !(c == '-' || c == '+' || c == '.' || c == '_' || + ('a' <= c && c <= 'z') || + ('A' <= c && c <= 'Z') || + ('0' <= c && c <= '9')) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go new file mode 100644 index 0000000..45c81f0 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go @@ -0,0 +1,211 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +// parseNumberValue parses a number from the input and returns a Token object. +func (d *Decoder) parseNumberValue() (Token, bool) { + in := d.in + num := parseNumber(in) + if num.size == 0 { + return Token{}, false + } + numAttrs := num.kind + if num.neg { + numAttrs |= isNegative + } + tok := Token{ + kind: Scalar, + attrs: numberValue, + pos: len(d.orig) - len(d.in), + raw: d.in[:num.size], + str: num.string(d.in), + numAttrs: numAttrs, + } + d.consume(num.size) + return tok, true +} + +const ( + numDec uint8 = (1 << iota) / 2 + numHex + numOct + numFloat +) + +// number is the result of parsing out a valid number from parseNumber. It +// contains data for doing float or integer conversion via the strconv package +// in conjunction with the input bytes. +type number struct { + kind uint8 + neg bool + size int + // if neg, this is the length of whitespace and comments between + // the minus sign and the rest fo the number literal + sep int +} + +func (num number) string(data []byte) string { + strSize := num.size + last := num.size - 1 + if num.kind == numFloat && (data[last] == 'f' || data[last] == 'F') { + strSize = last + } + if num.neg && num.sep > 0 { + // strip whitespace/comments between negative sign and the rest + strLen := strSize - num.sep + str := make([]byte, strLen) + str[0] = data[0] + copy(str[1:], data[num.sep+1:strSize]) + return string(str) + } + return string(data[:strSize]) + +} + +// parseNumber constructs a number object from given input. It allows for the +// following patterns: +// +// integer: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*) +// float: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?) +// +// It also returns the number of parsed bytes for the given number, 0 if it is +// not a number. +func parseNumber(input []byte) number { + kind := numDec + var size int + var neg bool + + s := input + if len(s) == 0 { + return number{} + } + + // Optional - + var sep int + if s[0] == '-' { + neg = true + s = s[1:] + size++ + // Consume any whitespace or comments between the + // negative sign and the rest of the number + lenBefore := len(s) + s = consume(s, 0) + sep = lenBefore - len(s) + size += sep + if len(s) == 0 { + return number{} + } + } + + switch { + case s[0] == '0': + if len(s) > 1 { + switch { + case s[1] == 'x' || s[1] == 'X': + // Parse as hex number. + kind = numHex + n := 2 + s = s[2:] + for len(s) > 0 && (('0' <= s[0] && s[0] <= '9') || + ('a' <= s[0] && s[0] <= 'f') || + ('A' <= s[0] && s[0] <= 'F')) { + s = s[1:] + n++ + } + if n == 2 { + return number{} + } + size += n + + case '0' <= s[1] && s[1] <= '7': + // Parse as octal number. + kind = numOct + n := 2 + s = s[2:] + for len(s) > 0 && '0' <= s[0] && s[0] <= '7' { + s = s[1:] + n++ + } + size += n + } + + if kind&(numHex|numOct) > 0 { + if len(s) > 0 && !isDelim(s[0]) { + return number{} + } + return number{kind: kind, neg: neg, size: size, sep: sep} + } + } + s = s[1:] + size++ + + case '1' <= s[0] && s[0] <= '9': + n := 1 + s = s[1:] + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + n++ + } + size += n + + case s[0] == '.': + // Set kind to numFloat to signify the intent to parse as float. And + // that it needs to have other digits after '.'. + kind = numFloat + + default: + return number{} + } + + // . followed by 0 or more digits. + if len(s) > 0 && s[0] == '.' { + n := 1 + s = s[1:] + // If decimal point was before any digits, it should be followed by + // other digits. + if len(s) == 0 && kind == numFloat { + return number{} + } + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + n++ + } + size += n + kind = numFloat + } + + // e or E followed by an optional - or + and 1 or more digits. + if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') { + kind = numFloat + s = s[1:] + n := 1 + if s[0] == '+' || s[0] == '-' { + s = s[1:] + n++ + if len(s) == 0 { + return number{} + } + } + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + n++ + } + size += n + } + + // Optional suffix f or F for floats. + if len(s) > 0 && (s[0] == 'f' || s[0] == 'F') { + kind = numFloat + s = s[1:] + size++ + } + + // Check that next byte is a delimiter or it is at the end. + if len(s) > 0 && !isDelim(s[0]) { + return number{} + } + + return number{kind: kind, neg: neg, size: size, sep: sep} +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go new file mode 100644 index 0000000..d4d3490 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go @@ -0,0 +1,161 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "bytes" + "strconv" + "strings" + "unicode" + "unicode/utf16" + "unicode/utf8" + + "google.golang.org/protobuf/internal/strs" +) + +// parseStringValue parses string field token. +// This differs from parseString since the text format allows +// multiple back-to-back string literals where they are semantically treated +// as a single large string with all values concatenated. +// +// E.g., `"foo" "bar" "baz"` => "foobarbaz" +func (d *Decoder) parseStringValue() (Token, error) { + // Note that the ending quote is sufficient to unambiguously mark the end + // of a string. Thus, the text grammar does not require intervening + // whitespace or control characters in-between strings. + // Thus, the following is valid: + // `"foo"'bar'"baz"` => "foobarbaz" + in0 := d.in + var ss []string + for len(d.in) > 0 && (d.in[0] == '"' || d.in[0] == '\'') { + s, err := d.parseString() + if err != nil { + return Token{}, err + } + ss = append(ss, s) + } + // d.in already points to the end of the value at this point. + return Token{ + kind: Scalar, + attrs: stringValue, + pos: len(d.orig) - len(in0), + raw: in0[:len(in0)-len(d.in)], + str: strings.Join(ss, ""), + }, nil +} + +// parseString parses a string value enclosed in " or '. +func (d *Decoder) parseString() (string, error) { + in := d.in + if len(in) == 0 { + return "", ErrUnexpectedEOF + } + quote := in[0] + in = in[1:] + i := indexNeedEscapeInBytes(in) + in, out := in[i:], in[:i:i] // set cap to prevent mutations + for len(in) > 0 { + switch r, n := utf8.DecodeRune(in); { + case r == utf8.RuneError && n == 1: + return "", d.newSyntaxError("invalid UTF-8 detected") + case r == 0 || r == '\n': + return "", d.newSyntaxError("invalid character %q in string", r) + case r == rune(quote): + in = in[1:] + d.consume(len(d.in) - len(in)) + return string(out), nil + case r == '\\': + if len(in) < 2 { + return "", ErrUnexpectedEOF + } + switch r := in[1]; r { + case '"', '\'', '\\', '?': + in, out = in[2:], append(out, r) + case 'a': + in, out = in[2:], append(out, '\a') + case 'b': + in, out = in[2:], append(out, '\b') + case 'n': + in, out = in[2:], append(out, '\n') + case 'r': + in, out = in[2:], append(out, '\r') + case 't': + in, out = in[2:], append(out, '\t') + case 'v': + in, out = in[2:], append(out, '\v') + case 'f': + in, out = in[2:], append(out, '\f') + case '0', '1', '2', '3', '4', '5', '6', '7': + // One, two, or three octal characters. + n := len(in[1:]) - len(bytes.TrimLeft(in[1:], "01234567")) + if n > 3 { + n = 3 + } + v, err := strconv.ParseUint(string(in[1:1+n]), 8, 8) + if err != nil { + return "", d.newSyntaxError("invalid octal escape code %q in string", in[:1+n]) + } + in, out = in[1+n:], append(out, byte(v)) + case 'x': + // One or two hexadecimal characters. + n := len(in[2:]) - len(bytes.TrimLeft(in[2:], "0123456789abcdefABCDEF")) + if n > 2 { + n = 2 + } + v, err := strconv.ParseUint(string(in[2:2+n]), 16, 8) + if err != nil { + return "", d.newSyntaxError("invalid hex escape code %q in string", in[:2+n]) + } + in, out = in[2+n:], append(out, byte(v)) + case 'u', 'U': + // Four or eight hexadecimal characters + n := 6 + if r == 'U' { + n = 10 + } + if len(in) < n { + return "", ErrUnexpectedEOF + } + v, err := strconv.ParseUint(string(in[2:n]), 16, 32) + if utf8.MaxRune < v || err != nil { + return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:n]) + } + in = in[n:] + + r := rune(v) + if utf16.IsSurrogate(r) { + if len(in) < 6 { + return "", ErrUnexpectedEOF + } + v, err := strconv.ParseUint(string(in[2:6]), 16, 16) + r = utf16.DecodeRune(r, rune(v)) + if in[0] != '\\' || in[1] != 'u' || r == unicode.ReplacementChar || err != nil { + return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:6]) + } + in = in[6:] + } + out = append(out, string(r)...) + default: + return "", d.newSyntaxError("invalid escape code %q in string", in[:2]) + } + default: + i := indexNeedEscapeInBytes(in[n:]) + in, out = in[n+i:], append(out, in[:n+i]...) + } + } + return "", ErrUnexpectedEOF +} + +// indexNeedEscapeInString returns the index of the character that needs +// escaping. If no characters need escaping, this returns the input length. +func indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) } + +// UnmarshalString returns an unescaped string given a textproto string value. +// String value needs to contain single or double quotes. This is only used by +// internal/encoding/defval package for unmarshaling bytes. +func UnmarshalString(s string) (string, error) { + d := NewDecoder([]byte(s)) + return d.parseString() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go new file mode 100644 index 0000000..83d2b0d --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go @@ -0,0 +1,373 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "bytes" + "fmt" + "math" + "strconv" + "strings" + + "google.golang.org/protobuf/internal/flags" +) + +// Kind represents a token kind expressible in the textproto format. +type Kind uint8 + +// Kind values. +const ( + Invalid Kind = iota + EOF + Name // Name indicates the field name. + Scalar // Scalar are scalar values, e.g. "string", 47, ENUM_LITERAL, true. + MessageOpen + MessageClose + ListOpen + ListClose + + // comma and semi-colon are only for parsing in between values and should not be exposed. + comma + semicolon + + // bof indicates beginning of file, which is the default token + // kind at the beginning of parsing. + bof = Invalid +) + +func (t Kind) String() string { + switch t { + case Invalid: + return "" + case EOF: + return "eof" + case Scalar: + return "scalar" + case Name: + return "name" + case MessageOpen: + return "{" + case MessageClose: + return "}" + case ListOpen: + return "[" + case ListClose: + return "]" + case comma: + return "," + case semicolon: + return ";" + default: + return fmt.Sprintf("", uint8(t)) + } +} + +// NameKind represents different types of field names. +type NameKind uint8 + +// NameKind values. +const ( + IdentName NameKind = iota + 1 + TypeName + FieldNumber +) + +func (t NameKind) String() string { + switch t { + case IdentName: + return "IdentName" + case TypeName: + return "TypeName" + case FieldNumber: + return "FieldNumber" + default: + return fmt.Sprintf("", uint8(t)) + } +} + +// Bit mask in Token.attrs to indicate if a Name token is followed by the +// separator char ':'. The field name separator char is optional for message +// field or repeated message field, but required for all other types. Decoder +// simply indicates whether a Name token is followed by separator or not. It is +// up to the prototext package to validate. +const hasSeparator = 1 << 7 + +// Scalar value types. +const ( + numberValue = iota + 1 + stringValue + literalValue +) + +// Bit mask in Token.numAttrs to indicate that the number is a negative. +const isNegative = 1 << 7 + +// Token provides a parsed token kind and value. Values are provided by the +// different accessor methods. +type Token struct { + // Kind of the Token object. + kind Kind + // attrs contains metadata for the following Kinds: + // Name: hasSeparator bit and one of NameKind. + // Scalar: one of numberValue, stringValue, literalValue. + attrs uint8 + // numAttrs contains metadata for numberValue: + // - highest bit is whether negative or positive. + // - lower bits indicate one of numDec, numHex, numOct, numFloat. + numAttrs uint8 + // pos provides the position of the token in the original input. + pos int + // raw bytes of the serialized token. + // This is a subslice into the original input. + raw []byte + // str contains parsed string for the following: + // - stringValue of Scalar kind + // - numberValue of Scalar kind + // - TypeName of Name kind + str string +} + +// Kind returns the token kind. +func (t Token) Kind() Kind { + return t.kind +} + +// RawString returns the read value in string. +func (t Token) RawString() string { + return string(t.raw) +} + +// Pos returns the token position from the input. +func (t Token) Pos() int { + return t.pos +} + +// NameKind returns IdentName, TypeName or FieldNumber. +// It panics if type is not Name. +func (t Token) NameKind() NameKind { + if t.kind == Name { + return NameKind(t.attrs &^ hasSeparator) + } + panic(fmt.Sprintf("Token is not a Name type: %s", t.kind)) +} + +// HasSeparator returns true if the field name is followed by the separator char +// ':', else false. It panics if type is not Name. +func (t Token) HasSeparator() bool { + if t.kind == Name { + return t.attrs&hasSeparator != 0 + } + panic(fmt.Sprintf("Token is not a Name type: %s", t.kind)) +} + +// IdentName returns the value for IdentName type. +func (t Token) IdentName() string { + if t.kind == Name && t.attrs&uint8(IdentName) != 0 { + return string(t.raw) + } + panic(fmt.Sprintf("Token is not an IdentName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) +} + +// TypeName returns the value for TypeName type. +func (t Token) TypeName() string { + if t.kind == Name && t.attrs&uint8(TypeName) != 0 { + return t.str + } + panic(fmt.Sprintf("Token is not a TypeName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) +} + +// FieldNumber returns the value for FieldNumber type. It returns a +// non-negative int32 value. Caller will still need to validate for the correct +// field number range. +func (t Token) FieldNumber() int32 { + if t.kind != Name || t.attrs&uint8(FieldNumber) == 0 { + panic(fmt.Sprintf("Token is not a FieldNumber: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) + } + // Following should not return an error as it had already been called right + // before this Token was constructed. + num, _ := strconv.ParseInt(string(t.raw), 10, 32) + return int32(num) +} + +// String returns the string value for a Scalar type. +func (t Token) String() (string, bool) { + if t.kind != Scalar || t.attrs != stringValue { + return "", false + } + return t.str, true +} + +// Enum returns the literal value for a Scalar type for use as enum literals. +func (t Token) Enum() (string, bool) { + if t.kind != Scalar || t.attrs != literalValue || (len(t.raw) > 0 && t.raw[0] == '-') { + return "", false + } + return string(t.raw), true +} + +// Bool returns the bool value for a Scalar type. +func (t Token) Bool() (bool, bool) { + if t.kind != Scalar { + return false, false + } + switch t.attrs { + case literalValue: + if b, ok := boolLits[string(t.raw)]; ok { + return b, true + } + case numberValue: + // Unsigned integer representation of 0 or 1 is permitted: 00, 0x0, 01, + // 0x1, etc. + n, err := strconv.ParseUint(t.str, 0, 64) + if err == nil { + switch n { + case 0: + return false, true + case 1: + return true, true + } + } + } + return false, false +} + +// These exact boolean literals are the ones supported in C++. +var boolLits = map[string]bool{ + "t": true, + "true": true, + "True": true, + "f": false, + "false": false, + "False": false, +} + +// Uint64 returns the uint64 value for a Scalar type. +func (t Token) Uint64() (uint64, bool) { + if t.kind != Scalar || t.attrs != numberValue || + t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 { + return 0, false + } + n, err := strconv.ParseUint(t.str, 0, 64) + if err != nil { + return 0, false + } + return n, true +} + +// Uint32 returns the uint32 value for a Scalar type. +func (t Token) Uint32() (uint32, bool) { + if t.kind != Scalar || t.attrs != numberValue || + t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 { + return 0, false + } + n, err := strconv.ParseUint(t.str, 0, 32) + if err != nil { + return 0, false + } + return uint32(n), true +} + +// Int64 returns the int64 value for a Scalar type. +func (t Token) Int64() (int64, bool) { + if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 { + return 0, false + } + if n, err := strconv.ParseInt(t.str, 0, 64); err == nil { + return n, true + } + // C++ accepts large positive hex numbers as negative values. + // This feature is here for proto1 backwards compatibility purposes. + if flags.ProtoLegacy && (t.numAttrs == numHex) { + if n, err := strconv.ParseUint(t.str, 0, 64); err == nil { + return int64(n), true + } + } + return 0, false +} + +// Int32 returns the int32 value for a Scalar type. +func (t Token) Int32() (int32, bool) { + if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 { + return 0, false + } + if n, err := strconv.ParseInt(t.str, 0, 32); err == nil { + return int32(n), true + } + // C++ accepts large positive hex numbers as negative values. + // This feature is here for proto1 backwards compatibility purposes. + if flags.ProtoLegacy && (t.numAttrs == numHex) { + if n, err := strconv.ParseUint(t.str, 0, 32); err == nil { + return int32(n), true + } + } + return 0, false +} + +// Float64 returns the float64 value for a Scalar type. +func (t Token) Float64() (float64, bool) { + if t.kind != Scalar { + return 0, false + } + switch t.attrs { + case literalValue: + if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok { + return f, true + } + case numberValue: + n, err := strconv.ParseFloat(t.str, 64) + if err == nil { + return n, true + } + nerr := err.(*strconv.NumError) + if nerr.Err == strconv.ErrRange { + return n, true + } + } + return 0, false +} + +// Float32 returns the float32 value for a Scalar type. +func (t Token) Float32() (float32, bool) { + if t.kind != Scalar { + return 0, false + } + switch t.attrs { + case literalValue: + if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok { + return float32(f), true + } + case numberValue: + n, err := strconv.ParseFloat(t.str, 64) + if err == nil { + // Overflows are treated as (-)infinity. + return float32(n), true + } + nerr := err.(*strconv.NumError) + if nerr.Err == strconv.ErrRange { + return float32(n), true + } + } + return 0, false +} + +// These are the supported float literals which C++ permits case-insensitive +// variants of these. +var floatLits = map[string]float64{ + "nan": math.NaN(), + "inf": math.Inf(1), + "infinity": math.Inf(1), + "-inf": math.Inf(-1), + "-infinity": math.Inf(-1), +} + +// TokenEquals returns true if given Tokens are equal, else false. +func TokenEquals(x, y Token) bool { + return x.kind == y.kind && + x.attrs == y.attrs && + x.numAttrs == y.numAttrs && + x.pos == y.pos && + bytes.Equal(x.raw, y.raw) && + x.str == y.str +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go new file mode 100644 index 0000000..7ae6c2a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package text implements the text format for protocol buffers. +// This package has no semantic understanding for protocol buffers and is only +// a parser and composer for the format. +// +// There is no formal specification for the protobuf text format, as such the +// C++ implementation (see google::protobuf::TextFormat) is the reference +// implementation of the text format. +// +// This package is neither a superset nor a subset of the C++ implementation. +// This implementation permits a more liberal grammar in some cases to be +// backwards compatible with the historical Go implementation. +// Future parsings unique to Go should not be added. +// Some grammars allowed by the C++ implementation are deliberately +// not implemented here because they are considered a bug by the protobuf team +// and should not be replicated. +// +// The Go implementation should implement a sufficient amount of the C++ +// grammar such that the default text serialization by C++ can be parsed by Go. +// However, just because the C++ parser accepts some input does not mean that +// the Go implementation should as well. +// +// The text format is almost a superset of JSON except: +// - message keys are not quoted strings, but identifiers +// - the top-level value must be a message without the delimiters +package text diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go new file mode 100644 index 0000000..cf7aed7 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go @@ -0,0 +1,272 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "math" + "math/bits" + "strconv" + "strings" + "unicode/utf8" + + "google.golang.org/protobuf/internal/detrand" + "google.golang.org/protobuf/internal/errors" +) + +// encType represents an encoding type. +type encType uint8 + +const ( + _ encType = (1 << iota) / 2 + name + scalar + messageOpen + messageClose +) + +// Encoder provides methods to write out textproto constructs and values. The user is +// responsible for producing valid sequences of constructs and values. +type Encoder struct { + encoderState + + indent string + delims [2]byte + outputASCII bool +} + +type encoderState struct { + lastType encType + indents []byte + out []byte +} + +// NewEncoder returns an Encoder. +// +// If indent is a non-empty string, it causes every entry in a List or Message +// to be preceded by the indent and trailed by a newline. +// +// If delims is not the zero value, it controls the delimiter characters used +// for messages (e.g., "{}" vs "<>"). +// +// If outputASCII is true, strings will be serialized in such a way that +// multi-byte UTF-8 sequences are escaped. This property ensures that the +// overall output is ASCII (as opposed to UTF-8). +func NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error) { + e := &Encoder{ + encoderState: encoderState{out: buf}, + } + if len(indent) > 0 { + if strings.Trim(indent, " \t") != "" { + return nil, errors.New("indent may only be composed of space and tab characters") + } + e.indent = indent + } + switch delims { + case [2]byte{0, 0}: + e.delims = [2]byte{'{', '}'} + case [2]byte{'{', '}'}, [2]byte{'<', '>'}: + e.delims = delims + default: + return nil, errors.New("delimiters may only be \"{}\" or \"<>\"") + } + e.outputASCII = outputASCII + + return e, nil +} + +// Bytes returns the content of the written bytes. +func (e *Encoder) Bytes() []byte { + return e.out +} + +// StartMessage writes out the '{' or '<' symbol. +func (e *Encoder) StartMessage() { + e.prepareNext(messageOpen) + e.out = append(e.out, e.delims[0]) +} + +// EndMessage writes out the '}' or '>' symbol. +func (e *Encoder) EndMessage() { + e.prepareNext(messageClose) + e.out = append(e.out, e.delims[1]) +} + +// WriteName writes out the field name and the separator ':'. +func (e *Encoder) WriteName(s string) { + e.prepareNext(name) + e.out = append(e.out, s...) + e.out = append(e.out, ':') +} + +// WriteBool writes out the given boolean value. +func (e *Encoder) WriteBool(b bool) { + if b { + e.WriteLiteral("true") + } else { + e.WriteLiteral("false") + } +} + +// WriteString writes out the given string value. +func (e *Encoder) WriteString(s string) { + e.prepareNext(scalar) + e.out = appendString(e.out, s, e.outputASCII) +} + +func appendString(out []byte, in string, outputASCII bool) []byte { + out = append(out, '"') + i := indexNeedEscapeInString(in) + in, out = in[i:], append(out, in[:i]...) + for len(in) > 0 { + switch r, n := utf8.DecodeRuneInString(in); { + case r == utf8.RuneError && n == 1: + // We do not report invalid UTF-8 because strings in the text format + // are used to represent both the proto string and bytes type. + r = rune(in[0]) + fallthrough + case r < ' ' || r == '"' || r == '\\' || r == 0x7f: + out = append(out, '\\') + switch r { + case '"', '\\': + out = append(out, byte(r)) + case '\n': + out = append(out, 'n') + case '\r': + out = append(out, 'r') + case '\t': + out = append(out, 't') + default: + out = append(out, 'x') + out = append(out, "00"[1+(bits.Len32(uint32(r))-1)/4:]...) + out = strconv.AppendUint(out, uint64(r), 16) + } + in = in[n:] + case r >= utf8.RuneSelf && (outputASCII || r <= 0x009f): + out = append(out, '\\') + if r <= math.MaxUint16 { + out = append(out, 'u') + out = append(out, "0000"[1+(bits.Len32(uint32(r))-1)/4:]...) + out = strconv.AppendUint(out, uint64(r), 16) + } else { + out = append(out, 'U') + out = append(out, "00000000"[1+(bits.Len32(uint32(r))-1)/4:]...) + out = strconv.AppendUint(out, uint64(r), 16) + } + in = in[n:] + default: + i := indexNeedEscapeInString(in[n:]) + in, out = in[n+i:], append(out, in[:n+i]...) + } + } + out = append(out, '"') + return out +} + +// indexNeedEscapeInString returns the index of the character that needs +// escaping. If no characters need escaping, this returns the input length. +func indexNeedEscapeInString(s string) int { + for i := 0; i < len(s); i++ { + if c := s[i]; c < ' ' || c == '"' || c == '\'' || c == '\\' || c >= 0x7f { + return i + } + } + return len(s) +} + +// WriteFloat writes out the given float value for given bitSize. +func (e *Encoder) WriteFloat(n float64, bitSize int) { + e.prepareNext(scalar) + e.out = appendFloat(e.out, n, bitSize) +} + +func appendFloat(out []byte, n float64, bitSize int) []byte { + switch { + case math.IsNaN(n): + return append(out, "nan"...) + case math.IsInf(n, +1): + return append(out, "inf"...) + case math.IsInf(n, -1): + return append(out, "-inf"...) + default: + return strconv.AppendFloat(out, n, 'g', -1, bitSize) + } +} + +// WriteInt writes out the given signed integer value. +func (e *Encoder) WriteInt(n int64) { + e.prepareNext(scalar) + e.out = strconv.AppendInt(e.out, n, 10) +} + +// WriteUint writes out the given unsigned integer value. +func (e *Encoder) WriteUint(n uint64) { + e.prepareNext(scalar) + e.out = strconv.AppendUint(e.out, n, 10) +} + +// WriteLiteral writes out the given string as a literal value without quotes. +// This is used for writing enum literal strings. +func (e *Encoder) WriteLiteral(s string) { + e.prepareNext(scalar) + e.out = append(e.out, s...) +} + +// prepareNext adds possible space and indentation for the next value based +// on last encType and indent option. It also updates e.lastType to next. +func (e *Encoder) prepareNext(next encType) { + defer func() { + e.lastType = next + }() + + // Single line. + if len(e.indent) == 0 { + // Add space after each field before the next one. + if e.lastType&(scalar|messageClose) != 0 && next == name { + e.out = append(e.out, ' ') + // Add a random extra space to make output unstable. + if detrand.Bool() { + e.out = append(e.out, ' ') + } + } + return + } + + // Multi-line. + switch { + case e.lastType == name: + e.out = append(e.out, ' ') + // Add a random extra space after name: to make output unstable. + if detrand.Bool() { + e.out = append(e.out, ' ') + } + + case e.lastType == messageOpen && next != messageClose: + e.indents = append(e.indents, e.indent...) + e.out = append(e.out, '\n') + e.out = append(e.out, e.indents...) + + case e.lastType&(scalar|messageClose) != 0: + if next == messageClose { + e.indents = e.indents[:len(e.indents)-len(e.indent)] + } + e.out = append(e.out, '\n') + e.out = append(e.out, e.indents...) + } +} + +// Snapshot returns the current snapshot for use in Reset. +func (e *Encoder) Snapshot() encoderState { + return e.encoderState +} + +// Reset resets the Encoder to the given encoderState from a Snapshot. +func (e *Encoder) Reset(es encoderState) { + e.encoderState = es +} + +// AppendString appends the escaped form of the input string to b. +func AppendString(b []byte, s string) []byte { + return appendString(b, s, false) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go b/examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go new file mode 100644 index 0000000..c2d6bd5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go @@ -0,0 +1,104 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package errors implements functions to manipulate errors. +package errors + +import ( + "errors" + "fmt" + + "google.golang.org/protobuf/internal/detrand" +) + +// Error is a sentinel matching all errors produced by this package. +var Error = errors.New("protobuf error") + +// New formats a string according to the format specifier and arguments and +// returns an error that has a "proto" prefix. +func New(f string, x ...any) error { + return &prefixError{s: format(f, x...)} +} + +type prefixError struct{ s string } + +var prefix = func() string { + // Deliberately introduce instability into the error message string to + // discourage users from performing error string comparisons. + if detrand.Bool() { + return "proto: " // use non-breaking spaces (U+00a0) + } else { + return "proto: " // use regular spaces (U+0020) + } +}() + +func (e *prefixError) Error() string { + return prefix + e.s +} + +func (e *prefixError) Unwrap() error { + return Error +} + +// Wrap returns an error that has a "proto" prefix, the formatted string described +// by the format specifier and arguments, and a suffix of err. The error wraps err. +func Wrap(err error, f string, x ...any) error { + return &wrapError{ + s: format(f, x...), + err: err, + } +} + +type wrapError struct { + s string + err error +} + +func (e *wrapError) Error() string { + return format("%v%v: %v", prefix, e.s, e.err) +} + +func (e *wrapError) Unwrap() error { + return e.err +} + +func (e *wrapError) Is(target error) bool { + return target == Error +} + +func format(f string, x ...any) string { + // avoid "proto: " prefix when chaining + for i := 0; i < len(x); i++ { + switch e := x[i].(type) { + case *prefixError: + x[i] = e.s + case *wrapError: + x[i] = format("%v: %v", e.s, e.err) + } + } + return fmt.Sprintf(f, x...) +} + +func InvalidUTF8(name string) error { + return New("field %v contains invalid UTF-8", name) +} + +func RequiredNotSet(name string) error { + return New("required field %v not set", name) +} + +type SizeMismatchError struct { + Calculated, Measured int +} + +func (e *SizeMismatchError) Error() string { + return fmt.Sprintf("size mismatch (see https://github.com/golang/protobuf/issues/1609): calculated=%d, measured=%d", e.Calculated, e.Measured) +} + +func MismatchedSizeCalculation(calculated, measured int) error { + return &SizeMismatchError{ + Calculated: calculated, + Measured: measured, + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go new file mode 100644 index 0000000..fbcd349 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go @@ -0,0 +1,40 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.13 +// +build !go1.13 + +package errors + +import "reflect" + +// Is is a copy of Go 1.13's errors.Is for use with older Go versions. +func Is(err, target error) bool { + if target == nil { + return err == target + } + + isComparable := reflect.TypeOf(target).Comparable() + for { + if isComparable && err == target { + return true + } + if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { + return true + } + if err = unwrap(err); err == nil { + return false + } + } +} + +func unwrap(err error) error { + u, ok := err.(interface { + Unwrap() error + }) + if !ok { + return nil + } + return u.Unwrap() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go new file mode 100644 index 0000000..5e72f1c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go @@ -0,0 +1,13 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.13 +// +build go1.13 + +package errors + +import "errors" + +// Is is errors.Is. +func Is(err, target error) bool { return errors.Is(err, target) } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go new file mode 100644 index 0000000..7cac1c1 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go @@ -0,0 +1,157 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package filedesc provides functionality for constructing descriptors. +// +// The types in this package implement interfaces in the protoreflect package +// related to protobuf descripriptors. +package filedesc + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Builder construct a protoreflect.FileDescriptor from the raw descriptor. +type Builder struct { + // GoPackagePath is the Go package path that is invoking this builder. + GoPackagePath string + + // RawDescriptor is the wire-encoded bytes of FileDescriptorProto + // and must be populated. + RawDescriptor []byte + + // NumEnums is the total number of enums declared in the file. + NumEnums int32 + // NumMessages is the total number of messages declared in the file. + // It includes the implicit message declarations for map entries. + NumMessages int32 + // NumExtensions is the total number of extensions declared in the file. + NumExtensions int32 + // NumServices is the total number of services declared in the file. + NumServices int32 + + // TypeResolver resolves extension field types for descriptor options. + // If nil, it uses protoregistry.GlobalTypes. + TypeResolver interface { + protoregistry.ExtensionTypeResolver + } + + // FileRegistry is use to lookup file, enum, and message dependencies. + // Once constructed, the file descriptor is registered here. + // If nil, it uses protoregistry.GlobalFiles. + FileRegistry interface { + FindFileByPath(string) (protoreflect.FileDescriptor, error) + FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) + RegisterFile(protoreflect.FileDescriptor) error + } +} + +// resolverByIndex is an interface Builder.FileRegistry may implement. +// If so, it permits looking up an enum or message dependency based on the +// sub-list and element index into filetype.Builder.DependencyIndexes. +type resolverByIndex interface { + FindEnumByIndex(int32, int32, []Enum, []Message) protoreflect.EnumDescriptor + FindMessageByIndex(int32, int32, []Enum, []Message) protoreflect.MessageDescriptor +} + +// Indexes of each sub-list in filetype.Builder.DependencyIndexes. +const ( + listFieldDeps int32 = iota + listExtTargets + listExtDeps + listMethInDeps + listMethOutDeps +) + +// Out is the output of the Builder. +type Out struct { + File protoreflect.FileDescriptor + + // Enums is all enum descriptors in "flattened ordering". + Enums []Enum + // Messages is all message descriptors in "flattened ordering". + // It includes the implicit message declarations for map entries. + Messages []Message + // Extensions is all extension descriptors in "flattened ordering". + Extensions []Extension + // Service is all service descriptors in "flattened ordering". + Services []Service +} + +// Build constructs a FileDescriptor given the parameters set in Builder. +// It assumes that the inputs are well-formed and panics if any inconsistencies +// are encountered. +// +// If NumEnums+NumMessages+NumExtensions+NumServices is zero, +// then Build automatically derives them from the raw descriptor. +func (db Builder) Build() (out Out) { + // Populate the counts if uninitialized. + if db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 { + db.unmarshalCounts(db.RawDescriptor, true) + } + + // Initialize resolvers and registries if unpopulated. + if db.TypeResolver == nil { + db.TypeResolver = protoregistry.GlobalTypes + } + if db.FileRegistry == nil { + db.FileRegistry = protoregistry.GlobalFiles + } + + fd := newRawFile(db) + out.File = fd + out.Enums = fd.allEnums + out.Messages = fd.allMessages + out.Extensions = fd.allExtensions + out.Services = fd.allServices + + if err := db.FileRegistry.RegisterFile(fd); err != nil { + panic(err) + } + return out +} + +// unmarshalCounts counts the number of enum, message, extension, and service +// declarations in the raw message, which is either a FileDescriptorProto +// or a MessageDescriptorProto depending on whether isFile is set. +func (db *Builder) unmarshalCounts(b []byte, isFile bool) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + if isFile { + switch num { + case genid.FileDescriptorProto_EnumType_field_number: + db.NumEnums++ + case genid.FileDescriptorProto_MessageType_field_number: + db.unmarshalCounts(v, false) + db.NumMessages++ + case genid.FileDescriptorProto_Extension_field_number: + db.NumExtensions++ + case genid.FileDescriptorProto_Service_field_number: + db.NumServices++ + } + } else { + switch num { + case genid.DescriptorProto_EnumType_field_number: + db.NumEnums++ + case genid.DescriptorProto_NestedType_field_number: + db.unmarshalCounts(v, false) + db.NumMessages++ + case genid.DescriptorProto_Extension_field_number: + db.NumExtensions++ + } + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go new file mode 100644 index 0000000..df53ff4 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -0,0 +1,733 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "bytes" + "fmt" + "strings" + "sync" + "sync/atomic" + + "google.golang.org/protobuf/internal/descfmt" + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/encoding/defval" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Edition is an Enum for proto2.Edition +type Edition int32 + +// These values align with the value of Enum in descriptor.proto which allows +// direct conversion between the proto enum and this enum. +const ( + EditionUnknown Edition = 0 + EditionProto2 Edition = 998 + EditionProto3 Edition = 999 + Edition2023 Edition = 1000 + EditionUnsupported Edition = 100000 +) + +// The types in this file may have a suffix: +// • L0: Contains fields common to all descriptors (except File) and +// must be initialized up front. +// • L1: Contains fields specific to a descriptor and +// must be initialized up front. If the associated proto uses Editions, the +// Editions features must always be resolved. If not explicitly set, the +// appropriate default must be resolved and set. +// • L2: Contains fields that are lazily initialized when constructing +// from the raw file descriptor. When constructing as a literal, the L2 +// fields must be initialized up front. +// +// The types are exported so that packages like reflect/protodesc can +// directly construct descriptors. + +type ( + File struct { + fileRaw + L1 FileL1 + + once uint32 // atomically set if L2 is valid + mu sync.Mutex // protects L2 + L2 *FileL2 + } + FileL1 struct { + Syntax protoreflect.Syntax + Edition Edition // Only used if Syntax == Editions + Path string + Package protoreflect.FullName + + Enums Enums + Messages Messages + Extensions Extensions + Services Services + + EditionFeatures EditionFeatures + } + FileL2 struct { + Options func() protoreflect.ProtoMessage + Imports FileImports + Locations SourceLocations + } + + EditionFeatures struct { + // IsFieldPresence is true if field_presence is EXPLICIT + // https://protobuf.dev/editions/features/#field_presence + IsFieldPresence bool + // IsFieldPresence is true if field_presence is LEGACY_REQUIRED + // https://protobuf.dev/editions/features/#field_presence + IsLegacyRequired bool + // IsOpenEnum is true if enum_type is OPEN + // https://protobuf.dev/editions/features/#enum_type + IsOpenEnum bool + // IsPacked is true if repeated_field_encoding is PACKED + // https://protobuf.dev/editions/features/#repeated_field_encoding + IsPacked bool + // IsUTF8Validated is true if utf_validation is VERIFY + // https://protobuf.dev/editions/features/#utf8_validation + IsUTF8Validated bool + // IsDelimitedEncoded is true if message_encoding is DELIMITED + // https://protobuf.dev/editions/features/#message_encoding + IsDelimitedEncoded bool + // IsJSONCompliant is true if json_format is ALLOW + // https://protobuf.dev/editions/features/#json_format + IsJSONCompliant bool + // GenerateLegacyUnmarshalJSON determines if the plugin generates the + // UnmarshalJSON([]byte) error method for enums. + GenerateLegacyUnmarshalJSON bool + } +) + +func (fd *File) ParentFile() protoreflect.FileDescriptor { return fd } +func (fd *File) Parent() protoreflect.Descriptor { return nil } +func (fd *File) Index() int { return 0 } +func (fd *File) Syntax() protoreflect.Syntax { return fd.L1.Syntax } + +// Not exported and just used to reconstruct the original FileDescriptor proto +func (fd *File) Edition() int32 { return int32(fd.L1.Edition) } +func (fd *File) Name() protoreflect.Name { return fd.L1.Package.Name() } +func (fd *File) FullName() protoreflect.FullName { return fd.L1.Package } +func (fd *File) IsPlaceholder() bool { return false } +func (fd *File) Options() protoreflect.ProtoMessage { + if f := fd.lazyInit().Options; f != nil { + return f() + } + return descopts.File +} +func (fd *File) Path() string { return fd.L1.Path } +func (fd *File) Package() protoreflect.FullName { return fd.L1.Package } +func (fd *File) Imports() protoreflect.FileImports { return &fd.lazyInit().Imports } +func (fd *File) Enums() protoreflect.EnumDescriptors { return &fd.L1.Enums } +func (fd *File) Messages() protoreflect.MessageDescriptors { return &fd.L1.Messages } +func (fd *File) Extensions() protoreflect.ExtensionDescriptors { return &fd.L1.Extensions } +func (fd *File) Services() protoreflect.ServiceDescriptors { return &fd.L1.Services } +func (fd *File) SourceLocations() protoreflect.SourceLocations { return &fd.lazyInit().Locations } +func (fd *File) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } +func (fd *File) ProtoType(protoreflect.FileDescriptor) {} +func (fd *File) ProtoInternal(pragma.DoNotImplement) {} + +func (fd *File) lazyInit() *FileL2 { + if atomic.LoadUint32(&fd.once) == 0 { + fd.lazyInitOnce() + } + return fd.L2 +} + +func (fd *File) lazyInitOnce() { + fd.mu.Lock() + if fd.L2 == nil { + fd.lazyRawInit() // recursively initializes all L2 structures + } + atomic.StoreUint32(&fd.once, 1) + fd.mu.Unlock() +} + +// GoPackagePath is a pseudo-internal API for determining the Go package path +// that this file descriptor is declared in. +// +// WARNING: This method is exempt from the compatibility promise and may be +// removed in the future without warning. +func (fd *File) GoPackagePath() string { + return fd.builder.GoPackagePath +} + +type ( + Enum struct { + Base + L1 EnumL1 + L2 *EnumL2 // protected by fileDesc.once + } + EnumL1 struct { + eagerValues bool // controls whether EnumL2.Values is already populated + + EditionFeatures EditionFeatures + } + EnumL2 struct { + Options func() protoreflect.ProtoMessage + Values EnumValues + ReservedNames Names + ReservedRanges EnumRanges + } + + EnumValue struct { + Base + L1 EnumValueL1 + } + EnumValueL1 struct { + Options func() protoreflect.ProtoMessage + Number protoreflect.EnumNumber + } +) + +func (ed *Enum) Options() protoreflect.ProtoMessage { + if f := ed.lazyInit().Options; f != nil { + return f() + } + return descopts.Enum +} +func (ed *Enum) Values() protoreflect.EnumValueDescriptors { + if ed.L1.eagerValues { + return &ed.L2.Values + } + return &ed.lazyInit().Values +} +func (ed *Enum) ReservedNames() protoreflect.Names { return &ed.lazyInit().ReservedNames } +func (ed *Enum) ReservedRanges() protoreflect.EnumRanges { return &ed.lazyInit().ReservedRanges } +func (ed *Enum) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } +func (ed *Enum) ProtoType(protoreflect.EnumDescriptor) {} +func (ed *Enum) lazyInit() *EnumL2 { + ed.L0.ParentFile.lazyInit() // implicitly initializes L2 + return ed.L2 +} +func (ed *Enum) IsClosed() bool { + return !ed.L1.EditionFeatures.IsOpenEnum +} + +func (ed *EnumValue) Options() protoreflect.ProtoMessage { + if f := ed.L1.Options; f != nil { + return f() + } + return descopts.EnumValue +} +func (ed *EnumValue) Number() protoreflect.EnumNumber { return ed.L1.Number } +func (ed *EnumValue) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } +func (ed *EnumValue) ProtoType(protoreflect.EnumValueDescriptor) {} + +type ( + Message struct { + Base + L1 MessageL1 + L2 *MessageL2 // protected by fileDesc.once + } + MessageL1 struct { + Enums Enums + Messages Messages + Extensions Extensions + IsMapEntry bool // promoted from google.protobuf.MessageOptions + IsMessageSet bool // promoted from google.protobuf.MessageOptions + + EditionFeatures EditionFeatures + } + MessageL2 struct { + Options func() protoreflect.ProtoMessage + Fields Fields + Oneofs Oneofs + ReservedNames Names + ReservedRanges FieldRanges + RequiredNumbers FieldNumbers // must be consistent with Fields.Cardinality + ExtensionRanges FieldRanges + ExtensionRangeOptions []func() protoreflect.ProtoMessage // must be same length as ExtensionRanges + } + + Field struct { + Base + L1 FieldL1 + } + FieldL1 struct { + Options func() protoreflect.ProtoMessage + Number protoreflect.FieldNumber + Cardinality protoreflect.Cardinality // must be consistent with Message.RequiredNumbers + Kind protoreflect.Kind + StringName stringName + IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto + IsWeak bool // promoted from google.protobuf.FieldOptions + Default defaultValue + ContainingOneof protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields + Enum protoreflect.EnumDescriptor + Message protoreflect.MessageDescriptor + + EditionFeatures EditionFeatures + } + + Oneof struct { + Base + L1 OneofL1 + } + OneofL1 struct { + Options func() protoreflect.ProtoMessage + Fields OneofFields // must be consistent with Message.Fields.ContainingOneof + + EditionFeatures EditionFeatures + } +) + +func (md *Message) Options() protoreflect.ProtoMessage { + if f := md.lazyInit().Options; f != nil { + return f() + } + return descopts.Message +} +func (md *Message) IsMapEntry() bool { return md.L1.IsMapEntry } +func (md *Message) Fields() protoreflect.FieldDescriptors { return &md.lazyInit().Fields } +func (md *Message) Oneofs() protoreflect.OneofDescriptors { return &md.lazyInit().Oneofs } +func (md *Message) ReservedNames() protoreflect.Names { return &md.lazyInit().ReservedNames } +func (md *Message) ReservedRanges() protoreflect.FieldRanges { return &md.lazyInit().ReservedRanges } +func (md *Message) RequiredNumbers() protoreflect.FieldNumbers { return &md.lazyInit().RequiredNumbers } +func (md *Message) ExtensionRanges() protoreflect.FieldRanges { return &md.lazyInit().ExtensionRanges } +func (md *Message) ExtensionRangeOptions(i int) protoreflect.ProtoMessage { + if f := md.lazyInit().ExtensionRangeOptions[i]; f != nil { + return f() + } + return descopts.ExtensionRange +} +func (md *Message) Enums() protoreflect.EnumDescriptors { return &md.L1.Enums } +func (md *Message) Messages() protoreflect.MessageDescriptors { return &md.L1.Messages } +func (md *Message) Extensions() protoreflect.ExtensionDescriptors { return &md.L1.Extensions } +func (md *Message) ProtoType(protoreflect.MessageDescriptor) {} +func (md *Message) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } +func (md *Message) lazyInit() *MessageL2 { + md.L0.ParentFile.lazyInit() // implicitly initializes L2 + return md.L2 +} + +// IsMessageSet is a pseudo-internal API for checking whether a message +// should serialize in the proto1 message format. +// +// WARNING: This method is exempt from the compatibility promise and may be +// removed in the future without warning. +func (md *Message) IsMessageSet() bool { + return md.L1.IsMessageSet +} + +func (fd *Field) Options() protoreflect.ProtoMessage { + if f := fd.L1.Options; f != nil { + return f() + } + return descopts.Field +} +func (fd *Field) Number() protoreflect.FieldNumber { return fd.L1.Number } +func (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality } +func (fd *Field) Kind() protoreflect.Kind { + return fd.L1.Kind +} +func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON } +func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } +func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } +func (fd *Field) HasPresence() bool { + if fd.L1.Cardinality == protoreflect.Repeated { + return false + } + return fd.IsExtension() || fd.L1.EditionFeatures.IsFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil +} +func (fd *Field) HasOptionalKeyword() bool { + return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional +} +func (fd *Field) IsPacked() bool { + if fd.L1.Cardinality != protoreflect.Repeated { + return false + } + switch fd.L1.Kind { + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: + return false + } + return fd.L1.EditionFeatures.IsPacked +} +func (fd *Field) IsExtension() bool { return false } +func (fd *Field) IsWeak() bool { return fd.L1.IsWeak } +func (fd *Field) IsList() bool { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() } +func (fd *Field) IsMap() bool { return fd.Message() != nil && fd.Message().IsMapEntry() } +func (fd *Field) MapKey() protoreflect.FieldDescriptor { + if !fd.IsMap() { + return nil + } + return fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number) +} +func (fd *Field) MapValue() protoreflect.FieldDescriptor { + if !fd.IsMap() { + return nil + } + return fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number) +} +func (fd *Field) HasDefault() bool { return fd.L1.Default.has } +func (fd *Field) Default() protoreflect.Value { return fd.L1.Default.get(fd) } +func (fd *Field) DefaultEnumValue() protoreflect.EnumValueDescriptor { return fd.L1.Default.enum } +func (fd *Field) ContainingOneof() protoreflect.OneofDescriptor { return fd.L1.ContainingOneof } +func (fd *Field) ContainingMessage() protoreflect.MessageDescriptor { + return fd.L0.Parent.(protoreflect.MessageDescriptor) +} +func (fd *Field) Enum() protoreflect.EnumDescriptor { + return fd.L1.Enum +} +func (fd *Field) Message() protoreflect.MessageDescriptor { + if fd.L1.IsWeak { + if d, _ := protoregistry.GlobalFiles.FindDescriptorByName(fd.L1.Message.FullName()); d != nil { + return d.(protoreflect.MessageDescriptor) + } + } + return fd.L1.Message +} +func (fd *Field) IsMapEntry() bool { + parent, ok := fd.L0.Parent.(protoreflect.MessageDescriptor) + return ok && parent.IsMapEntry() +} +func (fd *Field) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } +func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {} + +// EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8 +// validation for the string field. This exists for Google-internal use only +// since proto3 did not enforce UTF-8 validity prior to the open-source release. +// If this method does not exist, the default is to enforce valid UTF-8. +// +// WARNING: This method is exempt from the compatibility promise and may be +// removed in the future without warning. +func (fd *Field) EnforceUTF8() bool { + return fd.L1.EditionFeatures.IsUTF8Validated +} + +func (od *Oneof) IsSynthetic() bool { + return od.L0.ParentFile.L1.Syntax == protoreflect.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword() +} +func (od *Oneof) Options() protoreflect.ProtoMessage { + if f := od.L1.Options; f != nil { + return f() + } + return descopts.Oneof +} +func (od *Oneof) Fields() protoreflect.FieldDescriptors { return &od.L1.Fields } +func (od *Oneof) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, od) } +func (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {} + +type ( + Extension struct { + Base + L1 ExtensionL1 + L2 *ExtensionL2 // protected by fileDesc.once + } + ExtensionL1 struct { + Number protoreflect.FieldNumber + Extendee protoreflect.MessageDescriptor + Cardinality protoreflect.Cardinality + Kind protoreflect.Kind + EditionFeatures EditionFeatures + } + ExtensionL2 struct { + Options func() protoreflect.ProtoMessage + StringName stringName + IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto + Default defaultValue + Enum protoreflect.EnumDescriptor + Message protoreflect.MessageDescriptor + } +) + +func (xd *Extension) Options() protoreflect.ProtoMessage { + if f := xd.lazyInit().Options; f != nil { + return f() + } + return descopts.Field +} +func (xd *Extension) Number() protoreflect.FieldNumber { return xd.L1.Number } +func (xd *Extension) Cardinality() protoreflect.Cardinality { return xd.L1.Cardinality } +func (xd *Extension) Kind() protoreflect.Kind { return xd.L1.Kind } +func (xd *Extension) HasJSONName() bool { return xd.lazyInit().StringName.hasJSON } +func (xd *Extension) JSONName() string { return xd.lazyInit().StringName.getJSON(xd) } +func (xd *Extension) TextName() string { return xd.lazyInit().StringName.getText(xd) } +func (xd *Extension) HasPresence() bool { return xd.L1.Cardinality != protoreflect.Repeated } +func (xd *Extension) HasOptionalKeyword() bool { + return (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional +} +func (xd *Extension) IsPacked() bool { + if xd.L1.Cardinality != protoreflect.Repeated { + return false + } + switch xd.L1.Kind { + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: + return false + } + return xd.L1.EditionFeatures.IsPacked +} +func (xd *Extension) IsExtension() bool { return true } +func (xd *Extension) IsWeak() bool { return false } +func (xd *Extension) IsList() bool { return xd.Cardinality() == protoreflect.Repeated } +func (xd *Extension) IsMap() bool { return false } +func (xd *Extension) MapKey() protoreflect.FieldDescriptor { return nil } +func (xd *Extension) MapValue() protoreflect.FieldDescriptor { return nil } +func (xd *Extension) HasDefault() bool { return xd.lazyInit().Default.has } +func (xd *Extension) Default() protoreflect.Value { return xd.lazyInit().Default.get(xd) } +func (xd *Extension) DefaultEnumValue() protoreflect.EnumValueDescriptor { + return xd.lazyInit().Default.enum +} +func (xd *Extension) ContainingOneof() protoreflect.OneofDescriptor { return nil } +func (xd *Extension) ContainingMessage() protoreflect.MessageDescriptor { return xd.L1.Extendee } +func (xd *Extension) Enum() protoreflect.EnumDescriptor { return xd.lazyInit().Enum } +func (xd *Extension) Message() protoreflect.MessageDescriptor { return xd.lazyInit().Message } +func (xd *Extension) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, xd) } +func (xd *Extension) ProtoType(protoreflect.FieldDescriptor) {} +func (xd *Extension) ProtoInternal(pragma.DoNotImplement) {} +func (xd *Extension) lazyInit() *ExtensionL2 { + xd.L0.ParentFile.lazyInit() // implicitly initializes L2 + return xd.L2 +} + +type ( + Service struct { + Base + L1 ServiceL1 + L2 *ServiceL2 // protected by fileDesc.once + } + ServiceL1 struct{} + ServiceL2 struct { + Options func() protoreflect.ProtoMessage + Methods Methods + } + + Method struct { + Base + L1 MethodL1 + } + MethodL1 struct { + Options func() protoreflect.ProtoMessage + Input protoreflect.MessageDescriptor + Output protoreflect.MessageDescriptor + IsStreamingClient bool + IsStreamingServer bool + } +) + +func (sd *Service) Options() protoreflect.ProtoMessage { + if f := sd.lazyInit().Options; f != nil { + return f() + } + return descopts.Service +} +func (sd *Service) Methods() protoreflect.MethodDescriptors { return &sd.lazyInit().Methods } +func (sd *Service) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, sd) } +func (sd *Service) ProtoType(protoreflect.ServiceDescriptor) {} +func (sd *Service) ProtoInternal(pragma.DoNotImplement) {} +func (sd *Service) lazyInit() *ServiceL2 { + sd.L0.ParentFile.lazyInit() // implicitly initializes L2 + return sd.L2 +} + +func (md *Method) Options() protoreflect.ProtoMessage { + if f := md.L1.Options; f != nil { + return f() + } + return descopts.Method +} +func (md *Method) Input() protoreflect.MessageDescriptor { return md.L1.Input } +func (md *Method) Output() protoreflect.MessageDescriptor { return md.L1.Output } +func (md *Method) IsStreamingClient() bool { return md.L1.IsStreamingClient } +func (md *Method) IsStreamingServer() bool { return md.L1.IsStreamingServer } +func (md *Method) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } +func (md *Method) ProtoType(protoreflect.MethodDescriptor) {} +func (md *Method) ProtoInternal(pragma.DoNotImplement) {} + +// Surrogate files are can be used to create standalone descriptors +// where the syntax is only information derived from the parent file. +var ( + SurrogateProto2 = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}} + SurrogateProto3 = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}} + SurrogateEdition2023 = &File{L1: FileL1{Syntax: protoreflect.Editions, Edition: Edition2023}, L2: &FileL2{}} +) + +type ( + Base struct { + L0 BaseL0 + } + BaseL0 struct { + FullName protoreflect.FullName // must be populated + ParentFile *File // must be populated + Parent protoreflect.Descriptor + Index int + } +) + +func (d *Base) Name() protoreflect.Name { return d.L0.FullName.Name() } +func (d *Base) FullName() protoreflect.FullName { return d.L0.FullName } +func (d *Base) ParentFile() protoreflect.FileDescriptor { + if d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 { + return nil // surrogate files are not real parents + } + return d.L0.ParentFile +} +func (d *Base) Parent() protoreflect.Descriptor { return d.L0.Parent } +func (d *Base) Index() int { return d.L0.Index } +func (d *Base) Syntax() protoreflect.Syntax { return d.L0.ParentFile.Syntax() } +func (d *Base) IsPlaceholder() bool { return false } +func (d *Base) ProtoInternal(pragma.DoNotImplement) {} + +type stringName struct { + hasJSON bool + once sync.Once + nameJSON string + nameText string +} + +// InitJSON initializes the name. It is exported for use by other internal packages. +func (s *stringName) InitJSON(name string) { + s.hasJSON = true + s.nameJSON = name +} + +// Returns true if this field is structured like the synthetic field of a proto2 +// group. This allows us to expand our treatment of delimited fields without +// breaking proto2 files that have been upgraded to editions. +func isGroupLike(fd protoreflect.FieldDescriptor) bool { + // Groups are always group types. + if fd.Kind() != protoreflect.GroupKind { + return false + } + + // Group fields are always the lowercase type name. + if strings.ToLower(string(fd.Message().Name())) != string(fd.Name()) { + return false + } + + // Groups could only be defined in the same file they're used. + if fd.Message().ParentFile() != fd.ParentFile() { + return false + } + + // Group messages are always defined in the same scope as the field. File + // level extensions will compare NULL == NULL here, which is why the file + // comparison above is necessary to ensure both come from the same file. + if fd.IsExtension() { + return fd.Parent() == fd.Message().Parent() + } + return fd.ContainingMessage() == fd.Message().Parent() +} + +func (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName { + s.once.Do(func() { + if fd.IsExtension() { + // For extensions, JSON and text are formatted the same way. + var name string + if messageset.IsMessageSetExtension(fd) { + name = string("[" + fd.FullName().Parent() + "]") + } else { + name = string("[" + fd.FullName() + "]") + } + s.nameJSON = name + s.nameText = name + } else { + // Format the JSON name. + if !s.hasJSON { + s.nameJSON = strs.JSONCamelCase(string(fd.Name())) + } + + // Format the text name. + s.nameText = string(fd.Name()) + if isGroupLike(fd) { + s.nameText = string(fd.Message().Name()) + } + } + }) + return s +} + +func (s *stringName) getJSON(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameJSON } +func (s *stringName) getText(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameText } + +func DefaultValue(v protoreflect.Value, ev protoreflect.EnumValueDescriptor) defaultValue { + dv := defaultValue{has: v.IsValid(), val: v, enum: ev} + if b, ok := v.Interface().([]byte); ok { + // Store a copy of the default bytes, so that we can detect + // accidental mutations of the original value. + dv.bytes = append([]byte(nil), b...) + } + return dv +} + +func unmarshalDefault(b []byte, k protoreflect.Kind, pf *File, ed protoreflect.EnumDescriptor) defaultValue { + var evs protoreflect.EnumValueDescriptors + if k == protoreflect.EnumKind { + // If the enum is declared within the same file, be careful not to + // blindly call the Values method, lest we bind ourselves in a deadlock. + if e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf { + evs = &e.L2.Values + } else { + evs = ed.Values() + } + + // If we are unable to resolve the enum dependency, use a placeholder + // enum value since we will not be able to parse the default value. + if ed.IsPlaceholder() && protoreflect.Name(b).IsValid() { + v := protoreflect.ValueOfEnum(0) + ev := PlaceholderEnumValue(ed.FullName().Parent().Append(protoreflect.Name(b))) + return DefaultValue(v, ev) + } + } + + v, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor) + if err != nil { + panic(err) + } + return DefaultValue(v, ev) +} + +type defaultValue struct { + has bool + val protoreflect.Value + enum protoreflect.EnumValueDescriptor + bytes []byte +} + +func (dv *defaultValue) get(fd protoreflect.FieldDescriptor) protoreflect.Value { + // Return the zero value as the default if unpopulated. + if !dv.has { + if fd.Cardinality() == protoreflect.Repeated { + return protoreflect.Value{} + } + switch fd.Kind() { + case protoreflect.BoolKind: + return protoreflect.ValueOfBool(false) + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + return protoreflect.ValueOfInt32(0) + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + return protoreflect.ValueOfInt64(0) + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + return protoreflect.ValueOfUint32(0) + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + return protoreflect.ValueOfUint64(0) + case protoreflect.FloatKind: + return protoreflect.ValueOfFloat32(0) + case protoreflect.DoubleKind: + return protoreflect.ValueOfFloat64(0) + case protoreflect.StringKind: + return protoreflect.ValueOfString("") + case protoreflect.BytesKind: + return protoreflect.ValueOfBytes(nil) + case protoreflect.EnumKind: + if evs := fd.Enum().Values(); evs.Len() > 0 { + return protoreflect.ValueOfEnum(evs.Get(0).Number()) + } + return protoreflect.ValueOfEnum(0) + } + } + + if len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) { + // TODO: Avoid panic if we're running with the race detector + // and instead spawn a goroutine that periodically resets + // this value back to the original to induce a race. + panic(fmt.Sprintf("detected mutation on the default bytes for %v", fd.FullName())) + } + return dv.val +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go new file mode 100644 index 0000000..8a57d60 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go @@ -0,0 +1,558 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "fmt" + "sync" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// fileRaw is a data struct used when initializing a file descriptor from +// a raw FileDescriptorProto. +type fileRaw struct { + builder Builder + allEnums []Enum + allMessages []Message + allExtensions []Extension + allServices []Service +} + +func newRawFile(db Builder) *File { + fd := &File{fileRaw: fileRaw{builder: db}} + fd.initDecls(db.NumEnums, db.NumMessages, db.NumExtensions, db.NumServices) + fd.unmarshalSeed(db.RawDescriptor) + + // Extended message targets are eagerly resolved since registration + // needs this information at program init time. + for i := range fd.allExtensions { + xd := &fd.allExtensions[i] + xd.L1.Extendee = fd.resolveMessageDependency(xd.L1.Extendee, listExtTargets, int32(i)) + } + + fd.checkDecls() + return fd +} + +// initDecls pre-allocates slices for the exact number of enums, messages +// (including map entries), extensions, and services declared in the proto file. +// This is done to avoid regrowing the slice, which would change the address +// for any previously seen declaration. +// +// The alloc methods "allocates" slices by pulling from the capacity. +func (fd *File) initDecls(numEnums, numMessages, numExtensions, numServices int32) { + fd.allEnums = make([]Enum, 0, numEnums) + fd.allMessages = make([]Message, 0, numMessages) + fd.allExtensions = make([]Extension, 0, numExtensions) + fd.allServices = make([]Service, 0, numServices) +} + +func (fd *File) allocEnums(n int) []Enum { + total := len(fd.allEnums) + es := fd.allEnums[total : total+n] + fd.allEnums = fd.allEnums[:total+n] + return es +} +func (fd *File) allocMessages(n int) []Message { + total := len(fd.allMessages) + ms := fd.allMessages[total : total+n] + fd.allMessages = fd.allMessages[:total+n] + return ms +} +func (fd *File) allocExtensions(n int) []Extension { + total := len(fd.allExtensions) + xs := fd.allExtensions[total : total+n] + fd.allExtensions = fd.allExtensions[:total+n] + return xs +} +func (fd *File) allocServices(n int) []Service { + total := len(fd.allServices) + xs := fd.allServices[total : total+n] + fd.allServices = fd.allServices[:total+n] + return xs +} + +// checkDecls performs a sanity check that the expected number of expected +// declarations matches the number that were found in the descriptor proto. +func (fd *File) checkDecls() { + switch { + case len(fd.allEnums) != cap(fd.allEnums): + case len(fd.allMessages) != cap(fd.allMessages): + case len(fd.allExtensions) != cap(fd.allExtensions): + case len(fd.allServices) != cap(fd.allServices): + default: + return + } + panic("mismatching cardinality") +} + +func (fd *File) unmarshalSeed(b []byte) { + sb := getBuilder() + defer putBuilder(sb) + + var prevField protoreflect.FieldNumber + var numEnums, numMessages, numExtensions, numServices int + var posEnums, posMessages, posExtensions, posServices int + var options []byte + b0 := b + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_Syntax_field_number: + switch string(v) { + case "proto2": + fd.L1.Syntax = protoreflect.Proto2 + fd.L1.Edition = EditionProto2 + case "proto3": + fd.L1.Syntax = protoreflect.Proto3 + fd.L1.Edition = EditionProto3 + case "editions": + fd.L1.Syntax = protoreflect.Editions + default: + panic("invalid syntax") + } + case genid.FileDescriptorProto_Name_field_number: + fd.L1.Path = sb.MakeString(v) + case genid.FileDescriptorProto_Package_field_number: + fd.L1.Package = protoreflect.FullName(sb.MakeString(v)) + case genid.FileDescriptorProto_Options_field_number: + options = v + case genid.FileDescriptorProto_EnumType_field_number: + if prevField != genid.FileDescriptorProto_EnumType_field_number { + if numEnums > 0 { + panic("non-contiguous repeated field") + } + posEnums = len(b0) - len(b) - n - m + } + numEnums++ + case genid.FileDescriptorProto_MessageType_field_number: + if prevField != genid.FileDescriptorProto_MessageType_field_number { + if numMessages > 0 { + panic("non-contiguous repeated field") + } + posMessages = len(b0) - len(b) - n - m + } + numMessages++ + case genid.FileDescriptorProto_Extension_field_number: + if prevField != genid.FileDescriptorProto_Extension_field_number { + if numExtensions > 0 { + panic("non-contiguous repeated field") + } + posExtensions = len(b0) - len(b) - n - m + } + numExtensions++ + case genid.FileDescriptorProto_Service_field_number: + if prevField != genid.FileDescriptorProto_Service_field_number { + if numServices > 0 { + panic("non-contiguous repeated field") + } + posServices = len(b0) - len(b) - n - m + } + numServices++ + } + prevField = num + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_Edition_field_number: + fd.L1.Edition = Edition(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + prevField = -1 // ignore known field numbers of unknown wire type + } + } + + // If syntax is missing, it is assumed to be proto2. + if fd.L1.Syntax == 0 { + fd.L1.Syntax = protoreflect.Proto2 + fd.L1.Edition = EditionProto2 + } + + fd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition) + + // Parse editions features from options if any + if options != nil { + fd.unmarshalSeedOptions(options) + } + + // Must allocate all declarations before parsing each descriptor type + // to ensure we handled all descriptors in "flattened ordering". + if numEnums > 0 { + fd.L1.Enums.List = fd.allocEnums(numEnums) + } + if numMessages > 0 { + fd.L1.Messages.List = fd.allocMessages(numMessages) + } + if numExtensions > 0 { + fd.L1.Extensions.List = fd.allocExtensions(numExtensions) + } + if numServices > 0 { + fd.L1.Services.List = fd.allocServices(numServices) + } + + if numEnums > 0 { + b := b0[posEnums:] + for i := range fd.L1.Enums.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Enums.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } + if numMessages > 0 { + b := b0[posMessages:] + for i := range fd.L1.Messages.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Messages.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } + if numExtensions > 0 { + b := b0[posExtensions:] + for i := range fd.L1.Extensions.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Extensions.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } + if numServices > 0 { + b := b0[posServices:] + for i := range fd.L1.Services.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Services.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } +} + +func (fd *File) unmarshalSeedOptions(b []byte) { + for b := b; len(b) > 0; { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FileOptions_Features_field_number: + if fd.Syntax() != protoreflect.Editions { + panic(fmt.Sprintf("invalid descriptor: using edition features in a proto with syntax %s", fd.Syntax())) + } + fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + ed.L0.ParentFile = pf + ed.L0.Parent = pd + ed.L0.Index = i + ed.L1.EditionFeatures = featuresFromParentDesc(ed.Parent()) + + var numValues int + for b := b; len(b) > 0; { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_Name_field_number: + ed.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.EnumDescriptorProto_Value_field_number: + numValues++ + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + + // Only construct enum value descriptors for top-level enums since + // they are needed for registration. + if pd != pf { + return + } + ed.L1.eagerValues = true + ed.L2 = new(EnumL2) + ed.L2.Values.List = make([]EnumValue, numValues) + for i := 0; len(b) > 0; { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_Value_field_number: + ed.L2.Values.List[i].unmarshalFull(v, sb, pf, ed, i) + i++ + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + md.L0.ParentFile = pf + md.L0.Parent = pd + md.L0.Index = i + md.L1.EditionFeatures = featuresFromParentDesc(md.Parent()) + + var prevField protoreflect.FieldNumber + var numEnums, numMessages, numExtensions int + var posEnums, posMessages, posExtensions int + b0 := b + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.DescriptorProto_Name_field_number: + md.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.DescriptorProto_EnumType_field_number: + if prevField != genid.DescriptorProto_EnumType_field_number { + if numEnums > 0 { + panic("non-contiguous repeated field") + } + posEnums = len(b0) - len(b) - n - m + } + numEnums++ + case genid.DescriptorProto_NestedType_field_number: + if prevField != genid.DescriptorProto_NestedType_field_number { + if numMessages > 0 { + panic("non-contiguous repeated field") + } + posMessages = len(b0) - len(b) - n - m + } + numMessages++ + case genid.DescriptorProto_Extension_field_number: + if prevField != genid.DescriptorProto_Extension_field_number { + if numExtensions > 0 { + panic("non-contiguous repeated field") + } + posExtensions = len(b0) - len(b) - n - m + } + numExtensions++ + case genid.DescriptorProto_Options_field_number: + md.unmarshalSeedOptions(v) + } + prevField = num + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + prevField = -1 // ignore known field numbers of unknown wire type + } + } + + // Must allocate all declarations before parsing each descriptor type + // to ensure we handled all descriptors in "flattened ordering". + if numEnums > 0 { + md.L1.Enums.List = pf.allocEnums(numEnums) + } + if numMessages > 0 { + md.L1.Messages.List = pf.allocMessages(numMessages) + } + if numExtensions > 0 { + md.L1.Extensions.List = pf.allocExtensions(numExtensions) + } + + if numEnums > 0 { + b := b0[posEnums:] + for i := range md.L1.Enums.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + md.L1.Enums.List[i].unmarshalSeed(v, sb, pf, md, i) + b = b[n+m:] + } + } + if numMessages > 0 { + b := b0[posMessages:] + for i := range md.L1.Messages.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + md.L1.Messages.List[i].unmarshalSeed(v, sb, pf, md, i) + b = b[n+m:] + } + } + if numExtensions > 0 { + b := b0[posExtensions:] + for i := range md.L1.Extensions.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + md.L1.Extensions.List[i].unmarshalSeed(v, sb, pf, md, i) + b = b[n+m:] + } + } +} + +func (md *Message) unmarshalSeedOptions(b []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.MessageOptions_MapEntry_field_number: + md.L1.IsMapEntry = protowire.DecodeBool(v) + case genid.MessageOptions_MessageSetWireFormat_field_number: + md.L1.IsMessageSet = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.MessageOptions_Features_field_number: + md.L1.EditionFeatures = unmarshalFeatureSet(v, md.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + xd.L0.ParentFile = pf + xd.L0.Parent = pd + xd.L0.Index = i + xd.L1.EditionFeatures = featuresFromParentDesc(pd) + + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Number_field_number: + xd.L1.Number = protoreflect.FieldNumber(v) + case genid.FieldDescriptorProto_Label_field_number: + xd.L1.Cardinality = protoreflect.Cardinality(v) + case genid.FieldDescriptorProto_Type_field_number: + xd.L1.Kind = protoreflect.Kind(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Name_field_number: + xd.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.FieldDescriptorProto_Extendee_field_number: + xd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v)) + case genid.FieldDescriptorProto_Options_field_number: + xd.unmarshalOptions(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + + if xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded { + xd.L1.Kind = protoreflect.GroupKind + } +} + +func (xd *Extension) unmarshalOptions(b []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldOptions_Packed_field_number: + xd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldOptions_Features_field_number: + xd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + sd.L0.ParentFile = pf + sd.L0.Parent = pd + sd.L0.Index = i + + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.ServiceDescriptorProto_Name_field_number: + sd.L0.FullName = appendFullName(sb, pd.FullName(), v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +var nameBuilderPool = sync.Pool{ + New: func() any { return new(strs.Builder) }, +} + +func getBuilder() *strs.Builder { + return nameBuilderPool.Get().(*strs.Builder) +} +func putBuilder(b *strs.Builder) { + nameBuilderPool.Put(b) +} + +// makeFullName converts b to a protoreflect.FullName, +// where b must start with a leading dot. +func makeFullName(sb *strs.Builder, b []byte) protoreflect.FullName { + if len(b) == 0 || b[0] != '.' { + panic("name reference must be fully qualified") + } + return protoreflect.FullName(sb.MakeString(b[1:])) +} + +func appendFullName(sb *strs.Builder, prefix protoreflect.FullName, suffix []byte) protoreflect.FullName { + return sb.AppendFullName(prefix, protoreflect.Name(strs.UnsafeString(suffix))) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go new file mode 100644 index 0000000..e56c91a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go @@ -0,0 +1,701 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "reflect" + "sync" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" +) + +func (fd *File) lazyRawInit() { + fd.unmarshalFull(fd.builder.RawDescriptor) + fd.resolveMessages() + fd.resolveExtensions() + fd.resolveServices() +} + +func (file *File) resolveMessages() { + var depIdx int32 + for i := range file.allMessages { + md := &file.allMessages[i] + + // Resolve message field dependencies. + for j := range md.L2.Fields.List { + fd := &md.L2.Fields.List[j] + + // Weak fields are resolved upon actual use. + if fd.L1.IsWeak { + continue + } + + // Resolve message field dependency. + switch fd.L1.Kind { + case protoreflect.EnumKind: + fd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx) + depIdx++ + case protoreflect.MessageKind, protoreflect.GroupKind: + fd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx) + depIdx++ + if fd.L1.Kind == protoreflect.GroupKind && (fd.IsMap() || fd.IsMapEntry()) { + // A map field might inherit delimited encoding from a file-wide default feature. + // But maps never actually use delimited encoding. (At least for now...) + fd.L1.Kind = protoreflect.MessageKind + } + } + + // Default is resolved here since it depends on Enum being resolved. + if v := fd.L1.Default.val; v.IsValid() { + fd.L1.Default = unmarshalDefault(v.Bytes(), fd.L1.Kind, file, fd.L1.Enum) + } + } + } +} + +func (file *File) resolveExtensions() { + var depIdx int32 + for i := range file.allExtensions { + xd := &file.allExtensions[i] + + // Resolve extension field dependency. + switch xd.L1.Kind { + case protoreflect.EnumKind: + xd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx) + depIdx++ + case protoreflect.MessageKind, protoreflect.GroupKind: + xd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx) + depIdx++ + } + + // Default is resolved here since it depends on Enum being resolved. + if v := xd.L2.Default.val; v.IsValid() { + xd.L2.Default = unmarshalDefault(v.Bytes(), xd.L1.Kind, file, xd.L2.Enum) + } + } +} + +func (file *File) resolveServices() { + var depIdx int32 + for i := range file.allServices { + sd := &file.allServices[i] + + // Resolve method dependencies. + for j := range sd.L2.Methods.List { + md := &sd.L2.Methods.List[j] + md.L1.Input = file.resolveMessageDependency(md.L1.Input, listMethInDeps, depIdx) + md.L1.Output = file.resolveMessageDependency(md.L1.Output, listMethOutDeps, depIdx) + depIdx++ + } + } +} + +func (file *File) resolveEnumDependency(ed protoreflect.EnumDescriptor, i, j int32) protoreflect.EnumDescriptor { + r := file.builder.FileRegistry + if r, ok := r.(resolverByIndex); ok { + if ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil { + return ed2 + } + } + for i := range file.allEnums { + if ed2 := &file.allEnums[i]; ed2.L0.FullName == ed.FullName() { + return ed2 + } + } + if d, _ := r.FindDescriptorByName(ed.FullName()); d != nil { + return d.(protoreflect.EnumDescriptor) + } + return ed +} + +func (file *File) resolveMessageDependency(md protoreflect.MessageDescriptor, i, j int32) protoreflect.MessageDescriptor { + r := file.builder.FileRegistry + if r, ok := r.(resolverByIndex); ok { + if md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil { + return md2 + } + } + for i := range file.allMessages { + if md2 := &file.allMessages[i]; md2.L0.FullName == md.FullName() { + return md2 + } + } + if d, _ := r.FindDescriptorByName(md.FullName()); d != nil { + return d.(protoreflect.MessageDescriptor) + } + return md +} + +func (fd *File) unmarshalFull(b []byte) { + sb := getBuilder() + defer putBuilder(sb) + + var enumIdx, messageIdx, extensionIdx, serviceIdx int + var rawOptions []byte + fd.L2 = new(FileL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_PublicDependency_field_number: + fd.L2.Imports[v].IsPublic = true + case genid.FileDescriptorProto_WeakDependency_field_number: + fd.L2.Imports[v].IsWeak = true + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_Dependency_field_number: + path := sb.MakeString(v) + imp, _ := fd.builder.FileRegistry.FindFileByPath(path) + if imp == nil { + imp = PlaceholderFile(path) + } + fd.L2.Imports = append(fd.L2.Imports, protoreflect.FileImport{FileDescriptor: imp}) + case genid.FileDescriptorProto_EnumType_field_number: + fd.L1.Enums.List[enumIdx].unmarshalFull(v, sb) + enumIdx++ + case genid.FileDescriptorProto_MessageType_field_number: + fd.L1.Messages.List[messageIdx].unmarshalFull(v, sb) + messageIdx++ + case genid.FileDescriptorProto_Extension_field_number: + fd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb) + extensionIdx++ + case genid.FileDescriptorProto_Service_field_number: + fd.L1.Services.List[serviceIdx].unmarshalFull(v, sb) + serviceIdx++ + case genid.FileDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + fd.L2.Options = fd.builder.optionsUnmarshaler(&descopts.File, rawOptions) +} + +func (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) { + var rawValues [][]byte + var rawOptions []byte + if !ed.L1.eagerValues { + ed.L2 = new(EnumL2) + } + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_Value_field_number: + rawValues = append(rawValues, v) + case genid.EnumDescriptorProto_ReservedName_field_number: + ed.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) + case genid.EnumDescriptorProto_ReservedRange_field_number: + ed.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v)) + case genid.EnumDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if !ed.L1.eagerValues && len(rawValues) > 0 { + ed.L2.Values.List = make([]EnumValue, len(rawValues)) + for i, b := range rawValues { + ed.L2.Values.List[i].unmarshalFull(b, sb, ed.L0.ParentFile, ed, i) + } + } + ed.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions) +} + +func unmarshalEnumReservedRange(b []byte) (r [2]protoreflect.EnumNumber) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_EnumReservedRange_Start_field_number: + r[0] = protoreflect.EnumNumber(v) + case genid.EnumDescriptorProto_EnumReservedRange_End_field_number: + r[1] = protoreflect.EnumNumber(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + return r +} + +func (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + vd.L0.ParentFile = pf + vd.L0.Parent = pd + vd.L0.Index = i + + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.EnumValueDescriptorProto_Number_field_number: + vd.L1.Number = protoreflect.EnumNumber(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumValueDescriptorProto_Name_field_number: + // NOTE: Enum values are in the same scope as the enum parent. + vd.L0.FullName = appendFullName(sb, pd.Parent().FullName(), v) + case genid.EnumValueDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + vd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.EnumValue, rawOptions) +} + +func (md *Message) unmarshalFull(b []byte, sb *strs.Builder) { + var rawFields, rawOneofs [][]byte + var enumIdx, messageIdx, extensionIdx int + var rawOptions []byte + md.L2 = new(MessageL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.DescriptorProto_Field_field_number: + rawFields = append(rawFields, v) + case genid.DescriptorProto_OneofDecl_field_number: + rawOneofs = append(rawOneofs, v) + case genid.DescriptorProto_ReservedName_field_number: + md.L2.ReservedNames.List = append(md.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) + case genid.DescriptorProto_ReservedRange_field_number: + md.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v)) + case genid.DescriptorProto_ExtensionRange_field_number: + r, rawOptions := unmarshalMessageExtensionRange(v) + opts := md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.ExtensionRange, rawOptions) + md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, r) + md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, opts) + case genid.DescriptorProto_EnumType_field_number: + md.L1.Enums.List[enumIdx].unmarshalFull(v, sb) + enumIdx++ + case genid.DescriptorProto_NestedType_field_number: + md.L1.Messages.List[messageIdx].unmarshalFull(v, sb) + messageIdx++ + case genid.DescriptorProto_Extension_field_number: + md.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb) + extensionIdx++ + case genid.DescriptorProto_Options_field_number: + md.unmarshalOptions(v) + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if len(rawFields) > 0 || len(rawOneofs) > 0 { + md.L2.Fields.List = make([]Field, len(rawFields)) + md.L2.Oneofs.List = make([]Oneof, len(rawOneofs)) + for i, b := range rawFields { + fd := &md.L2.Fields.List[i] + fd.unmarshalFull(b, sb, md.L0.ParentFile, md, i) + if fd.L1.Cardinality == protoreflect.Required { + md.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number) + } + } + for i, b := range rawOneofs { + od := &md.L2.Oneofs.List[i] + od.unmarshalFull(b, sb, md.L0.ParentFile, md, i) + } + } + md.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions) +} + +func (md *Message) unmarshalOptions(b []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.MessageOptions_MapEntry_field_number: + md.L1.IsMapEntry = protowire.DecodeBool(v) + case genid.MessageOptions_MessageSetWireFormat_field_number: + md.L1.IsMessageSet = protowire.DecodeBool(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.DescriptorProto_ReservedRange_Start_field_number: + r[0] = protoreflect.FieldNumber(v) + case genid.DescriptorProto_ReservedRange_End_field_number: + r[1] = protoreflect.FieldNumber(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + return r +} + +func unmarshalMessageExtensionRange(b []byte) (r [2]protoreflect.FieldNumber, rawOptions []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.DescriptorProto_ExtensionRange_Start_field_number: + r[0] = protoreflect.FieldNumber(v) + case genid.DescriptorProto_ExtensionRange_End_field_number: + r[1] = protoreflect.FieldNumber(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.DescriptorProto_ExtensionRange_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + return r, rawOptions +} + +func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + fd.L0.ParentFile = pf + fd.L0.Parent = pd + fd.L0.Index = i + fd.L1.EditionFeatures = featuresFromParentDesc(fd.Parent()) + + var rawTypeName []byte + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Number_field_number: + fd.L1.Number = protoreflect.FieldNumber(v) + case genid.FieldDescriptorProto_Label_field_number: + fd.L1.Cardinality = protoreflect.Cardinality(v) + case genid.FieldDescriptorProto_Type_field_number: + fd.L1.Kind = protoreflect.Kind(v) + case genid.FieldDescriptorProto_OneofIndex_field_number: + // In Message.unmarshalFull, we allocate slices for both + // the field and oneof descriptors before unmarshaling either + // of them. This ensures pointers to slice elements are stable. + od := &pd.(*Message).L2.Oneofs.List[v] + od.L1.Fields.List = append(od.L1.Fields.List, fd) + if fd.L1.ContainingOneof != nil { + panic("oneof type already set") + } + fd.L1.ContainingOneof = od + case genid.FieldDescriptorProto_Proto3Optional_field_number: + fd.L1.IsProto3Optional = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Name_field_number: + fd.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.FieldDescriptorProto_JsonName_field_number: + fd.L1.StringName.InitJSON(sb.MakeString(v)) + case genid.FieldDescriptorProto_DefaultValue_field_number: + fd.L1.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages + case genid.FieldDescriptorProto_TypeName_field_number: + rawTypeName = v + case genid.FieldDescriptorProto_Options_field_number: + fd.unmarshalOptions(v) + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded { + fd.L1.Kind = protoreflect.GroupKind + } + if fd.L1.EditionFeatures.IsLegacyRequired { + fd.L1.Cardinality = protoreflect.Required + } + if rawTypeName != nil { + name := makeFullName(sb, rawTypeName) + switch fd.L1.Kind { + case protoreflect.EnumKind: + fd.L1.Enum = PlaceholderEnum(name) + case protoreflect.MessageKind, protoreflect.GroupKind: + fd.L1.Message = PlaceholderMessage(name) + } + } + fd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Field, rawOptions) +} + +func (fd *Field) unmarshalOptions(b []byte) { + const FieldOptions_EnforceUTF8 = 13 + + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldOptions_Packed_field_number: + fd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) + case genid.FieldOptions_Weak_field_number: + fd.L1.IsWeak = protowire.DecodeBool(v) + case FieldOptions_EnforceUTF8: + fd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldOptions_Features_field_number: + fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + od.L0.ParentFile = pf + od.L0.Parent = pd + od.L0.Index = i + + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.OneofDescriptorProto_Name_field_number: + od.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.OneofDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + od.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Oneof, rawOptions) +} + +func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { + var rawTypeName []byte + var rawOptions []byte + xd.L2 = new(ExtensionL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Proto3Optional_field_number: + xd.L2.IsProto3Optional = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_JsonName_field_number: + xd.L2.StringName.InitJSON(sb.MakeString(v)) + case genid.FieldDescriptorProto_DefaultValue_field_number: + xd.L2.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions + case genid.FieldDescriptorProto_TypeName_field_number: + rawTypeName = v + case genid.FieldDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if rawTypeName != nil { + name := makeFullName(sb, rawTypeName) + switch xd.L1.Kind { + case protoreflect.EnumKind: + xd.L2.Enum = PlaceholderEnum(name) + case protoreflect.MessageKind, protoreflect.GroupKind: + xd.L2.Message = PlaceholderMessage(name) + } + } + xd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions) +} + +func (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) { + var rawMethods [][]byte + var rawOptions []byte + sd.L2 = new(ServiceL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.ServiceDescriptorProto_Method_field_number: + rawMethods = append(rawMethods, v) + case genid.ServiceDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if len(rawMethods) > 0 { + sd.L2.Methods.List = make([]Method, len(rawMethods)) + for i, b := range rawMethods { + sd.L2.Methods.List[i].unmarshalFull(b, sb, sd.L0.ParentFile, sd, i) + } + } + sd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions) +} + +func (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + md.L0.ParentFile = pf + md.L0.Parent = pd + md.L0.Index = i + + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.MethodDescriptorProto_ClientStreaming_field_number: + md.L1.IsStreamingClient = protowire.DecodeBool(v) + case genid.MethodDescriptorProto_ServerStreaming_field_number: + md.L1.IsStreamingServer = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.MethodDescriptorProto_Name_field_number: + md.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.MethodDescriptorProto_InputType_field_number: + md.L1.Input = PlaceholderMessage(makeFullName(sb, v)) + case genid.MethodDescriptorProto_OutputType_field_number: + md.L1.Output = PlaceholderMessage(makeFullName(sb, v)) + case genid.MethodDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + md.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Method, rawOptions) +} + +// appendOptions appends src to dst, where the returned slice is never nil. +// This is necessary to distinguish between empty and unpopulated options. +func appendOptions(dst, src []byte) []byte { + if dst == nil { + dst = []byte{} + } + return append(dst, src...) +} + +// optionsUnmarshaler constructs a lazy unmarshal function for an options message. +// +// The type of message to unmarshal to is passed as a pointer since the +// vars in descopts may not yet be populated at the time this function is called. +func (db *Builder) optionsUnmarshaler(p *protoreflect.ProtoMessage, b []byte) func() protoreflect.ProtoMessage { + if b == nil { + return nil + } + var opts protoreflect.ProtoMessage + var once sync.Once + return func() protoreflect.ProtoMessage { + once.Do(func() { + if *p == nil { + panic("Descriptor.Options called without importing the descriptor package") + } + opts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(protoreflect.ProtoMessage) + if err := (proto.UnmarshalOptions{ + AllowPartial: true, + Resolver: db.TypeResolver, + }).Unmarshal(b, opts); err != nil { + panic(err) + } + }) + return opts + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go new file mode 100644 index 0000000..e3b6587 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go @@ -0,0 +1,457 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "fmt" + "math" + "sort" + "sync" + + "google.golang.org/protobuf/internal/genid" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/descfmt" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type FileImports []protoreflect.FileImport + +func (p *FileImports) Len() int { return len(*p) } +func (p *FileImports) Get(i int) protoreflect.FileImport { return (*p)[i] } +func (p *FileImports) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *FileImports) ProtoInternal(pragma.DoNotImplement) {} + +type Names struct { + List []protoreflect.Name + once sync.Once + has map[protoreflect.Name]int // protected by once +} + +func (p *Names) Len() int { return len(p.List) } +func (p *Names) Get(i int) protoreflect.Name { return p.List[i] } +func (p *Names) Has(s protoreflect.Name) bool { return p.lazyInit().has[s] > 0 } +func (p *Names) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *Names) ProtoInternal(pragma.DoNotImplement) {} +func (p *Names) lazyInit() *Names { + p.once.Do(func() { + if len(p.List) > 0 { + p.has = make(map[protoreflect.Name]int, len(p.List)) + for _, s := range p.List { + p.has[s] = p.has[s] + 1 + } + } + }) + return p +} + +// CheckValid reports any errors with the set of names with an error message +// that completes the sentence: "ranges is invalid because it has ..." +func (p *Names) CheckValid() error { + for s, n := range p.lazyInit().has { + switch { + case n > 1: + return errors.New("duplicate name: %q", s) + case false && !s.IsValid(): + // NOTE: The C++ implementation does not validate the identifier. + // See https://github.com/protocolbuffers/protobuf/issues/6335. + return errors.New("invalid name: %q", s) + } + } + return nil +} + +type EnumRanges struct { + List [][2]protoreflect.EnumNumber // start inclusive; end inclusive + once sync.Once + sorted [][2]protoreflect.EnumNumber // protected by once +} + +func (p *EnumRanges) Len() int { return len(p.List) } +func (p *EnumRanges) Get(i int) [2]protoreflect.EnumNumber { return p.List[i] } +func (p *EnumRanges) Has(n protoreflect.EnumNumber) bool { + for ls := p.lazyInit().sorted; len(ls) > 0; { + i := len(ls) / 2 + switch r := enumRange(ls[i]); { + case n < r.Start(): + ls = ls[:i] // search lower + case n > r.End(): + ls = ls[i+1:] // search upper + default: + return true + } + } + return false +} +func (p *EnumRanges) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *EnumRanges) ProtoInternal(pragma.DoNotImplement) {} +func (p *EnumRanges) lazyInit() *EnumRanges { + p.once.Do(func() { + p.sorted = append(p.sorted, p.List...) + sort.Slice(p.sorted, func(i, j int) bool { + return p.sorted[i][0] < p.sorted[j][0] + }) + }) + return p +} + +// CheckValid reports any errors with the set of names with an error message +// that completes the sentence: "ranges is invalid because it has ..." +func (p *EnumRanges) CheckValid() error { + var rp enumRange + for i, r := range p.lazyInit().sorted { + r := enumRange(r) + switch { + case !(r.Start() <= r.End()): + return errors.New("invalid range: %v", r) + case !(rp.End() < r.Start()) && i > 0: + return errors.New("overlapping ranges: %v with %v", rp, r) + } + rp = r + } + return nil +} + +type enumRange [2]protoreflect.EnumNumber + +func (r enumRange) Start() protoreflect.EnumNumber { return r[0] } // inclusive +func (r enumRange) End() protoreflect.EnumNumber { return r[1] } // inclusive +func (r enumRange) String() string { + if r.Start() == r.End() { + return fmt.Sprintf("%d", r.Start()) + } + return fmt.Sprintf("%d to %d", r.Start(), r.End()) +} + +type FieldRanges struct { + List [][2]protoreflect.FieldNumber // start inclusive; end exclusive + once sync.Once + sorted [][2]protoreflect.FieldNumber // protected by once +} + +func (p *FieldRanges) Len() int { return len(p.List) } +func (p *FieldRanges) Get(i int) [2]protoreflect.FieldNumber { return p.List[i] } +func (p *FieldRanges) Has(n protoreflect.FieldNumber) bool { + for ls := p.lazyInit().sorted; len(ls) > 0; { + i := len(ls) / 2 + switch r := fieldRange(ls[i]); { + case n < r.Start(): + ls = ls[:i] // search lower + case n > r.End(): + ls = ls[i+1:] // search upper + default: + return true + } + } + return false +} +func (p *FieldRanges) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *FieldRanges) ProtoInternal(pragma.DoNotImplement) {} +func (p *FieldRanges) lazyInit() *FieldRanges { + p.once.Do(func() { + p.sorted = append(p.sorted, p.List...) + sort.Slice(p.sorted, func(i, j int) bool { + return p.sorted[i][0] < p.sorted[j][0] + }) + }) + return p +} + +// CheckValid reports any errors with the set of ranges with an error message +// that completes the sentence: "ranges is invalid because it has ..." +func (p *FieldRanges) CheckValid(isMessageSet bool) error { + var rp fieldRange + for i, r := range p.lazyInit().sorted { + r := fieldRange(r) + switch { + case !isValidFieldNumber(r.Start(), isMessageSet): + return errors.New("invalid field number: %d", r.Start()) + case !isValidFieldNumber(r.End(), isMessageSet): + return errors.New("invalid field number: %d", r.End()) + case !(r.Start() <= r.End()): + return errors.New("invalid range: %v", r) + case !(rp.End() < r.Start()) && i > 0: + return errors.New("overlapping ranges: %v with %v", rp, r) + } + rp = r + } + return nil +} + +// isValidFieldNumber reports whether the field number is valid. +// Unlike the FieldNumber.IsValid method, it allows ranges that cover the +// reserved number range. +func isValidFieldNumber(n protoreflect.FieldNumber, isMessageSet bool) bool { + return protowire.MinValidNumber <= n && (n <= protowire.MaxValidNumber || isMessageSet) +} + +// CheckOverlap reports an error if p and q overlap. +func (p *FieldRanges) CheckOverlap(q *FieldRanges) error { + rps := p.lazyInit().sorted + rqs := q.lazyInit().sorted + for pi, qi := 0, 0; pi < len(rps) && qi < len(rqs); { + rp := fieldRange(rps[pi]) + rq := fieldRange(rqs[qi]) + if !(rp.End() < rq.Start() || rq.End() < rp.Start()) { + return errors.New("overlapping ranges: %v with %v", rp, rq) + } + if rp.Start() < rq.Start() { + pi++ + } else { + qi++ + } + } + return nil +} + +type fieldRange [2]protoreflect.FieldNumber + +func (r fieldRange) Start() protoreflect.FieldNumber { return r[0] } // inclusive +func (r fieldRange) End() protoreflect.FieldNumber { return r[1] - 1 } // inclusive +func (r fieldRange) String() string { + if r.Start() == r.End() { + return fmt.Sprintf("%d", r.Start()) + } + return fmt.Sprintf("%d to %d", r.Start(), r.End()) +} + +type FieldNumbers struct { + List []protoreflect.FieldNumber + once sync.Once + has map[protoreflect.FieldNumber]struct{} // protected by once +} + +func (p *FieldNumbers) Len() int { return len(p.List) } +func (p *FieldNumbers) Get(i int) protoreflect.FieldNumber { return p.List[i] } +func (p *FieldNumbers) Has(n protoreflect.FieldNumber) bool { + p.once.Do(func() { + if len(p.List) > 0 { + p.has = make(map[protoreflect.FieldNumber]struct{}, len(p.List)) + for _, n := range p.List { + p.has[n] = struct{}{} + } + } + }) + _, ok := p.has[n] + return ok +} +func (p *FieldNumbers) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {} + +type OneofFields struct { + List []protoreflect.FieldDescriptor + once sync.Once + byName map[protoreflect.Name]protoreflect.FieldDescriptor // protected by once + byJSON map[string]protoreflect.FieldDescriptor // protected by once + byText map[string]protoreflect.FieldDescriptor // protected by once + byNum map[protoreflect.FieldNumber]protoreflect.FieldDescriptor // protected by once +} + +func (p *OneofFields) Len() int { return len(p.List) } +func (p *OneofFields) Get(i int) protoreflect.FieldDescriptor { return p.List[i] } +func (p *OneofFields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor { + return p.lazyInit().byName[s] +} +func (p *OneofFields) ByJSONName(s string) protoreflect.FieldDescriptor { + return p.lazyInit().byJSON[s] +} +func (p *OneofFields) ByTextName(s string) protoreflect.FieldDescriptor { + return p.lazyInit().byText[s] +} +func (p *OneofFields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor { + return p.lazyInit().byNum[n] +} +func (p *OneofFields) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {} + +func (p *OneofFields) lazyInit() *OneofFields { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]protoreflect.FieldDescriptor, len(p.List)) + p.byJSON = make(map[string]protoreflect.FieldDescriptor, len(p.List)) + p.byText = make(map[string]protoreflect.FieldDescriptor, len(p.List)) + p.byNum = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, len(p.List)) + for _, f := range p.List { + // Field names and numbers are guaranteed to be unique. + p.byName[f.Name()] = f + p.byJSON[f.JSONName()] = f + p.byText[f.TextName()] = f + p.byNum[f.Number()] = f + } + } + }) + return p +} + +type SourceLocations struct { + // List is a list of SourceLocations. + // The SourceLocation.Next field does not need to be populated + // as it will be lazily populated upon first need. + List []protoreflect.SourceLocation + + // File is the parent file descriptor that these locations are relative to. + // If non-nil, ByDescriptor verifies that the provided descriptor + // is a child of this file descriptor. + File protoreflect.FileDescriptor + + once sync.Once + byPath map[pathKey]int +} + +func (p *SourceLocations) Len() int { return len(p.List) } +func (p *SourceLocations) Get(i int) protoreflect.SourceLocation { return p.lazyInit().List[i] } +func (p *SourceLocations) byKey(k pathKey) protoreflect.SourceLocation { + if i, ok := p.lazyInit().byPath[k]; ok { + return p.List[i] + } + return protoreflect.SourceLocation{} +} +func (p *SourceLocations) ByPath(path protoreflect.SourcePath) protoreflect.SourceLocation { + return p.byKey(newPathKey(path)) +} +func (p *SourceLocations) ByDescriptor(desc protoreflect.Descriptor) protoreflect.SourceLocation { + if p.File != nil && desc != nil && p.File != desc.ParentFile() { + return protoreflect.SourceLocation{} // mismatching parent files + } + var pathArr [16]int32 + path := pathArr[:0] + for { + switch desc.(type) { + case protoreflect.FileDescriptor: + // Reverse the path since it was constructed in reverse. + for i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 { + path[i], path[j] = path[j], path[i] + } + return p.byKey(newPathKey(path)) + case protoreflect.MessageDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_MessageType_field_number)) + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_NestedType_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.FieldDescriptor: + isExtension := desc.(protoreflect.FieldDescriptor).IsExtension() + path = append(path, int32(desc.Index())) + desc = desc.Parent() + if isExtension { + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_Extension_field_number)) + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_Extension_field_number)) + default: + return protoreflect.SourceLocation{} + } + } else { + switch desc.(type) { + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_Field_field_number)) + default: + return protoreflect.SourceLocation{} + } + } + case protoreflect.OneofDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_OneofDecl_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.EnumDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_EnumType_field_number)) + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_EnumType_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.EnumValueDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.EnumDescriptor: + path = append(path, int32(genid.EnumDescriptorProto_Value_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.ServiceDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_Service_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.MethodDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.ServiceDescriptor: + path = append(path, int32(genid.ServiceDescriptorProto_Method_field_number)) + default: + return protoreflect.SourceLocation{} + } + default: + return protoreflect.SourceLocation{} + } + } +} +func (p *SourceLocations) lazyInit() *SourceLocations { + p.once.Do(func() { + if len(p.List) > 0 { + // Collect all the indexes for a given path. + pathIdxs := make(map[pathKey][]int, len(p.List)) + for i, l := range p.List { + k := newPathKey(l.Path) + pathIdxs[k] = append(pathIdxs[k], i) + } + + // Update the next index for all locations. + p.byPath = make(map[pathKey]int, len(p.List)) + for k, idxs := range pathIdxs { + for i := 0; i < len(idxs)-1; i++ { + p.List[idxs[i]].Next = idxs[i+1] + } + p.List[idxs[len(idxs)-1]].Next = 0 + p.byPath[k] = idxs[0] // record the first location for this path + } + } + }) + return p +} +func (p *SourceLocations) ProtoInternal(pragma.DoNotImplement) {} + +// pathKey is a comparable representation of protoreflect.SourcePath. +type pathKey struct { + arr [16]uint8 // first n-1 path segments; last element is the length + str string // used if the path does not fit in arr +} + +func newPathKey(p protoreflect.SourcePath) (k pathKey) { + if len(p) < len(k.arr) { + for i, ps := range p { + if ps < 0 || math.MaxUint8 <= ps { + return pathKey{str: p.String()} + } + k.arr[i] = uint8(ps) + } + k.arr[len(k.arr)-1] = uint8(len(p)) + return k + } + return pathKey{str: p.String()} +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go new file mode 100644 index 0000000..f4107c0 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go @@ -0,0 +1,367 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package filedesc + +import ( + "fmt" + "strings" + "sync" + + "google.golang.org/protobuf/internal/descfmt" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type Enums struct { + List []Enum + once sync.Once + byName map[protoreflect.Name]*Enum // protected by once +} + +func (p *Enums) Len() int { + return len(p.List) +} +func (p *Enums) Get(i int) protoreflect.EnumDescriptor { + return &p.List[i] +} +func (p *Enums) ByName(s protoreflect.Name) protoreflect.EnumDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Enums) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Enums) ProtoInternal(pragma.DoNotImplement) {} +func (p *Enums) lazyInit() *Enums { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Enum, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type EnumValues struct { + List []EnumValue + once sync.Once + byName map[protoreflect.Name]*EnumValue // protected by once + byNum map[protoreflect.EnumNumber]*EnumValue // protected by once +} + +func (p *EnumValues) Len() int { + return len(p.List) +} +func (p *EnumValues) Get(i int) protoreflect.EnumValueDescriptor { + return &p.List[i] +} +func (p *EnumValues) ByName(s protoreflect.Name) protoreflect.EnumValueDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *EnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor { + if d := p.lazyInit().byNum[n]; d != nil { + return d + } + return nil +} +func (p *EnumValues) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *EnumValues) ProtoInternal(pragma.DoNotImplement) {} +func (p *EnumValues) lazyInit() *EnumValues { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*EnumValue, len(p.List)) + p.byNum = make(map[protoreflect.EnumNumber]*EnumValue, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + if _, ok := p.byNum[d.Number()]; !ok { + p.byNum[d.Number()] = d + } + } + } + }) + return p +} + +type Messages struct { + List []Message + once sync.Once + byName map[protoreflect.Name]*Message // protected by once +} + +func (p *Messages) Len() int { + return len(p.List) +} +func (p *Messages) Get(i int) protoreflect.MessageDescriptor { + return &p.List[i] +} +func (p *Messages) ByName(s protoreflect.Name) protoreflect.MessageDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Messages) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Messages) ProtoInternal(pragma.DoNotImplement) {} +func (p *Messages) lazyInit() *Messages { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Message, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Fields struct { + List []Field + once sync.Once + byName map[protoreflect.Name]*Field // protected by once + byJSON map[string]*Field // protected by once + byText map[string]*Field // protected by once + byNum map[protoreflect.FieldNumber]*Field // protected by once +} + +func (p *Fields) Len() int { + return len(p.List) +} +func (p *Fields) Get(i int) protoreflect.FieldDescriptor { + return &p.List[i] +} +func (p *Fields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Fields) ByJSONName(s string) protoreflect.FieldDescriptor { + if d := p.lazyInit().byJSON[s]; d != nil { + return d + } + return nil +} +func (p *Fields) ByTextName(s string) protoreflect.FieldDescriptor { + if d := p.lazyInit().byText[s]; d != nil { + return d + } + return nil +} +func (p *Fields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor { + if d := p.lazyInit().byNum[n]; d != nil { + return d + } + return nil +} +func (p *Fields) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Fields) ProtoInternal(pragma.DoNotImplement) {} +func (p *Fields) lazyInit() *Fields { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Field, len(p.List)) + p.byJSON = make(map[string]*Field, len(p.List)) + p.byText = make(map[string]*Field, len(p.List)) + p.byNum = make(map[protoreflect.FieldNumber]*Field, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + if _, ok := p.byJSON[d.JSONName()]; !ok { + p.byJSON[d.JSONName()] = d + } + if _, ok := p.byText[d.TextName()]; !ok { + p.byText[d.TextName()] = d + } + if isGroupLike(d) { + lowerJSONName := strings.ToLower(d.JSONName()) + if _, ok := p.byJSON[lowerJSONName]; !ok { + p.byJSON[lowerJSONName] = d + } + lowerTextName := strings.ToLower(d.TextName()) + if _, ok := p.byText[lowerTextName]; !ok { + p.byText[lowerTextName] = d + } + } + if _, ok := p.byNum[d.Number()]; !ok { + p.byNum[d.Number()] = d + } + } + } + }) + return p +} + +type Oneofs struct { + List []Oneof + once sync.Once + byName map[protoreflect.Name]*Oneof // protected by once +} + +func (p *Oneofs) Len() int { + return len(p.List) +} +func (p *Oneofs) Get(i int) protoreflect.OneofDescriptor { + return &p.List[i] +} +func (p *Oneofs) ByName(s protoreflect.Name) protoreflect.OneofDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Oneofs) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Oneofs) ProtoInternal(pragma.DoNotImplement) {} +func (p *Oneofs) lazyInit() *Oneofs { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Oneof, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Extensions struct { + List []Extension + once sync.Once + byName map[protoreflect.Name]*Extension // protected by once +} + +func (p *Extensions) Len() int { + return len(p.List) +} +func (p *Extensions) Get(i int) protoreflect.ExtensionDescriptor { + return &p.List[i] +} +func (p *Extensions) ByName(s protoreflect.Name) protoreflect.ExtensionDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Extensions) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Extensions) ProtoInternal(pragma.DoNotImplement) {} +func (p *Extensions) lazyInit() *Extensions { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Extension, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Services struct { + List []Service + once sync.Once + byName map[protoreflect.Name]*Service // protected by once +} + +func (p *Services) Len() int { + return len(p.List) +} +func (p *Services) Get(i int) protoreflect.ServiceDescriptor { + return &p.List[i] +} +func (p *Services) ByName(s protoreflect.Name) protoreflect.ServiceDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Services) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Services) ProtoInternal(pragma.DoNotImplement) {} +func (p *Services) lazyInit() *Services { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Service, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Methods struct { + List []Method + once sync.Once + byName map[protoreflect.Name]*Method // protected by once +} + +func (p *Methods) Len() int { + return len(p.List) +} +func (p *Methods) Get(i int) protoreflect.MethodDescriptor { + return &p.List[i] +} +func (p *Methods) ByName(s protoreflect.Name) protoreflect.MethodDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Methods) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Methods) ProtoInternal(pragma.DoNotImplement) {} +func (p *Methods) lazyInit() *Methods { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Method, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go new file mode 100644 index 0000000..11f5f35 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go @@ -0,0 +1,156 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "fmt" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/editiondefaults" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var defaultsCache = make(map[Edition]EditionFeatures) +var defaultsKeys = []Edition{} + +func init() { + unmarshalEditionDefaults(editiondefaults.Defaults) + SurrogateProto2.L1.EditionFeatures = getFeaturesFor(EditionProto2) + SurrogateProto3.L1.EditionFeatures = getFeaturesFor(EditionProto3) + SurrogateEdition2023.L1.EditionFeatures = getFeaturesFor(Edition2023) +} + +func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures { + for len(b) > 0 { + num, _, n := protowire.ConsumeTag(b) + b = b[n:] + switch num { + case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v) + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num)) + } + } + return parent +} + +func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FeatureSet_FieldPresence_field_number: + parent.IsFieldPresence = v == genid.FeatureSet_EXPLICIT_enum_value || v == genid.FeatureSet_LEGACY_REQUIRED_enum_value + parent.IsLegacyRequired = v == genid.FeatureSet_LEGACY_REQUIRED_enum_value + case genid.FeatureSet_EnumType_field_number: + parent.IsOpenEnum = v == genid.FeatureSet_OPEN_enum_value + case genid.FeatureSet_RepeatedFieldEncoding_field_number: + parent.IsPacked = v == genid.FeatureSet_PACKED_enum_value + case genid.FeatureSet_Utf8Validation_field_number: + parent.IsUTF8Validated = v == genid.FeatureSet_VERIFY_enum_value + case genid.FeatureSet_MessageEncoding_field_number: + parent.IsDelimitedEncoded = v == genid.FeatureSet_DELIMITED_enum_value + case genid.FeatureSet_JsonFormat_field_number: + parent.IsJSONCompliant = v == genid.FeatureSet_ALLOW_enum_value + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling FeatureSet", num)) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: + parent = unmarshalGoFeature(v, parent) + } + } + } + + return parent +} + +func featuresFromParentDesc(parentDesc protoreflect.Descriptor) EditionFeatures { + var parentFS EditionFeatures + switch p := parentDesc.(type) { + case *File: + parentFS = p.L1.EditionFeatures + case *Message: + parentFS = p.L1.EditionFeatures + default: + panic(fmt.Sprintf("unknown parent type %T", parentDesc)) + } + return parentFS +} + +func unmarshalEditionDefault(b []byte) { + var ed Edition + var fs EditionFeatures + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number: + ed = Edition(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number: + fs = unmarshalFeatureSet(v, fs) + case genid.FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number: + fs = unmarshalFeatureSet(v, fs) + } + } + } + defaultsCache[ed] = fs + defaultsKeys = append(defaultsKeys, ed) +} + +func unmarshalEditionDefaults(b []byte) { + for len(b) > 0 { + num, _, n := protowire.ConsumeTag(b) + b = b[n:] + switch num { + case genid.FeatureSetDefaults_Defaults_field_number: + def, m := protowire.ConsumeBytes(b) + b = b[m:] + unmarshalEditionDefault(def) + case genid.FeatureSetDefaults_MinimumEdition_field_number, + genid.FeatureSetDefaults_MaximumEdition_field_number: + // We don't care about the minimum and maximum editions. If the + // edition we are looking for later on is not in the cache we know + // it is outside of the range between minimum and maximum edition. + _, m := protowire.ConsumeVarint(b) + b = b[m:] + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling EditionDefault", num)) + } + } +} + +func getFeaturesFor(ed Edition) EditionFeatures { + match := EditionUnknown + for _, key := range defaultsKeys { + if key > ed { + break + } + match = key + } + if match == EditionUnknown { + panic(fmt.Sprintf("unsupported edition: %v", ed)) + } + return defaultsCache[match] +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go new file mode 100644 index 0000000..bfb3b84 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go @@ -0,0 +1,110 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var ( + emptyNames = new(Names) + emptyEnumRanges = new(EnumRanges) + emptyFieldRanges = new(FieldRanges) + emptyFieldNumbers = new(FieldNumbers) + emptySourceLocations = new(SourceLocations) + + emptyFiles = new(FileImports) + emptyMessages = new(Messages) + emptyFields = new(Fields) + emptyOneofs = new(Oneofs) + emptyEnums = new(Enums) + emptyEnumValues = new(EnumValues) + emptyExtensions = new(Extensions) + emptyServices = new(Services) +) + +// PlaceholderFile is a placeholder, representing only the file path. +type PlaceholderFile string + +func (f PlaceholderFile) ParentFile() protoreflect.FileDescriptor { return f } +func (f PlaceholderFile) Parent() protoreflect.Descriptor { return nil } +func (f PlaceholderFile) Index() int { return 0 } +func (f PlaceholderFile) Syntax() protoreflect.Syntax { return 0 } +func (f PlaceholderFile) Name() protoreflect.Name { return "" } +func (f PlaceholderFile) FullName() protoreflect.FullName { return "" } +func (f PlaceholderFile) IsPlaceholder() bool { return true } +func (f PlaceholderFile) Options() protoreflect.ProtoMessage { return descopts.File } +func (f PlaceholderFile) Path() string { return string(f) } +func (f PlaceholderFile) Package() protoreflect.FullName { return "" } +func (f PlaceholderFile) Imports() protoreflect.FileImports { return emptyFiles } +func (f PlaceholderFile) Messages() protoreflect.MessageDescriptors { return emptyMessages } +func (f PlaceholderFile) Enums() protoreflect.EnumDescriptors { return emptyEnums } +func (f PlaceholderFile) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } +func (f PlaceholderFile) Services() protoreflect.ServiceDescriptors { return emptyServices } +func (f PlaceholderFile) SourceLocations() protoreflect.SourceLocations { return emptySourceLocations } +func (f PlaceholderFile) ProtoType(protoreflect.FileDescriptor) { return } +func (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement) { return } + +// PlaceholderEnum is a placeholder, representing only the full name. +type PlaceholderEnum protoreflect.FullName + +func (e PlaceholderEnum) ParentFile() protoreflect.FileDescriptor { return nil } +func (e PlaceholderEnum) Parent() protoreflect.Descriptor { return nil } +func (e PlaceholderEnum) Index() int { return 0 } +func (e PlaceholderEnum) Syntax() protoreflect.Syntax { return 0 } +func (e PlaceholderEnum) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } +func (e PlaceholderEnum) FullName() protoreflect.FullName { return protoreflect.FullName(e) } +func (e PlaceholderEnum) IsPlaceholder() bool { return true } +func (e PlaceholderEnum) Options() protoreflect.ProtoMessage { return descopts.Enum } +func (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues } +func (e PlaceholderEnum) ReservedNames() protoreflect.Names { return emptyNames } +func (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges { return emptyEnumRanges } +func (e PlaceholderEnum) IsClosed() bool { return false } +func (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor) { return } +func (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement) { return } + +// PlaceholderEnumValue is a placeholder, representing only the full name. +type PlaceholderEnumValue protoreflect.FullName + +func (e PlaceholderEnumValue) ParentFile() protoreflect.FileDescriptor { return nil } +func (e PlaceholderEnumValue) Parent() protoreflect.Descriptor { return nil } +func (e PlaceholderEnumValue) Index() int { return 0 } +func (e PlaceholderEnumValue) Syntax() protoreflect.Syntax { return 0 } +func (e PlaceholderEnumValue) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } +func (e PlaceholderEnumValue) FullName() protoreflect.FullName { return protoreflect.FullName(e) } +func (e PlaceholderEnumValue) IsPlaceholder() bool { return true } +func (e PlaceholderEnumValue) Options() protoreflect.ProtoMessage { return descopts.EnumValue } +func (e PlaceholderEnumValue) Number() protoreflect.EnumNumber { return 0 } +func (e PlaceholderEnumValue) ProtoType(protoreflect.EnumValueDescriptor) { return } +func (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement) { return } + +// PlaceholderMessage is a placeholder, representing only the full name. +type PlaceholderMessage protoreflect.FullName + +func (m PlaceholderMessage) ParentFile() protoreflect.FileDescriptor { return nil } +func (m PlaceholderMessage) Parent() protoreflect.Descriptor { return nil } +func (m PlaceholderMessage) Index() int { return 0 } +func (m PlaceholderMessage) Syntax() protoreflect.Syntax { return 0 } +func (m PlaceholderMessage) Name() protoreflect.Name { return protoreflect.FullName(m).Name() } +func (m PlaceholderMessage) FullName() protoreflect.FullName { return protoreflect.FullName(m) } +func (m PlaceholderMessage) IsPlaceholder() bool { return true } +func (m PlaceholderMessage) Options() protoreflect.ProtoMessage { return descopts.Message } +func (m PlaceholderMessage) IsMapEntry() bool { return false } +func (m PlaceholderMessage) Fields() protoreflect.FieldDescriptors { return emptyFields } +func (m PlaceholderMessage) Oneofs() protoreflect.OneofDescriptors { return emptyOneofs } +func (m PlaceholderMessage) ReservedNames() protoreflect.Names { return emptyNames } +func (m PlaceholderMessage) ReservedRanges() protoreflect.FieldRanges { return emptyFieldRanges } +func (m PlaceholderMessage) RequiredNumbers() protoreflect.FieldNumbers { return emptyFieldNumbers } +func (m PlaceholderMessage) ExtensionRanges() protoreflect.FieldRanges { return emptyFieldRanges } +func (m PlaceholderMessage) ExtensionRangeOptions(int) protoreflect.ProtoMessage { + panic("index out of range") +} +func (m PlaceholderMessage) Messages() protoreflect.MessageDescriptors { return emptyMessages } +func (m PlaceholderMessage) Enums() protoreflect.EnumDescriptors { return emptyEnums } +func (m PlaceholderMessage) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } +func (m PlaceholderMessage) ProtoType(protoreflect.MessageDescriptor) { return } +func (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go b/examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go new file mode 100644 index 0000000..ba83fea --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go @@ -0,0 +1,296 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package filetype provides functionality for wrapping descriptors +// with Go type information. +package filetype + +import ( + "reflect" + + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/filedesc" + pimpl "google.golang.org/protobuf/internal/impl" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Builder constructs type descriptors from a raw file descriptor +// and associated Go types for each enum and message declaration. +// +// # Flattened Ordering +// +// The protobuf type system represents declarations as a tree. Certain nodes in +// the tree require us to either associate it with a concrete Go type or to +// resolve a dependency, which is information that must be provided separately +// since it cannot be derived from the file descriptor alone. +// +// However, representing a tree as Go literals is difficult to simply do in a +// space and time efficient way. Thus, we store them as a flattened list of +// objects where the serialization order from the tree-based form is important. +// +// The "flattened ordering" is defined as a tree traversal of all enum, message, +// extension, and service declarations using the following algorithm: +// +// def VisitFileDecls(fd): +// for e in fd.Enums: yield e +// for m in fd.Messages: yield m +// for x in fd.Extensions: yield x +// for s in fd.Services: yield s +// for m in fd.Messages: yield from VisitMessageDecls(m) +// +// def VisitMessageDecls(md): +// for e in md.Enums: yield e +// for m in md.Messages: yield m +// for x in md.Extensions: yield x +// for m in md.Messages: yield from VisitMessageDecls(m) +// +// The traversal starts at the root file descriptor and yields each direct +// declaration within each node before traversing into sub-declarations +// that children themselves may have. +type Builder struct { + // File is the underlying file descriptor builder. + File filedesc.Builder + + // GoTypes is a unique set of the Go types for all declarations and + // dependencies. Each type is represented as a zero value of the Go type. + // + // Declarations are Go types generated for enums and messages directly + // declared (not publicly imported) in the proto source file. + // Messages for map entries are accounted for, but represented by nil. + // Enum declarations in "flattened ordering" come first, followed by + // message declarations in "flattened ordering". + // + // Dependencies are Go types for enums or messages referenced by + // message fields (excluding weak fields), for parent extended messages of + // extension fields, for enums or messages referenced by extension fields, + // and for input and output messages referenced by service methods. + // Dependencies must come after declarations, but the ordering of + // dependencies themselves is unspecified. + GoTypes []any + + // DependencyIndexes is an ordered list of indexes into GoTypes for the + // dependencies of messages, extensions, or services. + // + // There are 5 sub-lists in "flattened ordering" concatenated back-to-back: + // 0. Message field dependencies: list of the enum or message type + // referred to by every message field. + // 1. Extension field targets: list of the extended parent message of + // every extension. + // 2. Extension field dependencies: list of the enum or message type + // referred to by every extension field. + // 3. Service method inputs: list of the input message type + // referred to by every service method. + // 4. Service method outputs: list of the output message type + // referred to by every service method. + // + // The offset into DependencyIndexes for the start of each sub-list + // is appended to the end in reverse order. + DependencyIndexes []int32 + + // EnumInfos is a list of enum infos in "flattened ordering". + EnumInfos []pimpl.EnumInfo + + // MessageInfos is a list of message infos in "flattened ordering". + // If provided, the GoType and PBType for each element is populated. + // + // Requirement: len(MessageInfos) == len(Build.Messages) + MessageInfos []pimpl.MessageInfo + + // ExtensionInfos is a list of extension infos in "flattened ordering". + // Each element is initialized and registered with the protoregistry package. + // + // Requirement: len(LegacyExtensions) == len(Build.Extensions) + ExtensionInfos []pimpl.ExtensionInfo + + // TypeRegistry is the registry to register each type descriptor. + // If nil, it uses protoregistry.GlobalTypes. + TypeRegistry interface { + RegisterMessage(protoreflect.MessageType) error + RegisterEnum(protoreflect.EnumType) error + RegisterExtension(protoreflect.ExtensionType) error + } +} + +// Out is the output of the builder. +type Out struct { + File protoreflect.FileDescriptor +} + +func (tb Builder) Build() (out Out) { + // Replace the resolver with one that resolves dependencies by index, + // which is faster and more reliable than relying on the global registry. + if tb.File.FileRegistry == nil { + tb.File.FileRegistry = protoregistry.GlobalFiles + } + tb.File.FileRegistry = &resolverByIndex{ + goTypes: tb.GoTypes, + depIdxs: tb.DependencyIndexes, + fileRegistry: tb.File.FileRegistry, + } + + // Initialize registry if unpopulated. + if tb.TypeRegistry == nil { + tb.TypeRegistry = protoregistry.GlobalTypes + } + + fbOut := tb.File.Build() + out.File = fbOut.File + + // Process enums. + enumGoTypes := tb.GoTypes[:len(fbOut.Enums)] + if len(tb.EnumInfos) != len(fbOut.Enums) { + panic("mismatching enum lengths") + } + if len(fbOut.Enums) > 0 { + for i := range fbOut.Enums { + tb.EnumInfos[i] = pimpl.EnumInfo{ + GoReflectType: reflect.TypeOf(enumGoTypes[i]), + Desc: &fbOut.Enums[i], + } + // Register enum types. + if err := tb.TypeRegistry.RegisterEnum(&tb.EnumInfos[i]); err != nil { + panic(err) + } + } + } + + // Process messages. + messageGoTypes := tb.GoTypes[len(fbOut.Enums):][:len(fbOut.Messages)] + if len(tb.MessageInfos) != len(fbOut.Messages) { + panic("mismatching message lengths") + } + if len(fbOut.Messages) > 0 { + for i := range fbOut.Messages { + if messageGoTypes[i] == nil { + continue // skip map entry + } + + tb.MessageInfos[i].GoReflectType = reflect.TypeOf(messageGoTypes[i]) + tb.MessageInfos[i].Desc = &fbOut.Messages[i] + + // Register message types. + if err := tb.TypeRegistry.RegisterMessage(&tb.MessageInfos[i]); err != nil { + panic(err) + } + } + + // As a special-case for descriptor.proto, + // locally register concrete message type for the options. + if out.File.Path() == "google/protobuf/descriptor.proto" && out.File.Package() == "google.protobuf" { + for i := range fbOut.Messages { + switch fbOut.Messages[i].Name() { + case "FileOptions": + descopts.File = messageGoTypes[i].(protoreflect.ProtoMessage) + case "EnumOptions": + descopts.Enum = messageGoTypes[i].(protoreflect.ProtoMessage) + case "EnumValueOptions": + descopts.EnumValue = messageGoTypes[i].(protoreflect.ProtoMessage) + case "MessageOptions": + descopts.Message = messageGoTypes[i].(protoreflect.ProtoMessage) + case "FieldOptions": + descopts.Field = messageGoTypes[i].(protoreflect.ProtoMessage) + case "OneofOptions": + descopts.Oneof = messageGoTypes[i].(protoreflect.ProtoMessage) + case "ExtensionRangeOptions": + descopts.ExtensionRange = messageGoTypes[i].(protoreflect.ProtoMessage) + case "ServiceOptions": + descopts.Service = messageGoTypes[i].(protoreflect.ProtoMessage) + case "MethodOptions": + descopts.Method = messageGoTypes[i].(protoreflect.ProtoMessage) + } + } + } + } + + // Process extensions. + if len(tb.ExtensionInfos) != len(fbOut.Extensions) { + panic("mismatching extension lengths") + } + var depIdx int32 + for i := range fbOut.Extensions { + // For enum and message kinds, determine the referent Go type so + // that we can construct their constructors. + const listExtDeps = 2 + var goType reflect.Type + switch fbOut.Extensions[i].L1.Kind { + case protoreflect.EnumKind: + j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) + goType = reflect.TypeOf(tb.GoTypes[j]) + depIdx++ + case protoreflect.MessageKind, protoreflect.GroupKind: + j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) + goType = reflect.TypeOf(tb.GoTypes[j]) + depIdx++ + default: + goType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind] + } + if fbOut.Extensions[i].IsList() { + goType = reflect.SliceOf(goType) + } + + pimpl.InitExtensionInfo(&tb.ExtensionInfos[i], &fbOut.Extensions[i], goType) + + // Register extension types. + if err := tb.TypeRegistry.RegisterExtension(&tb.ExtensionInfos[i]); err != nil { + panic(err) + } + } + + return out +} + +var goTypeForPBKind = map[protoreflect.Kind]reflect.Type{ + protoreflect.BoolKind: reflect.TypeOf(bool(false)), + protoreflect.Int32Kind: reflect.TypeOf(int32(0)), + protoreflect.Sint32Kind: reflect.TypeOf(int32(0)), + protoreflect.Sfixed32Kind: reflect.TypeOf(int32(0)), + protoreflect.Int64Kind: reflect.TypeOf(int64(0)), + protoreflect.Sint64Kind: reflect.TypeOf(int64(0)), + protoreflect.Sfixed64Kind: reflect.TypeOf(int64(0)), + protoreflect.Uint32Kind: reflect.TypeOf(uint32(0)), + protoreflect.Fixed32Kind: reflect.TypeOf(uint32(0)), + protoreflect.Uint64Kind: reflect.TypeOf(uint64(0)), + protoreflect.Fixed64Kind: reflect.TypeOf(uint64(0)), + protoreflect.FloatKind: reflect.TypeOf(float32(0)), + protoreflect.DoubleKind: reflect.TypeOf(float64(0)), + protoreflect.StringKind: reflect.TypeOf(string("")), + protoreflect.BytesKind: reflect.TypeOf([]byte(nil)), +} + +type depIdxs []int32 + +// Get retrieves the jth element of the ith sub-list. +func (x depIdxs) Get(i, j int32) int32 { + return x[x[int32(len(x))-i-1]+j] +} + +type ( + resolverByIndex struct { + goTypes []any + depIdxs depIdxs + fileRegistry + } + fileRegistry interface { + FindFileByPath(string) (protoreflect.FileDescriptor, error) + FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) + RegisterFile(protoreflect.FileDescriptor) error + } +) + +func (r *resolverByIndex) FindEnumByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.EnumDescriptor { + if depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) { + return &es[depIdx] + } else { + return pimpl.Export{}.EnumDescriptorOf(r.goTypes[depIdx]) + } +} + +func (r *resolverByIndex) FindMessageByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.MessageDescriptor { + if depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) { + return &ms[depIdx-len(es)] + } else { + return pimpl.Export{}.MessageDescriptorOf(r.goTypes[depIdx]) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go b/examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go new file mode 100644 index 0000000..58372dd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go @@ -0,0 +1,24 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package flags provides a set of flags controlled by build tags. +package flags + +// ProtoLegacy specifies whether to enable support for legacy functionality +// such as MessageSets, weak fields, and various other obscure behavior +// that is necessary to maintain backwards compatibility with proto1 or +// the pre-release variants of proto2 and proto3. +// +// This is disabled by default unless built with the "protolegacy" tag. +// +// WARNING: The compatibility agreement covers nothing provided by this flag. +// As such, functionality may suddenly be removed or changed at our discretion. +const ProtoLegacy = protoLegacy + +// LazyUnmarshalExtensions specifies whether to lazily unmarshal extensions. +// +// Lazy extension unmarshaling validates the contents of message-valued +// extension fields at unmarshal time, but defers creating the message +// structure until the extension is first accessed. +const LazyUnmarshalExtensions = ProtoLegacy diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go new file mode 100644 index 0000000..bda8e8c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go @@ -0,0 +1,10 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !protolegacy +// +build !protolegacy + +package flags + +const protoLegacy = false diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go new file mode 100644 index 0000000..6d8d9bd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go @@ -0,0 +1,10 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build protolegacy +// +build protolegacy + +package flags + +const protoLegacy = true diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go new file mode 100644 index 0000000..e6f7d47 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_any_proto = "google/protobuf/any.proto" + +// Names for google.protobuf.Any. +const ( + Any_message_name protoreflect.Name = "Any" + Any_message_fullname protoreflect.FullName = "google.protobuf.Any" +) + +// Field names for google.protobuf.Any. +const ( + Any_TypeUrl_field_name protoreflect.Name = "type_url" + Any_Value_field_name protoreflect.Name = "value" + + Any_TypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Any.type_url" + Any_Value_field_fullname protoreflect.FullName = "google.protobuf.Any.value" +) + +// Field numbers for google.protobuf.Any. +const ( + Any_TypeUrl_field_number protoreflect.FieldNumber = 1 + Any_Value_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go new file mode 100644 index 0000000..df8f918 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go @@ -0,0 +1,106 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_api_proto = "google/protobuf/api.proto" + +// Names for google.protobuf.Api. +const ( + Api_message_name protoreflect.Name = "Api" + Api_message_fullname protoreflect.FullName = "google.protobuf.Api" +) + +// Field names for google.protobuf.Api. +const ( + Api_Name_field_name protoreflect.Name = "name" + Api_Methods_field_name protoreflect.Name = "methods" + Api_Options_field_name protoreflect.Name = "options" + Api_Version_field_name protoreflect.Name = "version" + Api_SourceContext_field_name protoreflect.Name = "source_context" + Api_Mixins_field_name protoreflect.Name = "mixins" + Api_Syntax_field_name protoreflect.Name = "syntax" + + Api_Name_field_fullname protoreflect.FullName = "google.protobuf.Api.name" + Api_Methods_field_fullname protoreflect.FullName = "google.protobuf.Api.methods" + Api_Options_field_fullname protoreflect.FullName = "google.protobuf.Api.options" + Api_Version_field_fullname protoreflect.FullName = "google.protobuf.Api.version" + Api_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Api.source_context" + Api_Mixins_field_fullname protoreflect.FullName = "google.protobuf.Api.mixins" + Api_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Api.syntax" +) + +// Field numbers for google.protobuf.Api. +const ( + Api_Name_field_number protoreflect.FieldNumber = 1 + Api_Methods_field_number protoreflect.FieldNumber = 2 + Api_Options_field_number protoreflect.FieldNumber = 3 + Api_Version_field_number protoreflect.FieldNumber = 4 + Api_SourceContext_field_number protoreflect.FieldNumber = 5 + Api_Mixins_field_number protoreflect.FieldNumber = 6 + Api_Syntax_field_number protoreflect.FieldNumber = 7 +) + +// Names for google.protobuf.Method. +const ( + Method_message_name protoreflect.Name = "Method" + Method_message_fullname protoreflect.FullName = "google.protobuf.Method" +) + +// Field names for google.protobuf.Method. +const ( + Method_Name_field_name protoreflect.Name = "name" + Method_RequestTypeUrl_field_name protoreflect.Name = "request_type_url" + Method_RequestStreaming_field_name protoreflect.Name = "request_streaming" + Method_ResponseTypeUrl_field_name protoreflect.Name = "response_type_url" + Method_ResponseStreaming_field_name protoreflect.Name = "response_streaming" + Method_Options_field_name protoreflect.Name = "options" + Method_Syntax_field_name protoreflect.Name = "syntax" + + Method_Name_field_fullname protoreflect.FullName = "google.protobuf.Method.name" + Method_RequestTypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Method.request_type_url" + Method_RequestStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.request_streaming" + Method_ResponseTypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Method.response_type_url" + Method_ResponseStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.response_streaming" + Method_Options_field_fullname protoreflect.FullName = "google.protobuf.Method.options" + Method_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Method.syntax" +) + +// Field numbers for google.protobuf.Method. +const ( + Method_Name_field_number protoreflect.FieldNumber = 1 + Method_RequestTypeUrl_field_number protoreflect.FieldNumber = 2 + Method_RequestStreaming_field_number protoreflect.FieldNumber = 3 + Method_ResponseTypeUrl_field_number protoreflect.FieldNumber = 4 + Method_ResponseStreaming_field_number protoreflect.FieldNumber = 5 + Method_Options_field_number protoreflect.FieldNumber = 6 + Method_Syntax_field_number protoreflect.FieldNumber = 7 +) + +// Names for google.protobuf.Mixin. +const ( + Mixin_message_name protoreflect.Name = "Mixin" + Mixin_message_fullname protoreflect.FullName = "google.protobuf.Mixin" +) + +// Field names for google.protobuf.Mixin. +const ( + Mixin_Name_field_name protoreflect.Name = "name" + Mixin_Root_field_name protoreflect.Name = "root" + + Mixin_Name_field_fullname protoreflect.FullName = "google.protobuf.Mixin.name" + Mixin_Root_field_fullname protoreflect.FullName = "google.protobuf.Mixin.root" +) + +// Field numbers for google.protobuf.Mixin. +const ( + Mixin_Name_field_number protoreflect.FieldNumber = 1 + Mixin_Root_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go new file mode 100644 index 0000000..f30ab6b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go @@ -0,0 +1,1270 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_descriptor_proto = "google/protobuf/descriptor.proto" + +// Full and short names for google.protobuf.Edition. +const ( + Edition_enum_fullname = "google.protobuf.Edition" + Edition_enum_name = "Edition" +) + +// Enum values for google.protobuf.Edition. +const ( + Edition_EDITION_UNKNOWN_enum_value = 0 + Edition_EDITION_LEGACY_enum_value = 900 + Edition_EDITION_PROTO2_enum_value = 998 + Edition_EDITION_PROTO3_enum_value = 999 + Edition_EDITION_2023_enum_value = 1000 + Edition_EDITION_2024_enum_value = 1001 + Edition_EDITION_1_TEST_ONLY_enum_value = 1 + Edition_EDITION_2_TEST_ONLY_enum_value = 2 + Edition_EDITION_99997_TEST_ONLY_enum_value = 99997 + Edition_EDITION_99998_TEST_ONLY_enum_value = 99998 + Edition_EDITION_99999_TEST_ONLY_enum_value = 99999 + Edition_EDITION_MAX_enum_value = 2147483647 +) + +// Names for google.protobuf.FileDescriptorSet. +const ( + FileDescriptorSet_message_name protoreflect.Name = "FileDescriptorSet" + FileDescriptorSet_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet" +) + +// Field names for google.protobuf.FileDescriptorSet. +const ( + FileDescriptorSet_File_field_name protoreflect.Name = "file" + + FileDescriptorSet_File_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet.file" +) + +// Field numbers for google.protobuf.FileDescriptorSet. +const ( + FileDescriptorSet_File_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.FileDescriptorProto. +const ( + FileDescriptorProto_message_name protoreflect.Name = "FileDescriptorProto" + FileDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto" +) + +// Field names for google.protobuf.FileDescriptorProto. +const ( + FileDescriptorProto_Name_field_name protoreflect.Name = "name" + FileDescriptorProto_Package_field_name protoreflect.Name = "package" + FileDescriptorProto_Dependency_field_name protoreflect.Name = "dependency" + FileDescriptorProto_PublicDependency_field_name protoreflect.Name = "public_dependency" + FileDescriptorProto_WeakDependency_field_name protoreflect.Name = "weak_dependency" + FileDescriptorProto_MessageType_field_name protoreflect.Name = "message_type" + FileDescriptorProto_EnumType_field_name protoreflect.Name = "enum_type" + FileDescriptorProto_Service_field_name protoreflect.Name = "service" + FileDescriptorProto_Extension_field_name protoreflect.Name = "extension" + FileDescriptorProto_Options_field_name protoreflect.Name = "options" + FileDescriptorProto_SourceCodeInfo_field_name protoreflect.Name = "source_code_info" + FileDescriptorProto_Syntax_field_name protoreflect.Name = "syntax" + FileDescriptorProto_Edition_field_name protoreflect.Name = "edition" + + FileDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.name" + FileDescriptorProto_Package_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.package" + FileDescriptorProto_Dependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.dependency" + FileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.public_dependency" + FileDescriptorProto_WeakDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.weak_dependency" + FileDescriptorProto_MessageType_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.message_type" + FileDescriptorProto_EnumType_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.enum_type" + FileDescriptorProto_Service_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.service" + FileDescriptorProto_Extension_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.extension" + FileDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.options" + FileDescriptorProto_SourceCodeInfo_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.source_code_info" + FileDescriptorProto_Syntax_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.syntax" + FileDescriptorProto_Edition_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.edition" +) + +// Field numbers for google.protobuf.FileDescriptorProto. +const ( + FileDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + FileDescriptorProto_Package_field_number protoreflect.FieldNumber = 2 + FileDescriptorProto_Dependency_field_number protoreflect.FieldNumber = 3 + FileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10 + FileDescriptorProto_WeakDependency_field_number protoreflect.FieldNumber = 11 + FileDescriptorProto_MessageType_field_number protoreflect.FieldNumber = 4 + FileDescriptorProto_EnumType_field_number protoreflect.FieldNumber = 5 + FileDescriptorProto_Service_field_number protoreflect.FieldNumber = 6 + FileDescriptorProto_Extension_field_number protoreflect.FieldNumber = 7 + FileDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 + FileDescriptorProto_SourceCodeInfo_field_number protoreflect.FieldNumber = 9 + FileDescriptorProto_Syntax_field_number protoreflect.FieldNumber = 12 + FileDescriptorProto_Edition_field_number protoreflect.FieldNumber = 14 +) + +// Names for google.protobuf.DescriptorProto. +const ( + DescriptorProto_message_name protoreflect.Name = "DescriptorProto" + DescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto" +) + +// Field names for google.protobuf.DescriptorProto. +const ( + DescriptorProto_Name_field_name protoreflect.Name = "name" + DescriptorProto_Field_field_name protoreflect.Name = "field" + DescriptorProto_Extension_field_name protoreflect.Name = "extension" + DescriptorProto_NestedType_field_name protoreflect.Name = "nested_type" + DescriptorProto_EnumType_field_name protoreflect.Name = "enum_type" + DescriptorProto_ExtensionRange_field_name protoreflect.Name = "extension_range" + DescriptorProto_OneofDecl_field_name protoreflect.Name = "oneof_decl" + DescriptorProto_Options_field_name protoreflect.Name = "options" + DescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range" + DescriptorProto_ReservedName_field_name protoreflect.Name = "reserved_name" + + DescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.name" + DescriptorProto_Field_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.field" + DescriptorProto_Extension_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.extension" + DescriptorProto_NestedType_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.nested_type" + DescriptorProto_EnumType_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.enum_type" + DescriptorProto_ExtensionRange_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.extension_range" + DescriptorProto_OneofDecl_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.oneof_decl" + DescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.options" + DescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_range" + DescriptorProto_ReservedName_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_name" +) + +// Field numbers for google.protobuf.DescriptorProto. +const ( + DescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + DescriptorProto_Field_field_number protoreflect.FieldNumber = 2 + DescriptorProto_Extension_field_number protoreflect.FieldNumber = 6 + DescriptorProto_NestedType_field_number protoreflect.FieldNumber = 3 + DescriptorProto_EnumType_field_number protoreflect.FieldNumber = 4 + DescriptorProto_ExtensionRange_field_number protoreflect.FieldNumber = 5 + DescriptorProto_OneofDecl_field_number protoreflect.FieldNumber = 8 + DescriptorProto_Options_field_number protoreflect.FieldNumber = 7 + DescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 9 + DescriptorProto_ReservedName_field_number protoreflect.FieldNumber = 10 +) + +// Names for google.protobuf.DescriptorProto.ExtensionRange. +const ( + DescriptorProto_ExtensionRange_message_name protoreflect.Name = "ExtensionRange" + DescriptorProto_ExtensionRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange" +) + +// Field names for google.protobuf.DescriptorProto.ExtensionRange. +const ( + DescriptorProto_ExtensionRange_Start_field_name protoreflect.Name = "start" + DescriptorProto_ExtensionRange_End_field_name protoreflect.Name = "end" + DescriptorProto_ExtensionRange_Options_field_name protoreflect.Name = "options" + + DescriptorProto_ExtensionRange_Start_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.start" + DescriptorProto_ExtensionRange_End_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.end" + DescriptorProto_ExtensionRange_Options_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.options" +) + +// Field numbers for google.protobuf.DescriptorProto.ExtensionRange. +const ( + DescriptorProto_ExtensionRange_Start_field_number protoreflect.FieldNumber = 1 + DescriptorProto_ExtensionRange_End_field_number protoreflect.FieldNumber = 2 + DescriptorProto_ExtensionRange_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.DescriptorProto.ReservedRange. +const ( + DescriptorProto_ReservedRange_message_name protoreflect.Name = "ReservedRange" + DescriptorProto_ReservedRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange" +) + +// Field names for google.protobuf.DescriptorProto.ReservedRange. +const ( + DescriptorProto_ReservedRange_Start_field_name protoreflect.Name = "start" + DescriptorProto_ReservedRange_End_field_name protoreflect.Name = "end" + + DescriptorProto_ReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.start" + DescriptorProto_ReservedRange_End_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.end" +) + +// Field numbers for google.protobuf.DescriptorProto.ReservedRange. +const ( + DescriptorProto_ReservedRange_Start_field_number protoreflect.FieldNumber = 1 + DescriptorProto_ReservedRange_End_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.ExtensionRangeOptions. +const ( + ExtensionRangeOptions_message_name protoreflect.Name = "ExtensionRangeOptions" + ExtensionRangeOptions_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions" +) + +// Field names for google.protobuf.ExtensionRangeOptions. +const ( + ExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + ExtensionRangeOptions_Declaration_field_name protoreflect.Name = "declaration" + ExtensionRangeOptions_Features_field_name protoreflect.Name = "features" + ExtensionRangeOptions_Verification_field_name protoreflect.Name = "verification" + + ExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.uninterpreted_option" + ExtensionRangeOptions_Declaration_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.declaration" + ExtensionRangeOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.features" + ExtensionRangeOptions_Verification_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.verification" +) + +// Field numbers for google.protobuf.ExtensionRangeOptions. +const ( + ExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 + ExtensionRangeOptions_Declaration_field_number protoreflect.FieldNumber = 2 + ExtensionRangeOptions_Features_field_number protoreflect.FieldNumber = 50 + ExtensionRangeOptions_Verification_field_number protoreflect.FieldNumber = 3 +) + +// Full and short names for google.protobuf.ExtensionRangeOptions.VerificationState. +const ( + ExtensionRangeOptions_VerificationState_enum_fullname = "google.protobuf.ExtensionRangeOptions.VerificationState" + ExtensionRangeOptions_VerificationState_enum_name = "VerificationState" +) + +// Enum values for google.protobuf.ExtensionRangeOptions.VerificationState. +const ( + ExtensionRangeOptions_DECLARATION_enum_value = 0 + ExtensionRangeOptions_UNVERIFIED_enum_value = 1 +) + +// Names for google.protobuf.ExtensionRangeOptions.Declaration. +const ( + ExtensionRangeOptions_Declaration_message_name protoreflect.Name = "Declaration" + ExtensionRangeOptions_Declaration_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration" +) + +// Field names for google.protobuf.ExtensionRangeOptions.Declaration. +const ( + ExtensionRangeOptions_Declaration_Number_field_name protoreflect.Name = "number" + ExtensionRangeOptions_Declaration_FullName_field_name protoreflect.Name = "full_name" + ExtensionRangeOptions_Declaration_Type_field_name protoreflect.Name = "type" + ExtensionRangeOptions_Declaration_Reserved_field_name protoreflect.Name = "reserved" + ExtensionRangeOptions_Declaration_Repeated_field_name protoreflect.Name = "repeated" + + ExtensionRangeOptions_Declaration_Number_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.number" + ExtensionRangeOptions_Declaration_FullName_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.full_name" + ExtensionRangeOptions_Declaration_Type_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.type" + ExtensionRangeOptions_Declaration_Reserved_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.reserved" + ExtensionRangeOptions_Declaration_Repeated_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.repeated" +) + +// Field numbers for google.protobuf.ExtensionRangeOptions.Declaration. +const ( + ExtensionRangeOptions_Declaration_Number_field_number protoreflect.FieldNumber = 1 + ExtensionRangeOptions_Declaration_FullName_field_number protoreflect.FieldNumber = 2 + ExtensionRangeOptions_Declaration_Type_field_number protoreflect.FieldNumber = 3 + ExtensionRangeOptions_Declaration_Reserved_field_number protoreflect.FieldNumber = 5 + ExtensionRangeOptions_Declaration_Repeated_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.FieldDescriptorProto. +const ( + FieldDescriptorProto_message_name protoreflect.Name = "FieldDescriptorProto" + FieldDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto" +) + +// Field names for google.protobuf.FieldDescriptorProto. +const ( + FieldDescriptorProto_Name_field_name protoreflect.Name = "name" + FieldDescriptorProto_Number_field_name protoreflect.Name = "number" + FieldDescriptorProto_Label_field_name protoreflect.Name = "label" + FieldDescriptorProto_Type_field_name protoreflect.Name = "type" + FieldDescriptorProto_TypeName_field_name protoreflect.Name = "type_name" + FieldDescriptorProto_Extendee_field_name protoreflect.Name = "extendee" + FieldDescriptorProto_DefaultValue_field_name protoreflect.Name = "default_value" + FieldDescriptorProto_OneofIndex_field_name protoreflect.Name = "oneof_index" + FieldDescriptorProto_JsonName_field_name protoreflect.Name = "json_name" + FieldDescriptorProto_Options_field_name protoreflect.Name = "options" + FieldDescriptorProto_Proto3Optional_field_name protoreflect.Name = "proto3_optional" + + FieldDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.name" + FieldDescriptorProto_Number_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.number" + FieldDescriptorProto_Label_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.label" + FieldDescriptorProto_Type_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type" + FieldDescriptorProto_TypeName_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type_name" + FieldDescriptorProto_Extendee_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.extendee" + FieldDescriptorProto_DefaultValue_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.default_value" + FieldDescriptorProto_OneofIndex_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.oneof_index" + FieldDescriptorProto_JsonName_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.json_name" + FieldDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.options" + FieldDescriptorProto_Proto3Optional_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.proto3_optional" +) + +// Field numbers for google.protobuf.FieldDescriptorProto. +const ( + FieldDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + FieldDescriptorProto_Number_field_number protoreflect.FieldNumber = 3 + FieldDescriptorProto_Label_field_number protoreflect.FieldNumber = 4 + FieldDescriptorProto_Type_field_number protoreflect.FieldNumber = 5 + FieldDescriptorProto_TypeName_field_number protoreflect.FieldNumber = 6 + FieldDescriptorProto_Extendee_field_number protoreflect.FieldNumber = 2 + FieldDescriptorProto_DefaultValue_field_number protoreflect.FieldNumber = 7 + FieldDescriptorProto_OneofIndex_field_number protoreflect.FieldNumber = 9 + FieldDescriptorProto_JsonName_field_number protoreflect.FieldNumber = 10 + FieldDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 + FieldDescriptorProto_Proto3Optional_field_number protoreflect.FieldNumber = 17 +) + +// Full and short names for google.protobuf.FieldDescriptorProto.Type. +const ( + FieldDescriptorProto_Type_enum_fullname = "google.protobuf.FieldDescriptorProto.Type" + FieldDescriptorProto_Type_enum_name = "Type" +) + +// Enum values for google.protobuf.FieldDescriptorProto.Type. +const ( + FieldDescriptorProto_TYPE_DOUBLE_enum_value = 1 + FieldDescriptorProto_TYPE_FLOAT_enum_value = 2 + FieldDescriptorProto_TYPE_INT64_enum_value = 3 + FieldDescriptorProto_TYPE_UINT64_enum_value = 4 + FieldDescriptorProto_TYPE_INT32_enum_value = 5 + FieldDescriptorProto_TYPE_FIXED64_enum_value = 6 + FieldDescriptorProto_TYPE_FIXED32_enum_value = 7 + FieldDescriptorProto_TYPE_BOOL_enum_value = 8 + FieldDescriptorProto_TYPE_STRING_enum_value = 9 + FieldDescriptorProto_TYPE_GROUP_enum_value = 10 + FieldDescriptorProto_TYPE_MESSAGE_enum_value = 11 + FieldDescriptorProto_TYPE_BYTES_enum_value = 12 + FieldDescriptorProto_TYPE_UINT32_enum_value = 13 + FieldDescriptorProto_TYPE_ENUM_enum_value = 14 + FieldDescriptorProto_TYPE_SFIXED32_enum_value = 15 + FieldDescriptorProto_TYPE_SFIXED64_enum_value = 16 + FieldDescriptorProto_TYPE_SINT32_enum_value = 17 + FieldDescriptorProto_TYPE_SINT64_enum_value = 18 +) + +// Full and short names for google.protobuf.FieldDescriptorProto.Label. +const ( + FieldDescriptorProto_Label_enum_fullname = "google.protobuf.FieldDescriptorProto.Label" + FieldDescriptorProto_Label_enum_name = "Label" +) + +// Enum values for google.protobuf.FieldDescriptorProto.Label. +const ( + FieldDescriptorProto_LABEL_OPTIONAL_enum_value = 1 + FieldDescriptorProto_LABEL_REPEATED_enum_value = 3 + FieldDescriptorProto_LABEL_REQUIRED_enum_value = 2 +) + +// Names for google.protobuf.OneofDescriptorProto. +const ( + OneofDescriptorProto_message_name protoreflect.Name = "OneofDescriptorProto" + OneofDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto" +) + +// Field names for google.protobuf.OneofDescriptorProto. +const ( + OneofDescriptorProto_Name_field_name protoreflect.Name = "name" + OneofDescriptorProto_Options_field_name protoreflect.Name = "options" + + OneofDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto.name" + OneofDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto.options" +) + +// Field numbers for google.protobuf.OneofDescriptorProto. +const ( + OneofDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + OneofDescriptorProto_Options_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.EnumDescriptorProto. +const ( + EnumDescriptorProto_message_name protoreflect.Name = "EnumDescriptorProto" + EnumDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto" +) + +// Field names for google.protobuf.EnumDescriptorProto. +const ( + EnumDescriptorProto_Name_field_name protoreflect.Name = "name" + EnumDescriptorProto_Value_field_name protoreflect.Name = "value" + EnumDescriptorProto_Options_field_name protoreflect.Name = "options" + EnumDescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range" + EnumDescriptorProto_ReservedName_field_name protoreflect.Name = "reserved_name" + + EnumDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.name" + EnumDescriptorProto_Value_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.value" + EnumDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.options" + EnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_range" + EnumDescriptorProto_ReservedName_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_name" +) + +// Field numbers for google.protobuf.EnumDescriptorProto. +const ( + EnumDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + EnumDescriptorProto_Value_field_number protoreflect.FieldNumber = 2 + EnumDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 + EnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4 + EnumDescriptorProto_ReservedName_field_number protoreflect.FieldNumber = 5 +) + +// Names for google.protobuf.EnumDescriptorProto.EnumReservedRange. +const ( + EnumDescriptorProto_EnumReservedRange_message_name protoreflect.Name = "EnumReservedRange" + EnumDescriptorProto_EnumReservedRange_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange" +) + +// Field names for google.protobuf.EnumDescriptorProto.EnumReservedRange. +const ( + EnumDescriptorProto_EnumReservedRange_Start_field_name protoreflect.Name = "start" + EnumDescriptorProto_EnumReservedRange_End_field_name protoreflect.Name = "end" + + EnumDescriptorProto_EnumReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.start" + EnumDescriptorProto_EnumReservedRange_End_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.end" +) + +// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange. +const ( + EnumDescriptorProto_EnumReservedRange_Start_field_number protoreflect.FieldNumber = 1 + EnumDescriptorProto_EnumReservedRange_End_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.EnumValueDescriptorProto. +const ( + EnumValueDescriptorProto_message_name protoreflect.Name = "EnumValueDescriptorProto" + EnumValueDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto" +) + +// Field names for google.protobuf.EnumValueDescriptorProto. +const ( + EnumValueDescriptorProto_Name_field_name protoreflect.Name = "name" + EnumValueDescriptorProto_Number_field_name protoreflect.Name = "number" + EnumValueDescriptorProto_Options_field_name protoreflect.Name = "options" + + EnumValueDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.name" + EnumValueDescriptorProto_Number_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.number" + EnumValueDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.options" +) + +// Field numbers for google.protobuf.EnumValueDescriptorProto. +const ( + EnumValueDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + EnumValueDescriptorProto_Number_field_number protoreflect.FieldNumber = 2 + EnumValueDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.ServiceDescriptorProto. +const ( + ServiceDescriptorProto_message_name protoreflect.Name = "ServiceDescriptorProto" + ServiceDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto" +) + +// Field names for google.protobuf.ServiceDescriptorProto. +const ( + ServiceDescriptorProto_Name_field_name protoreflect.Name = "name" + ServiceDescriptorProto_Method_field_name protoreflect.Name = "method" + ServiceDescriptorProto_Options_field_name protoreflect.Name = "options" + + ServiceDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.name" + ServiceDescriptorProto_Method_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.method" + ServiceDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.options" +) + +// Field numbers for google.protobuf.ServiceDescriptorProto. +const ( + ServiceDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + ServiceDescriptorProto_Method_field_number protoreflect.FieldNumber = 2 + ServiceDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.MethodDescriptorProto. +const ( + MethodDescriptorProto_message_name protoreflect.Name = "MethodDescriptorProto" + MethodDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto" +) + +// Field names for google.protobuf.MethodDescriptorProto. +const ( + MethodDescriptorProto_Name_field_name protoreflect.Name = "name" + MethodDescriptorProto_InputType_field_name protoreflect.Name = "input_type" + MethodDescriptorProto_OutputType_field_name protoreflect.Name = "output_type" + MethodDescriptorProto_Options_field_name protoreflect.Name = "options" + MethodDescriptorProto_ClientStreaming_field_name protoreflect.Name = "client_streaming" + MethodDescriptorProto_ServerStreaming_field_name protoreflect.Name = "server_streaming" + + MethodDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.name" + MethodDescriptorProto_InputType_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.input_type" + MethodDescriptorProto_OutputType_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.output_type" + MethodDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.options" + MethodDescriptorProto_ClientStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.client_streaming" + MethodDescriptorProto_ServerStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.server_streaming" +) + +// Field numbers for google.protobuf.MethodDescriptorProto. +const ( + MethodDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + MethodDescriptorProto_InputType_field_number protoreflect.FieldNumber = 2 + MethodDescriptorProto_OutputType_field_number protoreflect.FieldNumber = 3 + MethodDescriptorProto_Options_field_number protoreflect.FieldNumber = 4 + MethodDescriptorProto_ClientStreaming_field_number protoreflect.FieldNumber = 5 + MethodDescriptorProto_ServerStreaming_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.FileOptions. +const ( + FileOptions_message_name protoreflect.Name = "FileOptions" + FileOptions_message_fullname protoreflect.FullName = "google.protobuf.FileOptions" +) + +// Field names for google.protobuf.FileOptions. +const ( + FileOptions_JavaPackage_field_name protoreflect.Name = "java_package" + FileOptions_JavaOuterClassname_field_name protoreflect.Name = "java_outer_classname" + FileOptions_JavaMultipleFiles_field_name protoreflect.Name = "java_multiple_files" + FileOptions_JavaGenerateEqualsAndHash_field_name protoreflect.Name = "java_generate_equals_and_hash" + FileOptions_JavaStringCheckUtf8_field_name protoreflect.Name = "java_string_check_utf8" + FileOptions_OptimizeFor_field_name protoreflect.Name = "optimize_for" + FileOptions_GoPackage_field_name protoreflect.Name = "go_package" + FileOptions_CcGenericServices_field_name protoreflect.Name = "cc_generic_services" + FileOptions_JavaGenericServices_field_name protoreflect.Name = "java_generic_services" + FileOptions_PyGenericServices_field_name protoreflect.Name = "py_generic_services" + FileOptions_Deprecated_field_name protoreflect.Name = "deprecated" + FileOptions_CcEnableArenas_field_name protoreflect.Name = "cc_enable_arenas" + FileOptions_ObjcClassPrefix_field_name protoreflect.Name = "objc_class_prefix" + FileOptions_CsharpNamespace_field_name protoreflect.Name = "csharp_namespace" + FileOptions_SwiftPrefix_field_name protoreflect.Name = "swift_prefix" + FileOptions_PhpClassPrefix_field_name protoreflect.Name = "php_class_prefix" + FileOptions_PhpNamespace_field_name protoreflect.Name = "php_namespace" + FileOptions_PhpMetadataNamespace_field_name protoreflect.Name = "php_metadata_namespace" + FileOptions_RubyPackage_field_name protoreflect.Name = "ruby_package" + FileOptions_Features_field_name protoreflect.Name = "features" + FileOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + FileOptions_JavaPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_package" + FileOptions_JavaOuterClassname_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_outer_classname" + FileOptions_JavaMultipleFiles_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_multiple_files" + FileOptions_JavaGenerateEqualsAndHash_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generate_equals_and_hash" + FileOptions_JavaStringCheckUtf8_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_string_check_utf8" + FileOptions_OptimizeFor_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.optimize_for" + FileOptions_GoPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.go_package" + FileOptions_CcGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_generic_services" + FileOptions_JavaGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generic_services" + FileOptions_PyGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.py_generic_services" + FileOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.deprecated" + FileOptions_CcEnableArenas_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_enable_arenas" + FileOptions_ObjcClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.objc_class_prefix" + FileOptions_CsharpNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.csharp_namespace" + FileOptions_SwiftPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.swift_prefix" + FileOptions_PhpClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_class_prefix" + FileOptions_PhpNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_namespace" + FileOptions_PhpMetadataNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_metadata_namespace" + FileOptions_RubyPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.ruby_package" + FileOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.features" + FileOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.FileOptions. +const ( + FileOptions_JavaPackage_field_number protoreflect.FieldNumber = 1 + FileOptions_JavaOuterClassname_field_number protoreflect.FieldNumber = 8 + FileOptions_JavaMultipleFiles_field_number protoreflect.FieldNumber = 10 + FileOptions_JavaGenerateEqualsAndHash_field_number protoreflect.FieldNumber = 20 + FileOptions_JavaStringCheckUtf8_field_number protoreflect.FieldNumber = 27 + FileOptions_OptimizeFor_field_number protoreflect.FieldNumber = 9 + FileOptions_GoPackage_field_number protoreflect.FieldNumber = 11 + FileOptions_CcGenericServices_field_number protoreflect.FieldNumber = 16 + FileOptions_JavaGenericServices_field_number protoreflect.FieldNumber = 17 + FileOptions_PyGenericServices_field_number protoreflect.FieldNumber = 18 + FileOptions_Deprecated_field_number protoreflect.FieldNumber = 23 + FileOptions_CcEnableArenas_field_number protoreflect.FieldNumber = 31 + FileOptions_ObjcClassPrefix_field_number protoreflect.FieldNumber = 36 + FileOptions_CsharpNamespace_field_number protoreflect.FieldNumber = 37 + FileOptions_SwiftPrefix_field_number protoreflect.FieldNumber = 39 + FileOptions_PhpClassPrefix_field_number protoreflect.FieldNumber = 40 + FileOptions_PhpNamespace_field_number protoreflect.FieldNumber = 41 + FileOptions_PhpMetadataNamespace_field_number protoreflect.FieldNumber = 44 + FileOptions_RubyPackage_field_number protoreflect.FieldNumber = 45 + FileOptions_Features_field_number protoreflect.FieldNumber = 50 + FileOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Full and short names for google.protobuf.FileOptions.OptimizeMode. +const ( + FileOptions_OptimizeMode_enum_fullname = "google.protobuf.FileOptions.OptimizeMode" + FileOptions_OptimizeMode_enum_name = "OptimizeMode" +) + +// Enum values for google.protobuf.FileOptions.OptimizeMode. +const ( + FileOptions_SPEED_enum_value = 1 + FileOptions_CODE_SIZE_enum_value = 2 + FileOptions_LITE_RUNTIME_enum_value = 3 +) + +// Names for google.protobuf.MessageOptions. +const ( + MessageOptions_message_name protoreflect.Name = "MessageOptions" + MessageOptions_message_fullname protoreflect.FullName = "google.protobuf.MessageOptions" +) + +// Field names for google.protobuf.MessageOptions. +const ( + MessageOptions_MessageSetWireFormat_field_name protoreflect.Name = "message_set_wire_format" + MessageOptions_NoStandardDescriptorAccessor_field_name protoreflect.Name = "no_standard_descriptor_accessor" + MessageOptions_Deprecated_field_name protoreflect.Name = "deprecated" + MessageOptions_MapEntry_field_name protoreflect.Name = "map_entry" + MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" + MessageOptions_Features_field_name protoreflect.Name = "features" + MessageOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + MessageOptions_MessageSetWireFormat_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.message_set_wire_format" + MessageOptions_NoStandardDescriptorAccessor_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.no_standard_descriptor_accessor" + MessageOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated" + MessageOptions_MapEntry_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.map_entry" + MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts" + MessageOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.features" + MessageOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.MessageOptions. +const ( + MessageOptions_MessageSetWireFormat_field_number protoreflect.FieldNumber = 1 + MessageOptions_NoStandardDescriptorAccessor_field_number protoreflect.FieldNumber = 2 + MessageOptions_Deprecated_field_number protoreflect.FieldNumber = 3 + MessageOptions_MapEntry_field_number protoreflect.FieldNumber = 7 + MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 11 + MessageOptions_Features_field_number protoreflect.FieldNumber = 12 + MessageOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.FieldOptions. +const ( + FieldOptions_message_name protoreflect.Name = "FieldOptions" + FieldOptions_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions" +) + +// Field names for google.protobuf.FieldOptions. +const ( + FieldOptions_Ctype_field_name protoreflect.Name = "ctype" + FieldOptions_Packed_field_name protoreflect.Name = "packed" + FieldOptions_Jstype_field_name protoreflect.Name = "jstype" + FieldOptions_Lazy_field_name protoreflect.Name = "lazy" + FieldOptions_UnverifiedLazy_field_name protoreflect.Name = "unverified_lazy" + FieldOptions_Deprecated_field_name protoreflect.Name = "deprecated" + FieldOptions_Weak_field_name protoreflect.Name = "weak" + FieldOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" + FieldOptions_Retention_field_name protoreflect.Name = "retention" + FieldOptions_Targets_field_name protoreflect.Name = "targets" + FieldOptions_EditionDefaults_field_name protoreflect.Name = "edition_defaults" + FieldOptions_Features_field_name protoreflect.Name = "features" + FieldOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" + FieldOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + FieldOptions_Ctype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.ctype" + FieldOptions_Packed_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.packed" + FieldOptions_Jstype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.jstype" + FieldOptions_Lazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.lazy" + FieldOptions_UnverifiedLazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.unverified_lazy" + FieldOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.deprecated" + FieldOptions_Weak_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.weak" + FieldOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.debug_redact" + FieldOptions_Retention_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.retention" + FieldOptions_Targets_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.targets" + FieldOptions_EditionDefaults_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.edition_defaults" + FieldOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.features" + FieldOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.feature_support" + FieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.FieldOptions. +const ( + FieldOptions_Ctype_field_number protoreflect.FieldNumber = 1 + FieldOptions_Packed_field_number protoreflect.FieldNumber = 2 + FieldOptions_Jstype_field_number protoreflect.FieldNumber = 6 + FieldOptions_Lazy_field_number protoreflect.FieldNumber = 5 + FieldOptions_UnverifiedLazy_field_number protoreflect.FieldNumber = 15 + FieldOptions_Deprecated_field_number protoreflect.FieldNumber = 3 + FieldOptions_Weak_field_number protoreflect.FieldNumber = 10 + FieldOptions_DebugRedact_field_number protoreflect.FieldNumber = 16 + FieldOptions_Retention_field_number protoreflect.FieldNumber = 17 + FieldOptions_Targets_field_number protoreflect.FieldNumber = 19 + FieldOptions_EditionDefaults_field_number protoreflect.FieldNumber = 20 + FieldOptions_Features_field_number protoreflect.FieldNumber = 21 + FieldOptions_FeatureSupport_field_number protoreflect.FieldNumber = 22 + FieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Full and short names for google.protobuf.FieldOptions.CType. +const ( + FieldOptions_CType_enum_fullname = "google.protobuf.FieldOptions.CType" + FieldOptions_CType_enum_name = "CType" +) + +// Enum values for google.protobuf.FieldOptions.CType. +const ( + FieldOptions_STRING_enum_value = 0 + FieldOptions_CORD_enum_value = 1 + FieldOptions_STRING_PIECE_enum_value = 2 +) + +// Full and short names for google.protobuf.FieldOptions.JSType. +const ( + FieldOptions_JSType_enum_fullname = "google.protobuf.FieldOptions.JSType" + FieldOptions_JSType_enum_name = "JSType" +) + +// Enum values for google.protobuf.FieldOptions.JSType. +const ( + FieldOptions_JS_NORMAL_enum_value = 0 + FieldOptions_JS_STRING_enum_value = 1 + FieldOptions_JS_NUMBER_enum_value = 2 +) + +// Full and short names for google.protobuf.FieldOptions.OptionRetention. +const ( + FieldOptions_OptionRetention_enum_fullname = "google.protobuf.FieldOptions.OptionRetention" + FieldOptions_OptionRetention_enum_name = "OptionRetention" +) + +// Enum values for google.protobuf.FieldOptions.OptionRetention. +const ( + FieldOptions_RETENTION_UNKNOWN_enum_value = 0 + FieldOptions_RETENTION_RUNTIME_enum_value = 1 + FieldOptions_RETENTION_SOURCE_enum_value = 2 +) + +// Full and short names for google.protobuf.FieldOptions.OptionTargetType. +const ( + FieldOptions_OptionTargetType_enum_fullname = "google.protobuf.FieldOptions.OptionTargetType" + FieldOptions_OptionTargetType_enum_name = "OptionTargetType" +) + +// Enum values for google.protobuf.FieldOptions.OptionTargetType. +const ( + FieldOptions_TARGET_TYPE_UNKNOWN_enum_value = 0 + FieldOptions_TARGET_TYPE_FILE_enum_value = 1 + FieldOptions_TARGET_TYPE_EXTENSION_RANGE_enum_value = 2 + FieldOptions_TARGET_TYPE_MESSAGE_enum_value = 3 + FieldOptions_TARGET_TYPE_FIELD_enum_value = 4 + FieldOptions_TARGET_TYPE_ONEOF_enum_value = 5 + FieldOptions_TARGET_TYPE_ENUM_enum_value = 6 + FieldOptions_TARGET_TYPE_ENUM_ENTRY_enum_value = 7 + FieldOptions_TARGET_TYPE_SERVICE_enum_value = 8 + FieldOptions_TARGET_TYPE_METHOD_enum_value = 9 +) + +// Names for google.protobuf.FieldOptions.EditionDefault. +const ( + FieldOptions_EditionDefault_message_name protoreflect.Name = "EditionDefault" + FieldOptions_EditionDefault_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault" +) + +// Field names for google.protobuf.FieldOptions.EditionDefault. +const ( + FieldOptions_EditionDefault_Edition_field_name protoreflect.Name = "edition" + FieldOptions_EditionDefault_Value_field_name protoreflect.Name = "value" + + FieldOptions_EditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault.edition" + FieldOptions_EditionDefault_Value_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault.value" +) + +// Field numbers for google.protobuf.FieldOptions.EditionDefault. +const ( + FieldOptions_EditionDefault_Edition_field_number protoreflect.FieldNumber = 3 + FieldOptions_EditionDefault_Value_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_message_name protoreflect.Name = "FeatureSupport" + FieldOptions_FeatureSupport_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport" +) + +// Field names for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_EditionIntroduced_field_name protoreflect.Name = "edition_introduced" + FieldOptions_FeatureSupport_EditionDeprecated_field_name protoreflect.Name = "edition_deprecated" + FieldOptions_FeatureSupport_DeprecationWarning_field_name protoreflect.Name = "deprecation_warning" + FieldOptions_FeatureSupport_EditionRemoved_field_name protoreflect.Name = "edition_removed" + + FieldOptions_FeatureSupport_EditionIntroduced_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_introduced" + FieldOptions_FeatureSupport_EditionDeprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_deprecated" + FieldOptions_FeatureSupport_DeprecationWarning_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.deprecation_warning" + FieldOptions_FeatureSupport_EditionRemoved_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_removed" +) + +// Field numbers for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_EditionIntroduced_field_number protoreflect.FieldNumber = 1 + FieldOptions_FeatureSupport_EditionDeprecated_field_number protoreflect.FieldNumber = 2 + FieldOptions_FeatureSupport_DeprecationWarning_field_number protoreflect.FieldNumber = 3 + FieldOptions_FeatureSupport_EditionRemoved_field_number protoreflect.FieldNumber = 4 +) + +// Names for google.protobuf.OneofOptions. +const ( + OneofOptions_message_name protoreflect.Name = "OneofOptions" + OneofOptions_message_fullname protoreflect.FullName = "google.protobuf.OneofOptions" +) + +// Field names for google.protobuf.OneofOptions. +const ( + OneofOptions_Features_field_name protoreflect.Name = "features" + OneofOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + OneofOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.OneofOptions.features" + OneofOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.OneofOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.OneofOptions. +const ( + OneofOptions_Features_field_number protoreflect.FieldNumber = 1 + OneofOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.EnumOptions. +const ( + EnumOptions_message_name protoreflect.Name = "EnumOptions" + EnumOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumOptions" +) + +// Field names for google.protobuf.EnumOptions. +const ( + EnumOptions_AllowAlias_field_name protoreflect.Name = "allow_alias" + EnumOptions_Deprecated_field_name protoreflect.Name = "deprecated" + EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" + EnumOptions_Features_field_name protoreflect.Name = "features" + EnumOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + EnumOptions_AllowAlias_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.allow_alias" + EnumOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated" + EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated_legacy_json_field_conflicts" + EnumOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.features" + EnumOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.EnumOptions. +const ( + EnumOptions_AllowAlias_field_number protoreflect.FieldNumber = 2 + EnumOptions_Deprecated_field_number protoreflect.FieldNumber = 3 + EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 6 + EnumOptions_Features_field_number protoreflect.FieldNumber = 7 + EnumOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.EnumValueOptions. +const ( + EnumValueOptions_message_name protoreflect.Name = "EnumValueOptions" + EnumValueOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions" +) + +// Field names for google.protobuf.EnumValueOptions. +const ( + EnumValueOptions_Deprecated_field_name protoreflect.Name = "deprecated" + EnumValueOptions_Features_field_name protoreflect.Name = "features" + EnumValueOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" + EnumValueOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" + EnumValueOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + EnumValueOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.deprecated" + EnumValueOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.features" + EnumValueOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.debug_redact" + EnumValueOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.feature_support" + EnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.EnumValueOptions. +const ( + EnumValueOptions_Deprecated_field_number protoreflect.FieldNumber = 1 + EnumValueOptions_Features_field_number protoreflect.FieldNumber = 2 + EnumValueOptions_DebugRedact_field_number protoreflect.FieldNumber = 3 + EnumValueOptions_FeatureSupport_field_number protoreflect.FieldNumber = 4 + EnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.ServiceOptions. +const ( + ServiceOptions_message_name protoreflect.Name = "ServiceOptions" + ServiceOptions_message_fullname protoreflect.FullName = "google.protobuf.ServiceOptions" +) + +// Field names for google.protobuf.ServiceOptions. +const ( + ServiceOptions_Features_field_name protoreflect.Name = "features" + ServiceOptions_Deprecated_field_name protoreflect.Name = "deprecated" + ServiceOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + ServiceOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.features" + ServiceOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.deprecated" + ServiceOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.ServiceOptions. +const ( + ServiceOptions_Features_field_number protoreflect.FieldNumber = 34 + ServiceOptions_Deprecated_field_number protoreflect.FieldNumber = 33 + ServiceOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.MethodOptions. +const ( + MethodOptions_message_name protoreflect.Name = "MethodOptions" + MethodOptions_message_fullname protoreflect.FullName = "google.protobuf.MethodOptions" +) + +// Field names for google.protobuf.MethodOptions. +const ( + MethodOptions_Deprecated_field_name protoreflect.Name = "deprecated" + MethodOptions_IdempotencyLevel_field_name protoreflect.Name = "idempotency_level" + MethodOptions_Features_field_name protoreflect.Name = "features" + MethodOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + MethodOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.deprecated" + MethodOptions_IdempotencyLevel_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.idempotency_level" + MethodOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.features" + MethodOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.MethodOptions. +const ( + MethodOptions_Deprecated_field_number protoreflect.FieldNumber = 33 + MethodOptions_IdempotencyLevel_field_number protoreflect.FieldNumber = 34 + MethodOptions_Features_field_number protoreflect.FieldNumber = 35 + MethodOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Full and short names for google.protobuf.MethodOptions.IdempotencyLevel. +const ( + MethodOptions_IdempotencyLevel_enum_fullname = "google.protobuf.MethodOptions.IdempotencyLevel" + MethodOptions_IdempotencyLevel_enum_name = "IdempotencyLevel" +) + +// Enum values for google.protobuf.MethodOptions.IdempotencyLevel. +const ( + MethodOptions_IDEMPOTENCY_UNKNOWN_enum_value = 0 + MethodOptions_NO_SIDE_EFFECTS_enum_value = 1 + MethodOptions_IDEMPOTENT_enum_value = 2 +) + +// Names for google.protobuf.UninterpretedOption. +const ( + UninterpretedOption_message_name protoreflect.Name = "UninterpretedOption" + UninterpretedOption_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption" +) + +// Field names for google.protobuf.UninterpretedOption. +const ( + UninterpretedOption_Name_field_name protoreflect.Name = "name" + UninterpretedOption_IdentifierValue_field_name protoreflect.Name = "identifier_value" + UninterpretedOption_PositiveIntValue_field_name protoreflect.Name = "positive_int_value" + UninterpretedOption_NegativeIntValue_field_name protoreflect.Name = "negative_int_value" + UninterpretedOption_DoubleValue_field_name protoreflect.Name = "double_value" + UninterpretedOption_StringValue_field_name protoreflect.Name = "string_value" + UninterpretedOption_AggregateValue_field_name protoreflect.Name = "aggregate_value" + + UninterpretedOption_Name_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.name" + UninterpretedOption_IdentifierValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.identifier_value" + UninterpretedOption_PositiveIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.positive_int_value" + UninterpretedOption_NegativeIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.negative_int_value" + UninterpretedOption_DoubleValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.double_value" + UninterpretedOption_StringValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.string_value" + UninterpretedOption_AggregateValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.aggregate_value" +) + +// Field numbers for google.protobuf.UninterpretedOption. +const ( + UninterpretedOption_Name_field_number protoreflect.FieldNumber = 2 + UninterpretedOption_IdentifierValue_field_number protoreflect.FieldNumber = 3 + UninterpretedOption_PositiveIntValue_field_number protoreflect.FieldNumber = 4 + UninterpretedOption_NegativeIntValue_field_number protoreflect.FieldNumber = 5 + UninterpretedOption_DoubleValue_field_number protoreflect.FieldNumber = 6 + UninterpretedOption_StringValue_field_number protoreflect.FieldNumber = 7 + UninterpretedOption_AggregateValue_field_number protoreflect.FieldNumber = 8 +) + +// Names for google.protobuf.UninterpretedOption.NamePart. +const ( + UninterpretedOption_NamePart_message_name protoreflect.Name = "NamePart" + UninterpretedOption_NamePart_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart" +) + +// Field names for google.protobuf.UninterpretedOption.NamePart. +const ( + UninterpretedOption_NamePart_NamePart_field_name protoreflect.Name = "name_part" + UninterpretedOption_NamePart_IsExtension_field_name protoreflect.Name = "is_extension" + + UninterpretedOption_NamePart_NamePart_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.name_part" + UninterpretedOption_NamePart_IsExtension_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.is_extension" +) + +// Field numbers for google.protobuf.UninterpretedOption.NamePart. +const ( + UninterpretedOption_NamePart_NamePart_field_number protoreflect.FieldNumber = 1 + UninterpretedOption_NamePart_IsExtension_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.FeatureSet. +const ( + FeatureSet_message_name protoreflect.Name = "FeatureSet" + FeatureSet_message_fullname protoreflect.FullName = "google.protobuf.FeatureSet" +) + +// Field names for google.protobuf.FeatureSet. +const ( + FeatureSet_FieldPresence_field_name protoreflect.Name = "field_presence" + FeatureSet_EnumType_field_name protoreflect.Name = "enum_type" + FeatureSet_RepeatedFieldEncoding_field_name protoreflect.Name = "repeated_field_encoding" + FeatureSet_Utf8Validation_field_name protoreflect.Name = "utf8_validation" + FeatureSet_MessageEncoding_field_name protoreflect.Name = "message_encoding" + FeatureSet_JsonFormat_field_name protoreflect.Name = "json_format" + + FeatureSet_FieldPresence_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.field_presence" + FeatureSet_EnumType_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.enum_type" + FeatureSet_RepeatedFieldEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.repeated_field_encoding" + FeatureSet_Utf8Validation_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.utf8_validation" + FeatureSet_MessageEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.message_encoding" + FeatureSet_JsonFormat_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.json_format" +) + +// Field numbers for google.protobuf.FeatureSet. +const ( + FeatureSet_FieldPresence_field_number protoreflect.FieldNumber = 1 + FeatureSet_EnumType_field_number protoreflect.FieldNumber = 2 + FeatureSet_RepeatedFieldEncoding_field_number protoreflect.FieldNumber = 3 + FeatureSet_Utf8Validation_field_number protoreflect.FieldNumber = 4 + FeatureSet_MessageEncoding_field_number protoreflect.FieldNumber = 5 + FeatureSet_JsonFormat_field_number protoreflect.FieldNumber = 6 +) + +// Full and short names for google.protobuf.FeatureSet.FieldPresence. +const ( + FeatureSet_FieldPresence_enum_fullname = "google.protobuf.FeatureSet.FieldPresence" + FeatureSet_FieldPresence_enum_name = "FieldPresence" +) + +// Enum values for google.protobuf.FeatureSet.FieldPresence. +const ( + FeatureSet_FIELD_PRESENCE_UNKNOWN_enum_value = 0 + FeatureSet_EXPLICIT_enum_value = 1 + FeatureSet_IMPLICIT_enum_value = 2 + FeatureSet_LEGACY_REQUIRED_enum_value = 3 +) + +// Full and short names for google.protobuf.FeatureSet.EnumType. +const ( + FeatureSet_EnumType_enum_fullname = "google.protobuf.FeatureSet.EnumType" + FeatureSet_EnumType_enum_name = "EnumType" +) + +// Enum values for google.protobuf.FeatureSet.EnumType. +const ( + FeatureSet_ENUM_TYPE_UNKNOWN_enum_value = 0 + FeatureSet_OPEN_enum_value = 1 + FeatureSet_CLOSED_enum_value = 2 +) + +// Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding. +const ( + FeatureSet_RepeatedFieldEncoding_enum_fullname = "google.protobuf.FeatureSet.RepeatedFieldEncoding" + FeatureSet_RepeatedFieldEncoding_enum_name = "RepeatedFieldEncoding" +) + +// Enum values for google.protobuf.FeatureSet.RepeatedFieldEncoding. +const ( + FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN_enum_value = 0 + FeatureSet_PACKED_enum_value = 1 + FeatureSet_EXPANDED_enum_value = 2 +) + +// Full and short names for google.protobuf.FeatureSet.Utf8Validation. +const ( + FeatureSet_Utf8Validation_enum_fullname = "google.protobuf.FeatureSet.Utf8Validation" + FeatureSet_Utf8Validation_enum_name = "Utf8Validation" +) + +// Enum values for google.protobuf.FeatureSet.Utf8Validation. +const ( + FeatureSet_UTF8_VALIDATION_UNKNOWN_enum_value = 0 + FeatureSet_VERIFY_enum_value = 2 + FeatureSet_NONE_enum_value = 3 +) + +// Full and short names for google.protobuf.FeatureSet.MessageEncoding. +const ( + FeatureSet_MessageEncoding_enum_fullname = "google.protobuf.FeatureSet.MessageEncoding" + FeatureSet_MessageEncoding_enum_name = "MessageEncoding" +) + +// Enum values for google.protobuf.FeatureSet.MessageEncoding. +const ( + FeatureSet_MESSAGE_ENCODING_UNKNOWN_enum_value = 0 + FeatureSet_LENGTH_PREFIXED_enum_value = 1 + FeatureSet_DELIMITED_enum_value = 2 +) + +// Full and short names for google.protobuf.FeatureSet.JsonFormat. +const ( + FeatureSet_JsonFormat_enum_fullname = "google.protobuf.FeatureSet.JsonFormat" + FeatureSet_JsonFormat_enum_name = "JsonFormat" +) + +// Enum values for google.protobuf.FeatureSet.JsonFormat. +const ( + FeatureSet_JSON_FORMAT_UNKNOWN_enum_value = 0 + FeatureSet_ALLOW_enum_value = 1 + FeatureSet_LEGACY_BEST_EFFORT_enum_value = 2 +) + +// Names for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_message_name protoreflect.Name = "FeatureSetDefaults" + FeatureSetDefaults_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults" +) + +// Field names for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_Defaults_field_name protoreflect.Name = "defaults" + FeatureSetDefaults_MinimumEdition_field_name protoreflect.Name = "minimum_edition" + FeatureSetDefaults_MaximumEdition_field_name protoreflect.Name = "maximum_edition" + + FeatureSetDefaults_Defaults_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.defaults" + FeatureSetDefaults_MinimumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.minimum_edition" + FeatureSetDefaults_MaximumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.maximum_edition" +) + +// Field numbers for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_Defaults_field_number protoreflect.FieldNumber = 1 + FeatureSetDefaults_MinimumEdition_field_number protoreflect.FieldNumber = 4 + FeatureSetDefaults_MaximumEdition_field_number protoreflect.FieldNumber = 5 +) + +// Names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_message_name protoreflect.Name = "FeatureSetEditionDefault" + FeatureSetDefaults_FeatureSetEditionDefault_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault" +) + +// Field names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name protoreflect.Name = "edition" + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_name protoreflect.Name = "overridable_features" + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_name protoreflect.Name = "fixed_features" + + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition" + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features" + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features" +) + +// Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number protoreflect.FieldNumber = 3 + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number protoreflect.FieldNumber = 4 + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number protoreflect.FieldNumber = 5 +) + +// Names for google.protobuf.SourceCodeInfo. +const ( + SourceCodeInfo_message_name protoreflect.Name = "SourceCodeInfo" + SourceCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo" +) + +// Field names for google.protobuf.SourceCodeInfo. +const ( + SourceCodeInfo_Location_field_name protoreflect.Name = "location" + + SourceCodeInfo_Location_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.location" +) + +// Field numbers for google.protobuf.SourceCodeInfo. +const ( + SourceCodeInfo_Location_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.SourceCodeInfo.Location. +const ( + SourceCodeInfo_Location_message_name protoreflect.Name = "Location" + SourceCodeInfo_Location_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location" +) + +// Field names for google.protobuf.SourceCodeInfo.Location. +const ( + SourceCodeInfo_Location_Path_field_name protoreflect.Name = "path" + SourceCodeInfo_Location_Span_field_name protoreflect.Name = "span" + SourceCodeInfo_Location_LeadingComments_field_name protoreflect.Name = "leading_comments" + SourceCodeInfo_Location_TrailingComments_field_name protoreflect.Name = "trailing_comments" + SourceCodeInfo_Location_LeadingDetachedComments_field_name protoreflect.Name = "leading_detached_comments" + + SourceCodeInfo_Location_Path_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.path" + SourceCodeInfo_Location_Span_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.span" + SourceCodeInfo_Location_LeadingComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_comments" + SourceCodeInfo_Location_TrailingComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.trailing_comments" + SourceCodeInfo_Location_LeadingDetachedComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_detached_comments" +) + +// Field numbers for google.protobuf.SourceCodeInfo.Location. +const ( + SourceCodeInfo_Location_Path_field_number protoreflect.FieldNumber = 1 + SourceCodeInfo_Location_Span_field_number protoreflect.FieldNumber = 2 + SourceCodeInfo_Location_LeadingComments_field_number protoreflect.FieldNumber = 3 + SourceCodeInfo_Location_TrailingComments_field_number protoreflect.FieldNumber = 4 + SourceCodeInfo_Location_LeadingDetachedComments_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.GeneratedCodeInfo. +const ( + GeneratedCodeInfo_message_name protoreflect.Name = "GeneratedCodeInfo" + GeneratedCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo" +) + +// Field names for google.protobuf.GeneratedCodeInfo. +const ( + GeneratedCodeInfo_Annotation_field_name protoreflect.Name = "annotation" + + GeneratedCodeInfo_Annotation_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.annotation" +) + +// Field numbers for google.protobuf.GeneratedCodeInfo. +const ( + GeneratedCodeInfo_Annotation_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.GeneratedCodeInfo.Annotation. +const ( + GeneratedCodeInfo_Annotation_message_name protoreflect.Name = "Annotation" + GeneratedCodeInfo_Annotation_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation" +) + +// Field names for google.protobuf.GeneratedCodeInfo.Annotation. +const ( + GeneratedCodeInfo_Annotation_Path_field_name protoreflect.Name = "path" + GeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = "source_file" + GeneratedCodeInfo_Annotation_Begin_field_name protoreflect.Name = "begin" + GeneratedCodeInfo_Annotation_End_field_name protoreflect.Name = "end" + GeneratedCodeInfo_Annotation_Semantic_field_name protoreflect.Name = "semantic" + + GeneratedCodeInfo_Annotation_Path_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.path" + GeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.source_file" + GeneratedCodeInfo_Annotation_Begin_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.begin" + GeneratedCodeInfo_Annotation_End_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.end" + GeneratedCodeInfo_Annotation_Semantic_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.semantic" +) + +// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation. +const ( + GeneratedCodeInfo_Annotation_Path_field_number protoreflect.FieldNumber = 1 + GeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2 + GeneratedCodeInfo_Annotation_Begin_field_number protoreflect.FieldNumber = 3 + GeneratedCodeInfo_Annotation_End_field_number protoreflect.FieldNumber = 4 + GeneratedCodeInfo_Annotation_Semantic_field_number protoreflect.FieldNumber = 5 +) + +// Full and short names for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. +const ( + GeneratedCodeInfo_Annotation_Semantic_enum_fullname = "google.protobuf.GeneratedCodeInfo.Annotation.Semantic" + GeneratedCodeInfo_Annotation_Semantic_enum_name = "Semantic" +) + +// Enum values for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. +const ( + GeneratedCodeInfo_Annotation_NONE_enum_value = 0 + GeneratedCodeInfo_Annotation_SET_enum_value = 1 + GeneratedCodeInfo_Annotation_ALIAS_enum_value = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go new file mode 100644 index 0000000..45ccd01 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package genid contains constants for declarations in descriptor.proto +// and the well-known types. +package genid + +import protoreflect "google.golang.org/protobuf/reflect/protoreflect" + +const GoogleProtobuf_package protoreflect.FullName = "google.protobuf" diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go new file mode 100644 index 0000000..b070ef4 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_duration_proto = "google/protobuf/duration.proto" + +// Names for google.protobuf.Duration. +const ( + Duration_message_name protoreflect.Name = "Duration" + Duration_message_fullname protoreflect.FullName = "google.protobuf.Duration" +) + +// Field names for google.protobuf.Duration. +const ( + Duration_Seconds_field_name protoreflect.Name = "seconds" + Duration_Nanos_field_name protoreflect.Name = "nanos" + + Duration_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Duration.seconds" + Duration_Nanos_field_fullname protoreflect.FullName = "google.protobuf.Duration.nanos" +) + +// Field numbers for google.protobuf.Duration. +const ( + Duration_Seconds_field_number protoreflect.FieldNumber = 1 + Duration_Nanos_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go new file mode 100644 index 0000000..762abb3 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go @@ -0,0 +1,19 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_empty_proto = "google/protobuf/empty.proto" + +// Names for google.protobuf.Empty. +const ( + Empty_message_name protoreflect.Name = "Empty" + Empty_message_fullname protoreflect.FullName = "google.protobuf.Empty" +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go new file mode 100644 index 0000000..70bed45 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_field_mask_proto = "google/protobuf/field_mask.proto" + +// Names for google.protobuf.FieldMask. +const ( + FieldMask_message_name protoreflect.Name = "FieldMask" + FieldMask_message_fullname protoreflect.FullName = "google.protobuf.FieldMask" +) + +// Field names for google.protobuf.FieldMask. +const ( + FieldMask_Paths_field_name protoreflect.Name = "paths" + + FieldMask_Paths_field_fullname protoreflect.FullName = "google.protobuf.FieldMask.paths" +) + +// Field numbers for google.protobuf.FieldMask. +const ( + FieldMask_Paths_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go new file mode 100644 index 0000000..9a652a2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_go_features_proto = "google/protobuf/go_features.proto" + +// Names for google.protobuf.GoFeatures. +const ( + GoFeatures_message_name protoreflect.Name = "GoFeatures" + GoFeatures_message_fullname protoreflect.FullName = "google.protobuf.GoFeatures" +) + +// Field names for google.protobuf.GoFeatures. +const ( + GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum" + + GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "google.protobuf.GoFeatures.legacy_unmarshal_json_enum" +) + +// Field numbers for google.protobuf.GoFeatures. +const ( + GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go new file mode 100644 index 0000000..693d2e9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go @@ -0,0 +1,25 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package genid + +// Go names of implementation-specific struct fields in generated messages. +const ( + State_goname = "state" + + SizeCache_goname = "sizeCache" + SizeCacheA_goname = "XXX_sizecache" + + WeakFields_goname = "weakFields" + WeakFieldsA_goname = "XXX_weak" + + UnknownFields_goname = "unknownFields" + UnknownFieldsA_goname = "XXX_unrecognized" + + ExtensionFields_goname = "extensionFields" + ExtensionFieldsA_goname = "XXX_InternalExtensions" + ExtensionFieldsB_goname = "XXX_extensions" + + WeakFieldPrefix_goname = "XXX_weak_" +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go new file mode 100644 index 0000000..8f9ea02 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package genid + +import protoreflect "google.golang.org/protobuf/reflect/protoreflect" + +// Generic field names and numbers for synthetic map entry messages. +const ( + MapEntry_Key_field_name protoreflect.Name = "key" + MapEntry_Value_field_name protoreflect.Name = "value" + + MapEntry_Key_field_number protoreflect.FieldNumber = 1 + MapEntry_Value_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go new file mode 100644 index 0000000..3e99ae1 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_source_context_proto = "google/protobuf/source_context.proto" + +// Names for google.protobuf.SourceContext. +const ( + SourceContext_message_name protoreflect.Name = "SourceContext" + SourceContext_message_fullname protoreflect.FullName = "google.protobuf.SourceContext" +) + +// Field names for google.protobuf.SourceContext. +const ( + SourceContext_FileName_field_name protoreflect.Name = "file_name" + + SourceContext_FileName_field_fullname protoreflect.FullName = "google.protobuf.SourceContext.file_name" +) + +// Field numbers for google.protobuf.SourceContext. +const ( + SourceContext_FileName_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go new file mode 100644 index 0000000..ad6f80c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go @@ -0,0 +1,121 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_struct_proto = "google/protobuf/struct.proto" + +// Full and short names for google.protobuf.NullValue. +const ( + NullValue_enum_fullname = "google.protobuf.NullValue" + NullValue_enum_name = "NullValue" +) + +// Enum values for google.protobuf.NullValue. +const ( + NullValue_NULL_VALUE_enum_value = 0 +) + +// Names for google.protobuf.Struct. +const ( + Struct_message_name protoreflect.Name = "Struct" + Struct_message_fullname protoreflect.FullName = "google.protobuf.Struct" +) + +// Field names for google.protobuf.Struct. +const ( + Struct_Fields_field_name protoreflect.Name = "fields" + + Struct_Fields_field_fullname protoreflect.FullName = "google.protobuf.Struct.fields" +) + +// Field numbers for google.protobuf.Struct. +const ( + Struct_Fields_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.Struct.FieldsEntry. +const ( + Struct_FieldsEntry_message_name protoreflect.Name = "FieldsEntry" + Struct_FieldsEntry_message_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry" +) + +// Field names for google.protobuf.Struct.FieldsEntry. +const ( + Struct_FieldsEntry_Key_field_name protoreflect.Name = "key" + Struct_FieldsEntry_Value_field_name protoreflect.Name = "value" + + Struct_FieldsEntry_Key_field_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.key" + Struct_FieldsEntry_Value_field_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.value" +) + +// Field numbers for google.protobuf.Struct.FieldsEntry. +const ( + Struct_FieldsEntry_Key_field_number protoreflect.FieldNumber = 1 + Struct_FieldsEntry_Value_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.Value. +const ( + Value_message_name protoreflect.Name = "Value" + Value_message_fullname protoreflect.FullName = "google.protobuf.Value" +) + +// Field names for google.protobuf.Value. +const ( + Value_NullValue_field_name protoreflect.Name = "null_value" + Value_NumberValue_field_name protoreflect.Name = "number_value" + Value_StringValue_field_name protoreflect.Name = "string_value" + Value_BoolValue_field_name protoreflect.Name = "bool_value" + Value_StructValue_field_name protoreflect.Name = "struct_value" + Value_ListValue_field_name protoreflect.Name = "list_value" + + Value_NullValue_field_fullname protoreflect.FullName = "google.protobuf.Value.null_value" + Value_NumberValue_field_fullname protoreflect.FullName = "google.protobuf.Value.number_value" + Value_StringValue_field_fullname protoreflect.FullName = "google.protobuf.Value.string_value" + Value_BoolValue_field_fullname protoreflect.FullName = "google.protobuf.Value.bool_value" + Value_StructValue_field_fullname protoreflect.FullName = "google.protobuf.Value.struct_value" + Value_ListValue_field_fullname protoreflect.FullName = "google.protobuf.Value.list_value" +) + +// Field numbers for google.protobuf.Value. +const ( + Value_NullValue_field_number protoreflect.FieldNumber = 1 + Value_NumberValue_field_number protoreflect.FieldNumber = 2 + Value_StringValue_field_number protoreflect.FieldNumber = 3 + Value_BoolValue_field_number protoreflect.FieldNumber = 4 + Value_StructValue_field_number protoreflect.FieldNumber = 5 + Value_ListValue_field_number protoreflect.FieldNumber = 6 +) + +// Oneof names for google.protobuf.Value. +const ( + Value_Kind_oneof_name protoreflect.Name = "kind" + + Value_Kind_oneof_fullname protoreflect.FullName = "google.protobuf.Value.kind" +) + +// Names for google.protobuf.ListValue. +const ( + ListValue_message_name protoreflect.Name = "ListValue" + ListValue_message_fullname protoreflect.FullName = "google.protobuf.ListValue" +) + +// Field names for google.protobuf.ListValue. +const ( + ListValue_Values_field_name protoreflect.Name = "values" + + ListValue_Values_field_fullname protoreflect.FullName = "google.protobuf.ListValue.values" +) + +// Field numbers for google.protobuf.ListValue. +const ( + ListValue_Values_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go new file mode 100644 index 0000000..f5cd563 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_timestamp_proto = "google/protobuf/timestamp.proto" + +// Names for google.protobuf.Timestamp. +const ( + Timestamp_message_name protoreflect.Name = "Timestamp" + Timestamp_message_fullname protoreflect.FullName = "google.protobuf.Timestamp" +) + +// Field names for google.protobuf.Timestamp. +const ( + Timestamp_Seconds_field_name protoreflect.Name = "seconds" + Timestamp_Nanos_field_name protoreflect.Name = "nanos" + + Timestamp_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Timestamp.seconds" + Timestamp_Nanos_field_fullname protoreflect.FullName = "google.protobuf.Timestamp.nanos" +) + +// Field numbers for google.protobuf.Timestamp. +const ( + Timestamp_Seconds_field_number protoreflect.FieldNumber = 1 + Timestamp_Nanos_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go new file mode 100644 index 0000000..49bc73e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go @@ -0,0 +1,228 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_type_proto = "google/protobuf/type.proto" + +// Full and short names for google.protobuf.Syntax. +const ( + Syntax_enum_fullname = "google.protobuf.Syntax" + Syntax_enum_name = "Syntax" +) + +// Enum values for google.protobuf.Syntax. +const ( + Syntax_SYNTAX_PROTO2_enum_value = 0 + Syntax_SYNTAX_PROTO3_enum_value = 1 + Syntax_SYNTAX_EDITIONS_enum_value = 2 +) + +// Names for google.protobuf.Type. +const ( + Type_message_name protoreflect.Name = "Type" + Type_message_fullname protoreflect.FullName = "google.protobuf.Type" +) + +// Field names for google.protobuf.Type. +const ( + Type_Name_field_name protoreflect.Name = "name" + Type_Fields_field_name protoreflect.Name = "fields" + Type_Oneofs_field_name protoreflect.Name = "oneofs" + Type_Options_field_name protoreflect.Name = "options" + Type_SourceContext_field_name protoreflect.Name = "source_context" + Type_Syntax_field_name protoreflect.Name = "syntax" + Type_Edition_field_name protoreflect.Name = "edition" + + Type_Name_field_fullname protoreflect.FullName = "google.protobuf.Type.name" + Type_Fields_field_fullname protoreflect.FullName = "google.protobuf.Type.fields" + Type_Oneofs_field_fullname protoreflect.FullName = "google.protobuf.Type.oneofs" + Type_Options_field_fullname protoreflect.FullName = "google.protobuf.Type.options" + Type_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Type.source_context" + Type_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Type.syntax" + Type_Edition_field_fullname protoreflect.FullName = "google.protobuf.Type.edition" +) + +// Field numbers for google.protobuf.Type. +const ( + Type_Name_field_number protoreflect.FieldNumber = 1 + Type_Fields_field_number protoreflect.FieldNumber = 2 + Type_Oneofs_field_number protoreflect.FieldNumber = 3 + Type_Options_field_number protoreflect.FieldNumber = 4 + Type_SourceContext_field_number protoreflect.FieldNumber = 5 + Type_Syntax_field_number protoreflect.FieldNumber = 6 + Type_Edition_field_number protoreflect.FieldNumber = 7 +) + +// Names for google.protobuf.Field. +const ( + Field_message_name protoreflect.Name = "Field" + Field_message_fullname protoreflect.FullName = "google.protobuf.Field" +) + +// Field names for google.protobuf.Field. +const ( + Field_Kind_field_name protoreflect.Name = "kind" + Field_Cardinality_field_name protoreflect.Name = "cardinality" + Field_Number_field_name protoreflect.Name = "number" + Field_Name_field_name protoreflect.Name = "name" + Field_TypeUrl_field_name protoreflect.Name = "type_url" + Field_OneofIndex_field_name protoreflect.Name = "oneof_index" + Field_Packed_field_name protoreflect.Name = "packed" + Field_Options_field_name protoreflect.Name = "options" + Field_JsonName_field_name protoreflect.Name = "json_name" + Field_DefaultValue_field_name protoreflect.Name = "default_value" + + Field_Kind_field_fullname protoreflect.FullName = "google.protobuf.Field.kind" + Field_Cardinality_field_fullname protoreflect.FullName = "google.protobuf.Field.cardinality" + Field_Number_field_fullname protoreflect.FullName = "google.protobuf.Field.number" + Field_Name_field_fullname protoreflect.FullName = "google.protobuf.Field.name" + Field_TypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Field.type_url" + Field_OneofIndex_field_fullname protoreflect.FullName = "google.protobuf.Field.oneof_index" + Field_Packed_field_fullname protoreflect.FullName = "google.protobuf.Field.packed" + Field_Options_field_fullname protoreflect.FullName = "google.protobuf.Field.options" + Field_JsonName_field_fullname protoreflect.FullName = "google.protobuf.Field.json_name" + Field_DefaultValue_field_fullname protoreflect.FullName = "google.protobuf.Field.default_value" +) + +// Field numbers for google.protobuf.Field. +const ( + Field_Kind_field_number protoreflect.FieldNumber = 1 + Field_Cardinality_field_number protoreflect.FieldNumber = 2 + Field_Number_field_number protoreflect.FieldNumber = 3 + Field_Name_field_number protoreflect.FieldNumber = 4 + Field_TypeUrl_field_number protoreflect.FieldNumber = 6 + Field_OneofIndex_field_number protoreflect.FieldNumber = 7 + Field_Packed_field_number protoreflect.FieldNumber = 8 + Field_Options_field_number protoreflect.FieldNumber = 9 + Field_JsonName_field_number protoreflect.FieldNumber = 10 + Field_DefaultValue_field_number protoreflect.FieldNumber = 11 +) + +// Full and short names for google.protobuf.Field.Kind. +const ( + Field_Kind_enum_fullname = "google.protobuf.Field.Kind" + Field_Kind_enum_name = "Kind" +) + +// Enum values for google.protobuf.Field.Kind. +const ( + Field_TYPE_UNKNOWN_enum_value = 0 + Field_TYPE_DOUBLE_enum_value = 1 + Field_TYPE_FLOAT_enum_value = 2 + Field_TYPE_INT64_enum_value = 3 + Field_TYPE_UINT64_enum_value = 4 + Field_TYPE_INT32_enum_value = 5 + Field_TYPE_FIXED64_enum_value = 6 + Field_TYPE_FIXED32_enum_value = 7 + Field_TYPE_BOOL_enum_value = 8 + Field_TYPE_STRING_enum_value = 9 + Field_TYPE_GROUP_enum_value = 10 + Field_TYPE_MESSAGE_enum_value = 11 + Field_TYPE_BYTES_enum_value = 12 + Field_TYPE_UINT32_enum_value = 13 + Field_TYPE_ENUM_enum_value = 14 + Field_TYPE_SFIXED32_enum_value = 15 + Field_TYPE_SFIXED64_enum_value = 16 + Field_TYPE_SINT32_enum_value = 17 + Field_TYPE_SINT64_enum_value = 18 +) + +// Full and short names for google.protobuf.Field.Cardinality. +const ( + Field_Cardinality_enum_fullname = "google.protobuf.Field.Cardinality" + Field_Cardinality_enum_name = "Cardinality" +) + +// Enum values for google.protobuf.Field.Cardinality. +const ( + Field_CARDINALITY_UNKNOWN_enum_value = 0 + Field_CARDINALITY_OPTIONAL_enum_value = 1 + Field_CARDINALITY_REQUIRED_enum_value = 2 + Field_CARDINALITY_REPEATED_enum_value = 3 +) + +// Names for google.protobuf.Enum. +const ( + Enum_message_name protoreflect.Name = "Enum" + Enum_message_fullname protoreflect.FullName = "google.protobuf.Enum" +) + +// Field names for google.protobuf.Enum. +const ( + Enum_Name_field_name protoreflect.Name = "name" + Enum_Enumvalue_field_name protoreflect.Name = "enumvalue" + Enum_Options_field_name protoreflect.Name = "options" + Enum_SourceContext_field_name protoreflect.Name = "source_context" + Enum_Syntax_field_name protoreflect.Name = "syntax" + Enum_Edition_field_name protoreflect.Name = "edition" + + Enum_Name_field_fullname protoreflect.FullName = "google.protobuf.Enum.name" + Enum_Enumvalue_field_fullname protoreflect.FullName = "google.protobuf.Enum.enumvalue" + Enum_Options_field_fullname protoreflect.FullName = "google.protobuf.Enum.options" + Enum_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Enum.source_context" + Enum_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Enum.syntax" + Enum_Edition_field_fullname protoreflect.FullName = "google.protobuf.Enum.edition" +) + +// Field numbers for google.protobuf.Enum. +const ( + Enum_Name_field_number protoreflect.FieldNumber = 1 + Enum_Enumvalue_field_number protoreflect.FieldNumber = 2 + Enum_Options_field_number protoreflect.FieldNumber = 3 + Enum_SourceContext_field_number protoreflect.FieldNumber = 4 + Enum_Syntax_field_number protoreflect.FieldNumber = 5 + Enum_Edition_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.EnumValue. +const ( + EnumValue_message_name protoreflect.Name = "EnumValue" + EnumValue_message_fullname protoreflect.FullName = "google.protobuf.EnumValue" +) + +// Field names for google.protobuf.EnumValue. +const ( + EnumValue_Name_field_name protoreflect.Name = "name" + EnumValue_Number_field_name protoreflect.Name = "number" + EnumValue_Options_field_name protoreflect.Name = "options" + + EnumValue_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.name" + EnumValue_Number_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.number" + EnumValue_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.options" +) + +// Field numbers for google.protobuf.EnumValue. +const ( + EnumValue_Name_field_number protoreflect.FieldNumber = 1 + EnumValue_Number_field_number protoreflect.FieldNumber = 2 + EnumValue_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.Option. +const ( + Option_message_name protoreflect.Name = "Option" + Option_message_fullname protoreflect.FullName = "google.protobuf.Option" +) + +// Field names for google.protobuf.Option. +const ( + Option_Name_field_name protoreflect.Name = "name" + Option_Value_field_name protoreflect.Name = "value" + + Option_Name_field_fullname protoreflect.FullName = "google.protobuf.Option.name" + Option_Value_field_fullname protoreflect.FullName = "google.protobuf.Option.value" +) + +// Field numbers for google.protobuf.Option. +const ( + Option_Name_field_number protoreflect.FieldNumber = 1 + Option_Value_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go new file mode 100644 index 0000000..429384b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go @@ -0,0 +1,13 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package genid + +import protoreflect "google.golang.org/protobuf/reflect/protoreflect" + +// Generic field name and number for messages in wrappers.proto. +const ( + WrapperValue_Value_field_name protoreflect.Name = "value" + WrapperValue_Value_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go new file mode 100644 index 0000000..72527d2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go @@ -0,0 +1,175 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_wrappers_proto = "google/protobuf/wrappers.proto" + +// Names for google.protobuf.DoubleValue. +const ( + DoubleValue_message_name protoreflect.Name = "DoubleValue" + DoubleValue_message_fullname protoreflect.FullName = "google.protobuf.DoubleValue" +) + +// Field names for google.protobuf.DoubleValue. +const ( + DoubleValue_Value_field_name protoreflect.Name = "value" + + DoubleValue_Value_field_fullname protoreflect.FullName = "google.protobuf.DoubleValue.value" +) + +// Field numbers for google.protobuf.DoubleValue. +const ( + DoubleValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.FloatValue. +const ( + FloatValue_message_name protoreflect.Name = "FloatValue" + FloatValue_message_fullname protoreflect.FullName = "google.protobuf.FloatValue" +) + +// Field names for google.protobuf.FloatValue. +const ( + FloatValue_Value_field_name protoreflect.Name = "value" + + FloatValue_Value_field_fullname protoreflect.FullName = "google.protobuf.FloatValue.value" +) + +// Field numbers for google.protobuf.FloatValue. +const ( + FloatValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.Int64Value. +const ( + Int64Value_message_name protoreflect.Name = "Int64Value" + Int64Value_message_fullname protoreflect.FullName = "google.protobuf.Int64Value" +) + +// Field names for google.protobuf.Int64Value. +const ( + Int64Value_Value_field_name protoreflect.Name = "value" + + Int64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int64Value.value" +) + +// Field numbers for google.protobuf.Int64Value. +const ( + Int64Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.UInt64Value. +const ( + UInt64Value_message_name protoreflect.Name = "UInt64Value" + UInt64Value_message_fullname protoreflect.FullName = "google.protobuf.UInt64Value" +) + +// Field names for google.protobuf.UInt64Value. +const ( + UInt64Value_Value_field_name protoreflect.Name = "value" + + UInt64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt64Value.value" +) + +// Field numbers for google.protobuf.UInt64Value. +const ( + UInt64Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.Int32Value. +const ( + Int32Value_message_name protoreflect.Name = "Int32Value" + Int32Value_message_fullname protoreflect.FullName = "google.protobuf.Int32Value" +) + +// Field names for google.protobuf.Int32Value. +const ( + Int32Value_Value_field_name protoreflect.Name = "value" + + Int32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int32Value.value" +) + +// Field numbers for google.protobuf.Int32Value. +const ( + Int32Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.UInt32Value. +const ( + UInt32Value_message_name protoreflect.Name = "UInt32Value" + UInt32Value_message_fullname protoreflect.FullName = "google.protobuf.UInt32Value" +) + +// Field names for google.protobuf.UInt32Value. +const ( + UInt32Value_Value_field_name protoreflect.Name = "value" + + UInt32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt32Value.value" +) + +// Field numbers for google.protobuf.UInt32Value. +const ( + UInt32Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.BoolValue. +const ( + BoolValue_message_name protoreflect.Name = "BoolValue" + BoolValue_message_fullname protoreflect.FullName = "google.protobuf.BoolValue" +) + +// Field names for google.protobuf.BoolValue. +const ( + BoolValue_Value_field_name protoreflect.Name = "value" + + BoolValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BoolValue.value" +) + +// Field numbers for google.protobuf.BoolValue. +const ( + BoolValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.StringValue. +const ( + StringValue_message_name protoreflect.Name = "StringValue" + StringValue_message_fullname protoreflect.FullName = "google.protobuf.StringValue" +) + +// Field names for google.protobuf.StringValue. +const ( + StringValue_Value_field_name protoreflect.Name = "value" + + StringValue_Value_field_fullname protoreflect.FullName = "google.protobuf.StringValue.value" +) + +// Field numbers for google.protobuf.StringValue. +const ( + StringValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.BytesValue. +const ( + BytesValue_message_name protoreflect.Name = "BytesValue" + BytesValue_message_fullname protoreflect.FullName = "google.protobuf.BytesValue" +) + +// Field names for google.protobuf.BytesValue. +const ( + BytesValue_Value_field_name protoreflect.Name = "value" + + BytesValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BytesValue.value" +) + +// Field numbers for google.protobuf.BytesValue. +const ( + BytesValue_Value_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go new file mode 100644 index 0000000..5d5771c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go @@ -0,0 +1,177 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strconv" + + "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// Export is a zero-length named type that exists only to export a set of +// functions that we do not want to appear in godoc. +type Export struct{} + +// NewError formats a string according to the format specifier and arguments and +// returns an error that has a "proto" prefix. +func (Export) NewError(f string, x ...any) error { + return errors.New(f, x...) +} + +// enum is any enum type generated by protoc-gen-go +// and must be a named int32 type. +type enum = any + +// EnumOf returns the protoreflect.Enum interface over e. +// It returns nil if e is nil. +func (Export) EnumOf(e enum) protoreflect.Enum { + switch e := e.(type) { + case nil: + return nil + case protoreflect.Enum: + return e + default: + return legacyWrapEnum(reflect.ValueOf(e)) + } +} + +// EnumDescriptorOf returns the protoreflect.EnumDescriptor for e. +// It returns nil if e is nil. +func (Export) EnumDescriptorOf(e enum) protoreflect.EnumDescriptor { + switch e := e.(type) { + case nil: + return nil + case protoreflect.Enum: + return e.Descriptor() + default: + return LegacyLoadEnumDesc(reflect.TypeOf(e)) + } +} + +// EnumTypeOf returns the protoreflect.EnumType for e. +// It returns nil if e is nil. +func (Export) EnumTypeOf(e enum) protoreflect.EnumType { + switch e := e.(type) { + case nil: + return nil + case protoreflect.Enum: + return e.Type() + default: + return legacyLoadEnumType(reflect.TypeOf(e)) + } +} + +// EnumStringOf returns the enum value as a string, either as the name if +// the number is resolvable, or the number formatted as a string. +func (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNumber) string { + ev := ed.Values().ByNumber(n) + if ev != nil { + return string(ev.Name()) + } + return strconv.Itoa(int(n)) +} + +// message is any message type generated by protoc-gen-go +// and must be a pointer to a named struct type. +type message = any + +// legacyMessageWrapper wraps a v2 message as a v1 message. +type legacyMessageWrapper struct{ m protoreflect.ProtoMessage } + +func (m legacyMessageWrapper) Reset() { proto.Reset(m.m) } +func (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) } +func (m legacyMessageWrapper) ProtoMessage() {} + +// ProtoMessageV1Of converts either a v1 or v2 message to a v1 message. +// It returns nil if m is nil. +func (Export) ProtoMessageV1Of(m message) protoiface.MessageV1 { + switch mv := m.(type) { + case nil: + return nil + case protoiface.MessageV1: + return mv + case unwrapper: + return Export{}.ProtoMessageV1Of(mv.protoUnwrap()) + case protoreflect.ProtoMessage: + return legacyMessageWrapper{mv} + default: + panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) + } +} + +func (Export) protoMessageV2Of(m message) protoreflect.ProtoMessage { + switch mv := m.(type) { + case nil: + return nil + case protoreflect.ProtoMessage: + return mv + case legacyMessageWrapper: + return mv.m + case protoiface.MessageV1: + return nil + default: + panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) + } +} + +// ProtoMessageV2Of converts either a v1 or v2 message to a v2 message. +// It returns nil if m is nil. +func (Export) ProtoMessageV2Of(m message) protoreflect.ProtoMessage { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv + } + return legacyWrapMessage(reflect.ValueOf(m)).Interface() +} + +// MessageOf returns the protoreflect.Message interface over m. +// It returns nil if m is nil. +func (Export) MessageOf(m message) protoreflect.Message { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect() + } + return legacyWrapMessage(reflect.ValueOf(m)) +} + +// MessageDescriptorOf returns the protoreflect.MessageDescriptor for m. +// It returns nil if m is nil. +func (Export) MessageDescriptorOf(m message) protoreflect.MessageDescriptor { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect().Descriptor() + } + return LegacyLoadMessageDesc(reflect.TypeOf(m)) +} + +// MessageTypeOf returns the protoreflect.MessageType for m. +// It returns nil if m is nil. +func (Export) MessageTypeOf(m message) protoreflect.MessageType { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect().Type() + } + return legacyLoadMessageType(reflect.TypeOf(m), "") +} + +// MessageStringOf returns the message value as a string, +// which is the message serialized in the protobuf text format. +func (Export) MessageStringOf(m protoreflect.ProtoMessage) string { + return prototext.MarshalOptions{Multiline: false}.Format(m) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go new file mode 100644 index 0000000..f29e6a8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go @@ -0,0 +1,141 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "sync" + + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +func (mi *MessageInfo) checkInitialized(in protoiface.CheckInitializedInput) (protoiface.CheckInitializedOutput, error) { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + return protoiface.CheckInitializedOutput{}, mi.checkInitializedPointer(p) +} + +func (mi *MessageInfo) checkInitializedPointer(p pointer) error { + mi.init() + if !mi.needsInitCheck { + return nil + } + if p.IsNil() { + for _, f := range mi.orderedCoderFields { + if f.isRequired { + return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName())) + } + } + return nil + } + if mi.extensionOffset.IsValid() { + e := p.Apply(mi.extensionOffset).Extensions() + if err := mi.isInitExtensions(e); err != nil { + return err + } + } + for _, f := range mi.orderedCoderFields { + if !f.isRequired && f.funcs.isInit == nil { + continue + } + fptr := p.Apply(f.offset) + if f.isPointer && fptr.Elem().IsNil() { + if f.isRequired { + return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName())) + } + continue + } + if f.funcs.isInit == nil { + continue + } + if err := f.funcs.isInit(fptr, f); err != nil { + return err + } + } + return nil +} + +func (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error { + if ext == nil { + return nil + } + for _, x := range *ext { + ei := getExtensionFieldInfo(x.Type()) + if ei.funcs.isInit == nil || x.isUnexpandedLazy() { + continue + } + v := x.Value() + if !v.IsValid() { + continue + } + if err := ei.funcs.isInit(v); err != nil { + return err + } + } + return nil +} + +var ( + needsInitCheckMu sync.Mutex + needsInitCheckMap sync.Map +) + +// needsInitCheck reports whether a message needs to be checked for partial initialization. +// +// It returns true if the message transitively includes any required or extension fields. +func needsInitCheck(md protoreflect.MessageDescriptor) bool { + if v, ok := needsInitCheckMap.Load(md); ok { + if has, ok := v.(bool); ok { + return has + } + } + needsInitCheckMu.Lock() + defer needsInitCheckMu.Unlock() + return needsInitCheckLocked(md) +} + +func needsInitCheckLocked(md protoreflect.MessageDescriptor) (has bool) { + if v, ok := needsInitCheckMap.Load(md); ok { + // If has is true, we've previously determined that this message + // needs init checks. + // + // If has is false, we've previously determined that it can never + // be uninitialized. + // + // If has is not a bool, we've just encountered a cycle in the + // message graph. In this case, it is safe to return false: If + // the message does have required fields, we'll detect them later + // in the graph traversal. + has, ok := v.(bool) + return ok && has + } + needsInitCheckMap.Store(md, struct{}{}) // avoid cycles while descending into this message + defer func() { + needsInitCheckMap.Store(md, has) + }() + if md.RequiredNumbers().Len() > 0 { + return true + } + if md.ExtensionRanges().Len() > 0 { + return true + } + for i := 0; i < md.Fields().Len(); i++ { + fd := md.Fields().Get(i) + // Map keys are never messages, so just consider the map value. + if fd.IsMap() { + fd = fd.MapValue() + } + fmd := fd.Message() + if fmd != nil && needsInitCheckLocked(fmd) { + return true + } + } + return false +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go new file mode 100644 index 0000000..4bb0a7a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go @@ -0,0 +1,237 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "sync" + "sync/atomic" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type extensionFieldInfo struct { + wiretag uint64 + tagsize int + unmarshalNeedsValue bool + funcs valueCoderFuncs + validation validationInfo +} + +func getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo { + if xi, ok := xt.(*ExtensionInfo); ok { + xi.lazyInit() + return xi.info + } + // Ideally we'd cache the resulting *extensionFieldInfo so we don't have to + // recompute this metadata repeatedly. But without support for something like + // weak references, such a cache would pin temporary values (like dynamic + // extension types, constructed for the duration of a user request) to the + // heap forever, causing memory usage of the cache to grow unbounded. + // See discussion in https://github.com/golang/protobuf/issues/1521. + return makeExtensionFieldInfo(xt.TypeDescriptor()) +} + +func makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo { + var wiretag uint64 + if !xd.IsPacked() { + wiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()]) + } else { + wiretag = protowire.EncodeTag(xd.Number(), protowire.BytesType) + } + e := &extensionFieldInfo{ + wiretag: wiretag, + tagsize: protowire.SizeVarint(wiretag), + funcs: encoderFuncsForValue(xd), + } + // Does the unmarshal function need a value passed to it? + // This is true for composite types, where we pass in a message, list, or map to fill in, + // and for enums, where we pass in a prototype value to specify the concrete enum type. + switch xd.Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.EnumKind: + e.unmarshalNeedsValue = true + default: + if xd.Cardinality() == protoreflect.Repeated { + e.unmarshalNeedsValue = true + } + } + return e +} + +type lazyExtensionValue struct { + atomicOnce uint32 // atomically set if value is valid + mu sync.Mutex + xi *extensionFieldInfo + value protoreflect.Value + b []byte + fn func() protoreflect.Value +} + +type ExtensionField struct { + typ protoreflect.ExtensionType + + // value is either the value of GetValue, + // or a *lazyExtensionValue that then returns the value of GetValue. + value protoreflect.Value + lazy *lazyExtensionValue +} + +func (f *ExtensionField) appendLazyBytes(xt protoreflect.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) { + if f.lazy == nil { + f.lazy = &lazyExtensionValue{xi: xi} + } + f.typ = xt + f.lazy.xi = xi + f.lazy.b = protowire.AppendTag(f.lazy.b, num, wtyp) + f.lazy.b = append(f.lazy.b, b...) +} + +func (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool { + if f.typ == nil { + return true + } + if f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 { + return true + } + return false +} + +// isUnexpandedLazy returns true if the ExensionField is lazy and not +// yet expanded, which means it's present and already checked for +// initialized required fields. +func (f *ExtensionField) isUnexpandedLazy() bool { + return f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 +} + +// lazyBuffer retrieves the buffer for a lazy extension if it's not yet expanded. +// +// The returned buffer has to be kept over whatever operation we're planning, +// as re-retrieving it will fail after the message is lazily decoded. +func (f *ExtensionField) lazyBuffer() []byte { + // This function might be in the critical path, so check the atomic without + // taking a look first, then only take the lock if needed. + if !f.isUnexpandedLazy() { + return nil + } + f.lazy.mu.Lock() + defer f.lazy.mu.Unlock() + return f.lazy.b +} + +func (f *ExtensionField) lazyInit() { + f.lazy.mu.Lock() + defer f.lazy.mu.Unlock() + if atomic.LoadUint32(&f.lazy.atomicOnce) == 1 { + return + } + if f.lazy.xi != nil { + b := f.lazy.b + val := f.typ.New() + for len(b) > 0 { + var tag uint64 + if b[0] < 0x80 { + tag = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + tag, n = protowire.ConsumeVarint(b) + if n < 0 { + panic(errors.New("bad tag in lazy extension decoding")) + } + b = b[n:] + } + num := protowire.Number(tag >> 3) + wtyp := protowire.Type(tag & 7) + var out unmarshalOutput + var err error + val, out, err = f.lazy.xi.funcs.unmarshal(b, val, num, wtyp, lazyUnmarshalOptions) + if err != nil { + panic(errors.New("decode failure in lazy extension decoding: %v", err)) + } + b = b[out.n:] + } + f.lazy.value = val + } else { + f.lazy.value = f.lazy.fn() + } + f.lazy.xi = nil + f.lazy.fn = nil + f.lazy.b = nil + atomic.StoreUint32(&f.lazy.atomicOnce, 1) +} + +// Set sets the type and value of the extension field. +// This must not be called concurrently. +func (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) { + f.typ = t + f.value = v + f.lazy = nil +} + +// SetLazy sets the type and a value that is to be lazily evaluated upon first use. +// This must not be called concurrently. +func (f *ExtensionField) SetLazy(t protoreflect.ExtensionType, fn func() protoreflect.Value) { + f.typ = t + f.lazy = &lazyExtensionValue{fn: fn} +} + +// Value returns the value of the extension field. +// This may be called concurrently. +func (f *ExtensionField) Value() protoreflect.Value { + if f.lazy != nil { + if atomic.LoadUint32(&f.lazy.atomicOnce) == 0 { + f.lazyInit() + } + return f.lazy.value + } + return f.value +} + +// Type returns the type of the extension field. +// This may be called concurrently. +func (f ExtensionField) Type() protoreflect.ExtensionType { + return f.typ +} + +// IsSet returns whether the extension field is set. +// This may be called concurrently. +func (f ExtensionField) IsSet() bool { + return f.typ != nil +} + +// IsLazy reports whether a field is lazily encoded. +// It is exported for testing. +func IsLazy(m protoreflect.Message, fd protoreflect.FieldDescriptor) bool { + var mi *MessageInfo + var p pointer + switch m := m.(type) { + case *messageState: + mi = m.messageInfo() + p = m.pointer() + case *messageReflectWrapper: + mi = m.messageInfo() + p = m.pointer() + default: + return false + } + xd, ok := fd.(protoreflect.ExtensionTypeDescriptor) + if !ok { + return false + } + xt := xd.Type() + ext := mi.extensionMap(p) + if ext == nil { + return false + } + f, ok := (*ext)[int32(fd.Number())] + if !ok { + return false + } + return f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go new file mode 100644 index 0000000..78ee47e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go @@ -0,0 +1,860 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "sync" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +type errInvalidUTF8 struct{} + +func (errInvalidUTF8) Error() string { return "string field contains invalid UTF-8" } +func (errInvalidUTF8) InvalidUTF8() bool { return true } +func (errInvalidUTF8) Unwrap() error { return errors.Error } + +// initOneofFieldCoders initializes the fast-path functions for the fields in a oneof. +// +// For size, marshal, and isInit operations, functions are set only on the first field +// in the oneof. The functions are called when the oneof is non-nil, and will dispatch +// to the appropriate field-specific function as necessary. +// +// The unmarshal function is set on each field individually as usual. +func (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si structInfo) { + fs := si.oneofsByName[od.Name()] + ft := fs.Type + oneofFields := make(map[reflect.Type]*coderFieldInfo) + needIsInit := false + fields := od.Fields() + for i, lim := 0, fields.Len(); i < lim; i++ { + fd := od.Fields().Get(i) + num := fd.Number() + // Make a copy of the original coderFieldInfo for use in unmarshaling. + // + // oneofFields[oneofType].funcs.marshal is the field-specific marshal function. + // + // mi.coderFields[num].marshal is set on only the first field in the oneof, + // and dispatches to the field-specific marshaler in oneofFields. + cf := *mi.coderFields[num] + ot := si.oneofWrappersByNumber[num] + cf.ft = ot.Field(0).Type + cf.mi, cf.funcs = fieldCoder(fd, cf.ft) + oneofFields[ot] = &cf + if cf.funcs.isInit != nil { + needIsInit = true + } + mi.coderFields[num].funcs.unmarshal = func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + var vw reflect.Value // pointer to wrapper type + vi := p.AsValueOf(ft).Elem() // oneof field value of interface kind + if !vi.IsNil() && !vi.Elem().IsNil() && vi.Elem().Elem().Type() == ot { + vw = vi.Elem() + } else { + vw = reflect.New(ot) + } + out, err := cf.funcs.unmarshal(b, pointerOfValue(vw).Apply(zeroOffset), wtyp, &cf, opts) + if err != nil { + return out, err + } + vi.Set(vw) + return out, nil + } + } + getInfo := func(p pointer) (pointer, *coderFieldInfo) { + v := p.AsValueOf(ft).Elem() + if v.IsNil() { + return pointer{}, nil + } + v = v.Elem() // interface -> *struct + if v.IsNil() { + return pointer{}, nil + } + return pointerOfValue(v).Apply(zeroOffset), oneofFields[v.Elem().Type()] + } + first := mi.coderFields[od.Fields().Get(0).Number()] + first.funcs.size = func(p pointer, _ *coderFieldInfo, opts marshalOptions) int { + p, info := getInfo(p) + if info == nil || info.funcs.size == nil { + return 0 + } + return info.funcs.size(p, info, opts) + } + first.funcs.marshal = func(b []byte, p pointer, _ *coderFieldInfo, opts marshalOptions) ([]byte, error) { + p, info := getInfo(p) + if info == nil || info.funcs.marshal == nil { + return b, nil + } + return info.funcs.marshal(b, p, info, opts) + } + first.funcs.merge = func(dst, src pointer, _ *coderFieldInfo, opts mergeOptions) { + srcp, srcinfo := getInfo(src) + if srcinfo == nil || srcinfo.funcs.merge == nil { + return + } + dstp, dstinfo := getInfo(dst) + if dstinfo != srcinfo { + dst.AsValueOf(ft).Elem().Set(reflect.New(src.AsValueOf(ft).Elem().Elem().Elem().Type())) + dstp = pointerOfValue(dst.AsValueOf(ft).Elem().Elem()).Apply(zeroOffset) + } + srcinfo.funcs.merge(dstp, srcp, srcinfo, opts) + } + if needIsInit { + first.funcs.isInit = func(p pointer, _ *coderFieldInfo) error { + p, info := getInfo(p) + if info == nil || info.funcs.isInit == nil { + return nil + } + return info.funcs.isInit(p, info) + } + } +} + +func makeWeakMessageFieldCoder(fd protoreflect.FieldDescriptor) pointerCoderFuncs { + var once sync.Once + var messageType protoreflect.MessageType + lazyInit := func() { + once.Do(func() { + messageName := fd.Message().FullName() + messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) + }) + } + + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + m, ok := p.WeakFields().get(f.num) + if !ok { + return 0 + } + lazyInit() + if messageType == nil { + panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) + } + return sizeMessage(m, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + m, ok := p.WeakFields().get(f.num) + if !ok { + return b, nil + } + lazyInit() + if messageType == nil { + panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) + } + return appendMessage(b, m, f.wiretag, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + fs := p.WeakFields() + m, ok := fs.get(f.num) + if !ok { + lazyInit() + if messageType == nil { + return unmarshalOutput{}, errUnknown + } + m = messageType.New().Interface() + fs.set(f.num, m) + } + return consumeMessage(b, m, wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + m, ok := p.WeakFields().get(f.num) + if !ok { + return nil + } + return proto.CheckInitialized(m) + }, + merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + sm, ok := src.WeakFields().get(f.num) + if !ok { + return + } + dm, ok := dst.WeakFields().get(f.num) + if !ok { + lazyInit() + if messageType == nil { + panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) + } + dm = messageType.New().Interface() + dst.WeakFields().set(f.num, dm) + } + opts.Merge(dm, sm) + }, + } +} + +func makeMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeMessageInfo, + marshal: appendMessageInfo, + unmarshal: consumeMessageInfo, + merge: mergeMessage, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageInfo + } + return funcs + } else { + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + m := asMessage(p.AsValueOf(ft).Elem()) + return sizeMessage(m, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + m := asMessage(p.AsValueOf(ft).Elem()) + return appendMessage(b, m, f.wiretag, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + mp := p.AsValueOf(ft).Elem() + if mp.IsNil() { + mp.Set(reflect.New(ft.Elem())) + } + return consumeMessage(b, asMessage(mp), wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + m := asMessage(p.AsValueOf(ft).Elem()) + return proto.CheckInitialized(m) + }, + merge: mergeMessage, + } + } +} + +func sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return protowire.SizeBytes(f.mi.sizePointer(p.Elem(), opts)) + f.tagsize +} + +func appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + calculatedSize := f.mi.sizePointer(p.Elem(), opts) + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts) + if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + return b, err +} + +func consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if p.Elem().IsNil() { + p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) + } + o, err := f.mi.unmarshalPointer(v, p.Elem(), 0, opts) + if err != nil { + return out, err + } + out.n = n + out.initialized = o.initialized + return out, nil +} + +func isInitMessageInfo(p pointer, f *coderFieldInfo) error { + return f.mi.checkInitializedPointer(p.Elem()) +} + +func sizeMessage(m proto.Message, tagsize int, opts marshalOptions) int { + return protowire.SizeBytes(opts.Options().Size(m)) + tagsize +} + +func appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { + mopts := opts.Options() + calculatedSize := mopts.Size(m) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := mopts.MarshalAppend(b, m) + if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + return b, err +} + +func consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: v, + Message: m.ProtoReflect(), + }) + if err != nil { + return out, err + } + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func sizeMessageValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + m := v.Message().Interface() + return sizeMessage(m, tagsize, opts) +} + +func appendMessageValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + m := v.Message().Interface() + return appendMessage(b, m, wiretag, opts) +} + +func consumeMessageValue(b []byte, v protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { + m := v.Message().Interface() + out, err := consumeMessage(b, m, wtyp, opts) + return v, out, err +} + +func isInitMessageValue(v protoreflect.Value) error { + m := v.Message().Interface() + return proto.CheckInitialized(m) +} + +var coderMessageValue = valueCoderFuncs{ + size: sizeMessageValue, + marshal: appendMessageValue, + unmarshal: consumeMessageValue, + isInit: isInitMessageValue, + merge: mergeMessageValue, +} + +func sizeGroupValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + m := v.Message().Interface() + return sizeGroup(m, tagsize, opts) +} + +func appendGroupValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + m := v.Message().Interface() + return appendGroup(b, m, wiretag, opts) +} + +func consumeGroupValue(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { + m := v.Message().Interface() + out, err := consumeGroup(b, m, num, wtyp, opts) + return v, out, err +} + +var coderGroupValue = valueCoderFuncs{ + size: sizeGroupValue, + marshal: appendGroupValue, + unmarshal: consumeGroupValue, + isInit: isInitMessageValue, + merge: mergeMessageValue, +} + +func makeGroupFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + num := fd.Number() + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeGroupType, + marshal: appendGroupType, + unmarshal: consumeGroupType, + merge: mergeMessage, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageInfo + } + return funcs + } else { + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + m := asMessage(p.AsValueOf(ft).Elem()) + return sizeGroup(m, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + m := asMessage(p.AsValueOf(ft).Elem()) + return appendGroup(b, m, f.wiretag, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + mp := p.AsValueOf(ft).Elem() + if mp.IsNil() { + mp.Set(reflect.New(ft.Elem())) + } + return consumeGroup(b, asMessage(mp), num, wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + m := asMessage(p.AsValueOf(ft).Elem()) + return proto.CheckInitialized(m) + }, + merge: mergeMessage, + } + } +} + +func sizeGroupType(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return 2*f.tagsize + f.mi.sizePointer(p.Elem(), opts) +} + +func appendGroupType(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, f.wiretag) // start group + b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts) + b = protowire.AppendVarint(b, f.wiretag+1) // end group + return b, err +} + +func consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.StartGroupType { + return out, errUnknown + } + if p.Elem().IsNil() { + p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) + } + return f.mi.unmarshalPointer(b, p.Elem(), f.num, opts) +} + +func sizeGroup(m proto.Message, tagsize int, opts marshalOptions) int { + return 2*tagsize + opts.Options().Size(m) +} + +func appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) // start group + b, err := opts.Options().MarshalAppend(b, m) + b = protowire.AppendVarint(b, wiretag+1) // end group + return b, err +} + +func consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.StartGroupType { + return out, errUnknown + } + b, n := protowire.ConsumeGroup(num, b) + if n < 0 { + return out, errDecode + } + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: b, + Message: m.ProtoReflect(), + }) + if err != nil { + return out, err + } + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func makeMessageSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeMessageSliceInfo, + marshal: appendMessageSliceInfo, + unmarshal: consumeMessageSliceInfo, + merge: mergeMessageSlice, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageSliceInfo + } + return funcs + } + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return sizeMessageSlice(p, ft, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendMessageSlice(b, p, f.wiretag, ft, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + return consumeMessageSlice(b, p, ft, wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + return isInitMessageSlice(p, ft) + }, + merge: mergeMessageSlice, + } +} + +func sizeMessageSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { + s := p.PointerSlice() + n := 0 + for _, v := range s { + n += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize + } + return n +} + +func appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.PointerSlice() + var err error + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + siz := f.mi.sizePointer(v, opts) + b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) + b, err = f.mi.marshalAppendPointer(b, v, opts) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } + } + return b, nil +} + +func consumeMessageSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + m := reflect.New(f.mi.GoReflectType.Elem()).Interface() + mp := pointerOfIface(m) + o, err := f.mi.unmarshalPointer(v, mp, 0, opts) + if err != nil { + return out, err + } + p.AppendPointerSlice(mp) + out.n = n + out.initialized = o.initialized + return out, nil +} + +func isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error { + s := p.PointerSlice() + for _, v := range s { + if err := f.mi.checkInitializedPointer(v); err != nil { + return err + } + } + return nil +} + +func sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + s := p.PointerSlice() + n := 0 + for _, v := range s { + m := asMessage(v.AsValueOf(goType.Elem())) + n += protowire.SizeBytes(mopts.Size(m)) + tagsize + } + return n +} + +func appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) { + mopts := opts.Options() + s := p.PointerSlice() + var err error + for _, v := range s { + m := asMessage(v.AsValueOf(goType.Elem())) + b = protowire.AppendVarint(b, wiretag) + siz := mopts.Size(m) + b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) + b, err = mopts.MarshalAppend(b, m) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } + } + return b, nil +} + +func consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + mp := reflect.New(goType.Elem()) + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: v, + Message: asMessage(mp).ProtoReflect(), + }) + if err != nil { + return out, err + } + p.AppendPointerSlice(pointerOfValue(mp)) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func isInitMessageSlice(p pointer, goType reflect.Type) error { + s := p.PointerSlice() + for _, v := range s { + m := asMessage(v.AsValueOf(goType.Elem())) + if err := proto.CheckInitialized(m); err != nil { + return err + } + } + return nil +} + +// Slices of messages + +func sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + list := listv.List() + n := 0 + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + n += protowire.SizeBytes(mopts.Size(m)) + tagsize + } + return n +} + +func appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + mopts := opts.Options() + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + b = protowire.AppendVarint(b, wiretag) + siz := mopts.Size(m) + b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) + var err error + b, err = mopts.MarshalAppend(b, m) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } + } + return b, nil +} + +func consumeMessageSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + m := list.NewElement() + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: v, + Message: m.Message(), + }) + if err != nil { + return protoreflect.Value{}, out, err + } + list.Append(m) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return listv, out, nil +} + +func isInitMessageSliceValue(listv protoreflect.Value) error { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + if err := proto.CheckInitialized(m); err != nil { + return err + } + } + return nil +} + +var coderMessageSliceValue = valueCoderFuncs{ + size: sizeMessageSliceValue, + marshal: appendMessageSliceValue, + unmarshal: consumeMessageSliceValue, + isInit: isInitMessageSliceValue, + merge: mergeMessageListValue, +} + +func sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + list := listv.List() + n := 0 + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + n += 2*tagsize + mopts.Size(m) + } + return n +} + +func appendGroupSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + mopts := opts.Options() + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + b = protowire.AppendVarint(b, wiretag) // start group + var err error + b, err = mopts.MarshalAppend(b, m) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, wiretag+1) // end group + } + return b, nil +} + +func consumeGroupSliceValue(b []byte, listv protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.StartGroupType { + return protoreflect.Value{}, out, errUnknown + } + b, n := protowire.ConsumeGroup(num, b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + m := list.NewElement() + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: b, + Message: m.Message(), + }) + if err != nil { + return protoreflect.Value{}, out, err + } + list.Append(m) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return listv, out, nil +} + +var coderGroupSliceValue = valueCoderFuncs{ + size: sizeGroupSliceValue, + marshal: appendGroupSliceValue, + unmarshal: consumeGroupSliceValue, + isInit: isInitMessageSliceValue, + merge: mergeMessageListValue, +} + +func makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + num := fd.Number() + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeGroupSliceInfo, + marshal: appendGroupSliceInfo, + unmarshal: consumeGroupSliceInfo, + merge: mergeMessageSlice, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageSliceInfo + } + return funcs + } + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return sizeGroupSlice(p, ft, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendGroupSlice(b, p, f.wiretag, ft, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + return consumeGroupSlice(b, p, num, wtyp, ft, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + return isInitMessageSlice(p, ft) + }, + merge: mergeMessageSlice, + } +} + +func sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + s := p.PointerSlice() + n := 0 + for _, v := range s { + m := asMessage(v.AsValueOf(messageType.Elem())) + n += 2*tagsize + mopts.Size(m) + } + return n +} + +func appendGroupSlice(b []byte, p pointer, wiretag uint64, messageType reflect.Type, opts marshalOptions) ([]byte, error) { + s := p.PointerSlice() + var err error + for _, v := range s { + m := asMessage(v.AsValueOf(messageType.Elem())) + b = protowire.AppendVarint(b, wiretag) // start group + b, err = opts.Options().MarshalAppend(b, m) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, wiretag+1) // end group + } + return b, nil +} + +func consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire.Type, goType reflect.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.StartGroupType { + return out, errUnknown + } + b, n := protowire.ConsumeGroup(num, b) + if n < 0 { + return out, errDecode + } + mp := reflect.New(goType.Elem()) + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: b, + Message: asMessage(mp).ProtoReflect(), + }) + if err != nil { + return out, err + } + p.AppendPointerSlice(pointerOfValue(mp)) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func sizeGroupSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { + s := p.PointerSlice() + n := 0 + for _, v := range s { + n += 2*f.tagsize + f.mi.sizePointer(v, opts) + } + return n +} + +func appendGroupSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.PointerSlice() + var err error + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) // start group + b, err = f.mi.marshalAppendPointer(b, v, opts) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, f.wiretag+1) // end group + } + return b, nil +} + +func consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + if wtyp != protowire.StartGroupType { + return unmarshalOutput{}, errUnknown + } + m := reflect.New(f.mi.GoReflectType.Elem()).Interface() + mp := pointerOfIface(m) + out, err := f.mi.unmarshalPointer(b, mp, f.num, opts) + if err != nil { + return out, err + } + p.AppendPointerSlice(mp) + return out, nil +} + +func asMessage(v reflect.Value) protoreflect.ProtoMessage { + if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { + return m + } + return legacyWrapMessage(v).Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go new file mode 100644 index 0000000..f55dc01 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go @@ -0,0 +1,5724 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package impl + +import ( + "math" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// sizeBool returns the size of wire encoding a bool pointer as a Bool. +func sizeBool(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bool() + return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) +} + +// appendBool wire encodes a bool pointer as a Bool. +func appendBool(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bool() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + return b, nil +} + +// consumeBool wire decodes a bool pointer as a Bool. +func consumeBool(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Bool() = protowire.DecodeBool(v) + out.n = n + return out, nil +} + +var coderBool = pointerCoderFuncs{ + size: sizeBool, + marshal: appendBool, + unmarshal: consumeBool, + merge: mergeBool, +} + +// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool. +// The zero value is not encoded. +func sizeBoolNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bool() + if v == false { + return 0 + } + return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) +} + +// appendBoolNoZero wire encodes a bool pointer as a Bool. +// The zero value is not encoded. +func appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bool() + if v == false { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + return b, nil +} + +var coderBoolNoZero = pointerCoderFuncs{ + size: sizeBoolNoZero, + marshal: appendBoolNoZero, + unmarshal: consumeBool, + merge: mergeBoolNoZero, +} + +// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool. +// It panics if the pointer is nil. +func sizeBoolPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.BoolPtr() + return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) +} + +// appendBoolPtr wire encodes a *bool pointer as a Bool. +// It panics if the pointer is nil. +func appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.BoolPtr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + return b, nil +} + +// consumeBoolPtr wire decodes a *bool pointer as a Bool. +func consumeBoolPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.BoolPtr() + if *vp == nil { + *vp = new(bool) + } + **vp = protowire.DecodeBool(v) + out.n = n + return out, nil +} + +var coderBoolPtr = pointerCoderFuncs{ + size: sizeBoolPtr, + marshal: appendBoolPtr, + unmarshal: consumeBoolPtr, + merge: mergeBoolPtr, +} + +// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool. +func sizeBoolSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.BoolSlice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) + } + return size +} + +// appendBoolSlice encodes a []bool pointer as a repeated Bool. +func appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BoolSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + } + return b, nil +} + +// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool. +func consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.BoolSlice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growBoolSlice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, protowire.DecodeBool(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, protowire.DecodeBool(v)) + out.n = n + return out, nil +} + +var coderBoolSlice = pointerCoderFuncs{ + size: sizeBoolSlice, + marshal: appendBoolSlice, + unmarshal: consumeBoolSlice, + merge: mergeBoolSlice, +} + +// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool. +func sizeBoolPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.BoolSlice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeBool(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool. +func appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BoolSlice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeBool(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + } + return b, nil +} + +var coderBoolPackedSlice = pointerCoderFuncs{ + size: sizeBoolPackedSlice, + marshal: appendBoolPackedSlice, + unmarshal: consumeBoolSlice, + merge: mergeBoolSlice, +} + +// sizeBoolValue returns the size of wire encoding a bool value as a Bool. +func sizeBoolValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool())) +} + +// appendBoolValue encodes a bool value as a Bool. +func appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + return b, nil +} + +// consumeBoolValue decodes a bool value as a Bool. +func consumeBoolValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfBool(protowire.DecodeBool(v)), out, nil +} + +var coderBoolValue = valueCoderFuncs{ + size: sizeBoolValue, + marshal: appendBoolValue, + unmarshal: consumeBoolValue, + merge: mergeScalarValue, +} + +// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool. +func sizeBoolSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + } + return size +} + +// appendBoolSliceValue encodes a []bool value as a repeated Bool. +func appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + } + return b, nil +} + +// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool. +func consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + out.n = n + return listv, out, nil +} + +var coderBoolSliceValue = valueCoderFuncs{ + size: sizeBoolSliceValue, + marshal: appendBoolSliceValue, + unmarshal: consumeBoolSliceValue, + merge: mergeListValue, +} + +// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool. +func sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool. +func appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + } + return b, nil +} + +var coderBoolPackedSliceValue = valueCoderFuncs{ + size: sizeBoolPackedSliceValue, + marshal: appendBoolPackedSliceValue, + unmarshal: consumeBoolSliceValue, + merge: mergeListValue, +} + +// sizeEnumValue returns the size of wire encoding a value as a Enum. +func sizeEnumValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(v.Enum())) +} + +// appendEnumValue encodes a value as a Enum. +func appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Enum())) + return b, nil +} + +// consumeEnumValue decodes a value as a Enum. +func consumeEnumValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil +} + +var coderEnumValue = valueCoderFuncs{ + size: sizeEnumValue, + marshal: appendEnumValue, + unmarshal: consumeEnumValue, + merge: mergeScalarValue, +} + +// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum. +func sizeEnumSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(v.Enum())) + } + return size +} + +// appendEnumSliceValue encodes a [] value as a repeated Enum. +func appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Enum())) + } + return b, nil +} + +// consumeEnumSliceValue wire decodes a [] value as a repeated Enum. +func consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + out.n = n + return listv, out, nil +} + +var coderEnumSliceValue = valueCoderFuncs{ + size: sizeEnumSliceValue, + marshal: appendEnumSliceValue, + unmarshal: consumeEnumSliceValue, + merge: mergeListValue, +} + +// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum. +func sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Enum())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum. +func appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Enum())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(v.Enum())) + } + return b, nil +} + +var coderEnumPackedSliceValue = valueCoderFuncs{ + size: sizeEnumPackedSliceValue, + marshal: appendEnumPackedSliceValue, + unmarshal: consumeEnumSliceValue, + merge: mergeListValue, +} + +// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32. +func sizeInt32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt32 wire encodes a int32 pointer as a Int32. +func appendInt32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt32 wire decodes a int32 pointer as a Int32. +func consumeInt32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int32() = int32(v) + out.n = n + return out, nil +} + +var coderInt32 = pointerCoderFuncs{ + size: sizeInt32, + marshal: appendInt32, + unmarshal: consumeInt32, + merge: mergeInt32, +} + +// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32. +// The zero value is not encoded. +func sizeInt32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt32NoZero wire encodes a int32 pointer as a Int32. +// The zero value is not encoded. +func appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +var coderInt32NoZero = pointerCoderFuncs{ + size: sizeInt32NoZero, + marshal: appendInt32NoZero, + unmarshal: consumeInt32, + merge: mergeInt32NoZero, +} + +// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32. +// It panics if the pointer is nil. +func sizeInt32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int32Ptr() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt32Ptr wire encodes a *int32 pointer as a Int32. +// It panics if the pointer is nil. +func appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt32Ptr wire decodes a *int32 pointer as a Int32. +func consumeInt32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int32Ptr() + if *vp == nil { + *vp = new(int32) + } + **vp = int32(v) + out.n = n + return out, nil +} + +var coderInt32Ptr = pointerCoderFuncs{ + size: sizeInt32Ptr, + marshal: appendInt32Ptr, + unmarshal: consumeInt32Ptr, + merge: mergeInt32Ptr, +} + +// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32. +func sizeInt32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(uint64(v)) + } + return size +} + +// appendInt32Slice encodes a []int32 pointer as a repeated Int32. +func appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32. +func consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt32Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, int32(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int32(v)) + out.n = n + return out, nil +} + +var coderInt32Slice = pointerCoderFuncs{ + size: sizeInt32Slice, + marshal: appendInt32Slice, + unmarshal: consumeInt32Slice, + merge: mergeInt32Slice, +} + +// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32. +func sizeInt32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32. +func appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +var coderInt32PackedSlice = pointerCoderFuncs{ + size: sizeInt32PackedSlice, + marshal: appendInt32PackedSlice, + unmarshal: consumeInt32Slice, + merge: mergeInt32Slice, +} + +// sizeInt32Value returns the size of wire encoding a int32 value as a Int32. +func sizeInt32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(int32(v.Int()))) +} + +// appendInt32Value encodes a int32 value as a Int32. +func appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + return b, nil +} + +// consumeInt32Value decodes a int32 value as a Int32. +func consumeInt32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt32(int32(v)), out, nil +} + +var coderInt32Value = valueCoderFuncs{ + size: sizeInt32Value, + marshal: appendInt32Value, + unmarshal: consumeInt32Value, + merge: mergeScalarValue, +} + +// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32. +func sizeInt32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(int32(v.Int()))) + } + return size +} + +// appendInt32SliceValue encodes a []int32 value as a repeated Int32. +func appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + } + return b, nil +} + +// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32. +func consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + out.n = n + return listv, out, nil +} + +var coderInt32SliceValue = valueCoderFuncs{ + size: sizeInt32SliceValue, + marshal: appendInt32SliceValue, + unmarshal: consumeInt32SliceValue, + merge: mergeListValue, +} + +// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32. +func sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(int32(v.Int()))) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32. +func appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(int32(v.Int()))) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + } + return b, nil +} + +var coderInt32PackedSliceValue = valueCoderFuncs{ + size: sizeInt32PackedSliceValue, + marshal: appendInt32PackedSliceValue, + unmarshal: consumeInt32SliceValue, + merge: mergeListValue, +} + +// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32. +func sizeSint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) +} + +// appendSint32 wire encodes a int32 pointer as a Sint32. +func appendSint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + return b, nil +} + +// consumeSint32 wire decodes a int32 pointer as a Sint32. +func consumeSint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int32() = int32(protowire.DecodeZigZag(v & math.MaxUint32)) + out.n = n + return out, nil +} + +var coderSint32 = pointerCoderFuncs{ + size: sizeSint32, + marshal: appendSint32, + unmarshal: consumeSint32, + merge: mergeInt32, +} + +// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32. +// The zero value is not encoded. +func sizeSint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) +} + +// appendSint32NoZero wire encodes a int32 pointer as a Sint32. +// The zero value is not encoded. +func appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + return b, nil +} + +var coderSint32NoZero = pointerCoderFuncs{ + size: sizeSint32NoZero, + marshal: appendSint32NoZero, + unmarshal: consumeSint32, + merge: mergeInt32NoZero, +} + +// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32. +// It panics if the pointer is nil. +func sizeSint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int32Ptr() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) +} + +// appendSint32Ptr wire encodes a *int32 pointer as a Sint32. +// It panics if the pointer is nil. +func appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + return b, nil +} + +// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32. +func consumeSint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int32Ptr() + if *vp == nil { + *vp = new(int32) + } + **vp = int32(protowire.DecodeZigZag(v & math.MaxUint32)) + out.n = n + return out, nil +} + +var coderSint32Ptr = pointerCoderFuncs{ + size: sizeSint32Ptr, + marshal: appendSint32Ptr, + unmarshal: consumeSint32Ptr, + merge: mergeInt32Ptr, +} + +// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32. +func sizeSint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) + } + return size +} + +// appendSint32Slice encodes a []int32 pointer as a repeated Sint32. +func appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + } + return b, nil +} + +// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32. +func consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt32Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, int32(protowire.DecodeZigZag(v&math.MaxUint32))) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int32(protowire.DecodeZigZag(v&math.MaxUint32))) + out.n = n + return out, nil +} + +var coderSint32Slice = pointerCoderFuncs{ + size: sizeSint32Slice, + marshal: appendSint32Slice, + unmarshal: consumeSint32Slice, + merge: mergeInt32Slice, +} + +// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32. +func sizeSint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32. +func appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + } + return b, nil +} + +var coderSint32PackedSlice = pointerCoderFuncs{ + size: sizeSint32PackedSlice, + marshal: appendSint32PackedSlice, + unmarshal: consumeSint32Slice, + merge: mergeInt32Slice, +} + +// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32. +func sizeSint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) +} + +// appendSint32Value encodes a int32 value as a Sint32. +func appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + return b, nil +} + +// consumeSint32Value decodes a int32 value as a Sint32. +func consumeSint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), out, nil +} + +var coderSint32Value = valueCoderFuncs{ + size: sizeSint32Value, + marshal: appendSint32Value, + unmarshal: consumeSint32Value, + merge: mergeScalarValue, +} + +// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32. +func sizeSint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return size +} + +// appendSint32SliceValue encodes a []int32 value as a repeated Sint32. +func appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return b, nil +} + +// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32. +func consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + out.n = n + return listv, out, nil +} + +var coderSint32SliceValue = valueCoderFuncs{ + size: sizeSint32SliceValue, + marshal: appendSint32SliceValue, + unmarshal: consumeSint32SliceValue, + merge: mergeListValue, +} + +// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32. +func sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32. +func appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return b, nil +} + +var coderSint32PackedSliceValue = valueCoderFuncs{ + size: sizeSint32PackedSliceValue, + marshal: appendSint32PackedSliceValue, + unmarshal: consumeSint32SliceValue, + merge: mergeListValue, +} + +// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32. +func sizeUint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint32() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendUint32 wire encodes a uint32 pointer as a Uint32. +func appendUint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeUint32 wire decodes a uint32 pointer as a Uint32. +func consumeUint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Uint32() = uint32(v) + out.n = n + return out, nil +} + +var coderUint32 = pointerCoderFuncs{ + size: sizeUint32, + marshal: appendUint32, + unmarshal: consumeUint32, + merge: mergeUint32, +} + +// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32. +// The zero value is not encoded. +func sizeUint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendUint32NoZero wire encodes a uint32 pointer as a Uint32. +// The zero value is not encoded. +func appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +var coderUint32NoZero = pointerCoderFuncs{ + size: sizeUint32NoZero, + marshal: appendUint32NoZero, + unmarshal: consumeUint32, + merge: mergeUint32NoZero, +} + +// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32. +// It panics if the pointer is nil. +func sizeUint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Uint32Ptr() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32. +// It panics if the pointer is nil. +func appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32. +func consumeUint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Uint32Ptr() + if *vp == nil { + *vp = new(uint32) + } + **vp = uint32(v) + out.n = n + return out, nil +} + +var coderUint32Ptr = pointerCoderFuncs{ + size: sizeUint32Ptr, + marshal: appendUint32Ptr, + unmarshal: consumeUint32Ptr, + merge: mergeUint32Ptr, +} + +// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32. +func sizeUint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(uint64(v)) + } + return size +} + +// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32. +func appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32. +func consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growUint32Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, uint32(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, uint32(v)) + out.n = n + return out, nil +} + +var coderUint32Slice = pointerCoderFuncs{ + size: sizeUint32Slice, + marshal: appendUint32Slice, + unmarshal: consumeUint32Slice, + merge: mergeUint32Slice, +} + +// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32. +func sizeUint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32. +func appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +var coderUint32PackedSlice = pointerCoderFuncs{ + size: sizeUint32PackedSlice, + marshal: appendUint32PackedSlice, + unmarshal: consumeUint32Slice, + merge: mergeUint32Slice, +} + +// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32. +func sizeUint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(uint32(v.Uint()))) +} + +// appendUint32Value encodes a uint32 value as a Uint32. +func appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + return b, nil +} + +// consumeUint32Value decodes a uint32 value as a Uint32. +func consumeUint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint32(uint32(v)), out, nil +} + +var coderUint32Value = valueCoderFuncs{ + size: sizeUint32Value, + marshal: appendUint32Value, + unmarshal: consumeUint32Value, + merge: mergeScalarValue, +} + +// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32. +func sizeUint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(uint32(v.Uint()))) + } + return size +} + +// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32. +func appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + } + return b, nil +} + +// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32. +func consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + out.n = n + return listv, out, nil +} + +var coderUint32SliceValue = valueCoderFuncs{ + size: sizeUint32SliceValue, + marshal: appendUint32SliceValue, + unmarshal: consumeUint32SliceValue, + merge: mergeListValue, +} + +// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32. +func sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(uint32(v.Uint()))) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32. +func appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(uint32(v.Uint()))) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + } + return b, nil +} + +var coderUint32PackedSliceValue = valueCoderFuncs{ + size: sizeUint32PackedSliceValue, + marshal: appendUint32PackedSliceValue, + unmarshal: consumeUint32SliceValue, + merge: mergeListValue, +} + +// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64. +func sizeInt64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt64 wire encodes a int64 pointer as a Int64. +func appendInt64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt64 wire decodes a int64 pointer as a Int64. +func consumeInt64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int64() = int64(v) + out.n = n + return out, nil +} + +var coderInt64 = pointerCoderFuncs{ + size: sizeInt64, + marshal: appendInt64, + unmarshal: consumeInt64, + merge: mergeInt64, +} + +// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64. +// The zero value is not encoded. +func sizeInt64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt64NoZero wire encodes a int64 pointer as a Int64. +// The zero value is not encoded. +func appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +var coderInt64NoZero = pointerCoderFuncs{ + size: sizeInt64NoZero, + marshal: appendInt64NoZero, + unmarshal: consumeInt64, + merge: mergeInt64NoZero, +} + +// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64. +// It panics if the pointer is nil. +func sizeInt64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int64Ptr() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt64Ptr wire encodes a *int64 pointer as a Int64. +// It panics if the pointer is nil. +func appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt64Ptr wire decodes a *int64 pointer as a Int64. +func consumeInt64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int64Ptr() + if *vp == nil { + *vp = new(int64) + } + **vp = int64(v) + out.n = n + return out, nil +} + +var coderInt64Ptr = pointerCoderFuncs{ + size: sizeInt64Ptr, + marshal: appendInt64Ptr, + unmarshal: consumeInt64Ptr, + merge: mergeInt64Ptr, +} + +// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64. +func sizeInt64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(uint64(v)) + } + return size +} + +// appendInt64Slice encodes a []int64 pointer as a repeated Int64. +func appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64. +func consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt64Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, int64(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int64(v)) + out.n = n + return out, nil +} + +var coderInt64Slice = pointerCoderFuncs{ + size: sizeInt64Slice, + marshal: appendInt64Slice, + unmarshal: consumeInt64Slice, + merge: mergeInt64Slice, +} + +// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64. +func sizeInt64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64. +func appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +var coderInt64PackedSlice = pointerCoderFuncs{ + size: sizeInt64PackedSlice, + marshal: appendInt64PackedSlice, + unmarshal: consumeInt64Slice, + merge: mergeInt64Slice, +} + +// sizeInt64Value returns the size of wire encoding a int64 value as a Int64. +func sizeInt64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(v.Int())) +} + +// appendInt64Value encodes a int64 value as a Int64. +func appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Int())) + return b, nil +} + +// consumeInt64Value decodes a int64 value as a Int64. +func consumeInt64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt64(int64(v)), out, nil +} + +var coderInt64Value = valueCoderFuncs{ + size: sizeInt64Value, + marshal: appendInt64Value, + unmarshal: consumeInt64Value, + merge: mergeScalarValue, +} + +// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64. +func sizeInt64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(v.Int())) + } + return size +} + +// appendInt64SliceValue encodes a []int64 value as a repeated Int64. +func appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Int())) + } + return b, nil +} + +// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64. +func consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + out.n = n + return listv, out, nil +} + +var coderInt64SliceValue = valueCoderFuncs{ + size: sizeInt64SliceValue, + marshal: appendInt64SliceValue, + unmarshal: consumeInt64SliceValue, + merge: mergeListValue, +} + +// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64. +func sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Int())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64. +func appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Int())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(v.Int())) + } + return b, nil +} + +var coderInt64PackedSliceValue = valueCoderFuncs{ + size: sizeInt64PackedSliceValue, + marshal: appendInt64PackedSliceValue, + unmarshal: consumeInt64SliceValue, + merge: mergeListValue, +} + +// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64. +func sizeSint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) +} + +// appendSint64 wire encodes a int64 pointer as a Sint64. +func appendSint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + return b, nil +} + +// consumeSint64 wire decodes a int64 pointer as a Sint64. +func consumeSint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int64() = protowire.DecodeZigZag(v) + out.n = n + return out, nil +} + +var coderSint64 = pointerCoderFuncs{ + size: sizeSint64, + marshal: appendSint64, + unmarshal: consumeSint64, + merge: mergeInt64, +} + +// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64. +// The zero value is not encoded. +func sizeSint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) +} + +// appendSint64NoZero wire encodes a int64 pointer as a Sint64. +// The zero value is not encoded. +func appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + return b, nil +} + +var coderSint64NoZero = pointerCoderFuncs{ + size: sizeSint64NoZero, + marshal: appendSint64NoZero, + unmarshal: consumeSint64, + merge: mergeInt64NoZero, +} + +// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64. +// It panics if the pointer is nil. +func sizeSint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int64Ptr() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) +} + +// appendSint64Ptr wire encodes a *int64 pointer as a Sint64. +// It panics if the pointer is nil. +func appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + return b, nil +} + +// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64. +func consumeSint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int64Ptr() + if *vp == nil { + *vp = new(int64) + } + **vp = protowire.DecodeZigZag(v) + out.n = n + return out, nil +} + +var coderSint64Ptr = pointerCoderFuncs{ + size: sizeSint64Ptr, + marshal: appendSint64Ptr, + unmarshal: consumeSint64Ptr, + merge: mergeInt64Ptr, +} + +// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64. +func sizeSint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) + } + return size +} + +// appendSint64Slice encodes a []int64 pointer as a repeated Sint64. +func appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + } + return b, nil +} + +// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64. +func consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt64Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, protowire.DecodeZigZag(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, protowire.DecodeZigZag(v)) + out.n = n + return out, nil +} + +var coderSint64Slice = pointerCoderFuncs{ + size: sizeSint64Slice, + marshal: appendSint64Slice, + unmarshal: consumeSint64Slice, + merge: mergeInt64Slice, +} + +// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64. +func sizeSint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64. +func appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + } + return b, nil +} + +var coderSint64PackedSlice = pointerCoderFuncs{ + size: sizeSint64PackedSlice, + marshal: appendSint64PackedSlice, + unmarshal: consumeSint64Slice, + merge: mergeInt64Slice, +} + +// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64. +func sizeSint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) +} + +// appendSint64Value encodes a int64 value as a Sint64. +func appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + return b, nil +} + +// consumeSint64Value decodes a int64 value as a Sint64. +func consumeSint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), out, nil +} + +var coderSint64Value = valueCoderFuncs{ + size: sizeSint64Value, + marshal: appendSint64Value, + unmarshal: consumeSint64Value, + merge: mergeScalarValue, +} + +// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64. +func sizeSint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + } + return size +} + +// appendSint64SliceValue encodes a []int64 value as a repeated Sint64. +func appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + } + return b, nil +} + +// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64. +func consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + out.n = n + return listv, out, nil +} + +var coderSint64SliceValue = valueCoderFuncs{ + size: sizeSint64SliceValue, + marshal: appendSint64SliceValue, + unmarshal: consumeSint64SliceValue, + merge: mergeListValue, +} + +// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64. +func sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64. +func appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + } + return b, nil +} + +var coderSint64PackedSliceValue = valueCoderFuncs{ + size: sizeSint64PackedSliceValue, + marshal: appendSint64PackedSliceValue, + unmarshal: consumeSint64SliceValue, + merge: mergeListValue, +} + +// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64. +func sizeUint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint64() + return f.tagsize + protowire.SizeVarint(v) +} + +// appendUint64 wire encodes a uint64 pointer as a Uint64. +func appendUint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + return b, nil +} + +// consumeUint64 wire decodes a uint64 pointer as a Uint64. +func consumeUint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Uint64() = v + out.n = n + return out, nil +} + +var coderUint64 = pointerCoderFuncs{ + size: sizeUint64, + marshal: appendUint64, + unmarshal: consumeUint64, + merge: mergeUint64, +} + +// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64. +// The zero value is not encoded. +func sizeUint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(v) +} + +// appendUint64NoZero wire encodes a uint64 pointer as a Uint64. +// The zero value is not encoded. +func appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + return b, nil +} + +var coderUint64NoZero = pointerCoderFuncs{ + size: sizeUint64NoZero, + marshal: appendUint64NoZero, + unmarshal: consumeUint64, + merge: mergeUint64NoZero, +} + +// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64. +// It panics if the pointer is nil. +func sizeUint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Uint64Ptr() + return f.tagsize + protowire.SizeVarint(v) +} + +// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64. +// It panics if the pointer is nil. +func appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + return b, nil +} + +// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64. +func consumeUint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Uint64Ptr() + if *vp == nil { + *vp = new(uint64) + } + **vp = v + out.n = n + return out, nil +} + +var coderUint64Ptr = pointerCoderFuncs{ + size: sizeUint64Ptr, + marshal: appendUint64Ptr, + unmarshal: consumeUint64Ptr, + merge: mergeUint64Ptr, +} + +// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64. +func sizeUint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(v) + } + return size +} + +// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64. +func appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + } + return b, nil +} + +// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64. +func consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growUint64Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, v) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, v) + out.n = n + return out, nil +} + +var coderUint64Slice = pointerCoderFuncs{ + size: sizeUint64Slice, + marshal: appendUint64Slice, + unmarshal: consumeUint64Slice, + merge: mergeUint64Slice, +} + +// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64. +func sizeUint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(v) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64. +func appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(v) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, v) + } + return b, nil +} + +var coderUint64PackedSlice = pointerCoderFuncs{ + size: sizeUint64PackedSlice, + marshal: appendUint64PackedSlice, + unmarshal: consumeUint64Slice, + merge: mergeUint64Slice, +} + +// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64. +func sizeUint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(v.Uint()) +} + +// appendUint64Value encodes a uint64 value as a Uint64. +func appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, v.Uint()) + return b, nil +} + +// consumeUint64Value decodes a uint64 value as a Uint64. +func consumeUint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint64(v), out, nil +} + +var coderUint64Value = valueCoderFuncs{ + size: sizeUint64Value, + marshal: appendUint64Value, + unmarshal: consumeUint64Value, + merge: mergeScalarValue, +} + +// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64. +func sizeUint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(v.Uint()) + } + return size +} + +// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64. +func appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, v.Uint()) + } + return b, nil +} + +// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64. +func consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + out.n = n + return listv, out, nil +} + +var coderUint64SliceValue = valueCoderFuncs{ + size: sizeUint64SliceValue, + marshal: appendUint64SliceValue, + unmarshal: consumeUint64SliceValue, + merge: mergeListValue, +} + +// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64. +func sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(v.Uint()) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64. +func appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(v.Uint()) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, v.Uint()) + } + return b, nil +} + +var coderUint64PackedSliceValue = valueCoderFuncs{ + size: sizeUint64PackedSliceValue, + marshal: appendUint64PackedSliceValue, + unmarshal: consumeUint64SliceValue, + merge: mergeListValue, +} + +// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32. +func sizeSfixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed32() +} + +// appendSfixed32 wire encodes a int32 pointer as a Sfixed32. +func appendSfixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + return b, nil +} + +// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32. +func consumeSfixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *p.Int32() = int32(v) + out.n = n + return out, nil +} + +var coderSfixed32 = pointerCoderFuncs{ + size: sizeSfixed32, + marshal: appendSfixed32, + unmarshal: consumeSfixed32, + merge: mergeInt32, +} + +// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32. +// The zero value is not encoded. +func sizeSfixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed32() +} + +// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32. +// The zero value is not encoded. +func appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + return b, nil +} + +var coderSfixed32NoZero = pointerCoderFuncs{ + size: sizeSfixed32NoZero, + marshal: appendSfixed32NoZero, + unmarshal: consumeSfixed32, + merge: mergeInt32NoZero, +} + +// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32. +// It panics if the pointer is nil. +func sizeSfixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed32() +} + +// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32. +// It panics if the pointer is nil. +func appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + return b, nil +} + +// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32. +func consumeSfixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + vp := p.Int32Ptr() + if *vp == nil { + *vp = new(int32) + } + **vp = int32(v) + out.n = n + return out, nil +} + +var coderSfixed32Ptr = pointerCoderFuncs{ + size: sizeSfixed32Ptr, + marshal: appendSfixed32Ptr, + unmarshal: consumeSfixed32Ptr, + merge: mergeInt32Ptr, +} + +// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32. +func sizeSfixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed32()) + return size +} + +// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32. +func appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + } + return b, nil +} + +// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32. +func consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growInt32Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + s = append(s, int32(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int32(v)) + out.n = n + return out, nil +} + +var coderSfixed32Slice = pointerCoderFuncs{ + size: sizeSfixed32Slice, + marshal: appendSfixed32Slice, + unmarshal: consumeSfixed32Slice, + merge: mergeInt32Slice, +} + +// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32. +func sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed32() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32. +func appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed32(b, uint32(v)) + } + return b, nil +} + +var coderSfixed32PackedSlice = pointerCoderFuncs{ + size: sizeSfixed32PackedSlice, + marshal: appendSfixed32PackedSlice, + unmarshal: consumeSfixed32Slice, + merge: mergeInt32Slice, +} + +// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32. +func sizeSfixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed32() +} + +// appendSfixed32Value encodes a int32 value as a Sfixed32. +func appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Int())) + return b, nil +} + +// consumeSfixed32Value decodes a int32 value as a Sfixed32. +func consumeSfixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt32(int32(v)), out, nil +} + +var coderSfixed32Value = valueCoderFuncs{ + size: sizeSfixed32Value, + marshal: appendSfixed32Value, + unmarshal: consumeSfixed32Value, + merge: mergeScalarValue, +} + +// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32. +func sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed32()) + return size +} + +// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32. +func appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Int())) + } + return b, nil +} + +// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32. +func consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + out.n = n + return listv, out, nil +} + +var coderSfixed32SliceValue = valueCoderFuncs{ + size: sizeSfixed32SliceValue, + marshal: appendSfixed32SliceValue, + unmarshal: consumeSfixed32SliceValue, + merge: mergeListValue, +} + +// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32. +func sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed32() + return tagsize + protowire.SizeBytes(n) +} + +// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32. +func appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed32(b, uint32(v.Int())) + } + return b, nil +} + +var coderSfixed32PackedSliceValue = valueCoderFuncs{ + size: sizeSfixed32PackedSliceValue, + marshal: appendSfixed32PackedSliceValue, + unmarshal: consumeSfixed32SliceValue, + merge: mergeListValue, +} + +// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32. +func sizeFixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed32() +} + +// appendFixed32 wire encodes a uint32 pointer as a Fixed32. +func appendFixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + return b, nil +} + +// consumeFixed32 wire decodes a uint32 pointer as a Fixed32. +func consumeFixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *p.Uint32() = v + out.n = n + return out, nil +} + +var coderFixed32 = pointerCoderFuncs{ + size: sizeFixed32, + marshal: appendFixed32, + unmarshal: consumeFixed32, + merge: mergeUint32, +} + +// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32. +// The zero value is not encoded. +func sizeFixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed32() +} + +// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32. +// The zero value is not encoded. +func appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + return b, nil +} + +var coderFixed32NoZero = pointerCoderFuncs{ + size: sizeFixed32NoZero, + marshal: appendFixed32NoZero, + unmarshal: consumeFixed32, + merge: mergeUint32NoZero, +} + +// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32. +// It panics if the pointer is nil. +func sizeFixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed32() +} + +// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32. +// It panics if the pointer is nil. +func appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + return b, nil +} + +// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32. +func consumeFixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + vp := p.Uint32Ptr() + if *vp == nil { + *vp = new(uint32) + } + **vp = v + out.n = n + return out, nil +} + +var coderFixed32Ptr = pointerCoderFuncs{ + size: sizeFixed32Ptr, + marshal: appendFixed32Ptr, + unmarshal: consumeFixed32Ptr, + merge: mergeUint32Ptr, +} + +// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32. +func sizeFixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed32()) + return size +} + +// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32. +func appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + } + return b, nil +} + +// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32. +func consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growUint32Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + s = append(s, v) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, v) + out.n = n + return out, nil +} + +var coderFixed32Slice = pointerCoderFuncs{ + size: sizeFixed32Slice, + marshal: appendFixed32Slice, + unmarshal: consumeFixed32Slice, + merge: mergeUint32Slice, +} + +// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32. +func sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed32() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32. +func appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed32(b, v) + } + return b, nil +} + +var coderFixed32PackedSlice = pointerCoderFuncs{ + size: sizeFixed32PackedSlice, + marshal: appendFixed32PackedSlice, + unmarshal: consumeFixed32Slice, + merge: mergeUint32Slice, +} + +// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32. +func sizeFixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed32() +} + +// appendFixed32Value encodes a uint32 value as a Fixed32. +func appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Uint())) + return b, nil +} + +// consumeFixed32Value decodes a uint32 value as a Fixed32. +func consumeFixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint32(uint32(v)), out, nil +} + +var coderFixed32Value = valueCoderFuncs{ + size: sizeFixed32Value, + marshal: appendFixed32Value, + unmarshal: consumeFixed32Value, + merge: mergeScalarValue, +} + +// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32. +func sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed32()) + return size +} + +// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32. +func appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Uint())) + } + return b, nil +} + +// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32. +func consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + out.n = n + return listv, out, nil +} + +var coderFixed32SliceValue = valueCoderFuncs{ + size: sizeFixed32SliceValue, + marshal: appendFixed32SliceValue, + unmarshal: consumeFixed32SliceValue, + merge: mergeListValue, +} + +// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32. +func sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed32() + return tagsize + protowire.SizeBytes(n) +} + +// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32. +func appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed32(b, uint32(v.Uint())) + } + return b, nil +} + +var coderFixed32PackedSliceValue = valueCoderFuncs{ + size: sizeFixed32PackedSliceValue, + marshal: appendFixed32PackedSliceValue, + unmarshal: consumeFixed32SliceValue, + merge: mergeListValue, +} + +// sizeFloat returns the size of wire encoding a float32 pointer as a Float. +func sizeFloat(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed32() +} + +// appendFloat wire encodes a float32 pointer as a Float. +func appendFloat(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + return b, nil +} + +// consumeFloat wire decodes a float32 pointer as a Float. +func consumeFloat(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *p.Float32() = math.Float32frombits(v) + out.n = n + return out, nil +} + +var coderFloat = pointerCoderFuncs{ + size: sizeFloat, + marshal: appendFloat, + unmarshal: consumeFloat, + merge: mergeFloat32, +} + +// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float. +// The zero value is not encoded. +func sizeFloatNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Float32() + if v == 0 && !math.Signbit(float64(v)) { + return 0 + } + return f.tagsize + protowire.SizeFixed32() +} + +// appendFloatNoZero wire encodes a float32 pointer as a Float. +// The zero value is not encoded. +func appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float32() + if v == 0 && !math.Signbit(float64(v)) { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + return b, nil +} + +var coderFloatNoZero = pointerCoderFuncs{ + size: sizeFloatNoZero, + marshal: appendFloatNoZero, + unmarshal: consumeFloat, + merge: mergeFloat32NoZero, +} + +// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float. +// It panics if the pointer is nil. +func sizeFloatPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed32() +} + +// appendFloatPtr wire encodes a *float32 pointer as a Float. +// It panics if the pointer is nil. +func appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Float32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + return b, nil +} + +// consumeFloatPtr wire decodes a *float32 pointer as a Float. +func consumeFloatPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + vp := p.Float32Ptr() + if *vp == nil { + *vp = new(float32) + } + **vp = math.Float32frombits(v) + out.n = n + return out, nil +} + +var coderFloatPtr = pointerCoderFuncs{ + size: sizeFloatPtr, + marshal: appendFloatPtr, + unmarshal: consumeFloatPtr, + merge: mergeFloat32Ptr, +} + +// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float. +func sizeFloatSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float32Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed32()) + return size +} + +// appendFloatSlice encodes a []float32 pointer as a repeated Float. +func appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + } + return b, nil +} + +// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float. +func consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Float32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growFloat32Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + s = append(s, math.Float32frombits(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, math.Float32frombits(v)) + out.n = n + return out, nil +} + +var coderFloatSlice = pointerCoderFuncs{ + size: sizeFloatSlice, + marshal: appendFloatSlice, + unmarshal: consumeFloatSlice, + merge: mergeFloat32Slice, +} + +// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float. +func sizeFloatPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float32Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed32() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float. +func appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed32(b, math.Float32bits(v)) + } + return b, nil +} + +var coderFloatPackedSlice = pointerCoderFuncs{ + size: sizeFloatPackedSlice, + marshal: appendFloatPackedSlice, + unmarshal: consumeFloatSlice, + merge: mergeFloat32Slice, +} + +// sizeFloatValue returns the size of wire encoding a float32 value as a Float. +func sizeFloatValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed32() +} + +// appendFloatValue encodes a float32 value as a Float. +func appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + return b, nil +} + +// consumeFloatValue decodes a float32 value as a Float. +func consumeFloatValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil +} + +var coderFloatValue = valueCoderFuncs{ + size: sizeFloatValue, + marshal: appendFloatValue, + unmarshal: consumeFloatValue, + merge: mergeScalarValue, +} + +// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float. +func sizeFloatSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed32()) + return size +} + +// appendFloatSliceValue encodes a []float32 value as a repeated Float. +func appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + } + return b, nil +} + +// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float. +func consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + out.n = n + return listv, out, nil +} + +var coderFloatSliceValue = valueCoderFuncs{ + size: sizeFloatSliceValue, + marshal: appendFloatSliceValue, + unmarshal: consumeFloatSliceValue, + merge: mergeListValue, +} + +// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float. +func sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed32() + return tagsize + protowire.SizeBytes(n) +} + +// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float. +func appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + } + return b, nil +} + +var coderFloatPackedSliceValue = valueCoderFuncs{ + size: sizeFloatPackedSliceValue, + marshal: appendFloatPackedSliceValue, + unmarshal: consumeFloatSliceValue, + merge: mergeListValue, +} + +// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64. +func sizeSfixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed64() +} + +// appendSfixed64 wire encodes a int64 pointer as a Sfixed64. +func appendSfixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + return b, nil +} + +// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64. +func consumeSfixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *p.Int64() = int64(v) + out.n = n + return out, nil +} + +var coderSfixed64 = pointerCoderFuncs{ + size: sizeSfixed64, + marshal: appendSfixed64, + unmarshal: consumeSfixed64, + merge: mergeInt64, +} + +// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64. +// The zero value is not encoded. +func sizeSfixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed64() +} + +// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64. +// The zero value is not encoded. +func appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + return b, nil +} + +var coderSfixed64NoZero = pointerCoderFuncs{ + size: sizeSfixed64NoZero, + marshal: appendSfixed64NoZero, + unmarshal: consumeSfixed64, + merge: mergeInt64NoZero, +} + +// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64. +// It panics if the pointer is nil. +func sizeSfixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed64() +} + +// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64. +// It panics if the pointer is nil. +func appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + return b, nil +} + +// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64. +func consumeSfixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + vp := p.Int64Ptr() + if *vp == nil { + *vp = new(int64) + } + **vp = int64(v) + out.n = n + return out, nil +} + +var coderSfixed64Ptr = pointerCoderFuncs{ + size: sizeSfixed64Ptr, + marshal: appendSfixed64Ptr, + unmarshal: consumeSfixed64Ptr, + merge: mergeInt64Ptr, +} + +// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64. +func sizeSfixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed64()) + return size +} + +// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64. +func appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + } + return b, nil +} + +// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64. +func consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growInt64Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + s = append(s, int64(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int64(v)) + out.n = n + return out, nil +} + +var coderSfixed64Slice = pointerCoderFuncs{ + size: sizeSfixed64Slice, + marshal: appendSfixed64Slice, + unmarshal: consumeSfixed64Slice, + merge: mergeInt64Slice, +} + +// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64. +func sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed64() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64. +func appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed64(b, uint64(v)) + } + return b, nil +} + +var coderSfixed64PackedSlice = pointerCoderFuncs{ + size: sizeSfixed64PackedSlice, + marshal: appendSfixed64PackedSlice, + unmarshal: consumeSfixed64Slice, + merge: mergeInt64Slice, +} + +// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64. +func sizeSfixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed64() +} + +// appendSfixed64Value encodes a int64 value as a Sfixed64. +func appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, uint64(v.Int())) + return b, nil +} + +// consumeSfixed64Value decodes a int64 value as a Sfixed64. +func consumeSfixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt64(int64(v)), out, nil +} + +var coderSfixed64Value = valueCoderFuncs{ + size: sizeSfixed64Value, + marshal: appendSfixed64Value, + unmarshal: consumeSfixed64Value, + merge: mergeScalarValue, +} + +// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64. +func sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed64()) + return size +} + +// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64. +func appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, uint64(v.Int())) + } + return b, nil +} + +// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64. +func consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + out.n = n + return listv, out, nil +} + +var coderSfixed64SliceValue = valueCoderFuncs{ + size: sizeSfixed64SliceValue, + marshal: appendSfixed64SliceValue, + unmarshal: consumeSfixed64SliceValue, + merge: mergeListValue, +} + +// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64. +func sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed64() + return tagsize + protowire.SizeBytes(n) +} + +// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64. +func appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed64(b, uint64(v.Int())) + } + return b, nil +} + +var coderSfixed64PackedSliceValue = valueCoderFuncs{ + size: sizeSfixed64PackedSliceValue, + marshal: appendSfixed64PackedSliceValue, + unmarshal: consumeSfixed64SliceValue, + merge: mergeListValue, +} + +// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64. +func sizeFixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed64() +} + +// appendFixed64 wire encodes a uint64 pointer as a Fixed64. +func appendFixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + return b, nil +} + +// consumeFixed64 wire decodes a uint64 pointer as a Fixed64. +func consumeFixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *p.Uint64() = v + out.n = n + return out, nil +} + +var coderFixed64 = pointerCoderFuncs{ + size: sizeFixed64, + marshal: appendFixed64, + unmarshal: consumeFixed64, + merge: mergeUint64, +} + +// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64. +// The zero value is not encoded. +func sizeFixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed64() +} + +// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64. +// The zero value is not encoded. +func appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + return b, nil +} + +var coderFixed64NoZero = pointerCoderFuncs{ + size: sizeFixed64NoZero, + marshal: appendFixed64NoZero, + unmarshal: consumeFixed64, + merge: mergeUint64NoZero, +} + +// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64. +// It panics if the pointer is nil. +func sizeFixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed64() +} + +// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64. +// It panics if the pointer is nil. +func appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + return b, nil +} + +// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64. +func consumeFixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + vp := p.Uint64Ptr() + if *vp == nil { + *vp = new(uint64) + } + **vp = v + out.n = n + return out, nil +} + +var coderFixed64Ptr = pointerCoderFuncs{ + size: sizeFixed64Ptr, + marshal: appendFixed64Ptr, + unmarshal: consumeFixed64Ptr, + merge: mergeUint64Ptr, +} + +// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64. +func sizeFixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed64()) + return size +} + +// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64. +func appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + } + return b, nil +} + +// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64. +func consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growUint64Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + s = append(s, v) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, v) + out.n = n + return out, nil +} + +var coderFixed64Slice = pointerCoderFuncs{ + size: sizeFixed64Slice, + marshal: appendFixed64Slice, + unmarshal: consumeFixed64Slice, + merge: mergeUint64Slice, +} + +// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64. +func sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed64() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64. +func appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed64(b, v) + } + return b, nil +} + +var coderFixed64PackedSlice = pointerCoderFuncs{ + size: sizeFixed64PackedSlice, + marshal: appendFixed64PackedSlice, + unmarshal: consumeFixed64Slice, + merge: mergeUint64Slice, +} + +// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64. +func sizeFixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed64() +} + +// appendFixed64Value encodes a uint64 value as a Fixed64. +func appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, v.Uint()) + return b, nil +} + +// consumeFixed64Value decodes a uint64 value as a Fixed64. +func consumeFixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint64(v), out, nil +} + +var coderFixed64Value = valueCoderFuncs{ + size: sizeFixed64Value, + marshal: appendFixed64Value, + unmarshal: consumeFixed64Value, + merge: mergeScalarValue, +} + +// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64. +func sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed64()) + return size +} + +// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64. +func appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, v.Uint()) + } + return b, nil +} + +// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64. +func consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + out.n = n + return listv, out, nil +} + +var coderFixed64SliceValue = valueCoderFuncs{ + size: sizeFixed64SliceValue, + marshal: appendFixed64SliceValue, + unmarshal: consumeFixed64SliceValue, + merge: mergeListValue, +} + +// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64. +func sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed64() + return tagsize + protowire.SizeBytes(n) +} + +// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64. +func appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed64(b, v.Uint()) + } + return b, nil +} + +var coderFixed64PackedSliceValue = valueCoderFuncs{ + size: sizeFixed64PackedSliceValue, + marshal: appendFixed64PackedSliceValue, + unmarshal: consumeFixed64SliceValue, + merge: mergeListValue, +} + +// sizeDouble returns the size of wire encoding a float64 pointer as a Double. +func sizeDouble(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed64() +} + +// appendDouble wire encodes a float64 pointer as a Double. +func appendDouble(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + return b, nil +} + +// consumeDouble wire decodes a float64 pointer as a Double. +func consumeDouble(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *p.Float64() = math.Float64frombits(v) + out.n = n + return out, nil +} + +var coderDouble = pointerCoderFuncs{ + size: sizeDouble, + marshal: appendDouble, + unmarshal: consumeDouble, + merge: mergeFloat64, +} + +// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double. +// The zero value is not encoded. +func sizeDoubleNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Float64() + if v == 0 && !math.Signbit(float64(v)) { + return 0 + } + return f.tagsize + protowire.SizeFixed64() +} + +// appendDoubleNoZero wire encodes a float64 pointer as a Double. +// The zero value is not encoded. +func appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float64() + if v == 0 && !math.Signbit(float64(v)) { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + return b, nil +} + +var coderDoubleNoZero = pointerCoderFuncs{ + size: sizeDoubleNoZero, + marshal: appendDoubleNoZero, + unmarshal: consumeDouble, + merge: mergeFloat64NoZero, +} + +// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double. +// It panics if the pointer is nil. +func sizeDoublePtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed64() +} + +// appendDoublePtr wire encodes a *float64 pointer as a Double. +// It panics if the pointer is nil. +func appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Float64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + return b, nil +} + +// consumeDoublePtr wire decodes a *float64 pointer as a Double. +func consumeDoublePtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + vp := p.Float64Ptr() + if *vp == nil { + *vp = new(float64) + } + **vp = math.Float64frombits(v) + out.n = n + return out, nil +} + +var coderDoublePtr = pointerCoderFuncs{ + size: sizeDoublePtr, + marshal: appendDoublePtr, + unmarshal: consumeDoublePtr, + merge: mergeFloat64Ptr, +} + +// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double. +func sizeDoubleSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float64Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed64()) + return size +} + +// appendDoubleSlice encodes a []float64 pointer as a repeated Double. +func appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + } + return b, nil +} + +// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double. +func consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Float64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growFloat64Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + s = append(s, math.Float64frombits(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, math.Float64frombits(v)) + out.n = n + return out, nil +} + +var coderDoubleSlice = pointerCoderFuncs{ + size: sizeDoubleSlice, + marshal: appendDoubleSlice, + unmarshal: consumeDoubleSlice, + merge: mergeFloat64Slice, +} + +// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double. +func sizeDoublePackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float64Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed64() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double. +func appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed64(b, math.Float64bits(v)) + } + return b, nil +} + +var coderDoublePackedSlice = pointerCoderFuncs{ + size: sizeDoublePackedSlice, + marshal: appendDoublePackedSlice, + unmarshal: consumeDoubleSlice, + merge: mergeFloat64Slice, +} + +// sizeDoubleValue returns the size of wire encoding a float64 value as a Double. +func sizeDoubleValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed64() +} + +// appendDoubleValue encodes a float64 value as a Double. +func appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + return b, nil +} + +// consumeDoubleValue decodes a float64 value as a Double. +func consumeDoubleValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil +} + +var coderDoubleValue = valueCoderFuncs{ + size: sizeDoubleValue, + marshal: appendDoubleValue, + unmarshal: consumeDoubleValue, + merge: mergeScalarValue, +} + +// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double. +func sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed64()) + return size +} + +// appendDoubleSliceValue encodes a []float64 value as a repeated Double. +func appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + } + return b, nil +} + +// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double. +func consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + out.n = n + return listv, out, nil +} + +var coderDoubleSliceValue = valueCoderFuncs{ + size: sizeDoubleSliceValue, + marshal: appendDoubleSliceValue, + unmarshal: consumeDoubleSliceValue, + merge: mergeListValue, +} + +// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double. +func sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed64() + return tagsize + protowire.SizeBytes(n) +} + +// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double. +func appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + } + return b, nil +} + +var coderDoublePackedSliceValue = valueCoderFuncs{ + size: sizeDoublePackedSliceValue, + marshal: appendDoublePackedSliceValue, + unmarshal: consumeDoubleSliceValue, + merge: mergeListValue, +} + +// sizeString returns the size of wire encoding a string pointer as a String. +func sizeString(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.String() + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendString wire encodes a string pointer as a String. +func appendString(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + return b, nil +} + +// consumeString wire decodes a string pointer as a String. +func consumeString(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *p.String() = string(v) + out.n = n + return out, nil +} + +var coderString = pointerCoderFuncs{ + size: sizeString, + marshal: appendString, + unmarshal: consumeString, + merge: mergeString, +} + +// appendStringValidateUTF8 wire encodes a string pointer as a String. +func appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeStringValidateUTF8 wire decodes a string pointer as a String. +func consumeStringValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + *p.String() = string(v) + out.n = n + return out, nil +} + +var coderStringValidateUTF8 = pointerCoderFuncs{ + size: sizeString, + marshal: appendStringValidateUTF8, + unmarshal: consumeStringValidateUTF8, + merge: mergeString, +} + +// sizeStringNoZero returns the size of wire encoding a string pointer as a String. +// The zero value is not encoded. +func sizeStringNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.String() + if len(v) == 0 { + return 0 + } + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendStringNoZero wire encodes a string pointer as a String. +// The zero value is not encoded. +func appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + return b, nil +} + +var coderStringNoZero = pointerCoderFuncs{ + size: sizeStringNoZero, + marshal: appendStringNoZero, + unmarshal: consumeString, + merge: mergeStringNoZero, +} + +// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String. +// The zero value is not encoded. +func appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +var coderStringNoZeroValidateUTF8 = pointerCoderFuncs{ + size: sizeStringNoZero, + marshal: appendStringNoZeroValidateUTF8, + unmarshal: consumeStringValidateUTF8, + merge: mergeStringNoZero, +} + +// sizeStringPtr returns the size of wire encoding a *string pointer as a String. +// It panics if the pointer is nil. +func sizeStringPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.StringPtr() + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendStringPtr wire encodes a *string pointer as a String. +// It panics if the pointer is nil. +func appendStringPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.StringPtr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + return b, nil +} + +// consumeStringPtr wire decodes a *string pointer as a String. +func consumeStringPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + vp := p.StringPtr() + if *vp == nil { + *vp = new(string) + } + **vp = string(v) + out.n = n + return out, nil +} + +var coderStringPtr = pointerCoderFuncs{ + size: sizeStringPtr, + marshal: appendStringPtr, + unmarshal: consumeStringPtr, + merge: mergeStringPtr, +} + +// appendStringPtrValidateUTF8 wire encodes a *string pointer as a String. +// It panics if the pointer is nil. +func appendStringPtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.StringPtr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeStringPtrValidateUTF8 wire decodes a *string pointer as a String. +func consumeStringPtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + vp := p.StringPtr() + if *vp == nil { + *vp = new(string) + } + **vp = string(v) + out.n = n + return out, nil +} + +var coderStringPtrValidateUTF8 = pointerCoderFuncs{ + size: sizeStringPtr, + marshal: appendStringPtrValidateUTF8, + unmarshal: consumeStringPtrValidateUTF8, + merge: mergeStringPtr, +} + +// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String. +func sizeStringSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.StringSlice() + for _, v := range s { + size += f.tagsize + protowire.SizeBytes(len(v)) + } + return size +} + +// appendStringSlice encodes a []string pointer as a repeated String. +func appendStringSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.StringSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + } + return b, nil +} + +// consumeStringSlice wire decodes a []string pointer as a repeated String. +func consumeStringSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.StringSlice() + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, string(v)) + out.n = n + return out, nil +} + +var coderStringSlice = pointerCoderFuncs{ + size: sizeStringSlice, + marshal: appendStringSlice, + unmarshal: consumeStringSlice, + merge: mergeStringSlice, +} + +// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String. +func appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.StringSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + } + return b, nil +} + +// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String. +func consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + sp := p.StringSlice() + *sp = append(*sp, string(v)) + out.n = n + return out, nil +} + +var coderStringSliceValidateUTF8 = pointerCoderFuncs{ + size: sizeStringSlice, + marshal: appendStringSliceValidateUTF8, + unmarshal: consumeStringSliceValidateUTF8, + merge: mergeStringSlice, +} + +// sizeStringValue returns the size of wire encoding a string value as a String. +func sizeStringValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeBytes(len(v.String())) +} + +// appendStringValue encodes a string value as a String. +func appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendString(b, v.String()) + return b, nil +} + +// consumeStringValue decodes a string value as a String. +func consumeStringValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfString(string(v)), out, nil +} + +var coderStringValue = valueCoderFuncs{ + size: sizeStringValue, + marshal: appendStringValue, + unmarshal: consumeStringValue, + merge: mergeScalarValue, +} + +// appendStringValueValidateUTF8 encodes a string value as a String. +func appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendString(b, v.String()) + if !utf8.ValidString(v.String()) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeStringValueValidateUTF8 decodes a string value as a String. +func consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + if !utf8.Valid(v) { + return protoreflect.Value{}, out, errInvalidUTF8{} + } + out.n = n + return protoreflect.ValueOfString(string(v)), out, nil +} + +var coderStringValueValidateUTF8 = valueCoderFuncs{ + size: sizeStringValue, + marshal: appendStringValueValidateUTF8, + unmarshal: consumeStringValueValidateUTF8, + merge: mergeScalarValue, +} + +// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String. +func sizeStringSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeBytes(len(v.String())) + } + return size +} + +// appendStringSliceValue encodes a []string value as a repeated String. +func appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendString(b, v.String()) + } + return b, nil +} + +// consumeStringSliceValue wire decodes a []string value as a repeated String. +func consumeStringSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfString(string(v))) + out.n = n + return listv, out, nil +} + +var coderStringSliceValue = valueCoderFuncs{ + size: sizeStringSliceValue, + marshal: appendStringSliceValue, + unmarshal: consumeStringSliceValue, + merge: mergeListValue, +} + +// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes. +func sizeBytes(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bytes() + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendBytes wire encodes a []byte pointer as a Bytes. +func appendBytes(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + return b, nil +} + +// consumeBytes wire decodes a []byte pointer as a Bytes. +func consumeBytes(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *p.Bytes() = append(emptyBuf[:], v...) + out.n = n + return out, nil +} + +var coderBytes = pointerCoderFuncs{ + size: sizeBytes, + marshal: appendBytes, + unmarshal: consumeBytes, + merge: mergeBytes, +} + +// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes. +func appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + if !utf8.Valid(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes. +func consumeBytesValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + *p.Bytes() = append(emptyBuf[:], v...) + out.n = n + return out, nil +} + +var coderBytesValidateUTF8 = pointerCoderFuncs{ + size: sizeBytes, + marshal: appendBytesValidateUTF8, + unmarshal: consumeBytesValidateUTF8, + merge: mergeBytes, +} + +// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes. +// The zero value is not encoded. +func sizeBytesNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bytes() + if len(v) == 0 { + return 0 + } + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendBytesNoZero wire encodes a []byte pointer as a Bytes. +// The zero value is not encoded. +func appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + return b, nil +} + +// consumeBytesNoZero wire decodes a []byte pointer as a Bytes. +// The zero value is not decoded. +func consumeBytesNoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *p.Bytes() = append(([]byte)(nil), v...) + out.n = n + return out, nil +} + +var coderBytesNoZero = pointerCoderFuncs{ + size: sizeBytesNoZero, + marshal: appendBytesNoZero, + unmarshal: consumeBytesNoZero, + merge: mergeBytesNoZero, +} + +// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes. +// The zero value is not encoded. +func appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + if !utf8.Valid(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes. +func consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + *p.Bytes() = append(([]byte)(nil), v...) + out.n = n + return out, nil +} + +var coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{ + size: sizeBytesNoZero, + marshal: appendBytesNoZeroValidateUTF8, + unmarshal: consumeBytesNoZeroValidateUTF8, + merge: mergeBytesNoZero, +} + +// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes. +func sizeBytesSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.BytesSlice() + for _, v := range s { + size += f.tagsize + protowire.SizeBytes(len(v)) + } + return size +} + +// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes. +func appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BytesSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + } + return b, nil +} + +// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes. +func consumeBytesSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.BytesSlice() + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, append(emptyBuf[:], v...)) + out.n = n + return out, nil +} + +var coderBytesSlice = pointerCoderFuncs{ + size: sizeBytesSlice, + marshal: appendBytesSlice, + unmarshal: consumeBytesSlice, + merge: mergeBytesSlice, +} + +// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes. +func appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BytesSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + if !utf8.Valid(v) { + return b, errInvalidUTF8{} + } + } + return b, nil +} + +// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes. +func consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + sp := p.BytesSlice() + *sp = append(*sp, append(emptyBuf[:], v...)) + out.n = n + return out, nil +} + +var coderBytesSliceValidateUTF8 = pointerCoderFuncs{ + size: sizeBytesSlice, + marshal: appendBytesSliceValidateUTF8, + unmarshal: consumeBytesSliceValidateUTF8, + merge: mergeBytesSlice, +} + +// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes. +func sizeBytesValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeBytes(len(v.Bytes())) +} + +// appendBytesValue encodes a []byte value as a Bytes. +func appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendBytes(b, v.Bytes()) + return b, nil +} + +// consumeBytesValue decodes a []byte value as a Bytes. +func consumeBytesValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil +} + +var coderBytesValue = valueCoderFuncs{ + size: sizeBytesValue, + marshal: appendBytesValue, + unmarshal: consumeBytesValue, + merge: mergeBytesValue, +} + +// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes. +func sizeBytesSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeBytes(len(v.Bytes())) + } + return size +} + +// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes. +func appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendBytes(b, v.Bytes()) + } + return b, nil +} + +// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes. +func consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...))) + out.n = n + return listv, out, nil +} + +var coderBytesSliceValue = valueCoderFuncs{ + size: sizeBytesSliceValue, + marshal: appendBytesSliceValue, + unmarshal: consumeBytesSliceValue, + merge: mergeBytesListValue, +} + +// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices. +var emptyBuf [0]byte + +var wireTypes = map[protoreflect.Kind]protowire.Type{ + protoreflect.BoolKind: protowire.VarintType, + protoreflect.EnumKind: protowire.VarintType, + protoreflect.Int32Kind: protowire.VarintType, + protoreflect.Sint32Kind: protowire.VarintType, + protoreflect.Uint32Kind: protowire.VarintType, + protoreflect.Int64Kind: protowire.VarintType, + protoreflect.Sint64Kind: protowire.VarintType, + protoreflect.Uint64Kind: protowire.VarintType, + protoreflect.Sfixed32Kind: protowire.Fixed32Type, + protoreflect.Fixed32Kind: protowire.Fixed32Type, + protoreflect.FloatKind: protowire.Fixed32Type, + protoreflect.Sfixed64Kind: protowire.Fixed64Type, + protoreflect.Fixed64Kind: protowire.Fixed64Type, + protoreflect.DoubleKind: protowire.Fixed64Type, + protoreflect.StringKind: protowire.BytesType, + protoreflect.BytesKind: protowire.BytesType, + protoreflect.MessageKind: protowire.BytesType, + protoreflect.GroupKind: protowire.StartGroupType, +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go new file mode 100644 index 0000000..fb35f0b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go @@ -0,0 +1,399 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + "sort" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type mapInfo struct { + goType reflect.Type + keyWiretag uint64 + valWiretag uint64 + keyFuncs valueCoderFuncs + valFuncs valueCoderFuncs + keyZero protoreflect.Value + keyKind protoreflect.Kind + conv *mapConverter +} + +func encoderFuncsForMap(fd protoreflect.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) { + // TODO: Consider generating specialized map coders. + keyField := fd.MapKey() + valField := fd.MapValue() + keyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()]) + valWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()]) + keyFuncs := encoderFuncsForValue(keyField) + valFuncs := encoderFuncsForValue(valField) + conv := newMapConverter(ft, fd) + + mapi := &mapInfo{ + goType: ft, + keyWiretag: keyWiretag, + valWiretag: valWiretag, + keyFuncs: keyFuncs, + valFuncs: valFuncs, + keyZero: keyField.Default(), + keyKind: keyField.Kind(), + conv: conv, + } + if valField.Kind() == protoreflect.MessageKind { + valueMessage = getMessageInfo(ft.Elem()) + } + + funcs = pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + mp := p.AsValueOf(ft) + if mp.Elem().IsNil() { + mp.Elem().Set(reflect.MakeMap(mapi.goType)) + } + if f.mi == nil { + return consumeMap(b, mp.Elem(), wtyp, mapi, f, opts) + } else { + return consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts) + } + }, + } + switch valField.Kind() { + case protoreflect.MessageKind: + funcs.merge = mergeMapOfMessage + case protoreflect.BytesKind: + funcs.merge = mergeMapOfBytes + default: + funcs.merge = mergeMap + } + if valFuncs.isInit != nil { + funcs.isInit = func(p pointer, f *coderFieldInfo) error { + return isInitMap(p.AsValueOf(ft).Elem(), mapi, f) + } + } + return valueMessage, funcs +} + +const ( + mapKeyTagSize = 1 // field 1, tag size 1. + mapValTagSize = 1 // field 2, tag size 2. +) + +func sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int { + if mapv.Len() == 0 { + return 0 + } + n := 0 + iter := mapRange(mapv) + for iter.Next() { + key := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey() + keySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) + var valSize int + value := mapi.conv.valConv.PBValueOf(iter.Value()) + if f.mi == nil { + valSize = mapi.valFuncs.size(value, mapValTagSize, opts) + } else { + p := pointerOfValue(iter.Value()) + valSize += mapValTagSize + valSize += protowire.SizeBytes(f.mi.sizePointer(p, opts)) + } + n += f.tagsize + protowire.SizeBytes(keySize+valSize) + } + return n +} + +func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + var ( + key = mapi.keyZero + val = mapi.conv.valConv.New() + ) + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return out, errDecode + } + if num > protowire.MaxValidNumber { + return out, errDecode + } + b = b[n:] + err := errUnknown + switch num { + case genid.MapEntry_Key_field_number: + var v protoreflect.Value + var o unmarshalOutput + v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) + if err != nil { + break + } + key = v + n = o.n + case genid.MapEntry_Value_field_number: + var v protoreflect.Value + var o unmarshalOutput + v, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts) + if err != nil { + break + } + val = v + n = o.n + } + if err == errUnknown { + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, errDecode + } + } else if err != nil { + return out, err + } + b = b[n:] + } + mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val)) + out.n = n + return out, nil +} + +func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + var ( + key = mapi.keyZero + val = reflect.New(f.mi.GoReflectType.Elem()) + ) + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return out, errDecode + } + if num > protowire.MaxValidNumber { + return out, errDecode + } + b = b[n:] + err := errUnknown + switch num { + case 1: + var v protoreflect.Value + var o unmarshalOutput + v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) + if err != nil { + break + } + key = v + n = o.n + case 2: + if wtyp != protowire.BytesType { + break + } + var v []byte + v, n = protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + var o unmarshalOutput + o, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts) + if o.initialized { + // Consider this map item initialized so long as we see + // an initialized value. + out.initialized = true + } + } + if err == errUnknown { + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, errDecode + } + } else if err != nil { + return out, err + } + b = b[n:] + } + mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val) + out.n = n + return out, nil +} + +func appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + if f.mi == nil { + key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey() + val := mapi.conv.valConv.PBValueOf(valrv) + size := 0 + size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) + size += mapi.valFuncs.size(val, mapValTagSize, opts) + b = protowire.AppendVarint(b, uint64(size)) + before := len(b) + b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts) + if err != nil { + return nil, err + } + b, err = mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts) + if measuredSize := len(b) - before; size != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(size, measuredSize) + } + return b, err + } else { + key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey() + val := pointerOfValue(valrv) + valSize := f.mi.sizePointer(val, opts) + size := 0 + size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) + size += mapValTagSize + protowire.SizeBytes(valSize) + b = protowire.AppendVarint(b, uint64(size)) + b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts) + if err != nil { + return nil, err + } + b = protowire.AppendVarint(b, mapi.valWiretag) + b = protowire.AppendVarint(b, uint64(valSize)) + before := len(b) + b, err = f.mi.marshalAppendPointer(b, val, opts) + if measuredSize := len(b) - before; valSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(valSize, measuredSize) + } + return b, err + } +} + +func appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + if mapv.Len() == 0 { + return b, nil + } + if opts.Deterministic() { + return appendMapDeterministic(b, mapv, mapi, f, opts) + } + iter := mapRange(mapv) + for iter.Next() { + var err error + b = protowire.AppendVarint(b, f.wiretag) + b, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts) + if err != nil { + return b, err + } + } + return b, nil +} + +func appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + keys := mapv.MapKeys() + sort.Slice(keys, func(i, j int) bool { + switch keys[i].Kind() { + case reflect.Bool: + return !keys[i].Bool() && keys[j].Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return keys[i].Int() < keys[j].Int() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return keys[i].Uint() < keys[j].Uint() + case reflect.Float32, reflect.Float64: + return keys[i].Float() < keys[j].Float() + case reflect.String: + return keys[i].String() < keys[j].String() + default: + panic("invalid kind: " + keys[i].Kind().String()) + } + }) + for _, key := range keys { + var err error + b = protowire.AppendVarint(b, f.wiretag) + b, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts) + if err != nil { + return b, err + } + } + return b, nil +} + +func isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error { + if mi := f.mi; mi != nil { + mi.init() + if !mi.needsInitCheck { + return nil + } + iter := mapRange(mapv) + for iter.Next() { + val := pointerOfValue(iter.Value()) + if err := mi.checkInitializedPointer(val); err != nil { + return err + } + } + } else { + iter := mapRange(mapv) + for iter.Next() { + val := mapi.conv.valConv.PBValueOf(iter.Value()) + if err := mapi.valFuncs.isInit(val); err != nil { + return err + } + } + } + return nil +} + +func mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + dstm := dst.AsValueOf(f.ft).Elem() + srcm := src.AsValueOf(f.ft).Elem() + if srcm.Len() == 0 { + return + } + if dstm.IsNil() { + dstm.Set(reflect.MakeMap(f.ft)) + } + iter := mapRange(srcm) + for iter.Next() { + dstm.SetMapIndex(iter.Key(), iter.Value()) + } +} + +func mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + dstm := dst.AsValueOf(f.ft).Elem() + srcm := src.AsValueOf(f.ft).Elem() + if srcm.Len() == 0 { + return + } + if dstm.IsNil() { + dstm.Set(reflect.MakeMap(f.ft)) + } + iter := mapRange(srcm) + for iter.Next() { + dstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...))) + } +} + +func mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + dstm := dst.AsValueOf(f.ft).Elem() + srcm := src.AsValueOf(f.ft).Elem() + if srcm.Len() == 0 { + return + } + if dstm.IsNil() { + dstm.Set(reflect.MakeMap(f.ft)) + } + iter := mapRange(srcm) + for iter.Next() { + val := reflect.New(f.ft.Elem().Elem()) + if f.mi != nil { + f.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts) + } else { + opts.Merge(asMessage(val), asMessage(iter.Value())) + } + dstm.SetMapIndex(iter.Key(), val) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go new file mode 100644 index 0000000..4b15493 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.12 +// +build !go1.12 + +package impl + +import "reflect" + +type mapIter struct { + v reflect.Value + keys []reflect.Value +} + +// mapRange provides a less-efficient equivalent to +// the Go 1.12 reflect.Value.MapRange method. +func mapRange(v reflect.Value) *mapIter { + return &mapIter{v: v} +} + +func (i *mapIter) Next() bool { + if i.keys == nil { + i.keys = i.v.MapKeys() + } else { + i.keys = i.keys[1:] + } + return len(i.keys) > 0 +} + +func (i *mapIter) Key() reflect.Value { + return i.keys[0] +} + +func (i *mapIter) Value() reflect.Value { + return i.v.MapIndex(i.keys[0]) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go new file mode 100644 index 0000000..0b31b66 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.12 +// +build go1.12 + +package impl + +import "reflect" + +func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go new file mode 100644 index 0000000..6b2fdbb --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go @@ -0,0 +1,217 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "sort" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// coderMessageInfo contains per-message information used by the fast-path functions. +// This is a different type from MessageInfo to keep MessageInfo as general-purpose as +// possible. +type coderMessageInfo struct { + methods protoiface.Methods + + orderedCoderFields []*coderFieldInfo + denseCoderFields []*coderFieldInfo + coderFields map[protowire.Number]*coderFieldInfo + sizecacheOffset offset + unknownOffset offset + unknownPtrKind bool + extensionOffset offset + needsInitCheck bool + isMessageSet bool + numRequiredFields uint8 +} + +type coderFieldInfo struct { + funcs pointerCoderFuncs // fast-path per-field functions + mi *MessageInfo // field's message + ft reflect.Type + validation validationInfo // information used by message validation + num protoreflect.FieldNumber // field number + offset offset // struct field offset + wiretag uint64 // field tag (number + wire type) + tagsize int // size of the varint-encoded tag + isPointer bool // true if IsNil may be called on the struct field + isRequired bool // true if field is required +} + +func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { + mi.sizecacheOffset = invalidOffset + mi.unknownOffset = invalidOffset + mi.extensionOffset = invalidOffset + + if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType { + mi.sizecacheOffset = si.sizecacheOffset + } + if si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) { + mi.unknownOffset = si.unknownOffset + mi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr + } + if si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType { + mi.extensionOffset = si.extensionOffset + } + + mi.coderFields = make(map[protowire.Number]*coderFieldInfo) + fields := mi.Desc.Fields() + preallocFields := make([]coderFieldInfo, fields.Len()) + for i := 0; i < fields.Len(); i++ { + fd := fields.Get(i) + + fs := si.fieldsByNumber[fd.Number()] + isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() + if isOneof { + fs = si.oneofsByName[fd.ContainingOneof().Name()] + } + ft := fs.Type + var wiretag uint64 + if !fd.IsPacked() { + wiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()]) + } else { + wiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType) + } + var fieldOffset offset + var funcs pointerCoderFuncs + var childMessage *MessageInfo + switch { + case ft == nil: + // This never occurs for generated message types. + // It implies that a hand-crafted type has missing Go fields + // for specific protobuf message fields. + funcs = pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return 0 + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return nil, nil + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + panic("missing Go struct field for " + string(fd.FullName())) + }, + merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + } + case isOneof: + fieldOffset = offsetOf(fs, mi.Exporter) + case fd.IsWeak(): + fieldOffset = si.weakOffset + funcs = makeWeakMessageFieldCoder(fd) + default: + fieldOffset = offsetOf(fs, mi.Exporter) + childMessage, funcs = fieldCoder(fd, ft) + } + cf := &preallocFields[i] + *cf = coderFieldInfo{ + num: fd.Number(), + offset: fieldOffset, + wiretag: wiretag, + ft: ft, + tagsize: protowire.SizeVarint(wiretag), + funcs: funcs, + mi: childMessage, + validation: newFieldValidationInfo(mi, si, fd, ft), + isPointer: fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(), + isRequired: fd.Cardinality() == protoreflect.Required, + } + mi.orderedCoderFields = append(mi.orderedCoderFields, cf) + mi.coderFields[cf.num] = cf + } + for i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ { + if od := oneofs.Get(i); !od.IsSynthetic() { + mi.initOneofFieldCoders(od, si) + } + } + if messageset.IsMessageSet(mi.Desc) { + if !mi.extensionOffset.IsValid() { + panic(fmt.Sprintf("%v: MessageSet with no extensions field", mi.Desc.FullName())) + } + if !mi.unknownOffset.IsValid() { + panic(fmt.Sprintf("%v: MessageSet with no unknown field", mi.Desc.FullName())) + } + mi.isMessageSet = true + } + sort.Slice(mi.orderedCoderFields, func(i, j int) bool { + return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num + }) + + var maxDense protoreflect.FieldNumber + for _, cf := range mi.orderedCoderFields { + if cf.num >= 16 && cf.num >= 2*maxDense { + break + } + maxDense = cf.num + } + mi.denseCoderFields = make([]*coderFieldInfo, maxDense+1) + for _, cf := range mi.orderedCoderFields { + if int(cf.num) >= len(mi.denseCoderFields) { + break + } + mi.denseCoderFields[cf.num] = cf + } + + // To preserve compatibility with historic wire output, marshal oneofs last. + if mi.Desc.Oneofs().Len() > 0 { + sort.Slice(mi.orderedCoderFields, func(i, j int) bool { + fi := fields.ByNumber(mi.orderedCoderFields[i].num) + fj := fields.ByNumber(mi.orderedCoderFields[j].num) + return order.LegacyFieldOrder(fi, fj) + }) + } + + mi.needsInitCheck = needsInitCheck(mi.Desc) + if mi.methods.Marshal == nil && mi.methods.Size == nil { + mi.methods.Flags |= protoiface.SupportMarshalDeterministic + mi.methods.Marshal = mi.marshal + mi.methods.Size = mi.size + } + if mi.methods.Unmarshal == nil { + mi.methods.Flags |= protoiface.SupportUnmarshalDiscardUnknown + mi.methods.Unmarshal = mi.unmarshal + } + if mi.methods.CheckInitialized == nil { + mi.methods.CheckInitialized = mi.checkInitialized + } + if mi.methods.Merge == nil { + mi.methods.Merge = mi.merge + } +} + +// getUnknownBytes returns a *[]byte for the unknown fields. +// It is the caller's responsibility to check whether the pointer is nil. +// This function is specially designed to be inlineable. +func (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte { + if mi.unknownPtrKind { + return *p.Apply(mi.unknownOffset).BytesPtr() + } else { + return p.Apply(mi.unknownOffset).Bytes() + } +} + +// mutableUnknownBytes returns a *[]byte for the unknown fields. +// The returned pointer is guaranteed to not be nil. +func (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte { + if mi.unknownPtrKind { + bp := p.Apply(mi.unknownOffset).BytesPtr() + if *bp == nil { + *bp = new([]byte) + } + return *bp + } else { + return p.Apply(mi.unknownOffset).Bytes() + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go new file mode 100644 index 0000000..7a16ec1 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go @@ -0,0 +1,145 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "sort" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" +) + +func sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) { + if !flags.ProtoLegacy { + return 0 + } + + ext := *p.Apply(mi.extensionOffset).Extensions() + for _, x := range ext { + xi := getExtensionFieldInfo(x.Type()) + if xi.funcs.size == nil { + continue + } + num, _ := protowire.DecodeTag(xi.wiretag) + size += messageset.SizeField(num) + if fullyLazyExtensions(opts) { + // Don't expand the extension, instead use the buffer to calculate size + if lb := x.lazyBuffer(); lb != nil { + // We got hold of the buffer, so it's still lazy. + // Don't count the tag size in the extension buffer, it's already added. + size += protowire.SizeTag(messageset.FieldMessage) + len(lb) - xi.tagsize + continue + } + } + size += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts) + } + + if u := mi.getUnknownBytes(p); u != nil { + size += messageset.SizeUnknown(*u) + } + + return size +} + +func marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) { + if !flags.ProtoLegacy { + return b, errors.New("no support for message_set_wire_format") + } + + ext := *p.Apply(mi.extensionOffset).Extensions() + switch len(ext) { + case 0: + case 1: + // Fast-path for one extension: Don't bother sorting the keys. + for _, x := range ext { + var err error + b, err = marshalMessageSetField(mi, b, x, opts) + if err != nil { + return b, err + } + } + default: + // Sort the keys to provide a deterministic encoding. + // Not sure this is required, but the old code does it. + keys := make([]int, 0, len(ext)) + for k := range ext { + keys = append(keys, int(k)) + } + sort.Ints(keys) + for _, k := range keys { + var err error + b, err = marshalMessageSetField(mi, b, ext[int32(k)], opts) + if err != nil { + return b, err + } + } + } + + if u := mi.getUnknownBytes(p); u != nil { + var err error + b, err = messageset.AppendUnknown(b, *u) + if err != nil { + return b, err + } + } + + return b, nil +} + +func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) { + xi := getExtensionFieldInfo(x.Type()) + num, _ := protowire.DecodeTag(xi.wiretag) + b = messageset.AppendFieldStart(b, num) + + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + // The tag inside the lazy buffer is a different tag (the extension + // number), but what we need here is the tag for FieldMessage: + b = protowire.AppendVarint(b, protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType)) + b = append(b, lb[xi.tagsize:]...) + b = messageset.AppendFieldEnd(b) + return b, nil + } + } + + b, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts) + if err != nil { + return b, err + } + b = messageset.AppendFieldEnd(b) + return b, nil +} + +func unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) { + if !flags.ProtoLegacy { + return out, errors.New("no support for message_set_wire_format") + } + + ep := p.Apply(mi.extensionOffset).Extensions() + if *ep == nil { + *ep = make(map[int32]ExtensionField) + } + ext := *ep + initialized := true + err = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error { + o, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts) + if err == errUnknown { + u := mi.mutableUnknownBytes(p) + *u = protowire.AppendTag(*u, num, protowire.BytesType) + *u = append(*u, v...) + return nil + } + if !o.initialized { + initialized = false + } + return err + }) + out.n = len(b) + out.initialized = initialized + return out, err +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go new file mode 100644 index 0000000..145c577 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go @@ -0,0 +1,210 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package impl + +import ( + "reflect" + + "google.golang.org/protobuf/encoding/protowire" +) + +func sizeEnum(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) { + v := p.v.Elem().Int() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +func appendEnum(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := p.v.Elem().Int() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +func consumeEnum(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + p.v.Elem().SetInt(int64(v)) + out.n = n + return out, nil +} + +func mergeEnum(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + dst.v.Elem().Set(src.v.Elem()) +} + +var coderEnum = pointerCoderFuncs{ + size: sizeEnum, + marshal: appendEnum, + unmarshal: consumeEnum, + merge: mergeEnum, +} + +func sizeEnumNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + if p.v.Elem().Int() == 0 { + return 0 + } + return sizeEnum(p, f, opts) +} + +func appendEnumNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + if p.v.Elem().Int() == 0 { + return b, nil + } + return appendEnum(b, p, f, opts) +} + +func mergeEnumNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + if src.v.Elem().Int() != 0 { + dst.v.Elem().Set(src.v.Elem()) + } +} + +var coderEnumNoZero = pointerCoderFuncs{ + size: sizeEnumNoZero, + marshal: appendEnumNoZero, + unmarshal: consumeEnum, + merge: mergeEnumNoZero, +} + +func sizeEnumPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return sizeEnum(pointer{p.v.Elem()}, f, opts) +} + +func appendEnumPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendEnum(b, pointer{p.v.Elem()}, f, opts) +} + +func consumeEnumPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + if p.v.Elem().IsNil() { + p.v.Elem().Set(reflect.New(p.v.Elem().Type().Elem())) + } + return consumeEnum(b, pointer{p.v.Elem()}, wtyp, f, opts) +} + +func mergeEnumPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + if !src.v.Elem().IsNil() { + v := reflect.New(dst.v.Type().Elem().Elem()) + v.Elem().Set(src.v.Elem().Elem()) + dst.v.Elem().Set(v) + } +} + +var coderEnumPtr = pointerCoderFuncs{ + size: sizeEnumPtr, + marshal: appendEnumPtr, + unmarshal: consumeEnumPtr, + merge: mergeEnumPtr, +} + +func sizeEnumSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := p.v.Elem() + for i, llen := 0, s.Len(); i < llen; i++ { + size += protowire.SizeVarint(uint64(s.Index(i).Int())) + f.tagsize + } + return size +} + +func appendEnumSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.v.Elem() + for i, llen := 0, s.Len(); i < llen; i++ { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(s.Index(i).Int())) + } + return b, nil +} + +func consumeEnumSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + s := p.v.Elem() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + rv := reflect.New(s.Type().Elem()).Elem() + rv.SetInt(int64(v)) + s.Set(reflect.Append(s, rv)) + b = b[n:] + } + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + rv := reflect.New(s.Type().Elem()).Elem() + rv.SetInt(int64(v)) + s.Set(reflect.Append(s, rv)) + out.n = n + return out, nil +} + +func mergeEnumSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + dst.v.Elem().Set(reflect.AppendSlice(dst.v.Elem(), src.v.Elem())) +} + +var coderEnumSlice = pointerCoderFuncs{ + size: sizeEnumSlice, + marshal: appendEnumSlice, + unmarshal: consumeEnumSlice, + merge: mergeEnumSlice, +} + +func sizeEnumPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := p.v.Elem() + llen := s.Len() + if llen == 0 { + return 0 + } + n := 0 + for i := 0; i < llen; i++ { + n += protowire.SizeVarint(uint64(s.Index(i).Int())) + } + return f.tagsize + protowire.SizeBytes(n) +} + +func appendEnumPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.v.Elem() + llen := s.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for i := 0; i < llen; i++ { + n += protowire.SizeVarint(uint64(s.Index(i).Int())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + b = protowire.AppendVarint(b, uint64(s.Index(i).Int())) + } + return b, nil +} + +var coderEnumPackedSlice = pointerCoderFuncs{ + size: sizeEnumPackedSlice, + marshal: appendEnumPackedSlice, + unmarshal: consumeEnumSlice, + merge: mergeEnumSlice, +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go new file mode 100644 index 0000000..1307775 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go @@ -0,0 +1,557 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// pointerCoderFuncs is a set of pointer encoding functions. +type pointerCoderFuncs struct { + mi *MessageInfo + size func(p pointer, f *coderFieldInfo, opts marshalOptions) int + marshal func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) + unmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) + isInit func(p pointer, f *coderFieldInfo) error + merge func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) +} + +// valueCoderFuncs is a set of protoreflect.Value encoding functions. +type valueCoderFuncs struct { + size func(v protoreflect.Value, tagsize int, opts marshalOptions) int + marshal func(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) + unmarshal func(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) + isInit func(v protoreflect.Value) error + merge func(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value +} + +// fieldCoder returns pointer functions for a field, used for operating on +// struct fields. +func fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) { + switch { + case fd.IsMap(): + return encoderFuncsForMap(fd, ft) + case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): + // Repeated fields (not packed). + if ft.Kind() != reflect.Slice { + break + } + ft := ft.Elem() + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolSlice + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumSlice + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32Slice + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32Slice + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32Slice + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64Slice + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64Slice + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64Slice + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32Slice + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32Slice + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatSlice + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64Slice + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64Slice + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoubleSlice + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringSliceValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderStringSlice + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { + return nil, coderBytesSliceValidateUTF8 + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesSlice + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderStringSlice + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesSlice + } + case protoreflect.MessageKind: + return getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft) + case protoreflect.GroupKind: + return getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft) + } + case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): + // Packed repeated fields. + // + // Only repeated fields of primitive numeric types + // (Varint, Fixed32, or Fixed64 wire type) can be packed. + if ft.Kind() != reflect.Slice { + break + } + ft := ft.Elem() + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolPackedSlice + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumPackedSlice + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32PackedSlice + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32PackedSlice + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32PackedSlice + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64PackedSlice + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64PackedSlice + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64PackedSlice + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32PackedSlice + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32PackedSlice + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatPackedSlice + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64PackedSlice + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64PackedSlice + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoublePackedSlice + } + } + case fd.Kind() == protoreflect.MessageKind: + return getMessageInfo(ft), makeMessageFieldCoder(fd, ft) + case fd.Kind() == protoreflect.GroupKind: + return getMessageInfo(ft), makeGroupFieldCoder(fd, ft) + case !fd.HasPresence() && fd.ContainingOneof() == nil: + // Populated oneof fields always encode even if set to the zero value, + // which normally are not encoded in proto3. + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolNoZero + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumNoZero + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32NoZero + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32NoZero + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32NoZero + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64NoZero + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64NoZero + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64NoZero + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32NoZero + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32NoZero + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatNoZero + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64NoZero + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64NoZero + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoubleNoZero + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringNoZeroValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderStringNoZero + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { + return nil, coderBytesNoZeroValidateUTF8 + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesNoZero + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderStringNoZero + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesNoZero + } + } + case ft.Kind() == reflect.Ptr: + ft := ft.Elem() + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolPtr + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumPtr + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32Ptr + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32Ptr + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32Ptr + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64Ptr + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64Ptr + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64Ptr + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32Ptr + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32Ptr + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatPtr + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64Ptr + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64Ptr + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoublePtr + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringPtrValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderStringPtr + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderStringPtr + } + } + default: + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBool + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnum + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32 + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32 + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32 + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64 + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64 + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64 + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32 + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32 + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloat + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64 + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64 + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDouble + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderString + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { + return nil, coderBytesValidateUTF8 + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytes + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderString + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytes + } + } + } + panic(fmt.Sprintf("invalid type: no encoder for %v %v %v/%v", fd.FullName(), fd.Cardinality(), fd.Kind(), ft)) +} + +// encoderFuncsForValue returns value functions for a field, used for +// extension values and map encoding. +func encoderFuncsForValue(fd protoreflect.FieldDescriptor) valueCoderFuncs { + switch { + case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): + switch fd.Kind() { + case protoreflect.BoolKind: + return coderBoolSliceValue + case protoreflect.EnumKind: + return coderEnumSliceValue + case protoreflect.Int32Kind: + return coderInt32SliceValue + case protoreflect.Sint32Kind: + return coderSint32SliceValue + case protoreflect.Uint32Kind: + return coderUint32SliceValue + case protoreflect.Int64Kind: + return coderInt64SliceValue + case protoreflect.Sint64Kind: + return coderSint64SliceValue + case protoreflect.Uint64Kind: + return coderUint64SliceValue + case protoreflect.Sfixed32Kind: + return coderSfixed32SliceValue + case protoreflect.Fixed32Kind: + return coderFixed32SliceValue + case protoreflect.FloatKind: + return coderFloatSliceValue + case protoreflect.Sfixed64Kind: + return coderSfixed64SliceValue + case protoreflect.Fixed64Kind: + return coderFixed64SliceValue + case protoreflect.DoubleKind: + return coderDoubleSliceValue + case protoreflect.StringKind: + // We don't have a UTF-8 validating coder for repeated string fields. + // Value coders are used for extensions and maps. + // Extensions are never proto3, and maps never contain lists. + return coderStringSliceValue + case protoreflect.BytesKind: + return coderBytesSliceValue + case protoreflect.MessageKind: + return coderMessageSliceValue + case protoreflect.GroupKind: + return coderGroupSliceValue + } + case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): + switch fd.Kind() { + case protoreflect.BoolKind: + return coderBoolPackedSliceValue + case protoreflect.EnumKind: + return coderEnumPackedSliceValue + case protoreflect.Int32Kind: + return coderInt32PackedSliceValue + case protoreflect.Sint32Kind: + return coderSint32PackedSliceValue + case protoreflect.Uint32Kind: + return coderUint32PackedSliceValue + case protoreflect.Int64Kind: + return coderInt64PackedSliceValue + case protoreflect.Sint64Kind: + return coderSint64PackedSliceValue + case protoreflect.Uint64Kind: + return coderUint64PackedSliceValue + case protoreflect.Sfixed32Kind: + return coderSfixed32PackedSliceValue + case protoreflect.Fixed32Kind: + return coderFixed32PackedSliceValue + case protoreflect.FloatKind: + return coderFloatPackedSliceValue + case protoreflect.Sfixed64Kind: + return coderSfixed64PackedSliceValue + case protoreflect.Fixed64Kind: + return coderFixed64PackedSliceValue + case protoreflect.DoubleKind: + return coderDoublePackedSliceValue + } + default: + switch fd.Kind() { + default: + case protoreflect.BoolKind: + return coderBoolValue + case protoreflect.EnumKind: + return coderEnumValue + case protoreflect.Int32Kind: + return coderInt32Value + case protoreflect.Sint32Kind: + return coderSint32Value + case protoreflect.Uint32Kind: + return coderUint32Value + case protoreflect.Int64Kind: + return coderInt64Value + case protoreflect.Sint64Kind: + return coderSint64Value + case protoreflect.Uint64Kind: + return coderUint64Value + case protoreflect.Sfixed32Kind: + return coderSfixed32Value + case protoreflect.Fixed32Kind: + return coderFixed32Value + case protoreflect.FloatKind: + return coderFloatValue + case protoreflect.Sfixed64Kind: + return coderSfixed64Value + case protoreflect.Fixed64Kind: + return coderFixed64Value + case protoreflect.DoubleKind: + return coderDoubleValue + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + return coderStringValueValidateUTF8 + } + return coderStringValue + case protoreflect.BytesKind: + return coderBytesValue + case protoreflect.MessageKind: + return coderMessageValue + case protoreflect.GroupKind: + return coderGroupValue + } + } + panic(fmt.Sprintf("invalid field: no encoder for %v %v %v", fd.FullName(), fd.Cardinality(), fd.Kind())) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go new file mode 100644 index 0000000..757642e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go @@ -0,0 +1,18 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine +// +build !purego,!appengine + +package impl + +// When using unsafe pointers, we can just treat enum values as int32s. + +var ( + coderEnumNoZero = coderInt32NoZero + coderEnum = coderInt32 + coderEnumPtr = coderInt32Ptr + coderEnumSlice = coderInt32Slice + coderEnumPackedSlice = coderInt32PackedSlice +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go new file mode 100644 index 0000000..e06ece5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go @@ -0,0 +1,495 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// unwrapper unwraps the value to the underlying value. +// This is implemented by List and Map. +type unwrapper interface { + protoUnwrap() any +} + +// A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types. +type Converter interface { + // PBValueOf converts a reflect.Value to a protoreflect.Value. + PBValueOf(reflect.Value) protoreflect.Value + + // GoValueOf converts a protoreflect.Value to a reflect.Value. + GoValueOf(protoreflect.Value) reflect.Value + + // IsValidPB returns whether a protoreflect.Value is compatible with this type. + IsValidPB(protoreflect.Value) bool + + // IsValidGo returns whether a reflect.Value is compatible with this type. + IsValidGo(reflect.Value) bool + + // New returns a new field value. + // For scalars, it returns the default value of the field. + // For composite types, it returns a new mutable value. + New() protoreflect.Value + + // Zero returns a new field value. + // For scalars, it returns the default value of the field. + // For composite types, it returns an immutable, empty value. + Zero() protoreflect.Value +} + +// NewConverter matches a Go type with a protobuf field and returns a Converter +// that converts between the two. Enums must be a named int32 kind that +// implements protoreflect.Enum, and messages must be pointer to a named +// struct type that implements protoreflect.ProtoMessage. +// +// This matcher deliberately supports a wider range of Go types than what +// protoc-gen-go historically generated to be able to automatically wrap some +// v1 messages generated by other forks of protoc-gen-go. +func NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { + switch { + case fd.IsList(): + return newListConverter(t, fd) + case fd.IsMap(): + return newMapConverter(t, fd) + default: + return newSingularConverter(t, fd) + } +} + +var ( + boolType = reflect.TypeOf(bool(false)) + int32Type = reflect.TypeOf(int32(0)) + int64Type = reflect.TypeOf(int64(0)) + uint32Type = reflect.TypeOf(uint32(0)) + uint64Type = reflect.TypeOf(uint64(0)) + float32Type = reflect.TypeOf(float32(0)) + float64Type = reflect.TypeOf(float64(0)) + stringType = reflect.TypeOf(string("")) + bytesType = reflect.TypeOf([]byte(nil)) + byteType = reflect.TypeOf(byte(0)) +) + +var ( + boolZero = protoreflect.ValueOfBool(false) + int32Zero = protoreflect.ValueOfInt32(0) + int64Zero = protoreflect.ValueOfInt64(0) + uint32Zero = protoreflect.ValueOfUint32(0) + uint64Zero = protoreflect.ValueOfUint64(0) + float32Zero = protoreflect.ValueOfFloat32(0) + float64Zero = protoreflect.ValueOfFloat64(0) + stringZero = protoreflect.ValueOfString("") + bytesZero = protoreflect.ValueOfBytes(nil) +) + +func newSingularConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { + defVal := func(fd protoreflect.FieldDescriptor, zero protoreflect.Value) protoreflect.Value { + if fd.Cardinality() == protoreflect.Repeated { + // Default isn't defined for repeated fields. + return zero + } + return fd.Default() + } + switch fd.Kind() { + case protoreflect.BoolKind: + if t.Kind() == reflect.Bool { + return &boolConverter{t, defVal(fd, boolZero)} + } + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + if t.Kind() == reflect.Int32 { + return &int32Converter{t, defVal(fd, int32Zero)} + } + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + if t.Kind() == reflect.Int64 { + return &int64Converter{t, defVal(fd, int64Zero)} + } + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + if t.Kind() == reflect.Uint32 { + return &uint32Converter{t, defVal(fd, uint32Zero)} + } + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + if t.Kind() == reflect.Uint64 { + return &uint64Converter{t, defVal(fd, uint64Zero)} + } + case protoreflect.FloatKind: + if t.Kind() == reflect.Float32 { + return &float32Converter{t, defVal(fd, float32Zero)} + } + case protoreflect.DoubleKind: + if t.Kind() == reflect.Float64 { + return &float64Converter{t, defVal(fd, float64Zero)} + } + case protoreflect.StringKind: + if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { + return &stringConverter{t, defVal(fd, stringZero)} + } + case protoreflect.BytesKind: + if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { + return &bytesConverter{t, defVal(fd, bytesZero)} + } + case protoreflect.EnumKind: + // Handle enums, which must be a named int32 type. + if t.Kind() == reflect.Int32 { + return newEnumConverter(t, fd) + } + case protoreflect.MessageKind, protoreflect.GroupKind: + return newMessageConverter(t) + } + panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) +} + +type boolConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *boolConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfBool(v.Bool()) +} +func (c *boolConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(v.Bool()).Convert(c.goType) +} +func (c *boolConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(bool) + return ok +} +func (c *boolConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *boolConverter) New() protoreflect.Value { return c.def } +func (c *boolConverter) Zero() protoreflect.Value { return c.def } + +type int32Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *int32Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfInt32(int32(v.Int())) +} +func (c *int32Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(int32(v.Int())).Convert(c.goType) +} +func (c *int32Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(int32) + return ok +} +func (c *int32Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *int32Converter) New() protoreflect.Value { return c.def } +func (c *int32Converter) Zero() protoreflect.Value { return c.def } + +type int64Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *int64Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfInt64(int64(v.Int())) +} +func (c *int64Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(int64(v.Int())).Convert(c.goType) +} +func (c *int64Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(int64) + return ok +} +func (c *int64Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *int64Converter) New() protoreflect.Value { return c.def } +func (c *int64Converter) Zero() protoreflect.Value { return c.def } + +type uint32Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *uint32Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfUint32(uint32(v.Uint())) +} +func (c *uint32Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(uint32(v.Uint())).Convert(c.goType) +} +func (c *uint32Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(uint32) + return ok +} +func (c *uint32Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *uint32Converter) New() protoreflect.Value { return c.def } +func (c *uint32Converter) Zero() protoreflect.Value { return c.def } + +type uint64Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *uint64Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfUint64(uint64(v.Uint())) +} +func (c *uint64Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(uint64(v.Uint())).Convert(c.goType) +} +func (c *uint64Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(uint64) + return ok +} +func (c *uint64Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *uint64Converter) New() protoreflect.Value { return c.def } +func (c *uint64Converter) Zero() protoreflect.Value { return c.def } + +type float32Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *float32Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfFloat32(float32(v.Float())) +} +func (c *float32Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(float32(v.Float())).Convert(c.goType) +} +func (c *float32Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(float32) + return ok +} +func (c *float32Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *float32Converter) New() protoreflect.Value { return c.def } +func (c *float32Converter) Zero() protoreflect.Value { return c.def } + +type float64Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *float64Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfFloat64(float64(v.Float())) +} +func (c *float64Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(float64(v.Float())).Convert(c.goType) +} +func (c *float64Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(float64) + return ok +} +func (c *float64Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *float64Converter) New() protoreflect.Value { return c.def } +func (c *float64Converter) Zero() protoreflect.Value { return c.def } + +type stringConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfString(v.Convert(stringType).String()) +} +func (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value { + // pref.Value.String never panics, so we go through an interface + // conversion here to check the type. + s := v.Interface().(string) + if c.goType.Kind() == reflect.Slice && s == "" { + return reflect.Zero(c.goType) // ensure empty string is []byte(nil) + } + return reflect.ValueOf(s).Convert(c.goType) +} +func (c *stringConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(string) + return ok +} +func (c *stringConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *stringConverter) New() protoreflect.Value { return c.def } +func (c *stringConverter) Zero() protoreflect.Value { return c.def } + +type bytesConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *bytesConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + if c.goType.Kind() == reflect.String && v.Len() == 0 { + return protoreflect.ValueOfBytes(nil) // ensure empty string is []byte(nil) + } + return protoreflect.ValueOfBytes(v.Convert(bytesType).Bytes()) +} +func (c *bytesConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(v.Bytes()).Convert(c.goType) +} +func (c *bytesConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().([]byte) + return ok +} +func (c *bytesConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *bytesConverter) New() protoreflect.Value { return c.def } +func (c *bytesConverter) Zero() protoreflect.Value { return c.def } + +type enumConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func newEnumConverter(goType reflect.Type, fd protoreflect.FieldDescriptor) Converter { + var def protoreflect.Value + if fd.Cardinality() == protoreflect.Repeated { + def = protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number()) + } else { + def = fd.Default() + } + return &enumConverter{goType, def} +} + +func (c *enumConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v.Int())) +} + +func (c *enumConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(v.Enum()).Convert(c.goType) +} + +func (c *enumConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(protoreflect.EnumNumber) + return ok +} + +func (c *enumConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *enumConverter) New() protoreflect.Value { + return c.def +} + +func (c *enumConverter) Zero() protoreflect.Value { + return c.def +} + +type messageConverter struct { + goType reflect.Type +} + +func newMessageConverter(goType reflect.Type) Converter { + return &messageConverter{goType} +} + +func (c *messageConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + if c.isNonPointer() { + if v.CanAddr() { + v = v.Addr() // T => *T + } else { + v = reflect.Zero(reflect.PtrTo(v.Type())) + } + } + if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { + return protoreflect.ValueOfMessage(m.ProtoReflect()) + } + return protoreflect.ValueOfMessage(legacyWrapMessage(v)) +} + +func (c *messageConverter) GoValueOf(v protoreflect.Value) reflect.Value { + m := v.Message() + var rv reflect.Value + if u, ok := m.(unwrapper); ok { + rv = reflect.ValueOf(u.protoUnwrap()) + } else { + rv = reflect.ValueOf(m.Interface()) + } + if c.isNonPointer() { + if rv.Type() != reflect.PtrTo(c.goType) { + panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), reflect.PtrTo(c.goType))) + } + if !rv.IsNil() { + rv = rv.Elem() // *T => T + } else { + rv = reflect.Zero(rv.Type().Elem()) + } + } + if rv.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), c.goType)) + } + return rv +} + +func (c *messageConverter) IsValidPB(v protoreflect.Value) bool { + m := v.Message() + var rv reflect.Value + if u, ok := m.(unwrapper); ok { + rv = reflect.ValueOf(u.protoUnwrap()) + } else { + rv = reflect.ValueOf(m.Interface()) + } + if c.isNonPointer() { + return rv.Type() == reflect.PtrTo(c.goType) + } + return rv.Type() == c.goType +} + +func (c *messageConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *messageConverter) New() protoreflect.Value { + if c.isNonPointer() { + return c.PBValueOf(reflect.New(c.goType).Elem()) + } + return c.PBValueOf(reflect.New(c.goType.Elem())) +} + +func (c *messageConverter) Zero() protoreflect.Value { + return c.PBValueOf(reflect.Zero(c.goType)) +} + +// isNonPointer reports whether the type is a non-pointer type. +// This never occurs for generated message types. +func (c *messageConverter) isNonPointer() bool { + return c.goType.Kind() != reflect.Ptr +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go new file mode 100644 index 0000000..18cb96f --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go @@ -0,0 +1,141 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +func newListConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { + switch { + case t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice: + return &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)} + case t.Kind() == reflect.Slice: + return &listConverter{t, newSingularConverter(t.Elem(), fd)} + } + panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) +} + +type listConverter struct { + goType reflect.Type // []T + c Converter +} + +func (c *listConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + pv := reflect.New(c.goType) + pv.Elem().Set(v) + return protoreflect.ValueOfList(&listReflect{pv, c.c}) +} + +func (c *listConverter) GoValueOf(v protoreflect.Value) reflect.Value { + rv := v.List().(*listReflect).v + if rv.IsNil() { + return reflect.Zero(c.goType) + } + return rv.Elem() +} + +func (c *listConverter) IsValidPB(v protoreflect.Value) bool { + list, ok := v.Interface().(*listReflect) + if !ok { + return false + } + return list.v.Type().Elem() == c.goType +} + +func (c *listConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *listConverter) New() protoreflect.Value { + return protoreflect.ValueOfList(&listReflect{reflect.New(c.goType), c.c}) +} + +func (c *listConverter) Zero() protoreflect.Value { + return protoreflect.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c}) +} + +type listPtrConverter struct { + goType reflect.Type // *[]T + c Converter +} + +func (c *listPtrConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfList(&listReflect{v, c.c}) +} + +func (c *listPtrConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return v.List().(*listReflect).v +} + +func (c *listPtrConverter) IsValidPB(v protoreflect.Value) bool { + list, ok := v.Interface().(*listReflect) + if !ok { + return false + } + return list.v.Type() == c.goType +} + +func (c *listPtrConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *listPtrConverter) New() protoreflect.Value { + return c.PBValueOf(reflect.New(c.goType.Elem())) +} + +func (c *listPtrConverter) Zero() protoreflect.Value { + return c.PBValueOf(reflect.Zero(c.goType)) +} + +type listReflect struct { + v reflect.Value // *[]T + conv Converter +} + +func (ls *listReflect) Len() int { + if ls.v.IsNil() { + return 0 + } + return ls.v.Elem().Len() +} +func (ls *listReflect) Get(i int) protoreflect.Value { + return ls.conv.PBValueOf(ls.v.Elem().Index(i)) +} +func (ls *listReflect) Set(i int, v protoreflect.Value) { + ls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v)) +} +func (ls *listReflect) Append(v protoreflect.Value) { + ls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v))) +} +func (ls *listReflect) AppendMutable() protoreflect.Value { + if _, ok := ls.conv.(*messageConverter); !ok { + panic("invalid AppendMutable on list with non-message type") + } + v := ls.NewElement() + ls.Append(v) + return v +} +func (ls *listReflect) Truncate(i int) { + ls.v.Elem().Set(ls.v.Elem().Slice(0, i)) +} +func (ls *listReflect) NewElement() protoreflect.Value { + return ls.conv.New() +} +func (ls *listReflect) IsValid() bool { + return !ls.v.IsNil() +} +func (ls *listReflect) protoUnwrap() any { + return ls.v.Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go new file mode 100644 index 0000000..304244a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go @@ -0,0 +1,121 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type mapConverter struct { + goType reflect.Type // map[K]V + keyConv, valConv Converter +} + +func newMapConverter(t reflect.Type, fd protoreflect.FieldDescriptor) *mapConverter { + if t.Kind() != reflect.Map { + panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) + } + return &mapConverter{ + goType: t, + keyConv: newSingularConverter(t.Key(), fd.MapKey()), + valConv: newSingularConverter(t.Elem(), fd.MapValue()), + } +} + +func (c *mapConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv}) +} + +func (c *mapConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return v.Map().(*mapReflect).v +} + +func (c *mapConverter) IsValidPB(v protoreflect.Value) bool { + mapv, ok := v.Interface().(*mapReflect) + if !ok { + return false + } + return mapv.v.Type() == c.goType +} + +func (c *mapConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *mapConverter) New() protoreflect.Value { + return c.PBValueOf(reflect.MakeMap(c.goType)) +} + +func (c *mapConverter) Zero() protoreflect.Value { + return c.PBValueOf(reflect.Zero(c.goType)) +} + +type mapReflect struct { + v reflect.Value // map[K]V + keyConv Converter + valConv Converter +} + +func (ms *mapReflect) Len() int { + return ms.v.Len() +} +func (ms *mapReflect) Has(k protoreflect.MapKey) bool { + rk := ms.keyConv.GoValueOf(k.Value()) + rv := ms.v.MapIndex(rk) + return rv.IsValid() +} +func (ms *mapReflect) Get(k protoreflect.MapKey) protoreflect.Value { + rk := ms.keyConv.GoValueOf(k.Value()) + rv := ms.v.MapIndex(rk) + if !rv.IsValid() { + return protoreflect.Value{} + } + return ms.valConv.PBValueOf(rv) +} +func (ms *mapReflect) Set(k protoreflect.MapKey, v protoreflect.Value) { + rk := ms.keyConv.GoValueOf(k.Value()) + rv := ms.valConv.GoValueOf(v) + ms.v.SetMapIndex(rk, rv) +} +func (ms *mapReflect) Clear(k protoreflect.MapKey) { + rk := ms.keyConv.GoValueOf(k.Value()) + ms.v.SetMapIndex(rk, reflect.Value{}) +} +func (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value { + if _, ok := ms.valConv.(*messageConverter); !ok { + panic("invalid Mutable on map with non-message value type") + } + v := ms.Get(k) + if !v.IsValid() { + v = ms.NewValue() + ms.Set(k, v) + } + return v +} +func (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { + iter := mapRange(ms.v) + for iter.Next() { + k := ms.keyConv.PBValueOf(iter.Key()).MapKey() + v := ms.valConv.PBValueOf(iter.Value()) + if !f(k, v) { + return + } + } +} +func (ms *mapReflect) NewValue() protoreflect.Value { + return ms.valConv.New() +} +func (ms *mapReflect) IsValid() bool { + return !ms.v.IsNil() +} +func (ms *mapReflect) protoUnwrap() any { + return ms.v.Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go new file mode 100644 index 0000000..cda0520 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go @@ -0,0 +1,285 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "math/bits" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +var errDecode = errors.New("cannot parse invalid wire-format data") +var errRecursionDepth = errors.New("exceeded maximum recursion depth") + +type unmarshalOptions struct { + flags protoiface.UnmarshalInputFlags + resolver interface { + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) + } + depth int +} + +func (o unmarshalOptions) Options() proto.UnmarshalOptions { + return proto.UnmarshalOptions{ + Merge: true, + AllowPartial: true, + DiscardUnknown: o.DiscardUnknown(), + Resolver: o.resolver, + } +} + +func (o unmarshalOptions) DiscardUnknown() bool { + return o.flags&protoiface.UnmarshalDiscardUnknown != 0 +} + +func (o unmarshalOptions) IsDefault() bool { + return o.flags == 0 && o.resolver == protoregistry.GlobalTypes +} + +var lazyUnmarshalOptions = unmarshalOptions{ + resolver: protoregistry.GlobalTypes, + depth: protowire.DefaultRecursionLimit, +} + +type unmarshalOutput struct { + n int // number of bytes consumed + initialized bool +} + +// unmarshal is protoreflect.Methods.Unmarshal. +func (mi *MessageInfo) unmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + out, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{ + flags: in.Flags, + resolver: in.Resolver, + depth: in.Depth, + }) + var flags protoiface.UnmarshalOutputFlags + if out.initialized { + flags |= protoiface.UnmarshalInitialized + } + return protoiface.UnmarshalOutput{ + Flags: flags, + }, err +} + +// errUnknown is returned during unmarshaling to indicate a parse error that +// should result in a field being placed in the unknown fields section (for example, +// when the wire type doesn't match) as opposed to the entire unmarshal operation +// failing (for example, when a field extends past the available input). +// +// This is a sentinel error which should never be visible to the user. +var errUnknown = errors.New("unknown") + +func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) { + mi.init() + opts.depth-- + if opts.depth < 0 { + return out, errRecursionDepth + } + if flags.ProtoLegacy && mi.isMessageSet { + return unmarshalMessageSet(mi, b, p, opts) + } + initialized := true + var requiredMask uint64 + var exts *map[int32]ExtensionField + start := len(b) + for len(b) > 0 { + // Parse the tag (field number and wire type). + var tag uint64 + if b[0] < 0x80 { + tag = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + tag, n = protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + b = b[n:] + } + var num protowire.Number + if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) { + return out, errDecode + } else { + num = protowire.Number(n) + } + wtyp := protowire.Type(tag & 7) + + if wtyp == protowire.EndGroupType { + if num != groupTag { + return out, errDecode + } + groupTag = 0 + break + } + + var f *coderFieldInfo + if int(num) < len(mi.denseCoderFields) { + f = mi.denseCoderFields[num] + } else { + f = mi.coderFields[num] + } + var n int + err := errUnknown + switch { + case f != nil: + if f.funcs.unmarshal == nil { + break + } + var o unmarshalOutput + o, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts) + n = o.n + if err != nil { + break + } + requiredMask |= f.validation.requiredBit + if f.funcs.isInit != nil && !o.initialized { + initialized = false + } + default: + // Possible extension. + if exts == nil && mi.extensionOffset.IsValid() { + exts = p.Apply(mi.extensionOffset).Extensions() + if *exts == nil { + *exts = make(map[int32]ExtensionField) + } + } + if exts == nil { + break + } + var o unmarshalOutput + o, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts) + if err != nil { + break + } + n = o.n + if !o.initialized { + initialized = false + } + } + if err != nil { + if err != errUnknown { + return out, err + } + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, errDecode + } + if !opts.DiscardUnknown() && mi.unknownOffset.IsValid() { + u := mi.mutableUnknownBytes(p) + *u = protowire.AppendTag(*u, num, wtyp) + *u = append(*u, b[:n]...) + } + } + b = b[n:] + } + if groupTag != 0 { + return out, errDecode + } + if mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) { + initialized = false + } + if initialized { + out.initialized = true + } + out.n = start - len(b) + return out, nil +} + +func (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp protowire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (out unmarshalOutput, err error) { + x := exts[int32(num)] + xt := x.Type() + if xt == nil { + var err error + xt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num) + if err != nil { + if err == protoregistry.NotFound { + return out, errUnknown + } + return out, errors.New("%v: unable to resolve extension %v: %v", mi.Desc.FullName(), num, err) + } + } + xi := getExtensionFieldInfo(xt) + if xi.funcs.unmarshal == nil { + return out, errUnknown + } + if flags.LazyUnmarshalExtensions { + if opts.IsDefault() && x.canLazy(xt) { + out, valid := skipExtension(b, xi, num, wtyp, opts) + switch valid { + case ValidationValid: + if out.initialized { + x.appendLazyBytes(xt, xi, num, wtyp, b[:out.n]) + exts[int32(num)] = x + return out, nil + } + case ValidationInvalid: + return out, errDecode + case ValidationUnknown: + } + } + } + ival := x.Value() + if !ival.IsValid() && xi.unmarshalNeedsValue { + // Create a new message, list, or map value to fill in. + // For enums, create a prototype value to let the unmarshal func know the + // concrete type. + ival = xt.New() + } + v, out, err := xi.funcs.unmarshal(b, ival, num, wtyp, opts) + if err != nil { + return out, err + } + if xi.funcs.isInit == nil { + out.initialized = true + } + x.Set(xt, v) + exts[int32(num)] = x + return out, nil +} + +func skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) { + if xi.validation.mi == nil { + return out, ValidationUnknown + } + xi.validation.mi.init() + switch xi.validation.typ { + case validationTypeMessage: + if wtyp != protowire.BytesType { + return out, ValidationUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, ValidationUnknown + } + out, st := xi.validation.mi.validate(v, 0, opts) + out.n = n + return out, st + case validationTypeGroup: + if wtyp != protowire.StartGroupType { + return out, ValidationUnknown + } + out, st := xi.validation.mi.validate(b, num, opts) + return out, st + default: + return out, ValidationUnknown + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go new file mode 100644 index 0000000..febd212 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go @@ -0,0 +1,237 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "math" + "sort" + "sync/atomic" + + "google.golang.org/protobuf/internal/flags" + proto "google.golang.org/protobuf/proto" + piface "google.golang.org/protobuf/runtime/protoiface" +) + +type marshalOptions struct { + flags piface.MarshalInputFlags +} + +func (o marshalOptions) Options() proto.MarshalOptions { + return proto.MarshalOptions{ + AllowPartial: true, + Deterministic: o.Deterministic(), + UseCachedSize: o.UseCachedSize(), + } +} + +func (o marshalOptions) Deterministic() bool { return o.flags&piface.MarshalDeterministic != 0 } +func (o marshalOptions) UseCachedSize() bool { return o.flags&piface.MarshalUseCachedSize != 0 } + +// size is protoreflect.Methods.Size. +func (mi *MessageInfo) size(in piface.SizeInput) piface.SizeOutput { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + size := mi.sizePointer(p, marshalOptions{ + flags: in.Flags, + }) + return piface.SizeOutput{Size: size} +} + +func (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) { + mi.init() + if p.IsNil() { + return 0 + } + if opts.UseCachedSize() && mi.sizecacheOffset.IsValid() { + // The size cache contains the size + 1, to allow the + // zero value to be invalid, while also allowing for a + // 0 size to be cached. + if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size > 0 { + return int(size - 1) + } + } + return mi.sizePointerSlow(p, opts) +} + +func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) { + if flags.ProtoLegacy && mi.isMessageSet { + size = sizeMessageSet(mi, p, opts) + if mi.sizecacheOffset.IsValid() { + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) + } + return size + } + if mi.extensionOffset.IsValid() { + e := p.Apply(mi.extensionOffset).Extensions() + size += mi.sizeExtensions(e, opts) + } + for _, f := range mi.orderedCoderFields { + if f.funcs.size == nil { + continue + } + fptr := p.Apply(f.offset) + if f.isPointer && fptr.Elem().IsNil() { + continue + } + size += f.funcs.size(fptr, f, opts) + } + if mi.unknownOffset.IsValid() { + if u := mi.getUnknownBytes(p); u != nil { + size += len(*u) + } + } + if mi.sizecacheOffset.IsValid() { + if size > (math.MaxInt32 - 1) { + // The size is too large for the int32 sizecache field. + // We will need to recompute the size when encoding; + // unfortunately expensive, but better than invalid output. + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), 0) + } else { + // The size cache contains the size + 1, to allow the + // zero value to be invalid, while also allowing for a + // 0 size to be cached. + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) + } + } + return size +} + +// marshal is protoreflect.Methods.Marshal. +func (mi *MessageInfo) marshal(in piface.MarshalInput) (out piface.MarshalOutput, err error) { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + b, err := mi.marshalAppendPointer(in.Buf, p, marshalOptions{ + flags: in.Flags, + }) + return piface.MarshalOutput{Buf: b}, err +} + +func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) { + mi.init() + if p.IsNil() { + return b, nil + } + if flags.ProtoLegacy && mi.isMessageSet { + return marshalMessageSet(mi, b, p, opts) + } + var err error + // The old marshaler encodes extensions at beginning. + if mi.extensionOffset.IsValid() { + e := p.Apply(mi.extensionOffset).Extensions() + // TODO: Special handling for MessageSet? + b, err = mi.appendExtensions(b, e, opts) + if err != nil { + return b, err + } + } + for _, f := range mi.orderedCoderFields { + if f.funcs.marshal == nil { + continue + } + fptr := p.Apply(f.offset) + if f.isPointer && fptr.Elem().IsNil() { + continue + } + b, err = f.funcs.marshal(b, fptr, f, opts) + if err != nil { + return b, err + } + } + if mi.unknownOffset.IsValid() && !mi.isMessageSet { + if u := mi.getUnknownBytes(p); u != nil { + b = append(b, (*u)...) + } + } + return b, nil +} + +// fullyLazyExtensions returns true if we should attempt to keep extensions lazy over size and marshal. +func fullyLazyExtensions(opts marshalOptions) bool { + // When deterministic marshaling is requested, force an unmarshal for lazy + // extensions to produce a deterministic result, instead of passing through + // bytes lazily that may or may not match what Go Protobuf would produce. + return opts.flags&piface.MarshalDeterministic == 0 +} + +func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) { + if ext == nil { + return 0 + } + for _, x := range *ext { + xi := getExtensionFieldInfo(x.Type()) + if xi.funcs.size == nil { + continue + } + if fullyLazyExtensions(opts) { + // Don't expand the extension, instead use the buffer to calculate size + if lb := x.lazyBuffer(); lb != nil { + // We got hold of the buffer, so it's still lazy. + n += len(lb) + continue + } + } + n += xi.funcs.size(x.Value(), xi.tagsize, opts) + } + return n +} + +func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, opts marshalOptions) ([]byte, error) { + if ext == nil { + return b, nil + } + + switch len(*ext) { + case 0: + return b, nil + case 1: + // Fast-path for one extension: Don't bother sorting the keys. + var err error + for _, x := range *ext { + xi := getExtensionFieldInfo(x.Type()) + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + b = append(b, lb...) + continue + } + } + b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) + } + return b, err + default: + // Sort the keys to provide a deterministic encoding. + // Not sure this is required, but the old code does it. + keys := make([]int, 0, len(*ext)) + for k := range *ext { + keys = append(keys, int(k)) + } + sort.Ints(keys) + var err error + for _, k := range keys { + x := (*ext)[int32(k)] + xi := getExtensionFieldInfo(x.Type()) + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + b = append(b, lb...) + continue + } + } + b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) + if err != nil { + return b, err + } + } + return b, nil + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go new file mode 100644 index 0000000..5f3ef5a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go @@ -0,0 +1,21 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type EnumInfo struct { + GoReflectType reflect.Type // int32 kind + Desc protoreflect.EnumDescriptor +} + +func (t *EnumInfo) New(n protoreflect.EnumNumber) protoreflect.Enum { + return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(protoreflect.Enum) +} +func (t *EnumInfo) Descriptor() protoreflect.EnumDescriptor { return t.Desc } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go new file mode 100644 index 0000000..e31249f --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go @@ -0,0 +1,156 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + "sync" + "sync/atomic" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// ExtensionInfo implements ExtensionType. +// +// This type contains a number of exported fields for legacy compatibility. +// The only non-deprecated use of this type is through the methods of the +// ExtensionType interface. +type ExtensionInfo struct { + // An ExtensionInfo may exist in several stages of initialization. + // + // extensionInfoUninitialized: Some or all of the legacy exported + // fields may be set, but none of the unexported fields have been + // initialized. This is the starting state for an ExtensionInfo + // in legacy generated code. + // + // extensionInfoDescInit: The desc field is set, but other unexported fields + // may not be initialized. Legacy exported fields may or may not be set. + // This is the starting state for an ExtensionInfo in newly generated code. + // + // extensionInfoFullInit: The ExtensionInfo is fully initialized. + // This state is only entered after lazy initialization is complete. + init uint32 + mu sync.Mutex + + goType reflect.Type + desc extensionTypeDescriptor + conv Converter + info *extensionFieldInfo // for fast-path method implementations + + // ExtendedType is a typed nil-pointer to the parent message type that + // is being extended. It is possible for this to be unpopulated in v2 + // since the message may no longer implement the MessageV1 interface. + // + // Deprecated: Use the ExtendedType method instead. + ExtendedType protoiface.MessageV1 + + // ExtensionType is the zero value of the extension type. + // + // For historical reasons, reflect.TypeOf(ExtensionType) and the + // type returned by InterfaceOf may not be identical. + // + // Deprecated: Use InterfaceOf(xt.Zero()) instead. + ExtensionType any + + // Field is the field number of the extension. + // + // Deprecated: Use the Descriptor().Number method instead. + Field int32 + + // Name is the fully qualified name of extension. + // + // Deprecated: Use the Descriptor().FullName method instead. + Name string + + // Tag is the protobuf struct tag used in the v1 API. + // + // Deprecated: Do not use. + Tag string + + // Filename is the proto filename in which the extension is defined. + // + // Deprecated: Use Descriptor().ParentFile().Path() instead. + Filename string +} + +// Stages of initialization: See the ExtensionInfo.init field. +const ( + extensionInfoUninitialized = 0 + extensionInfoDescInit = 1 + extensionInfoFullInit = 2 +) + +func InitExtensionInfo(xi *ExtensionInfo, xd protoreflect.ExtensionDescriptor, goType reflect.Type) { + xi.goType = goType + xi.desc = extensionTypeDescriptor{xd, xi} + xi.init = extensionInfoDescInit +} + +func (xi *ExtensionInfo) New() protoreflect.Value { + return xi.lazyInit().New() +} +func (xi *ExtensionInfo) Zero() protoreflect.Value { + return xi.lazyInit().Zero() +} +func (xi *ExtensionInfo) ValueOf(v any) protoreflect.Value { + return xi.lazyInit().PBValueOf(reflect.ValueOf(v)) +} +func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) any { + return xi.lazyInit().GoValueOf(v).Interface() +} +func (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool { + return xi.lazyInit().IsValidPB(v) +} +func (xi *ExtensionInfo) IsValidInterface(v any) bool { + return xi.lazyInit().IsValidGo(reflect.ValueOf(v)) +} +func (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor { + if atomic.LoadUint32(&xi.init) < extensionInfoDescInit { + xi.lazyInitSlow() + } + return &xi.desc +} + +func (xi *ExtensionInfo) lazyInit() Converter { + if atomic.LoadUint32(&xi.init) < extensionInfoFullInit { + xi.lazyInitSlow() + } + return xi.conv +} + +func (xi *ExtensionInfo) lazyInitSlow() { + xi.mu.Lock() + defer xi.mu.Unlock() + + if xi.init == extensionInfoFullInit { + return + } + defer atomic.StoreUint32(&xi.init, extensionInfoFullInit) + + if xi.desc.ExtensionDescriptor == nil { + xi.initFromLegacy() + } + if !xi.desc.ExtensionDescriptor.IsPlaceholder() { + if xi.ExtensionType == nil { + xi.initToLegacy() + } + xi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor) + xi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor) + xi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType) + } +} + +type extensionTypeDescriptor struct { + protoreflect.ExtensionDescriptor + xi *ExtensionInfo +} + +func (xtd *extensionTypeDescriptor) Type() protoreflect.ExtensionType { + return xtd.xi +} +func (xtd *extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor { + return xtd.ExtensionDescriptor +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go new file mode 100644 index 0000000..81b2b1a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go @@ -0,0 +1,219 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strings" + "sync" + + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// legacyEnumName returns the name of enums used in legacy code. +// It is neither the protobuf full name nor the qualified Go name, +// but rather an odd hybrid of both. +func legacyEnumName(ed protoreflect.EnumDescriptor) string { + var protoPkg string + enumName := string(ed.FullName()) + if fd := ed.ParentFile(); fd != nil { + protoPkg = string(fd.Package()) + enumName = strings.TrimPrefix(enumName, protoPkg+".") + } + if protoPkg == "" { + return strs.GoCamelCase(enumName) + } + return protoPkg + "." + strs.GoCamelCase(enumName) +} + +// legacyWrapEnum wraps v as a protoreflect.Enum, +// where v must be a int32 kind and not implement the v2 API already. +func legacyWrapEnum(v reflect.Value) protoreflect.Enum { + et := legacyLoadEnumType(v.Type()) + return et.New(protoreflect.EnumNumber(v.Int())) +} + +var legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType + +// legacyLoadEnumType dynamically loads a protoreflect.EnumType for t, +// where t must be an int32 kind and not implement the v2 API already. +func legacyLoadEnumType(t reflect.Type) protoreflect.EnumType { + // Fast-path: check if a EnumType is cached for this concrete type. + if et, ok := legacyEnumTypeCache.Load(t); ok { + return et.(protoreflect.EnumType) + } + + // Slow-path: derive enum descriptor and initialize EnumType. + var et protoreflect.EnumType + ed := LegacyLoadEnumDesc(t) + et = &legacyEnumType{ + desc: ed, + goType: t, + } + if et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok { + return et.(protoreflect.EnumType) + } + return et +} + +type legacyEnumType struct { + desc protoreflect.EnumDescriptor + goType reflect.Type + m sync.Map // map[protoreflect.EnumNumber]proto.Enum +} + +func (t *legacyEnumType) New(n protoreflect.EnumNumber) protoreflect.Enum { + if e, ok := t.m.Load(n); ok { + return e.(protoreflect.Enum) + } + e := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType} + t.m.Store(n, e) + return e +} +func (t *legacyEnumType) Descriptor() protoreflect.EnumDescriptor { + return t.desc +} + +type legacyEnumWrapper struct { + num protoreflect.EnumNumber + pbTyp protoreflect.EnumType + goTyp reflect.Type +} + +func (e *legacyEnumWrapper) Descriptor() protoreflect.EnumDescriptor { + return e.pbTyp.Descriptor() +} +func (e *legacyEnumWrapper) Type() protoreflect.EnumType { + return e.pbTyp +} +func (e *legacyEnumWrapper) Number() protoreflect.EnumNumber { + return e.num +} +func (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum { + return e +} +func (e *legacyEnumWrapper) protoUnwrap() any { + v := reflect.New(e.goTyp).Elem() + v.SetInt(int64(e.num)) + return v.Interface() +} + +var ( + _ protoreflect.Enum = (*legacyEnumWrapper)(nil) + _ unwrapper = (*legacyEnumWrapper)(nil) +) + +var legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor + +// LegacyLoadEnumDesc returns an EnumDescriptor derived from the Go type, +// which must be an int32 kind and not implement the v2 API already. +// +// This is exported for testing purposes. +func LegacyLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { + // Fast-path: check if an EnumDescriptor is cached for this concrete type. + if ed, ok := legacyEnumDescCache.Load(t); ok { + return ed.(protoreflect.EnumDescriptor) + } + + // Slow-path: initialize EnumDescriptor from the raw descriptor. + ev := reflect.Zero(t).Interface() + if _, ok := ev.(protoreflect.Enum); ok { + panic(fmt.Sprintf("%v already implements proto.Enum", t)) + } + edV1, ok := ev.(enumV1) + if !ok { + return aberrantLoadEnumDesc(t) + } + b, idxs := edV1.EnumDescriptor() + + var ed protoreflect.EnumDescriptor + if len(idxs) == 1 { + ed = legacyLoadFileDesc(b).Enums().Get(idxs[0]) + } else { + md := legacyLoadFileDesc(b).Messages().Get(idxs[0]) + for _, i := range idxs[1 : len(idxs)-1] { + md = md.Messages().Get(i) + } + ed = md.Enums().Get(idxs[len(idxs)-1]) + } + if ed, ok := legacyEnumDescCache.LoadOrStore(t, ed); ok { + return ed.(protoreflect.EnumDescriptor) + } + return ed +} + +var aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor + +// aberrantLoadEnumDesc returns an EnumDescriptor derived from the Go type, +// which must not implement protoreflect.Enum or enumV1. +// +// If the type does not implement enumV1, then there is no reliable +// way to derive the original protobuf type information. +// We are unable to use the global enum registry since it is +// unfortunately keyed by the protobuf full name, which we also do not know. +// Thus, this produces some bogus enum descriptor based on the Go type name. +func aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { + // Fast-path: check if an EnumDescriptor is cached for this concrete type. + if ed, ok := aberrantEnumDescCache.Load(t); ok { + return ed.(protoreflect.EnumDescriptor) + } + + // Slow-path: construct a bogus, but unique EnumDescriptor. + ed := &filedesc.Enum{L2: new(filedesc.EnumL2)} + ed.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum + ed.L0.ParentFile = filedesc.SurrogateProto3 + ed.L1.EditionFeatures = ed.L0.ParentFile.L1.EditionFeatures + ed.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{}) + + // TODO: Use the presence of a UnmarshalJSON method to determine proto2? + + vd := &ed.L2.Values.List[0] + vd.L0.FullName = ed.L0.FullName + "_UNKNOWN" // e.g., github_com.user.repo.MyEnum_UNKNOWN + vd.L0.ParentFile = ed.L0.ParentFile + vd.L0.Parent = ed + + // TODO: We could use the String method to obtain some enum value names by + // starting at 0 and print the enum until it produces invalid identifiers. + // An exhaustive query is clearly impractical, but can be best-effort. + + if ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok { + return ed.(protoreflect.EnumDescriptor) + } + return ed +} + +// AberrantDeriveFullName derives a fully qualified protobuf name for the given Go type +// The provided name is not guaranteed to be stable nor universally unique. +// It should be sufficiently unique within a program. +// +// This is exported for testing purposes. +func AberrantDeriveFullName(t reflect.Type) protoreflect.FullName { + sanitize := func(r rune) rune { + switch { + case r == '/': + return '.' + case 'a' <= r && r <= 'z', 'A' <= r && r <= 'Z', '0' <= r && r <= '9': + return r + default: + return '_' + } + } + prefix := strings.Map(sanitize, t.PkgPath()) + suffix := strings.Map(sanitize, t.Name()) + if suffix == "" { + suffix = fmt.Sprintf("UnknownX%X", reflect.ValueOf(t).Pointer()) + } + + ss := append(strings.Split(prefix, "."), suffix) + for i, s := range ss { + if s == "" || ('0' <= s[0] && s[0] <= '9') { + ss[i] = "x" + s + } + } + return protoreflect.FullName(strings.Join(ss, ".")) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go new file mode 100644 index 0000000..9b64ad5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go @@ -0,0 +1,92 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "encoding/binary" + "encoding/json" + "hash/crc32" + "math" + "reflect" + + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// These functions exist to support exported APIs in generated protobufs. +// While these are deprecated, they cannot be removed for compatibility reasons. + +// LegacyEnumName returns the name of enums used in legacy code. +func (Export) LegacyEnumName(ed protoreflect.EnumDescriptor) string { + return legacyEnumName(ed) +} + +// LegacyMessageTypeOf returns the protoreflect.MessageType for m, +// with name used as the message name if necessary. +func (Export) LegacyMessageTypeOf(m protoiface.MessageV1, name protoreflect.FullName) protoreflect.MessageType { + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect().Type() + } + return legacyLoadMessageType(reflect.TypeOf(m), name) +} + +// UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input. +// The input can either be a string representing the enum value by name, +// or a number representing the enum number itself. +func (Export) UnmarshalJSONEnum(ed protoreflect.EnumDescriptor, b []byte) (protoreflect.EnumNumber, error) { + if b[0] == '"' { + var name protoreflect.Name + if err := json.Unmarshal(b, &name); err != nil { + return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) + } + ev := ed.Values().ByName(name) + if ev == nil { + return 0, errors.New("invalid value for enum %v: %s", ed.FullName(), name) + } + return ev.Number(), nil + } else { + var num protoreflect.EnumNumber + if err := json.Unmarshal(b, &num); err != nil { + return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) + } + return num, nil + } +} + +// CompressGZIP compresses the input as a GZIP-encoded file. +// The current implementation does no compression. +func (Export) CompressGZIP(in []byte) (out []byte) { + // RFC 1952, section 2.3.1. + var gzipHeader = [10]byte{0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff} + + // RFC 1951, section 3.2.4. + var blockHeader [5]byte + const maxBlockSize = math.MaxUint16 + numBlocks := 1 + len(in)/maxBlockSize + + // RFC 1952, section 2.3.1. + var gzipFooter [8]byte + binary.LittleEndian.PutUint32(gzipFooter[0:4], crc32.ChecksumIEEE(in)) + binary.LittleEndian.PutUint32(gzipFooter[4:8], uint32(len(in))) + + // Encode the input without compression using raw DEFLATE blocks. + out = make([]byte, 0, len(gzipHeader)+len(blockHeader)*numBlocks+len(in)+len(gzipFooter)) + out = append(out, gzipHeader[:]...) + for blockHeader[0] == 0 { + blockSize := maxBlockSize + if blockSize > len(in) { + blockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3. + blockSize = len(in) + } + binary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize)) + binary.LittleEndian.PutUint16(blockHeader[3:5], ^uint16(blockSize)) + out = append(out, blockHeader[:]...) + out = append(out, in[:blockSize]...) + in = in[blockSize:] + } + out = append(out, gzipFooter[:]...) + return out +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go new file mode 100644 index 0000000..6e8677e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go @@ -0,0 +1,176 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/encoding/messageset" + ptag "google.golang.org/protobuf/internal/encoding/tag" + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +func (xi *ExtensionInfo) initToLegacy() { + xd := xi.desc + var parent protoiface.MessageV1 + messageName := xd.ContainingMessage().FullName() + if mt, _ := protoregistry.GlobalTypes.FindMessageByName(messageName); mt != nil { + // Create a new parent message and unwrap it if possible. + mv := mt.New().Interface() + t := reflect.TypeOf(mv) + if mv, ok := mv.(unwrapper); ok { + t = reflect.TypeOf(mv.protoUnwrap()) + } + + // Check whether the message implements the legacy v1 Message interface. + mz := reflect.Zero(t).Interface() + if mz, ok := mz.(protoiface.MessageV1); ok { + parent = mz + } + } + + // Determine the v1 extension type, which is unfortunately not the same as + // the v2 ExtensionType.GoType. + extType := xi.goType + switch extType.Kind() { + case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: + extType = reflect.PtrTo(extType) // T -> *T for singular scalar fields + } + + // Reconstruct the legacy enum full name. + var enumName string + if xd.Kind() == protoreflect.EnumKind { + enumName = legacyEnumName(xd.Enum()) + } + + // Derive the proto file that the extension was declared within. + var filename string + if fd := xd.ParentFile(); fd != nil { + filename = fd.Path() + } + + // For MessageSet extensions, the name used is the parent message. + name := xd.FullName() + if messageset.IsMessageSetExtension(xd) { + name = name.Parent() + } + + xi.ExtendedType = parent + xi.ExtensionType = reflect.Zero(extType).Interface() + xi.Field = int32(xd.Number()) + xi.Name = string(name) + xi.Tag = ptag.Marshal(xd, enumName) + xi.Filename = filename +} + +// initFromLegacy initializes an ExtensionInfo from +// the contents of the deprecated exported fields of the type. +func (xi *ExtensionInfo) initFromLegacy() { + // The v1 API returns "type incomplete" descriptors where only the + // field number is specified. In such a case, use a placeholder. + if xi.ExtendedType == nil || xi.ExtensionType == nil { + xd := placeholderExtension{ + name: protoreflect.FullName(xi.Name), + number: protoreflect.FieldNumber(xi.Field), + } + xi.desc = extensionTypeDescriptor{xd, xi} + return + } + + // Resolve enum or message dependencies. + var ed protoreflect.EnumDescriptor + var md protoreflect.MessageDescriptor + t := reflect.TypeOf(xi.ExtensionType) + isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct + isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 + if isOptional || isRepeated { + t = t.Elem() + } + switch v := reflect.Zero(t).Interface().(type) { + case protoreflect.Enum: + ed = v.Descriptor() + case enumV1: + ed = LegacyLoadEnumDesc(t) + case protoreflect.ProtoMessage: + md = v.ProtoReflect().Descriptor() + case messageV1: + md = LegacyLoadMessageDesc(t) + } + + // Derive basic field information from the struct tag. + var evs protoreflect.EnumValueDescriptors + if ed != nil { + evs = ed.Values() + } + fd := ptag.Unmarshal(xi.Tag, t, evs).(*filedesc.Field) + + // Construct a v2 ExtensionType. + xd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)} + xd.L0.ParentFile = filedesc.SurrogateProto2 + xd.L0.FullName = protoreflect.FullName(xi.Name) + xd.L1.Number = protoreflect.FieldNumber(xi.Field) + xd.L1.Cardinality = fd.L1.Cardinality + xd.L1.Kind = fd.L1.Kind + xd.L1.EditionFeatures = fd.L1.EditionFeatures + xd.L2.Default = fd.L1.Default + xd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType) + xd.L2.Enum = ed + xd.L2.Message = md + + // Derive real extension field name for MessageSets. + if messageset.IsMessageSet(xd.L1.Extendee) && md.FullName() == xd.L0.FullName { + xd.L0.FullName = xd.L0.FullName.Append(messageset.ExtensionName) + } + + tt := reflect.TypeOf(xi.ExtensionType) + if isOptional { + tt = tt.Elem() + } + xi.goType = tt + xi.desc = extensionTypeDescriptor{xd, xi} +} + +type placeholderExtension struct { + name protoreflect.FullName + number protoreflect.FieldNumber +} + +func (x placeholderExtension) ParentFile() protoreflect.FileDescriptor { return nil } +func (x placeholderExtension) Parent() protoreflect.Descriptor { return nil } +func (x placeholderExtension) Index() int { return 0 } +func (x placeholderExtension) Syntax() protoreflect.Syntax { return 0 } +func (x placeholderExtension) Name() protoreflect.Name { return x.name.Name() } +func (x placeholderExtension) FullName() protoreflect.FullName { return x.name } +func (x placeholderExtension) IsPlaceholder() bool { return true } +func (x placeholderExtension) Options() protoreflect.ProtoMessage { return descopts.Field } +func (x placeholderExtension) Number() protoreflect.FieldNumber { return x.number } +func (x placeholderExtension) Cardinality() protoreflect.Cardinality { return 0 } +func (x placeholderExtension) Kind() protoreflect.Kind { return 0 } +func (x placeholderExtension) HasJSONName() bool { return false } +func (x placeholderExtension) JSONName() string { return "[" + string(x.name) + "]" } +func (x placeholderExtension) TextName() string { return "[" + string(x.name) + "]" } +func (x placeholderExtension) HasPresence() bool { return false } +func (x placeholderExtension) HasOptionalKeyword() bool { return false } +func (x placeholderExtension) IsExtension() bool { return true } +func (x placeholderExtension) IsWeak() bool { return false } +func (x placeholderExtension) IsPacked() bool { return false } +func (x placeholderExtension) IsList() bool { return false } +func (x placeholderExtension) IsMap() bool { return false } +func (x placeholderExtension) MapKey() protoreflect.FieldDescriptor { return nil } +func (x placeholderExtension) MapValue() protoreflect.FieldDescriptor { return nil } +func (x placeholderExtension) HasDefault() bool { return false } +func (x placeholderExtension) Default() protoreflect.Value { return protoreflect.Value{} } +func (x placeholderExtension) DefaultEnumValue() protoreflect.EnumValueDescriptor { return nil } +func (x placeholderExtension) ContainingOneof() protoreflect.OneofDescriptor { return nil } +func (x placeholderExtension) ContainingMessage() protoreflect.MessageDescriptor { return nil } +func (x placeholderExtension) Enum() protoreflect.EnumDescriptor { return nil } +func (x placeholderExtension) Message() protoreflect.MessageDescriptor { return nil } +func (x placeholderExtension) ProtoType(protoreflect.FieldDescriptor) { return } +func (x placeholderExtension) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go new file mode 100644 index 0000000..b649f11 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go @@ -0,0 +1,81 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "bytes" + "compress/gzip" + "io" + "sync" + + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Every enum and message type generated by protoc-gen-go since commit 2fc053c5 +// on February 25th, 2016 has had a method to get the raw descriptor. +// Types that were not generated by protoc-gen-go or were generated prior +// to that version are not supported. +// +// The []byte returned is the encoded form of a FileDescriptorProto message +// compressed using GZIP. The []int is the path from the top-level file +// to the specific message or enum declaration. +type ( + enumV1 interface { + EnumDescriptor() ([]byte, []int) + } + messageV1 interface { + Descriptor() ([]byte, []int) + } +) + +var legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor + +// legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message. +// +// This assumes that b is immutable and that b does not refer to part of a +// concatenated series of GZIP files (which would require shenanigans that +// rely on the concatenation properties of both protobufs and GZIP). +// File descriptors generated by protoc-gen-go do not rely on that property. +func legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor { + // Fast-path: check whether we already have a cached file descriptor. + if fd, ok := legacyFileDescCache.Load(&b[0]); ok { + return fd.(protoreflect.FileDescriptor) + } + + // Slow-path: decompress and unmarshal the file descriptor proto. + zr, err := gzip.NewReader(bytes.NewReader(b)) + if err != nil { + panic(err) + } + b2, err := io.ReadAll(zr) + if err != nil { + panic(err) + } + + fd := filedesc.Builder{ + RawDescriptor: b2, + FileRegistry: resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry + }.Build().File + if fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok { + return fd.(protoreflect.FileDescriptor) + } + return fd +} + +type resolverOnly struct { + reg *protoregistry.Files +} + +func (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) { + return r.reg.FindFileByPath(path) +} +func (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) { + return r.reg.FindDescriptorByName(name) +} +func (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error { + return nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go new file mode 100644 index 0000000..bf0b604 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go @@ -0,0 +1,572 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strings" + "sync" + + "google.golang.org/protobuf/internal/descopts" + ptag "google.golang.org/protobuf/internal/encoding/tag" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// legacyWrapMessage wraps v as a protoreflect.Message, +// where v must be a *struct kind and not implement the v2 API already. +func legacyWrapMessage(v reflect.Value) protoreflect.Message { + t := v.Type() + if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { + return aberrantMessage{v: v} + } + mt := legacyLoadMessageInfo(t, "") + return mt.MessageOf(v.Interface()) +} + +// legacyLoadMessageType dynamically loads a protoreflect.Type for t, +// where t must be not implement the v2 API already. +// The provided name is used if it cannot be determined from the message. +func legacyLoadMessageType(t reflect.Type, name protoreflect.FullName) protoreflect.MessageType { + if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { + return aberrantMessageType{t} + } + return legacyLoadMessageInfo(t, name) +} + +var legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo + +// legacyLoadMessageInfo dynamically loads a *MessageInfo for t, +// where t must be a *struct kind and not implement the v2 API already. +// The provided name is used if it cannot be determined from the message. +func legacyLoadMessageInfo(t reflect.Type, name protoreflect.FullName) *MessageInfo { + // Fast-path: check if a MessageInfo is cached for this concrete type. + if mt, ok := legacyMessageTypeCache.Load(t); ok { + return mt.(*MessageInfo) + } + + // Slow-path: derive message descriptor and initialize MessageInfo. + mi := &MessageInfo{ + Desc: legacyLoadMessageDesc(t, name), + GoReflectType: t, + } + + var hasMarshal, hasUnmarshal bool + v := reflect.Zero(t).Interface() + if _, hasMarshal = v.(legacyMarshaler); hasMarshal { + mi.methods.Marshal = legacyMarshal + + // We have no way to tell whether the type's Marshal method + // supports deterministic serialization or not, but this + // preserves the v1 implementation's behavior of always + // calling Marshal methods when present. + mi.methods.Flags |= protoiface.SupportMarshalDeterministic + } + if _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal { + mi.methods.Unmarshal = legacyUnmarshal + } + if _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) { + mi.methods.Merge = legacyMerge + } + + if mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok { + return mi.(*MessageInfo) + } + return mi +} + +var legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor + +// LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type, +// which should be a *struct kind and must not implement the v2 API already. +// +// This is exported for testing purposes. +func LegacyLoadMessageDesc(t reflect.Type) protoreflect.MessageDescriptor { + return legacyLoadMessageDesc(t, "") +} +func legacyLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { + // Fast-path: check if a MessageDescriptor is cached for this concrete type. + if mi, ok := legacyMessageDescCache.Load(t); ok { + return mi.(protoreflect.MessageDescriptor) + } + + // Slow-path: initialize MessageDescriptor from the raw descriptor. + mv := reflect.Zero(t).Interface() + if _, ok := mv.(protoreflect.ProtoMessage); ok { + panic(fmt.Sprintf("%v already implements proto.Message", t)) + } + mdV1, ok := mv.(messageV1) + if !ok { + return aberrantLoadMessageDesc(t, name) + } + + // If this is a dynamic message type where there isn't a 1-1 mapping between + // Go and protobuf types, calling the Descriptor method on the zero value of + // the message type isn't likely to work. If it panics, swallow the panic and + // continue as if the Descriptor method wasn't present. + b, idxs := func() ([]byte, []int) { + defer func() { + recover() + }() + return mdV1.Descriptor() + }() + if b == nil { + return aberrantLoadMessageDesc(t, name) + } + + // If the Go type has no fields, then this might be a proto3 empty message + // from before the size cache was added. If there are any fields, check to + // see that at least one of them looks like something we generated. + if t.Elem().Kind() == reflect.Struct { + if nfield := t.Elem().NumField(); nfield > 0 { + hasProtoField := false + for i := 0; i < nfield; i++ { + f := t.Elem().Field(i) + if f.Tag.Get("protobuf") != "" || f.Tag.Get("protobuf_oneof") != "" || strings.HasPrefix(f.Name, "XXX_") { + hasProtoField = true + break + } + } + if !hasProtoField { + return aberrantLoadMessageDesc(t, name) + } + } + } + + md := legacyLoadFileDesc(b).Messages().Get(idxs[0]) + for _, i := range idxs[1:] { + md = md.Messages().Get(i) + } + if name != "" && md.FullName() != name { + panic(fmt.Sprintf("mismatching message name: got %v, want %v", md.FullName(), name)) + } + if md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok { + return md.(protoreflect.MessageDescriptor) + } + return md +} + +var ( + aberrantMessageDescLock sync.Mutex + aberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor +) + +// aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type, +// which must not implement protoreflect.ProtoMessage or messageV1. +// +// This is a best-effort derivation of the message descriptor using the protobuf +// tags on the struct fields. +func aberrantLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { + aberrantMessageDescLock.Lock() + defer aberrantMessageDescLock.Unlock() + if aberrantMessageDescCache == nil { + aberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor) + } + return aberrantLoadMessageDescReentrant(t, name) +} +func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { + // Fast-path: check if an MessageDescriptor is cached for this concrete type. + if md, ok := aberrantMessageDescCache[t]; ok { + return md + } + + // Slow-path: construct a descriptor from the Go struct type (best-effort). + // Cache the MessageDescriptor early on so that we can resolve internal + // cyclic references. + md := &filedesc.Message{L2: new(filedesc.MessageL2)} + md.L0.FullName = aberrantDeriveMessageName(t, name) + md.L0.ParentFile = filedesc.SurrogateProto2 + aberrantMessageDescCache[t] = md + + if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { + return md + } + + // Try to determine if the message is using proto3 by checking scalars. + for i := 0; i < t.Elem().NumField(); i++ { + f := t.Elem().Field(i) + if tag := f.Tag.Get("protobuf"); tag != "" { + switch f.Type.Kind() { + case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: + md.L0.ParentFile = filedesc.SurrogateProto3 + } + for _, s := range strings.Split(tag, ",") { + if s == "proto3" { + md.L0.ParentFile = filedesc.SurrogateProto3 + } + } + } + } + + md.L1.EditionFeatures = md.L0.ParentFile.L1.EditionFeatures + // Obtain a list of oneof wrapper types. + var oneofWrappers []reflect.Type + methods := make([]reflect.Method, 0, 2) + if m, ok := t.MethodByName("XXX_OneofFuncs"); ok { + methods = append(methods, m) + } + if m, ok := t.MethodByName("XXX_OneofWrappers"); ok { + methods = append(methods, m) + } + for _, fn := range methods { + for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { + if vs, ok := v.Interface().([]any); ok { + for _, v := range vs { + oneofWrappers = append(oneofWrappers, reflect.TypeOf(v)) + } + } + } + } + + // Obtain a list of the extension ranges. + if fn, ok := t.MethodByName("ExtensionRangeArray"); ok { + vs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0] + for i := 0; i < vs.Len(); i++ { + v := vs.Index(i) + md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{ + protoreflect.FieldNumber(v.FieldByName("Start").Int()), + protoreflect.FieldNumber(v.FieldByName("End").Int() + 1), + }) + md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil) + } + } + + // Derive the message fields by inspecting the struct fields. + for i := 0; i < t.Elem().NumField(); i++ { + f := t.Elem().Field(i) + if tag := f.Tag.Get("protobuf"); tag != "" { + tagKey := f.Tag.Get("protobuf_key") + tagVal := f.Tag.Get("protobuf_val") + aberrantAppendField(md, f.Type, tag, tagKey, tagVal) + } + if tag := f.Tag.Get("protobuf_oneof"); tag != "" { + n := len(md.L2.Oneofs.List) + md.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{}) + od := &md.L2.Oneofs.List[n] + od.L0.FullName = md.FullName().Append(protoreflect.Name(tag)) + od.L0.ParentFile = md.L0.ParentFile + od.L1.EditionFeatures = md.L1.EditionFeatures + od.L0.Parent = md + od.L0.Index = n + + for _, t := range oneofWrappers { + if t.Implements(f.Type) { + f := t.Elem().Field(0) + if tag := f.Tag.Get("protobuf"); tag != "" { + aberrantAppendField(md, f.Type, tag, "", "") + fd := &md.L2.Fields.List[len(md.L2.Fields.List)-1] + fd.L1.ContainingOneof = od + fd.L1.EditionFeatures = od.L1.EditionFeatures + od.L1.Fields.List = append(od.L1.Fields.List, fd) + } + } + } + } + } + + return md +} + +func aberrantDeriveMessageName(t reflect.Type, name protoreflect.FullName) protoreflect.FullName { + if name.IsValid() { + return name + } + func() { + defer func() { recover() }() // swallow possible nil panics + if m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok { + name = protoreflect.FullName(m.XXX_MessageName()) + } + }() + if name.IsValid() { + return name + } + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + return AberrantDeriveFullName(t) +} + +func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) { + t := goType + isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct + isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 + if isOptional || isRepeated { + t = t.Elem() + } + fd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field) + + // Append field descriptor to the message. + n := len(md.L2.Fields.List) + md.L2.Fields.List = append(md.L2.Fields.List, *fd) + fd = &md.L2.Fields.List[n] + fd.L0.FullName = md.FullName().Append(fd.Name()) + fd.L0.ParentFile = md.L0.ParentFile + fd.L0.Parent = md + fd.L0.Index = n + + if fd.L1.IsWeak || fd.L1.EditionFeatures.IsPacked { + fd.L1.Options = func() protoreflect.ProtoMessage { + opts := descopts.Field.ProtoReflect().New() + if fd.L1.IsWeak { + opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true)) + } + if fd.L1.EditionFeatures.IsPacked { + opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.EditionFeatures.IsPacked)) + } + return opts.Interface() + } + } + + // Populate Enum and Message. + if fd.Enum() == nil && fd.Kind() == protoreflect.EnumKind { + switch v := reflect.Zero(t).Interface().(type) { + case protoreflect.Enum: + fd.L1.Enum = v.Descriptor() + default: + fd.L1.Enum = LegacyLoadEnumDesc(t) + } + } + if fd.Message() == nil && (fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind) { + switch v := reflect.Zero(t).Interface().(type) { + case protoreflect.ProtoMessage: + fd.L1.Message = v.ProtoReflect().Descriptor() + case messageV1: + fd.L1.Message = LegacyLoadMessageDesc(t) + default: + if t.Kind() == reflect.Map { + n := len(md.L1.Messages.List) + md.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)}) + md2 := &md.L1.Messages.List[n] + md2.L0.FullName = md.FullName().Append(protoreflect.Name(strs.MapEntryName(string(fd.Name())))) + md2.L0.ParentFile = md.L0.ParentFile + md2.L0.Parent = md + md2.L0.Index = n + md2.L1.EditionFeatures = md.L1.EditionFeatures + + md2.L1.IsMapEntry = true + md2.L2.Options = func() protoreflect.ProtoMessage { + opts := descopts.Message.ProtoReflect().New() + opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOfBool(true)) + return opts.Interface() + } + + aberrantAppendField(md2, t.Key(), tagKey, "", "") + aberrantAppendField(md2, t.Elem(), tagVal, "", "") + + fd.L1.Message = md2 + break + } + fd.L1.Message = aberrantLoadMessageDescReentrant(t, "") + } + } +} + +type placeholderEnumValues struct { + protoreflect.EnumValueDescriptors +} + +func (placeholderEnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor { + return filedesc.PlaceholderEnumValue(protoreflect.FullName(fmt.Sprintf("UNKNOWN_%d", n))) +} + +// legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder. +type legacyMarshaler interface { + Marshal() ([]byte, error) +} + +// legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder. +type legacyUnmarshaler interface { + Unmarshal([]byte) error +} + +// legacyMerger is the proto.Merger interface superseded by protoiface.Methoder. +type legacyMerger interface { + Merge(protoiface.MessageV1) +} + +var aberrantProtoMethods = &protoiface.Methods{ + Marshal: legacyMarshal, + Unmarshal: legacyUnmarshal, + Merge: legacyMerge, + + // We have no way to tell whether the type's Marshal method + // supports deterministic serialization or not, but this + // preserves the v1 implementation's behavior of always + // calling Marshal methods when present. + Flags: protoiface.SupportMarshalDeterministic, +} + +func legacyMarshal(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + v := in.Message.(unwrapper).protoUnwrap() + marshaler, ok := v.(legacyMarshaler) + if !ok { + return protoiface.MarshalOutput{}, errors.New("%T does not implement Marshal", v) + } + out, err := marshaler.Marshal() + if in.Buf != nil { + out = append(in.Buf, out...) + } + return protoiface.MarshalOutput{ + Buf: out, + }, err +} + +func legacyUnmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + v := in.Message.(unwrapper).protoUnwrap() + unmarshaler, ok := v.(legacyUnmarshaler) + if !ok { + return protoiface.UnmarshalOutput{}, errors.New("%T does not implement Unmarshal", v) + } + return protoiface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf) +} + +func legacyMerge(in protoiface.MergeInput) protoiface.MergeOutput { + // Check whether this supports the legacy merger. + dstv := in.Destination.(unwrapper).protoUnwrap() + merger, ok := dstv.(legacyMerger) + if ok { + merger.Merge(Export{}.ProtoMessageV1Of(in.Source)) + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} + } + + // If legacy merger is unavailable, implement merge in terms of + // a marshal and unmarshal operation. + srcv := in.Source.(unwrapper).protoUnwrap() + marshaler, ok := srcv.(legacyMarshaler) + if !ok { + return protoiface.MergeOutput{} + } + dstv = in.Destination.(unwrapper).protoUnwrap() + unmarshaler, ok := dstv.(legacyUnmarshaler) + if !ok { + return protoiface.MergeOutput{} + } + if !in.Source.IsValid() { + // Legacy Marshal methods may not function on nil messages. + // Check for a typed nil source only after we confirm that + // legacy Marshal/Unmarshal methods are present, for + // consistency. + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} + } + b, err := marshaler.Marshal() + if err != nil { + return protoiface.MergeOutput{} + } + err = unmarshaler.Unmarshal(b) + if err != nil { + return protoiface.MergeOutput{} + } + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} +} + +// aberrantMessageType implements MessageType for all types other than pointer-to-struct. +type aberrantMessageType struct { + t reflect.Type +} + +func (mt aberrantMessageType) New() protoreflect.Message { + if mt.t.Kind() == reflect.Ptr { + return aberrantMessage{reflect.New(mt.t.Elem())} + } + return aberrantMessage{reflect.Zero(mt.t)} +} +func (mt aberrantMessageType) Zero() protoreflect.Message { + return aberrantMessage{reflect.Zero(mt.t)} +} +func (mt aberrantMessageType) GoType() reflect.Type { + return mt.t +} +func (mt aberrantMessageType) Descriptor() protoreflect.MessageDescriptor { + return LegacyLoadMessageDesc(mt.t) +} + +// aberrantMessage implements Message for all types other than pointer-to-struct. +// +// When the underlying type implements legacyMarshaler or legacyUnmarshaler, +// the aberrant Message can be marshaled or unmarshaled. Otherwise, there is +// not much that can be done with values of this type. +type aberrantMessage struct { + v reflect.Value +} + +// Reset implements the v1 proto.Message.Reset method. +func (m aberrantMessage) Reset() { + if mr, ok := m.v.Interface().(interface{ Reset() }); ok { + mr.Reset() + return + } + if m.v.Kind() == reflect.Ptr && !m.v.IsNil() { + m.v.Elem().Set(reflect.Zero(m.v.Type().Elem())) + } +} + +func (m aberrantMessage) ProtoReflect() protoreflect.Message { + return m +} + +func (m aberrantMessage) Descriptor() protoreflect.MessageDescriptor { + return LegacyLoadMessageDesc(m.v.Type()) +} +func (m aberrantMessage) Type() protoreflect.MessageType { + return aberrantMessageType{m.v.Type()} +} +func (m aberrantMessage) New() protoreflect.Message { + if m.v.Type().Kind() == reflect.Ptr { + return aberrantMessage{reflect.New(m.v.Type().Elem())} + } + return aberrantMessage{reflect.Zero(m.v.Type())} +} +func (m aberrantMessage) Interface() protoreflect.ProtoMessage { + return m +} +func (m aberrantMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + return +} +func (m aberrantMessage) Has(protoreflect.FieldDescriptor) bool { + return false +} +func (m aberrantMessage) Clear(protoreflect.FieldDescriptor) { + panic("invalid Message.Clear on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { + if fd.Default().IsValid() { + return fd.Default() + } + panic("invalid Message.Get on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) { + panic("invalid Message.Set on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) Mutable(protoreflect.FieldDescriptor) protoreflect.Value { + panic("invalid Message.Mutable on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value { + panic("invalid Message.NewField on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + panic("invalid Message.WhichOneof descriptor on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) GetUnknown() protoreflect.RawFields { + return nil +} +func (m aberrantMessage) SetUnknown(protoreflect.RawFields) { + // SetUnknown discards its input on messages which don't support unknown field storage. +} +func (m aberrantMessage) IsValid() bool { + if m.v.Kind() == reflect.Ptr { + return !m.v.IsNil() + } + return false +} +func (m aberrantMessage) ProtoMethods() *protoiface.Methods { + return aberrantProtoMethods +} +func (m aberrantMessage) protoUnwrap() any { + return m.v.Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go new file mode 100644 index 0000000..7e65f64 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go @@ -0,0 +1,176 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +type mergeOptions struct{} + +func (o mergeOptions) Merge(dst, src proto.Message) { + proto.Merge(dst, src) +} + +// merge is protoreflect.Methods.Merge. +func (mi *MessageInfo) merge(in protoiface.MergeInput) protoiface.MergeOutput { + dp, ok := mi.getPointer(in.Destination) + if !ok { + return protoiface.MergeOutput{} + } + sp, ok := mi.getPointer(in.Source) + if !ok { + return protoiface.MergeOutput{} + } + mi.mergePointer(dp, sp, mergeOptions{}) + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} +} + +func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) { + mi.init() + if dst.IsNil() { + panic(fmt.Sprintf("invalid value: merging into nil message")) + } + if src.IsNil() { + return + } + for _, f := range mi.orderedCoderFields { + if f.funcs.merge == nil { + continue + } + sfptr := src.Apply(f.offset) + if f.isPointer && sfptr.Elem().IsNil() { + continue + } + f.funcs.merge(dst.Apply(f.offset), sfptr, f, opts) + } + if mi.extensionOffset.IsValid() { + sext := src.Apply(mi.extensionOffset).Extensions() + dext := dst.Apply(mi.extensionOffset).Extensions() + if *dext == nil { + *dext = make(map[int32]ExtensionField) + } + for num, sx := range *sext { + xt := sx.Type() + xi := getExtensionFieldInfo(xt) + if xi.funcs.merge == nil { + continue + } + dx := (*dext)[num] + var dv protoreflect.Value + if dx.Type() == sx.Type() { + dv = dx.Value() + } + if !dv.IsValid() && xi.unmarshalNeedsValue { + dv = xt.New() + } + dv = xi.funcs.merge(dv, sx.Value(), opts) + dx.Set(sx.Type(), dv) + (*dext)[num] = dx + } + } + if mi.unknownOffset.IsValid() { + su := mi.getUnknownBytes(src) + if su != nil && len(*su) > 0 { + du := mi.mutableUnknownBytes(dst) + *du = append(*du, *su...) + } + } +} + +func mergeScalarValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + return src +} + +func mergeBytesValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + return protoreflect.ValueOfBytes(append(emptyBuf[:], src.Bytes()...)) +} + +func mergeListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + dstl := dst.List() + srcl := src.List() + for i, llen := 0, srcl.Len(); i < llen; i++ { + dstl.Append(srcl.Get(i)) + } + return dst +} + +func mergeBytesListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + dstl := dst.List() + srcl := src.List() + for i, llen := 0, srcl.Len(); i < llen; i++ { + sb := srcl.Get(i).Bytes() + db := append(emptyBuf[:], sb...) + dstl.Append(protoreflect.ValueOfBytes(db)) + } + return dst +} + +func mergeMessageListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + dstl := dst.List() + srcl := src.List() + for i, llen := 0, srcl.Len(); i < llen; i++ { + sm := srcl.Get(i).Message() + dm := proto.Clone(sm.Interface()).ProtoReflect() + dstl.Append(protoreflect.ValueOfMessage(dm)) + } + return dst +} + +func mergeMessageValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + opts.Merge(dst.Message().Interface(), src.Message().Interface()) + return dst +} + +func mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + if f.mi != nil { + if dst.Elem().IsNil() { + dst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) + } + f.mi.mergePointer(dst.Elem(), src.Elem(), opts) + } else { + dm := dst.AsValueOf(f.ft).Elem() + sm := src.AsValueOf(f.ft).Elem() + if dm.IsNil() { + dm.Set(reflect.New(f.ft.Elem())) + } + opts.Merge(asMessage(dm), asMessage(sm)) + } +} + +func mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + for _, sp := range src.PointerSlice() { + dm := reflect.New(f.ft.Elem().Elem()) + if f.mi != nil { + f.mi.mergePointer(pointerOfValue(dm), sp, opts) + } else { + opts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem()))) + } + dst.AppendPointerSlice(pointerOfValue(dm)) + } +} + +func mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Bytes() = append(emptyBuf[:], *src.Bytes()...) +} + +func mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Bytes() + if len(v) > 0 { + *dst.Bytes() = append(emptyBuf[:], v...) + } +} + +func mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.BytesSlice() + for _, v := range *src.BytesSlice() { + *ds = append(*ds, append(emptyBuf[:], v...)) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go new file mode 100644 index 0000000..8816c27 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go @@ -0,0 +1,209 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package impl + +import () + +func mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Bool() = *src.Bool() +} + +func mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Bool() + if v != false { + *dst.Bool() = v + } +} + +func mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.BoolPtr() + if p != nil { + v := *p + *dst.BoolPtr() = &v + } +} + +func mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.BoolSlice() + ss := src.BoolSlice() + *ds = append(*ds, *ss...) +} + +func mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Int32() = *src.Int32() +} + +func mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Int32() + if v != 0 { + *dst.Int32() = v + } +} + +func mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Int32Ptr() + if p != nil { + v := *p + *dst.Int32Ptr() = &v + } +} + +func mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Int32Slice() + ss := src.Int32Slice() + *ds = append(*ds, *ss...) +} + +func mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Uint32() = *src.Uint32() +} + +func mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Uint32() + if v != 0 { + *dst.Uint32() = v + } +} + +func mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Uint32Ptr() + if p != nil { + v := *p + *dst.Uint32Ptr() = &v + } +} + +func mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Uint32Slice() + ss := src.Uint32Slice() + *ds = append(*ds, *ss...) +} + +func mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Int64() = *src.Int64() +} + +func mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Int64() + if v != 0 { + *dst.Int64() = v + } +} + +func mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Int64Ptr() + if p != nil { + v := *p + *dst.Int64Ptr() = &v + } +} + +func mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Int64Slice() + ss := src.Int64Slice() + *ds = append(*ds, *ss...) +} + +func mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Uint64() = *src.Uint64() +} + +func mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Uint64() + if v != 0 { + *dst.Uint64() = v + } +} + +func mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Uint64Ptr() + if p != nil { + v := *p + *dst.Uint64Ptr() = &v + } +} + +func mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Uint64Slice() + ss := src.Uint64Slice() + *ds = append(*ds, *ss...) +} + +func mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Float32() = *src.Float32() +} + +func mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Float32() + if v != 0 { + *dst.Float32() = v + } +} + +func mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Float32Ptr() + if p != nil { + v := *p + *dst.Float32Ptr() = &v + } +} + +func mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Float32Slice() + ss := src.Float32Slice() + *ds = append(*ds, *ss...) +} + +func mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Float64() = *src.Float64() +} + +func mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Float64() + if v != 0 { + *dst.Float64() = v + } +} + +func mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Float64Ptr() + if p != nil { + v := *p + *dst.Float64Ptr() = &v + } +} + +func mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Float64Slice() + ss := src.Float64Slice() + *ds = append(*ds, *ss...) +} + +func mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.String() = *src.String() +} + +func mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.String() + if v != "" { + *dst.String() = v + } +} + +func mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.StringPtr() + if p != nil { + v := *p + *dst.StringPtr() = &v + } +} + +func mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.StringSlice() + ss := src.StringSlice() + *ds = append(*ds, *ss...) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go new file mode 100644 index 0000000..019399d --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go @@ -0,0 +1,284 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "sync" + "sync/atomic" + + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// MessageInfo provides protobuf related functionality for a given Go type +// that represents a message. A given instance of MessageInfo is tied to +// exactly one Go type, which must be a pointer to a struct type. +// +// The exported fields must be populated before any methods are called +// and cannot be mutated after set. +type MessageInfo struct { + // GoReflectType is the underlying message Go type and must be populated. + GoReflectType reflect.Type // pointer to struct + + // Desc is the underlying message descriptor type and must be populated. + Desc protoreflect.MessageDescriptor + + // Exporter must be provided in a purego environment in order to provide + // access to unexported fields. + Exporter exporter + + // OneofWrappers is list of pointers to oneof wrapper struct types. + OneofWrappers []any + + initMu sync.Mutex // protects all unexported fields + initDone uint32 + + reflectMessageInfo // for reflection implementation + coderMessageInfo // for fast-path method implementations +} + +// exporter is a function that returns a reference to the ith field of v, +// where v is a pointer to a struct. It returns nil if it does not support +// exporting the requested field (e.g., already exported). +type exporter func(v any, i int) any + +// getMessageInfo returns the MessageInfo for any message type that +// is generated by our implementation of protoc-gen-go (for v2 and on). +// If it is unable to obtain a MessageInfo, it returns nil. +func getMessageInfo(mt reflect.Type) *MessageInfo { + m, ok := reflect.Zero(mt).Interface().(protoreflect.ProtoMessage) + if !ok { + return nil + } + mr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo }) + if !ok { + return nil + } + return mr.ProtoMessageInfo() +} + +func (mi *MessageInfo) init() { + // This function is called in the hot path. Inline the sync.Once logic, + // since allocating a closure for Once.Do is expensive. + // Keep init small to ensure that it can be inlined. + if atomic.LoadUint32(&mi.initDone) == 0 { + mi.initOnce() + } +} + +func (mi *MessageInfo) initOnce() { + mi.initMu.Lock() + defer mi.initMu.Unlock() + if mi.initDone == 1 { + return + } + + t := mi.GoReflectType + if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct { + panic(fmt.Sprintf("got %v, want *struct kind", t)) + } + t = t.Elem() + + si := mi.makeStructInfo(t) + mi.makeReflectFuncs(t, si) + mi.makeCoderMethods(t, si) + + atomic.StoreUint32(&mi.initDone, 1) +} + +// getPointer returns the pointer for a message, which should be of +// the type of the MessageInfo. If the message is of a different type, +// it returns ok==false. +func (mi *MessageInfo) getPointer(m protoreflect.Message) (p pointer, ok bool) { + switch m := m.(type) { + case *messageState: + return m.pointer(), m.messageInfo() == mi + case *messageReflectWrapper: + return m.pointer(), m.messageInfo() == mi + } + return pointer{}, false +} + +type ( + SizeCache = int32 + WeakFields = map[int32]protoreflect.ProtoMessage + UnknownFields = unknownFieldsA // TODO: switch to unknownFieldsB + unknownFieldsA = []byte + unknownFieldsB = *[]byte + ExtensionFields = map[int32]ExtensionField +) + +var ( + sizecacheType = reflect.TypeOf(SizeCache(0)) + weakFieldsType = reflect.TypeOf(WeakFields(nil)) + unknownFieldsAType = reflect.TypeOf(unknownFieldsA(nil)) + unknownFieldsBType = reflect.TypeOf(unknownFieldsB(nil)) + extensionFieldsType = reflect.TypeOf(ExtensionFields(nil)) +) + +type structInfo struct { + sizecacheOffset offset + sizecacheType reflect.Type + weakOffset offset + weakType reflect.Type + unknownOffset offset + unknownType reflect.Type + extensionOffset offset + extensionType reflect.Type + + fieldsByNumber map[protoreflect.FieldNumber]reflect.StructField + oneofsByName map[protoreflect.Name]reflect.StructField + oneofWrappersByType map[reflect.Type]protoreflect.FieldNumber + oneofWrappersByNumber map[protoreflect.FieldNumber]reflect.Type +} + +func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo { + si := structInfo{ + sizecacheOffset: invalidOffset, + weakOffset: invalidOffset, + unknownOffset: invalidOffset, + extensionOffset: invalidOffset, + + fieldsByNumber: map[protoreflect.FieldNumber]reflect.StructField{}, + oneofsByName: map[protoreflect.Name]reflect.StructField{}, + oneofWrappersByType: map[reflect.Type]protoreflect.FieldNumber{}, + oneofWrappersByNumber: map[protoreflect.FieldNumber]reflect.Type{}, + } + +fieldLoop: + for i := 0; i < t.NumField(); i++ { + switch f := t.Field(i); f.Name { + case genid.SizeCache_goname, genid.SizeCacheA_goname: + if f.Type == sizecacheType { + si.sizecacheOffset = offsetOf(f, mi.Exporter) + si.sizecacheType = f.Type + } + case genid.WeakFields_goname, genid.WeakFieldsA_goname: + if f.Type == weakFieldsType { + si.weakOffset = offsetOf(f, mi.Exporter) + si.weakType = f.Type + } + case genid.UnknownFields_goname, genid.UnknownFieldsA_goname: + if f.Type == unknownFieldsAType || f.Type == unknownFieldsBType { + si.unknownOffset = offsetOf(f, mi.Exporter) + si.unknownType = f.Type + } + case genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname: + if f.Type == extensionFieldsType { + si.extensionOffset = offsetOf(f, mi.Exporter) + si.extensionType = f.Type + } + default: + for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { + if len(s) > 0 && strings.Trim(s, "0123456789") == "" { + n, _ := strconv.ParseUint(s, 10, 64) + si.fieldsByNumber[protoreflect.FieldNumber(n)] = f + continue fieldLoop + } + } + if s := f.Tag.Get("protobuf_oneof"); len(s) > 0 { + si.oneofsByName[protoreflect.Name(s)] = f + continue fieldLoop + } + } + } + + // Derive a mapping of oneof wrappers to fields. + oneofWrappers := mi.OneofWrappers + methods := make([]reflect.Method, 0, 2) + if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofFuncs"); ok { + methods = append(methods, m) + } + if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofWrappers"); ok { + methods = append(methods, m) + } + for _, fn := range methods { + for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { + if vs, ok := v.Interface().([]any); ok { + oneofWrappers = vs + } + } + } + for _, v := range oneofWrappers { + tf := reflect.TypeOf(v).Elem() + f := tf.Field(0) + for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { + if len(s) > 0 && strings.Trim(s, "0123456789") == "" { + n, _ := strconv.ParseUint(s, 10, 64) + si.oneofWrappersByType[tf] = protoreflect.FieldNumber(n) + si.oneofWrappersByNumber[protoreflect.FieldNumber(n)] = tf + break + } + } + } + + return si +} + +func (mi *MessageInfo) New() protoreflect.Message { + m := reflect.New(mi.GoReflectType.Elem()).Interface() + if r, ok := m.(protoreflect.ProtoMessage); ok { + return r.ProtoReflect() + } + return mi.MessageOf(m) +} +func (mi *MessageInfo) Zero() protoreflect.Message { + return mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface()) +} +func (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor { + return mi.Desc +} +func (mi *MessageInfo) Enum(i int) protoreflect.EnumType { + mi.init() + fd := mi.Desc.Fields().Get(i) + return Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()]) +} +func (mi *MessageInfo) Message(i int) protoreflect.MessageType { + mi.init() + fd := mi.Desc.Fields().Get(i) + switch { + case fd.IsWeak(): + mt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName()) + return mt + case fd.IsMap(): + return mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]} + default: + return Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()]) + } +} + +type mapEntryType struct { + desc protoreflect.MessageDescriptor + valType any // zero value of enum or message type +} + +func (mt mapEntryType) New() protoreflect.Message { + return nil +} +func (mt mapEntryType) Zero() protoreflect.Message { + return nil +} +func (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor { + return mt.desc +} +func (mt mapEntryType) Enum(i int) protoreflect.EnumType { + fd := mt.desc.Fields().Get(i) + if fd.Enum() == nil { + return nil + } + return Export{}.EnumTypeOf(mt.valType) +} +func (mt mapEntryType) Message(i int) protoreflect.MessageType { + fd := mt.desc.Fields().Get(i) + if fd.Message() == nil { + return nil + } + return Export{}.MessageTypeOf(mt.valType) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go new file mode 100644 index 0000000..ecb4623 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go @@ -0,0 +1,462 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/internal/detrand" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type reflectMessageInfo struct { + fields map[protoreflect.FieldNumber]*fieldInfo + oneofs map[protoreflect.Name]*oneofInfo + + // fieldTypes contains the zero value of an enum or message field. + // For lists, it contains the element type. + // For maps, it contains the entry value type. + fieldTypes map[protoreflect.FieldNumber]any + + // denseFields is a subset of fields where: + // 0 < fieldDesc.Number() < len(denseFields) + // It provides faster access to the fieldInfo, but may be incomplete. + denseFields []*fieldInfo + + // rangeInfos is a list of all fields (not belonging to a oneof) and oneofs. + rangeInfos []any // either *fieldInfo or *oneofInfo + + getUnknown func(pointer) protoreflect.RawFields + setUnknown func(pointer, protoreflect.RawFields) + extensionMap func(pointer) *extensionMap + + nilMessage atomicNilMessage +} + +// makeReflectFuncs generates the set of functions to support reflection. +func (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) { + mi.makeKnownFieldsFunc(si) + mi.makeUnknownFieldsFunc(t, si) + mi.makeExtensionFieldsFunc(t, si) + mi.makeFieldTypes(si) +} + +// makeKnownFieldsFunc generates functions for operations that can be performed +// on each protobuf message field. It takes in a reflect.Type representing the +// Go struct and matches message fields with struct fields. +// +// This code assumes that the struct is well-formed and panics if there are +// any discrepancies. +func (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) { + mi.fields = map[protoreflect.FieldNumber]*fieldInfo{} + md := mi.Desc + fds := md.Fields() + for i := 0; i < fds.Len(); i++ { + fd := fds.Get(i) + fs := si.fieldsByNumber[fd.Number()] + isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() + if isOneof { + fs = si.oneofsByName[fd.ContainingOneof().Name()] + } + var fi fieldInfo + switch { + case fs.Type == nil: + fi = fieldInfoForMissing(fd) // never occurs for officially generated message types + case isOneof: + fi = fieldInfoForOneof(fd, fs, mi.Exporter, si.oneofWrappersByNumber[fd.Number()]) + case fd.IsMap(): + fi = fieldInfoForMap(fd, fs, mi.Exporter) + case fd.IsList(): + fi = fieldInfoForList(fd, fs, mi.Exporter) + case fd.IsWeak(): + fi = fieldInfoForWeakMessage(fd, si.weakOffset) + case fd.Message() != nil: + fi = fieldInfoForMessage(fd, fs, mi.Exporter) + default: + fi = fieldInfoForScalar(fd, fs, mi.Exporter) + } + mi.fields[fd.Number()] = &fi + } + + mi.oneofs = map[protoreflect.Name]*oneofInfo{} + for i := 0; i < md.Oneofs().Len(); i++ { + od := md.Oneofs().Get(i) + mi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter) + } + + mi.denseFields = make([]*fieldInfo, fds.Len()*2) + for i := 0; i < fds.Len(); i++ { + if fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) { + mi.denseFields[fd.Number()] = mi.fields[fd.Number()] + } + } + + for i := 0; i < fds.Len(); { + fd := fds.Get(i) + if od := fd.ContainingOneof(); od != nil && !od.IsSynthetic() { + mi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()]) + i += od.Fields().Len() + } else { + mi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()]) + i++ + } + } + + // Introduce instability to iteration order, but keep it deterministic. + if len(mi.rangeInfos) > 1 && detrand.Bool() { + i := detrand.Intn(len(mi.rangeInfos) - 1) + mi.rangeInfos[i], mi.rangeInfos[i+1] = mi.rangeInfos[i+1], mi.rangeInfos[i] + } +} + +func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) { + switch { + case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType: + // Handle as []byte. + mi.getUnknown = func(p pointer) protoreflect.RawFields { + if p.IsNil() { + return nil + } + return *p.Apply(mi.unknownOffset).Bytes() + } + mi.setUnknown = func(p pointer, b protoreflect.RawFields) { + if p.IsNil() { + panic("invalid SetUnknown on nil Message") + } + *p.Apply(mi.unknownOffset).Bytes() = b + } + case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType: + // Handle as *[]byte. + mi.getUnknown = func(p pointer) protoreflect.RawFields { + if p.IsNil() { + return nil + } + bp := p.Apply(mi.unknownOffset).BytesPtr() + if *bp == nil { + return nil + } + return **bp + } + mi.setUnknown = func(p pointer, b protoreflect.RawFields) { + if p.IsNil() { + panic("invalid SetUnknown on nil Message") + } + bp := p.Apply(mi.unknownOffset).BytesPtr() + if *bp == nil { + *bp = new([]byte) + } + **bp = b + } + default: + mi.getUnknown = func(pointer) protoreflect.RawFields { + return nil + } + mi.setUnknown = func(p pointer, _ protoreflect.RawFields) { + if p.IsNil() { + panic("invalid SetUnknown on nil Message") + } + } + } +} + +func (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type, si structInfo) { + if si.extensionOffset.IsValid() { + mi.extensionMap = func(p pointer) *extensionMap { + if p.IsNil() { + return (*extensionMap)(nil) + } + v := p.Apply(si.extensionOffset).AsValueOf(extensionFieldsType) + return (*extensionMap)(v.Interface().(*map[int32]ExtensionField)) + } + } else { + mi.extensionMap = func(pointer) *extensionMap { + return (*extensionMap)(nil) + } + } +} +func (mi *MessageInfo) makeFieldTypes(si structInfo) { + md := mi.Desc + fds := md.Fields() + for i := 0; i < fds.Len(); i++ { + var ft reflect.Type + fd := fds.Get(i) + fs := si.fieldsByNumber[fd.Number()] + isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() + if isOneof { + fs = si.oneofsByName[fd.ContainingOneof().Name()] + } + var isMessage bool + switch { + case fs.Type == nil: + continue // never occurs for officially generated message types + case isOneof: + if fd.Enum() != nil || fd.Message() != nil { + ft = si.oneofWrappersByNumber[fd.Number()].Field(0).Type + } + case fd.IsMap(): + if fd.MapValue().Enum() != nil || fd.MapValue().Message() != nil { + ft = fs.Type.Elem() + } + isMessage = fd.MapValue().Message() != nil + case fd.IsList(): + if fd.Enum() != nil || fd.Message() != nil { + ft = fs.Type.Elem() + } + isMessage = fd.Message() != nil + case fd.Enum() != nil: + ft = fs.Type + if fd.HasPresence() && ft.Kind() == reflect.Ptr { + ft = ft.Elem() + } + case fd.Message() != nil: + ft = fs.Type + if fd.IsWeak() { + ft = nil + } + isMessage = true + } + if isMessage && ft != nil && ft.Kind() != reflect.Ptr { + ft = reflect.PtrTo(ft) // never occurs for officially generated message types + } + if ft != nil { + if mi.fieldTypes == nil { + mi.fieldTypes = make(map[protoreflect.FieldNumber]any) + } + mi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface() + } + } +} + +type extensionMap map[int32]ExtensionField + +func (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if m != nil { + for _, x := range *m { + xd := x.Type().TypeDescriptor() + v := x.Value() + if xd.IsList() && v.List().Len() == 0 { + continue + } + if !f(xd, v) { + return + } + } + } +} +func (m *extensionMap) Has(xd protoreflect.ExtensionTypeDescriptor) (ok bool) { + if m == nil { + return false + } + x, ok := (*m)[int32(xd.Number())] + if !ok { + return false + } + if x.isUnexpandedLazy() { + // Avoid calling x.Value(), which triggers a lazy unmarshal. + return true + } + switch { + case xd.IsList(): + return x.Value().List().Len() > 0 + case xd.IsMap(): + return x.Value().Map().Len() > 0 + } + return true +} +func (m *extensionMap) Clear(xd protoreflect.ExtensionTypeDescriptor) { + delete(*m, int32(xd.Number())) +} +func (m *extensionMap) Get(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { + if m != nil { + if x, ok := (*m)[int32(xd.Number())]; ok { + return x.Value() + } + } + return xd.Type().Zero() +} +func (m *extensionMap) Set(xd protoreflect.ExtensionTypeDescriptor, v protoreflect.Value) { + xt := xd.Type() + isValid := true + switch { + case !xt.IsValidValue(v): + isValid = false + case xd.IsList(): + isValid = v.List().IsValid() + case xd.IsMap(): + isValid = v.Map().IsValid() + case xd.Message() != nil: + isValid = v.Message().IsValid() + } + if !isValid { + panic(fmt.Sprintf("%v: assigning invalid value", xd.FullName())) + } + + if *m == nil { + *m = make(map[int32]ExtensionField) + } + var x ExtensionField + x.Set(xt, v) + (*m)[int32(xd.Number())] = x +} +func (m *extensionMap) Mutable(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { + if xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() { + panic("invalid Mutable on field with non-composite type") + } + if x, ok := (*m)[int32(xd.Number())]; ok { + return x.Value() + } + v := xd.Type().New() + m.Set(xd, v) + return v +} + +// MessageState is a data structure that is nested as the first field in a +// concrete message. It provides a way to implement the ProtoReflect method +// in an allocation-free way without needing to have a shadow Go type generated +// for every message type. This technique only works using unsafe. +// +// Example generated code: +// +// type M struct { +// state protoimpl.MessageState +// +// Field1 int32 +// Field2 string +// Field3 *BarMessage +// ... +// } +// +// func (m *M) ProtoReflect() protoreflect.Message { +// mi := &file_fizz_buzz_proto_msgInfos[5] +// if protoimpl.UnsafeEnabled && m != nil { +// ms := protoimpl.X.MessageStateOf(Pointer(m)) +// if ms.LoadMessageInfo() == nil { +// ms.StoreMessageInfo(mi) +// } +// return ms +// } +// return mi.MessageOf(m) +// } +// +// The MessageState type holds a *MessageInfo, which must be atomically set to +// the message info associated with a given message instance. +// By unsafely converting a *M into a *MessageState, the MessageState object +// has access to all the information needed to implement protobuf reflection. +// It has access to the message info as its first field, and a pointer to the +// MessageState is identical to a pointer to the concrete message value. +// +// Requirements: +// - The type M must implement protoreflect.ProtoMessage. +// - The address of m must not be nil. +// - The address of m and the address of m.state must be equal, +// even though they are different Go types. +type MessageState struct { + pragma.NoUnkeyedLiterals + pragma.DoNotCompare + pragma.DoNotCopy + + atomicMessageInfo *MessageInfo +} + +type messageState MessageState + +var ( + _ protoreflect.Message = (*messageState)(nil) + _ unwrapper = (*messageState)(nil) +) + +// messageDataType is a tuple of a pointer to the message data and +// a pointer to the message type. It is a generalized way of providing a +// reflective view over a message instance. The disadvantage of this approach +// is the need to allocate this tuple of 16B. +type messageDataType struct { + p pointer + mi *MessageInfo +} + +type ( + messageReflectWrapper messageDataType + messageIfaceWrapper messageDataType +) + +var ( + _ protoreflect.Message = (*messageReflectWrapper)(nil) + _ unwrapper = (*messageReflectWrapper)(nil) + _ protoreflect.ProtoMessage = (*messageIfaceWrapper)(nil) + _ unwrapper = (*messageIfaceWrapper)(nil) +) + +// MessageOf returns a reflective view over a message. The input must be a +// pointer to a named Go struct. If the provided type has a ProtoReflect method, +// it must be implemented by calling this method. +func (mi *MessageInfo) MessageOf(m any) protoreflect.Message { + if reflect.TypeOf(m) != mi.GoReflectType { + panic(fmt.Sprintf("type mismatch: got %T, want %v", m, mi.GoReflectType)) + } + p := pointerOfIface(m) + if p.IsNil() { + return mi.nilMessage.Init(mi) + } + return &messageReflectWrapper{p, mi} +} + +func (m *messageReflectWrapper) pointer() pointer { return m.p } +func (m *messageReflectWrapper) messageInfo() *MessageInfo { return m.mi } + +// Reset implements the v1 proto.Message.Reset method. +func (m *messageIfaceWrapper) Reset() { + if mr, ok := m.protoUnwrap().(interface{ Reset() }); ok { + mr.Reset() + return + } + rv := reflect.ValueOf(m.protoUnwrap()) + if rv.Kind() == reflect.Ptr && !rv.IsNil() { + rv.Elem().Set(reflect.Zero(rv.Type().Elem())) + } +} +func (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message { + return (*messageReflectWrapper)(m) +} +func (m *messageIfaceWrapper) protoUnwrap() any { + return m.p.AsIfaceOf(m.mi.GoReflectType.Elem()) +} + +// checkField verifies that the provided field descriptor is valid. +// Exactly one of the returned values is populated. +func (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionTypeDescriptor) { + var fi *fieldInfo + if n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) { + fi = mi.denseFields[n] + } else { + fi = mi.fields[n] + } + if fi != nil { + if fi.fieldDesc != fd { + if got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want { + panic(fmt.Sprintf("mismatching field: got %v, want %v", got, want)) + } + panic(fmt.Sprintf("mismatching field: %v", fd.FullName())) + } + return fi, nil + } + + if fd.IsExtension() { + if got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want { + // TODO: Should this be exact containing message descriptor match? + panic(fmt.Sprintf("extension %v has mismatching containing message: got %v, want %v", fd.FullName(), got, want)) + } + if !mi.Desc.ExtensionRanges().Has(fd.Number()) { + panic(fmt.Sprintf("extension %v extends %v outside the extension range", fd.FullName(), mi.Desc.FullName())) + } + xtd, ok := fd.(protoreflect.ExtensionTypeDescriptor) + if !ok { + panic(fmt.Sprintf("extension %v does not implement protoreflect.ExtensionTypeDescriptor", fd.FullName())) + } + return nil, xtd + } + panic(fmt.Sprintf("field %v is invalid", fd.FullName())) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go new file mode 100644 index 0000000..986322b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go @@ -0,0 +1,543 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "math" + "reflect" + "sync" + + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +type fieldInfo struct { + fieldDesc protoreflect.FieldDescriptor + + // These fields are used for protobuf reflection support. + has func(pointer) bool + clear func(pointer) + get func(pointer) protoreflect.Value + set func(pointer, protoreflect.Value) + mutable func(pointer) protoreflect.Value + newMessage func() protoreflect.Message + newField func() protoreflect.Value +} + +func fieldInfoForMissing(fd protoreflect.FieldDescriptor) fieldInfo { + // This never occurs for generated message types. + // It implies that a hand-crafted type has missing Go fields + // for specific protobuf message fields. + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + return false + }, + clear: func(p pointer) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + get: func(p pointer) protoreflect.Value { + return fd.Default() + }, + set: func(p pointer, v protoreflect.Value) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + mutable: func(p pointer) protoreflect.Value { + panic("missing Go struct field for " + string(fd.FullName())) + }, + newMessage: func() protoreflect.Message { + panic("missing Go struct field for " + string(fd.FullName())) + }, + newField: func() protoreflect.Value { + if v := fd.Default(); v.IsValid() { + return v + } + panic("missing Go struct field for " + string(fd.FullName())) + }, + } +} + +func fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo { + ft := fs.Type + if ft.Kind() != reflect.Interface { + panic(fmt.Sprintf("field %v has invalid type: got %v, want interface kind", fd.FullName(), ft)) + } + if ot.Kind() != reflect.Struct { + panic(fmt.Sprintf("field %v has invalid type: got %v, want struct kind", fd.FullName(), ot)) + } + if !reflect.PtrTo(ot).Implements(ft) { + panic(fmt.Sprintf("field %v has invalid type: %v does not implement %v", fd.FullName(), ot, ft)) + } + conv := NewConverter(ot.Field(0).Type, fd) + isMessage := fd.Message() != nil + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + // NOTE: The logic below intentionally assumes that oneof fields are + // well-formatted. That is, the oneof interface never contains a + // typed nil pointer to one of the wrapper structs. + + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + return false + } + return true + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot { + // NOTE: We intentionally don't check for rv.Elem().IsNil() + // so that (*OneofWrapperType)(nil) gets cleared to nil. + return + } + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + return conv.Zero() + } + rv = rv.Elem().Elem().Field(0) + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + rv.Set(reflect.New(ot)) + } + rv = rv.Elem().Elem().Field(0) + rv.Set(conv.GoValueOf(v)) + }, + mutable: func(p pointer) protoreflect.Value { + if !isMessage { + panic(fmt.Sprintf("field %v with invalid Mutable call on field with non-composite type", fd.FullName())) + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + rv.Set(reflect.New(ot)) + } + rv = rv.Elem().Elem().Field(0) + if rv.Kind() == reflect.Ptr && rv.IsNil() { + rv.Set(conv.GoValueOf(protoreflect.ValueOfMessage(conv.New().Message()))) + } + return conv.PBValueOf(rv) + }, + newMessage: func() protoreflect.Message { + return conv.New().Message() + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +func fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + if ft.Kind() != reflect.Map { + panic(fmt.Sprintf("field %v has invalid type: got %v, want map kind", fd.FullName(), ft)) + } + conv := NewConverter(ft, fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + return rv.Len() > 0 + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.Len() == 0 { + return conv.Zero() + } + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + pv := conv.GoValueOf(v) + if pv.IsNil() { + panic(fmt.Sprintf("map field %v cannot be set with read-only value", fd.FullName())) + } + rv.Set(pv) + }, + mutable: func(p pointer) protoreflect.Value { + v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if v.IsNil() { + v.Set(reflect.MakeMap(fs.Type)) + } + return conv.PBValueOf(v) + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +func fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + if ft.Kind() != reflect.Slice { + panic(fmt.Sprintf("field %v has invalid type: got %v, want slice kind", fd.FullName(), ft)) + } + conv := NewConverter(reflect.PtrTo(ft), fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + return rv.Len() > 0 + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type) + if rv.Elem().Len() == 0 { + return conv.Zero() + } + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + pv := conv.GoValueOf(v) + if pv.IsNil() { + panic(fmt.Sprintf("list field %v cannot be set with read-only value", fd.FullName())) + } + rv.Set(pv.Elem()) + }, + mutable: func(p pointer) protoreflect.Value { + v := p.Apply(fieldOffset).AsValueOf(fs.Type) + return conv.PBValueOf(v) + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +var ( + nilBytes = reflect.ValueOf([]byte(nil)) + emptyBytes = reflect.ValueOf([]byte{}) +) + +func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + nullable := fd.HasPresence() + isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 + if nullable { + if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice { + // This never occurs for generated message types. + // Despite the protobuf type system specifying presence, + // the Go field type cannot represent it. + nullable = false + } + if ft.Kind() == reflect.Ptr { + ft = ft.Elem() + } + } + conv := NewConverter(ft, fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if nullable { + return !rv.IsNil() + } + switch rv.Kind() { + case reflect.Bool: + return rv.Bool() + case reflect.Int32, reflect.Int64: + return rv.Int() != 0 + case reflect.Uint32, reflect.Uint64: + return rv.Uint() != 0 + case reflect.Float32, reflect.Float64: + return rv.Float() != 0 || math.Signbit(rv.Float()) + case reflect.String, reflect.Slice: + return rv.Len() > 0 + default: + panic(fmt.Sprintf("field %v has invalid type: %v", fd.FullName(), rv.Type())) // should never happen + } + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if nullable { + if rv.IsNil() { + return conv.Zero() + } + if rv.Kind() == reflect.Ptr { + rv = rv.Elem() + } + } + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if nullable && rv.Kind() == reflect.Ptr { + if rv.IsNil() { + rv.Set(reflect.New(ft)) + } + rv = rv.Elem() + } + rv.Set(conv.GoValueOf(v)) + if isBytes && rv.Len() == 0 { + if nullable { + rv.Set(emptyBytes) // preserve presence + } else { + rv.Set(nilBytes) // do not preserve presence + } + } + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +func fieldInfoForWeakMessage(fd protoreflect.FieldDescriptor, weakOffset offset) fieldInfo { + if !flags.ProtoLegacy { + panic("no support for proto1 weak fields") + } + + var once sync.Once + var messageType protoreflect.MessageType + lazyInit := func() { + once.Do(func() { + messageName := fd.Message().FullName() + messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) + if messageType == nil { + panic(fmt.Sprintf("weak message %v for field %v is not linked in", messageName, fd.FullName())) + } + }) + } + + num := fd.Number() + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + _, ok := p.Apply(weakOffset).WeakFields().get(num) + return ok + }, + clear: func(p pointer) { + p.Apply(weakOffset).WeakFields().clear(num) + }, + get: func(p pointer) protoreflect.Value { + lazyInit() + if p.IsNil() { + return protoreflect.ValueOfMessage(messageType.Zero()) + } + m, ok := p.Apply(weakOffset).WeakFields().get(num) + if !ok { + return protoreflect.ValueOfMessage(messageType.Zero()) + } + return protoreflect.ValueOfMessage(m.ProtoReflect()) + }, + set: func(p pointer, v protoreflect.Value) { + lazyInit() + m := v.Message() + if m.Descriptor() != messageType.Descriptor() { + if got, want := m.Descriptor().FullName(), messageType.Descriptor().FullName(); got != want { + panic(fmt.Sprintf("field %v has mismatching message descriptor: got %v, want %v", fd.FullName(), got, want)) + } + panic(fmt.Sprintf("field %v has mismatching message descriptor: %v", fd.FullName(), m.Descriptor().FullName())) + } + p.Apply(weakOffset).WeakFields().set(num, m.Interface()) + }, + mutable: func(p pointer) protoreflect.Value { + lazyInit() + fs := p.Apply(weakOffset).WeakFields() + m, ok := fs.get(num) + if !ok { + m = messageType.New().Interface() + fs.set(num, m) + } + return protoreflect.ValueOfMessage(m.ProtoReflect()) + }, + newMessage: func() protoreflect.Message { + lazyInit() + return messageType.New() + }, + newField: func() protoreflect.Value { + lazyInit() + return protoreflect.ValueOfMessage(messageType.New()) + }, + } +} + +func fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + conv := NewConverter(ft, fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if fs.Type.Kind() != reflect.Ptr { + return !isZero(rv) + } + return !rv.IsNil() + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(conv.GoValueOf(v)) + if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { + panic(fmt.Sprintf("field %v has invalid nil pointer", fd.FullName())) + } + }, + mutable: func(p pointer) protoreflect.Value { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { + rv.Set(conv.GoValueOf(conv.New())) + } + return conv.PBValueOf(rv) + }, + newMessage: func() protoreflect.Message { + return conv.New().Message() + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +type oneofInfo struct { + oneofDesc protoreflect.OneofDescriptor + which func(pointer) protoreflect.FieldNumber +} + +func makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo { + oi := &oneofInfo{oneofDesc: od} + if od.IsSynthetic() { + fs := si.fieldsByNumber[od.Fields().Get(0).Number()] + fieldOffset := offsetOf(fs, x) + oi.which = func(p pointer) protoreflect.FieldNumber { + if p.IsNil() { + return 0 + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() { // valid on either *T or []byte + return 0 + } + return od.Fields().Get(0).Number() + } + } else { + fs := si.oneofsByName[od.Name()] + fieldOffset := offsetOf(fs, x) + oi.which = func(p pointer) protoreflect.FieldNumber { + if p.IsNil() { + return 0 + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() { + return 0 + } + rv = rv.Elem() + if rv.IsNil() { + return 0 + } + return si.oneofWrappersByType[rv.Type().Elem()] + } + } + return oi +} + +// isZero is identical to reflect.Value.IsZero. +// TODO: Remove this when Go1.13 is the minimally supported Go version. +func isZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return math.Float64bits(v.Float()) == 0 + case reflect.Complex64, reflect.Complex128: + c := v.Complex() + return math.Float64bits(real(c)) == 0 && math.Float64bits(imag(c)) == 0 + case reflect.Array: + for i := 0; i < v.Len(); i++ { + if !isZero(v.Index(i)) { + return false + } + } + return true + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: + return v.IsNil() + case reflect.String: + return v.Len() == 0 + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + if !isZero(v.Field(i)) { + return false + } + } + return true + default: + panic(&reflect.ValueError{Method: "reflect.Value.IsZero", Kind: v.Kind()}) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go new file mode 100644 index 0000000..99dc23c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go @@ -0,0 +1,271 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package impl + +import ( + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +func (m *messageState) Descriptor() protoreflect.MessageDescriptor { + return m.messageInfo().Desc +} +func (m *messageState) Type() protoreflect.MessageType { + return m.messageInfo() +} +func (m *messageState) New() protoreflect.Message { + return m.messageInfo().New() +} +func (m *messageState) Interface() protoreflect.ProtoMessage { + return m.protoUnwrap().(protoreflect.ProtoMessage) +} +func (m *messageState) protoUnwrap() any { + return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) +} +func (m *messageState) ProtoMethods() *protoiface.Methods { + mi := m.messageInfo() + mi.init() + return &mi.methods +} + +// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code +// to be able to retrieve a v2 MessageInfo struct. +// +// WARNING: This method is exempt from the compatibility promise and +// may be removed in the future without warning. +func (m *messageState) ProtoMessageInfo() *MessageInfo { + return m.messageInfo() +} + +func (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + mi := m.messageInfo() + mi.init() + for _, ri := range mi.rangeInfos { + switch ri := ri.(type) { + case *fieldInfo: + if ri.has(m.pointer()) { + if !f(ri.fieldDesc, ri.get(m.pointer())) { + return + } + } + case *oneofInfo: + if n := ri.which(m.pointer()); n > 0 { + fi := mi.fields[n] + if !f(fi.fieldDesc, fi.get(m.pointer())) { + return + } + } + } + } + mi.extensionMap(m.pointer()).Range(f) +} +func (m *messageState) Has(fd protoreflect.FieldDescriptor) bool { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.has(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Has(xd) + } +} +func (m *messageState) Clear(fd protoreflect.FieldDescriptor) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.clear(m.pointer()) + } else { + mi.extensionMap(m.pointer()).Clear(xd) + } +} +func (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.get(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Get(xd) + } +} +func (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.set(m.pointer(), v) + } else { + mi.extensionMap(m.pointer()).Set(xd, v) + } +} +func (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.mutable(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Mutable(xd) + } +} +func (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.newField() + } else { + return xd.Type().New() + } +} +func (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + mi := m.messageInfo() + mi.init() + if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { + return od.Fields().ByNumber(oi.which(m.pointer())) + } + panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) +} +func (m *messageState) GetUnknown() protoreflect.RawFields { + mi := m.messageInfo() + mi.init() + return mi.getUnknown(m.pointer()) +} +func (m *messageState) SetUnknown(b protoreflect.RawFields) { + mi := m.messageInfo() + mi.init() + mi.setUnknown(m.pointer(), b) +} +func (m *messageState) IsValid() bool { + return !m.pointer().IsNil() +} + +func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor { + return m.messageInfo().Desc +} +func (m *messageReflectWrapper) Type() protoreflect.MessageType { + return m.messageInfo() +} +func (m *messageReflectWrapper) New() protoreflect.Message { + return m.messageInfo().New() +} +func (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage { + if m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok { + return m + } + return (*messageIfaceWrapper)(m) +} +func (m *messageReflectWrapper) protoUnwrap() any { + return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) +} +func (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods { + mi := m.messageInfo() + mi.init() + return &mi.methods +} + +// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code +// to be able to retrieve a v2 MessageInfo struct. +// +// WARNING: This method is exempt from the compatibility promise and +// may be removed in the future without warning. +func (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo { + return m.messageInfo() +} + +func (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + mi := m.messageInfo() + mi.init() + for _, ri := range mi.rangeInfos { + switch ri := ri.(type) { + case *fieldInfo: + if ri.has(m.pointer()) { + if !f(ri.fieldDesc, ri.get(m.pointer())) { + return + } + } + case *oneofInfo: + if n := ri.which(m.pointer()); n > 0 { + fi := mi.fields[n] + if !f(fi.fieldDesc, fi.get(m.pointer())) { + return + } + } + } + } + mi.extensionMap(m.pointer()).Range(f) +} +func (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.has(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Has(xd) + } +} +func (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.clear(m.pointer()) + } else { + mi.extensionMap(m.pointer()).Clear(xd) + } +} +func (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.get(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Get(xd) + } +} +func (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.set(m.pointer(), v) + } else { + mi.extensionMap(m.pointer()).Set(xd, v) + } +} +func (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.mutable(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Mutable(xd) + } +} +func (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.newField() + } else { + return xd.Type().New() + } +} +func (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + mi := m.messageInfo() + mi.init() + if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { + return od.Fields().ByNumber(oi.which(m.pointer())) + } + panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) +} +func (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields { + mi := m.messageInfo() + mi.init() + return mi.getUnknown(m.pointer()) +} +func (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) { + mi := m.messageInfo() + mi.init() + mi.setUnknown(m.pointer(), b) +} +func (m *messageReflectWrapper) IsValid() bool { + return !m.pointer().IsNil() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go new file mode 100644 index 0000000..da685e8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go @@ -0,0 +1,215 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package impl + +import ( + "fmt" + "reflect" + "sync" +) + +const UnsafeEnabled = false + +// Pointer is an opaque pointer type. +type Pointer any + +// offset represents the offset to a struct field, accessible from a pointer. +// The offset is the field index into a struct. +type offset struct { + index int + export exporter +} + +// offsetOf returns a field offset for the struct field. +func offsetOf(f reflect.StructField, x exporter) offset { + if len(f.Index) != 1 { + panic("embedded structs are not supported") + } + if f.PkgPath == "" { + return offset{index: f.Index[0]} // field is already exported + } + if x == nil { + panic("exporter must be provided for unexported field") + } + return offset{index: f.Index[0], export: x} +} + +// IsValid reports whether the offset is valid. +func (f offset) IsValid() bool { return f.index >= 0 } + +// invalidOffset is an invalid field offset. +var invalidOffset = offset{index: -1} + +// zeroOffset is a noop when calling pointer.Apply. +var zeroOffset = offset{index: 0} + +// pointer is an abstract representation of a pointer to a struct or field. +type pointer struct{ v reflect.Value } + +// pointerOf returns p as a pointer. +func pointerOf(p Pointer) pointer { + return pointerOfIface(p) +} + +// pointerOfValue returns v as a pointer. +func pointerOfValue(v reflect.Value) pointer { + return pointer{v: v} +} + +// pointerOfIface returns the pointer portion of an interface. +func pointerOfIface(v any) pointer { + return pointer{v: reflect.ValueOf(v)} +} + +// IsNil reports whether the pointer is nil. +func (p pointer) IsNil() bool { + return p.v.IsNil() +} + +// Apply adds an offset to the pointer to derive a new pointer +// to a specified field. The current pointer must be pointing at a struct. +func (p pointer) Apply(f offset) pointer { + if f.export != nil { + if v := reflect.ValueOf(f.export(p.v.Interface(), f.index)); v.IsValid() { + return pointer{v: v} + } + } + return pointer{v: p.v.Elem().Field(f.index).Addr()} +} + +// AsValueOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t)) +func (p pointer) AsValueOf(t reflect.Type) reflect.Value { + if got := p.v.Type().Elem(); got != t { + panic(fmt.Sprintf("invalid type: got %v, want %v", got, t)) + } + return p.v +} + +// AsIfaceOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to p.AsValueOf(t).Interface() +func (p pointer) AsIfaceOf(t reflect.Type) any { + return p.AsValueOf(t).Interface() +} + +func (p pointer) Bool() *bool { return p.v.Interface().(*bool) } +func (p pointer) BoolPtr() **bool { return p.v.Interface().(**bool) } +func (p pointer) BoolSlice() *[]bool { return p.v.Interface().(*[]bool) } +func (p pointer) Int32() *int32 { return p.v.Interface().(*int32) } +func (p pointer) Int32Ptr() **int32 { return p.v.Interface().(**int32) } +func (p pointer) Int32Slice() *[]int32 { return p.v.Interface().(*[]int32) } +func (p pointer) Int64() *int64 { return p.v.Interface().(*int64) } +func (p pointer) Int64Ptr() **int64 { return p.v.Interface().(**int64) } +func (p pointer) Int64Slice() *[]int64 { return p.v.Interface().(*[]int64) } +func (p pointer) Uint32() *uint32 { return p.v.Interface().(*uint32) } +func (p pointer) Uint32Ptr() **uint32 { return p.v.Interface().(**uint32) } +func (p pointer) Uint32Slice() *[]uint32 { return p.v.Interface().(*[]uint32) } +func (p pointer) Uint64() *uint64 { return p.v.Interface().(*uint64) } +func (p pointer) Uint64Ptr() **uint64 { return p.v.Interface().(**uint64) } +func (p pointer) Uint64Slice() *[]uint64 { return p.v.Interface().(*[]uint64) } +func (p pointer) Float32() *float32 { return p.v.Interface().(*float32) } +func (p pointer) Float32Ptr() **float32 { return p.v.Interface().(**float32) } +func (p pointer) Float32Slice() *[]float32 { return p.v.Interface().(*[]float32) } +func (p pointer) Float64() *float64 { return p.v.Interface().(*float64) } +func (p pointer) Float64Ptr() **float64 { return p.v.Interface().(**float64) } +func (p pointer) Float64Slice() *[]float64 { return p.v.Interface().(*[]float64) } +func (p pointer) String() *string { return p.v.Interface().(*string) } +func (p pointer) StringPtr() **string { return p.v.Interface().(**string) } +func (p pointer) StringSlice() *[]string { return p.v.Interface().(*[]string) } +func (p pointer) Bytes() *[]byte { return p.v.Interface().(*[]byte) } +func (p pointer) BytesPtr() **[]byte { return p.v.Interface().(**[]byte) } +func (p pointer) BytesSlice() *[][]byte { return p.v.Interface().(*[][]byte) } +func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.v.Interface().(*WeakFields)) } +func (p pointer) Extensions() *map[int32]ExtensionField { + return p.v.Interface().(*map[int32]ExtensionField) +} + +func (p pointer) Elem() pointer { + return pointer{v: p.v.Elem()} +} + +// PointerSlice copies []*T from p as a new []pointer. +// This behavior differs from the implementation in pointer_unsafe.go. +func (p pointer) PointerSlice() []pointer { + // TODO: reconsider this + if p.v.IsNil() { + return nil + } + n := p.v.Elem().Len() + s := make([]pointer, n) + for i := 0; i < n; i++ { + s[i] = pointer{v: p.v.Elem().Index(i)} + } + return s +} + +// AppendPointerSlice appends v to p, which must be a []*T. +func (p pointer) AppendPointerSlice(v pointer) { + sp := p.v.Elem() + sp.Set(reflect.Append(sp, v.v)) +} + +// SetPointer sets *p to v. +func (p pointer) SetPointer(v pointer) { + p.v.Elem().Set(v.v) +} + +func growSlice(p pointer, addCap int) { + // TODO: Once we only support Go 1.20 and newer, use reflect.Grow. + in := p.v.Elem() + out := reflect.MakeSlice(in.Type(), in.Len(), in.Len()+addCap) + reflect.Copy(out, in) + p.v.Elem().Set(out) +} + +func (p pointer) growBoolSlice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growInt32Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growUint32Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growInt64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growUint64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growFloat64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growFloat32Slice(addCap int) { + growSlice(p, addCap) +} + +func (Export) MessageStateOf(p Pointer) *messageState { panic("not supported") } +func (ms *messageState) pointer() pointer { panic("not supported") } +func (ms *messageState) messageInfo() *MessageInfo { panic("not supported") } +func (ms *messageState) LoadMessageInfo() *MessageInfo { panic("not supported") } +func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { panic("not supported") } + +type atomicNilMessage struct { + once sync.Once + m messageReflectWrapper +} + +func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper { + m.once.Do(func() { + m.m.p = pointerOfIface(reflect.Zero(mi.GoReflectType).Interface()) + m.m.mi = mi + }) + return &m.m +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go new file mode 100644 index 0000000..5f20ca5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go @@ -0,0 +1,215 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine +// +build !purego,!appengine + +package impl + +import ( + "reflect" + "sync/atomic" + "unsafe" +) + +const UnsafeEnabled = true + +// Pointer is an opaque pointer type. +type Pointer unsafe.Pointer + +// offset represents the offset to a struct field, accessible from a pointer. +// The offset is the byte offset to the field from the start of the struct. +type offset uintptr + +// offsetOf returns a field offset for the struct field. +func offsetOf(f reflect.StructField, x exporter) offset { + return offset(f.Offset) +} + +// IsValid reports whether the offset is valid. +func (f offset) IsValid() bool { return f != invalidOffset } + +// invalidOffset is an invalid field offset. +var invalidOffset = ^offset(0) + +// zeroOffset is a noop when calling pointer.Apply. +var zeroOffset = offset(0) + +// pointer is a pointer to a message struct or field. +type pointer struct{ p unsafe.Pointer } + +// pointerOf returns p as a pointer. +func pointerOf(p Pointer) pointer { + return pointer{p: unsafe.Pointer(p)} +} + +// pointerOfValue returns v as a pointer. +func pointerOfValue(v reflect.Value) pointer { + return pointer{p: unsafe.Pointer(v.Pointer())} +} + +// pointerOfIface returns the pointer portion of an interface. +func pointerOfIface(v any) pointer { + type ifaceHeader struct { + Type unsafe.Pointer + Data unsafe.Pointer + } + return pointer{p: (*ifaceHeader)(unsafe.Pointer(&v)).Data} +} + +// IsNil reports whether the pointer is nil. +func (p pointer) IsNil() bool { + return p.p == nil +} + +// Apply adds an offset to the pointer to derive a new pointer +// to a specified field. The pointer must be valid and pointing at a struct. +func (p pointer) Apply(f offset) pointer { + if p.IsNil() { + panic("invalid nil pointer") + } + return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))} +} + +// AsValueOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t)) +func (p pointer) AsValueOf(t reflect.Type) reflect.Value { + return reflect.NewAt(t, p.p) +} + +// AsIfaceOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to p.AsValueOf(t).Interface() +func (p pointer) AsIfaceOf(t reflect.Type) any { + // TODO: Use tricky unsafe magic to directly create ifaceHeader. + return p.AsValueOf(t).Interface() +} + +func (p pointer) Bool() *bool { return (*bool)(p.p) } +func (p pointer) BoolPtr() **bool { return (**bool)(p.p) } +func (p pointer) BoolSlice() *[]bool { return (*[]bool)(p.p) } +func (p pointer) Int32() *int32 { return (*int32)(p.p) } +func (p pointer) Int32Ptr() **int32 { return (**int32)(p.p) } +func (p pointer) Int32Slice() *[]int32 { return (*[]int32)(p.p) } +func (p pointer) Int64() *int64 { return (*int64)(p.p) } +func (p pointer) Int64Ptr() **int64 { return (**int64)(p.p) } +func (p pointer) Int64Slice() *[]int64 { return (*[]int64)(p.p) } +func (p pointer) Uint32() *uint32 { return (*uint32)(p.p) } +func (p pointer) Uint32Ptr() **uint32 { return (**uint32)(p.p) } +func (p pointer) Uint32Slice() *[]uint32 { return (*[]uint32)(p.p) } +func (p pointer) Uint64() *uint64 { return (*uint64)(p.p) } +func (p pointer) Uint64Ptr() **uint64 { return (**uint64)(p.p) } +func (p pointer) Uint64Slice() *[]uint64 { return (*[]uint64)(p.p) } +func (p pointer) Float32() *float32 { return (*float32)(p.p) } +func (p pointer) Float32Ptr() **float32 { return (**float32)(p.p) } +func (p pointer) Float32Slice() *[]float32 { return (*[]float32)(p.p) } +func (p pointer) Float64() *float64 { return (*float64)(p.p) } +func (p pointer) Float64Ptr() **float64 { return (**float64)(p.p) } +func (p pointer) Float64Slice() *[]float64 { return (*[]float64)(p.p) } +func (p pointer) String() *string { return (*string)(p.p) } +func (p pointer) StringPtr() **string { return (**string)(p.p) } +func (p pointer) StringSlice() *[]string { return (*[]string)(p.p) } +func (p pointer) Bytes() *[]byte { return (*[]byte)(p.p) } +func (p pointer) BytesPtr() **[]byte { return (**[]byte)(p.p) } +func (p pointer) BytesSlice() *[][]byte { return (*[][]byte)(p.p) } +func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.p) } +func (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) } + +func (p pointer) Elem() pointer { + return pointer{p: *(*unsafe.Pointer)(p.p)} +} + +// PointerSlice loads []*T from p as a []pointer. +// The value returned is aliased with the original slice. +// This behavior differs from the implementation in pointer_reflect.go. +func (p pointer) PointerSlice() []pointer { + // Super-tricky - p should point to a []*T where T is a + // message type. We load it as []pointer. + return *(*[]pointer)(p.p) +} + +// AppendPointerSlice appends v to p, which must be a []*T. +func (p pointer) AppendPointerSlice(v pointer) { + *(*[]pointer)(p.p) = append(*(*[]pointer)(p.p), v) +} + +// SetPointer sets *p to v. +func (p pointer) SetPointer(v pointer) { + *(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p) +} + +func (p pointer) growBoolSlice(addCap int) { + sp := p.BoolSlice() + s := make([]bool, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growInt32Slice(addCap int) { + sp := p.Int32Slice() + s := make([]int32, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growUint32Slice(addCap int) { + p.growInt32Slice(addCap) +} + +func (p pointer) growFloat32Slice(addCap int) { + p.growInt32Slice(addCap) +} + +func (p pointer) growInt64Slice(addCap int) { + sp := p.Int64Slice() + s := make([]int64, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growUint64Slice(addCap int) { + p.growInt64Slice(addCap) +} + +func (p pointer) growFloat64Slice(addCap int) { + p.growInt64Slice(addCap) +} + +// Static check that MessageState does not exceed the size of a pointer. +const _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{})) + +func (Export) MessageStateOf(p Pointer) *messageState { + // Super-tricky - see documentation on MessageState. + return (*messageState)(unsafe.Pointer(p)) +} +func (ms *messageState) pointer() pointer { + // Super-tricky - see documentation on MessageState. + return pointer{p: unsafe.Pointer(ms)} +} +func (ms *messageState) messageInfo() *MessageInfo { + mi := ms.LoadMessageInfo() + if mi == nil { + panic("invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct") + } + return mi +} +func (ms *messageState) LoadMessageInfo() *MessageInfo { + return (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)))) +} +func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)), unsafe.Pointer(mi)) +} + +type atomicNilMessage struct{ p unsafe.Pointer } // p is a *messageReflectWrapper + +func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper { + if p := atomic.LoadPointer(&m.p); p != nil { + return (*messageReflectWrapper)(p) + } + w := &messageReflectWrapper{mi: mi} + atomic.CompareAndSwapPointer(&m.p, nil, (unsafe.Pointer)(w)) + return (*messageReflectWrapper)(atomic.LoadPointer(&m.p)) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go new file mode 100644 index 0000000..a24e6bb --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go @@ -0,0 +1,576 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "math" + "math/bits" + "reflect" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +// ValidationStatus is the result of validating the wire-format encoding of a message. +type ValidationStatus int + +const ( + // ValidationUnknown indicates that unmarshaling the message might succeed or fail. + // The validator was unable to render a judgement. + // + // The only causes of this status are an aberrant message type appearing somewhere + // in the message or a failure in the extension resolver. + ValidationUnknown ValidationStatus = iota + 1 + + // ValidationInvalid indicates that unmarshaling the message will fail. + ValidationInvalid + + // ValidationValid indicates that unmarshaling the message will succeed. + ValidationValid +) + +func (v ValidationStatus) String() string { + switch v { + case ValidationUnknown: + return "ValidationUnknown" + case ValidationInvalid: + return "ValidationInvalid" + case ValidationValid: + return "ValidationValid" + default: + return fmt.Sprintf("ValidationStatus(%d)", int(v)) + } +} + +// Validate determines whether the contents of the buffer are a valid wire encoding +// of the message type. +// +// This function is exposed for testing. +func Validate(mt protoreflect.MessageType, in protoiface.UnmarshalInput) (out protoiface.UnmarshalOutput, _ ValidationStatus) { + mi, ok := mt.(*MessageInfo) + if !ok { + return out, ValidationUnknown + } + if in.Resolver == nil { + in.Resolver = protoregistry.GlobalTypes + } + o, st := mi.validate(in.Buf, 0, unmarshalOptions{ + flags: in.Flags, + resolver: in.Resolver, + }) + if o.initialized { + out.Flags |= protoiface.UnmarshalInitialized + } + return out, st +} + +type validationInfo struct { + mi *MessageInfo + typ validationType + keyType, valType validationType + + // For non-required fields, requiredBit is 0. + // + // For required fields, requiredBit's nth bit is set, where n is a + // unique index in the range [0, MessageInfo.numRequiredFields). + // + // If there are more than 64 required fields, requiredBit is 0. + requiredBit uint64 +} + +type validationType uint8 + +const ( + validationTypeOther validationType = iota + validationTypeMessage + validationTypeGroup + validationTypeMap + validationTypeRepeatedVarint + validationTypeRepeatedFixed32 + validationTypeRepeatedFixed64 + validationTypeVarint + validationTypeFixed32 + validationTypeFixed64 + validationTypeBytes + validationTypeUTF8String + validationTypeMessageSetItem +) + +func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { + var vi validationInfo + switch { + case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic(): + switch fd.Kind() { + case protoreflect.MessageKind: + vi.typ = validationTypeMessage + if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { + vi.mi = getMessageInfo(ot.Field(0).Type) + } + case protoreflect.GroupKind: + vi.typ = validationTypeGroup + if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { + vi.mi = getMessageInfo(ot.Field(0).Type) + } + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + vi.typ = validationTypeUTF8String + } + } + default: + vi = newValidationInfo(fd, ft) + } + if fd.Cardinality() == protoreflect.Required { + // Avoid overflow. The required field check is done with a 64-bit mask, with + // any message containing more than 64 required fields always reported as + // potentially uninitialized, so it is not important to get a precise count + // of the required fields past 64. + if mi.numRequiredFields < math.MaxUint8 { + mi.numRequiredFields++ + vi.requiredBit = 1 << (mi.numRequiredFields - 1) + } + } + return vi +} + +func newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { + var vi validationInfo + switch { + case fd.IsList(): + switch fd.Kind() { + case protoreflect.MessageKind: + vi.typ = validationTypeMessage + if ft.Kind() == reflect.Slice { + vi.mi = getMessageInfo(ft.Elem()) + } + case protoreflect.GroupKind: + vi.typ = validationTypeGroup + if ft.Kind() == reflect.Slice { + vi.mi = getMessageInfo(ft.Elem()) + } + case protoreflect.StringKind: + vi.typ = validationTypeBytes + if strs.EnforceUTF8(fd) { + vi.typ = validationTypeUTF8String + } + default: + switch wireTypes[fd.Kind()] { + case protowire.VarintType: + vi.typ = validationTypeRepeatedVarint + case protowire.Fixed32Type: + vi.typ = validationTypeRepeatedFixed32 + case protowire.Fixed64Type: + vi.typ = validationTypeRepeatedFixed64 + } + } + case fd.IsMap(): + vi.typ = validationTypeMap + switch fd.MapKey().Kind() { + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + vi.keyType = validationTypeUTF8String + } + } + switch fd.MapValue().Kind() { + case protoreflect.MessageKind: + vi.valType = validationTypeMessage + if ft.Kind() == reflect.Map { + vi.mi = getMessageInfo(ft.Elem()) + } + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + vi.valType = validationTypeUTF8String + } + } + default: + switch fd.Kind() { + case protoreflect.MessageKind: + vi.typ = validationTypeMessage + if !fd.IsWeak() { + vi.mi = getMessageInfo(ft) + } + case protoreflect.GroupKind: + vi.typ = validationTypeGroup + vi.mi = getMessageInfo(ft) + case protoreflect.StringKind: + vi.typ = validationTypeBytes + if strs.EnforceUTF8(fd) { + vi.typ = validationTypeUTF8String + } + default: + switch wireTypes[fd.Kind()] { + case protowire.VarintType: + vi.typ = validationTypeVarint + case protowire.Fixed32Type: + vi.typ = validationTypeFixed32 + case protowire.Fixed64Type: + vi.typ = validationTypeFixed64 + case protowire.BytesType: + vi.typ = validationTypeBytes + } + } + } + return vi +} + +func (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) { + mi.init() + type validationState struct { + typ validationType + keyType, valType validationType + endGroup protowire.Number + mi *MessageInfo + tail []byte + requiredMask uint64 + } + + // Pre-allocate some slots to avoid repeated slice reallocation. + states := make([]validationState, 0, 16) + states = append(states, validationState{ + typ: validationTypeMessage, + mi: mi, + }) + if groupTag > 0 { + states[0].typ = validationTypeGroup + states[0].endGroup = groupTag + } + initialized := true + start := len(b) +State: + for len(states) > 0 { + st := &states[len(states)-1] + for len(b) > 0 { + // Parse the tag (field number and wire type). + var tag uint64 + if b[0] < 0x80 { + tag = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + tag, n = protowire.ConsumeVarint(b) + if n < 0 { + return out, ValidationInvalid + } + b = b[n:] + } + var num protowire.Number + if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) { + return out, ValidationInvalid + } else { + num = protowire.Number(n) + } + wtyp := protowire.Type(tag & 7) + + if wtyp == protowire.EndGroupType { + if st.endGroup == num { + goto PopState + } + return out, ValidationInvalid + } + var vi validationInfo + switch { + case st.typ == validationTypeMap: + switch num { + case genid.MapEntry_Key_field_number: + vi.typ = st.keyType + case genid.MapEntry_Value_field_number: + vi.typ = st.valType + vi.mi = st.mi + vi.requiredBit = 1 + } + case flags.ProtoLegacy && st.mi.isMessageSet: + switch num { + case messageset.FieldItem: + vi.typ = validationTypeMessageSetItem + } + default: + var f *coderFieldInfo + if int(num) < len(st.mi.denseCoderFields) { + f = st.mi.denseCoderFields[num] + } else { + f = st.mi.coderFields[num] + } + if f != nil { + vi = f.validation + if vi.typ == validationTypeMessage && vi.mi == nil { + // Probable weak field. + // + // TODO: Consider storing the results of this lookup somewhere + // rather than recomputing it on every validation. + fd := st.mi.Desc.Fields().ByNumber(num) + if fd == nil || !fd.IsWeak() { + break + } + messageName := fd.Message().FullName() + messageType, err := protoregistry.GlobalTypes.FindMessageByName(messageName) + switch err { + case nil: + vi.mi, _ = messageType.(*MessageInfo) + case protoregistry.NotFound: + vi.typ = validationTypeBytes + default: + return out, ValidationUnknown + } + } + break + } + // Possible extension field. + // + // TODO: We should return ValidationUnknown when: + // 1. The resolver is not frozen. (More extensions may be added to it.) + // 2. The resolver returns preg.NotFound. + // In this case, a type added to the resolver in the future could cause + // unmarshaling to begin failing. Supporting this requires some way to + // determine if the resolver is frozen. + xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num) + if err != nil && err != protoregistry.NotFound { + return out, ValidationUnknown + } + if err == nil { + vi = getExtensionFieldInfo(xt).validation + } + } + if vi.requiredBit != 0 { + // Check that the field has a compatible wire type. + // We only need to consider non-repeated field types, + // since repeated fields (and maps) can never be required. + ok := false + switch vi.typ { + case validationTypeVarint: + ok = wtyp == protowire.VarintType + case validationTypeFixed32: + ok = wtyp == protowire.Fixed32Type + case validationTypeFixed64: + ok = wtyp == protowire.Fixed64Type + case validationTypeBytes, validationTypeUTF8String, validationTypeMessage: + ok = wtyp == protowire.BytesType + case validationTypeGroup: + ok = wtyp == protowire.StartGroupType + } + if ok { + st.requiredMask |= vi.requiredBit + } + } + + switch wtyp { + case protowire.VarintType: + if len(b) >= 10 { + switch { + case b[0] < 0x80: + b = b[1:] + case b[1] < 0x80: + b = b[2:] + case b[2] < 0x80: + b = b[3:] + case b[3] < 0x80: + b = b[4:] + case b[4] < 0x80: + b = b[5:] + case b[5] < 0x80: + b = b[6:] + case b[6] < 0x80: + b = b[7:] + case b[7] < 0x80: + b = b[8:] + case b[8] < 0x80: + b = b[9:] + case b[9] < 0x80 && b[9] < 2: + b = b[10:] + default: + return out, ValidationInvalid + } + } else { + switch { + case len(b) > 0 && b[0] < 0x80: + b = b[1:] + case len(b) > 1 && b[1] < 0x80: + b = b[2:] + case len(b) > 2 && b[2] < 0x80: + b = b[3:] + case len(b) > 3 && b[3] < 0x80: + b = b[4:] + case len(b) > 4 && b[4] < 0x80: + b = b[5:] + case len(b) > 5 && b[5] < 0x80: + b = b[6:] + case len(b) > 6 && b[6] < 0x80: + b = b[7:] + case len(b) > 7 && b[7] < 0x80: + b = b[8:] + case len(b) > 8 && b[8] < 0x80: + b = b[9:] + case len(b) > 9 && b[9] < 2: + b = b[10:] + default: + return out, ValidationInvalid + } + } + continue State + case protowire.BytesType: + var size uint64 + if len(b) >= 1 && b[0] < 0x80 { + size = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + size = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + size, n = protowire.ConsumeVarint(b) + if n < 0 { + return out, ValidationInvalid + } + b = b[n:] + } + if size > uint64(len(b)) { + return out, ValidationInvalid + } + v := b[:size] + b = b[size:] + switch vi.typ { + case validationTypeMessage: + if vi.mi == nil { + return out, ValidationUnknown + } + vi.mi.init() + fallthrough + case validationTypeMap: + if vi.mi != nil { + vi.mi.init() + } + states = append(states, validationState{ + typ: vi.typ, + keyType: vi.keyType, + valType: vi.valType, + mi: vi.mi, + tail: b, + }) + b = v + continue State + case validationTypeRepeatedVarint: + // Packed field. + for len(v) > 0 { + _, n := protowire.ConsumeVarint(v) + if n < 0 { + return out, ValidationInvalid + } + v = v[n:] + } + case validationTypeRepeatedFixed32: + // Packed field. + if len(v)%4 != 0 { + return out, ValidationInvalid + } + case validationTypeRepeatedFixed64: + // Packed field. + if len(v)%8 != 0 { + return out, ValidationInvalid + } + case validationTypeUTF8String: + if !utf8.Valid(v) { + return out, ValidationInvalid + } + } + case protowire.Fixed32Type: + if len(b) < 4 { + return out, ValidationInvalid + } + b = b[4:] + case protowire.Fixed64Type: + if len(b) < 8 { + return out, ValidationInvalid + } + b = b[8:] + case protowire.StartGroupType: + switch { + case vi.typ == validationTypeGroup: + if vi.mi == nil { + return out, ValidationUnknown + } + vi.mi.init() + states = append(states, validationState{ + typ: validationTypeGroup, + mi: vi.mi, + endGroup: num, + }) + continue State + case flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem: + typeid, v, n, err := messageset.ConsumeFieldValue(b, false) + if err != nil { + return out, ValidationInvalid + } + xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid) + switch { + case err == protoregistry.NotFound: + b = b[n:] + case err != nil: + return out, ValidationUnknown + default: + xvi := getExtensionFieldInfo(xt).validation + if xvi.mi != nil { + xvi.mi.init() + } + states = append(states, validationState{ + typ: xvi.typ, + mi: xvi.mi, + tail: b[n:], + }) + b = v + continue State + } + default: + n := protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, ValidationInvalid + } + b = b[n:] + } + default: + return out, ValidationInvalid + } + } + if st.endGroup != 0 { + return out, ValidationInvalid + } + if len(b) != 0 { + return out, ValidationInvalid + } + b = st.tail + PopState: + numRequiredFields := 0 + switch st.typ { + case validationTypeMessage, validationTypeGroup: + numRequiredFields = int(st.mi.numRequiredFields) + case validationTypeMap: + // If this is a map field with a message value that contains + // required fields, require that the value be present. + if st.mi != nil && st.mi.numRequiredFields > 0 { + numRequiredFields = 1 + } + } + // If there are more than 64 required fields, this check will + // always fail and we will report that the message is potentially + // uninitialized. + if numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields { + initialized = false + } + states = states[:len(states)-1] + } + out.n = start - len(b) + if initialized { + out.initialized = true + } + return out, ValidationValid +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go new file mode 100644 index 0000000..eb79a7b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go @@ -0,0 +1,74 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// weakFields adds methods to the exported WeakFields type for internal use. +// +// The exported type is an alias to an unnamed type, so methods can't be +// defined directly on it. +type weakFields WeakFields + +func (w weakFields) get(num protoreflect.FieldNumber) (protoreflect.ProtoMessage, bool) { + m, ok := w[int32(num)] + return m, ok +} + +func (w *weakFields) set(num protoreflect.FieldNumber, m protoreflect.ProtoMessage) { + if *w == nil { + *w = make(weakFields) + } + (*w)[int32(num)] = m +} + +func (w *weakFields) clear(num protoreflect.FieldNumber) { + delete(*w, int32(num)) +} + +func (Export) HasWeak(w WeakFields, num protoreflect.FieldNumber) bool { + _, ok := w[int32(num)] + return ok +} + +func (Export) ClearWeak(w *WeakFields, num protoreflect.FieldNumber) { + delete(*w, int32(num)) +} + +func (Export) GetWeak(w WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName) protoreflect.ProtoMessage { + if m, ok := w[int32(num)]; ok { + return m + } + mt, _ := protoregistry.GlobalTypes.FindMessageByName(name) + if mt == nil { + panic(fmt.Sprintf("message %v for weak field is not linked in", name)) + } + return mt.Zero().Interface() +} + +func (Export) SetWeak(w *WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName, m protoreflect.ProtoMessage) { + if m != nil { + mt, _ := protoregistry.GlobalTypes.FindMessageByName(name) + if mt == nil { + panic(fmt.Sprintf("message %v for weak field is not linked in", name)) + } + if mt != m.ProtoReflect().Type() { + panic(fmt.Sprintf("invalid message type for weak field: got %T, want %T", m, mt.Zero().Interface())) + } + } + if m == nil || !m.ProtoReflect().IsValid() { + delete(*w, int32(num)) + return + } + if *w == nil { + *w = make(weakFields) + } + (*w)[int32(num)] = m +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/order/order.go b/examples/go/vendor/google.golang.org/protobuf/internal/order/order.go new file mode 100644 index 0000000..dea522e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/order/order.go @@ -0,0 +1,89 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package order + +import ( + "google.golang.org/protobuf/reflect/protoreflect" +) + +// FieldOrder specifies the ordering to visit message fields. +// It is a function that reports whether x is ordered before y. +type FieldOrder func(x, y protoreflect.FieldDescriptor) bool + +var ( + // AnyFieldOrder specifies no specific field ordering. + AnyFieldOrder FieldOrder = nil + + // LegacyFieldOrder sorts fields in the same ordering as emitted by + // wire serialization in the github.com/golang/protobuf implementation. + LegacyFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { + ox, oy := x.ContainingOneof(), y.ContainingOneof() + inOneof := func(od protoreflect.OneofDescriptor) bool { + return od != nil && !od.IsSynthetic() + } + + // Extension fields sort before non-extension fields. + if x.IsExtension() != y.IsExtension() { + return x.IsExtension() && !y.IsExtension() + } + // Fields not within a oneof sort before those within a oneof. + if inOneof(ox) != inOneof(oy) { + return !inOneof(ox) && inOneof(oy) + } + // Fields in disjoint oneof sets are sorted by declaration index. + if inOneof(ox) && inOneof(oy) && ox != oy { + return ox.Index() < oy.Index() + } + // Fields sorted by field number. + return x.Number() < y.Number() + } + + // NumberFieldOrder sorts fields by their field number. + NumberFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { + return x.Number() < y.Number() + } + + // IndexNameFieldOrder sorts non-extension fields before extension fields. + // Non-extensions are sorted according to their declaration index. + // Extensions are sorted according to their full name. + IndexNameFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { + // Non-extension fields sort before extension fields. + if x.IsExtension() != y.IsExtension() { + return !x.IsExtension() && y.IsExtension() + } + // Extensions sorted by fullname. + if x.IsExtension() && y.IsExtension() { + return x.FullName() < y.FullName() + } + // Non-extensions sorted by declaration index. + return x.Index() < y.Index() + } +) + +// KeyOrder specifies the ordering to visit map entries. +// It is a function that reports whether x is ordered before y. +type KeyOrder func(x, y protoreflect.MapKey) bool + +var ( + // AnyKeyOrder specifies no specific key ordering. + AnyKeyOrder KeyOrder = nil + + // GenericKeyOrder sorts false before true, numeric keys in ascending order, + // and strings in lexicographical ordering according to UTF-8 codepoints. + GenericKeyOrder KeyOrder = func(x, y protoreflect.MapKey) bool { + switch x.Interface().(type) { + case bool: + return !x.Bool() && y.Bool() + case int32, int64: + return x.Int() < y.Int() + case uint32, uint64: + return x.Uint() < y.Uint() + case string: + return x.String() < y.String() + default: + panic("invalid map key type") + } + } +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/order/range.go b/examples/go/vendor/google.golang.org/protobuf/internal/order/range.go new file mode 100644 index 0000000..a1f0916 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/order/range.go @@ -0,0 +1,115 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package order provides ordered access to messages and maps. +package order + +import ( + "sort" + "sync" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type messageField struct { + fd protoreflect.FieldDescriptor + v protoreflect.Value +} + +var messageFieldPool = sync.Pool{ + New: func() any { return new([]messageField) }, +} + +type ( + // FieldRnger is an interface for visiting all fields in a message. + // The protoreflect.Message type implements this interface. + FieldRanger interface{ Range(VisitField) } + // VisitField is called every time a message field is visited. + VisitField = func(protoreflect.FieldDescriptor, protoreflect.Value) bool +) + +// RangeFields iterates over the fields of fs according to the specified order. +func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) { + if less == nil { + fs.Range(fn) + return + } + + // Obtain a pre-allocated scratch buffer. + p := messageFieldPool.Get().(*[]messageField) + fields := (*p)[:0] + defer func() { + if cap(fields) < 1024 { + *p = fields + messageFieldPool.Put(p) + } + }() + + // Collect all fields in the message and sort them. + fs.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + fields = append(fields, messageField{fd, v}) + return true + }) + sort.Slice(fields, func(i, j int) bool { + return less(fields[i].fd, fields[j].fd) + }) + + // Visit the fields in the specified ordering. + for _, f := range fields { + if !fn(f.fd, f.v) { + return + } + } +} + +type mapEntry struct { + k protoreflect.MapKey + v protoreflect.Value +} + +var mapEntryPool = sync.Pool{ + New: func() any { return new([]mapEntry) }, +} + +type ( + // EntryRanger is an interface for visiting all fields in a message. + // The protoreflect.Map type implements this interface. + EntryRanger interface{ Range(VisitEntry) } + // VisitEntry is called every time a map entry is visited. + VisitEntry = func(protoreflect.MapKey, protoreflect.Value) bool +) + +// RangeEntries iterates over the entries of es according to the specified order. +func RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) { + if less == nil { + es.Range(fn) + return + } + + // Obtain a pre-allocated scratch buffer. + p := mapEntryPool.Get().(*[]mapEntry) + entries := (*p)[:0] + defer func() { + if cap(entries) < 1024 { + *p = entries + mapEntryPool.Put(p) + } + }() + + // Collect all entries in the map and sort them. + es.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { + entries = append(entries, mapEntry{k, v}) + return true + }) + sort.Slice(entries, func(i, j int) bool { + return less(entries[i].k, entries[j].k) + }) + + // Visit the entries in the specified ordering. + for _, e := range entries { + if !fn(e.k, e.v) { + return + } + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go b/examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go new file mode 100644 index 0000000..49dc4fc --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package pragma provides types that can be embedded into a struct to +// statically enforce or prevent certain language properties. +package pragma + +import "sync" + +// NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals. +type NoUnkeyedLiterals struct{} + +// DoNotImplement can be embedded in an interface to prevent trivial +// implementations of the interface. +// +// This is useful to prevent unauthorized implementations of an interface +// so that it can be extended in the future for any protobuf language changes. +type DoNotImplement interface{ ProtoInternal(DoNotImplement) } + +// DoNotCompare can be embedded in a struct to prevent comparability. +type DoNotCompare [0]func() + +// DoNotCopy can be embedded in a struct to help prevent shallow copies. +// This does not rely on a Go language feature, but rather a special case +// within the vet checker. +// +// See https://golang.org/issues/8005. +type DoNotCopy [0]sync.Mutex diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go b/examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go new file mode 100644 index 0000000..d3d7f89 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go @@ -0,0 +1,58 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package set provides simple set data structures for uint64s. +package set + +import "math/bits" + +// int64s represents a set of integers within the range of 0..63. +type int64s uint64 + +func (bs *int64s) Len() int { + return bits.OnesCount64(uint64(*bs)) +} +func (bs *int64s) Has(n uint64) bool { + return uint64(*bs)&(uint64(1)< 0 +} +func (bs *int64s) Set(n uint64) { + *(*uint64)(bs) |= uint64(1) << n +} +func (bs *int64s) Clear(n uint64) { + *(*uint64)(bs) &^= uint64(1) << n +} + +// Ints represents a set of integers within the range of 0..math.MaxUint64. +type Ints struct { + lo int64s + hi map[uint64]struct{} +} + +func (bs *Ints) Len() int { + return bs.lo.Len() + len(bs.hi) +} +func (bs *Ints) Has(n uint64) bool { + if n < 64 { + return bs.lo.Has(n) + } + _, ok := bs.hi[n] + return ok +} +func (bs *Ints) Set(n uint64) { + if n < 64 { + bs.lo.Set(n) + return + } + if bs.hi == nil { + bs.hi = make(map[uint64]struct{}) + } + bs.hi[n] = struct{}{} +} +func (bs *Ints) Clear(n uint64) { + if n < 64 { + bs.lo.Clear(n) + return + } + delete(bs.hi, n) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go new file mode 100644 index 0000000..a6e7df2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go @@ -0,0 +1,196 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package strs provides string manipulation functionality specific to protobuf. +package strs + +import ( + "go/token" + "strings" + "unicode" + "unicode/utf8" + + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// EnforceUTF8 reports whether to enforce strict UTF-8 validation. +func EnforceUTF8(fd protoreflect.FieldDescriptor) bool { + if flags.ProtoLegacy || fd.Syntax() == protoreflect.Editions { + if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok { + return fd.EnforceUTF8() + } + } + return fd.Syntax() == protoreflect.Proto3 +} + +// GoCamelCase camel-cases a protobuf name for use as a Go identifier. +// +// If there is an interior underscore followed by a lower case letter, +// drop the underscore and convert the letter to upper case. +func GoCamelCase(s string) string { + // Invariant: if the next letter is lower case, it must be converted + // to upper case. + // That is, we process a word at a time, where words are marked by _ or + // upper case letter. Digits are treated as words. + var b []byte + for i := 0; i < len(s); i++ { + c := s[i] + switch { + case c == '.' && i+1 < len(s) && isASCIILower(s[i+1]): + // Skip over '.' in ".{{lowercase}}". + case c == '.': + b = append(b, '_') // convert '.' to '_' + case c == '_' && (i == 0 || s[i-1] == '.'): + // Convert initial '_' to ensure we start with a capital letter. + // Do the same for '_' after '.' to match historic behavior. + b = append(b, 'X') // convert '_' to 'X' + case c == '_' && i+1 < len(s) && isASCIILower(s[i+1]): + // Skip over '_' in "_{{lowercase}}". + case isASCIIDigit(c): + b = append(b, c) + default: + // Assume we have a letter now - if not, it's a bogus identifier. + // The next word is a sequence of characters that must start upper case. + if isASCIILower(c) { + c -= 'a' - 'A' // convert lowercase to uppercase + } + b = append(b, c) + + // Accept lower case sequence that follows. + for ; i+1 < len(s) && isASCIILower(s[i+1]); i++ { + b = append(b, s[i+1]) + } + } + } + return string(b) +} + +// GoSanitized converts a string to a valid Go identifier. +func GoSanitized(s string) string { + // Sanitize the input to the set of valid characters, + // which must be '_' or be in the Unicode L or N categories. + s = strings.Map(func(r rune) rune { + if unicode.IsLetter(r) || unicode.IsDigit(r) { + return r + } + return '_' + }, s) + + // Prepend '_' in the event of a Go keyword conflict or if + // the identifier is invalid (does not start in the Unicode L category). + r, _ := utf8.DecodeRuneInString(s) + if token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) { + return "_" + s + } + return s +} + +// JSONCamelCase converts a snake_case identifier to a camelCase identifier, +// according to the protobuf JSON specification. +func JSONCamelCase(s string) string { + var b []byte + var wasUnderscore bool + for i := 0; i < len(s); i++ { // proto identifiers are always ASCII + c := s[i] + if c != '_' { + if wasUnderscore && isASCIILower(c) { + c -= 'a' - 'A' // convert to uppercase + } + b = append(b, c) + } + wasUnderscore = c == '_' + } + return string(b) +} + +// JSONSnakeCase converts a camelCase identifier to a snake_case identifier, +// according to the protobuf JSON specification. +func JSONSnakeCase(s string) string { + var b []byte + for i := 0; i < len(s); i++ { // proto identifiers are always ASCII + c := s[i] + if isASCIIUpper(c) { + b = append(b, '_') + c += 'a' - 'A' // convert to lowercase + } + b = append(b, c) + } + return string(b) +} + +// MapEntryName derives the name of the map entry message given the field name. +// See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057 +func MapEntryName(s string) string { + var b []byte + upperNext := true + for _, c := range s { + switch { + case c == '_': + upperNext = true + case upperNext: + b = append(b, byte(unicode.ToUpper(c))) + upperNext = false + default: + b = append(b, byte(c)) + } + } + b = append(b, "Entry"...) + return string(b) +} + +// EnumValueName derives the camel-cased enum value name. +// See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313 +func EnumValueName(s string) string { + var b []byte + upperNext := true + for _, c := range s { + switch { + case c == '_': + upperNext = true + case upperNext: + b = append(b, byte(unicode.ToUpper(c))) + upperNext = false + default: + b = append(b, byte(unicode.ToLower(c))) + upperNext = false + } + } + return string(b) +} + +// TrimEnumPrefix trims the enum name prefix from an enum value name, +// where the prefix is all lowercase without underscores. +// See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375 +func TrimEnumPrefix(s, prefix string) string { + s0 := s // original input + for len(s) > 0 && len(prefix) > 0 { + if s[0] == '_' { + s = s[1:] + continue + } + if unicode.ToLower(rune(s[0])) != rune(prefix[0]) { + return s0 // no prefix match + } + s, prefix = s[1:], prefix[1:] + } + if len(prefix) > 0 { + return s0 // no prefix match + } + s = strings.TrimLeft(s, "_") + if len(s) == 0 { + return s0 // avoid returning empty string + } + return s +} + +func isASCIILower(c byte) bool { + return 'a' <= c && c <= 'z' +} +func isASCIIUpper(c byte) bool { + return 'A' <= c && c <= 'Z' +} +func isASCIIDigit(c byte) bool { + return '0' <= c && c <= '9' +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go new file mode 100644 index 0000000..a1f6f33 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go @@ -0,0 +1,28 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package strs + +import pref "google.golang.org/protobuf/reflect/protoreflect" + +func UnsafeString(b []byte) string { + return string(b) +} + +func UnsafeBytes(s string) []byte { + return []byte(s) +} + +type Builder struct{} + +func (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName { + return prefix.Append(name) +} + +func (*Builder) MakeString(b []byte) string { + return string(b) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go new file mode 100644 index 0000000..a008acd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go @@ -0,0 +1,95 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && !go1.21 +// +build !purego,!appengine,!go1.21 + +package strs + +import ( + "unsafe" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type ( + stringHeader struct { + Data unsafe.Pointer + Len int + } + sliceHeader struct { + Data unsafe.Pointer + Len int + Cap int + } +) + +// UnsafeString returns an unsafe string reference of b. +// The caller must treat the input slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user +// unless the input slice is provably immutable. +func UnsafeString(b []byte) (s string) { + src := (*sliceHeader)(unsafe.Pointer(&b)) + dst := (*stringHeader)(unsafe.Pointer(&s)) + dst.Data = src.Data + dst.Len = src.Len + return s +} + +// UnsafeBytes returns an unsafe bytes slice reference of s. +// The caller must treat returned slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user. +func UnsafeBytes(s string) (b []byte) { + src := (*stringHeader)(unsafe.Pointer(&s)) + dst := (*sliceHeader)(unsafe.Pointer(&b)) + dst.Data = src.Data + dst.Len = src.Len + dst.Cap = src.Len + return b +} + +// Builder builds a set of strings with shared lifetime. +// This differs from strings.Builder, which is for building a single string. +type Builder struct { + buf []byte +} + +// AppendFullName is equivalent to protoreflect.FullName.Append, +// but optimized for large batches where each name has a shared lifetime. +func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { + n := len(prefix) + len(".") + len(name) + if len(prefix) == 0 { + n -= len(".") + } + sb.grow(n) + sb.buf = append(sb.buf, prefix...) + sb.buf = append(sb.buf, '.') + sb.buf = append(sb.buf, name...) + return protoreflect.FullName(sb.last(n)) +} + +// MakeString is equivalent to string(b), but optimized for large batches +// with a shared lifetime. +func (sb *Builder) MakeString(b []byte) string { + sb.grow(len(b)) + sb.buf = append(sb.buf, b...) + return sb.last(len(b)) +} + +func (sb *Builder) grow(n int) { + if cap(sb.buf)-len(sb.buf) >= n { + return + } + + // Unlike strings.Builder, we do not need to copy over the contents + // of the old buffer since our builder provides no API for + // retrieving previously created strings. + sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) +} + +func (sb *Builder) last(n int) string { + return UnsafeString(sb.buf[len(sb.buf)-n:]) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go new file mode 100644 index 0000000..60166f2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go @@ -0,0 +1,74 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && go1.21 +// +build !purego,!appengine,go1.21 + +package strs + +import ( + "unsafe" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// UnsafeString returns an unsafe string reference of b. +// The caller must treat the input slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user +// unless the input slice is provably immutable. +func UnsafeString(b []byte) string { + return unsafe.String(unsafe.SliceData(b), len(b)) +} + +// UnsafeBytes returns an unsafe bytes slice reference of s. +// The caller must treat returned slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user. +func UnsafeBytes(s string) []byte { + return unsafe.Slice(unsafe.StringData(s), len(s)) +} + +// Builder builds a set of strings with shared lifetime. +// This differs from strings.Builder, which is for building a single string. +type Builder struct { + buf []byte +} + +// AppendFullName is equivalent to protoreflect.FullName.Append, +// but optimized for large batches where each name has a shared lifetime. +func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { + n := len(prefix) + len(".") + len(name) + if len(prefix) == 0 { + n -= len(".") + } + sb.grow(n) + sb.buf = append(sb.buf, prefix...) + sb.buf = append(sb.buf, '.') + sb.buf = append(sb.buf, name...) + return protoreflect.FullName(sb.last(n)) +} + +// MakeString is equivalent to string(b), but optimized for large batches +// with a shared lifetime. +func (sb *Builder) MakeString(b []byte) string { + sb.grow(len(b)) + sb.buf = append(sb.buf, b...) + return sb.last(len(b)) +} + +func (sb *Builder) grow(n int) { + if cap(sb.buf)-len(sb.buf) >= n { + return + } + + // Unlike strings.Builder, we do not need to copy over the contents + // of the old buffer since our builder provides no API for + // retrieving previously created strings. + sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) +} + +func (sb *Builder) last(n int) string { + return UnsafeString(sb.buf[len(sb.buf)-n:]) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/version/version.go b/examples/go/vendor/google.golang.org/protobuf/internal/version/version.go new file mode 100644 index 0000000..dbbf1f6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/version/version.go @@ -0,0 +1,79 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package version records versioning information about this module. +package version + +import ( + "fmt" + "strings" +) + +// These constants determine the current version of this module. +// +// For our release process, we enforce the following rules: +// - Tagged releases use a tag that is identical to String. +// - Tagged releases never reference a commit where the String +// contains "devel". +// - The set of all commits in this repository where String +// does not contain "devel" must have a unique String. +// +// Steps for tagging a new release: +// +// 1. Create a new CL. +// +// 2. Update Minor, Patch, and/or PreRelease as necessary. +// PreRelease must not contain the string "devel". +// +// 3. Since the last released minor version, have there been any changes to +// generator that relies on new functionality in the runtime? +// If yes, then increment RequiredGenerated. +// +// 4. Since the last released minor version, have there been any changes to +// the runtime that removes support for old .pb.go source code? +// If yes, then increment SupportMinimum. +// +// 5. Send out the CL for review and submit it. +// Note that the next CL in step 8 must be submitted after this CL +// without any other CLs in-between. +// +// 6. Tag a new version, where the tag is is the current String. +// +// 7. Write release notes for all notable changes +// between this release and the last release. +// +// 8. Create a new CL. +// +// 9. Update PreRelease to include the string "devel". +// For example: "" -> "devel" or "rc.1" -> "rc.1.devel" +// +// 10. Send out the CL for review and submit it. +const ( + Major = 1 + Minor = 34 + Patch = 2 + PreRelease = "" +) + +// String formats the version string for this module in semver format. +// +// Examples: +// +// v1.20.1 +// v1.21.0-rc.1 +func String() string { + v := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch) + if PreRelease != "" { + v += "-" + PreRelease + + // TODO: Add metadata about the commit or build hash. + // See https://golang.org/issue/29814 + // See https://golang.org/issue/33533 + var metadata string + if strings.Contains(PreRelease, "devel") && metadata != "" { + v += "+" + metadata + } + } + return v +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go b/examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go new file mode 100644 index 0000000..3e9a6a2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go @@ -0,0 +1,71 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// CheckInitialized returns an error if any required fields in m are not set. +func CheckInitialized(m Message) error { + // Treat a nil message interface as an "untyped" empty message, + // which we assume to have no required fields. + if m == nil { + return nil + } + + return checkInitialized(m.ProtoReflect()) +} + +// CheckInitialized returns an error if any required fields in m are not set. +func checkInitialized(m protoreflect.Message) error { + if methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil { + _, err := methods.CheckInitialized(protoiface.CheckInitializedInput{ + Message: m, + }) + return err + } + return checkInitializedSlow(m) +} + +func checkInitializedSlow(m protoreflect.Message) error { + md := m.Descriptor() + fds := md.Fields() + for i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ { + fd := fds.ByNumber(nums.Get(i)) + if !m.Has(fd) { + return errors.RequiredNotSet(string(fd.FullName())) + } + } + var err error + m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + switch { + case fd.IsList(): + if fd.Message() == nil { + return true + } + for i, list := 0, v.List(); i < list.Len() && err == nil; i++ { + err = checkInitialized(list.Get(i).Message()) + } + case fd.IsMap(): + if fd.MapValue().Message() == nil { + return true + } + v.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool { + err = checkInitialized(v.Message()) + return err == nil + }) + default: + if fd.Message() == nil { + return true + } + err = checkInitialized(v.Message()) + } + return err == nil + }) + return err +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/decode.go b/examples/go/vendor/google.golang.org/protobuf/proto/decode.go new file mode 100644 index 0000000..d75a653 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/decode.go @@ -0,0 +1,296 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +// UnmarshalOptions configures the unmarshaler. +// +// Example usage: +// +// err := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m) +type UnmarshalOptions struct { + pragma.NoUnkeyedLiterals + + // Merge merges the input into the destination message. + // The default behavior is to always reset the message before unmarshaling, + // unless Merge is specified. + Merge bool + + // AllowPartial accepts input for messages that will result in missing + // required fields. If AllowPartial is false (the default), Unmarshal will + // return an error if there are any missing required fields. + AllowPartial bool + + // If DiscardUnknown is set, unknown fields are ignored. + DiscardUnknown bool + + // Resolver is used for looking up types when unmarshaling extension fields. + // If nil, this defaults to using protoregistry.GlobalTypes. + Resolver interface { + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) + } + + // RecursionLimit limits how deeply messages may be nested. + // If zero, a default limit is applied. + RecursionLimit int +} + +// Unmarshal parses the wire-format message in b and places the result in m. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +// +// See the [UnmarshalOptions] type if you need more control. +func Unmarshal(b []byte, m Message) error { + _, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect()) + return err +} + +// Unmarshal parses the wire-format message in b and places the result in m. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +func (o UnmarshalOptions) Unmarshal(b []byte, m Message) error { + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } + _, err := o.unmarshal(b, m.ProtoReflect()) + return err +} + +// UnmarshalState parses a wire-format message and places the result in m. +// +// This method permits fine-grained control over the unmarshaler. +// Most users should use [Unmarshal] instead. +func (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } + return o.unmarshal(in.Buf, in.Message) +} + +// unmarshal is a centralized function that all unmarshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for unmarshal that do not go through this. +func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) { + if o.Resolver == nil { + o.Resolver = protoregistry.GlobalTypes + } + if !o.Merge { + Reset(m.Interface()) + } + allowPartial := o.AllowPartial + o.Merge = true + o.AllowPartial = true + methods := protoMethods(m) + if methods != nil && methods.Unmarshal != nil && + !(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) { + in := protoiface.UnmarshalInput{ + Message: m, + Buf: b, + Resolver: o.Resolver, + Depth: o.RecursionLimit, + } + if o.DiscardUnknown { + in.Flags |= protoiface.UnmarshalDiscardUnknown + } + out, err = methods.Unmarshal(in) + } else { + o.RecursionLimit-- + if o.RecursionLimit < 0 { + return out, errors.New("exceeded max recursion depth") + } + err = o.unmarshalMessageSlow(b, m) + } + if err != nil { + return out, err + } + if allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) { + return out, nil + } + return out, checkInitialized(m) +} + +func (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error { + _, err := o.unmarshal(b, m) + return err +} + +func (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error { + md := m.Descriptor() + if messageset.IsMessageSet(md) { + return o.unmarshalMessageSet(b, m) + } + fields := md.Fields() + for len(b) > 0 { + // Parse the tag (field number and wire type). + num, wtyp, tagLen := protowire.ConsumeTag(b) + if tagLen < 0 { + return errDecode + } + if num > protowire.MaxValidNumber { + return errDecode + } + + // Find the field descriptor for this field number. + fd := fields.ByNumber(num) + if fd == nil && md.ExtensionRanges().Has(num) { + extType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num) + if err != nil && err != protoregistry.NotFound { + return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err) + } + if extType != nil { + fd = extType.TypeDescriptor() + } + } + var err error + if fd == nil { + err = errUnknown + } else if flags.ProtoLegacy { + if fd.IsWeak() && fd.Message().IsPlaceholder() { + err = errUnknown // weak referent is not linked in + } + } + + // Parse the field value. + var valLen int + switch { + case err != nil: + case fd.IsList(): + valLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd) + case fd.IsMap(): + valLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd) + default: + valLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd) + } + if err != nil { + if err != errUnknown { + return err + } + valLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:]) + if valLen < 0 { + return errDecode + } + if !o.DiscardUnknown { + m.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...)) + } + } + b = b[tagLen+valLen:] + } + return nil +} + +func (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) { + v, n, err := o.unmarshalScalar(b, wtyp, fd) + if err != nil { + return 0, err + } + switch fd.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + m2 := m.Mutable(fd).Message() + if err := o.unmarshalMessage(v.Bytes(), m2); err != nil { + return n, err + } + default: + // Non-message scalars replace the previous value. + m.Set(fd, v) + } + return n, nil +} + +func (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) { + if wtyp != protowire.BytesType { + return 0, errUnknown + } + b, n = protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + var ( + keyField = fd.MapKey() + valField = fd.MapValue() + key protoreflect.Value + val protoreflect.Value + haveKey bool + haveVal bool + ) + switch valField.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + val = mapv.NewValue() + } + // Map entries are represented as a two-element message with fields + // containing the key and value. + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return 0, errDecode + } + if num > protowire.MaxValidNumber { + return 0, errDecode + } + b = b[n:] + err = errUnknown + switch num { + case genid.MapEntry_Key_field_number: + key, n, err = o.unmarshalScalar(b, wtyp, keyField) + if err != nil { + break + } + haveKey = true + case genid.MapEntry_Value_field_number: + var v protoreflect.Value + v, n, err = o.unmarshalScalar(b, wtyp, valField) + if err != nil { + break + } + switch valField.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + if err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil { + return 0, err + } + default: + val = v + } + haveVal = true + } + if err == errUnknown { + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return 0, errDecode + } + } else if err != nil { + return 0, err + } + b = b[n:] + } + // Every map entry should have entries for key and value, but this is not strictly required. + if !haveKey { + key = keyField.Default() + } + if !haveVal { + switch valField.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + default: + val = valField.Default() + } + } + mapv.Set(key.MapKey(), val) + return n, nil +} + +// errUnknown is used internally to indicate fields which should be added +// to the unknown field set of a message. It is never returned from an exported +// function. +var errUnknown = errors.New("BUG: internal error (unknown)") + +var errDecode = errors.New("cannot parse invalid wire-format data") diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go b/examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go new file mode 100644 index 0000000..301eeb2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go @@ -0,0 +1,603 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package proto + +import ( + "math" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// unmarshalScalar decodes a value of the given kind. +// +// Message values are decoded into a []byte which aliases the input data. +func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) { + switch fd.Kind() { + case protoreflect.BoolKind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBool(protowire.DecodeBool(v)), n, nil + case protoreflect.EnumKind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), n, nil + case protoreflect.Int32Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt32(int32(v)), n, nil + case protoreflect.Sint32Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), n, nil + case protoreflect.Uint32Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint32(uint32(v)), n, nil + case protoreflect.Int64Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt64(int64(v)), n, nil + case protoreflect.Sint64Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), n, nil + case protoreflect.Uint64Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint64(v), n, nil + case protoreflect.Sfixed32Kind: + if wtyp != protowire.Fixed32Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt32(int32(v)), n, nil + case protoreflect.Fixed32Kind: + if wtyp != protowire.Fixed32Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint32(uint32(v)), n, nil + case protoreflect.FloatKind: + if wtyp != protowire.Fixed32Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), n, nil + case protoreflect.Sfixed64Kind: + if wtyp != protowire.Fixed64Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt64(int64(v)), n, nil + case protoreflect.Fixed64Kind: + if wtyp != protowire.Fixed64Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint64(v), n, nil + case protoreflect.DoubleKind: + if wtyp != protowire.Fixed64Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfFloat64(math.Float64frombits(v)), n, nil + case protoreflect.StringKind: + if wtyp != protowire.BytesType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return val, 0, errDecode + } + if strs.EnforceUTF8(fd) && !utf8.Valid(v) { + return protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName())) + } + return protoreflect.ValueOfString(string(v)), n, nil + case protoreflect.BytesKind: + if wtyp != protowire.BytesType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), n, nil + case protoreflect.MessageKind: + if wtyp != protowire.BytesType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBytes(v), n, nil + case protoreflect.GroupKind: + if wtyp != protowire.StartGroupType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeGroup(fd.Number(), b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBytes(v), n, nil + default: + return val, 0, errUnknown + } +} + +func (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) { + switch fd.Kind() { + case protoreflect.BoolKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + return n, nil + case protoreflect.EnumKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + return n, nil + case protoreflect.Int32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt32(int32(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + return n, nil + case protoreflect.Sint32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + return n, nil + case protoreflect.Uint32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint32(uint32(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + return n, nil + case protoreflect.Int64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt64(int64(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + return n, nil + case protoreflect.Sint64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + return n, nil + case protoreflect.Uint64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint64(v)) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + return n, nil + case protoreflect.Sfixed32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed32(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt32(int32(v))) + } + return n, nil + } + if wtyp != protowire.Fixed32Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + return n, nil + case protoreflect.Fixed32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed32(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint32(uint32(v))) + } + return n, nil + } + if wtyp != protowire.Fixed32Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + return n, nil + case protoreflect.FloatKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed32(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + } + return n, nil + } + if wtyp != protowire.Fixed32Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + return n, nil + case protoreflect.Sfixed64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed64(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt64(int64(v))) + } + return n, nil + } + if wtyp != protowire.Fixed64Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + return n, nil + case protoreflect.Fixed64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed64(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint64(v)) + } + return n, nil + } + if wtyp != protowire.Fixed64Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + return n, nil + case protoreflect.DoubleKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed64(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + } + return n, nil + } + if wtyp != protowire.Fixed64Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + return n, nil + case protoreflect.StringKind: + if wtyp != protowire.BytesType { + return 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + if strs.EnforceUTF8(fd) && !utf8.Valid(v) { + return 0, errors.InvalidUTF8(string(fd.FullName())) + } + list.Append(protoreflect.ValueOfString(string(v))) + return n, nil + case protoreflect.BytesKind: + if wtyp != protowire.BytesType { + return 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...))) + return n, nil + case protoreflect.MessageKind: + if wtyp != protowire.BytesType { + return 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + m := list.NewElement() + if err := o.unmarshalMessage(v, m.Message()); err != nil { + return 0, err + } + list.Append(m) + return n, nil + case protoreflect.GroupKind: + if wtyp != protowire.StartGroupType { + return 0, errUnknown + } + v, n := protowire.ConsumeGroup(fd.Number(), b) + if n < 0 { + return 0, errDecode + } + m := list.NewElement() + if err := o.unmarshalMessage(v, m.Message()); err != nil { + return 0, err + } + list.Append(m) + return n, nil + default: + return 0, errUnknown + } +} + +// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices. +var emptyBuf [0]byte diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/doc.go b/examples/go/vendor/google.golang.org/protobuf/proto/doc.go new file mode 100644 index 0000000..80ed16a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/doc.go @@ -0,0 +1,86 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package proto provides functions operating on protocol buffer messages. +// +// For documentation on protocol buffers in general, see: +// https://protobuf.dev. +// +// For a tutorial on using protocol buffers with Go, see: +// https://protobuf.dev/getting-started/gotutorial. +// +// For a guide to generated Go protocol buffer code, see: +// https://protobuf.dev/reference/go/go-generated. +// +// # Binary serialization +// +// This package contains functions to convert to and from the wire format, +// an efficient binary serialization of protocol buffers. +// +// - [Size] reports the size of a message in the wire format. +// +// - [Marshal] converts a message to the wire format. +// The [MarshalOptions] type provides more control over wire marshaling. +// +// - [Unmarshal] converts a message from the wire format. +// The [UnmarshalOptions] type provides more control over wire unmarshaling. +// +// # Basic message operations +// +// - [Clone] makes a deep copy of a message. +// +// - [Merge] merges the content of a message into another. +// +// - [Equal] compares two messages. For more control over comparisons +// and detailed reporting of differences, see package +// [google.golang.org/protobuf/testing/protocmp]. +// +// - [Reset] clears the content of a message. +// +// - [CheckInitialized] reports whether all required fields in a message are set. +// +// # Optional scalar constructors +// +// The API for some generated messages represents optional scalar fields +// as pointers to a value. For example, an optional string field has the +// Go type *string. +// +// - [Bool], [Int32], [Int64], [Uint32], [Uint64], [Float32], [Float64], and [String] +// take a value and return a pointer to a new instance of it, +// to simplify construction of optional field values. +// +// Generated enum types usually have an Enum method which performs the +// same operation. +// +// Optional scalar fields are only supported in proto2. +// +// # Extension accessors +// +// - [HasExtension], [GetExtension], [SetExtension], and [ClearExtension] +// access extension field values in a protocol buffer message. +// +// Extension fields are only supported in proto2. +// +// # Related packages +// +// - Package [google.golang.org/protobuf/encoding/protojson] converts messages to +// and from JSON. +// +// - Package [google.golang.org/protobuf/encoding/prototext] converts messages to +// and from the text format. +// +// - Package [google.golang.org/protobuf/reflect/protoreflect] provides a +// reflection interface for protocol buffer data types. +// +// - Package [google.golang.org/protobuf/testing/protocmp] provides features +// to compare protocol buffer messages with the [github.com/google/go-cmp/cmp] +// package. +// +// - Package [google.golang.org/protobuf/types/dynamicpb] provides a dynamic +// message type, suitable for working with messages where the protocol buffer +// type is only known at runtime. +// +// This module contains additional packages for more specialized use cases. +// Consult the individual package documentation for details. +package proto diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/encode.go b/examples/go/vendor/google.golang.org/protobuf/proto/encode.go new file mode 100644 index 0000000..1f847bc --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/encode.go @@ -0,0 +1,354 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "errors" + "fmt" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" + + protoerrors "google.golang.org/protobuf/internal/errors" +) + +// MarshalOptions configures the marshaler. +// +// Example usage: +// +// b, err := MarshalOptions{Deterministic: true}.Marshal(m) +type MarshalOptions struct { + pragma.NoUnkeyedLiterals + + // AllowPartial allows messages that have missing required fields to marshal + // without returning an error. If AllowPartial is false (the default), + // Marshal will return an error if there are any missing required fields. + AllowPartial bool + + // Deterministic controls whether the same message will always be + // serialized to the same bytes within the same binary. + // + // Setting this option guarantees that repeated serialization of + // the same message will return the same bytes, and that different + // processes of the same binary (which may be executing on different + // machines) will serialize equal messages to the same bytes. + // It has no effect on the resulting size of the encoded message compared + // to a non-deterministic marshal. + // + // Note that the deterministic serialization is NOT canonical across + // languages. It is not guaranteed to remain stable over time. It is + // unstable across different builds with schema changes due to unknown + // fields. Users who need canonical serialization (e.g., persistent + // storage in a canonical form, fingerprinting, etc.) must define + // their own canonicalization specification and implement their own + // serializer rather than relying on this API. + // + // If deterministic serialization is requested, map entries will be + // sorted by keys in lexographical order. This is an implementation + // detail and subject to change. + Deterministic bool + + // UseCachedSize indicates that the result of a previous Size call + // may be reused. + // + // Setting this option asserts that: + // + // 1. Size has previously been called on this message with identical + // options (except for UseCachedSize itself). + // + // 2. The message and all its submessages have not changed in any + // way since the Size call. + // + // If either of these invariants is violated, + // the results are undefined and may include panics or corrupted output. + // + // Implementations MAY take this option into account to provide + // better performance, but there is no guarantee that they will do so. + // There is absolutely no guarantee that Size followed by Marshal with + // UseCachedSize set will perform equivalently to Marshal alone. + UseCachedSize bool +} + +// flags turns the specified MarshalOptions (user-facing) into +// protoiface.MarshalInputFlags (used internally by the marshaler). +// +// See impl.marshalOptions.Options for the inverse operation. +func (o MarshalOptions) flags() protoiface.MarshalInputFlags { + var flags protoiface.MarshalInputFlags + + // Note: o.AllowPartial is always forced to true by MarshalOptions.marshal, + // which is why it is not a part of MarshalInputFlags. + + if o.Deterministic { + flags |= protoiface.MarshalDeterministic + } + + if o.UseCachedSize { + flags |= protoiface.MarshalUseCachedSize + } + + return flags +} + +// Marshal returns the wire-format encoding of m. +// +// This is the most common entry point for encoding a Protobuf message. +// +// See the [MarshalOptions] type if you need more control. +func Marshal(m Message) ([]byte, error) { + // Treat nil message interface as an empty message; nothing to output. + if m == nil { + return nil, nil + } + + out, err := MarshalOptions{}.marshal(nil, m.ProtoReflect()) + if len(out.Buf) == 0 && err == nil { + out.Buf = emptyBytesForMessage(m) + } + return out.Buf, err +} + +// Marshal returns the wire-format encoding of m. +func (o MarshalOptions) Marshal(m Message) ([]byte, error) { + // Treat nil message interface as an empty message; nothing to output. + if m == nil { + return nil, nil + } + + out, err := o.marshal(nil, m.ProtoReflect()) + if len(out.Buf) == 0 && err == nil { + out.Buf = emptyBytesForMessage(m) + } + return out.Buf, err +} + +// emptyBytesForMessage returns a nil buffer if and only if m is invalid, +// otherwise it returns a non-nil empty buffer. +// +// This is to assist the edge-case where user-code does the following: +// +// m1.OptionalBytes, _ = proto.Marshal(m2) +// +// where they expect the proto2 "optional_bytes" field to be populated +// if any only if m2 is a valid message. +func emptyBytesForMessage(m Message) []byte { + if m == nil || !m.ProtoReflect().IsValid() { + return nil + } + return emptyBuf[:] +} + +// MarshalAppend appends the wire-format encoding of m to b, +// returning the result. +// +// This is a less common entry point than [Marshal], which is only needed if you +// need to supply your own buffers for performance reasons. +func (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) { + // Treat nil message interface as an empty message; nothing to append. + if m == nil { + return b, nil + } + + out, err := o.marshal(b, m.ProtoReflect()) + return out.Buf, err +} + +// MarshalState returns the wire-format encoding of a message. +// +// This method permits fine-grained control over the marshaler. +// Most users should use [Marshal] instead. +func (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + return o.marshal(in.Buf, in.Message) +} + +// marshal is a centralized function that all marshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for marshal that do not go through this. +func (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) { + allowPartial := o.AllowPartial + o.AllowPartial = true + if methods := protoMethods(m); methods != nil && methods.Marshal != nil && + !(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) { + in := protoiface.MarshalInput{ + Message: m, + Buf: b, + Flags: o.flags(), + } + if methods.Size != nil { + sout := methods.Size(protoiface.SizeInput{ + Message: m, + Flags: in.Flags, + }) + if cap(b) < len(b)+sout.Size { + in.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size)) + copy(in.Buf, b) + } + in.Flags |= protoiface.MarshalUseCachedSize + } + out, err = methods.Marshal(in) + } else { + out.Buf, err = o.marshalMessageSlow(b, m) + } + if err != nil { + var mismatch *protoerrors.SizeMismatchError + if errors.As(err, &mismatch) { + return out, fmt.Errorf("marshaling %s: %v", string(m.Descriptor().FullName()), err) + } + return out, err + } + if allowPartial { + return out, nil + } + return out, checkInitialized(m) +} + +func (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) { + out, err := o.marshal(b, m) + return out.Buf, err +} + +// growcap scales up the capacity of a slice. +// +// Given a slice with a current capacity of oldcap and a desired +// capacity of wantcap, growcap returns a new capacity >= wantcap. +// +// The algorithm is mostly identical to the one used by append as of Go 1.14. +func growcap(oldcap, wantcap int) (newcap int) { + if wantcap > oldcap*2 { + newcap = wantcap + } else if oldcap < 1024 { + // The Go 1.14 runtime takes this case when len(s) < 1024, + // not when cap(s) < 1024. The difference doesn't seem + // significant here. + newcap = oldcap * 2 + } else { + newcap = oldcap + for 0 < newcap && newcap < wantcap { + newcap += newcap / 4 + } + if newcap <= 0 { + newcap = wantcap + } + } + return newcap +} + +func (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) { + if messageset.IsMessageSet(m.Descriptor()) { + return o.marshalMessageSet(b, m) + } + fieldOrder := order.AnyFieldOrder + if o.Deterministic { + // TODO: This should use a more natural ordering like NumberFieldOrder, + // but doing so breaks golden tests that make invalid assumption about + // output stability of this implementation. + fieldOrder = order.LegacyFieldOrder + } + var err error + order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + b, err = o.marshalField(b, fd, v) + return err == nil + }) + if err != nil { + return b, err + } + b = append(b, m.GetUnknown()...) + return b, nil +} + +func (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) { + switch { + case fd.IsList(): + return o.marshalList(b, fd, value.List()) + case fd.IsMap(): + return o.marshalMap(b, fd, value.Map()) + default: + b = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()]) + return o.marshalSingular(b, fd, value) + } +} + +func (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) { + if fd.IsPacked() && list.Len() > 0 { + b = protowire.AppendTag(b, fd.Number(), protowire.BytesType) + b, pos := appendSpeculativeLength(b) + for i, llen := 0, list.Len(); i < llen; i++ { + var err error + b, err = o.marshalSingular(b, fd, list.Get(i)) + if err != nil { + return b, err + } + } + b = finishSpeculativeLength(b, pos) + return b, nil + } + + kind := fd.Kind() + for i, llen := 0, list.Len(); i < llen; i++ { + var err error + b = protowire.AppendTag(b, fd.Number(), wireTypes[kind]) + b, err = o.marshalSingular(b, fd, list.Get(i)) + if err != nil { + return b, err + } + } + return b, nil +} + +func (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) { + keyf := fd.MapKey() + valf := fd.MapValue() + keyOrder := order.AnyKeyOrder + if o.Deterministic { + keyOrder = order.GenericKeyOrder + } + var err error + order.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool { + b = protowire.AppendTag(b, fd.Number(), protowire.BytesType) + var pos int + b, pos = appendSpeculativeLength(b) + + b, err = o.marshalField(b, keyf, key.Value()) + if err != nil { + return false + } + b, err = o.marshalField(b, valf, value) + if err != nil { + return false + } + b = finishSpeculativeLength(b, pos) + return true + }) + return b, err +} + +// When encoding length-prefixed fields, we speculatively set aside some number of bytes +// for the length, encode the data, and then encode the length (shifting the data if necessary +// to make room). +const speculativeLength = 1 + +func appendSpeculativeLength(b []byte) ([]byte, int) { + pos := len(b) + b = append(b, "\x00\x00\x00\x00"[:speculativeLength]...) + return b, pos +} + +func finishSpeculativeLength(b []byte, pos int) []byte { + mlen := len(b) - pos - speculativeLength + msiz := protowire.SizeVarint(uint64(mlen)) + if msiz != speculativeLength { + for i := 0; i < msiz-speculativeLength; i++ { + b = append(b, 0) + } + copy(b[pos+msiz:], b[pos+speculativeLength:]) + b = b[:pos+msiz+mlen] + } + protowire.AppendVarint(b[:pos], uint64(mlen)) + return b +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go b/examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go new file mode 100644 index 0000000..185dacf --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go @@ -0,0 +1,97 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package proto + +import ( + "math" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var wireTypes = map[protoreflect.Kind]protowire.Type{ + protoreflect.BoolKind: protowire.VarintType, + protoreflect.EnumKind: protowire.VarintType, + protoreflect.Int32Kind: protowire.VarintType, + protoreflect.Sint32Kind: protowire.VarintType, + protoreflect.Uint32Kind: protowire.VarintType, + protoreflect.Int64Kind: protowire.VarintType, + protoreflect.Sint64Kind: protowire.VarintType, + protoreflect.Uint64Kind: protowire.VarintType, + protoreflect.Sfixed32Kind: protowire.Fixed32Type, + protoreflect.Fixed32Kind: protowire.Fixed32Type, + protoreflect.FloatKind: protowire.Fixed32Type, + protoreflect.Sfixed64Kind: protowire.Fixed64Type, + protoreflect.Fixed64Kind: protowire.Fixed64Type, + protoreflect.DoubleKind: protowire.Fixed64Type, + protoreflect.StringKind: protowire.BytesType, + protoreflect.BytesKind: protowire.BytesType, + protoreflect.MessageKind: protowire.BytesType, + protoreflect.GroupKind: protowire.StartGroupType, +} + +func (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) { + switch fd.Kind() { + case protoreflect.BoolKind: + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + case protoreflect.EnumKind: + b = protowire.AppendVarint(b, uint64(v.Enum())) + case protoreflect.Int32Kind: + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + case protoreflect.Sint32Kind: + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + case protoreflect.Uint32Kind: + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + case protoreflect.Int64Kind: + b = protowire.AppendVarint(b, uint64(v.Int())) + case protoreflect.Sint64Kind: + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + case protoreflect.Uint64Kind: + b = protowire.AppendVarint(b, v.Uint()) + case protoreflect.Sfixed32Kind: + b = protowire.AppendFixed32(b, uint32(v.Int())) + case protoreflect.Fixed32Kind: + b = protowire.AppendFixed32(b, uint32(v.Uint())) + case protoreflect.FloatKind: + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + case protoreflect.Sfixed64Kind: + b = protowire.AppendFixed64(b, uint64(v.Int())) + case protoreflect.Fixed64Kind: + b = protowire.AppendFixed64(b, v.Uint()) + case protoreflect.DoubleKind: + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) { + return b, errors.InvalidUTF8(string(fd.FullName())) + } + b = protowire.AppendString(b, v.String()) + case protoreflect.BytesKind: + b = protowire.AppendBytes(b, v.Bytes()) + case protoreflect.MessageKind: + var pos int + var err error + b, pos = appendSpeculativeLength(b) + b, err = o.marshalMessage(b, v.Message()) + if err != nil { + return b, err + } + b = finishSpeculativeLength(b, pos) + case protoreflect.GroupKind: + var err error + b, err = o.marshalMessage(b, v.Message()) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType)) + default: + return b, errors.New("invalid kind %v", fd.Kind()) + } + return b, nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/equal.go b/examples/go/vendor/google.golang.org/protobuf/proto/equal.go new file mode 100644 index 0000000..1a0be1b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/equal.go @@ -0,0 +1,57 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Equal reports whether two messages are equal, +// by recursively comparing the fields of the message. +// +// - Bytes fields are equal if they contain identical bytes. +// Empty bytes (regardless of nil-ness) are considered equal. +// +// - Floating-point fields are equal if they contain the same value. +// Unlike the == operator, a NaN is equal to another NaN. +// +// - Other scalar fields are equal if they contain the same value. +// +// - Message fields are equal if they have +// the same set of populated known and extension field values, and +// the same set of unknown fields values. +// +// - Lists are equal if they are the same length and +// each corresponding element is equal. +// +// - Maps are equal if they have the same set of keys and +// the corresponding value for each key is equal. +// +// An invalid message is not equal to a valid message. +// An invalid message is only equal to another invalid message of the +// same type. An invalid message often corresponds to a nil pointer +// of the concrete message type. For example, (*pb.M)(nil) is not equal +// to &pb.M{}. +// If two valid messages marshal to the same bytes under deterministic +// serialization, then Equal is guaranteed to report true. +func Equal(x, y Message) bool { + if x == nil || y == nil { + return x == nil && y == nil + } + if reflect.TypeOf(x).Kind() == reflect.Ptr && x == y { + // Avoid an expensive comparison if both inputs are identical pointers. + return true + } + mx := x.ProtoReflect() + my := y.ProtoReflect() + if mx.IsValid() != my.IsValid() { + return false + } + vx := protoreflect.ValueOfMessage(mx) + vy := protoreflect.ValueOfMessage(my) + return vx.Equal(vy) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/extension.go b/examples/go/vendor/google.golang.org/protobuf/proto/extension.go new file mode 100644 index 0000000..d248f29 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/extension.go @@ -0,0 +1,95 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/reflect/protoreflect" +) + +// HasExtension reports whether an extension field is populated. +// It returns false if m is invalid or if xt does not extend m. +func HasExtension(m Message, xt protoreflect.ExtensionType) bool { + // Treat nil message interface or descriptor as an empty message; no populated + // fields. + if m == nil || xt == nil { + return false + } + + // As a special-case, we reports invalid or mismatching descriptors + // as always not being populated (since they aren't). + mr := m.ProtoReflect() + xd := xt.TypeDescriptor() + if mr.Descriptor() != xd.ContainingMessage() { + return false + } + + return mr.Has(xd) +} + +// ClearExtension clears an extension field such that subsequent +// [HasExtension] calls return false. +// It panics if m is invalid or if xt does not extend m. +func ClearExtension(m Message, xt protoreflect.ExtensionType) { + m.ProtoReflect().Clear(xt.TypeDescriptor()) +} + +// GetExtension retrieves the value for an extension field. +// If the field is unpopulated, it returns the default value for +// scalars and an immutable, empty value for lists or messages. +// It panics if xt does not extend m. +func GetExtension(m Message, xt protoreflect.ExtensionType) any { + // Treat nil message interface as an empty message; return the default. + if m == nil { + return xt.InterfaceOf(xt.Zero()) + } + + return xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor())) +} + +// SetExtension stores the value of an extension field. +// It panics if m is invalid, xt does not extend m, or if type of v +// is invalid for the specified extension field. +func SetExtension(m Message, xt protoreflect.ExtensionType, v any) { + xd := xt.TypeDescriptor() + pv := xt.ValueOf(v) + + // Specially treat an invalid list, map, or message as clear. + isValid := true + switch { + case xd.IsList(): + isValid = pv.List().IsValid() + case xd.IsMap(): + isValid = pv.Map().IsValid() + case xd.Message() != nil: + isValid = pv.Message().IsValid() + } + if !isValid { + m.ProtoReflect().Clear(xd) + return + } + + m.ProtoReflect().Set(xd, pv) +} + +// RangeExtensions iterates over every populated extension field in m in an +// undefined order, calling f for each extension type and value encountered. +// It returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current extension field. +func RangeExtensions(m Message, f func(protoreflect.ExtensionType, any) bool) { + // Treat nil message interface as an empty message; nothing to range over. + if m == nil { + return + } + + m.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + if fd.IsExtension() { + xt := fd.(protoreflect.ExtensionTypeDescriptor).Type() + vi := xt.InterfaceOf(v) + return f(xt, vi) + } + return true + }) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/merge.go b/examples/go/vendor/google.golang.org/protobuf/proto/merge.go new file mode 100644 index 0000000..3c6fe57 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/merge.go @@ -0,0 +1,139 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// Merge merges src into dst, which must be a message with the same descriptor. +// +// Populated scalar fields in src are copied to dst, while populated +// singular messages in src are merged into dst by recursively calling Merge. +// The elements of every list field in src is appended to the corresponded +// list fields in dst. The entries of every map field in src is copied into +// the corresponding map field in dst, possibly replacing existing entries. +// The unknown fields of src are appended to the unknown fields of dst. +// +// It is semantically equivalent to unmarshaling the encoded form of src +// into dst with the [UnmarshalOptions.Merge] option specified. +func Merge(dst, src Message) { + // TODO: Should nil src be treated as semantically equivalent to a + // untyped, read-only, empty message? What about a nil dst? + + dstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect() + if dstMsg.Descriptor() != srcMsg.Descriptor() { + if got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want { + panic(fmt.Sprintf("descriptor mismatch: %v != %v", got, want)) + } + panic("descriptor mismatch") + } + mergeOptions{}.mergeMessage(dstMsg, srcMsg) +} + +// Clone returns a deep copy of m. +// If the top-level message is invalid, it returns an invalid message as well. +func Clone(m Message) Message { + // NOTE: Most usages of Clone assume the following properties: + // t := reflect.TypeOf(m) + // t == reflect.TypeOf(m.ProtoReflect().New().Interface()) + // t == reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface()) + // + // Embedding protobuf messages breaks this since the parent type will have + // a forwarded ProtoReflect method, but the Interface method will return + // the underlying embedded message type. + if m == nil { + return nil + } + src := m.ProtoReflect() + if !src.IsValid() { + return src.Type().Zero().Interface() + } + dst := src.New() + mergeOptions{}.mergeMessage(dst, src) + return dst.Interface() +} + +// mergeOptions provides a namespace for merge functions, and can be +// exported in the future if we add user-visible merge options. +type mergeOptions struct{} + +func (o mergeOptions) mergeMessage(dst, src protoreflect.Message) { + methods := protoMethods(dst) + if methods != nil && methods.Merge != nil { + in := protoiface.MergeInput{ + Destination: dst, + Source: src, + } + out := methods.Merge(in) + if out.Flags&protoiface.MergeComplete != 0 { + return + } + } + + if !dst.IsValid() { + panic(fmt.Sprintf("cannot merge into invalid %v message", dst.Descriptor().FullName())) + } + + src.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + switch { + case fd.IsList(): + o.mergeList(dst.Mutable(fd).List(), v.List(), fd) + case fd.IsMap(): + o.mergeMap(dst.Mutable(fd).Map(), v.Map(), fd.MapValue()) + case fd.Message() != nil: + o.mergeMessage(dst.Mutable(fd).Message(), v.Message()) + case fd.Kind() == protoreflect.BytesKind: + dst.Set(fd, o.cloneBytes(v)) + default: + dst.Set(fd, v) + } + return true + }) + + if len(src.GetUnknown()) > 0 { + dst.SetUnknown(append(dst.GetUnknown(), src.GetUnknown()...)) + } +} + +func (o mergeOptions) mergeList(dst, src protoreflect.List, fd protoreflect.FieldDescriptor) { + // Merge semantics appends to the end of the existing list. + for i, n := 0, src.Len(); i < n; i++ { + switch v := src.Get(i); { + case fd.Message() != nil: + dstv := dst.NewElement() + o.mergeMessage(dstv.Message(), v.Message()) + dst.Append(dstv) + case fd.Kind() == protoreflect.BytesKind: + dst.Append(o.cloneBytes(v)) + default: + dst.Append(v) + } + } +} + +func (o mergeOptions) mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) { + // Merge semantics replaces, rather than merges into existing entries. + src.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { + switch { + case fd.Message() != nil: + dstv := dst.NewValue() + o.mergeMessage(dstv.Message(), v.Message()) + dst.Set(k, dstv) + case fd.Kind() == protoreflect.BytesKind: + dst.Set(k, o.cloneBytes(v)) + default: + dst.Set(k, v) + } + return true + }) +} + +func (o mergeOptions) cloneBytes(v protoreflect.Value) protoreflect.Value { + return protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...)) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/messageset.go b/examples/go/vendor/google.golang.org/protobuf/proto/messageset.go new file mode 100644 index 0000000..575d148 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/messageset.go @@ -0,0 +1,98 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +func (o MarshalOptions) sizeMessageSet(m protoreflect.Message) (size int) { + m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + size += messageset.SizeField(fd.Number()) + size += protowire.SizeTag(messageset.FieldMessage) + size += protowire.SizeBytes(o.size(v.Message())) + return true + }) + size += messageset.SizeUnknown(m.GetUnknown()) + return size +} + +func (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]byte, error) { + if !flags.ProtoLegacy { + return b, errors.New("no support for message_set_wire_format") + } + fieldOrder := order.AnyFieldOrder + if o.Deterministic { + fieldOrder = order.NumberFieldOrder + } + var err error + order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + b, err = o.marshalMessageSetField(b, fd, v) + return err == nil + }) + if err != nil { + return b, err + } + return messageset.AppendUnknown(b, m.GetUnknown()) +} + +func (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) { + b = messageset.AppendFieldStart(b, fd.Number()) + b = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType) + calculatedSize := o.Size(value.Message().Interface()) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := o.marshalMessage(b, value.Message()) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; calculatedSize != measuredSize { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + b = messageset.AppendFieldEnd(b) + return b, nil +} + +func (o UnmarshalOptions) unmarshalMessageSet(b []byte, m protoreflect.Message) error { + if !flags.ProtoLegacy { + return errors.New("no support for message_set_wire_format") + } + return messageset.Unmarshal(b, false, func(num protowire.Number, v []byte) error { + err := o.unmarshalMessageSetField(m, num, v) + if err == errUnknown { + unknown := m.GetUnknown() + unknown = protowire.AppendTag(unknown, num, protowire.BytesType) + unknown = protowire.AppendBytes(unknown, v) + m.SetUnknown(unknown) + return nil + } + return err + }) +} + +func (o UnmarshalOptions) unmarshalMessageSetField(m protoreflect.Message, num protowire.Number, v []byte) error { + md := m.Descriptor() + if !md.ExtensionRanges().Has(num) { + return errUnknown + } + xt, err := o.Resolver.FindExtensionByNumber(md.FullName(), num) + if err == protoregistry.NotFound { + return errUnknown + } + if err != nil { + return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err) + } + xd := xt.TypeDescriptor() + if err := o.unmarshalMessage(v, m.Mutable(xd).Message()); err != nil { + return err + } + return nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/proto.go b/examples/go/vendor/google.golang.org/protobuf/proto/proto.go new file mode 100644 index 0000000..7543ee6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/proto.go @@ -0,0 +1,45 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Message is the top-level interface that all messages must implement. +// It provides access to a reflective view of a message. +// Any implementation of this interface may be used with all functions in the +// protobuf module that accept a Message, except where otherwise specified. +// +// This is the v2 interface definition for protobuf messages. +// The v1 interface definition is [github.com/golang/protobuf/proto.Message]. +// +// - To convert a v1 message to a v2 message, +// use [google.golang.org/protobuf/protoadapt.MessageV2Of]. +// - To convert a v2 message to a v1 message, +// use [google.golang.org/protobuf/protoadapt.MessageV1Of]. +type Message = protoreflect.ProtoMessage + +// Error matches all errors produced by packages in the protobuf module +// according to [errors.Is]. +// +// Example usage: +// +// if errors.Is(err, proto.Error) { ... } +var Error error + +func init() { + Error = errors.Error +} + +// MessageName returns the full name of m. +// If m is nil, it returns an empty string. +func MessageName(m Message) protoreflect.FullName { + if m == nil { + return "" + } + return m.ProtoReflect().Descriptor().FullName() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go b/examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go new file mode 100644 index 0000000..465e057 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go @@ -0,0 +1,20 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The protoreflect build tag disables use of fast-path methods. +//go:build !protoreflect +// +build !protoreflect + +package proto + +import ( + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +const hasProtoMethods = true + +func protoMethods(m protoreflect.Message) *protoiface.Methods { + return m.ProtoMethods() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go b/examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go new file mode 100644 index 0000000..494d6ce --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go @@ -0,0 +1,20 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The protoreflect build tag disables use of fast-path methods. +//go:build protoreflect +// +build protoreflect + +package proto + +import ( + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +const hasProtoMethods = false + +func protoMethods(m protoreflect.Message) *protoiface.Methods { + return nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/reset.go b/examples/go/vendor/google.golang.org/protobuf/proto/reset.go new file mode 100644 index 0000000..3d7f894 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/reset.go @@ -0,0 +1,43 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Reset clears every field in the message. +// The resulting message shares no observable memory with its previous state +// other than the memory for the message itself. +func Reset(m Message) { + if mr, ok := m.(interface{ Reset() }); ok && hasProtoMethods { + mr.Reset() + return + } + resetMessage(m.ProtoReflect()) +} + +func resetMessage(m protoreflect.Message) { + if !m.IsValid() { + panic(fmt.Sprintf("cannot reset invalid %v message", m.Descriptor().FullName())) + } + + // Clear all known fields. + fds := m.Descriptor().Fields() + for i := 0; i < fds.Len(); i++ { + m.Clear(fds.Get(i)) + } + + // Clear extension fields. + m.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool { + m.Clear(fd) + return true + }) + + // Clear unknown fields. + m.SetUnknown(nil) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/size.go b/examples/go/vendor/google.golang.org/protobuf/proto/size.go new file mode 100644 index 0000000..052fb5a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/size.go @@ -0,0 +1,103 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// Size returns the size in bytes of the wire-format encoding of m. +func Size(m Message) int { + return MarshalOptions{}.Size(m) +} + +// Size returns the size in bytes of the wire-format encoding of m. +func (o MarshalOptions) Size(m Message) int { + // Treat a nil message interface as an empty message; nothing to output. + if m == nil { + return 0 + } + + return o.size(m.ProtoReflect()) +} + +// size is a centralized function that all size operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for size that do not go through this. +func (o MarshalOptions) size(m protoreflect.Message) (size int) { + methods := protoMethods(m) + if methods != nil && methods.Size != nil { + out := methods.Size(protoiface.SizeInput{ + Message: m, + Flags: o.flags(), + }) + return out.Size + } + if methods != nil && methods.Marshal != nil { + // This is not efficient, but we don't have any choice. + // This case is mainly used for legacy types with a Marshal method. + out, _ := methods.Marshal(protoiface.MarshalInput{ + Message: m, + Flags: o.flags(), + }) + return len(out.Buf) + } + return o.sizeMessageSlow(m) +} + +func (o MarshalOptions) sizeMessageSlow(m protoreflect.Message) (size int) { + if messageset.IsMessageSet(m.Descriptor()) { + return o.sizeMessageSet(m) + } + m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + size += o.sizeField(fd, v) + return true + }) + size += len(m.GetUnknown()) + return size +} + +func (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protoreflect.Value) (size int) { + num := fd.Number() + switch { + case fd.IsList(): + return o.sizeList(num, fd, value.List()) + case fd.IsMap(): + return o.sizeMap(num, fd, value.Map()) + default: + return protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), value) + } +} + +func (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) { + sizeTag := protowire.SizeTag(num) + + if fd.IsPacked() && list.Len() > 0 { + content := 0 + for i, llen := 0, list.Len(); i < llen; i++ { + content += o.sizeSingular(num, fd.Kind(), list.Get(i)) + } + return sizeTag + protowire.SizeBytes(content) + } + + for i, llen := 0, list.Len(); i < llen; i++ { + size += sizeTag + o.sizeSingular(num, fd.Kind(), list.Get(i)) + } + return size +} + +func (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) { + sizeTag := protowire.SizeTag(num) + + mapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool { + size += sizeTag + size += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value)) + return true + }) + return size +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go b/examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go new file mode 100644 index 0000000..3cf61a8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go @@ -0,0 +1,55 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/reflect/protoreflect" +) + +func (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int { + switch kind { + case protoreflect.BoolKind: + return protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + case protoreflect.EnumKind: + return protowire.SizeVarint(uint64(v.Enum())) + case protoreflect.Int32Kind: + return protowire.SizeVarint(uint64(int32(v.Int()))) + case protoreflect.Sint32Kind: + return protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + case protoreflect.Uint32Kind: + return protowire.SizeVarint(uint64(uint32(v.Uint()))) + case protoreflect.Int64Kind: + return protowire.SizeVarint(uint64(v.Int())) + case protoreflect.Sint64Kind: + return protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + case protoreflect.Uint64Kind: + return protowire.SizeVarint(v.Uint()) + case protoreflect.Sfixed32Kind: + return protowire.SizeFixed32() + case protoreflect.Fixed32Kind: + return protowire.SizeFixed32() + case protoreflect.FloatKind: + return protowire.SizeFixed32() + case protoreflect.Sfixed64Kind: + return protowire.SizeFixed64() + case protoreflect.Fixed64Kind: + return protowire.SizeFixed64() + case protoreflect.DoubleKind: + return protowire.SizeFixed64() + case protoreflect.StringKind: + return protowire.SizeBytes(len(v.String())) + case protoreflect.BytesKind: + return protowire.SizeBytes(len(v.Bytes())) + case protoreflect.MessageKind: + return protowire.SizeBytes(o.size(v.Message())) + case protoreflect.GroupKind: + return protowire.SizeGroup(num, o.size(v.Message())) + default: + return 0 + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go b/examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go new file mode 100644 index 0000000..653b12c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +// Bool stores v in a new bool value and returns a pointer to it. +func Bool(v bool) *bool { return &v } + +// Int32 stores v in a new int32 value and returns a pointer to it. +func Int32(v int32) *int32 { return &v } + +// Int64 stores v in a new int64 value and returns a pointer to it. +func Int64(v int64) *int64 { return &v } + +// Float32 stores v in a new float32 value and returns a pointer to it. +func Float32(v float32) *float32 { return &v } + +// Float64 stores v in a new float64 value and returns a pointer to it. +func Float64(v float64) *float64 { return &v } + +// Uint32 stores v in a new uint32 value and returns a pointer to it. +func Uint32(v uint32) *uint32 { return &v } + +// Uint64 stores v in a new uint64 value and returns a pointer to it. +func Uint64(v uint64) *uint64 { return &v } + +// String stores v in a new string value and returns a pointer to it. +func String(v string) *string { return &v } diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go new file mode 100644 index 0000000..d5d5af6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go @@ -0,0 +1,78 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "google.golang.org/protobuf/internal/pragma" +) + +// The following types are used by the fast-path Message.ProtoMethods method. +// +// To avoid polluting the public protoreflect API with types used only by +// low-level implementations, the canonical definitions of these types are +// in the runtime/protoiface package. The definitions here and in protoiface +// must be kept in sync. +type ( + methods = struct { + pragma.NoUnkeyedLiterals + Flags supportFlags + Size func(sizeInput) sizeOutput + Marshal func(marshalInput) (marshalOutput, error) + Unmarshal func(unmarshalInput) (unmarshalOutput, error) + Merge func(mergeInput) mergeOutput + CheckInitialized func(checkInitializedInput) (checkInitializedOutput, error) + } + supportFlags = uint64 + sizeInput = struct { + pragma.NoUnkeyedLiterals + Message Message + Flags uint8 + } + sizeOutput = struct { + pragma.NoUnkeyedLiterals + Size int + } + marshalInput = struct { + pragma.NoUnkeyedLiterals + Message Message + Buf []byte + Flags uint8 + } + marshalOutput = struct { + pragma.NoUnkeyedLiterals + Buf []byte + } + unmarshalInput = struct { + pragma.NoUnkeyedLiterals + Message Message + Buf []byte + Flags uint8 + Resolver interface { + FindExtensionByName(field FullName) (ExtensionType, error) + FindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error) + } + Depth int + } + unmarshalOutput = struct { + pragma.NoUnkeyedLiterals + Flags uint8 + } + mergeInput = struct { + pragma.NoUnkeyedLiterals + Source Message + Destination Message + } + mergeOutput = struct { + pragma.NoUnkeyedLiterals + Flags uint8 + } + checkInitializedInput = struct { + pragma.NoUnkeyedLiterals + Message Message + } + checkInitializedOutput = struct { + pragma.NoUnkeyedLiterals + } +) diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go new file mode 100644 index 0000000..c85bfaa --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go @@ -0,0 +1,513 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoreflect provides interfaces to dynamically manipulate messages. +// +// This package includes type descriptors which describe the structure of types +// defined in proto source files and value interfaces which provide the +// ability to examine and manipulate the contents of messages. +// +// # Protocol Buffer Descriptors +// +// Protobuf descriptors (e.g., [EnumDescriptor] or [MessageDescriptor]) +// are immutable objects that represent protobuf type information. +// They are wrappers around the messages declared in descriptor.proto. +// Protobuf descriptors alone lack any information regarding Go types. +// +// Enums and messages generated by this module implement [Enum] and [ProtoMessage], +// where the Descriptor and ProtoReflect.Descriptor accessors respectively +// return the protobuf descriptor for the values. +// +// The protobuf descriptor interfaces are not meant to be implemented by +// user code since they might need to be extended in the future to support +// additions to the protobuf language. +// The [google.golang.org/protobuf/reflect/protodesc] package converts between +// google.protobuf.DescriptorProto messages and protobuf descriptors. +// +// # Go Type Descriptors +// +// A type descriptor (e.g., [EnumType] or [MessageType]) is a constructor for +// a concrete Go type that represents the associated protobuf descriptor. +// There is commonly a one-to-one relationship between protobuf descriptors and +// Go type descriptors, but it can potentially be a one-to-many relationship. +// +// Enums and messages generated by this module implement [Enum] and [ProtoMessage], +// where the Type and ProtoReflect.Type accessors respectively +// return the protobuf descriptor for the values. +// +// The [google.golang.org/protobuf/types/dynamicpb] package can be used to +// create Go type descriptors from protobuf descriptors. +// +// # Value Interfaces +// +// The [Enum] and [Message] interfaces provide a reflective view over an +// enum or message instance. For enums, it provides the ability to retrieve +// the enum value number for any concrete enum type. For messages, it provides +// the ability to access or manipulate fields of the message. +// +// To convert a [google.golang.org/protobuf/proto.Message] to a [protoreflect.Message], use the +// former's ProtoReflect method. Since the ProtoReflect method is new to the +// v2 message interface, it may not be present on older message implementations. +// The [github.com/golang/protobuf/proto.MessageReflect] function can be used +// to obtain a reflective view on older messages. +// +// # Relationships +// +// The following diagrams demonstrate the relationships between +// various types declared in this package. +// +// ┌───────────────────────────────────┐ +// V │ +// ┌────────────── New(n) ─────────────┐ │ +// │ │ │ +// │ ┌──── Descriptor() ──┐ │ ┌── Number() ──┐ │ +// │ │ V V │ V │ +// ╔════════════╗ ╔════════════════╗ ╔════════╗ ╔════════════╗ +// ║ EnumType ║ ║ EnumDescriptor ║ ║ Enum ║ ║ EnumNumber ║ +// ╚════════════╝ ╚════════════════╝ ╚════════╝ ╚════════════╝ +// Λ Λ │ │ +// │ └─── Descriptor() ──┘ │ +// │ │ +// └────────────────── Type() ───────┘ +// +// • An [EnumType] describes a concrete Go enum type. +// It has an EnumDescriptor and can construct an Enum instance. +// +// • An [EnumDescriptor] describes an abstract protobuf enum type. +// +// • An [Enum] is a concrete enum instance. Generated enums implement Enum. +// +// ┌──────────────── New() ─────────────────┐ +// │ │ +// │ ┌─── Descriptor() ─────┐ │ ┌── Interface() ───┐ +// │ │ V V │ V +// ╔═════════════╗ ╔═══════════════════╗ ╔═════════╗ ╔══════════════╗ +// ║ MessageType ║ ║ MessageDescriptor ║ ║ Message ║ ║ ProtoMessage ║ +// ╚═════════════╝ ╚═══════════════════╝ ╚═════════╝ ╚══════════════╝ +// Λ Λ │ │ Λ │ +// │ └──── Descriptor() ────┘ │ └─ ProtoReflect() ─┘ +// │ │ +// └─────────────────── Type() ─────────┘ +// +// • A [MessageType] describes a concrete Go message type. +// It has a [MessageDescriptor] and can construct a [Message] instance. +// Just as how Go's [reflect.Type] is a reflective description of a Go type, +// a [MessageType] is a reflective description of a Go type for a protobuf message. +// +// • A [MessageDescriptor] describes an abstract protobuf message type. +// It has no understanding of Go types. In order to construct a [MessageType] +// from just a [MessageDescriptor], you can consider looking up the message type +// in the global registry using the FindMessageByName method on +// [google.golang.org/protobuf/reflect/protoregistry.GlobalTypes] +// or constructing a dynamic [MessageType] using +// [google.golang.org/protobuf/types/dynamicpb.NewMessageType]. +// +// • A [Message] is a reflective view over a concrete message instance. +// Generated messages implement [ProtoMessage], which can convert to a [Message]. +// Just as how Go's [reflect.Value] is a reflective view over a Go value, +// a [Message] is a reflective view over a concrete protobuf message instance. +// Using Go reflection as an analogy, the [ProtoMessage.ProtoReflect] method is similar to +// calling [reflect.ValueOf], and the [Message.Interface] method is similar to +// calling [reflect.Value.Interface]. +// +// ┌── TypeDescriptor() ──┐ ┌───── Descriptor() ─────┐ +// │ V │ V +// ╔═══════════════╗ ╔═════════════════════════╗ ╔═════════════════════╗ +// ║ ExtensionType ║ ║ ExtensionTypeDescriptor ║ ║ ExtensionDescriptor ║ +// ╚═══════════════╝ ╚═════════════════════════╝ ╚═════════════════════╝ +// Λ │ │ Λ │ Λ +// └─────── Type() ───────┘ │ └─── may implement ────┘ │ +// │ │ +// └────── implements ────────┘ +// +// • An [ExtensionType] describes a concrete Go implementation of an extension. +// It has an [ExtensionTypeDescriptor] and can convert to/from +// an abstract [Value] and a Go value. +// +// • An [ExtensionTypeDescriptor] is an [ExtensionDescriptor] +// which also has an [ExtensionType]. +// +// • An [ExtensionDescriptor] describes an abstract protobuf extension field and +// may not always be an [ExtensionTypeDescriptor]. +package protoreflect + +import ( + "fmt" + "strings" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/pragma" +) + +type doNotImplement pragma.DoNotImplement + +// ProtoMessage is the top-level interface that all proto messages implement. +// This is declared in the protoreflect package to avoid a cyclic dependency; +// use the [google.golang.org/protobuf/proto.Message] type instead, which aliases this type. +type ProtoMessage interface{ ProtoReflect() Message } + +// Syntax is the language version of the proto file. +type Syntax syntax + +type syntax int8 // keep exact type opaque as the int type may change + +const ( + Proto2 Syntax = 2 + Proto3 Syntax = 3 + Editions Syntax = 4 +) + +// IsValid reports whether the syntax is valid. +func (s Syntax) IsValid() bool { + switch s { + case Proto2, Proto3, Editions: + return true + default: + return false + } +} + +// String returns s as a proto source identifier (e.g., "proto2"). +func (s Syntax) String() string { + switch s { + case Proto2: + return "proto2" + case Proto3: + return "proto3" + case Editions: + return "editions" + default: + return fmt.Sprintf("", s) + } +} + +// GoString returns s as a Go source identifier (e.g., "Proto2"). +func (s Syntax) GoString() string { + switch s { + case Proto2: + return "Proto2" + case Proto3: + return "Proto3" + default: + return fmt.Sprintf("Syntax(%d)", s) + } +} + +// Cardinality determines whether a field is optional, required, or repeated. +type Cardinality cardinality + +type cardinality int8 // keep exact type opaque as the int type may change + +// Constants as defined by the google.protobuf.Cardinality enumeration. +const ( + Optional Cardinality = 1 // appears zero or one times + Required Cardinality = 2 // appears exactly one time; invalid with Proto3 + Repeated Cardinality = 3 // appears zero or more times +) + +// IsValid reports whether the cardinality is valid. +func (c Cardinality) IsValid() bool { + switch c { + case Optional, Required, Repeated: + return true + default: + return false + } +} + +// String returns c as a proto source identifier (e.g., "optional"). +func (c Cardinality) String() string { + switch c { + case Optional: + return "optional" + case Required: + return "required" + case Repeated: + return "repeated" + default: + return fmt.Sprintf("", c) + } +} + +// GoString returns c as a Go source identifier (e.g., "Optional"). +func (c Cardinality) GoString() string { + switch c { + case Optional: + return "Optional" + case Required: + return "Required" + case Repeated: + return "Repeated" + default: + return fmt.Sprintf("Cardinality(%d)", c) + } +} + +// Kind indicates the basic proto kind of a field. +type Kind kind + +type kind int8 // keep exact type opaque as the int type may change + +// Constants as defined by the google.protobuf.Field.Kind enumeration. +const ( + BoolKind Kind = 8 + EnumKind Kind = 14 + Int32Kind Kind = 5 + Sint32Kind Kind = 17 + Uint32Kind Kind = 13 + Int64Kind Kind = 3 + Sint64Kind Kind = 18 + Uint64Kind Kind = 4 + Sfixed32Kind Kind = 15 + Fixed32Kind Kind = 7 + FloatKind Kind = 2 + Sfixed64Kind Kind = 16 + Fixed64Kind Kind = 6 + DoubleKind Kind = 1 + StringKind Kind = 9 + BytesKind Kind = 12 + MessageKind Kind = 11 + GroupKind Kind = 10 +) + +// IsValid reports whether the kind is valid. +func (k Kind) IsValid() bool { + switch k { + case BoolKind, EnumKind, + Int32Kind, Sint32Kind, Uint32Kind, + Int64Kind, Sint64Kind, Uint64Kind, + Sfixed32Kind, Fixed32Kind, FloatKind, + Sfixed64Kind, Fixed64Kind, DoubleKind, + StringKind, BytesKind, MessageKind, GroupKind: + return true + default: + return false + } +} + +// String returns k as a proto source identifier (e.g., "bool"). +func (k Kind) String() string { + switch k { + case BoolKind: + return "bool" + case EnumKind: + return "enum" + case Int32Kind: + return "int32" + case Sint32Kind: + return "sint32" + case Uint32Kind: + return "uint32" + case Int64Kind: + return "int64" + case Sint64Kind: + return "sint64" + case Uint64Kind: + return "uint64" + case Sfixed32Kind: + return "sfixed32" + case Fixed32Kind: + return "fixed32" + case FloatKind: + return "float" + case Sfixed64Kind: + return "sfixed64" + case Fixed64Kind: + return "fixed64" + case DoubleKind: + return "double" + case StringKind: + return "string" + case BytesKind: + return "bytes" + case MessageKind: + return "message" + case GroupKind: + return "group" + default: + return fmt.Sprintf("", k) + } +} + +// GoString returns k as a Go source identifier (e.g., "BoolKind"). +func (k Kind) GoString() string { + switch k { + case BoolKind: + return "BoolKind" + case EnumKind: + return "EnumKind" + case Int32Kind: + return "Int32Kind" + case Sint32Kind: + return "Sint32Kind" + case Uint32Kind: + return "Uint32Kind" + case Int64Kind: + return "Int64Kind" + case Sint64Kind: + return "Sint64Kind" + case Uint64Kind: + return "Uint64Kind" + case Sfixed32Kind: + return "Sfixed32Kind" + case Fixed32Kind: + return "Fixed32Kind" + case FloatKind: + return "FloatKind" + case Sfixed64Kind: + return "Sfixed64Kind" + case Fixed64Kind: + return "Fixed64Kind" + case DoubleKind: + return "DoubleKind" + case StringKind: + return "StringKind" + case BytesKind: + return "BytesKind" + case MessageKind: + return "MessageKind" + case GroupKind: + return "GroupKind" + default: + return fmt.Sprintf("Kind(%d)", k) + } +} + +// FieldNumber is the field number in a message. +type FieldNumber = protowire.Number + +// FieldNumbers represent a list of field numbers. +type FieldNumbers interface { + // Len reports the number of fields in the list. + Len() int + // Get returns the ith field number. It panics if out of bounds. + Get(i int) FieldNumber + // Has reports whether n is within the list of fields. + Has(n FieldNumber) bool + + doNotImplement +} + +// FieldRanges represent a list of field number ranges. +type FieldRanges interface { + // Len reports the number of ranges in the list. + Len() int + // Get returns the ith range. It panics if out of bounds. + Get(i int) [2]FieldNumber // start inclusive; end exclusive + // Has reports whether n is within any of the ranges. + Has(n FieldNumber) bool + + doNotImplement +} + +// EnumNumber is the numeric value for an enum. +type EnumNumber int32 + +// EnumRanges represent a list of enum number ranges. +type EnumRanges interface { + // Len reports the number of ranges in the list. + Len() int + // Get returns the ith range. It panics if out of bounds. + Get(i int) [2]EnumNumber // start inclusive; end inclusive + // Has reports whether n is within any of the ranges. + Has(n EnumNumber) bool + + doNotImplement +} + +// Name is the short name for a proto declaration. This is not the name +// as used in Go source code, which might not be identical to the proto name. +type Name string // e.g., "Kind" + +// IsValid reports whether s is a syntactically valid name. +// An empty name is invalid. +func (s Name) IsValid() bool { + return consumeIdent(string(s)) == len(s) +} + +// Names represent a list of names. +type Names interface { + // Len reports the number of names in the list. + Len() int + // Get returns the ith name. It panics if out of bounds. + Get(i int) Name + // Has reports whether s matches any names in the list. + Has(s Name) bool + + doNotImplement +} + +// FullName is a qualified name that uniquely identifies a proto declaration. +// A qualified name is the concatenation of the proto package along with the +// fully-declared name (i.e., name of parent preceding the name of the child), +// with a '.' delimiter placed between each [Name]. +// +// This should not have any leading or trailing dots. +type FullName string // e.g., "google.protobuf.Field.Kind" + +// IsValid reports whether s is a syntactically valid full name. +// An empty full name is invalid. +func (s FullName) IsValid() bool { + i := consumeIdent(string(s)) + if i < 0 { + return false + } + for len(s) > i { + if s[i] != '.' { + return false + } + i++ + n := consumeIdent(string(s[i:])) + if n < 0 { + return false + } + i += n + } + return true +} + +func consumeIdent(s string) (i int) { + if len(s) == 0 || !isLetter(s[i]) { + return -1 + } + i++ + for len(s) > i && isLetterDigit(s[i]) { + i++ + } + return i +} +func isLetter(c byte) bool { + return c == '_' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') +} +func isLetterDigit(c byte) bool { + return isLetter(c) || ('0' <= c && c <= '9') +} + +// Name returns the short name, which is the last identifier segment. +// A single segment FullName is the [Name] itself. +func (n FullName) Name() Name { + if i := strings.LastIndexByte(string(n), '.'); i >= 0 { + return Name(n[i+1:]) + } + return Name(n) +} + +// Parent returns the full name with the trailing identifier removed. +// A single segment FullName has no parent. +func (n FullName) Parent() FullName { + if i := strings.LastIndexByte(string(n), '.'); i >= 0 { + return n[:i] + } + return "" +} + +// Append returns the qualified name appended with the provided short name. +// +// Invariant: n == n.Parent().Append(n.Name()) // assuming n is valid +func (n FullName) Append(s Name) FullName { + if n == "" { + return FullName(s) + } + return n + "." + FullName(s) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go new file mode 100644 index 0000000..0b99428 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go @@ -0,0 +1,129 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "strconv" +) + +// SourceLocations is a list of source locations. +type SourceLocations interface { + // Len reports the number of source locations in the proto file. + Len() int + // Get returns the ith SourceLocation. It panics if out of bounds. + Get(int) SourceLocation + + // ByPath returns the SourceLocation for the given path, + // returning the first location if multiple exist for the same path. + // If multiple locations exist for the same path, + // then SourceLocation.Next index can be used to identify the + // index of the next SourceLocation. + // If no location exists for this path, it returns the zero value. + ByPath(path SourcePath) SourceLocation + + // ByDescriptor returns the SourceLocation for the given descriptor, + // returning the first location if multiple exist for the same path. + // If no location exists for this descriptor, it returns the zero value. + ByDescriptor(desc Descriptor) SourceLocation + + doNotImplement +} + +// SourceLocation describes a source location and +// corresponds with the google.protobuf.SourceCodeInfo.Location message. +type SourceLocation struct { + // Path is the path to the declaration from the root file descriptor. + // The contents of this slice must not be mutated. + Path SourcePath + + // StartLine and StartColumn are the zero-indexed starting location + // in the source file for the declaration. + StartLine, StartColumn int + // EndLine and EndColumn are the zero-indexed ending location + // in the source file for the declaration. + // In the descriptor.proto, the end line may be omitted if it is identical + // to the start line. Here, it is always populated. + EndLine, EndColumn int + + // LeadingDetachedComments are the leading detached comments + // for the declaration. The contents of this slice must not be mutated. + LeadingDetachedComments []string + // LeadingComments is the leading attached comment for the declaration. + LeadingComments string + // TrailingComments is the trailing attached comment for the declaration. + TrailingComments string + + // Next is an index into SourceLocations for the next source location that + // has the same Path. It is zero if there is no next location. + Next int +} + +// SourcePath identifies part of a file descriptor for a source location. +// The SourcePath is a sequence of either field numbers or indexes into +// a repeated field that form a path starting from the root file descriptor. +// +// See google.protobuf.SourceCodeInfo.Location.path. +type SourcePath []int32 + +// Equal reports whether p1 equals p2. +func (p1 SourcePath) Equal(p2 SourcePath) bool { + if len(p1) != len(p2) { + return false + } + for i := range p1 { + if p1[i] != p2[i] { + return false + } + } + return true +} + +// String formats the path in a humanly readable manner. +// The output is guaranteed to be deterministic, +// making it suitable for use as a key into a Go map. +// It is not guaranteed to be stable as the exact output could change +// in a future version of this module. +// +// Example output: +// +// .message_type[6].nested_type[15].field[3] +func (p SourcePath) String() string { + b := p.appendFileDescriptorProto(nil) + for _, i := range p { + b = append(b, '.') + b = strconv.AppendInt(b, int64(i), 10) + } + return string(b) +} + +type appendFunc func(*SourcePath, []byte) []byte + +func (p *SourcePath) appendSingularField(b []byte, name string, f appendFunc) []byte { + if len(*p) == 0 { + return b + } + b = append(b, '.') + b = append(b, name...) + *p = (*p)[1:] + if f != nil { + b = f(p, b) + } + return b +} + +func (p *SourcePath) appendRepeatedField(b []byte, name string, f appendFunc) []byte { + b = p.appendSingularField(b, name, nil) + if len(*p) == 0 || (*p)[0] < 0 { + return b + } + b = append(b, '[') + b = strconv.AppendUint(b, uint64((*p)[0]), 10) + b = append(b, ']') + *p = (*p)[1:] + if f != nil { + b = f(p, b) + } + return b +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go new file mode 100644 index 0000000..ea154ee --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go @@ -0,0 +1,573 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package protoreflect + +func (p *SourcePath) appendFileDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "package", nil) + case 3: + b = p.appendRepeatedField(b, "dependency", nil) + case 10: + b = p.appendRepeatedField(b, "public_dependency", nil) + case 11: + b = p.appendRepeatedField(b, "weak_dependency", nil) + case 4: + b = p.appendRepeatedField(b, "message_type", (*SourcePath).appendDescriptorProto) + case 5: + b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto) + case 6: + b = p.appendRepeatedField(b, "service", (*SourcePath).appendServiceDescriptorProto) + case 7: + b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto) + case 8: + b = p.appendSingularField(b, "options", (*SourcePath).appendFileOptions) + case 9: + b = p.appendSingularField(b, "source_code_info", (*SourcePath).appendSourceCodeInfo) + case 12: + b = p.appendSingularField(b, "syntax", nil) + case 14: + b = p.appendSingularField(b, "edition", nil) + } + return b +} + +func (p *SourcePath) appendDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendRepeatedField(b, "field", (*SourcePath).appendFieldDescriptorProto) + case 6: + b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto) + case 3: + b = p.appendRepeatedField(b, "nested_type", (*SourcePath).appendDescriptorProto) + case 4: + b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto) + case 5: + b = p.appendRepeatedField(b, "extension_range", (*SourcePath).appendDescriptorProto_ExtensionRange) + case 8: + b = p.appendRepeatedField(b, "oneof_decl", (*SourcePath).appendOneofDescriptorProto) + case 7: + b = p.appendSingularField(b, "options", (*SourcePath).appendMessageOptions) + case 9: + b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendDescriptorProto_ReservedRange) + case 10: + b = p.appendRepeatedField(b, "reserved_name", nil) + } + return b +} + +func (p *SourcePath) appendEnumDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendRepeatedField(b, "value", (*SourcePath).appendEnumValueDescriptorProto) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendEnumOptions) + case 4: + b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange) + case 5: + b = p.appendRepeatedField(b, "reserved_name", nil) + } + return b +} + +func (p *SourcePath) appendServiceDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendRepeatedField(b, "method", (*SourcePath).appendMethodDescriptorProto) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendServiceOptions) + } + return b +} + +func (p *SourcePath) appendFieldDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 3: + b = p.appendSingularField(b, "number", nil) + case 4: + b = p.appendSingularField(b, "label", nil) + case 5: + b = p.appendSingularField(b, "type", nil) + case 6: + b = p.appendSingularField(b, "type_name", nil) + case 2: + b = p.appendSingularField(b, "extendee", nil) + case 7: + b = p.appendSingularField(b, "default_value", nil) + case 9: + b = p.appendSingularField(b, "oneof_index", nil) + case 10: + b = p.appendSingularField(b, "json_name", nil) + case 8: + b = p.appendSingularField(b, "options", (*SourcePath).appendFieldOptions) + case 17: + b = p.appendSingularField(b, "proto3_optional", nil) + } + return b +} + +func (p *SourcePath) appendFileOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "java_package", nil) + case 8: + b = p.appendSingularField(b, "java_outer_classname", nil) + case 10: + b = p.appendSingularField(b, "java_multiple_files", nil) + case 20: + b = p.appendSingularField(b, "java_generate_equals_and_hash", nil) + case 27: + b = p.appendSingularField(b, "java_string_check_utf8", nil) + case 9: + b = p.appendSingularField(b, "optimize_for", nil) + case 11: + b = p.appendSingularField(b, "go_package", nil) + case 16: + b = p.appendSingularField(b, "cc_generic_services", nil) + case 17: + b = p.appendSingularField(b, "java_generic_services", nil) + case 18: + b = p.appendSingularField(b, "py_generic_services", nil) + case 23: + b = p.appendSingularField(b, "deprecated", nil) + case 31: + b = p.appendSingularField(b, "cc_enable_arenas", nil) + case 36: + b = p.appendSingularField(b, "objc_class_prefix", nil) + case 37: + b = p.appendSingularField(b, "csharp_namespace", nil) + case 39: + b = p.appendSingularField(b, "swift_prefix", nil) + case 40: + b = p.appendSingularField(b, "php_class_prefix", nil) + case 41: + b = p.appendSingularField(b, "php_namespace", nil) + case 44: + b = p.appendSingularField(b, "php_metadata_namespace", nil) + case 45: + b = p.appendSingularField(b, "ruby_package", nil) + case 50: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendSourceCodeInfo(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendRepeatedField(b, "location", (*SourcePath).appendSourceCodeInfo_Location) + } + return b +} + +func (p *SourcePath) appendDescriptorProto_ExtensionRange(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "start", nil) + case 2: + b = p.appendSingularField(b, "end", nil) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendExtensionRangeOptions) + } + return b +} + +func (p *SourcePath) appendOneofDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "options", (*SourcePath).appendOneofOptions) + } + return b +} + +func (p *SourcePath) appendMessageOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "message_set_wire_format", nil) + case 2: + b = p.appendSingularField(b, "no_standard_descriptor_accessor", nil) + case 3: + b = p.appendSingularField(b, "deprecated", nil) + case 7: + b = p.appendSingularField(b, "map_entry", nil) + case 11: + b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) + case 12: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendDescriptorProto_ReservedRange(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "start", nil) + case 2: + b = p.appendSingularField(b, "end", nil) + } + return b +} + +func (p *SourcePath) appendEnumValueDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "number", nil) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendEnumValueOptions) + } + return b +} + +func (p *SourcePath) appendEnumOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 2: + b = p.appendSingularField(b, "allow_alias", nil) + case 3: + b = p.appendSingularField(b, "deprecated", nil) + case 6: + b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) + case 7: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendEnumDescriptorProto_EnumReservedRange(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "start", nil) + case 2: + b = p.appendSingularField(b, "end", nil) + } + return b +} + +func (p *SourcePath) appendMethodDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "input_type", nil) + case 3: + b = p.appendSingularField(b, "output_type", nil) + case 4: + b = p.appendSingularField(b, "options", (*SourcePath).appendMethodOptions) + case 5: + b = p.appendSingularField(b, "client_streaming", nil) + case 6: + b = p.appendSingularField(b, "server_streaming", nil) + } + return b +} + +func (p *SourcePath) appendServiceOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 34: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 33: + b = p.appendSingularField(b, "deprecated", nil) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendFieldOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "ctype", nil) + case 2: + b = p.appendSingularField(b, "packed", nil) + case 6: + b = p.appendSingularField(b, "jstype", nil) + case 5: + b = p.appendSingularField(b, "lazy", nil) + case 15: + b = p.appendSingularField(b, "unverified_lazy", nil) + case 3: + b = p.appendSingularField(b, "deprecated", nil) + case 10: + b = p.appendSingularField(b, "weak", nil) + case 16: + b = p.appendSingularField(b, "debug_redact", nil) + case 17: + b = p.appendSingularField(b, "retention", nil) + case 19: + b = p.appendRepeatedField(b, "targets", nil) + case 20: + b = p.appendRepeatedField(b, "edition_defaults", (*SourcePath).appendFieldOptions_EditionDefault) + case 21: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 22: + b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendFeatureSet(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "field_presence", nil) + case 2: + b = p.appendSingularField(b, "enum_type", nil) + case 3: + b = p.appendSingularField(b, "repeated_field_encoding", nil) + case 4: + b = p.appendSingularField(b, "utf8_validation", nil) + case 5: + b = p.appendSingularField(b, "message_encoding", nil) + case 6: + b = p.appendSingularField(b, "json_format", nil) + } + return b +} + +func (p *SourcePath) appendUninterpretedOption(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 2: + b = p.appendRepeatedField(b, "name", (*SourcePath).appendUninterpretedOption_NamePart) + case 3: + b = p.appendSingularField(b, "identifier_value", nil) + case 4: + b = p.appendSingularField(b, "positive_int_value", nil) + case 5: + b = p.appendSingularField(b, "negative_int_value", nil) + case 6: + b = p.appendSingularField(b, "double_value", nil) + case 7: + b = p.appendSingularField(b, "string_value", nil) + case 8: + b = p.appendSingularField(b, "aggregate_value", nil) + } + return b +} + +func (p *SourcePath) appendSourceCodeInfo_Location(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendRepeatedField(b, "path", nil) + case 2: + b = p.appendRepeatedField(b, "span", nil) + case 3: + b = p.appendSingularField(b, "leading_comments", nil) + case 4: + b = p.appendSingularField(b, "trailing_comments", nil) + case 6: + b = p.appendRepeatedField(b, "leading_detached_comments", nil) + } + return b +} + +func (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + case 2: + b = p.appendRepeatedField(b, "declaration", (*SourcePath).appendExtensionRangeOptions_Declaration) + case 50: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 3: + b = p.appendSingularField(b, "verification", nil) + } + return b +} + +func (p *SourcePath) appendOneofOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendEnumValueOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "deprecated", nil) + case 2: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 3: + b = p.appendSingularField(b, "debug_redact", nil) + case 4: + b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendMethodOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 33: + b = p.appendSingularField(b, "deprecated", nil) + case 34: + b = p.appendSingularField(b, "idempotency_level", nil) + case 35: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendFieldOptions_EditionDefault(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 3: + b = p.appendSingularField(b, "edition", nil) + case 2: + b = p.appendSingularField(b, "value", nil) + } + return b +} + +func (p *SourcePath) appendFieldOptions_FeatureSupport(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "edition_introduced", nil) + case 2: + b = p.appendSingularField(b, "edition_deprecated", nil) + case 3: + b = p.appendSingularField(b, "deprecation_warning", nil) + case 4: + b = p.appendSingularField(b, "edition_removed", nil) + } + return b +} + +func (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name_part", nil) + case 2: + b = p.appendSingularField(b, "is_extension", nil) + } + return b +} + +func (p *SourcePath) appendExtensionRangeOptions_Declaration(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "number", nil) + case 2: + b = p.appendSingularField(b, "full_name", nil) + case 3: + b = p.appendSingularField(b, "type", nil) + case 5: + b = p.appendSingularField(b, "reserved", nil) + case 6: + b = p.appendSingularField(b, "repeated", nil) + } + return b +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go new file mode 100644 index 0000000..cd8fadb --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go @@ -0,0 +1,672 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +// Descriptor provides a set of accessors that are common to every descriptor. +// Each descriptor type wraps the equivalent google.protobuf.XXXDescriptorProto, +// but provides efficient lookup and immutability. +// +// Each descriptor is comparable. Equality implies that the two types are +// exactly identical. However, it is possible for the same semantically +// identical proto type to be represented by multiple type descriptors. +// +// For example, suppose we have t1 and t2 which are both an [MessageDescriptor]. +// If t1 == t2, then the types are definitely equal and all accessors return +// the same information. However, if t1 != t2, then it is still possible that +// they still represent the same proto type (e.g., t1.FullName == t2.FullName). +// This can occur if a descriptor type is created dynamically, or multiple +// versions of the same proto type are accidentally linked into the Go binary. +type Descriptor interface { + // ParentFile returns the parent file descriptor that this descriptor + // is declared within. The parent file for the file descriptor is itself. + // + // Support for this functionality is optional and may return nil. + ParentFile() FileDescriptor + + // Parent returns the parent containing this descriptor declaration. + // The following shows the mapping from child type to possible parent types: + // + // ╔═════════════════════╤═══════════════════════════════════╗ + // ║ Child type │ Possible parent types ║ + // ╠═════════════════════╪═══════════════════════════════════╣ + // ║ FileDescriptor │ nil ║ + // ║ MessageDescriptor │ FileDescriptor, MessageDescriptor ║ + // ║ FieldDescriptor │ FileDescriptor, MessageDescriptor ║ + // ║ OneofDescriptor │ MessageDescriptor ║ + // ║ EnumDescriptor │ FileDescriptor, MessageDescriptor ║ + // ║ EnumValueDescriptor │ EnumDescriptor ║ + // ║ ServiceDescriptor │ FileDescriptor ║ + // ║ MethodDescriptor │ ServiceDescriptor ║ + // ╚═════════════════════╧═══════════════════════════════════╝ + // + // Support for this functionality is optional and may return nil. + Parent() Descriptor + + // Index returns the index of this descriptor within its parent. + // It returns 0 if the descriptor does not have a parent or if the parent + // is unknown. + Index() int + + // Syntax is the protobuf syntax. + Syntax() Syntax // e.g., Proto2 or Proto3 + + // Name is the short name of the declaration (i.e., FullName.Name). + Name() Name // e.g., "Any" + + // FullName is the fully-qualified name of the declaration. + // + // The FullName is a concatenation of the full name of the type that this + // type is declared within and the declaration name. For example, + // field "foo_field" in message "proto.package.MyMessage" is + // uniquely identified as "proto.package.MyMessage.foo_field". + // Enum values are an exception to the rule (see EnumValueDescriptor). + FullName() FullName // e.g., "google.protobuf.Any" + + // IsPlaceholder reports whether type information is missing since a + // dependency is not resolved, in which case only name information is known. + // + // Placeholder types may only be returned by the following accessors + // as a result of unresolved dependencies or weak imports: + // + // ╔═══════════════════════════════════╤═════════════════════╗ + // ║ Accessor │ Descriptor ║ + // ╠═══════════════════════════════════╪═════════════════════╣ + // ║ FileImports.FileDescriptor │ FileDescriptor ║ + // ║ FieldDescriptor.Enum │ EnumDescriptor ║ + // ║ FieldDescriptor.Message │ MessageDescriptor ║ + // ║ FieldDescriptor.DefaultEnumValue │ EnumValueDescriptor ║ + // ║ FieldDescriptor.ContainingMessage │ MessageDescriptor ║ + // ║ MethodDescriptor.Input │ MessageDescriptor ║ + // ║ MethodDescriptor.Output │ MessageDescriptor ║ + // ╚═══════════════════════════════════╧═════════════════════╝ + // + // If true, only Name and FullName are valid. + // For FileDescriptor, the Path is also valid. + IsPlaceholder() bool + + // Options returns the descriptor options. The caller must not modify + // the returned value. + // + // To avoid a dependency cycle, this function returns a proto.Message value. + // The proto message type returned for each descriptor type is as follows: + // ╔═════════════════════╤══════════════════════════════════════════╗ + // ║ Go type │ Protobuf message type ║ + // ╠═════════════════════╪══════════════════════════════════════════╣ + // ║ FileDescriptor │ google.protobuf.FileOptions ║ + // ║ EnumDescriptor │ google.protobuf.EnumOptions ║ + // ║ EnumValueDescriptor │ google.protobuf.EnumValueOptions ║ + // ║ MessageDescriptor │ google.protobuf.MessageOptions ║ + // ║ FieldDescriptor │ google.protobuf.FieldOptions ║ + // ║ OneofDescriptor │ google.protobuf.OneofOptions ║ + // ║ ServiceDescriptor │ google.protobuf.ServiceOptions ║ + // ║ MethodDescriptor │ google.protobuf.MethodOptions ║ + // ╚═════════════════════╧══════════════════════════════════════════╝ + // + // This method returns a typed nil-pointer if no options are present. + // The caller must import the descriptorpb package to use this. + Options() ProtoMessage + + doNotImplement +} + +// FileDescriptor describes the types in a complete proto file and +// corresponds with the google.protobuf.FileDescriptorProto message. +// +// Top-level declarations: +// [EnumDescriptor], [MessageDescriptor], [FieldDescriptor], and/or [ServiceDescriptor]. +type FileDescriptor interface { + Descriptor // Descriptor.FullName is identical to Package + + // Path returns the file name, relative to the source tree root. + Path() string // e.g., "path/to/file.proto" + // Package returns the protobuf package namespace. + Package() FullName // e.g., "google.protobuf" + + // Imports is a list of imported proto files. + Imports() FileImports + + // Enums is a list of the top-level enum declarations. + Enums() EnumDescriptors + // Messages is a list of the top-level message declarations. + Messages() MessageDescriptors + // Extensions is a list of the top-level extension declarations. + Extensions() ExtensionDescriptors + // Services is a list of the top-level service declarations. + Services() ServiceDescriptors + + // SourceLocations is a list of source locations. + SourceLocations() SourceLocations + + isFileDescriptor +} +type isFileDescriptor interface{ ProtoType(FileDescriptor) } + +// FileImports is a list of file imports. +type FileImports interface { + // Len reports the number of files imported by this proto file. + Len() int + // Get returns the ith FileImport. It panics if out of bounds. + Get(i int) FileImport + + doNotImplement +} + +// FileImport is the declaration for a proto file import. +type FileImport struct { + // FileDescriptor is the file type for the given import. + // It is a placeholder descriptor if IsWeak is set or if a dependency has + // not been regenerated to implement the new reflection APIs. + FileDescriptor + + // IsPublic reports whether this is a public import, which causes this file + // to alias declarations within the imported file. The intended use cases + // for this feature is the ability to move proto files without breaking + // existing dependencies. + // + // The current file and the imported file must be within proto package. + IsPublic bool + + // IsWeak reports whether this is a weak import, which does not impose + // a direct dependency on the target file. + // + // Weak imports are a legacy proto1 feature. Equivalent behavior is + // achieved using proto2 extension fields or proto3 Any messages. + IsWeak bool +} + +// MessageDescriptor describes a message and +// corresponds with the google.protobuf.DescriptorProto message. +// +// Nested declarations: +// [FieldDescriptor], [OneofDescriptor], [FieldDescriptor], [EnumDescriptor], +// and/or [MessageDescriptor]. +type MessageDescriptor interface { + Descriptor + + // IsMapEntry indicates that this is an auto-generated message type to + // represent the entry type for a map field. + // + // Map entry messages have only two fields: + // • a "key" field with a field number of 1 + // • a "value" field with a field number of 2 + // The key and value types are determined by these two fields. + // + // If IsMapEntry is true, it implies that FieldDescriptor.IsMap is true + // for some field with this message type. + IsMapEntry() bool + + // Fields is a list of nested field declarations. + Fields() FieldDescriptors + // Oneofs is a list of nested oneof declarations. + Oneofs() OneofDescriptors + + // ReservedNames is a list of reserved field names. + ReservedNames() Names + // ReservedRanges is a list of reserved ranges of field numbers. + ReservedRanges() FieldRanges + // RequiredNumbers is a list of required field numbers. + // In Proto3, it is always an empty list. + RequiredNumbers() FieldNumbers + // ExtensionRanges is the field ranges used for extension fields. + // In Proto3, it is always an empty ranges. + ExtensionRanges() FieldRanges + // ExtensionRangeOptions returns the ith extension range options. + // + // To avoid a dependency cycle, this method returns a proto.Message] value, + // which always contains a google.protobuf.ExtensionRangeOptions message. + // This method returns a typed nil-pointer if no options are present. + // The caller must import the descriptorpb package to use this. + ExtensionRangeOptions(i int) ProtoMessage + + // Enums is a list of nested enum declarations. + Enums() EnumDescriptors + // Messages is a list of nested message declarations. + Messages() MessageDescriptors + // Extensions is a list of nested extension declarations. + Extensions() ExtensionDescriptors + + isMessageDescriptor +} +type isMessageDescriptor interface{ ProtoType(MessageDescriptor) } + +// MessageType encapsulates a [MessageDescriptor] with a concrete Go implementation. +// It is recommended that implementations of this interface also implement the +// [MessageFieldTypes] interface. +type MessageType interface { + // New returns a newly allocated empty message. + // It may return nil for synthetic messages representing a map entry. + New() Message + + // Zero returns an empty, read-only message. + // It may return nil for synthetic messages representing a map entry. + Zero() Message + + // Descriptor returns the message descriptor. + // + // Invariant: t.Descriptor() == t.New().Descriptor() + Descriptor() MessageDescriptor +} + +// MessageFieldTypes extends a [MessageType] by providing type information +// regarding enums and messages referenced by the message fields. +type MessageFieldTypes interface { + MessageType + + // Enum returns the EnumType for the ith field in MessageDescriptor.Fields. + // It returns nil if the ith field is not an enum kind. + // It panics if out of bounds. + // + // Invariant: mt.Enum(i).Descriptor() == mt.Descriptor().Fields(i).Enum() + Enum(i int) EnumType + + // Message returns the MessageType for the ith field in MessageDescriptor.Fields. + // It returns nil if the ith field is not a message or group kind. + // It panics if out of bounds. + // + // Invariant: mt.Message(i).Descriptor() == mt.Descriptor().Fields(i).Message() + Message(i int) MessageType +} + +// MessageDescriptors is a list of message declarations. +type MessageDescriptors interface { + // Len reports the number of messages. + Len() int + // Get returns the ith MessageDescriptor. It panics if out of bounds. + Get(i int) MessageDescriptor + // ByName returns the MessageDescriptor for a message named s. + // It returns nil if not found. + ByName(s Name) MessageDescriptor + + doNotImplement +} + +// FieldDescriptor describes a field within a message and +// corresponds with the google.protobuf.FieldDescriptorProto message. +// +// It is used for both normal fields defined within the parent message +// (e.g., [MessageDescriptor.Fields]) and fields that extend some remote message +// (e.g., [FileDescriptor.Extensions] or [MessageDescriptor.Extensions]). +type FieldDescriptor interface { + Descriptor + + // Number reports the unique number for this field. + Number() FieldNumber + // Cardinality reports the cardinality for this field. + Cardinality() Cardinality + // Kind reports the basic kind for this field. + Kind() Kind + + // HasJSONName reports whether this field has an explicitly set JSON name. + HasJSONName() bool + + // JSONName reports the name used for JSON serialization. + // It is usually the camel-cased form of the field name. + // Extension fields are represented by the full name surrounded by brackets. + JSONName() string + + // TextName reports the name used for text serialization. + // It is usually the name of the field, except that groups use the name + // of the inlined message, and extension fields are represented by the + // full name surrounded by brackets. + TextName() string + + // HasPresence reports whether the field distinguishes between unpopulated + // and default values. + HasPresence() bool + + // IsExtension reports whether this is an extension field. If false, + // then Parent and ContainingMessage refer to the same message. + // Otherwise, ContainingMessage and Parent likely differ. + IsExtension() bool + + // HasOptionalKeyword reports whether the "optional" keyword was explicitly + // specified in the source .proto file. + HasOptionalKeyword() bool + + // IsWeak reports whether this is a weak field, which does not impose a + // direct dependency on the target type. + // If true, then Message returns a placeholder type. + IsWeak() bool + + // IsPacked reports whether repeated primitive numeric kinds should be + // serialized using a packed encoding. + // If true, then it implies Cardinality is Repeated. + IsPacked() bool + + // IsList reports whether this field represents a list, + // where the value type for the associated field is a List. + // It is equivalent to checking whether Cardinality is Repeated and + // that IsMap reports false. + IsList() bool + + // IsMap reports whether this field represents a map, + // where the value type for the associated field is a Map. + // It is equivalent to checking whether Cardinality is Repeated, + // that the Kind is MessageKind, and that MessageDescriptor.IsMapEntry reports true. + IsMap() bool + + // MapKey returns the field descriptor for the key in the map entry. + // It returns nil if IsMap reports false. + MapKey() FieldDescriptor + + // MapValue returns the field descriptor for the value in the map entry. + // It returns nil if IsMap reports false. + MapValue() FieldDescriptor + + // HasDefault reports whether this field has a default value. + HasDefault() bool + + // Default returns the default value for scalar fields. + // For proto2, it is the default value as specified in the proto file, + // or the zero value if unspecified. + // For proto3, it is always the zero value of the scalar. + // The Value type is determined by the Kind. + Default() Value + + // DefaultEnumValue returns the enum value descriptor for the default value + // of an enum field, and is nil for any other kind of field. + DefaultEnumValue() EnumValueDescriptor + + // ContainingOneof is the containing oneof that this field belongs to, + // and is nil if this field is not part of a oneof. + ContainingOneof() OneofDescriptor + + // ContainingMessage is the containing message that this field belongs to. + // For extension fields, this may not necessarily be the parent message + // that the field is declared within. + ContainingMessage() MessageDescriptor + + // Enum is the enum descriptor if Kind is EnumKind. + // It returns nil for any other Kind. + Enum() EnumDescriptor + + // Message is the message descriptor if Kind is + // MessageKind or GroupKind. It returns nil for any other Kind. + Message() MessageDescriptor + + isFieldDescriptor +} +type isFieldDescriptor interface{ ProtoType(FieldDescriptor) } + +// FieldDescriptors is a list of field declarations. +type FieldDescriptors interface { + // Len reports the number of fields. + Len() int + // Get returns the ith FieldDescriptor. It panics if out of bounds. + Get(i int) FieldDescriptor + // ByName returns the FieldDescriptor for a field named s. + // It returns nil if not found. + ByName(s Name) FieldDescriptor + // ByJSONName returns the FieldDescriptor for a field with s as the JSON name. + // It returns nil if not found. + ByJSONName(s string) FieldDescriptor + // ByTextName returns the FieldDescriptor for a field with s as the text name. + // It returns nil if not found. + ByTextName(s string) FieldDescriptor + // ByNumber returns the FieldDescriptor for a field numbered n. + // It returns nil if not found. + ByNumber(n FieldNumber) FieldDescriptor + + doNotImplement +} + +// OneofDescriptor describes a oneof field set within a given message and +// corresponds with the google.protobuf.OneofDescriptorProto message. +type OneofDescriptor interface { + Descriptor + + // IsSynthetic reports whether this is a synthetic oneof created to support + // proto3 optional semantics. If true, Fields contains exactly one field + // with FieldDescriptor.HasOptionalKeyword specified. + IsSynthetic() bool + + // Fields is a list of fields belonging to this oneof. + Fields() FieldDescriptors + + isOneofDescriptor +} +type isOneofDescriptor interface{ ProtoType(OneofDescriptor) } + +// OneofDescriptors is a list of oneof declarations. +type OneofDescriptors interface { + // Len reports the number of oneof fields. + Len() int + // Get returns the ith OneofDescriptor. It panics if out of bounds. + Get(i int) OneofDescriptor + // ByName returns the OneofDescriptor for a oneof named s. + // It returns nil if not found. + ByName(s Name) OneofDescriptor + + doNotImplement +} + +// ExtensionDescriptor is an alias of [FieldDescriptor] for documentation. +type ExtensionDescriptor = FieldDescriptor + +// ExtensionTypeDescriptor is an [ExtensionDescriptor] with an associated [ExtensionType]. +type ExtensionTypeDescriptor interface { + ExtensionDescriptor + + // Type returns the associated ExtensionType. + Type() ExtensionType + + // Descriptor returns the plain ExtensionDescriptor without the + // associated ExtensionType. + Descriptor() ExtensionDescriptor +} + +// ExtensionDescriptors is a list of field declarations. +type ExtensionDescriptors interface { + // Len reports the number of fields. + Len() int + // Get returns the ith ExtensionDescriptor. It panics if out of bounds. + Get(i int) ExtensionDescriptor + // ByName returns the ExtensionDescriptor for a field named s. + // It returns nil if not found. + ByName(s Name) ExtensionDescriptor + + doNotImplement +} + +// ExtensionType encapsulates an [ExtensionDescriptor] with a concrete +// Go implementation. The nested field descriptor must be for a extension field. +// +// While a normal field is a member of the parent message that it is declared +// within (see [Descriptor.Parent]), an extension field is a member of some other +// target message (see [FieldDescriptor.ContainingMessage]) and may have no +// relationship with the parent. However, the full name of an extension field is +// relative to the parent that it is declared within. +// +// For example: +// +// syntax = "proto2"; +// package example; +// message FooMessage { +// extensions 100 to max; +// } +// message BarMessage { +// extends FooMessage { optional BarMessage bar_field = 100; } +// } +// +// Field "bar_field" is an extension of FooMessage, but its full name is +// "example.BarMessage.bar_field" instead of "example.FooMessage.bar_field". +type ExtensionType interface { + // New returns a new value for the field. + // For scalars, this returns the default value in native Go form. + New() Value + + // Zero returns a new value for the field. + // For scalars, this returns the default value in native Go form. + // For composite types, this returns an empty, read-only message, list, or map. + Zero() Value + + // TypeDescriptor returns the extension type descriptor. + TypeDescriptor() ExtensionTypeDescriptor + + // ValueOf wraps the input and returns it as a Value. + // ValueOf panics if the input value is invalid or not the appropriate type. + // + // ValueOf is more extensive than protoreflect.ValueOf for a given field's + // value as it has more type information available. + ValueOf(any) Value + + // InterfaceOf completely unwraps the Value to the underlying Go type. + // InterfaceOf panics if the input is nil or does not represent the + // appropriate underlying Go type. For composite types, it panics if the + // value is not mutable. + // + // InterfaceOf is able to unwrap the Value further than Value.Interface + // as it has more type information available. + InterfaceOf(Value) any + + // IsValidValue reports whether the Value is valid to assign to the field. + IsValidValue(Value) bool + + // IsValidInterface reports whether the input is valid to assign to the field. + IsValidInterface(any) bool +} + +// EnumDescriptor describes an enum and +// corresponds with the google.protobuf.EnumDescriptorProto message. +// +// Nested declarations: +// [EnumValueDescriptor]. +type EnumDescriptor interface { + Descriptor + + // Values is a list of nested enum value declarations. + Values() EnumValueDescriptors + + // ReservedNames is a list of reserved enum names. + ReservedNames() Names + // ReservedRanges is a list of reserved ranges of enum numbers. + ReservedRanges() EnumRanges + + // IsClosed reports whether this enum uses closed semantics. + // See https://protobuf.dev/programming-guides/enum/#definitions. + // Note: the Go protobuf implementation is not spec compliant and treats + // all enums as open enums. + IsClosed() bool + + isEnumDescriptor +} +type isEnumDescriptor interface{ ProtoType(EnumDescriptor) } + +// EnumType encapsulates an [EnumDescriptor] with a concrete Go implementation. +type EnumType interface { + // New returns an instance of this enum type with its value set to n. + New(n EnumNumber) Enum + + // Descriptor returns the enum descriptor. + // + // Invariant: t.Descriptor() == t.New(0).Descriptor() + Descriptor() EnumDescriptor +} + +// EnumDescriptors is a list of enum declarations. +type EnumDescriptors interface { + // Len reports the number of enum types. + Len() int + // Get returns the ith EnumDescriptor. It panics if out of bounds. + Get(i int) EnumDescriptor + // ByName returns the EnumDescriptor for an enum named s. + // It returns nil if not found. + ByName(s Name) EnumDescriptor + + doNotImplement +} + +// EnumValueDescriptor describes an enum value and +// corresponds with the google.protobuf.EnumValueDescriptorProto message. +// +// All other proto declarations are in the namespace of the parent. +// However, enum values do not follow this rule and are within the namespace +// of the parent's parent (i.e., they are a sibling of the containing enum). +// Thus, a value named "FOO_VALUE" declared within an enum uniquely identified +// as "proto.package.MyEnum" has a full name of "proto.package.FOO_VALUE". +type EnumValueDescriptor interface { + Descriptor + + // Number returns the enum value as an integer. + Number() EnumNumber + + isEnumValueDescriptor +} +type isEnumValueDescriptor interface{ ProtoType(EnumValueDescriptor) } + +// EnumValueDescriptors is a list of enum value declarations. +type EnumValueDescriptors interface { + // Len reports the number of enum values. + Len() int + // Get returns the ith EnumValueDescriptor. It panics if out of bounds. + Get(i int) EnumValueDescriptor + // ByName returns the EnumValueDescriptor for the enum value named s. + // It returns nil if not found. + ByName(s Name) EnumValueDescriptor + // ByNumber returns the EnumValueDescriptor for the enum value numbered n. + // If multiple have the same number, the first one defined is returned + // It returns nil if not found. + ByNumber(n EnumNumber) EnumValueDescriptor + + doNotImplement +} + +// ServiceDescriptor describes a service and +// corresponds with the google.protobuf.ServiceDescriptorProto message. +// +// Nested declarations: [MethodDescriptor]. +type ServiceDescriptor interface { + Descriptor + + // Methods is a list of nested message declarations. + Methods() MethodDescriptors + + isServiceDescriptor +} +type isServiceDescriptor interface{ ProtoType(ServiceDescriptor) } + +// ServiceDescriptors is a list of service declarations. +type ServiceDescriptors interface { + // Len reports the number of services. + Len() int + // Get returns the ith ServiceDescriptor. It panics if out of bounds. + Get(i int) ServiceDescriptor + // ByName returns the ServiceDescriptor for a service named s. + // It returns nil if not found. + ByName(s Name) ServiceDescriptor + + doNotImplement +} + +// MethodDescriptor describes a method and +// corresponds with the google.protobuf.MethodDescriptorProto message. +type MethodDescriptor interface { + Descriptor + + // Input is the input message descriptor. + Input() MessageDescriptor + // Output is the output message descriptor. + Output() MessageDescriptor + // IsStreamingClient reports whether the client streams multiple messages. + IsStreamingClient() bool + // IsStreamingServer reports whether the server streams multiple messages. + IsStreamingServer() bool + + isMethodDescriptor +} +type isMethodDescriptor interface{ ProtoType(MethodDescriptor) } + +// MethodDescriptors is a list of method declarations. +type MethodDescriptors interface { + // Len reports the number of methods. + Len() int + // Get returns the ith MethodDescriptor. It panics if out of bounds. + Get(i int) MethodDescriptor + // ByName returns the MethodDescriptor for a service method named s. + // It returns nil if not found. + ByName(s Name) MethodDescriptor + + doNotImplement +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go new file mode 100644 index 0000000..a7b0d06 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go @@ -0,0 +1,285 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import "google.golang.org/protobuf/encoding/protowire" + +// Enum is a reflection interface for a concrete enum value, +// which provides type information and a getter for the enum number. +// Enum does not provide a mutable API since enums are commonly backed by +// Go constants, which are not addressable. +type Enum interface { + // Descriptor returns enum descriptor, which contains only the protobuf + // type information for the enum. + Descriptor() EnumDescriptor + + // Type returns the enum type, which encapsulates both Go and protobuf + // type information. If the Go type information is not needed, + // it is recommended that the enum descriptor be used instead. + Type() EnumType + + // Number returns the enum value as an integer. + Number() EnumNumber +} + +// Message is a reflective interface for a concrete message value, +// encapsulating both type and value information for the message. +// +// Accessor/mutators for individual fields are keyed by [FieldDescriptor]. +// For non-extension fields, the descriptor must exactly match the +// field known by the parent message. +// For extension fields, the descriptor must implement [ExtensionTypeDescriptor], +// extend the parent message (i.e., have the same message [FullName]), and +// be within the parent's extension range. +// +// Each field [Value] can be a scalar or a composite type ([Message], [List], or [Map]). +// See [Value] for the Go types associated with a [FieldDescriptor]. +// Providing a [Value] that is invalid or of an incorrect type panics. +type Message interface { + // Descriptor returns message descriptor, which contains only the protobuf + // type information for the message. + Descriptor() MessageDescriptor + + // Type returns the message type, which encapsulates both Go and protobuf + // type information. If the Go type information is not needed, + // it is recommended that the message descriptor be used instead. + Type() MessageType + + // New returns a newly allocated and mutable empty message. + New() Message + + // Interface unwraps the message reflection interface and + // returns the underlying ProtoMessage interface. + Interface() ProtoMessage + + // Range iterates over every populated field in an undefined order, + // calling f for each field descriptor and value encountered. + // Range returns immediately if f returns false. + // While iterating, mutating operations may only be performed + // on the current field descriptor. + Range(f func(FieldDescriptor, Value) bool) + + // Has reports whether a field is populated. + // + // Some fields have the property of nullability where it is possible to + // distinguish between the default value of a field and whether the field + // was explicitly populated with the default value. Singular message fields, + // member fields of a oneof, and proto2 scalar fields are nullable. Such + // fields are populated only if explicitly set. + // + // In other cases (aside from the nullable cases above), + // a proto3 scalar field is populated if it contains a non-zero value, and + // a repeated field is populated if it is non-empty. + Has(FieldDescriptor) bool + + // Clear clears the field such that a subsequent Has call reports false. + // + // Clearing an extension field clears both the extension type and value + // associated with the given field number. + // + // Clear is a mutating operation and unsafe for concurrent use. + Clear(FieldDescriptor) + + // Get retrieves the value for a field. + // + // For unpopulated scalars, it returns the default value, where + // the default value of a bytes scalar is guaranteed to be a copy. + // For unpopulated composite types, it returns an empty, read-only view + // of the value; to obtain a mutable reference, use Mutable. + Get(FieldDescriptor) Value + + // Set stores the value for a field. + // + // For a field belonging to a oneof, it implicitly clears any other field + // that may be currently set within the same oneof. + // For extension fields, it implicitly stores the provided ExtensionType. + // When setting a composite type, it is unspecified whether the stored value + // aliases the source's memory in any way. If the composite value is an + // empty, read-only value, then it panics. + // + // Set is a mutating operation and unsafe for concurrent use. + Set(FieldDescriptor, Value) + + // Mutable returns a mutable reference to a composite type. + // + // If the field is unpopulated, it may allocate a composite value. + // For a field belonging to a oneof, it implicitly clears any other field + // that may be currently set within the same oneof. + // For extension fields, it implicitly stores the provided ExtensionType + // if not already stored. + // It panics if the field does not contain a composite type. + // + // Mutable is a mutating operation and unsafe for concurrent use. + Mutable(FieldDescriptor) Value + + // NewField returns a new value that is assignable to the field + // for the given descriptor. For scalars, this returns the default value. + // For lists, maps, and messages, this returns a new, empty, mutable value. + NewField(FieldDescriptor) Value + + // WhichOneof reports which field within the oneof is populated, + // returning nil if none are populated. + // It panics if the oneof descriptor does not belong to this message. + WhichOneof(OneofDescriptor) FieldDescriptor + + // GetUnknown retrieves the entire list of unknown fields. + // The caller may only mutate the contents of the RawFields + // if the mutated bytes are stored back into the message with SetUnknown. + GetUnknown() RawFields + + // SetUnknown stores an entire list of unknown fields. + // The raw fields must be syntactically valid according to the wire format. + // An implementation may panic if this is not the case. + // Once stored, the caller must not mutate the content of the RawFields. + // An empty RawFields may be passed to clear the fields. + // + // SetUnknown is a mutating operation and unsafe for concurrent use. + SetUnknown(RawFields) + + // IsValid reports whether the message is valid. + // + // An invalid message is an empty, read-only value. + // + // An invalid message often corresponds to a nil pointer of the concrete + // message type, but the details are implementation dependent. + // Validity is not part of the protobuf data model, and may not + // be preserved in marshaling or other operations. + IsValid() bool + + // ProtoMethods returns optional fast-path implementations of various operations. + // This method may return nil. + // + // The returned methods type is identical to + // google.golang.org/protobuf/runtime/protoiface.Methods. + // Consult the protoiface package documentation for details. + ProtoMethods() *methods +} + +// RawFields is the raw bytes for an ordered sequence of fields. +// Each field contains both the tag (representing field number and wire type), +// and also the wire data itself. +type RawFields []byte + +// IsValid reports whether b is syntactically correct wire format. +func (b RawFields) IsValid() bool { + for len(b) > 0 { + _, _, n := protowire.ConsumeField(b) + if n < 0 { + return false + } + b = b[n:] + } + return true +} + +// List is a zero-indexed, ordered list. +// The element [Value] type is determined by [FieldDescriptor.Kind]. +// Providing a [Value] that is invalid or of an incorrect type panics. +type List interface { + // Len reports the number of entries in the List. + // Get, Set, and Truncate panic with out of bound indexes. + Len() int + + // Get retrieves the value at the given index. + // It never returns an invalid value. + Get(int) Value + + // Set stores a value for the given index. + // When setting a composite type, it is unspecified whether the set + // value aliases the source's memory in any way. + // + // Set is a mutating operation and unsafe for concurrent use. + Set(int, Value) + + // Append appends the provided value to the end of the list. + // When appending a composite type, it is unspecified whether the appended + // value aliases the source's memory in any way. + // + // Append is a mutating operation and unsafe for concurrent use. + Append(Value) + + // AppendMutable appends a new, empty, mutable message value to the end + // of the list and returns it. + // It panics if the list does not contain a message type. + AppendMutable() Value + + // Truncate truncates the list to a smaller length. + // + // Truncate is a mutating operation and unsafe for concurrent use. + Truncate(int) + + // NewElement returns a new value for a list element. + // For enums, this returns the first enum value. + // For other scalars, this returns the zero value. + // For messages, this returns a new, empty, mutable value. + NewElement() Value + + // IsValid reports whether the list is valid. + // + // An invalid list is an empty, read-only value. + // + // Validity is not part of the protobuf data model, and may not + // be preserved in marshaling or other operations. + IsValid() bool +} + +// Map is an unordered, associative map. +// The entry [MapKey] type is determined by [FieldDescriptor.MapKey].Kind. +// The entry [Value] type is determined by [FieldDescriptor.MapValue].Kind. +// Providing a [MapKey] or [Value] that is invalid or of an incorrect type panics. +type Map interface { + // Len reports the number of elements in the map. + Len() int + + // Range iterates over every map entry in an undefined order, + // calling f for each key and value encountered. + // Range calls f Len times unless f returns false, which stops iteration. + // While iterating, mutating operations may only be performed + // on the current map key. + Range(f func(MapKey, Value) bool) + + // Has reports whether an entry with the given key is in the map. + Has(MapKey) bool + + // Clear clears the entry associated with they given key. + // The operation does nothing if there is no entry associated with the key. + // + // Clear is a mutating operation and unsafe for concurrent use. + Clear(MapKey) + + // Get retrieves the value for an entry with the given key. + // It returns an invalid value for non-existent entries. + Get(MapKey) Value + + // Set stores the value for an entry with the given key. + // It panics when given a key or value that is invalid or the wrong type. + // When setting a composite type, it is unspecified whether the set + // value aliases the source's memory in any way. + // + // Set is a mutating operation and unsafe for concurrent use. + Set(MapKey, Value) + + // Mutable retrieves a mutable reference to the entry for the given key. + // If no entry exists for the key, it creates a new, empty, mutable value + // and stores it as the entry for the key. + // It panics if the map value is not a message. + Mutable(MapKey) Value + + // NewValue returns a new value assignable as a map value. + // For enums, this returns the first enum value. + // For other scalars, this returns the zero value. + // For messages, this returns a new, empty, mutable value. + NewValue() Value + + // IsValid reports whether the map is valid. + // + // An invalid map is an empty, read-only value. + // + // An invalid message often corresponds to a nil Go map value, + // but the details are implementation dependent. + // Validity is not part of the protobuf data model, and may not + // be preserved in marshaling or other operations. + IsValid() bool +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go new file mode 100644 index 0000000..654599d --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go @@ -0,0 +1,168 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "bytes" + "fmt" + "math" + "reflect" + + "google.golang.org/protobuf/encoding/protowire" +) + +// Equal reports whether v1 and v2 are recursively equal. +// +// - Values of different types are always unequal. +// +// - Bytes values are equal if they contain identical bytes. +// Empty bytes (regardless of nil-ness) are considered equal. +// +// - Floating point values are equal if they contain the same value. +// Unlike the == operator, a NaN is equal to another NaN. +// +// - Enums are equal if they contain the same number. +// Since [Value] does not contain an enum descriptor, +// enum values do not consider the type of the enum. +// +// - Other scalar values are equal if they contain the same value. +// +// - [Message] values are equal if they belong to the same message descriptor, +// have the same set of populated known and extension field values, +// and the same set of unknown fields values. +// +// - [List] values are equal if they are the same length and +// each corresponding element is equal. +// +// - [Map] values are equal if they have the same set of keys and +// the corresponding value for each key is equal. +func (v1 Value) Equal(v2 Value) bool { + return equalValue(v1, v2) +} + +func equalValue(x, y Value) bool { + eqType := x.typ == y.typ + switch x.typ { + case nilType: + return eqType + case boolType: + return eqType && x.Bool() == y.Bool() + case int32Type, int64Type: + return eqType && x.Int() == y.Int() + case uint32Type, uint64Type: + return eqType && x.Uint() == y.Uint() + case float32Type, float64Type: + return eqType && equalFloat(x.Float(), y.Float()) + case stringType: + return eqType && x.String() == y.String() + case bytesType: + return eqType && bytes.Equal(x.Bytes(), y.Bytes()) + case enumType: + return eqType && x.Enum() == y.Enum() + default: + switch x := x.Interface().(type) { + case Message: + y, ok := y.Interface().(Message) + return ok && equalMessage(x, y) + case List: + y, ok := y.Interface().(List) + return ok && equalList(x, y) + case Map: + y, ok := y.Interface().(Map) + return ok && equalMap(x, y) + default: + panic(fmt.Sprintf("unknown type: %T", x)) + } + } +} + +// equalFloat compares two floats, where NaNs are treated as equal. +func equalFloat(x, y float64) bool { + if math.IsNaN(x) || math.IsNaN(y) { + return math.IsNaN(x) && math.IsNaN(y) + } + return x == y +} + +// equalMessage compares two messages. +func equalMessage(mx, my Message) bool { + if mx.Descriptor() != my.Descriptor() { + return false + } + + nx := 0 + equal := true + mx.Range(func(fd FieldDescriptor, vx Value) bool { + nx++ + vy := my.Get(fd) + equal = my.Has(fd) && equalValue(vx, vy) + return equal + }) + if !equal { + return false + } + ny := 0 + my.Range(func(fd FieldDescriptor, vx Value) bool { + ny++ + return true + }) + if nx != ny { + return false + } + + return equalUnknown(mx.GetUnknown(), my.GetUnknown()) +} + +// equalList compares two lists. +func equalList(x, y List) bool { + if x.Len() != y.Len() { + return false + } + for i := x.Len() - 1; i >= 0; i-- { + if !equalValue(x.Get(i), y.Get(i)) { + return false + } + } + return true +} + +// equalMap compares two maps. +func equalMap(x, y Map) bool { + if x.Len() != y.Len() { + return false + } + equal := true + x.Range(func(k MapKey, vx Value) bool { + vy := y.Get(k) + equal = y.Has(k) && equalValue(vx, vy) + return equal + }) + return equal +} + +// equalUnknown compares unknown fields by direct comparison on the raw bytes +// of each individual field number. +func equalUnknown(x, y RawFields) bool { + if len(x) != len(y) { + return false + } + if bytes.Equal([]byte(x), []byte(y)) { + return true + } + + mx := make(map[FieldNumber]RawFields) + my := make(map[FieldNumber]RawFields) + for len(x) > 0 { + fnum, _, n := protowire.ConsumeField(x) + mx[fnum] = append(mx[fnum], x[:n]...) + x = x[n:] + } + for len(y) > 0 { + fnum, _, n := protowire.ConsumeField(y) + my[fnum] = append(my[fnum], y[:n]...) + y = y[n:] + } + return reflect.DeepEqual(mx, my) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go new file mode 100644 index 0000000..75f83a2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go @@ -0,0 +1,60 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package protoreflect + +import "google.golang.org/protobuf/internal/pragma" + +type valueType int + +const ( + nilType valueType = iota + boolType + int32Type + int64Type + uint32Type + uint64Type + float32Type + float64Type + stringType + bytesType + enumType + ifaceType +) + +// value is a union where only one type can be represented at a time. +// This uses a distinct field for each type. This is type safe in Go, but +// occupies more memory than necessary (72B). +type value struct { + pragma.DoNotCompare // 0B + + typ valueType // 8B + num uint64 // 8B + str string // 16B + bin []byte // 24B + iface any // 16B +} + +func valueOfString(v string) Value { + return Value{typ: stringType, str: v} +} +func valueOfBytes(v []byte) Value { + return Value{typ: bytesType, bin: v} +} +func valueOfIface(v any) Value { + return Value{typ: ifaceType, iface: v} +} + +func (v Value) getString() string { + return v.str +} +func (v Value) getBytes() []byte { + return v.bin +} +func (v Value) getIface() any { + return v.iface +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go new file mode 100644 index 0000000..9fe83ce --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go @@ -0,0 +1,438 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "fmt" + "math" +) + +// Value is a union where only one Go type may be set at a time. +// The Value is used to represent all possible values a field may take. +// The following shows which Go type is used to represent each proto [Kind]: +// +// ╔════════════╤═════════════════════════════════════╗ +// ║ Go type │ Protobuf kind ║ +// ╠════════════╪═════════════════════════════════════╣ +// ║ bool │ BoolKind ║ +// ║ int32 │ Int32Kind, Sint32Kind, Sfixed32Kind ║ +// ║ int64 │ Int64Kind, Sint64Kind, Sfixed64Kind ║ +// ║ uint32 │ Uint32Kind, Fixed32Kind ║ +// ║ uint64 │ Uint64Kind, Fixed64Kind ║ +// ║ float32 │ FloatKind ║ +// ║ float64 │ DoubleKind ║ +// ║ string │ StringKind ║ +// ║ []byte │ BytesKind ║ +// ║ EnumNumber │ EnumKind ║ +// ║ Message │ MessageKind, GroupKind ║ +// ╚════════════╧═════════════════════════════════════╝ +// +// Multiple protobuf Kinds may be represented by a single Go type if the type +// can losslessly represent the information for the proto kind. For example, +// [Int64Kind], [Sint64Kind], and [Sfixed64Kind] are all represented by int64, +// but use different integer encoding methods. +// +// The [List] or [Map] types are used if the field cardinality is repeated. +// A field is a [List] if [FieldDescriptor.IsList] reports true. +// A field is a [Map] if [FieldDescriptor.IsMap] reports true. +// +// Converting to/from a Value and a concrete Go value panics on type mismatch. +// For example, [ValueOf]("hello").Int() panics because this attempts to +// retrieve an int64 from a string. +// +// [List], [Map], and [Message] Values are called "composite" values. +// +// A composite Value may alias (reference) memory at some location, +// such that changes to the Value updates the that location. +// A composite value acquired with a Mutable method, such as [Message.Mutable], +// always references the source object. +// +// For example: +// +// // Append a 0 to a "repeated int32" field. +// // Since the Value returned by Mutable is guaranteed to alias +// // the source message, modifying the Value modifies the message. +// message.Mutable(fieldDesc).List().Append(protoreflect.ValueOfInt32(0)) +// +// // Assign [0] to a "repeated int32" field by creating a new Value, +// // modifying it, and assigning it. +// list := message.NewField(fieldDesc).List() +// list.Append(protoreflect.ValueOfInt32(0)) +// message.Set(fieldDesc, list) +// // ERROR: Since it is not defined whether Set aliases the source, +// // appending to the List here may or may not modify the message. +// list.Append(protoreflect.ValueOfInt32(0)) +// +// Some operations, such as [Message.Get], may return an "empty, read-only" +// composite Value. Modifying an empty, read-only value panics. +type Value value + +// The protoreflect API uses a custom Value union type instead of any +// to keep the future open for performance optimizations. Using an any +// always incurs an allocation for primitives (e.g., int64) since it needs to +// be boxed on the heap (as interfaces can only contain pointers natively). +// Instead, we represent the Value union as a flat struct that internally keeps +// track of which type is set. Using unsafe, the Value union can be reduced +// down to 24B, which is identical in size to a slice. +// +// The latest compiler (Go1.11) currently suffers from some limitations: +// • With inlining, the compiler should be able to statically prove that +// only one of these switch cases are taken and inline one specific case. +// See https://golang.org/issue/22310. + +// ValueOf returns a Value initialized with the concrete value stored in v. +// This panics if the type does not match one of the allowed types in the +// Value union. +func ValueOf(v any) Value { + switch v := v.(type) { + case nil: + return Value{} + case bool: + return ValueOfBool(v) + case int32: + return ValueOfInt32(v) + case int64: + return ValueOfInt64(v) + case uint32: + return ValueOfUint32(v) + case uint64: + return ValueOfUint64(v) + case float32: + return ValueOfFloat32(v) + case float64: + return ValueOfFloat64(v) + case string: + return ValueOfString(v) + case []byte: + return ValueOfBytes(v) + case EnumNumber: + return ValueOfEnum(v) + case Message, List, Map: + return valueOfIface(v) + case ProtoMessage: + panic(fmt.Sprintf("invalid proto.Message(%T) type, expected a protoreflect.Message type", v)) + default: + panic(fmt.Sprintf("invalid type: %T", v)) + } +} + +// ValueOfBool returns a new boolean value. +func ValueOfBool(v bool) Value { + if v { + return Value{typ: boolType, num: 1} + } else { + return Value{typ: boolType, num: 0} + } +} + +// ValueOfInt32 returns a new int32 value. +func ValueOfInt32(v int32) Value { + return Value{typ: int32Type, num: uint64(v)} +} + +// ValueOfInt64 returns a new int64 value. +func ValueOfInt64(v int64) Value { + return Value{typ: int64Type, num: uint64(v)} +} + +// ValueOfUint32 returns a new uint32 value. +func ValueOfUint32(v uint32) Value { + return Value{typ: uint32Type, num: uint64(v)} +} + +// ValueOfUint64 returns a new uint64 value. +func ValueOfUint64(v uint64) Value { + return Value{typ: uint64Type, num: v} +} + +// ValueOfFloat32 returns a new float32 value. +func ValueOfFloat32(v float32) Value { + return Value{typ: float32Type, num: uint64(math.Float64bits(float64(v)))} +} + +// ValueOfFloat64 returns a new float64 value. +func ValueOfFloat64(v float64) Value { + return Value{typ: float64Type, num: uint64(math.Float64bits(float64(v)))} +} + +// ValueOfString returns a new string value. +func ValueOfString(v string) Value { + return valueOfString(v) +} + +// ValueOfBytes returns a new bytes value. +func ValueOfBytes(v []byte) Value { + return valueOfBytes(v[:len(v):len(v)]) +} + +// ValueOfEnum returns a new enum value. +func ValueOfEnum(v EnumNumber) Value { + return Value{typ: enumType, num: uint64(v)} +} + +// ValueOfMessage returns a new Message value. +func ValueOfMessage(v Message) Value { + return valueOfIface(v) +} + +// ValueOfList returns a new List value. +func ValueOfList(v List) Value { + return valueOfIface(v) +} + +// ValueOfMap returns a new Map value. +func ValueOfMap(v Map) Value { + return valueOfIface(v) +} + +// IsValid reports whether v is populated with a value. +func (v Value) IsValid() bool { + return v.typ != nilType +} + +// Interface returns v as an any. +// +// Invariant: v == ValueOf(v).Interface() +func (v Value) Interface() any { + switch v.typ { + case nilType: + return nil + case boolType: + return v.Bool() + case int32Type: + return int32(v.Int()) + case int64Type: + return int64(v.Int()) + case uint32Type: + return uint32(v.Uint()) + case uint64Type: + return uint64(v.Uint()) + case float32Type: + return float32(v.Float()) + case float64Type: + return float64(v.Float()) + case stringType: + return v.String() + case bytesType: + return v.Bytes() + case enumType: + return v.Enum() + default: + return v.getIface() + } +} + +func (v Value) typeName() string { + switch v.typ { + case nilType: + return "nil" + case boolType: + return "bool" + case int32Type: + return "int32" + case int64Type: + return "int64" + case uint32Type: + return "uint32" + case uint64Type: + return "uint64" + case float32Type: + return "float32" + case float64Type: + return "float64" + case stringType: + return "string" + case bytesType: + return "bytes" + case enumType: + return "enum" + default: + switch v := v.getIface().(type) { + case Message: + return "message" + case List: + return "list" + case Map: + return "map" + default: + return fmt.Sprintf("", v) + } + } +} + +func (v Value) panicMessage(what string) string { + return fmt.Sprintf("type mismatch: cannot convert %v to %s", v.typeName(), what) +} + +// Bool returns v as a bool and panics if the type is not a bool. +func (v Value) Bool() bool { + switch v.typ { + case boolType: + return v.num > 0 + default: + panic(v.panicMessage("bool")) + } +} + +// Int returns v as a int64 and panics if the type is not a int32 or int64. +func (v Value) Int() int64 { + switch v.typ { + case int32Type, int64Type: + return int64(v.num) + default: + panic(v.panicMessage("int")) + } +} + +// Uint returns v as a uint64 and panics if the type is not a uint32 or uint64. +func (v Value) Uint() uint64 { + switch v.typ { + case uint32Type, uint64Type: + return uint64(v.num) + default: + panic(v.panicMessage("uint")) + } +} + +// Float returns v as a float64 and panics if the type is not a float32 or float64. +func (v Value) Float() float64 { + switch v.typ { + case float32Type, float64Type: + return math.Float64frombits(uint64(v.num)) + default: + panic(v.panicMessage("float")) + } +} + +// String returns v as a string. Since this method implements [fmt.Stringer], +// this returns the formatted string value for any non-string type. +func (v Value) String() string { + switch v.typ { + case stringType: + return v.getString() + default: + return fmt.Sprint(v.Interface()) + } +} + +// Bytes returns v as a []byte and panics if the type is not a []byte. +func (v Value) Bytes() []byte { + switch v.typ { + case bytesType: + return v.getBytes() + default: + panic(v.panicMessage("bytes")) + } +} + +// Enum returns v as a [EnumNumber] and panics if the type is not a [EnumNumber]. +func (v Value) Enum() EnumNumber { + switch v.typ { + case enumType: + return EnumNumber(v.num) + default: + panic(v.panicMessage("enum")) + } +} + +// Message returns v as a [Message] and panics if the type is not a [Message]. +func (v Value) Message() Message { + switch vi := v.getIface().(type) { + case Message: + return vi + default: + panic(v.panicMessage("message")) + } +} + +// List returns v as a [List] and panics if the type is not a [List]. +func (v Value) List() List { + switch vi := v.getIface().(type) { + case List: + return vi + default: + panic(v.panicMessage("list")) + } +} + +// Map returns v as a [Map] and panics if the type is not a [Map]. +func (v Value) Map() Map { + switch vi := v.getIface().(type) { + case Map: + return vi + default: + panic(v.panicMessage("map")) + } +} + +// MapKey returns v as a [MapKey] and panics for invalid [MapKey] types. +func (v Value) MapKey() MapKey { + switch v.typ { + case boolType, int32Type, int64Type, uint32Type, uint64Type, stringType: + return MapKey(v) + default: + panic(v.panicMessage("map key")) + } +} + +// MapKey is used to index maps, where the Go type of the MapKey must match +// the specified key [Kind] (see [MessageDescriptor.IsMapEntry]). +// The following shows what Go type is used to represent each proto [Kind]: +// +// ╔═════════╤═════════════════════════════════════╗ +// ║ Go type │ Protobuf kind ║ +// ╠═════════╪═════════════════════════════════════╣ +// ║ bool │ BoolKind ║ +// ║ int32 │ Int32Kind, Sint32Kind, Sfixed32Kind ║ +// ║ int64 │ Int64Kind, Sint64Kind, Sfixed64Kind ║ +// ║ uint32 │ Uint32Kind, Fixed32Kind ║ +// ║ uint64 │ Uint64Kind, Fixed64Kind ║ +// ║ string │ StringKind ║ +// ╚═════════╧═════════════════════════════════════╝ +// +// A MapKey is constructed and accessed through a [Value]: +// +// k := ValueOf("hash").MapKey() // convert string to MapKey +// s := k.String() // convert MapKey to string +// +// The MapKey is a strict subset of valid types used in [Value]; +// converting a [Value] to a MapKey with an invalid type panics. +type MapKey value + +// IsValid reports whether k is populated with a value. +func (k MapKey) IsValid() bool { + return Value(k).IsValid() +} + +// Interface returns k as an any. +func (k MapKey) Interface() any { + return Value(k).Interface() +} + +// Bool returns k as a bool and panics if the type is not a bool. +func (k MapKey) Bool() bool { + return Value(k).Bool() +} + +// Int returns k as a int64 and panics if the type is not a int32 or int64. +func (k MapKey) Int() int64 { + return Value(k).Int() +} + +// Uint returns k as a uint64 and panics if the type is not a uint32 or uint64. +func (k MapKey) Uint() uint64 { + return Value(k).Uint() +} + +// String returns k as a string. Since this method implements [fmt.Stringer], +// this returns the formatted string value for any non-string type. +func (k MapKey) String() string { + return Value(k).String() +} + +// Value returns k as a [Value]. +func (k MapKey) Value() Value { + return Value(k) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go new file mode 100644 index 0000000..7f3583e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go @@ -0,0 +1,99 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && !go1.21 +// +build !purego,!appengine,!go1.21 + +package protoreflect + +import ( + "unsafe" + + "google.golang.org/protobuf/internal/pragma" +) + +type ( + stringHeader struct { + Data unsafe.Pointer + Len int + } + sliceHeader struct { + Data unsafe.Pointer + Len int + Cap int + } + ifaceHeader struct { + Type unsafe.Pointer + Data unsafe.Pointer + } +) + +var ( + nilType = typeOf(nil) + boolType = typeOf(*new(bool)) + int32Type = typeOf(*new(int32)) + int64Type = typeOf(*new(int64)) + uint32Type = typeOf(*new(uint32)) + uint64Type = typeOf(*new(uint64)) + float32Type = typeOf(*new(float32)) + float64Type = typeOf(*new(float64)) + stringType = typeOf(*new(string)) + bytesType = typeOf(*new([]byte)) + enumType = typeOf(*new(EnumNumber)) +) + +// typeOf returns a pointer to the Go type information. +// The pointer is comparable and equal if and only if the types are identical. +func typeOf(t any) unsafe.Pointer { + return (*ifaceHeader)(unsafe.Pointer(&t)).Type +} + +// value is a union where only one type can be represented at a time. +// The struct is 24B large on 64-bit systems and requires the minimum storage +// necessary to represent each possible type. +// +// The Go GC needs to be able to scan variables containing pointers. +// As such, pointers and non-pointers cannot be intermixed. +type value struct { + pragma.DoNotCompare // 0B + + // typ stores the type of the value as a pointer to the Go type. + typ unsafe.Pointer // 8B + + // ptr stores the data pointer for a String, Bytes, or interface value. + ptr unsafe.Pointer // 8B + + // num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or + // Enum value as a raw uint64. + // + // It is also used to store the length of a String or Bytes value; + // the capacity is ignored. + num uint64 // 8B +} + +func valueOfString(v string) Value { + p := (*stringHeader)(unsafe.Pointer(&v)) + return Value{typ: stringType, ptr: p.Data, num: uint64(len(v))} +} +func valueOfBytes(v []byte) Value { + p := (*sliceHeader)(unsafe.Pointer(&v)) + return Value{typ: bytesType, ptr: p.Data, num: uint64(len(v))} +} +func valueOfIface(v any) Value { + p := (*ifaceHeader)(unsafe.Pointer(&v)) + return Value{typ: p.Type, ptr: p.Data} +} + +func (v Value) getString() (x string) { + *(*stringHeader)(unsafe.Pointer(&x)) = stringHeader{Data: v.ptr, Len: int(v.num)} + return x +} +func (v Value) getBytes() (x []byte) { + *(*sliceHeader)(unsafe.Pointer(&x)) = sliceHeader{Data: v.ptr, Len: int(v.num), Cap: int(v.num)} + return x +} +func (v Value) getIface() (x any) { + *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} + return x +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go new file mode 100644 index 0000000..f7d3869 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go @@ -0,0 +1,87 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && go1.21 +// +build !purego,!appengine,go1.21 + +package protoreflect + +import ( + "unsafe" + + "google.golang.org/protobuf/internal/pragma" +) + +type ( + ifaceHeader struct { + _ [0]any // if interfaces have greater alignment than unsafe.Pointer, this will enforce it. + Type unsafe.Pointer + Data unsafe.Pointer + } +) + +var ( + nilType = typeOf(nil) + boolType = typeOf(*new(bool)) + int32Type = typeOf(*new(int32)) + int64Type = typeOf(*new(int64)) + uint32Type = typeOf(*new(uint32)) + uint64Type = typeOf(*new(uint64)) + float32Type = typeOf(*new(float32)) + float64Type = typeOf(*new(float64)) + stringType = typeOf(*new(string)) + bytesType = typeOf(*new([]byte)) + enumType = typeOf(*new(EnumNumber)) +) + +// typeOf returns a pointer to the Go type information. +// The pointer is comparable and equal if and only if the types are identical. +func typeOf(t any) unsafe.Pointer { + return (*ifaceHeader)(unsafe.Pointer(&t)).Type +} + +// value is a union where only one type can be represented at a time. +// The struct is 24B large on 64-bit systems and requires the minimum storage +// necessary to represent each possible type. +// +// The Go GC needs to be able to scan variables containing pointers. +// As such, pointers and non-pointers cannot be intermixed. +type value struct { + pragma.DoNotCompare // 0B + + // typ stores the type of the value as a pointer to the Go type. + typ unsafe.Pointer // 8B + + // ptr stores the data pointer for a String, Bytes, or interface value. + ptr unsafe.Pointer // 8B + + // num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or + // Enum value as a raw uint64. + // + // It is also used to store the length of a String or Bytes value; + // the capacity is ignored. + num uint64 // 8B +} + +func valueOfString(v string) Value { + return Value{typ: stringType, ptr: unsafe.Pointer(unsafe.StringData(v)), num: uint64(len(v))} +} +func valueOfBytes(v []byte) Value { + return Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))} +} +func valueOfIface(v any) Value { + p := (*ifaceHeader)(unsafe.Pointer(&v)) + return Value{typ: p.Type, ptr: p.Data} +} + +func (v Value) getString() string { + return unsafe.String((*byte)(v.ptr), v.num) +} +func (v Value) getBytes() []byte { + return unsafe.Slice((*byte)(v.ptr), v.num) +} +func (v Value) getIface() (x any) { + *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} + return x +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go new file mode 100644 index 0000000..de17773 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go @@ -0,0 +1,882 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoregistry provides data structures to register and lookup +// protobuf descriptor types. +// +// The [Files] registry contains file descriptors and provides the ability +// to iterate over the files or lookup a specific descriptor within the files. +// [Files] only contains protobuf descriptors and has no understanding of Go +// type information that may be associated with each descriptor. +// +// The [Types] registry contains descriptor types for which there is a known +// Go type associated with that descriptor. It provides the ability to iterate +// over the registered types or lookup a type by name. +package protoregistry + +import ( + "fmt" + "os" + "strings" + "sync" + + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// conflictPolicy configures the policy for handling registration conflicts. +// +// It can be over-written at compile time with a linker-initialized variable: +// +// go build -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" +// +// It can be over-written at program execution with an environment variable: +// +// GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main +// +// Neither of the above are covered by the compatibility promise and +// may be removed in a future release of this module. +var conflictPolicy = "panic" // "panic" | "warn" | "ignore" + +// ignoreConflict reports whether to ignore a registration conflict +// given the descriptor being registered and the error. +// It is a variable so that the behavior is easily overridden in another file. +var ignoreConflict = func(d protoreflect.Descriptor, err error) bool { + const env = "GOLANG_PROTOBUF_REGISTRATION_CONFLICT" + const faq = "https://protobuf.dev/reference/go/faq#namespace-conflict" + policy := conflictPolicy + if v := os.Getenv(env); v != "" { + policy = v + } + switch policy { + case "panic": + panic(fmt.Sprintf("%v\nSee %v\n", err, faq)) + case "warn": + fmt.Fprintf(os.Stderr, "WARNING: %v\nSee %v\n\n", err, faq) + return true + case "ignore": + return true + default: + panic("invalid " + env + " value: " + os.Getenv(env)) + } +} + +var globalMutex sync.RWMutex + +// GlobalFiles is a global registry of file descriptors. +var GlobalFiles *Files = new(Files) + +// GlobalTypes is the registry used by default for type lookups +// unless a local registry is provided by the user. +var GlobalTypes *Types = new(Types) + +// NotFound is a sentinel error value to indicate that the type was not found. +// +// Since registry lookup can happen in the critical performance path, resolvers +// must return this exact error value, not an error wrapping it. +var NotFound = errors.New("not found") + +// Files is a registry for looking up or iterating over files and the +// descriptors contained within them. +// The Find and Range methods are safe for concurrent use. +type Files struct { + // The map of descsByName contains: + // EnumDescriptor + // EnumValueDescriptor + // MessageDescriptor + // ExtensionDescriptor + // ServiceDescriptor + // *packageDescriptor + // + // Note that files are stored as a slice, since a package may contain + // multiple files. Only top-level declarations are registered. + // Note that enum values are in the top-level since that are in the same + // scope as the parent enum. + descsByName map[protoreflect.FullName]any + filesByPath map[string][]protoreflect.FileDescriptor + numFiles int +} + +type packageDescriptor struct { + files []protoreflect.FileDescriptor +} + +// RegisterFile registers the provided file descriptor. +// +// If any descriptor within the file conflicts with the descriptor of any +// previously registered file (e.g., two enums with the same full name), +// then the file is not registered and an error is returned. +// +// It is permitted for multiple files to have the same file path. +func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error { + if r == GlobalFiles { + globalMutex.Lock() + defer globalMutex.Unlock() + } + if r.descsByName == nil { + r.descsByName = map[protoreflect.FullName]any{ + "": &packageDescriptor{}, + } + r.filesByPath = make(map[string][]protoreflect.FileDescriptor) + } + path := file.Path() + if prev := r.filesByPath[path]; len(prev) > 0 { + r.checkGenProtoConflict(path) + err := errors.New("file %q is already registered", file.Path()) + err = amendErrorWithCaller(err, prev[0], file) + if !(r == GlobalFiles && ignoreConflict(file, err)) { + return err + } + } + + for name := file.Package(); name != ""; name = name.Parent() { + switch prev := r.descsByName[name]; prev.(type) { + case nil, *packageDescriptor: + default: + err := errors.New("file %q has a package name conflict over %v", file.Path(), name) + err = amendErrorWithCaller(err, prev, file) + if r == GlobalFiles && ignoreConflict(file, err) { + err = nil + } + return err + } + } + var err error + var hasConflict bool + rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) { + if prev := r.descsByName[d.FullName()]; prev != nil { + hasConflict = true + err = errors.New("file %q has a name conflict over %v", file.Path(), d.FullName()) + err = amendErrorWithCaller(err, prev, file) + if r == GlobalFiles && ignoreConflict(d, err) { + err = nil + } + } + }) + if hasConflict { + return err + } + + for name := file.Package(); name != ""; name = name.Parent() { + if r.descsByName[name] == nil { + r.descsByName[name] = &packageDescriptor{} + } + } + p := r.descsByName[file.Package()].(*packageDescriptor) + p.files = append(p.files, file) + rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) { + r.descsByName[d.FullName()] = d + }) + r.filesByPath[path] = append(r.filesByPath[path], file) + r.numFiles++ + return nil +} + +// Several well-known types were hosted in the google.golang.org/genproto module +// but were later moved to this module. To avoid a weak dependency on the +// genproto module (and its relatively large set of transitive dependencies), +// we rely on a registration conflict to determine whether the genproto version +// is too old (i.e., does not contain aliases to the new type declarations). +func (r *Files) checkGenProtoConflict(path string) { + if r != GlobalFiles { + return + } + var prevPath string + const prevModule = "google.golang.org/genproto" + const prevVersion = "cb27e3aa (May 26th, 2020)" + switch path { + case "google/protobuf/field_mask.proto": + prevPath = prevModule + "/protobuf/field_mask" + case "google/protobuf/api.proto": + prevPath = prevModule + "/protobuf/api" + case "google/protobuf/type.proto": + prevPath = prevModule + "/protobuf/ptype" + case "google/protobuf/source_context.proto": + prevPath = prevModule + "/protobuf/source_context" + default: + return + } + pkgName := strings.TrimSuffix(strings.TrimPrefix(path, "google/protobuf/"), ".proto") + pkgName = strings.Replace(pkgName, "_", "", -1) + "pb" // e.g., "field_mask" => "fieldmaskpb" + currPath := "google.golang.org/protobuf/types/known/" + pkgName + panic(fmt.Sprintf(""+ + "duplicate registration of %q\n"+ + "\n"+ + "The generated definition for this file has moved:\n"+ + "\tfrom: %q\n"+ + "\tto: %q\n"+ + "A dependency on the %q module must\n"+ + "be at version %v or higher.\n"+ + "\n"+ + "Upgrade the dependency by running:\n"+ + "\tgo get -u %v\n", + path, prevPath, currPath, prevModule, prevVersion, prevPath)) +} + +// FindDescriptorByName looks up a descriptor by the full name. +// +// This returns (nil, [NotFound]) if not found. +func (r *Files) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + prefix := name + suffix := nameSuffix("") + for prefix != "" { + if d, ok := r.descsByName[prefix]; ok { + switch d := d.(type) { + case protoreflect.EnumDescriptor: + if d.FullName() == name { + return d, nil + } + case protoreflect.EnumValueDescriptor: + if d.FullName() == name { + return d, nil + } + case protoreflect.MessageDescriptor: + if d.FullName() == name { + return d, nil + } + if d := findDescriptorInMessage(d, suffix); d != nil && d.FullName() == name { + return d, nil + } + case protoreflect.ExtensionDescriptor: + if d.FullName() == name { + return d, nil + } + case protoreflect.ServiceDescriptor: + if d.FullName() == name { + return d, nil + } + if d := d.Methods().ByName(suffix.Pop()); d != nil && d.FullName() == name { + return d, nil + } + } + return nil, NotFound + } + prefix = prefix.Parent() + suffix = nameSuffix(name[len(prefix)+len("."):]) + } + return nil, NotFound +} + +func findDescriptorInMessage(md protoreflect.MessageDescriptor, suffix nameSuffix) protoreflect.Descriptor { + name := suffix.Pop() + if suffix == "" { + if ed := md.Enums().ByName(name); ed != nil { + return ed + } + for i := md.Enums().Len() - 1; i >= 0; i-- { + if vd := md.Enums().Get(i).Values().ByName(name); vd != nil { + return vd + } + } + if xd := md.Extensions().ByName(name); xd != nil { + return xd + } + if fd := md.Fields().ByName(name); fd != nil { + return fd + } + if od := md.Oneofs().ByName(name); od != nil { + return od + } + } + if md := md.Messages().ByName(name); md != nil { + if suffix == "" { + return md + } + return findDescriptorInMessage(md, suffix) + } + return nil +} + +type nameSuffix string + +func (s *nameSuffix) Pop() (name protoreflect.Name) { + if i := strings.IndexByte(string(*s), '.'); i >= 0 { + name, *s = protoreflect.Name((*s)[:i]), (*s)[i+1:] + } else { + name, *s = protoreflect.Name((*s)), "" + } + return name +} + +// FindFileByPath looks up a file by the path. +// +// This returns (nil, [NotFound]) if not found. +// This returns an error if multiple files have the same path. +func (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + fds := r.filesByPath[path] + switch len(fds) { + case 0: + return nil, NotFound + case 1: + return fds[0], nil + default: + return nil, errors.New("multiple files named %q", path) + } +} + +// NumFiles reports the number of registered files, +// including duplicate files with the same name. +func (r *Files) NumFiles() int { + if r == nil { + return 0 + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numFiles +} + +// RangeFiles iterates over all registered files while f returns true. +// If multiple files have the same name, RangeFiles iterates over all of them. +// The iteration order is undefined. +func (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) { + if r == nil { + return + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, files := range r.filesByPath { + for _, file := range files { + if !f(file) { + return + } + } + } +} + +// NumFilesByPackage reports the number of registered files in a proto package. +func (r *Files) NumFilesByPackage(name protoreflect.FullName) int { + if r == nil { + return 0 + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + p, ok := r.descsByName[name].(*packageDescriptor) + if !ok { + return 0 + } + return len(p.files) +} + +// RangeFilesByPackage iterates over all registered files in a given proto package +// while f returns true. The iteration order is undefined. +func (r *Files) RangeFilesByPackage(name protoreflect.FullName, f func(protoreflect.FileDescriptor) bool) { + if r == nil { + return + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + p, ok := r.descsByName[name].(*packageDescriptor) + if !ok { + return + } + for _, file := range p.files { + if !f(file) { + return + } + } +} + +// rangeTopLevelDescriptors iterates over all top-level descriptors in a file +// which will be directly entered into the registry. +func rangeTopLevelDescriptors(fd protoreflect.FileDescriptor, f func(protoreflect.Descriptor)) { + eds := fd.Enums() + for i := eds.Len() - 1; i >= 0; i-- { + f(eds.Get(i)) + vds := eds.Get(i).Values() + for i := vds.Len() - 1; i >= 0; i-- { + f(vds.Get(i)) + } + } + mds := fd.Messages() + for i := mds.Len() - 1; i >= 0; i-- { + f(mds.Get(i)) + } + xds := fd.Extensions() + for i := xds.Len() - 1; i >= 0; i-- { + f(xds.Get(i)) + } + sds := fd.Services() + for i := sds.Len() - 1; i >= 0; i-- { + f(sds.Get(i)) + } +} + +// MessageTypeResolver is an interface for looking up messages. +// +// A compliant implementation must deterministically return the same type +// if no error is encountered. +// +// The [Types] type implements this interface. +type MessageTypeResolver interface { + // FindMessageByName looks up a message by its full name. + // E.g., "google.protobuf.Any" + // + // This return (nil, NotFound) if not found. + FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) + + // FindMessageByURL looks up a message by a URL identifier. + // See documentation on google.protobuf.Any.type_url for the URL format. + // + // This returns (nil, NotFound) if not found. + FindMessageByURL(url string) (protoreflect.MessageType, error) +} + +// ExtensionTypeResolver is an interface for looking up extensions. +// +// A compliant implementation must deterministically return the same type +// if no error is encountered. +// +// The [Types] type implements this interface. +type ExtensionTypeResolver interface { + // FindExtensionByName looks up a extension field by the field's full name. + // Note that this is the full name of the field as determined by + // where the extension is declared and is unrelated to the full name of the + // message being extended. + // + // This returns (nil, NotFound) if not found. + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + + // FindExtensionByNumber looks up a extension field by the field number + // within some parent message, identified by full name. + // + // This returns (nil, NotFound) if not found. + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) +} + +var ( + _ MessageTypeResolver = (*Types)(nil) + _ ExtensionTypeResolver = (*Types)(nil) +) + +// Types is a registry for looking up or iterating over descriptor types. +// The Find and Range methods are safe for concurrent use. +type Types struct { + typesByName typesByName + extensionsByMessage extensionsByMessage + + numEnums int + numMessages int + numExtensions int +} + +type ( + typesByName map[protoreflect.FullName]any + extensionsByMessage map[protoreflect.FullName]extensionsByNumber + extensionsByNumber map[protoreflect.FieldNumber]protoreflect.ExtensionType +) + +// RegisterMessage registers the provided message type. +// +// If a naming conflict occurs, the type is not registered and an error is returned. +func (r *Types) RegisterMessage(mt protoreflect.MessageType) error { + // Under rare circumstances getting the descriptor might recursively + // examine the registry, so fetch it before locking. + md := mt.Descriptor() + + if r == GlobalTypes { + globalMutex.Lock() + defer globalMutex.Unlock() + } + + if err := r.register("message", md, mt); err != nil { + return err + } + r.numMessages++ + return nil +} + +// RegisterEnum registers the provided enum type. +// +// If a naming conflict occurs, the type is not registered and an error is returned. +func (r *Types) RegisterEnum(et protoreflect.EnumType) error { + // Under rare circumstances getting the descriptor might recursively + // examine the registry, so fetch it before locking. + ed := et.Descriptor() + + if r == GlobalTypes { + globalMutex.Lock() + defer globalMutex.Unlock() + } + + if err := r.register("enum", ed, et); err != nil { + return err + } + r.numEnums++ + return nil +} + +// RegisterExtension registers the provided extension type. +// +// If a naming conflict occurs, the type is not registered and an error is returned. +func (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error { + // Under rare circumstances getting the descriptor might recursively + // examine the registry, so fetch it before locking. + // + // A known case where this can happen: Fetching the TypeDescriptor for a + // legacy ExtensionDesc can consult the global registry. + xd := xt.TypeDescriptor() + + if r == GlobalTypes { + globalMutex.Lock() + defer globalMutex.Unlock() + } + + field := xd.Number() + message := xd.ContainingMessage().FullName() + if prev := r.extensionsByMessage[message][field]; prev != nil { + err := errors.New("extension number %d is already registered on message %v", field, message) + err = amendErrorWithCaller(err, prev, xt) + if !(r == GlobalTypes && ignoreConflict(xd, err)) { + return err + } + } + + if err := r.register("extension", xd, xt); err != nil { + return err + } + if r.extensionsByMessage == nil { + r.extensionsByMessage = make(extensionsByMessage) + } + if r.extensionsByMessage[message] == nil { + r.extensionsByMessage[message] = make(extensionsByNumber) + } + r.extensionsByMessage[message][field] = xt + r.numExtensions++ + return nil +} + +func (r *Types) register(kind string, desc protoreflect.Descriptor, typ any) error { + name := desc.FullName() + prev := r.typesByName[name] + if prev != nil { + err := errors.New("%v %v is already registered", kind, name) + err = amendErrorWithCaller(err, prev, typ) + if !(r == GlobalTypes && ignoreConflict(desc, err)) { + return err + } + } + if r.typesByName == nil { + r.typesByName = make(typesByName) + } + r.typesByName[name] = typ + return nil +} + +// FindEnumByName looks up an enum by its full name. +// E.g., "google.protobuf.Field.Kind". +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindEnumByName(enum protoreflect.FullName) (protoreflect.EnumType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if v := r.typesByName[enum]; v != nil { + if et, _ := v.(protoreflect.EnumType); et != nil { + return et, nil + } + return nil, errors.New("found wrong type: got %v, want enum", typeName(v)) + } + return nil, NotFound +} + +// FindMessageByName looks up a message by its full name, +// e.g. "google.protobuf.Any". +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if v := r.typesByName[message]; v != nil { + if mt, _ := v.(protoreflect.MessageType); mt != nil { + return mt, nil + } + return nil, errors.New("found wrong type: got %v, want message", typeName(v)) + } + return nil, NotFound +} + +// FindMessageByURL looks up a message by a URL identifier. +// See documentation on google.protobuf.Any.type_url for the URL format. +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) { + // This function is similar to FindMessageByName but + // truncates anything before and including '/' in the URL. + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + message := protoreflect.FullName(url) + if i := strings.LastIndexByte(url, '/'); i >= 0 { + message = message[i+len("/"):] + } + + if v := r.typesByName[message]; v != nil { + if mt, _ := v.(protoreflect.MessageType); mt != nil { + return mt, nil + } + return nil, errors.New("found wrong type: got %v, want message", typeName(v)) + } + return nil, NotFound +} + +// FindExtensionByName looks up a extension field by the field's full name. +// Note that this is the full name of the field as determined by +// where the extension is declared and is unrelated to the full name of the +// message being extended. +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if v := r.typesByName[field]; v != nil { + if xt, _ := v.(protoreflect.ExtensionType); xt != nil { + return xt, nil + } + + // MessageSet extensions are special in that the name of the extension + // is the name of the message type used to extend the MessageSet. + // This naming scheme is used by text and JSON serialization. + // + // This feature is protected by the ProtoLegacy flag since MessageSets + // are a proto1 feature that is long deprecated. + if flags.ProtoLegacy { + if _, ok := v.(protoreflect.MessageType); ok { + field := field.Append(messageset.ExtensionName) + if v := r.typesByName[field]; v != nil { + if xt, _ := v.(protoreflect.ExtensionType); xt != nil { + if messageset.IsMessageSetExtension(xt.TypeDescriptor()) { + return xt, nil + } + } + } + } + } + + return nil, errors.New("found wrong type: got %v, want extension", typeName(v)) + } + return nil, NotFound +} + +// FindExtensionByNumber looks up a extension field by the field number +// within some parent message, identified by full name. +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if xt, ok := r.extensionsByMessage[message][field]; ok { + return xt, nil + } + return nil, NotFound +} + +// NumEnums reports the number of registered enums. +func (r *Types) NumEnums() int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numEnums +} + +// RangeEnums iterates over all registered enums while f returns true. +// Iteration order is undefined. +func (r *Types) RangeEnums(f func(protoreflect.EnumType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, typ := range r.typesByName { + if et, ok := typ.(protoreflect.EnumType); ok { + if !f(et) { + return + } + } + } +} + +// NumMessages reports the number of registered messages. +func (r *Types) NumMessages() int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numMessages +} + +// RangeMessages iterates over all registered messages while f returns true. +// Iteration order is undefined. +func (r *Types) RangeMessages(f func(protoreflect.MessageType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, typ := range r.typesByName { + if mt, ok := typ.(protoreflect.MessageType); ok { + if !f(mt) { + return + } + } + } +} + +// NumExtensions reports the number of registered extensions. +func (r *Types) NumExtensions() int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numExtensions +} + +// RangeExtensions iterates over all registered extensions while f returns true. +// Iteration order is undefined. +func (r *Types) RangeExtensions(f func(protoreflect.ExtensionType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, typ := range r.typesByName { + if xt, ok := typ.(protoreflect.ExtensionType); ok { + if !f(xt) { + return + } + } + } +} + +// NumExtensionsByMessage reports the number of registered extensions for +// a given message type. +func (r *Types) NumExtensionsByMessage(message protoreflect.FullName) int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return len(r.extensionsByMessage[message]) +} + +// RangeExtensionsByMessage iterates over all registered extensions filtered +// by a given message type while f returns true. Iteration order is undefined. +func (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, xt := range r.extensionsByMessage[message] { + if !f(xt) { + return + } + } +} + +func typeName(t any) string { + switch t.(type) { + case protoreflect.EnumType: + return "enum" + case protoreflect.MessageType: + return "message" + case protoreflect.ExtensionType: + return "extension" + default: + return fmt.Sprintf("%T", t) + } +} + +func amendErrorWithCaller(err error, prev, curr any) error { + prevPkg := goPackage(prev) + currPkg := goPackage(curr) + if prevPkg == "" || currPkg == "" || prevPkg == currPkg { + return err + } + return errors.New("%s\n\tpreviously from: %q\n\tcurrently from: %q", err, prevPkg, currPkg) +} + +func goPackage(v any) string { + switch d := v.(type) { + case protoreflect.EnumType: + v = d.Descriptor() + case protoreflect.MessageType: + v = d.Descriptor() + case protoreflect.ExtensionType: + v = d.TypeDescriptor() + } + if d, ok := v.(protoreflect.Descriptor); ok { + v = d.ParentFile() + } + if d, ok := v.(interface{ GoPackagePath() string }); ok { + return d.GoPackagePath() + } + return "" +} diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go new file mode 100644 index 0000000..c587276 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoiface + +type MessageV1 interface { + Reset() + String() string + ProtoMessage() +} + +type ExtensionRangeV1 struct { + Start, End int32 // both inclusive +} diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go new file mode 100644 index 0000000..44cf467 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go @@ -0,0 +1,168 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoiface contains types referenced or implemented by messages. +// +// WARNING: This package should only be imported by message implementations. +// The functionality found in this package should be accessed through +// higher-level abstractions provided by the proto package. +package protoiface + +import ( + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Methods is a set of optional fast-path implementations of various operations. +type Methods = struct { + pragma.NoUnkeyedLiterals + + // Flags indicate support for optional features. + Flags SupportFlags + + // Size returns the size in bytes of the wire-format encoding of a message. + // Marshal must be provided if a custom Size is provided. + Size func(SizeInput) SizeOutput + + // Marshal formats a message in the wire-format encoding to the provided buffer. + // Size should be provided if a custom Marshal is provided. + // It must not return an error for a partial message. + Marshal func(MarshalInput) (MarshalOutput, error) + + // Unmarshal parses the wire-format encoding and merges the result into a message. + // It must not reset the target message or return an error for a partial message. + Unmarshal func(UnmarshalInput) (UnmarshalOutput, error) + + // Merge merges the contents of a source message into a destination message. + Merge func(MergeInput) MergeOutput + + // CheckInitialized returns an error if any required fields in the message are not set. + CheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error) +} + +// SupportFlags indicate support for optional features. +type SupportFlags = uint64 + +const ( + // SupportMarshalDeterministic reports whether MarshalOptions.Deterministic is supported. + SupportMarshalDeterministic SupportFlags = 1 << iota + + // SupportUnmarshalDiscardUnknown reports whether UnmarshalOptions.DiscardUnknown is supported. + SupportUnmarshalDiscardUnknown +) + +// SizeInput is input to the Size method. +type SizeInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message + Flags MarshalInputFlags +} + +// SizeOutput is output from the Size method. +type SizeOutput = struct { + pragma.NoUnkeyedLiterals + + Size int +} + +// MarshalInput is input to the Marshal method. +type MarshalInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message + Buf []byte // output is appended to this buffer + Flags MarshalInputFlags +} + +// MarshalOutput is output from the Marshal method. +type MarshalOutput = struct { + pragma.NoUnkeyedLiterals + + Buf []byte // contains marshaled message +} + +// MarshalInputFlags configure the marshaler. +// Most flags correspond to fields in proto.MarshalOptions. +type MarshalInputFlags = uint8 + +const ( + MarshalDeterministic MarshalInputFlags = 1 << iota + MarshalUseCachedSize +) + +// UnmarshalInput is input to the Unmarshal method. +type UnmarshalInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message + Buf []byte // input buffer + Flags UnmarshalInputFlags + Resolver interface { + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) + } + Depth int +} + +// UnmarshalOutput is output from the Unmarshal method. +type UnmarshalOutput = struct { + pragma.NoUnkeyedLiterals + + Flags UnmarshalOutputFlags +} + +// UnmarshalInputFlags configure the unmarshaler. +// Most flags correspond to fields in proto.UnmarshalOptions. +type UnmarshalInputFlags = uint8 + +const ( + UnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota +) + +// UnmarshalOutputFlags are output from the Unmarshal method. +type UnmarshalOutputFlags = uint8 + +const ( + // UnmarshalInitialized may be set on return if all required fields are known to be set. + // If unset, then it does not necessarily indicate that the message is uninitialized, + // only that its status could not be confirmed. + UnmarshalInitialized UnmarshalOutputFlags = 1 << iota +) + +// MergeInput is input to the Merge method. +type MergeInput = struct { + pragma.NoUnkeyedLiterals + + Source protoreflect.Message + Destination protoreflect.Message +} + +// MergeOutput is output from the Merge method. +type MergeOutput = struct { + pragma.NoUnkeyedLiterals + + Flags MergeOutputFlags +} + +// MergeOutputFlags are output from the Merge method. +type MergeOutputFlags = uint8 + +const ( + // MergeComplete reports whether the merge was performed. + // If unset, the merger must have made no changes to the destination. + MergeComplete MergeOutputFlags = 1 << iota +) + +// CheckInitializedInput is input to the CheckInitialized method. +type CheckInitializedInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message +} + +// CheckInitializedOutput is output from the CheckInitialized method. +type CheckInitializedOutput = struct { + pragma.NoUnkeyedLiterals +} diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go new file mode 100644 index 0000000..4a1ab7f --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go @@ -0,0 +1,44 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoimpl contains the default implementation for messages +// generated by protoc-gen-go. +// +// WARNING: This package should only ever be imported by generated messages. +// The compatibility agreement covers nothing except for functionality needed +// to keep existing generated messages operational. Breakages that occur due +// to unauthorized usages of this package are not the author's responsibility. +package protoimpl + +import ( + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/filetype" + "google.golang.org/protobuf/internal/impl" +) + +// UnsafeEnabled specifies whether package unsafe can be used. +const UnsafeEnabled = impl.UnsafeEnabled + +type ( + // Types used by generated code in init functions. + DescBuilder = filedesc.Builder + TypeBuilder = filetype.Builder + + // Types used by generated code to implement EnumType, MessageType, and ExtensionType. + EnumInfo = impl.EnumInfo + MessageInfo = impl.MessageInfo + ExtensionInfo = impl.ExtensionInfo + + // Types embedded in generated messages. + MessageState = impl.MessageState + SizeCache = impl.SizeCache + WeakFields = impl.WeakFields + UnknownFields = impl.UnknownFields + ExtensionFields = impl.ExtensionFields + ExtensionFieldV1 = impl.ExtensionField + + Pointer = impl.Pointer +) + +var X impl.Export diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go new file mode 100644 index 0000000..a105cb2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go @@ -0,0 +1,60 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoimpl + +import ( + "google.golang.org/protobuf/internal/version" +) + +const ( + // MaxVersion is the maximum supported version for generated .pb.go files. + // It is always the current version of the module. + MaxVersion = version.Minor + + // GenVersion is the runtime version required by generated .pb.go files. + // This is incremented when generated code relies on new functionality + // in the runtime. + GenVersion = 20 + + // MinVersion is the minimum supported version for generated .pb.go files. + // This is incremented when the runtime drops support for old code. + MinVersion = 0 +) + +// EnforceVersion is used by code generated by protoc-gen-go +// to statically enforce minimum and maximum versions of this package. +// A compilation failure implies either that: +// - the runtime package is too old and needs to be updated OR +// - the generated code is too old and needs to be regenerated. +// +// The runtime package can be upgraded by running: +// +// go get google.golang.org/protobuf +// +// The generated code can be regenerated by running: +// +// protoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES} +// +// Example usage by generated code: +// +// const ( +// // Verify that this generated code is sufficiently up-to-date. +// _ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion) +// // Verify that runtime/protoimpl is sufficiently up-to-date. +// _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion) +// ) +// +// The genVersion is the current minor version used to generated the code. +// This compile-time check relies on negative integer overflow of a uint +// being a compilation failure (guaranteed by the Go specification). +type EnforceVersion uint + +// This enforces the following invariant: +// +// MinVersion ≤ GenVersion ≤ MaxVersion +const ( + _ = EnforceVersion(GenVersion - MinVersion) + _ = EnforceVersion(MaxVersion - GenVersion) +) diff --git a/examples/go/vendor/modules.txt b/examples/go/vendor/modules.txt new file mode 100644 index 0000000..8a4ff05 --- /dev/null +++ b/examples/go/vendor/modules.txt @@ -0,0 +1,67 @@ +# github.com/golang/snappy v0.0.4 +## explicit +github.com/golang/snappy +# github.com/google/uuid v1.6.0 +## explicit +github.com/google/uuid +# github.com/klauspost/compress v1.17.9 +## explicit; go 1.20 +github.com/klauspost/compress +github.com/klauspost/compress/fse +github.com/klauspost/compress/huff0 +github.com/klauspost/compress/internal/cpuinfo +github.com/klauspost/compress/internal/snapref +github.com/klauspost/compress/zstd +github.com/klauspost/compress/zstd/internal/xxhash +# github.com/kr/pretty v0.3.1 +## explicit; go 1.12 +# github.com/pierrec/lz4 v2.6.1+incompatible +## explicit +github.com/pierrec/lz4 +github.com/pierrec/lz4/internal/xxh32 +# github.com/pkg/errors v0.9.1 +## explicit +github.com/pkg/errors +# github.com/rabbitmq/amqp091-go v1.10.0 +## explicit; go 1.20 +github.com/rabbitmq/amqp091-go +# github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 +## explicit; go 1.18 +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream +# github.com/spaolacci/murmur3 v1.1.0 +## explicit +github.com/spaolacci/murmur3 +# github.com/zaphiro-technologies/protobuf v0.0.7 +## explicit; go 1.21 +github.com/zaphiro-technologies/protobuf/go/grid/v1 +# google.golang.org/protobuf v1.34.2 +## explicit; go 1.20 +google.golang.org/protobuf/encoding/prototext +google.golang.org/protobuf/encoding/protowire +google.golang.org/protobuf/internal/descfmt +google.golang.org/protobuf/internal/descopts +google.golang.org/protobuf/internal/detrand +google.golang.org/protobuf/internal/editiondefaults +google.golang.org/protobuf/internal/encoding/defval +google.golang.org/protobuf/internal/encoding/messageset +google.golang.org/protobuf/internal/encoding/tag +google.golang.org/protobuf/internal/encoding/text +google.golang.org/protobuf/internal/errors +google.golang.org/protobuf/internal/filedesc +google.golang.org/protobuf/internal/filetype +google.golang.org/protobuf/internal/flags +google.golang.org/protobuf/internal/genid +google.golang.org/protobuf/internal/impl +google.golang.org/protobuf/internal/order +google.golang.org/protobuf/internal/pragma +google.golang.org/protobuf/internal/set +google.golang.org/protobuf/internal/strs +google.golang.org/protobuf/internal/version +google.golang.org/protobuf/proto +google.golang.org/protobuf/reflect/protoreflect +google.golang.org/protobuf/reflect/protoregistry +google.golang.org/protobuf/runtime/protoiface +google.golang.org/protobuf/runtime/protoimpl From 9781602b756245399884510addd784747b206b7f Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 11:00:07 +0000 Subject: [PATCH 07/66] Automated lint fixes [dependabot skip] --- examples/go/faults/main.go | 114 ++++++++++++++++++++++++++++++++----- 1 file changed, 101 insertions(+), 13 deletions(-) diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go index cd53350..9cfd8b0 100644 --- a/examples/go/faults/main.go +++ b/examples/go/faults/main.go @@ -22,7 +22,16 @@ func CheckErr(err error) { } } -func generateFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.Fault { +func generateFault( + fault_id string, + event_type grid.FaultEventType, + measurement_timestamp int64, + fault_current float32, + location_probability *float32, + used_measurements []*grid.FaultMeasurement, + impacted_equipments []string, + faulty_equipment *string, +) *grid.Fault { description := "Example fault" tm := math.Round(float64(time.Now().UnixMilli())/20) * 20 @@ -45,14 +54,36 @@ func generateFault(fault_id string, event_type grid.FaultEventType, measurement_ return &fault } -func generateLineFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.LineFault { - - fault := generateFault(fault_id, event_type, measurement_timestamp, fault_current, location_probability, used_measurements, impacted_equipments, faulty_equipment) +func generateLineFault( + fault_id string, + event_type grid.FaultEventType, + measurement_timestamp int64, + fault_current float32, + location_probability *float32, + used_measurements []*grid.FaultMeasurement, + impacted_equipments []string, + faulty_equipment *string, +) *grid.LineFault { + + fault := generateFault( + fault_id, + event_type, + measurement_timestamp, + fault_current, + location_probability, + used_measurements, + impacted_equipments, + faulty_equipment, + ) length_from_terminal1 := rand.Float32() length_uncertainty := float32(100.0) - lineFault := grid.LineFault{Fault: fault, LengthFromTerminal1: &length_from_terminal1, LengthUncertainty: &length_uncertainty} + lineFault := grid.LineFault{ + Fault: fault, + LengthFromTerminal1: &length_from_terminal1, + LengthUncertainty: &length_uncertainty, + } return &lineFault } @@ -128,14 +159,22 @@ func main() { data := &grid.Fault{} err := proto.Unmarshal(d.Body, data) CheckErr(err) - fmt.Printf("Received a fault message: %s, event: %s\n", data.Id, data.FaultEventType) + fmt.Printf( + "Received a fault message: %s, event: %s\n", + data.Id, + data.FaultEventType, + ) } if d.Headers["type"] == "LineFault" { data := &grid.LineFault{} err := proto.Unmarshal(d.Body, data) CheckErr(err) - fmt.Printf("Received a fault message: %s, event: %s\n", data.Fault.Id, data.Fault.FaultEventType) + fmt.Printf( + "Received a fault message: %s, event: %s\n", + data.Fault.Id, + data.Fault.FaultEventType, + ) } } }() @@ -148,9 +187,22 @@ func main() { fault_equipment := new(string) location_probability := new(float32) impacted_equipments := []string{"EQ-1", "EQ-2", "EQ-3"} - used_measurements := []*grid.FaultMeasurement{{PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}} + used_measurements := []*grid.FaultMeasurement{ + {PositiveSign: true, MeasurementID: "M-1"}, + {PositiveSign: true, MeasurementID: "M-1"}, + {PositiveSign: true, MeasurementID: "M-1"}, + } - startFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_STARTED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + startFaultEvent := generateFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_STARTED, + mt, + fault_current, + location_probability, + used_measurements, + impacted_equipments, + fault_equipment, + ) header := amqp.Table{ "id": fault_id, @@ -162,7 +214,16 @@ func main() { time.Sleep(20 * time.Millisecond) - endFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_ENDED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + endFaultEvent := generateFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_ENDED, + mt, + fault_current, + location_probability, + used_measurements, + impacted_equipments, + fault_equipment, + ) buf, _ = proto.Marshal(endFaultEvent) publishMessage(ch, ctx, header, buf) @@ -175,21 +236,48 @@ func main() { "type": "LineFault", } - location := generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + location := generateLineFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, + mt, + fault_current, + &probability, + used_measurements, + impacted_equipments, + &equipment, + ) buf, _ = proto.Marshal(location) publishMessage(ch, ctx, header, buf) // second potential location equipment = "EQ-2" - location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + location = generateLineFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, + mt, + fault_current, + &probability, + used_measurements, + impacted_equipments, + &equipment, + ) buf, _ = proto.Marshal(location) publishMessage(ch, ctx, header, buf) // third potential location equipment = "EQ-3" - location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + location = generateLineFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, + mt, + fault_current, + &probability, + used_measurements, + impacted_equipments, + &equipment, + ) buf, _ = proto.Marshal(location) publishMessage(ch, ctx, header, buf) From df16ff3e9fe009f801e71367dd58329845f93d3f Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 13:52:33 +0200 Subject: [PATCH 08/66] improve docs --- README.md | 48 +++++++++++++++++++++++++++++++++++++- examples/go/faults/main.go | 6 ++--- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b0300ae..c9eb569 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,53 @@ Python and Go, code to: 1. Set-up the infrastructure using `make docker-start`. 1. Launch the example `make example-measurements-go` -1. Press any key to stop +1. Press any key to stop. + +```bash +Getting started with Streaming client for RabbitMQ +Connecting to RabbitMQ streaming ... +Sent 10 messages +Press any key to stop + +consumer name: my_consumer, measurement_id: Dev0000-0005, measurement_time 1720698360980, measurement_type 20, measurement_value 4592455024224327647 +consumer name: my_consumer, measurement_id: Dev0000-0006, measurement_time 1720698360980, measurement_type 20, measurement_value 4604241342922663796 +consumer name: my_consumer, measurement_id: Dev0000-0009, measurement_time 1720698360980, measurement_type 44, measurement_value 4603643564277470555 +consumer name: my_consumer, measurement_id: Dev0000-0001, measurement_time 1720698360980, measurement_type 28, measurement_value 4598295346455196891 +consumer name: my_consumer, measurement_id: Dev0000-0004, measurement_time 1720698360980, measurement_type 20, measurement_value 4605375802349382247 +consumer name: my_consumer, measurement_id: Dev0000-0007, measurement_time 1720698360980, measurement_type 20, measurement_value 4605095969928423361 +consumer name: my_consumer, measurement_id: Dev0000-0002, measurement_time 1720698360980, measurement_type 21, measurement_value 4600833284970982103 +consumer name: my_consumer, measurement_id: Dev0000-0008, measurement_time 1720698360980, measurement_type 20, measurement_value 4597854724057569946 +consumer name: my_consumer, measurement_id: Dev0000-0000, measurement_time 1720698360980, measurement_type 13, measurement_value 4603013690508174157 +consumer name: my_consumer, measurement_id: Dev0000-0003, measurement_time 1720698360980, measurement_type 21, measurement_value 4598093240485266093 +consumer name: my_consumer, measurement_id: Dev0000-0008, measurement_time 1720698360980, measurement_type 20, measurement_value 4600766170106400936 +consumer name: my_consumer, measurement_id: Dev0000-0007, measurement_time 1720698360980, measurement_type 20, measurement_value 4606916483465028581 +``` + +### Produce and consume faults + +#### Python + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the producer `make produce-measurements-python` +1. Launch the consumer `make consume-measurements-python` + +#### Go + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the example `make example-faults-go` +1. Press any key to stop. + +```bash +Getting started with AMPQ client for RabbitMQ +Connecting to RabbitMQ ... +Received a fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_STARTED +Press any key to stop + +Received a fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_ENDED +Received a line fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_LOCATED, faulty line: EQ-1, probability: 0.330000, length from t1: 0.526424 +Received a line fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_LOCATED, faulty line: EQ-2, probability: 0.330000, length from t1: 0.484818 +Received a line fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_LOCATED, faulty line: EQ-3, probability: 0.330000, length from t1: 0.315550 +``` ## Contributing to Protocol Buffers diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go index 9cfd8b0..4229c62 100644 --- a/examples/go/faults/main.go +++ b/examples/go/faults/main.go @@ -160,7 +160,7 @@ func main() { err := proto.Unmarshal(d.Body, data) CheckErr(err) fmt.Printf( - "Received a fault message: %s, event: %s\n", + "Received a fault event message: %s, event type: %s\n", data.Id, data.FaultEventType, ) @@ -171,9 +171,9 @@ func main() { err := proto.Unmarshal(d.Body, data) CheckErr(err) fmt.Printf( - "Received a fault message: %s, event: %s\n", + "Received a line fault event message: %s, event type: %s, faulty line: %s, probability: %f, length from t1: %f\n", data.Fault.Id, - data.Fault.FaultEventType, + data.Fault.FaultEventType, *data.Fault.FaultyEquipmentId, *data.Fault.LocationProbability, *data.LengthFromTerminal1, ) } } From 1401e40c55f3b271de40020b299db054f45a0251 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Wed, 10 Jul 2024 14:50:12 +0200 Subject: [PATCH 09/66] Update documentation for open source release --- .github/config/.licenserc.yaml | 2 + .github/workflows/license.yaml | 2 + LICENSE | 201 +++++++++++++++++++++++++++++++++ README.md | 45 +++++--- 4 files changed, 235 insertions(+), 15 deletions(-) create mode 100644 LICENSE diff --git a/.github/config/.licenserc.yaml b/.github/config/.licenserc.yaml index 4655bb8..51936f2 100644 --- a/.github/config/.licenserc.yaml +++ b/.github/config/.licenserc.yaml @@ -11,6 +11,8 @@ header: - '.github' - '.docker' - '**/*.{md,MD}' + - 'LICENSE' + - 'NOTICE' - 'go.mod' - 'go.sum' diff --git a/.github/workflows/license.yaml b/.github/workflows/license.yaml index 9a2d00b..7e4ff4d 100644 --- a/.github/workflows/license.yaml +++ b/.github/workflows/license.yaml @@ -14,3 +14,5 @@ jobs: license: uses: zaphiro-technologies/github-workflows/.github/workflows/license.yaml@main secrets: inherit + with: + skip-fix: false diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index a9ff1e5..4c0dc4d 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,12 @@ -# Proto Buf +# SynchroGuard's Protocol Buffers -This repository includes the [Protocol Buffer](https://protobuf.dev/) used in -Zaphiro's platform. - -## Requirements +In SynchroGuard, real-time data exchange relies on protocol buffer messages +exchanged over [RabbitMQ](https://www.rabbitmq.com/). Thus, consuming and/or +publishing protocol buffer messages on RabbitMQ is the preferred way to +integrate third parties with SynchroGuard for real-time data exchange. -1. [Golang](https://go.dev/doc/install) -1. [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/) -1. [Go plugins for the protocol compiler](https://grpc.io/docs/languages/go/quickstart/#prerequisites) -1. [Buf](https://buf.build/docs/installation) -1. [proto-gen-md-diagrams](https://github.com/GoogleCloudPlatform/proto-gen-md-diagrams) +This repository includes the [Protocol Buffer](https://protobuf.dev/) used in +Zaphiro's platform and the generated code for GO and Python. ## Available Protocol Buffer @@ -45,18 +42,16 @@ packages: - `Conf2Frame`: a Protocol Buffer used to store PMU configuration frames. - `Stat`: a Protocol Buffer used to store PMU measurement Stat. -## Protocol Buffers Management - All protocol buffers are documented in [docs](./docs). -### Installation +## Installation Currently code is generated for: - [go](go) - [python](python) -#### Python +### Python Installation was tested with poetry: @@ -64,12 +59,32 @@ Installation was tested with poetry: poetry add git+https://github.com/zaphiro-technologies/protobuf.git#v0.0.5 ``` -#### Go +### Go ```bash go install github.com/zaphiro-technologies/protobuf/go@v0.0.5 ``` +## Contributing to Protocol Buffers + +Should you need to modify the protocol buffer message or add new ones, you will +need to set-up the dependencies listed in [Requirements](#requirements). + +Protocol buffers are versioned (current version is v1), and should be developed +following best practices, as implemented by [Buf](https://buf.build) and defined +in [Protobuf programming +guides](https://protobuf.dev/programming-guides/dos-donts/). +In particular, it is important - even more within the same version - to preserve +compatibility, to avoid services breaking up. + +## Requirements + +1. [Golang](https://go.dev/doc/install) +1. [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/) +1. [Go plugins for the protocol compiler](https://grpc.io/docs/languages/go/quickstart/#prerequisites) +1. [Buf](https://buf.build/docs/installation) +1. [proto-gen-md-diagrams](https://github.com/GoogleCloudPlatform/proto-gen-md-diagrams) + ### Generate Code from Protocol Buffers ```bash From 18e4d86653180b28878ab2a6fdf8c9438714c45e Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Wed, 10 Jul 2024 16:05:25 +0200 Subject: [PATCH 10/66] Update golang.yaml --- .github/workflows/golang.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/golang.yaml b/.github/workflows/golang.yaml index 3b01f5b..d7971b6 100644 --- a/.github/workflows/golang.yaml +++ b/.github/workflows/golang.yaml @@ -6,6 +6,7 @@ concurrency: permissions: contents: write + pull-requests: read on: workflow_dispatch: From b7889de6a8c9276f95f682dd2c72124ca486b8c5 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 08:18:01 +0200 Subject: [PATCH 11/66] add measurements example go --- .docker/docker-compose.yml | 32 + .docker/rabbitmq/enabled_plugins.conf | 1 + .docker/rabbitmq/init.sh | 62 ++ .docker/rabbitmq/rabbitmq.conf | 1131 +++++++++++++++++++++++++ .vscode/launch.json | 15 + CONTRIBUTING.md | 19 + Makefile | 18 + README.md | 39 +- examples/go/go.mod | 21 + examples/go/go.sum | 57 ++ examples/go/measurements.go | 168 ++++ 11 files changed, 1558 insertions(+), 5 deletions(-) create mode 100644 .docker/docker-compose.yml create mode 100644 .docker/rabbitmq/enabled_plugins.conf create mode 100755 .docker/rabbitmq/init.sh create mode 100644 .docker/rabbitmq/rabbitmq.conf create mode 100644 .vscode/launch.json create mode 100644 CONTRIBUTING.md create mode 100644 examples/go/go.mod create mode 100644 examples/go/go.sum create mode 100644 examples/go/measurements.go diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml new file mode 100644 index 0000000..593711d --- /dev/null +++ b/.docker/docker-compose.yml @@ -0,0 +1,32 @@ +services: + rabbitmq: + image: rabbitmq:3.12.4-management-alpine + container_name: "rabbitmq" + hostname: "rabbitmq" + restart: always + sysctls: + net.core.somaxconn: 4096 + net.ipv4.tcp_max_syn_backlog: 8192 + environment: + - RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_stream advertised_host rabbitmq -rabbit loopback_users "none" + volumes: + - ./rabbitmq/init.sh:/init.sh + - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf + - ./rabbitmq/enabled_plugins.conf:/etc/rabbitmq/enabled_plugins + ports: + - 5672:5672 + - 15672:15672 + - 5552:5552 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:15672"] + interval: 1s + timeout: 2s + retries: 20 + networks: + net: + aliases: + - rabbitmq + +networks: + net: + name: net diff --git a/.docker/rabbitmq/enabled_plugins.conf b/.docker/rabbitmq/enabled_plugins.conf new file mode 100644 index 0000000..cf3b214 --- /dev/null +++ b/.docker/rabbitmq/enabled_plugins.conf @@ -0,0 +1 @@ +[rabbitmq_management,rabbitmq_management_agent,rabbitmq_stream, rabbitmq_stream_management]. \ No newline at end of file diff --git a/.docker/rabbitmq/init.sh b/.docker/rabbitmq/init.sh new file mode 100755 index 0000000..bb5b6a0 --- /dev/null +++ b/.docker/rabbitmq/init.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# config +CONFIG_STREAM="c37-118-configuration" +MEASUREMENT_STREAM="measurement" +NOTIFICATION_EXCHANGE_TYPE="headers" +NOTIFICATION_EXCHANGE="notification" +DEAD_LETTER_EXCHANGE="notification-unprocessed" +NOTIFICATION_QUEUE="notification-data-labview" +TRIGGER_QUEUE="notification-trigger-labview" +TIMEOUT=$((10*60*1000)) +NOTIFICATION_QUEUE_ARGUMENTS="{\"exclusive\":false,\"x-message-ttl\":$TIMEOUT, \"x-dead-letter-exchange\":\"$DEAD_LETTER_EXCHANGE\"}" +BYTES=$((100 * 1000000)) +NOTIFICATION_QUEUE_BINDING_1_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":1}' +NOTIFICATION_QUEUE_BINDING_2_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":2}' +NOTIFICATION_QUEUE_BINDING_3_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":3}' +TRIGGER_QUEUE_BINDING_1_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":4}' +ASYNC_QUEUE_BINDING_1_ARGUMENTS='{"x-match":"all","type":"Notification","notificationType":0}' +RABBITMQ_FAULT_EXCHANGE_NAME=fault +RABBITMQ_FAULT_CONSUMER_TAG=fault-storer +RABBITMQ_ESTIMATION_EXCHANGE_NAME=estimated-measurements +RABBITMQ_ESTIMATION_CONSUMER_TAG=estimated-measurements +RABBITMQ_TOPOLOGY_EXCHANGE_NAME=topology +RABBITMQ_TOPOLOGY_CONSUMER_TAG=topology +RABBITMQ_EVENT_EXCHANGE_NAME=event +RABBITMQ_EVENT_CONSUMER_TAG=event-storer +RABBITMQ_STAT_STREAM_NAME=stat +RABBITMQ_STAT_LABVIEW_EXCHANGE_NAME=stat-labview +RABBITMQ_STAT_LABVIEW_QUEUE_NAME=stat-labview +RABBITMQ_ASYNC_QUEUE_NAME=async-measurements + +# Declare the streams and queues +rabbitmqadmin declare queue name="$CONFIG_STREAM" queue_type=stream arguments="{\"x-max-length-bytes\":$BYTES}" +rabbitmqadmin declare queue name="$MEASUREMENT_STREAM" queue_type=stream arguments="{\"x-max-length-bytes\":$BYTES}" +rabbitmqadmin declare queue name="$RABBITMQ_STAT_STREAM_NAME" queue_type=stream arguments="{\"x-max-length-bytes\":$BYTES}" +rabbitmqadmin declare exchange name="$NOTIFICATION_EXCHANGE" type="$NOTIFICATION_EXCHANGE_TYPE" +rabbitmqadmin declare exchange name="$DEAD_LETTER_EXCHANGE" type="fanout" +rabbitmqctl set_policy DLX ".*" "{\"dead-letter-exchange\":\"$DEAD_LETTER_EXCHANGE\"}" --apply-to queues +rabbitmqadmin declare queue name="$NOTIFICATION_QUEUE" durable=true +rabbitmqadmin declare queue name="$TRIGGER_QUEUE" durable=true +rabbitmqadmin declare queue name="$RABBITMQ_ASYNC_QUEUE_NAME" durable=true +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$NOTIFICATION_QUEUE" arguments="$NOTIFICATION_QUEUE_BINDING_1_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$NOTIFICATION_QUEUE" arguments="$NOTIFICATION_QUEUE_BINDING_2_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$NOTIFICATION_QUEUE" arguments="$NOTIFICATION_QUEUE_BINDING_3_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$TRIGGER_QUEUE" arguments="$TRIGGER_QUEUE_BINDING_1_ARGUMENTS" +rabbitmqadmin declare binding source="$NOTIFICATION_EXCHANGE" destination_type=queue destination="$RABBITMQ_ASYNC_QUEUE_NAME" arguments="$ASYNC_QUEUE_BINDING_1_ARGUMENTS" +rabbitmqadmin declare exchange name="$RABBITMQ_FAULT_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_FAULT_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_FAULT_EXCHANGE_NAME" destination="$RABBITMQ_FAULT_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_ESTIMATION_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_ESTIMATION_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_ESTIMATION_EXCHANGE_NAME" destination="$RABBITMQ_ESTIMATION_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_TOPOLOGY_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_TOPOLOGY_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_TOPOLOGY_EXCHANGE_NAME" destination="$RABBITMQ_TOPOLOGY_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_EVENT_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_EVENT_CONSUMER_TAG" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_EVENT_EXCHANGE_NAME" destination="$RABBITMQ_EVENT_CONSUMER_TAG" destination_type=queue routing_key="" +rabbitmqadmin declare exchange name="$RABBITMQ_STAT_LABVIEW_EXCHANGE_NAME" type=headers durable=true auto_delete=false internal=false +rabbitmqadmin declare queue name="$RABBITMQ_STAT_LABVIEW_QUEUE_NAME" durable=true auto_delete=false +rabbitmqadmin declare binding source="$RABBITMQ_STAT_LABVIEW_EXCHANGE_NAME" destination="$RABBITMQ_STAT_LABVIEW_QUEUE_NAME" destination_type=queue routing_key="" + diff --git a/.docker/rabbitmq/rabbitmq.conf b/.docker/rabbitmq/rabbitmq.conf new file mode 100644 index 0000000..b018f9e --- /dev/null +++ b/.docker/rabbitmq/rabbitmq.conf @@ -0,0 +1,1131 @@ +## This example configuration file demonstrates various settings +## available via rabbitmq.conf. It primarily focuses core broker settings +## but some tier 1 plugin settings are also covered. +## +## This file is AN EXAMPLE. It is NOT MEANT TO BE USED IN PRODUCTION. Instead of +## copying the entire (large!) file, create or generate a new rabbitmq.conf for the target system +## and populate it with the necessary settings. +## +## See https://rabbitmq.com/configure.html to learn about how to configure RabbitMQ, +## the ini-style format used by rabbitmq.conf, how it is different from `advanced.config`, +## how to verify effective configuration, and so on. +## +## See https://rabbitmq.com/documentation.html for the rest of RabbitMQ documentation. +## +## In case you have questions, please use RabbitMQ community Slack and the rabbitmq-users Google group +## instead of GitHub issues. + +# ====================================== +# Core broker section +# ====================================== + + +## Networking +## ==================== +##x +## Related doc guide: https://rabbitmq.com/networking.html. +## +## By default, RabbitMQ will listen on all interfaces, using +## the standard (reserved) AMQP 0-9-1 and 1.0 port. +## +# listeners.tcp.default = 5672 + + +## To listen on a specific interface, provide an IP address with port. +## For example, to listen only on localhost for both IPv4 and IPv6: +## +# IPv4 +# listeners.tcp.local = 127.0.0.1:5672 +# IPv6 +# listeners.tcp.local_v6 = ::1:5672 + +## You can define multiple listeners using listener names +# listeners.tcp.other_port = 5673 +# listeners.tcp.other_ip = 10.10.10.10:5672 + + +## TLS listeners are configured in the same fashion as TCP listeners, +## including the option to control the choice of interface. +## +# listeners.ssl.default = 5671 + +## It is possible to disable regular TCP (non-TLS) listeners. Clients +## not configured to use TLS and the correct TLS-enabled port won't be able +## to connect to this node. +# listeners.tcp = none + +## Number of Erlang processes that will accept connections for the TCP +## and TLS listeners. +## +# num_acceptors.tcp = 10 +# num_acceptors.ssl = 10 + +## Socket writer will force GC every so many bytes transferred. +## Default is 1 GiB (`1000000000`). Set to 'off' to disable. +## +# socket_writer.gc_threshold = 1000000000 +# +## To disable: +# socket_writer.gc_threshold = off + +## Maximum amount of time allowed for the AMQP 0-9-1 and AMQP 1.0 handshake +## (performed after socket connection and TLS handshake) to complete, in milliseconds. +## +# handshake_timeout = 10000 + +## Set to 'true' to perform reverse DNS lookups when accepting a +## connection. rabbitmqctl and management UI will then display hostnames +## instead of IP addresses. Default value is `false`. +## +# reverse_dns_lookups = false + +## +## Security, Access Control +## ============== +## + +## Related doc guide: https://rabbitmq.com/access-control.html. + +## The default "guest" user is only permitted to access the server +## via a loopback interface (e.g. localhost). +## {loopback_users, [<<"guest">>]}, +## +# loopback_users.guest = true + +## Uncomment the following line if you want to allow access to the +## guest user from anywhere on the network. +# loopback_users.guest = false + +## TLS configuration. +## +## Related doc guide: https://rabbitmq.com/ssl.html. +## +# listeners.ssl.1 = 5671 +# +# ssl_options.verify = verify_peer +# ssl_options.fail_if_no_peer_cert = false +# ssl_options.cacertfile = /path/to/cacert.pem +# ssl_options.certfile = /path/to/cert.pem +# ssl_options.keyfile = /path/to/key.pem +# +# ssl_options.honor_cipher_order = true +# ssl_options.honor_ecc_order = true +# +## These are highly recommended for TLSv1.2 but cannot be used +## with TLSv1.3. If TLSv1.3 is enabled, these lines MUST be removed. +# ssl_options.client_renegotiation = false +# ssl_options.secure_renegotiate = true +# +## Limits what TLS versions the server enables for client TLS +## connections. See https://www.rabbitmq.com/ssl.html#tls-versions for details. +## +## Cutting edge TLS version which requires recent client runtime +## versions and has no cipher suite in common with earlier TLS versions. +# ssl_options.versions.1 = tlsv1.3 +## Enables TLSv1.2 for best compatibility +# ssl_options.versions.2 = tlsv1.2 +## Older TLS versions have known vulnerabilities and are being phased out +## from wide use. + +## Limits what cipher suites the server will use for client TLS +## connections. Narrowing this down can prevent some clients +## from connecting. +## If TLSv1.3 is enabled and cipher suites are overridden, TLSv1.3-specific +## cipher suites must also be explicitly enabled. +## See https://www.rabbitmq.com/ssl.html#cipher-suites and https://wiki.openssl.org/index.php/TLS1.3#Ciphersuites +## for details. +# +## The example below uses TLSv1.3 cipher suites only +# +# ssl_options.ciphers.1 = TLS_AES_256_GCM_SHA384 +# ssl_options.ciphers.2 = TLS_AES_128_GCM_SHA256 +# ssl_options.ciphers.3 = TLS_CHACHA20_POLY1305_SHA256 +# ssl_options.ciphers.4 = TLS_AES_128_CCM_SHA256 +# ssl_options.ciphers.5 = TLS_AES_128_CCM_8_SHA256 +# +## The example below uses TLSv1.2 cipher suites only +# +# ssl_options.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384 +# ssl_options.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384 +# ssl_options.ciphers.3 = ECDHE-ECDSA-AES256-SHA384 +# ssl_options.ciphers.4 = ECDHE-RSA-AES256-SHA384 +# ssl_options.ciphers.5 = ECDH-ECDSA-AES256-GCM-SHA384 +# ssl_options.ciphers.6 = ECDH-RSA-AES256-GCM-SHA384 +# ssl_options.ciphers.7 = ECDH-ECDSA-AES256-SHA384 +# ssl_options.ciphers.8 = ECDH-RSA-AES256-SHA384 +# ssl_options.ciphers.9 = DHE-RSA-AES256-GCM-SHA384 +# ssl_options.ciphers.10 = DHE-DSS-AES256-GCM-SHA384 +# ssl_options.ciphers.11 = DHE-RSA-AES256-SHA256 +# ssl_options.ciphers.12 = DHE-DSS-AES256-SHA256 +# ssl_options.ciphers.13 = ECDHE-ECDSA-AES128-GCM-SHA256 +# ssl_options.ciphers.14 = ECDHE-RSA-AES128-GCM-SHA256 +# ssl_options.ciphers.15 = ECDHE-ECDSA-AES128-SHA256 +# ssl_options.ciphers.16 = ECDHE-RSA-AES128-SHA256 +# ssl_options.ciphers.17 = ECDH-ECDSA-AES128-GCM-SHA256 +# ssl_options.ciphers.18 = ECDH-RSA-AES128-GCM-SHA256 +# ssl_options.ciphers.19 = ECDH-ECDSA-AES128-SHA256 +# ssl_options.ciphers.20 = ECDH-RSA-AES128-SHA256 +# ssl_options.ciphers.21 = DHE-RSA-AES128-GCM-SHA256 +# ssl_options.ciphers.22 = DHE-DSS-AES128-GCM-SHA256 +# ssl_options.ciphers.23 = DHE-RSA-AES128-SHA256 +# ssl_options.ciphers.24 = DHE-DSS-AES128-SHA256 +# ssl_options.ciphers.25 = ECDHE-ECDSA-AES256-SHA +# ssl_options.ciphers.26 = ECDHE-RSA-AES256-SHA +# ssl_options.ciphers.27 = DHE-RSA-AES256-SHA +# ssl_options.ciphers.28 = DHE-DSS-AES256-SHA +# ssl_options.ciphers.29 = ECDH-ECDSA-AES256-SHA +# ssl_options.ciphers.30 = ECDH-RSA-AES256-SHA +# ssl_options.ciphers.31 = ECDHE-ECDSA-AES128-SHA +# ssl_options.ciphers.32 = ECDHE-RSA-AES128-SHA +# ssl_options.ciphers.33 = DHE-RSA-AES128-SHA +# ssl_options.ciphers.34 = DHE-DSS-AES128-SHA +# ssl_options.ciphers.35 = ECDH-ECDSA-AES128-SHA +# ssl_options.ciphers.36 = ECDH-RSA-AES128-SHA + +# ssl_options.bypass_pem_cache = true + +## Select an authentication/authorisation backend to use. +## +## Alternative backends are provided by plugins, such as rabbitmq-auth-backend-ldap. +## +## NB: These settings require certain plugins to be enabled. +## +## Related doc guides: +## +## * https://rabbitmq.com/plugins.html +## * https://rabbitmq.com/access-control.html +## + +# auth_backends.1 = rabbit_auth_backend_internal + +## uses separate backends for authentication and authorisation, +## see below. +# auth_backends.1.authn = rabbit_auth_backend_ldap +# auth_backends.1.authz = rabbit_auth_backend_internal + +## The rabbitmq_auth_backend_ldap plugin allows the broker to +## perform authentication and authorisation by deferring to an +## external LDAP server. +## +## Relevant doc guides: +## +## * https://rabbitmq.com/ldap.html +## * https://rabbitmq.com/access-control.html +## +## uses LDAP for both authentication and authorisation +# auth_backends.1 = rabbit_auth_backend_ldap + +## uses HTTP service for both authentication and +## authorisation +# auth_backends.1 = rabbit_auth_backend_http + +## uses two backends in a chain: HTTP first, then internal +# auth_backends.1 = rabbit_auth_backend_http +# auth_backends.2 = rabbit_auth_backend_internal + +## Authentication +## The built-in mechanisms are 'PLAIN', +## 'AMQPLAIN', and 'EXTERNAL' Additional mechanisms can be added via +## plugins. +## +## Related doc guide: https://rabbitmq.com/authentication.html. +## +# auth_mechanisms.1 = PLAIN +# auth_mechanisms.2 = AMQPLAIN + +## The rabbitmq-auth-mechanism-ssl plugin makes it possible to +## authenticate a user based on the client's x509 (TLS) certificate. +## Related doc guide: https://rabbitmq.com/authentication.html. +## +## To use auth-mechanism-ssl, the EXTERNAL mechanism should +## be enabled: +## +# auth_mechanisms.1 = PLAIN +# auth_mechanisms.2 = AMQPLAIN +# auth_mechanisms.3 = EXTERNAL + +## To force x509 certificate-based authentication on all clients, +## exclude all other mechanisms (note: this will disable password-based +## authentication even for the management UI!): +## +# auth_mechanisms.1 = EXTERNAL + +## This pertains to both the rabbitmq-auth-mechanism-ssl plugin and +## STOMP ssl_cert_login configurations. See the RabbitMQ STOMP plugin +## configuration section later in this file and the README in +## https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl for further +## details. +## +## To use the TLS cert's CN instead of its DN as the username +## +# ssl_cert_login_from = common_name + +## TLS handshake timeout, in milliseconds. +## +# ssl_handshake_timeout = 5000 + + +## +## Loading Definitions +## ==================== +## +## Relevant documentation: https://www.rabbitmq.com/definitions.html#import-on-boot +## +## To import definitions from a local file on node boot, set the +## load_definitions config key to a path of a previously exported +## JSON file with definitions. Does not require management plugin +## to be enabled. +## +# load_definitions = /path/to/definitions/file.json + + +## +## Cluster name +## ==================== +## +# cluster_name = dev3.eng.megacorp.local + +## Password hashing implementation. Will only affect newly +## created users. To recalculate hash for an existing user +## it's necessary to update her password. +## +## To use SHA-512, set to rabbit_password_hashing_sha512. +## +# password_hashing_module = rabbit_password_hashing_sha256 + +## When importing definitions exported from versions earlier +## than 3.6.0, it is possible to go back to MD5 (only do this +## as a temporary measure!) by setting this to rabbit_password_hashing_md5. +## +# password_hashing_module = rabbit_password_hashing_md5 + +## +## Default User / VHost +## ==================== +## + +## On first start RabbitMQ will create a vhost and a user. These +## config items control what gets created. +## Relevant doc guide: https://rabbitmq.com/access-control.html +## +# default_vhost = / +# default_user = guest +# default_pass = guest + +# default_permissions.configure = .* +# default_permissions.read = .* +# default_permissions.write = .* + +## Tags for default user +## +## For more details about tags, see the documentation for the +## Management Plugin at https://rabbitmq.com/management.html. +## +# default_user_tags.administrator = true + +## Define other tags like this: +# default_user_tags.management = true +# default_user_tags.custom_tag = true + +## +## Additional network and protocol related configuration +## ===================================================== +## + +## Set the server AMQP 0-9-1 heartbeat timeout in seconds. +## RabbitMQ nodes will send heartbeat frames at roughly +## the (timeout / 2) interval. Two missed heartbeats from +## a client will close its connection. +## +## Values lower than 6 seconds are very likely to produce +## false positives and are not recommended. +## +## Related doc guides: +## +## * https://rabbitmq.com/heartbeats.html +## * https://rabbitmq.com/networking.html +## +# heartbeat = 60 + +## Set the max permissible size of an AMQP frame (in bytes). +## +# frame_max = 131072 + +## Set the max frame size the server will accept before connection +## tuning occurs +## +# initial_frame_max = 4096 + +## Set the max permissible number of channels per connection. +## 0 means "no limit". +## +# channel_max = 128 + +## Customising TCP Listener (Socket) Configuration. +## +## Related doc guides: +## +## * https://rabbitmq.com/networking.html +## * https://www.erlang.org/doc/man/inet.html#setopts-2 +## + +# tcp_listen_options.backlog = 128 +# tcp_listen_options.nodelay = true +# tcp_listen_options.exit_on_close = false +# +# tcp_listen_options.keepalive = true +# tcp_listen_options.send_timeout = 15000 +# +# tcp_listen_options.buffer = 196608 +# tcp_listen_options.sndbuf = 196608 +# tcp_listen_options.recbuf = 196608 + +## +## Resource Limits & Flow Control +## ============================== +## +## Related doc guide: https://rabbitmq.com/memory.html. + +## Memory-based Flow Control threshold. +## +# vm_memory_high_watermark.relative = 0.4 + +## Alternatively, we can set a limit (in bytes) of RAM used by the node. +## +# vm_memory_high_watermark.absolute = 1073741824 + +## Or you can set absolute value using memory units (with RabbitMQ 3.6.0+). +## Absolute watermark will be ignored if relative is defined! +## +# vm_memory_high_watermark.absolute = 2GB +## +## Supported unit symbols: +## +## k, kiB: kibibytes (2^10 - 1,024 bytes) +## M, MiB: mebibytes (2^20 - 1,048,576 bytes) +## G, GiB: gibibytes (2^30 - 1,073,741,824 bytes) +## kB: kilobytes (10^3 - 1,000 bytes) +## MB: megabytes (10^6 - 1,000,000 bytes) +## GB: gigabytes (10^9 - 1,000,000,000 bytes) + + + +## Fraction of the high watermark limit at which queues start to +## page message out to disc in order to free up memory. +## For example, when vm_memory_high_watermark is set to 0.4 and this value is set to 0.5, +## paging can begin as early as when 20% of total available RAM is used by the node. +## +## Values greater than 1.0 can be dangerous and should be used carefully. +## +## One alternative to this is to use durable queues and publish messages +## as persistent (delivery mode = 2). With this combination queues will +## move messages to disk much more rapidly. +## +## Another alternative is to configure queues to page all messages (both +## persistent and transient) to disk as quickly +## as possible, see https://rabbitmq.com/lazy-queues.html. +## +# vm_memory_high_watermark_paging_ratio = 0.5 + +## Selects Erlang VM memory consumption calculation strategy. Can be `allocated`, `rss` or `legacy` (aliased as `erlang`), +## Introduced in 3.6.11. `rss` is the default as of 3.6.12. +## See https://github.com/rabbitmq/rabbitmq-server/issues/1223 and rabbitmq/rabbitmq-common#224 for background. +# vm_memory_calculation_strategy = rss + +## Interval (in milliseconds) at which we perform the check of the memory +## levels against the watermarks. +## +# memory_monitor_interval = 2500 + +## The total memory available can be calculated from the OS resources +## - default option - or provided as a configuration parameter. +# total_memory_available_override_value = 2GB + +## Set disk free limit (in bytes). Once free disk space reaches this +## lower bound, a disk alarm will be set - see the documentation +## listed above for more details. +## +## Absolute watermark will be ignored if relative is defined! +# disk_free_limit.absolute = 50000 + +## Or you can set it using memory units (same as in vm_memory_high_watermark) +## with RabbitMQ 3.6.0+. +# disk_free_limit.absolute = 500KB +# disk_free_limit.absolute = 50mb +# disk_free_limit.absolute = 5GB + +## Alternatively, we can set a limit relative to total available RAM. +## +## Values lower than 1.0 can be dangerous and should be used carefully. +# disk_free_limit.relative = 2.0 + +## +## Clustering +## ===================== +## +# cluster_partition_handling = ignore + +## Pauses all nodes on the minority side of a partition. The cluster +## MUST have an odd number of nodes (3, 5, etc) +# cluster_partition_handling = pause_minority + +## pause_if_all_down strategy require additional configuration +# cluster_partition_handling = pause_if_all_down + +## Recover strategy. Can be either 'autoheal' or 'ignore' +# cluster_partition_handling.pause_if_all_down.recover = ignore + +## Node names to check +# cluster_partition_handling.pause_if_all_down.nodes.1 = rabbit@localhost +# cluster_partition_handling.pause_if_all_down.nodes.2 = hare@localhost + +## Mirror sync batch size, in messages. Increasing this will speed +## up syncing but total batch size in bytes must not exceed 2 GiB. +## Available in RabbitMQ 3.6.0 or later. +## +# mirroring_sync_batch_size = 4096 + +## Make clustering happen *automatically* at startup. Only applied +## to nodes that have just been reset or started for the first time. +## +## Relevant doc guide: https://rabbitmq.com//cluster-formation.html +## + +# cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config +# +# cluster_formation.classic_config.nodes.1 = rabbit1@hostname +# cluster_formation.classic_config.nodes.2 = rabbit2@hostname +# cluster_formation.classic_config.nodes.3 = rabbit3@hostname +# cluster_formation.classic_config.nodes.4 = rabbit4@hostname + +## DNS-based peer discovery. This backend will list A records +## of the configured hostname and perform reverse lookups for +## the addresses returned. + +# cluster_formation.peer_discovery_backend = rabbit_peer_discovery_dns +# cluster_formation.dns.hostname = discovery.eng.example.local + +## This node's type can be configured. If you are not sure +## what node type to use, always use 'disc'. +# cluster_formation.node_type = disc + +## Interval (in milliseconds) at which we send keepalive messages +## to other cluster members. Note that this is not the same thing +## as net_ticktime; missed keepalive messages will not cause nodes +## to be considered down. +## +# cluster_keepalive_interval = 10000 + +## +## Statistics Collection +## ===================== +## + +## Statistics collection interval (in milliseconds). Increasing +## this will reduce the load on management database. +## +# collect_statistics_interval = 5000 + +## Fine vs. coarse statistics +# +# This value is no longer meant to be configured directly. +# +# See https://www.rabbitmq.com/management.html#fine-stats. + +## +## Ra Settings +## ===================== +## +# raft.segment_max_entries = 65536 +# raft.wal_max_size_bytes = 1048576 +# raft.wal_max_batch_size = 4096 +# raft.snapshot_chunk_size = 1000000 + +## +## Misc/Advanced Options +## ===================== +## +## NB: Change these only if you understand what you are doing! +## + +## To permit or deny a deprecated feature when it is in its +## `permitted_by_default` or `denied_by_default` deprecation phase, the +## default state can be overriden from the configuration. +## +## When a deprecated feature is permitted by default (first phase of the +## deprecation period), it means the feature is available by default and can +## be turned off by setting it to false in the configuration. +## +## When a deprecated feature is denied by default (second phase of the +## deprecation period), it means the feature is unavailable by default but can +## be turned back on by setting it to true in the configuration. +## +## When a deprecated feature is "disconnected" or "removed" (last two phases +## of the deprecation period), it is no longer possible to turn it back on +## from the configuration. +## +# deprecated_features.permit.a_deprecated_feature = true +# deprecated_features.permit.another_deprecated_feature = false + +## Timeout used when waiting for Mnesia tables in a cluster to +## become available. +## +# mnesia_table_loading_retry_timeout = 30000 + +## Retries when waiting for Mnesia tables in the cluster startup. Note that +## this setting is not applied to Mnesia upgrades or node deletions. +## +# mnesia_table_loading_retry_limit = 10 + +## Size in bytes below which to embed messages in the queue index. +## Related doc guide: https://rabbitmq.com/persistence-conf.html +## +# queue_index_embed_msgs_below = 4096 + +## You can also set this size in memory units +## +# queue_index_embed_msgs_below = 4kb + +## Whether or not to enable background periodic forced GC runs for all +## Erlang processes on the node in "waiting" state. +## +## Disabling background GC may reduce latency for client operations, +## keeping it enabled may reduce median RAM usage by the binary heap +## (see https://www.erlang-solutions.com/blog/erlang-garbage-collector.html). +## +## Before trying this option, please take a look at the memory +## breakdown (https://www.rabbitmq.com/memory-use.html). +## +# background_gc_enabled = false + +## Target (desired) interval (in milliseconds) at which we run background GC. +## The actual interval will vary depending on how long it takes to execute +## the operation (can be higher than this interval). Values less than +## 30000 milliseconds are not recommended. +## +# background_gc_target_interval = 60000 + +## Whether or not to enable proxy protocol support. +## Once enabled, clients cannot directly connect to the broker +## anymore. They must connect through a load balancer that sends the +## proxy protocol header to the broker at connection time. +## This setting applies only to AMQP clients, other protocols +## like MQTT or STOMP have their own setting to enable proxy protocol. +## See the plugins documentation for more information. +## +# proxy_protocol = false + +## Overriden product name and version. +## They are set to "RabbitMQ" and the release version by default. +# product.name = RabbitMQ +# product.version = 1.2.3 + +## "Message of the day" file. +## Its content is used to expand the logged and printed banners. +## Default to /etc/rabbitmq/motd on Unix, %APPDATA%\RabbitMQ\motd.txt +## on Windows. +# motd_file = /etc/rabbitmq/motd + +## Consumer timeout +## If a message delivered to a consumer has not been acknowledge before this timer +## triggers the channel will be force closed by the broker. This ensure that +## faultly consumers that never ack will not hold on to messages indefinitely. +## +# consumer_timeout = 900000 + +## ---------------------------------------------------------------------------- +## Advanced Erlang Networking/Clustering Options. +## +## Related doc guide: https://rabbitmq.com/clustering.html +## ---------------------------------------------------------------------------- + +# ====================================== +# Kernel section +# ====================================== + +## Timeout used to detect peer unavailability, including CLI tools. +## Related doc guide: https://www.rabbitmq.com/nettick.html. +## +# net_ticktime = 60 + +## Inter-node communication port range. +## The parameters inet_dist_listen_min and inet_dist_listen_max +## can be configured in the classic config format only. +## Related doc guide: https://www.rabbitmq.com/networking.html#epmd-inet-dist-port-range. + + +## ---------------------------------------------------------------------------- +## RabbitMQ Management Plugin +## +## Related doc guide: https://rabbitmq.com/management.html. +## ---------------------------------------------------------------------------- + +# ======================================= +# Management section +# ======================================= + +## Preload schema definitions from the following JSON file. +## Related doc guide: https://rabbitmq.com/management.html#load-definitions. +## +# management.load_definitions = /path/to/exported/definitions.json + +## Log all requests to the management HTTP API to a file. +## +# management.http_log_dir = /path/to/access.log + +## HTTP listener and embedded Web server settings. +# ## See https://rabbitmq.com/management.html for details. +# +# management.tcp.port = 15672 +# management.tcp.ip = 0.0.0.0 +# +# management.tcp.shutdown_timeout = 7000 +# management.tcp.max_keepalive = 120 +# management.tcp.idle_timeout = 120 +# management.tcp.inactivity_timeout = 120 +# management.tcp.request_timeout = 120 +# management.tcp.compress = true + +## HTTPS listener settings. +## See https://rabbitmq.com/management.html and https://rabbitmq.com/ssl.html for details. +## +# management.ssl.port = 15671 +# management.ssl.cacertfile = /path/to/ca_certificate.pem +# management.ssl.certfile = /path/to/server_certificate.pem +# management.ssl.keyfile = /path/to/server_key.pem + +## More TLS options +# management.ssl.honor_cipher_order = true +# management.ssl.honor_ecc_order = true + +## These are highly recommended for TLSv1.2 but cannot be used +## with TLSv1.3. If TLSv1.3 is enabled, these lines MUST be removed. +# management.ssl.client_renegotiation = false +# management.ssl.secure_renegotiate = true + +## Supported TLS versions +# management.ssl.versions.1 = tlsv1.2 + +## Cipher suites the server is allowed to use +# management.ssl.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384 +# management.ssl.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384 +# management.ssl.ciphers.3 = ECDHE-ECDSA-AES256-SHA384 +# management.ssl.ciphers.4 = ECDHE-RSA-AES256-SHA384 +# management.ssl.ciphers.5 = ECDH-ECDSA-AES256-GCM-SHA384 +# management.ssl.ciphers.6 = ECDH-RSA-AES256-GCM-SHA384 +# management.ssl.ciphers.7 = ECDH-ECDSA-AES256-SHA384 +# management.ssl.ciphers.8 = ECDH-RSA-AES256-SHA384 +# management.ssl.ciphers.9 = DHE-RSA-AES256-GCM-SHA384 + +## URL path prefix for HTTP API and management UI +# management.path_prefix = /a-prefix + +## One of 'basic', 'detailed' or 'none'. See +## https://rabbitmq.com/management.html#fine-stats for more details. +# management.rates_mode = basic + +## Configure how long aggregated data (such as message rates and queue +## lengths) is retained. Please read the plugin's documentation in +## https://rabbitmq.com/management.html#configuration for more +## details. +## Your can use 'minute', 'hour' and 'day' keys or integer key (in seconds) +# management.sample_retention_policies.global.minute = 5 +# management.sample_retention_policies.global.hour = 60 +# management.sample_retention_policies.global.day = 1200 + +# management.sample_retention_policies.basic.minute = 5 +# management.sample_retention_policies.basic.hour = 60 + +# management.sample_retention_policies.detailed.10 = 5 + +## ---------------------------------------------------------------------------- +## RabbitMQ Shovel Plugin +## +## Related doc guide: https://rabbitmq.com/shovel.html +## ---------------------------------------------------------------------------- + +## See advanced.config.example for a Shovel plugin example + + +## ---------------------------------------------------------------------------- +## RabbitMQ STOMP Plugin +## +## Related doc guide: https://rabbitmq.com/stomp.html +## ---------------------------------------------------------------------------- + +# ======================================= +# STOMP section +# ======================================= + +## See https://rabbitmq.com/stomp.html for details. + +## TCP listeners. +## +# stomp.listeners.tcp.1 = 127.0.0.1:61613 +# stomp.listeners.tcp.2 = ::1:61613 + +## TCP listener settings +## +# stomp.tcp_listen_options.backlog = 2048 +# stomp.tcp_listen_options.recbuf = 131072 +# stomp.tcp_listen_options.sndbuf = 131072 +# +# stomp.tcp_listen_options.keepalive = true +# stomp.tcp_listen_options.nodelay = true +# +# stomp.tcp_listen_options.exit_on_close = true +# stomp.tcp_listen_options.send_timeout = 120000 + +## Proxy protocol support +## +# stomp.proxy_protocol = false + +## TLS listeners +## See https://rabbitmq.com/stomp.html and https://rabbitmq.com/ssl.html for details. +# stomp.listeners.ssl.default = 61614 +# +# ssl_options.cacertfile = path/to/cacert.pem +# ssl_options.certfile = path/to/cert.pem +# ssl_options.keyfile = path/to/key.pem +# ssl_options.verify = verify_peer +# ssl_options.fail_if_no_peer_cert = true + + +## Number of Erlang processes that will accept connections for the TCP +## and TLS listeners. +## +# stomp.num_acceptors.tcp = 10 +# stomp.num_acceptors.ssl = 1 + +## Additional TLS options + +## Extract a name from the client's certificate when using TLS. +## +# stomp.ssl_cert_login = true + +## Set a default user name and password. This is used as the default login +## whenever a CONNECT frame omits the login and passcode headers. +## +## Please note that setting this will allow clients to connect without +## authenticating! +## +# stomp.default_user = guest +# stomp.default_pass = guest + +## If a default user is configured, or you have configured use TLS client +## certificate based authentication, you can choose to allow clients to +## omit the CONNECT frame entirely. If set to true, the client is +## automatically connected as the default user or user supplied in the +## TLS certificate whenever the first frame sent on a session is not a +## CONNECT frame. +## +# stomp.implicit_connect = true + +## Whether or not to enable proxy protocol support. +## Once enabled, clients cannot directly connect to the broker +## anymore. They must connect through a load balancer that sends the +## proxy protocol header to the broker at connection time. +## This setting applies only to STOMP clients, other protocols +## like MQTT or AMQP have their own setting to enable proxy protocol. +## See the plugins or broker documentation for more information. +## +# stomp.proxy_protocol = false + +## ---------------------------------------------------------------------------- +## RabbitMQ MQTT Adapter +## +## See https://github.com/rabbitmq/rabbitmq-mqtt/blob/stable/README.md +## for details +## ---------------------------------------------------------------------------- + +# ======================================= +# MQTT section +# ======================================= + +## TCP listener settings. +## +# mqtt.listeners.tcp.1 = 127.0.0.1:61613 +# mqtt.listeners.tcp.2 = ::1:61613 + +## TCP listener options (as per the broker configuration). +## +# mqtt.tcp_listen_options.backlog = 4096 +# mqtt.tcp_listen_options.recbuf = 131072 +# mqtt.tcp_listen_options.sndbuf = 131072 +# +# mqtt.tcp_listen_options.keepalive = true +# mqtt.tcp_listen_options.nodelay = true +# +# mqtt.tcp_listen_options.exit_on_close = true +# mqtt.tcp_listen_options.send_timeout = 120000 + +## TLS listener settings +## ## See https://rabbitmq.com/mqtt.html and https://rabbitmq.com/ssl.html for details. +# +# mqtt.listeners.ssl.default = 8883 +# +# ssl_options.cacertfile = /path/to/tls/ca_certificate_bundle.pem +# ssl_options.certfile = /path/to/tls/server_certificate.pem +# ssl_options.keyfile = /path/to/tls/server_key.pem +# ssl_options.verify = verify_peer +# ssl_options.fail_if_no_peer_cert = true +# + + +## Number of Erlang processes that will accept connections for the TCP +## and TLS listeners. +## +# mqtt.num_acceptors.tcp = 10 +# mqtt.num_acceptors.ssl = 10 + +## Whether or not to enable proxy protocol support. +## Once enabled, clients cannot directly connect to the broker +## anymore. They must connect through a load balancer that sends the +## proxy protocol header to the broker at connection time. +## This setting applies only to STOMP clients, other protocols +## like STOMP or AMQP have their own setting to enable proxy protocol. +## See the plugins or broker documentation for more information. +## +# mqtt.proxy_protocol = false + +## Set the default user name and password used for anonymous connections (when client +## provides no credentials). Anonymous connections are highly discouraged! +## +# mqtt.default_user = guest +# mqtt.default_pass = guest + +## Enable anonymous connections. If this is set to false, clients MUST provide +## credentials in order to connect. See also the mqtt.default_user/mqtt.default_pass +## keys. Anonymous connections are highly discouraged! +## +# mqtt.allow_anonymous = true + +## If you have multiple vhosts, specify the one to which the +## adapter connects. +## +# mqtt.vhost = / + +## Specify the exchange to which messages from MQTT clients are published. +## +# mqtt.exchange = amq.topic + +## Define the maximum Session Expiry Interval in seconds allowed by the server. +## 'infinity' means the session does not expire. +## An MQTT 5.0 client can choose a lower value. +## +# mqtt.max_session_expiry_interval_seconds = 1800 + +## Set the prefetch count (governing the maximum number of unacknowledged +## messages that will be delivered). +## +# mqtt.prefetch = 10 + +## Sets the durable queue type to be used for QoS 1 subscriptions. +## +## Supported types are: +## +## * classic +## * quorum +## +## IMPORTANT: changing this setting requires all existing queues used by +## the MQTT plugin to be DELETED or clients will fail to subscribe. +## So this setting should be used for new clusters. +## +# mqtt.durable_queue_type = classic + + + +## ---------------------------------------------------------------------------- +## RabbitMQ AMQP 1.0 Support +## +## See https://github.com/rabbitmq/rabbitmq-amqp1.0/blob/stable/README.md. +## ---------------------------------------------------------------------------- + +# ======================================= +# AMQP 1.0 section +# ======================================= + + +## Connections that are not authenticated with SASL will connect as this +## account. See the README for more information. +## +## Please note that setting this will allow clients to connect without +## authenticating! +## +# amqp1_0.default_user = guest + +## Enable protocol strict mode. See the README for more information. +## +# amqp1_0.protocol_strict_mode = false + +## Logging settings. +## +## See https://rabbitmq.com/logging.html for details. +## + +## Log directory, taken from the RABBITMQ_LOG_BASE env variable by default. +## +# log.dir = /var/log/rabbitmq + +## Logging to file. Can be false or a filename. +## Default: +# log.file = rabbit.log + +## To disable logging to a file +# log.file = false + +## Log level for file logging +## +# log.file.level = info + +## File rotation config. No rotation by default. +## DO NOT SET rotation date to ''. Leave the value unset if "" is the desired value +# log.file.rotation.date = $D0 +# log.file.rotation.size = 0 + +## Logging to console (can be true or false) +## +# log.console = false + +## Log level for console logging +## +# log.console.level = info + +## Logging to the amq.rabbitmq.log exchange (can be true or false) +## +# log.exchange = false + +## Log level to use when logging to the amq.rabbitmq.log exchange +## +# log.exchange.level = info + + + +## ---------------------------------------------------------------------------- +## RabbitMQ LDAP Plugin +## +## Related doc guide: https://rabbitmq.com/ldap.html. +## +## ---------------------------------------------------------------------------- + +# ======================================= +# LDAP section +# ======================================= + +## +## Connecting to the LDAP server(s) +## ================================ +## + +## Specify servers to bind to. You *must* set this in order for the plugin +## to work properly. +## +# auth_ldap.servers.1 = your-server-name-goes-here + +## You can define multiple servers +# auth_ldap.servers.2 = your-other-server + +## Connect to the LDAP server using TLS +## +# auth_ldap.use_ssl = false + +## Specify the LDAP port to connect to +## +# auth_ldap.port = 389 + +## LDAP connection timeout, in milliseconds or 'infinity' +## +# auth_ldap.timeout = infinity + +## Or number +# auth_ldap.timeout = 500 + +## Enable logging of LDAP queries. +## One of +## - false (no logging is performed) +## - true (verbose logging of the logic used by the plugin) +## - network (as true, but additionally logs LDAP network traffic) +## +## Defaults to false. +## +# auth_ldap.log = false + +## Also can be true or network +# auth_ldap.log = true +# auth_ldap.log = network + +## +## Authentication +## ============== +## + +## Pattern to convert the username given through AMQP to a DN before +## binding +## +# auth_ldap.user_dn_pattern = cn=${username},ou=People,dc=example,dc=com + +## Alternatively, you can convert a username to a Distinguished +## Name via an LDAP lookup after binding. See the documentation for +## full details. + +## When converting a username to a dn via a lookup, set these to +## the name of the attribute that represents the user name, and the +## base DN for the lookup query. +## +# auth_ldap.dn_lookup_attribute = userPrincipalName +# auth_ldap.dn_lookup_base = DC=gopivotal,DC=com + +## Controls how to bind for authorisation queries and also to +## retrieve the details of users logging in without presenting a +## password (e.g., SASL EXTERNAL). +## One of +## - as_user (to bind as the authenticated user - requires a password) +## - anon (to bind anonymously) +## - {UserDN, Password} (to bind with a specified user name and password) +## +## Defaults to 'as_user'. +## +# auth_ldap.other_bind = as_user + +## Or can be more complex: +# auth_ldap.other_bind.user_dn = User +# auth_ldap.other_bind.password = Password + +## If user_dn and password defined - other options is ignored. + +# ----------------------------- +# Too complex section of LDAP +# ----------------------------- + +## +## Authorisation +## ============= +## + +## The LDAP plugin can perform a variety of queries against your +## LDAP server to determine questions of authorisation. +## +## Related doc guide: https://rabbitmq.com/ldap.html#authorisation. + +## Following configuration should be defined in advanced.config file +## DO NOT UNCOMMENT THESE LINES! + +## Set the query to use when determining vhost access +## +## {vhost_access_query, {in_group, +## "ou=${vhost}-users,ou=vhosts,dc=example,dc=com"}}, + +## Set the query to use when determining resource (e.g., queue) access +## +## {resource_access_query, {constant, true}}, + +## Set queries to determine which tags a user has +## +## {tag_queries, []} +# ]}, +# ----------------------------- + +# stream +stream.initial_credits = 100000 +stream.credits_required_for_unblocking = 25000 +stream.frame_max = 2097152 \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..608d3c6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${fileDirname}" + } + ] +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..eab6034 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# CONTRIBUTING + +If you have never made an open source contribution before, here it's a quick +guide: + +1. Find an issue that you are interested in addressing or a feature that you would like to add. +1. Fork the repository associated with the issue to your local GitHub organization. This means that you will have a copy of the repository under your-GitHub-username/repository-name. +1. Clone the repository to your local machine using `git clone https://github.com/github-username/repository-name.git`. +1. Create a new branch for your fix using `git checkout -b branch-name-here`. +1. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. +1. Use `git add insert-paths-of-changed-files-here` to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index. +1. Use `git commit -m "Insert a short message of the changes made here"` to store the contents of the index with a descriptive message. +1. Push the changes to the remote repository using `git push origin branch-name-here`. +1. Submit a pull request to the upstream repository. +1. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so *"Added more log outputting to resolve #4352"*. +1. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! +1. Wait for the pull request to be reviewed by a maintainer. +1. Make changes to the pull request if the reviewing maintainer recommends them. +1. Celebrate your success after your pull request is merged! diff --git a/Makefile b/Makefile index 25c6f13..f85e0f1 100644 --- a/Makefile +++ b/Makefile @@ -31,6 +31,24 @@ docs: proto-lint: buf lint +docker-compose: + docker compose -f .docker/docker-compose.yml up -d + +.PHONY: docker-start +docker-start: docker-compose sleep create-rabbit-defaults + +.PHONY: docker-stop +docker-stop: + docker compose -f .docker/docker-compose.yml down -v + +.PHONY: sleep +sleep: + sleep 10 + +.PHONY: create-rabbit-defaults +create-rabbit-defaults: + docker exec rabbitmq ./init.sh + # Mandatory ci-test: cov # Mandatory if benchmark enabled diff --git a/README.md b/README.md index 4c0dc4d..ba64ddc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# SynchroGuard's Protocol Buffers +# SynchroGuard's Protocol Buffer Messages In SynchroGuard, real-time data exchange relies on protocol buffer messages exchanged over [RabbitMQ](https://www.rabbitmq.com/). Thus, consuming and/or @@ -8,7 +8,7 @@ integrate third parties with SynchroGuard for real-time data exchange. This repository includes the [Protocol Buffer](https://protobuf.dev/) used in Zaphiro's platform and the generated code for GO and Python. -## Available Protocol Buffer +## Available Protocol Buffer Messages At the time being this repository includes the following Protocol Buffer packages: @@ -56,15 +56,42 @@ Currently code is generated for: Installation was tested with poetry: ```bash -poetry add git+https://github.com/zaphiro-technologies/protobuf.git#v0.0.5 +poetry add git+https://github.com/zaphiro-technologies/protobuf.git#v0.0.7 ``` ### Go ```bash -go install github.com/zaphiro-technologies/protobuf/go@v0.0.5 +go get -v github.com/zaphiro-technologies/protobuf/go@v0.0.7 ``` +## Examples + +For your convenience, in the [examples](examples) folder we provide both for +Python and Go, code to: + +- Produce and consume measurements (uses RabbitMQ streams). +- Produce and consume faults (uses RabbitMQ exchanges). + +### Requirements + +- Python 3.12 or Golang 1.21 +- [Docker](https://docs.docker.com/get-docker/) + +### Produce and consume measurements + +#### Python + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the producer `make produce-measurements-python` +1. Launch the consumer `make consume-measurements-python` + +#### Go + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the producer `make produce-measurements-go` +1. Launch the consumer `make consume-measurements-go` + ## Contributing to Protocol Buffers Should you need to modify the protocol buffer message or add new ones, you will @@ -77,7 +104,9 @@ guides](https://protobuf.dev/programming-guides/dos-donts/). In particular, it is important - even more within the same version - to preserve compatibility, to avoid services breaking up. -## Requirements +You find contributing guidelines [here](CONTRIBUTING.md). + +### Requirements 1. [Golang](https://go.dev/doc/install) 1. [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/) diff --git a/examples/go/go.mod b/examples/go/go.mod new file mode 100644 index 0000000..53d6929 --- /dev/null +++ b/examples/go/go.mod @@ -0,0 +1,21 @@ +module github.com/zaphiro-technologies/protobuf/examples/go + +go 1.22.1 + +require ( + github.com/google/uuid v1.6.0 + github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 +) + +require google.golang.org/protobuf v1.34.2 + +require github.com/spaolacci/murmur3 v1.1.0 // indirect + +require ( + github.com/golang/snappy v0.0.4 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/zaphiro-technologies/protobuf v0.0.7 +) diff --git a/examples/go/go.sum b/examples/go/go.sum new file mode 100644 index 0000000..84a82d3 --- /dev/null +++ b/examples/go/go.sum @@ -0,0 +1,57 @@ +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 h1:pUa4ghanp6q4IJHwE9RwLgmVFfReJN+KbQ8ExNEUUoQ= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= +github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= +github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 h1:aStxoALHUFdUouWWtG6f82rW0VE6885q2SGLKGOCZ50= +github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6/go.mod h1:CDeYQ8E+cC96SWnkmdDc5NVEWjmtRBA9JAQrMG/y+MI= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/zaphiro-technologies/protobuf v0.0.7 h1:77G8EcuMQVdRoxPOxb5WUiLEg8uQkVlAx2GzxwGzCEo= +github.com/zaphiro-technologies/protobuf v0.0.7/go.mod h1:/CDMGG5KN/dWrdk0p6BPWKCvRasZYVIAzpamTDRTUQk= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/examples/go/measurements.go b/examples/go/measurements.go new file mode 100644 index 0000000..06027b1 --- /dev/null +++ b/examples/go/measurements.go @@ -0,0 +1,168 @@ +package main + +import ( + "bufio" + "fmt" + "math" + "os" + "time" + + "github.com/google/uuid" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream" + grid "github.com/zaphiro-technologies/protobuf/go/grid/v1" + "google.golang.org/protobuf/proto" +) + +func CheckErr(err error) { + if err != nil { + fmt.Printf("%s ", err) + os.Exit(1) + } +} + +func consumerClose(channelClose stream.ChannelClose) { + event := <-channelClose + fmt.Printf("Consumer: %s closed on the stream: %s, reason: %s \n", event.Name, event.StreamName, event.Reason) +} + +func generateDataID(pmuId int, nMeasures int) map[string]*grid.Data { + dataID := map[string]*grid.Data{} + for k := 0; k < nMeasures; k++ { + id := fmt.Sprintf("Dev%04d-%04d", pmuId, k) + dataTypeInt := 0 + switch { + case k < 1: + dataTypeInt = 13 + case k < 2: + dataTypeInt = 28 + case k < 4: + dataTypeInt = 21 + case k < 9: + dataTypeInt = 20 + case k < 11: + dataTypeInt = 44 + case k < 15: + dataTypeInt = 30 + case k < 18: + dataTypeInt = 31 + case k%2 == 0: + dataTypeInt = 43 + case k%2 == 1: + dataTypeInt = 44 + } + dataType := grid.DataType(dataTypeInt) + dataID[id] = &grid.Data{ + DataType: dataType, + Value: new(uint64), + MeasuredAt: time.Now().UnixMilli(), + } + } + return dataID +} + +func generatePmuDataID(nPmu int, nMeasures int) []*grid.DataSet { + pmuData := []*grid.DataSet{} + for k := 0; k < nPmu; k++ { + id := fmt.Sprintf("Dev%04d", k) + pmuData = append( + pmuData, + &grid.DataSet{ProducerId: id, Data: generateDataID(k, nMeasures)}, + ) + } + return pmuData +} + +func main() { + reader := bufio.NewReader(os.Stdin) + // Set log level, not mandatory by default is INFO + // you cn set DEBUG for more information + // stream.SetLevelInfo(logs.DEBUG) + + fmt.Println("Getting started with Streaming client for RabbitMQ") + fmt.Println("Connecting to RabbitMQ streaming ...") + + // Connect to the broker ( or brokers ) + + env, err := stream.NewEnvironment( + stream.NewEnvironmentOptions(). + SetHost("localhost"). + SetPort(5552). + SetUser("guest"). + SetPassword("guest")) + CheckErr(err) + + // The default stream for measurements in a prod set-up, you don't have to + // create it + + streamName := "measurements" + err = env.DeclareStream(streamName, + &stream.StreamOptions{ + MaxLengthBytes: stream.ByteCapacity{}.GB(2), + }, + ) + + CheckErr(err) + + // Get a new producer for a stream + producer, err := env.NewProducer(streamName, nil) + CheckErr(err) + + // the send method automatically aggregates the messages + // based on batch size + for i := 0; i < 10; i++ { + data := generatePmuDataID(1, 10)[0] + buf, _ := proto.Marshal(data) + message := amqp.NewMessage(buf) + messageProperties := make(map[string]interface{}) + messageProperties["Id"] = uuid.New().String() + messageProperties["type"] = "DataSet" + messageProperties["timestampId"] = int64(math.Round(float64(time.Now().UnixMilli())/20) * 20) + messageProperties["producerId"] = data.GetProducerId() + message.ApplicationProperties = messageProperties + err := producer.Send(message) + CheckErr(err) + } + + // this sleep is not mandatory, just to show the confirmed messages + time.Sleep(1 * time.Second) + err = producer.Close() + CheckErr(err) + + fmt.Println("Sent 10 messages") + + handleMessages := func(consumerContext stream.ConsumerContext, message *amqp.Message) { + + data := &grid.DataSet{} + err := proto.Unmarshal(message.GetData(), data) + for measurement_id, measurement := range data.GetData() { + fmt.Printf("consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", + consumerContext.Consumer.GetName(), measurement_id, measurement.DataType, *measurement.Value, measurement.MeasuredAt) + } + CheckErr(err) + } + + consumer, err := env.NewConsumer( + streamName, + handleMessages, + stream.NewConsumerOptions(). + SetClientProvidedName("my_consumer"). // connection name + SetConsumerName("my_consumer"). // set a consumer name + SetOffset(stream.OffsetSpecification{}.First())) // start consuming from the beginning + + CheckErr(err) + channelClose := consumer.NotifyClose() + // channelClose receives all the closing events, here you can handle the + // client reconnection or just log + defer consumerClose(channelClose) + + fmt.Println("Press any key to stop ") + _, _ = reader.ReadString('\n') + err = consumer.Close() + time.Sleep(200 * time.Millisecond) + CheckErr(err) + err = env.DeleteStream(streamName) + CheckErr(err) + err = env.Close() + CheckErr(err) +} From e7f9d5f4c3796550a154b2dfdcc1563a151e33e6 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 06:19:25 +0000 Subject: [PATCH 12/66] Automated lint fixes [dependabot skip] --- examples/go/measurements.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/examples/go/measurements.go b/examples/go/measurements.go index 06027b1..1100bbd 100644 --- a/examples/go/measurements.go +++ b/examples/go/measurements.go @@ -23,7 +23,12 @@ func CheckErr(err error) { func consumerClose(channelClose stream.ChannelClose) { event := <-channelClose - fmt.Printf("Consumer: %s closed on the stream: %s, reason: %s \n", event.Name, event.StreamName, event.Reason) + fmt.Printf( + "Consumer: %s closed on the stream: %s, reason: %s \n", + event.Name, + event.StreamName, + event.Reason, + ) } func generateDataID(pmuId int, nMeasures int) map[string]*grid.Data { @@ -117,7 +122,9 @@ func main() { messageProperties := make(map[string]interface{}) messageProperties["Id"] = uuid.New().String() messageProperties["type"] = "DataSet" - messageProperties["timestampId"] = int64(math.Round(float64(time.Now().UnixMilli())/20) * 20) + messageProperties["timestampId"] = int64( + math.Round(float64(time.Now().UnixMilli())/20) * 20, + ) messageProperties["producerId"] = data.GetProducerId() message.ApplicationProperties = messageProperties err := producer.Send(message) @@ -136,8 +143,14 @@ func main() { data := &grid.DataSet{} err := proto.Unmarshal(message.GetData(), data) for measurement_id, measurement := range data.GetData() { - fmt.Printf("consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", - consumerContext.Consumer.GetName(), measurement_id, measurement.DataType, *measurement.Value, measurement.MeasuredAt) + fmt.Printf( + "consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", + consumerContext.Consumer.GetName(), + measurement_id, + measurement.DataType, + *measurement.Value, + measurement.MeasuredAt, + ) } CheckErr(err) } From b199179d3d5b1bcfafbdce0a7558293e342b5e1b Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 08:24:39 +0200 Subject: [PATCH 13/66] Update docker-compose.yml --- .docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index 593711d..091da9f 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -8,7 +8,7 @@ services: net.core.somaxconn: 4096 net.ipv4.tcp_max_syn_backlog: 8192 environment: - - RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_stream advertised_host rabbitmq -rabbit loopback_users "none" + - RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_stream advertised_host localhost -rabbit loopback_users "none" volumes: - ./rabbitmq/init.sh:/init.sh - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf From 1ec8380cf7917ff484ca22c3a413a8d27bc93f78 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 12:58:44 +0200 Subject: [PATCH 14/66] add fault example --- Makefile | 8 + README.md | 4 +- examples/go/faults/__debug_bin293364222 | Bin 0 -> 8722434 bytes examples/go/faults/main.go | 202 + examples/go/go.mod | 1 + examples/go/go.sum | 4 + .../{measurements.go => measurements/main.go} | 15 +- .../github.com/golang/snappy/.gitignore | 16 + .../vendor/github.com/golang/snappy/AUTHORS | 18 + .../github.com/golang/snappy/CONTRIBUTORS | 41 + .../vendor/github.com/golang/snappy/LICENSE | 27 + .../go/vendor/github.com/golang/snappy/README | 107 + .../vendor/github.com/golang/snappy/decode.go | 264 + .../github.com/golang/snappy/decode_amd64.s | 490 ++ .../github.com/golang/snappy/decode_arm64.s | 494 ++ .../github.com/golang/snappy/decode_asm.go | 15 + .../github.com/golang/snappy/decode_other.go | 115 + .../vendor/github.com/golang/snappy/encode.go | 289 + .../github.com/golang/snappy/encode_amd64.s | 730 +++ .../github.com/golang/snappy/encode_arm64.s | 722 +++ .../github.com/golang/snappy/encode_asm.go | 30 + .../github.com/golang/snappy/encode_other.go | 238 + .../vendor/github.com/golang/snappy/snappy.go | 98 + .../github.com/google/uuid/CHANGELOG.md | 41 + .../github.com/google/uuid/CONTRIBUTING.md | 26 + .../github.com/google/uuid/CONTRIBUTORS | 9 + .../go/vendor/github.com/google/uuid/LICENSE | 27 + .../vendor/github.com/google/uuid/README.md | 21 + .../go/vendor/github.com/google/uuid/dce.go | 80 + .../go/vendor/github.com/google/uuid/doc.go | 12 + .../go/vendor/github.com/google/uuid/hash.go | 59 + .../vendor/github.com/google/uuid/marshal.go | 38 + .../go/vendor/github.com/google/uuid/node.go | 90 + .../vendor/github.com/google/uuid/node_js.go | 12 + .../vendor/github.com/google/uuid/node_net.go | 33 + .../go/vendor/github.com/google/uuid/null.go | 118 + .../go/vendor/github.com/google/uuid/sql.go | 59 + .../go/vendor/github.com/google/uuid/time.go | 134 + .../go/vendor/github.com/google/uuid/util.go | 43 + .../go/vendor/github.com/google/uuid/uuid.go | 365 ++ .../vendor/github.com/google/uuid/version1.go | 44 + .../vendor/github.com/google/uuid/version4.go | 76 + .../vendor/github.com/google/uuid/version6.go | 56 + .../vendor/github.com/google/uuid/version7.go | 104 + .../klauspost/compress/.gitattributes | 2 + .../github.com/klauspost/compress/.gitignore | 32 + .../klauspost/compress/.goreleaser.yml | 123 + .../github.com/klauspost/compress/LICENSE | 304 + .../github.com/klauspost/compress/README.md | 700 ++ .../github.com/klauspost/compress/SECURITY.md | 25 + .../klauspost/compress/compressible.go | 85 + .../klauspost/compress/fse/README.md | 79 + .../klauspost/compress/fse/bitreader.go | 122 + .../klauspost/compress/fse/bitwriter.go | 167 + .../klauspost/compress/fse/bytereader.go | 47 + .../klauspost/compress/fse/compress.go | 683 ++ .../klauspost/compress/fse/decompress.go | 376 ++ .../github.com/klauspost/compress/fse/fse.go | 144 + .../github.com/klauspost/compress/gen.sh | 4 + .../klauspost/compress/huff0/.gitignore | 1 + .../klauspost/compress/huff0/README.md | 89 + .../klauspost/compress/huff0/bitreader.go | 229 + .../klauspost/compress/huff0/bitwriter.go | 102 + .../klauspost/compress/huff0/compress.go | 742 +++ .../klauspost/compress/huff0/decompress.go | 1167 ++++ .../compress/huff0/decompress_amd64.go | 226 + .../compress/huff0/decompress_amd64.s | 830 +++ .../compress/huff0/decompress_generic.go | 299 + .../klauspost/compress/huff0/huff0.go | 337 + .../compress/internal/cpuinfo/cpuinfo.go | 34 + .../internal/cpuinfo/cpuinfo_amd64.go | 11 + .../compress/internal/cpuinfo/cpuinfo_amd64.s | 36 + .../compress/internal/snapref/LICENSE | 27 + .../compress/internal/snapref/decode.go | 264 + .../compress/internal/snapref/decode_other.go | 113 + .../compress/internal/snapref/encode.go | 289 + .../compress/internal/snapref/encode_other.go | 250 + .../compress/internal/snapref/snappy.go | 98 + .../github.com/klauspost/compress/s2sx.mod | 4 + .../github.com/klauspost/compress/s2sx.sum | 0 .../klauspost/compress/zstd/README.md | 441 ++ .../klauspost/compress/zstd/bitreader.go | 136 + .../klauspost/compress/zstd/bitwriter.go | 112 + .../klauspost/compress/zstd/blockdec.go | 729 +++ .../klauspost/compress/zstd/blockenc.go | 909 +++ .../compress/zstd/blocktype_string.go | 85 + .../klauspost/compress/zstd/bytebuf.go | 131 + .../klauspost/compress/zstd/bytereader.go | 82 + .../klauspost/compress/zstd/decodeheader.go | 261 + .../klauspost/compress/zstd/decoder.go | 948 +++ .../compress/zstd/decoder_options.go | 169 + .../klauspost/compress/zstd/dict.go | 565 ++ .../klauspost/compress/zstd/enc_base.go | 173 + .../klauspost/compress/zstd/enc_best.go | 560 ++ .../klauspost/compress/zstd/enc_better.go | 1252 ++++ .../klauspost/compress/zstd/enc_dfast.go | 1123 ++++ .../klauspost/compress/zstd/enc_fast.go | 891 +++ .../klauspost/compress/zstd/encoder.go | 619 ++ .../compress/zstd/encoder_options.go | 339 + .../klauspost/compress/zstd/framedec.go | 413 ++ .../klauspost/compress/zstd/frameenc.go | 137 + .../klauspost/compress/zstd/fse_decoder.go | 307 + .../compress/zstd/fse_decoder_amd64.go | 65 + .../compress/zstd/fse_decoder_amd64.s | 126 + .../compress/zstd/fse_decoder_generic.go | 73 + .../klauspost/compress/zstd/fse_encoder.go | 701 ++ .../klauspost/compress/zstd/fse_predefined.go | 158 + .../klauspost/compress/zstd/hash.go | 35 + .../klauspost/compress/zstd/history.go | 116 + .../compress/zstd/internal/xxhash/LICENSE.txt | 22 + .../compress/zstd/internal/xxhash/README.md | 71 + .../compress/zstd/internal/xxhash/xxhash.go | 230 + .../zstd/internal/xxhash/xxhash_amd64.s | 210 + .../zstd/internal/xxhash/xxhash_arm64.s | 184 + .../zstd/internal/xxhash/xxhash_asm.go | 16 + .../zstd/internal/xxhash/xxhash_other.go | 76 + .../zstd/internal/xxhash/xxhash_safe.go | 11 + .../klauspost/compress/zstd/matchlen_amd64.go | 16 + .../klauspost/compress/zstd/matchlen_amd64.s | 66 + .../compress/zstd/matchlen_generic.go | 33 + .../klauspost/compress/zstd/seqdec.go | 503 ++ .../klauspost/compress/zstd/seqdec_amd64.go | 394 ++ .../klauspost/compress/zstd/seqdec_amd64.s | 4151 ++++++++++++ .../klauspost/compress/zstd/seqdec_generic.go | 237 + .../klauspost/compress/zstd/seqenc.go | 114 + .../klauspost/compress/zstd/snappy.go | 434 ++ .../github.com/klauspost/compress/zstd/zip.go | 141 + .../klauspost/compress/zstd/zstd.go | 121 + .../vendor/github.com/pierrec/lz4/.gitignore | 34 + .../vendor/github.com/pierrec/lz4/.travis.yml | 24 + .../go/vendor/github.com/pierrec/lz4/LICENSE | 28 + .../vendor/github.com/pierrec/lz4/README.md | 90 + .../go/vendor/github.com/pierrec/lz4/block.go | 413 ++ .../go/vendor/github.com/pierrec/lz4/debug.go | 23 + .../github.com/pierrec/lz4/debug_stub.go | 7 + .../github.com/pierrec/lz4/decode_amd64.go | 8 + .../github.com/pierrec/lz4/decode_amd64.s | 375 ++ .../github.com/pierrec/lz4/decode_other.go | 98 + .../vendor/github.com/pierrec/lz4/errors.go | 30 + .../pierrec/lz4/internal/xxh32/xxh32zero.go | 223 + .../go/vendor/github.com/pierrec/lz4/lz4.go | 116 + .../github.com/pierrec/lz4/lz4_go1.10.go | 29 + .../github.com/pierrec/lz4/lz4_notgo1.10.go | 29 + .../vendor/github.com/pierrec/lz4/reader.go | 335 + .../github.com/pierrec/lz4/reader_legacy.go | 207 + .../vendor/github.com/pierrec/lz4/writer.go | 422 ++ .../github.com/pierrec/lz4/writer_legacy.go | 182 + .../vendor/github.com/pkg/errors/.gitignore | 24 + .../vendor/github.com/pkg/errors/.travis.yml | 10 + .../go/vendor/github.com/pkg/errors/LICENSE | 23 + .../go/vendor/github.com/pkg/errors/Makefile | 44 + .../go/vendor/github.com/pkg/errors/README.md | 59 + .../vendor/github.com/pkg/errors/appveyor.yml | 32 + .../go/vendor/github.com/pkg/errors/errors.go | 288 + .../go/vendor/github.com/pkg/errors/go113.go | 38 + .../go/vendor/github.com/pkg/errors/stack.go | 177 + .../github.com/rabbitmq/amqp091-go/.gitignore | 6 + .../rabbitmq/amqp091-go/.golangci.yml | 3 + .../rabbitmq/amqp091-go/CHANGELOG.md | 363 ++ .../rabbitmq/amqp091-go/CODE_OF_CONDUCT.md | 77 + .../rabbitmq/amqp091-go/CONTRIBUTING.md | 62 + .../github.com/rabbitmq/amqp091-go/LICENSE | 25 + .../github.com/rabbitmq/amqp091-go/Makefile | 57 + .../github.com/rabbitmq/amqp091-go/README.md | 105 + .../github.com/rabbitmq/amqp091-go/RELEASE.md | 16 + .../rabbitmq/amqp091-go/allocator.go | 119 + .../github.com/rabbitmq/amqp091-go/auth.go | 83 + .../github.com/rabbitmq/amqp091-go/certs.sh | 159 + .../rabbitmq/amqp091-go/change_version.sh | 4 + .../github.com/rabbitmq/amqp091-go/channel.go | 1828 ++++++ .../rabbitmq/amqp091-go/confirms.go | 238 + .../rabbitmq/amqp091-go/connection.go | 1172 ++++ .../rabbitmq/amqp091-go/consumers.go | 169 + .../rabbitmq/amqp091-go/delivery.go | 173 + .../github.com/rabbitmq/amqp091-go/doc.go | 160 + .../github.com/rabbitmq/amqp091-go/fuzz.go | 23 + .../github.com/rabbitmq/amqp091-go/gen.ps1 | 14 + .../github.com/rabbitmq/amqp091-go/gen.sh | 2 + .../github.com/rabbitmq/amqp091-go/log.go | 23 + .../github.com/rabbitmq/amqp091-go/read.go | 450 ++ .../github.com/rabbitmq/amqp091-go/return.go | 64 + .../github.com/rabbitmq/amqp091-go/spec091.go | 3382 ++++++++++ .../github.com/rabbitmq/amqp091-go/types.go | 568 ++ .../github.com/rabbitmq/amqp091-go/uri.go | 254 + .../github.com/rabbitmq/amqp091-go/write.go | 426 ++ .../rabbitmq-stream-go-client/LICENSE | 25 + .../pkg/amqp/buffer.go | 157 + .../pkg/amqp/decode.go | 1156 ++++ .../pkg/amqp/encode.go | 589 ++ .../pkg/amqp/error_stdlib.go | 39 + .../pkg/amqp/types.go | 2676 ++++++++ .../rabbitmq-stream-go-client/pkg/logs/log.go | 31 + .../pkg/message/interface.go | 19 + .../pkg/stream/aggregation.go | 360 ++ .../pkg/stream/available_features.go | 149 + .../pkg/stream/brokers.go | 190 + .../pkg/stream/buffer_reader.go | 64 + .../pkg/stream/buffer_writer.go | 159 + .../pkg/stream/client.go | 1121 ++++ .../pkg/stream/constants.go | 232 + .../pkg/stream/consumer.go | 521 ++ .../pkg/stream/converters.go | 85 + .../pkg/stream/coordinator.go | 305 + .../pkg/stream/environment.go | 867 +++ .../pkg/stream/environment_debug.go | 57 + .../pkg/stream/exchange_commands.go | 48 + .../pkg/stream/listeners.go | 20 + .../pkg/stream/producer.go | 703 ++ .../pkg/stream/server_frame.go | 662 ++ .../pkg/stream/socket.go | 83 + .../pkg/stream/stream_options.go | 60 + .../pkg/stream/stream_stats.go | 50 + .../pkg/stream/super_stream.go | 180 + .../pkg/stream/super_stream_consumer.go | 270 + .../pkg/stream/super_stream_producer.go | 416 ++ .../pkg/stream/utils.go | 59 + .../github.com/spaolacci/murmur3/.gitignore | 22 + .../github.com/spaolacci/murmur3/.travis.yml | 7 + .../github.com/spaolacci/murmur3/LICENSE | 24 + .../github.com/spaolacci/murmur3/README.md | 86 + .../github.com/spaolacci/murmur3/murmur.go | 64 + .../github.com/spaolacci/murmur3/murmur128.go | 203 + .../github.com/spaolacci/murmur3/murmur32.go | 167 + .../github.com/spaolacci/murmur3/murmur64.go | 57 + .../protobuf/go/grid/v1/FullGrid_TP.xml | 1137 ++++ .../protobuf/go/grid/v1/data.pb.go | 551 ++ .../protobuf/go/grid/v1/device_event.pb.go | 662 ++ .../protobuf/go/grid/v1/event.pb.go | 343 + .../protobuf/go/grid/v1/fault.pb.go | 821 +++ .../protobuf/go/grid/v1/grid_event.pb.go | 1272 ++++ .../protobuf/go/grid/v1/topology.pb.go | 547 ++ .../vendor/google.golang.org/protobuf/LICENSE | 27 + .../vendor/google.golang.org/protobuf/PATENTS | 22 + .../protobuf/encoding/prototext/decode.go | 772 +++ .../protobuf/encoding/prototext/doc.go | 7 + .../protobuf/encoding/prototext/encode.go | 380 ++ .../protobuf/encoding/protowire/wire.go | 547 ++ .../protobuf/internal/descfmt/stringer.go | 414 ++ .../protobuf/internal/descopts/options.go | 29 + .../protobuf/internal/detrand/rand.go | 69 + .../internal/editiondefaults/defaults.go | 12 + .../editiondefaults/editions_defaults.binpb | Bin 0 -> 93 bytes .../internal/encoding/defval/default.go | 213 + .../encoding/messageset/messageset.go | 242 + .../protobuf/internal/encoding/tag/tag.go | 207 + .../protobuf/internal/encoding/text/decode.go | 686 ++ .../internal/encoding/text/decode_number.go | 211 + .../internal/encoding/text/decode_string.go | 161 + .../internal/encoding/text/decode_token.go | 373 ++ .../protobuf/internal/encoding/text/doc.go | 29 + .../protobuf/internal/encoding/text/encode.go | 272 + .../protobuf/internal/errors/errors.go | 104 + .../protobuf/internal/errors/is_go112.go | 40 + .../protobuf/internal/errors/is_go113.go | 13 + .../protobuf/internal/filedesc/build.go | 157 + .../protobuf/internal/filedesc/desc.go | 733 +++ .../protobuf/internal/filedesc/desc_init.go | 558 ++ .../protobuf/internal/filedesc/desc_lazy.go | 701 ++ .../protobuf/internal/filedesc/desc_list.go | 457 ++ .../internal/filedesc/desc_list_gen.go | 367 ++ .../protobuf/internal/filedesc/editions.go | 156 + .../protobuf/internal/filedesc/placeholder.go | 110 + .../protobuf/internal/filetype/build.go | 296 + .../protobuf/internal/flags/flags.go | 24 + .../internal/flags/proto_legacy_disable.go | 10 + .../internal/flags/proto_legacy_enable.go | 10 + .../protobuf/internal/genid/any_gen.go | 34 + .../protobuf/internal/genid/api_gen.go | 106 + .../protobuf/internal/genid/descriptor_gen.go | 1270 ++++ .../protobuf/internal/genid/doc.go | 11 + .../protobuf/internal/genid/duration_gen.go | 34 + .../protobuf/internal/genid/empty_gen.go | 19 + .../protobuf/internal/genid/field_mask_gen.go | 31 + .../internal/genid/go_features_gen.go | 31 + .../protobuf/internal/genid/goname.go | 25 + .../protobuf/internal/genid/map_entry.go | 16 + .../internal/genid/source_context_gen.go | 31 + .../protobuf/internal/genid/struct_gen.go | 121 + .../protobuf/internal/genid/timestamp_gen.go | 34 + .../protobuf/internal/genid/type_gen.go | 228 + .../protobuf/internal/genid/wrappers.go | 13 + .../protobuf/internal/genid/wrappers_gen.go | 175 + .../protobuf/internal/impl/api_export.go | 177 + .../protobuf/internal/impl/checkinit.go | 141 + .../protobuf/internal/impl/codec_extension.go | 237 + .../protobuf/internal/impl/codec_field.go | 860 +++ .../protobuf/internal/impl/codec_gen.go | 5724 +++++++++++++++++ .../protobuf/internal/impl/codec_map.go | 399 ++ .../protobuf/internal/impl/codec_map_go111.go | 38 + .../protobuf/internal/impl/codec_map_go112.go | 12 + .../protobuf/internal/impl/codec_message.go | 217 + .../internal/impl/codec_messageset.go | 145 + .../protobuf/internal/impl/codec_reflect.go | 210 + .../protobuf/internal/impl/codec_tables.go | 557 ++ .../protobuf/internal/impl/codec_unsafe.go | 18 + .../protobuf/internal/impl/convert.go | 495 ++ .../protobuf/internal/impl/convert_list.go | 141 + .../protobuf/internal/impl/convert_map.go | 121 + .../protobuf/internal/impl/decode.go | 285 + .../protobuf/internal/impl/encode.go | 237 + .../protobuf/internal/impl/enum.go | 21 + .../protobuf/internal/impl/extension.go | 156 + .../protobuf/internal/impl/legacy_enum.go | 219 + .../protobuf/internal/impl/legacy_export.go | 92 + .../internal/impl/legacy_extension.go | 176 + .../protobuf/internal/impl/legacy_file.go | 81 + .../protobuf/internal/impl/legacy_message.go | 572 ++ .../protobuf/internal/impl/merge.go | 176 + .../protobuf/internal/impl/merge_gen.go | 209 + .../protobuf/internal/impl/message.go | 284 + .../protobuf/internal/impl/message_reflect.go | 462 ++ .../internal/impl/message_reflect_field.go | 543 ++ .../internal/impl/message_reflect_gen.go | 271 + .../protobuf/internal/impl/pointer_reflect.go | 215 + .../protobuf/internal/impl/pointer_unsafe.go | 215 + .../protobuf/internal/impl/validate.go | 576 ++ .../protobuf/internal/impl/weak.go | 74 + .../protobuf/internal/order/order.go | 89 + .../protobuf/internal/order/range.go | 115 + .../protobuf/internal/pragma/pragma.go | 29 + .../protobuf/internal/set/ints.go | 58 + .../protobuf/internal/strs/strings.go | 196 + .../protobuf/internal/strs/strings_pure.go | 28 + .../internal/strs/strings_unsafe_go120.go | 95 + .../internal/strs/strings_unsafe_go121.go | 74 + .../protobuf/internal/version/version.go | 79 + .../protobuf/proto/checkinit.go | 71 + .../protobuf/proto/decode.go | 296 + .../protobuf/proto/decode_gen.go | 603 ++ .../google.golang.org/protobuf/proto/doc.go | 86 + .../protobuf/proto/encode.go | 354 + .../protobuf/proto/encode_gen.go | 97 + .../google.golang.org/protobuf/proto/equal.go | 57 + .../protobuf/proto/extension.go | 95 + .../google.golang.org/protobuf/proto/merge.go | 139 + .../protobuf/proto/messageset.go | 98 + .../google.golang.org/protobuf/proto/proto.go | 45 + .../protobuf/proto/proto_methods.go | 20 + .../protobuf/proto/proto_reflect.go | 20 + .../google.golang.org/protobuf/proto/reset.go | 43 + .../google.golang.org/protobuf/proto/size.go | 103 + .../protobuf/proto/size_gen.go | 55 + .../protobuf/proto/wrappers.go | 29 + .../protobuf/reflect/protoreflect/methods.go | 78 + .../protobuf/reflect/protoreflect/proto.go | 513 ++ .../protobuf/reflect/protoreflect/source.go | 129 + .../reflect/protoreflect/source_gen.go | 573 ++ .../protobuf/reflect/protoreflect/type.go | 672 ++ .../protobuf/reflect/protoreflect/value.go | 285 + .../reflect/protoreflect/value_equal.go | 168 + .../reflect/protoreflect/value_pure.go | 60 + .../reflect/protoreflect/value_union.go | 438 ++ .../protoreflect/value_unsafe_go120.go | 99 + .../protoreflect/value_unsafe_go121.go | 87 + .../reflect/protoregistry/registry.go | 882 +++ .../protobuf/runtime/protoiface/legacy.go | 15 + .../protobuf/runtime/protoiface/methods.go | 168 + .../protobuf/runtime/protoimpl/impl.go | 44 + .../protobuf/runtime/protoimpl/version.go | 60 + examples/go/vendor/modules.txt | 67 + 360 files changed, 95060 insertions(+), 7 deletions(-) create mode 100755 examples/go/faults/__debug_bin293364222 create mode 100644 examples/go/faults/main.go rename examples/go/{measurements.go => measurements/main.go} (93%) create mode 100644 examples/go/vendor/github.com/golang/snappy/.gitignore create mode 100644 examples/go/vendor/github.com/golang/snappy/AUTHORS create mode 100644 examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS create mode 100644 examples/go/vendor/github.com/golang/snappy/LICENSE create mode 100644 examples/go/vendor/github.com/golang/snappy/README create mode 100644 examples/go/vendor/github.com/golang/snappy/decode.go create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_amd64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_arm64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_asm.go create mode 100644 examples/go/vendor/github.com/golang/snappy/decode_other.go create mode 100644 examples/go/vendor/github.com/golang/snappy/encode.go create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_amd64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_arm64.s create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_asm.go create mode 100644 examples/go/vendor/github.com/golang/snappy/encode_other.go create mode 100644 examples/go/vendor/github.com/golang/snappy/snappy.go create mode 100644 examples/go/vendor/github.com/google/uuid/CHANGELOG.md create mode 100644 examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md create mode 100644 examples/go/vendor/github.com/google/uuid/CONTRIBUTORS create mode 100644 examples/go/vendor/github.com/google/uuid/LICENSE create mode 100644 examples/go/vendor/github.com/google/uuid/README.md create mode 100644 examples/go/vendor/github.com/google/uuid/dce.go create mode 100644 examples/go/vendor/github.com/google/uuid/doc.go create mode 100644 examples/go/vendor/github.com/google/uuid/hash.go create mode 100644 examples/go/vendor/github.com/google/uuid/marshal.go create mode 100644 examples/go/vendor/github.com/google/uuid/node.go create mode 100644 examples/go/vendor/github.com/google/uuid/node_js.go create mode 100644 examples/go/vendor/github.com/google/uuid/node_net.go create mode 100644 examples/go/vendor/github.com/google/uuid/null.go create mode 100644 examples/go/vendor/github.com/google/uuid/sql.go create mode 100644 examples/go/vendor/github.com/google/uuid/time.go create mode 100644 examples/go/vendor/github.com/google/uuid/util.go create mode 100644 examples/go/vendor/github.com/google/uuid/uuid.go create mode 100644 examples/go/vendor/github.com/google/uuid/version1.go create mode 100644 examples/go/vendor/github.com/google/uuid/version4.go create mode 100644 examples/go/vendor/github.com/google/uuid/version6.go create mode 100644 examples/go/vendor/github.com/google/uuid/version7.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/.gitattributes create mode 100644 examples/go/vendor/github.com/klauspost/compress/.gitignore create mode 100644 examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml create mode 100644 examples/go/vendor/github.com/klauspost/compress/LICENSE create mode 100644 examples/go/vendor/github.com/klauspost/compress/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/SECURITY.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/compressible.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/compress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/decompress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/fse/fse.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/gen.sh create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/compress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/s2sx.mod create mode 100644 examples/go/vendor/github.com/klauspost/compress/s2sx.sum create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/dict.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/hash.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/history.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/zip.go create mode 100644 examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/.gitignore create mode 100644 examples/go/vendor/github.com/pierrec/lz4/.travis.yml create mode 100644 examples/go/vendor/github.com/pierrec/lz4/LICENSE create mode 100644 examples/go/vendor/github.com/pierrec/lz4/README.md create mode 100644 examples/go/vendor/github.com/pierrec/lz4/block.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/debug.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/debug_stub.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s create mode 100644 examples/go/vendor/github.com/pierrec/lz4/decode_other.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/errors.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/lz4.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/reader.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/writer.go create mode 100644 examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go create mode 100644 examples/go/vendor/github.com/pkg/errors/.gitignore create mode 100644 examples/go/vendor/github.com/pkg/errors/.travis.yml create mode 100644 examples/go/vendor/github.com/pkg/errors/LICENSE create mode 100644 examples/go/vendor/github.com/pkg/errors/Makefile create mode 100644 examples/go/vendor/github.com/pkg/errors/README.md create mode 100644 examples/go/vendor/github.com/pkg/errors/appveyor.yml create mode 100644 examples/go/vendor/github.com/pkg/errors/errors.go create mode 100644 examples/go/vendor/github.com/pkg/errors/go113.go create mode 100644 examples/go/vendor/github.com/pkg/errors/stack.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go create mode 100644 examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go create mode 100644 examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/.gitignore create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/LICENSE create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/README.md create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go create mode 100644 examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go create mode 100644 examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/LICENSE create mode 100644 examples/go/vendor/google.golang.org/protobuf/PATENTS create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/order/order.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/order/range.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/internal/version/version.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/decode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/doc.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/encode.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/equal.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/extension.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/merge.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/messageset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/proto.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/reset.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/size.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go create mode 100644 examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go create mode 100644 examples/go/vendor/modules.txt diff --git a/Makefile b/Makefile index f85e0f1..869fb48 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,14 @@ sleep: create-rabbit-defaults: docker exec rabbitmq ./init.sh +.PHONY: example-measurements-go +example-measurements-go: + cd examples/go/measurements && go run main.go + +.PHONY: example-faults-go +example-faults-go: + cd examples/go/faults && go run main.go + # Mandatory ci-test: cov # Mandatory if benchmark enabled diff --git a/README.md b/README.md index ba64ddc..b0300ae 100644 --- a/README.md +++ b/README.md @@ -89,8 +89,8 @@ Python and Go, code to: #### Go 1. Set-up the infrastructure using `make docker-start`. -1. Launch the producer `make produce-measurements-go` -1. Launch the consumer `make consume-measurements-go` +1. Launch the example `make example-measurements-go` +1. Press any key to stop ## Contributing to Protocol Buffers diff --git a/examples/go/faults/__debug_bin293364222 b/examples/go/faults/__debug_bin293364222 new file mode 100755 index 0000000000000000000000000000000000000000..976d22c5987bd7542336ee0dc8e5b59df63ae01e GIT binary patch literal 8722434 zcmeFa3w%`7wfMi!%;W`FKw_ox$mD^5T0v1T#cNIy9=?jL(ra6Lo5=$KQ4p~e1kFGK zqS4A|ZdI@)2q=k<(umcxB>PE^)&8mTG#ymoF$$=!37 z-km6V8oVJEF>QOVunO_)OB9!fp!>0;WXZBS$`;*TvgGb>m0i*Ye!sdxGiRJ2A%8qO zxAK^7!%LM1{z^*jT2xVbcd7MsIz01t7QE#t78H4Q!*l96SK-_Hns3tzXBUoc%2PlApka1%2SvH@vm?XHZ)Ht~w)L^uw|{=iEMj;R364Nl9;b zb@$KI`1wXz`SN@wI!j9C-(6bPKfLA*7Cb+~Du42PW_WWK(X+s`$|vI&e$Iktt{G?yUp>P%)SIfaN&9{k{*!{q>{MEf}X^GRX z33;2lsHE&$^KY-1zwp*Y{li=5C=l>^>4U3jxh*MKh%Q(vap&E4ord4KDht1*HavM2 zyW#u^UJIQEuE1LaoVZFP)9Zi0f~Qg~`sDdcd@Cu5gVL>>2Jew_&A&T$T1fbLJ~Oj8J@_=QcF&5 zF1&F@qEhn$4JV!utkAa~H4lp?$&J`g`70^8w_;A&x8|0VmX+N#=iAb+eZsrYLBNJ* z)z<&r-JF1j%Ffa7d&9eMmxbTrVoTaCTxsF=cj4W7SLq!9OvdkN-<_J?F&|q9KK;f# z7pT7Qv&fxWQC6~~{I2=Q@OJeq*6<2#D7#+2?eD;|`DdxwY4~~6T^ioGJ(k{jnm;AH z+ZUBf!^!x4u4lQ1cUH_|`{!PF4SE))efP&*r3>fIS#lb@^SkcX@P5A5s(k)y_gFWH z|GnUe+*#xP_1Db0Zu+!qoH5&$JI|B0Ar3Cp5S(Y}9Y=&D<5GUZ<7uBkdHC@+PN|@z zn;u6(b+XDKeWKg~x9-=5s{7i#%5;V#t4Oc^g0#R1m))xlUZ7OPu=~`YQ>khoXOawh!ioV%8gvSdPGQW@Y2eu00iotx&Af9tOK zcQ5O^1t%An@+a0iA3E4SV=?OT&4UUA#!7u+*r-n_4r zPbmA>n{SwV`6U(qdc&kUZ@a7PD_0avpElw0xtGnk?YcWBExNVz=F4ZzxaRsLh0}8e z_Z-E3BEyVOx(c3se5Ps&sNjv^3sqCA*9f%^Q?aKm`AqEw ze&6F49-(64Tq6`7tYS~g^I$U;8DZ-C2=~XiudgcU8gG~}=IXJ{+=rtognzKE=+2Z7 zPF8JX80EaGA$+0PbbNwp@~B`-5Lm}2m`w~li;thX@w{}8n!+fQIqnj5GX3|3v2@@a zA4uDjsg|-*f1nvV;Z>n=hKg+(txjgEt3m>26~FG~*VIE}sM%ZcUe6u{t)BYsDy3=N z22RRo{+F;f_%G=h7Th}0?xCK*oOiieXY8C7YxSD3?;5HWC#a=+c~L!ZEO=D{&wzI- z6i!pIh*v?68JkbNaXWpnaGDu2sPjIwb}ugk5363B`P}q)4PbcdyMZbE-{j5edIlUe zd*N5P3Q2u@irVnGs_FQ-e}^yN5T?vk4qs^B;mfYkYF)PSg}y-Em6|Wb^|Wo#Q7kz4 z>brTaqy0@)qr0TPqx5YL?F#>O+h3+nUfp=!ycDZX>cDYR)i)_?Qr3)JBzzkNp2KWB z(>9)WTv=teQC87+=TqkOJz1~eXJqPfk68V@%`PWt+sHqM{IFMrdW5G!cZwRCabNJp z^!qYKWbixg&1gu!&wTtiGz*W00XL2(WsigRp`M;|=lOy+3OvcH+f(vd_ws4=J;kTf zEq$F{czGzj`|!SP(7z43w!w?5(SdEnqhHhcr8-zxi6ak+DF_X_`f+ zd5PMt)QC{$L<^r@^|Gj!mEa9Bu4UV*Gcr_2-E8U}rEVvYC{?mA%ljCeWoc^);w&1!H0_2PMw&S)C9 z+B5?DY8$qb9zljh@30Lwdbuj2;5~us)~CL7D2^{YiOW{83JJ{`FX)+%URmWVTLoR< zFLc_rE5(HO8STf%o^FRkmZj_f`T$k-CRtE*faq_UC zal17h9iadB^}s7_Gbz_gcBmup;`vFm2t479Tn%`V1Ac|cH1$*G3rXd~PA1d;@dW4r z-!QUviO?ov0ry>!F7(J)K-XQQlz7Xn||OWp$)c=LC?IW+z5cYZ+f}Vo+0{lK+Qb>Lg<%%gkt^O}JO|S1>zIU7S zmB3pEtv%%v+pqDe*`Ev^-PMgAcIT>tC4Ov(p=R$k)DA*G2TPRqgHoOgOx3Ylso5h` zFkcNaYPvtJjE_@c+KzZvG@kpKQ5()uCvgixrMZl+rYCgQ5mlSz_x>N@d4xV_WvqyL zM>l-qCCbA82zazICj1UNCU`l24t@_N;g@r&^6{LHifW2a6+d2?t~xv(3#X!!_dVvD zSAIpd^6W1(x?W{0ZY=WeT3?`yj>3r>*RNDYgE24n3OC;E5ynfe7u+iwkH2d4!c%aZ zma@L;XQ8*A3IR4U(s=2Yl|mR(#8(pSCs zaEm-Eo>}(EEEuUeR{AV@R(<$LOY6HYYI+Q0)MXH+QbKKxDdIz*d_NO^WT2a(#vFdH@;!!`-hm1 zIrhW&5;UvPcZu9enn4@VX8f7*1!}}y;d8BghrVQe-tFmn)jPzDwV{VmuXjIv)xHn< zN}w}W=v2o3sMoVU_f*wGLFKK9VB>nzBDTlVkO>{rl-e<%)~LONUpl|O?9Np-eU9Dv zjcs=v{4D;DirYgUeeLt8%dl%P`n{=aq&iS^;IdFO?fypOxVA0JjIE+fiD`DM1z)j` zaUAzpW243ItOn*s7VdU>)O%;+2R};SDg6IzKm6|(zd?QAr!Lp{jd1Xz%zqcZ-AVZU z>4m=KgXnRMBO79$9DK(kr*2!x{3LcqPtOxs)38a%XXIQn=J%g2pS}7RTPM8vh28cE z`pn(d-)ry7(%#js_C|iX_Fi_i=g^aZ{c_VIdJsuflZCD+v|~(D2Sxw4VV8r9fhy<= zjaXXR74T-gXVGee+_dR5)kj)bonFrDqg%cAGap zPST$f(Cy}r@TCKvM))s&h4j0UE6-y8HT}bT_eWo8S+i9~fbv;iRUJX8{|(hqr|oEO z{Q9cfZ(6b(*tA`4)3)E`lf?VK4|#49`YQUyhk15y+iSNm(r)8}B>rXe0e_Rghi`q+ z+aG-2KLGzhf&Zm{4E`UVx9os}KPy79UOGA3%y&Qc$G;2E8R*)v4;*^QnI5BDHnYmM zr8fWGNowDLKfe$Dec7f@?2Yh?y)w1E+9K_J@DM+?SGwKS5AC*&x#U4%v)uFF1KmF-!rA>#}PX~UoyhVuD<-?y= z;&S4v)Wb8iw5*qJA@hupuO!AT@$1DV%(dam*m~T}D>2Xkb6GEbRhY~CS0wz2GvQPC zDe&pqaXLQ5XTZm4Z$7@@Cxcz%J@&j>nUAG_??(J`Uq-Oy=)n6LR}NXT{)l1u0on%` zo*LS01Y3&e3+)3?{=YlMo^atVd_2d-`&TX=I`~@lb!6N>36E8=7iHYJ(maGucbSg2 zjx}RGn+}JDBbtWQ>%o0{(L~EX7$&$=wi?`z(BE5?uO{mCHEaS_CH@!tT(m!vqrCgu z@WIMY-gl_{RP{rw$R_+SJ2rTlj}uS#HtbBI@AnOs?Qq*y19>P=Lr<4~Y`uFt5j*oQ z$@**S>CbGq9WMDEuj?oJw-tWz;7$tVu-ba7TPlCT& z{KNN0hc>4KTYl0{I|Bb{7yJ)_%Ul6}*=0ZUv&(+y=Y+k8%Y&BR5pj8lOd^hu%RC$V z8Rf?wmCRK>;?B7ybm1#c;);&9;?L$O5B=zC&@!=NXs8@{ZbX(uo{xBa`?n7A)of+n z`Z{yyRNDX9aPzSv{x{ceWj=ijdD*1WYR>O2m=XlOwwrdm^qfERp7RU60T;aoUHx;7 zp6?|3$MmQj#DYUPV@?(4mo~OCq;|_cYz#MvcgAq2Nw> zf#9lT*^Ct_RU`c(>B%&8W9MYesb8AxwuGjyL(6=AUrnNEyG_&2ZMhM7=^!Rp;2F~X z*5|}VeKxLx;hT|}5*15RTZj>)wZHvYHM^2)L#CSDmg~(wGS-_f`BE-&i;6|dSwA`C z>*~2FWogeOt}pwRhNl>zBJ@$~EdBFUXbn$+cG6@X87((s;lW1eMoCBK+ipQ;rcN4;qc$4iX-XaP87sRJsQ z8Hz9;mv(NPX4FPY3iB(}eT_%P7U#c?jj9?_wLVfH{(W3Yo+2uO>bx z<0pDiBlx^NPIZhU_7uKO#a?G_|IGHP^-*Xew$mO)ro!lvv~?$AMEE*z1+LWF44ws) z_Y!Z)Qz`qafiE_x{M71)$^|y`z7C9MwpXujyV;Cwq%1N7Jc;M|8ouFz*9s5HQq_*= zRKeNXo|{HL6q~Uz3L6L9quvzYuF-IhVjmBKv&`QPtCaSiZC}0qIDF1BygF_pY50$s zM<&p3GvSwRFCAW`H55pj)Q?Osb(}`pjm{*tL0d=QDW>`jHsvZ6Md$rU zr&;lz=k5EIBZ<`p4Q!gHq0Rg4#_2q79XC02G|g-*BhDTBvQhiOSk_?$e=Q$phfW<< zwYuKzS)tZ}_cun#ORg*W`~h{pmsIyd>N@tqJ?^$`R{2MsQ^@1!hF@;8Y>0dOZQE>; zZ{}ya#*ep>{DXDa$peOZ1zFf3zQP3`_nueWmX&B*+WE2F&L4p})MLgz+N?qwJww}# zPkLs5l&eCS9u<@E*%=@HUVH1YHCF#v^Oadi?S20rY|rv967hMV?@s8GIMawE+MK!h zYP*d;C(%^uqUj`g%Jt{acc%7g`e|?eKdZe{y?N=-_r-rwdpGpc-X;H}_MZP+-}IgH zPin6}d5Jw|>DvFayo~6FpTGYnwRgB5`P}tSYHw;k{kQd>)Lwt`^58$Ky?*$4$3LmP zMg6q*<^M)|IV#xX=DSYJWq=EQ^8B=;*z!*^#)yA;wt8?V`#fs zb^YiF{!*CuKpT9Jxg>aGw(^|Cd>}mszYiY`ezq59tJ$o*#QhlY(WLHX{LL)ZCikD} znf)y5g>wger{%eyZ|yv+(iUWs)+Rm_zN*A9#J6}RE!Yyqmr0@hx&f@=I&F<6-V2=a zQM5V4?PuQqSPD2CrLA4chu@Ua&fIo(lsQ5KUzs<9_8-T;I}Sfjc+>Z9J@w#2Z{Z)G zz+dheWUZOLId9I=58i#G<#jb+K{j(~NtbzC5AAJYE@EAi3Y6HY*)a)zq!B;dk9!Czur$i2Zz8}}x$2X*}<@+up*@Vo(7QGCxf{L$6O-aS0)`d8+MvVFmp4N@Q8Md0(3N%d=a zu5s1>7WD<+KyG17uBG5DGNghESjZW3fwN>?HDKnK^`uQkpJLt$Ge6g>CQoCY-p2mC z2>l&qjzO#=7NOrgtQodK` zhw@?O3F2pm!K;}0#~-+AzpL2tixqN_g&)ntUGx4{@Xb=G?Pd7>smGTe5*p@0%kfNA z<4G}NN9WzzC9+(Ij}*?8{zz^3g^zY*UYbi=@Hq;f+ra6_>t?>hHyu7mzO2iZLBFJx z1GgNwZOmIM0#-i@zobkKG9+c@P-ZJ-jsol13VdF>pGE-pEQ=o}RrPtH$l%JxON1YG zKVQtfyPq%MIos7w1F8SY4~*I!{A51R$W_{_puK9^TTNRQZ@ldvAfpZqf?KQo?36tU z{%ex(-`w3Z+eg1U`2P8mo^zj~jVJku?n*4-Mcp=Y1@HZh4feg2FLN_b!&W=(ajx!p zfY{6TwkG`kUjW;&mzM9B)xf^c%yN5f_#t{Fdp@SKhhn2jSx`s}Mr@j8vxD)qYJuU{ z+YIKD?s%`?FKcuuA>Spc_OI9=Cd%t-cV~n)@One{pRcO#E>{Qhw;Q#xH|Cbh)q&DO z*EMAmXJsuo_B#7RxR0^^AIrw(8{@bV3pcLdI+*L#T#4rxU*(EjH|BB078y&qVxx?; zW^BC;!%uzP7xa_BD7;+eWJ5znx_w{G{c!t!E%)Q>`-i!|!oFX}{nhq;E%#rw@1Nv; zo_+r`_e<^jI_}r1ST=J;OAZVRhYPK1AlHZuaK;{cY?D5^gFbozIdl5P&EFH~*C&IA z$H$rt*rer$vqI&=Oxdf%Rn_aX!G4_r~fdvH7~b&0B2f;_$EReLzXRgtKqzGcNs*xZqK{ADs5y((%hg zJT(^^D|Qw?r@a(h*jp20T+;E92>R~DUgzX;gyl>?v zF_%rmkmi8*8h-MeEzjV+hToeiJG~x?mnjSCa*vz;*ahOd7vFVU{BQZkX&1I1T1>_6sD#+?)c; zK?#^{+IKOoxM33iJPqbn#@S?;<$q0^f|6!>tLbxo8yVlU46NmupFCSKFbx@)7U!8I z1Ef_X(nJPCb|Z|9(q|cc$biJC%iv3xaWcY~DE&DAd2Gc7N}ra)_i2p1Df242^7vWf zg^$>ox8WlX<9v78WPwpZe;onFvzfk{-PEb3P95cs0&^GF6O^qxl{Q7j{_G%r20st< ziS2JC@3*A8<+0EukKeTQMV&gl*75Ddei^4W_Ij513Oc{NeCpTp_dxs973SlfQy;Ib z^coAI_JK#H}v$pB6*21C}ANTcxAv_1w4<6yvE+98d+EH07vcx z#!rADYXffFG?Y_^_qo%+x7V`+-@*4|Y#I3O1K)NRzWUk5ci*SQw@mO2M!IC&2iJYZ zsS*3&aW6cb_FeRKx#-(x)3@&o^ra`!*X!B61}JTPMBLlxXYZu&E4e)JyyL?A-t;<_EpNz&C2vyq zwDSKSl22Qo{!w}Br9c0F)2C$le-imuYVP;7zfonyrbSMiKX-Zd5Oj+?80yyVeD#F5YcDf`wNzl6Ue?R11}{QB|1 zUUcCoKA5ZzuokWTBjQKxPW;GWm0bT`z8cc}8@CRNZObOjA65q?J&Z5v&Uf&)_U|O{ zmoYlZoVtLyZ-8-0{4}vM;@iqP+j+!R+&-r>PHO*>ak`Cp$`R%$;>#{cqEp7^Heyn; zS475MH+^B^5i(u|s(dlQ(>OKlaX&ttgR`_FaRLvx$Tgz6UiHi?y`lm-S?^jQAG7<)^4$qEx%=J+EY*d+YX<>yM_X9dG|}#bXU#wc}bt)%g6owoT95 zwe5BIR*0WmV5GMf;>%^J0qxn~ws(;E*bLSX_u|v+mw9Kk*)^S?l;6cO=?8tp5T^5! zv@kwe^`Pe8Y~`n)=|4Oi-N&~Y!zcTYm+Aa;ePRv**Th#+eibU>C-7uV>U?8}lx?DH z6J-~aGXLI7Y$}ZJ&I|Y<@tcpTbSblpGRve)A+a@uA6CTgS;h|X^2y7Wyj>snu%F)B z9%kRR%CqqCoz?uCG5iFV_w0TZpG@{RupdPC^Y*0vZbz8p=@GXmdI|0R9a0wc9% zH|u@UrnKd>y9ys=prN!p%DX15#9$*;#BMgL(19d+;`!y|V;}b=<(IGz1)k0>F)ezF z+wOg=96C~!w?0N7q&kfT{v#kxLH^8o5$}kwD`a^oWxSE{_6eVQMPP_579oo{ zKDDFFmZLGq5qr1Ze$%U7nPJP}801jW#*p?|bgs;nBg!^O`Wz2siKQa5uTl0jU7vMD ziG4mJ@|0&T9m7v#!k}Np2N5}IO(7xO~jbZE<>y?yXLHPh^px!+270KCkqlp&M7-t@`v zP0BURm}tHxW#^%{-c0kgO1rGrFZZdMcb8C4mt`$L%BC|v>s5B5xzs6pzO-S(o;k$K zm-1_o^?PcQv{UzOOm>a=MR(H3J=;NnBXU$o@KD>Gp&suP*^B z&4Q(IJPzN0wbX&d>1F%TH7(al1s`+n7v!O5$mcftOKj6zQyrW!Z*G^g#s1paY4ESd z=1JPT1>9Ra5j#^EP#wHOJ$w4_UE6L8sDm@--KOiMV{Zmfuf(wUKHyHdx9SZ5Mv0Nu zz6;p+ujfkLnY4R*P#wH>-tAU>?9CwRZ?x+VqW(s^{-Bd`Z`B_Jtc}Ki_EKPp?ukC? zwSUH(C}Ylvs0!Ufx+7ole8yiHmrkJ5i(L7;(XV#md1HdXmK4vnPO&dyo7mGfOKjD( zyvxF%Ji8P-lebbGEKCiNPWuiq4i$ghmRmj z68Dg~{e6N5YY&y?Ka?UBUHX70aTm@JsOWP+xEpylw_BFZjs*%_?xJB2Qq- zd_PQlHJE2KCHsEDo7hIn=k9C2UWV?^^WyPb*@M8FSwoU{ z3&ige91qwyCdU)sf?vJnF7&s&6DYbUG0R@_jDcq3LiX{Ae<5%sUg^YDU$fym`;BCM zN95Z1bGPvjXGdIXB^1df)M$FQ)Tr^{S>n?l-^q@aq4V_2Q_{ zFZ}taix>WR)P#k#*oId|Zk_es$Y*E$*U0B)4Ii~_R{p5^SzjO3Fl+g!=V!@!NwB(Z z)}WCWEqpj5uyF0_ZL>y?%3Jux%@^J9#>|Tr#q*4;S&6){gQ+OKWgm4pHc5;)Qjg)FOfHvys?Ywpl`5U?*rXl z0?&9J^%8j&p1Yv$BAYKYy1fLR@jU7!@+>@Cq3??}U$$v}Ch&~sQ7@5a;aLTJ3vIr< zrTLlYhje(1A844h z;DP67`TZNO&*L|a-$ndbX9~H`{c!9>@_vI=V}dR9XV_Ps>XKvk{Mmu`7W*~bvaCM& zbIXZy^_t7Nz)!s0LC%6u!K*?ObBtO8{b5eGu8cLW-AY~7&Rzpq@A{ZBWzSEK<)A}y zU;2DXOxJ6^DwNYlJ=yOQulEC2y&u^1R6!`Sk9xmw*L&Gj?`6B5SrAI?qn_;diMRKv ztKO@2yfm?i>SHXI{IVPm@Z_v;1KHYl0$=Azvi4A=8`$jGC7;Tp{tVuJQ9KYM? z-(-1dWvqVj*}mf$0`p#AI=)n2@^U)7%EqV80Pog+7~YD;)n|ZrV?XfRV|H<_3Y8(N zOOoI?wp*?af9C7)A`vg~Qcu>$Wc<7kJxCrOoi(kAE-p+obwq@6~FLq}C^4-o&p9y!e`tWw-o`+i^i(l<5{qXml zg#$=iVQg^Y(#qH{HHp3);OquY4sf0U4rd>{-3pvm;FJNU2sr)~o?dXAaZmdG2-=V0zvUrIZy-x~$kG;MiPMJPmiI%}h_8!G zMUkm;WU3gM3an6;OnEKeO~awRGr_sL4>)Rtw-=oF`kojKpL5 z;oZ-xK0WWI^g;7~hj(N8fb(g1cLTg@ysv-W9iDE~{%AyR-lg`zyN;(5cEX7VI{cf@ zJ1w6K{#<;1;N`u;&1u7@csc)}ocV3}WyB;Vs*bCNVh4*=teX8b)%4MZrRDmac<#UqLnSaXO#d78##DQW_{eF~nW<+IjSsf$yG>q>j zJ<2+=Ws@x&y}Uo}17?=MM(-+_^C;}S#IGWH4sEs5lvK~5O=7Hj`^kGUDgDSK_EQE} z7e`mO;A2LLneStlHY(NeB5leZLV33_I!VO>;8Kb{%6_{t_BOOK{^WJ`JP{y^pSk$qy!ZAs^>yx2p~F7s8+mifi<71 zP9GC;UG2BI+E)C<+drqb{&>)z)3uCP%%1GIZZ8|kDaRgl9I!(XA`Si9F*q@ zwOID7c#uPp?Mmd(!?lPwZjSU3an@|?J28<=C!XW(Qz_%Y*2!2Q<;3Qdd(;l;XBjV~ zZysBP?%Q%B`!QRRbVKI;g}@QH;(cCgjXkcDo`#F*&(MlKZIJHI|Cnaf{`+~B4Knq4 z8TNS=aTqQh+i6AcqzJoGBx^^5)Z%?w*G?}dd|N4b*Z_&$NPKnx_}p;@eAa`{;(rhy zi9xaVGo<&VqLqdpHuSg3wgvQk$0M{CMb}%g0VeGg+BTpV8zB0d+tKrc{}cAjfMW!`d>I_HzM}Wv zpl$P0wC(mE7i>t33)d&fcQ`3V=)tFw{>tWRoq3hmXOB8yHiOHGuGIO-Fbc9Y+&{H6Wn?=*boPIPQ1d+>mhGg{j5`*TOj`^tXhdB~Z&SrnMvl<%f|H|2p_ zW|uGTv%F(JGPM0l%s+%K>TCH6*m@!Bzu>F+vp(kN=;`+Azu1@P%mtI)S zZXUml$h*^?!~}idki$>rRq{S&g=0I36YB9j4I4xJO?>BHyV_0O&-mYMkCbGe;o zXzwlkesaQ}4r33!*u`AdiM0|KM-fg(5FJAYaOv zs^C3$zUYYiIf|bxyq{yt^g*FBki<>1hgVx#uj&snz88T-~B?0f91cF`zf-@YXM zbo%o|61@sK75&y1&4d35G(QW?8E2q*GBlr+MDxG(L-WienmIop9>aC$y@q+YJN~6( zFI8X8M|So5=kksVXUg^-=aJJLybq2JHA;LqhdseXYI4Y2n%(8c?q}imwX<%e`_lFU zM6Pqer`5*6X}@0UkIUac2Byk>=Sk<~i>*(m{V?s_elE6|wu*=y6$QPCwoKknVXZK^ zt#sPzbv_O2p-J{7=6-hY$w=ad;8M1yIOaj_qu%+A%hPwSFMHIp!Gll1MLkr!u;K5vEPt0;fnSx zVQ)x4pIs<(SZgda8!xFIy$9*t5yn^khRtyRuoIm;HAJ`yl0B z_Cm^@#zM+_P5j&`Mz1;*D$-T0tbLvp)RFrNyN=PE5fb>ar)e|rqsT%YZBzqSY^Z+L zb-XosPMx}pP%-$s@p9@2UU^C79oj0OEdpIR)Ri+GH2p!|seymu8x2{mYI}M-^#-nK zw&EQk)={Lqyo(mu3|-jk!StisUe!sTzh;D1^3K>u`kd!=>gow0gXiHcpIl@hKwTMI zRwe1f{G{=ukTMb0@&cCvJ9u8G5ntawiT-ImD->a!_p{$qwNBo3%=K@tvO|D|PtA3ORG@kjPfAXXq7pm)dyC8o6@)xowCuXILfnex8hZo`$s}dG7{U zGQPa3Mb5_isqmkC! ztivLg(uP0a%lA)Q*~A)0$Ul)aNaREOK^gyAu~}0#Nu6L*m^0d?d;#TiC|`t+nj_`$ zt-cPtl>&Q0&{~VM$4XP)|7sf+D&<|22V3+zPAAp-7llfB=W8|3S*+Rh=1*cxQhbmK zeg(`aPvG;+Vf-p!p95>iww<)b`PYp1FH67%CBhLA?fhjq^c=n}>NH-g|@w^dS?&o*buT|~ST*KhQSkfftVMb`9HCmW2F*-jq z2B6UojR9yZ@~SBtIA1it`J&?Qh#iPO)4yT#U&f@@>*zORE@*r6sRc-?-ly3eQA8u0yVFP_a|2H&+3x zJb;hs^|qU|Hyzpn!t+xW59dRBz(wz0ALq=HDP}Cdyo)_cv6ak^#l|f`XLk1x&m^yc zyf)-vL-UZ(oDpXI1~oJ^HgQa+o=4_Xw_eHnHu!%B zAF<#IjE%^+Tvzk1#B^-<#(BPcX}9iI=sWFjR&jn2=irBDV%M$%j~mR`=T!m+*#oy4 z7&}~e39LE5Y9()#4X+h`XE9eP#a^x!*vtVXUh`g;)lN2Twmw=^-}Xdt{n3rn>Zd|i z*|;fKSz&g**|PDlfjwsm|xG$>ko z5z78Z$5t*AxtDk63WC1;Y&kF5pQgu|Z#{vWEke$SO~`x1&ursekS)CXf!%qwPUbee zM~NKBJDM^^z5(9V!BL@KU24=yd40|b^>eX1%}aB;kkgJ6yz3+JFqs?IsT6c3wc$Bp zi>>fc&V?!4Mjreu+amiLGU|J7(z3g*s5vv#iY(^ja;}#-H6$__C9jqDOk1H_`luCJ zy)s?{N93&a7DLNKHFl;=smnhW-8wv-*jQG>8s493y#+m_EbrVM2zY}{oD~(z9^<-Tzpa`eEw-?G~$?l#%>q7WfQ*mN4eJ7EuBgJ28`_G|2yZY znBekt+7KQI?aA#7p&eNtb+;pX)tq+vJ5S{ry?-V#KW7e+Z^}E-=fQ))jJMb)@pq=; zD})&*#P*lcXX5MRV7E;6L{cZl7!V7?D+8HAP8Pq5oMd4)QXG~vM zKm^^Dx%V9GLIvY>1$*%7IJZdjO7!qBXYGU;n6SKM9?sL&$Ia|Pyp9holOP>QU(Oj0TW1pUe@6s=B z-Ezac*#$G%-zGN384v0e1Dz0i9%28wpLaf+y(RBS>`%r7cbv|>KS27Baf0*Mde0Y> z>(9ae1ZPaR*Rz7d)efB4auhMBjV;$TxOe%H?9a#J9@Bc1fK)^e1H;XR4u}9(=nj zKjrZQvks_y-#8W5!#T8f1U>v6`zb^Z=R8dvV9%Mx71*M`fu~iB*nMo3UvyjcHhLQB zWZa}(vyCy2{!C{*%g>ms0#o6g9!DCZX_bv__`E}*SI^;r9mWP^5u4n^z9*r#oc60| zznHw2!66qMN@%Yn?8*23(u~`RYRXIlrv}R8Q6_p=<(GhyCsSlib$p2Zl|87Y^6nSE z|FR##d)kT~wqS^zSP2X{6W}ReWCJ4$K8*e?v7jfn3UXSM={LUxU5RvR6FCWv`O`jY50?8H@esk?w-1e?<%0{t4Nc1q{PmTV~;d$UR&m%&Fxd}OTsDa!bQxy zgU^Hg;FAYFZQvvEFu|o2T<&q>0S@91?EO1u2d7=+|SwKx{Mpmori|^toz={{upfwkw3AwV&~BH9qZo&7s_Z^0XOkiML&>b z4eObYdoG(pU9sgk$ej38;#<0LT~Grj2SW> zSbVi&4e|H~uyvp4F+=q#BQlZfEB);a+gGBUD7IDW$s|ipE<{fREol57hL1M7CK&O`%yAx1(ZkoQLQh* zTi^&x1Ai>iqqMCN+V_ax1|8Sfu)NSFbPN9CTm4M*T4b-sv|{^qoJ(R%?{gNV$Toeb z?XB=f=1#5Jzw|ZyE}yz%c_v-fejHwW`wP$~X~58a7iTc_^1FDp{jP(B;&;KHF!(3jtY9s4Wq=ZDka!9e(d&-5YZa5>}Wnf#?=#0j*{S1Ij3 zh)vuLEVsWjo^Ok}*Cu4%BYW1`;71BJGlf`>hxxtuO!9pK@$IAVv~3D{BDQ?2(*A?= zX}R>N$cgkRG9De9Tk385tMtJ})6(=K+f|m_rrxrK}xD%z?g~UCFb= zas&8DZakdvFMv!2kx4%=>(~n;x>&&Y#k^FntCVq#`)!OXw%@ir?ze%D*usCOZY%fN z4j|wC`E9T6VJxJa9t(lj3QxpuE2N)$jbZ3S+&97ov^CDy0KN0af$!~96;xmQ+0{hwHSqWuN*x9FR@&)xI+a#wr(?kCalf<$~w;-|=O zY@~B`>>f*&+;G3>g8L_MmvPU*|G_@t$sE!;|KJPp{iLVEo#KL<9Di`&kJtV_-%7N< zm*~iX_*JWr1=;g5ivEU`%AA&#rs7`0y@Md|I zZ@Qr8f{*dS4LbJq0=CK6euMZIuNXUSVEiE-YL6E(zOVj@KJ)QF>2Kwm)XXJ|8CTF# z&d+Z+${hSyG4m^R~{ssQGK7U{p`Cq|*5W6q!mC;@i`z?y7 zYd!n4P1g5Se_YvSh7-42gz`7-Vcw)_g2mHB|ki^xMqm398E_0C=I??arRKTaSI zBD=$p2a%Bz*QwY*^yWio+GZI0|HPTKGgH*ThdS;%bZz%{9y;F`P^0Z*t|#7~Vedd4 zd%2xHJV9T6a2;#L%jS0#@_zY=o28F48bo$7wCrTGKZJcOfS1p(e>fw+cZipjc3o!} zHI0ZP031mG3{4ISHJD$MvXq6EL|W4(o+WP6tE`Rd8XMQ-^_^_?J7w1~pJm>; zoA(flnkR&cxW@)(7S}R|+d}LRJ$R<4hjZPWJ+LCl)}KS~TYA4(V!XC!$_#z=kN5=G zb)K0wpC6jd^Df%SrX6Wh>_ZVcoguOgT@q9Bv;XN@%0-|hoA#YDhQ`5p|G=`r(hoO4 zo1F727`c5&@d;Pqj}!%nhk8BjjCZp+M<7&%A5p@5L}E}?^q<_%_laS$hirUk6EVzBlWuX+ z`XA?KmiWVo^|3arn3;7vmHGb%a;H_h7_S#r;E+lXeYB@29;8y5QqH_SK(X(=t8vxlU=*&t5@+AJ6;ZnwG75 zpVfILaW#!6SJs@Gs$N{vk~`yB!F>TSw%O=dX2E5g(+#bjykLF_c)xH4dRGd)cKa#7 ziPJn0nxUhaHA!jDp?MR}x?OPcuCdyc^F=+BFA1x~Chuun4-Wm&8*lHCH7zOUTlDS{ z9!PudQy;wD?cwiP?Va^NOD^Sw&XxEcx;`R1(_otnSH z&1ESMSbZIUPwuwkb?%^Vj`pteX6gei!mDQBCfCvYd3R0A=4WmGP=@!3mX+^Ke52Vd zrv-l2S26@=Q#{TqRs;viltzpIa{p!KL7cu|B zM<}M9Ec!G6-|;gJPD5`b&CwSbdw+w@Wck!3b>QC2`f7h|k4)&`c8*gzt!=SqAF~hc z6Z?$oPX_n)8G9HnPNDDL{ZIB~+UITbFa}~husP>h_6Z%<>(tmeu^EvmT(O0bCB$+l z8^Je;V81rej-Nd}s%~oNe(odG^E0m%o5#4)D93?vCXBV zJq#X_o^`;JuluOVvL%)^OU%EnLC)Q@hz%U5d7-THn4i<8mwpf%=fuCnpObNG4|_7?KHF=}ab&Ih7JMD2>}KW?|3Mi) z`4Tshd9^uB#d4ut)?NMc%-H$RCVeR9pYKARasow7(F<8aSE{K1zWCvb#Qi@Sii~hI z;fs_XNj;I7l6m4Iu)YFc%phx%lsQ3JH;=Hx>}?znT8X^e$ljhTd_?L0<@CjA?^7m? zucsI%SI(rrki%@|LVB+Vym025tH@gkjWXYq@u>j%&SEYQtO6JKycb+_-{X(;uy0M{ zW&5mx!@VL8jH&VQNbgrkj7L4lRZpeLXVkUM*kMe3Wva*s>B~t+HVwKz+suP@a9EDa z!CNhR)Q!NK2=)I)KNcdVe%7#bnyyPaJap3Cx?e%u*ZnNxu;4oje8m_0rOOu+8FcVZ zj$eq(WwYl7n>Hl^?tZ@t{hsxAfhRGNKfpVyuM&R7Ikb^H|99qjj=Zn>+Cwcx3tsN@ zeDr3g=ZWK;IV*}b6rK9U<3*=d?q^JhdCjL}NR#|L{kQ#n>*fQ?mC& z`Xfvqw9!{b=o9O_W!94?n6Yulh{&prt;R_sNAZKoyfDeG9yck<+&+ERQ7R~bkM(^&-qHN1*mv-Ie=Dfp=;2$Jxt#IxsKi!GzJaM;$;L-#eQtYE=A@9dwqZ1! zTx`_dv=AF1Jbe`2&P3kmTQBn?iA@|Q|2oMhPhvlNhNvBpsr1ne(of!oF!{w!KC#f~ z0M;O;kawMmeS~graDAWPd68jodIR3J-AsHMT&iE29BR9XzDIuAO1NSt+HT>>ITCGi ziOJx*R_9F(wUvX{BH%7Szt}$!y+`M5uYP|(sBH=5r&6yH`MCiZSq|?7H|b|^c=dAd zpF%!mN|3`+{EP^)i~kIs^d)sZY43R=D7rVnB%QdF$R#xUq4_yzyb2m41(dG>Ht9v0 zKkWA)Z;H@gAaf*7JA9rU5nfhdUxDeDwHUzzm?F>R>}4&l;GIa$8XG^^sFn4Vr2OsW zcMl4+@jZ=f@-4abX@5AGpEsX@pAmQ&)_lCr;p6t|li8Y&npg0$?FM)PKl7wN;3xgD zuG*KX`8kbP@pSt02s~|rpAIiuh4+lVW$@IE+iqY)rSIs+G0?bm_SDd`$lEb^ah!RY z)GwsJv+3`tNpy+ai>w>AtY7Dn@8tIv^3ZG1qq)s0lr}H#3Sut@qwJBbFEH zo@!bBR8!~br+&>Z*7@v;Jsb9(Dn9hH^i$icvn`}x!<2bLFDoUOMX z+V)qSs>1d6)@1XnX~Z7u`3N>*t?d2cx`wORhPZtMPV!t2eT7%@y+MoqZ00%HgGPp) zcX(&d&m6rM9yC9kurKcSLx?qeYWR=$17F(}+IY^@hS(JM`&fdDdknDbixnTbMxQ~^ z`}<67#5wmET|dI+^Nl6G&4T<#kvs7S%DXXJgWk}sDy3%Yyz;KS*d=1?lNG$*=%)^AnOoSuUCkL) zbD?Q9WsXwj2)6NPIkxx)qn9nd8u=Al-1CyEvBC}JVJ-P&4E;qH_uN*{Q zQ054EGUh6Kto@L=-3esk)_H*|j={H{TD3ULILNn3Lj@{DzgHf{4jsLYJ=@p}=}%iO z;(e4UvSGJ%^t!@)=_l)5FKlQDwilV1F>mY@dd#!i&A@(#85^YC!(n4FafaE4+l5zjPkRhjyUhwCdv3Kd4c%4PmIm|vq>J*)!PP48fK7`Pe(r}NXZ+onL zaL(Hb4anlc#=c?`HYIJD%(lULH$usCj5$_<#I~ps8tJ&hO ziyyb1JtFd+Mml?JU*-Ny`q?V`SzR{!TwQhtTJ*JVpNmxZ!T;Yq4#nUtMmHXWnvce&pZFPo*y8hn$5 zvfcPr-OMq%BV$$f?NTR8?#=Ed>aFGZyYYI%biG32H-6?@VSM?3lwTgqPle9=xM$P4 zP3LG`HbU%%Hg<-`s-3j4llke+o21TIbEj&~8O^%p&TOvVr>#3kUmmaTx9Sta(e)>& zoztb>1gqZPxG&|mC|>?tUA`2(1-B;FUz+lz{FGqRVPO9&_Z9K7BXwDWHECeSWUc06 zUDk{}P1)nD_%BRmn}qxDcjAOO!sgpd!gC= zbFP>3D~^{vTbGRxyU}p5pYSIp^Lb8vwQOZB??AxUu~Ii)?>t>E8=cklu zUt@sS{X-8W^mVw)*2^4B>uZ%Yem?kl(bwMVD-p)Z@Mcfw6XsDe4vMcXaqR(%IR9e- zY0xF})KyoocK9KCVirWcNJHZ%m} zJv=j&vC(YY%X4_6nSUjG(&_qLBeSuY^jE2Om7y|iSg|lN^q33Qt4XkAzlO-yB~H2x z>qVZoQ18MxEOc;#%CB_6+Tzr)@v0M88-n?xopc-4dY(hn8=io*jPH^!yWIsV_l79?OooU=2!wl`gOt=Vm3r@{k^*9&^A% zKVGO}zjVQhIdyEA_$$xY%9!l0bmR4Bo{v&bV)?dA>|~7HxyuFXs8h#=)he*;v0@Q4 zx#9hmycX(;jkn=-Gd^{{=z`ah1W)WYV^;S!l3?v4{dMZiNWjwLn!qz;yaUfCTyTFX zaKOu8%oBKF;QfGnS#x#cLfvl0g6_4hx-Z%|5c}+Iq24C)i09~fV&`OUr@~%|eYw|F zZzJ`z{k_O~S9ycLk$E~c=1C{-GApl^=NjssZNrs4qjP!I{IhvmBlT_B68}KMzS63% z{S)S`Wuz~oo;Ba=?dOY)|N4Uo8(-u4-lMkfUayY7T!Sz3kvFAx{Kd_$6bEsf_(9op=#_(&knBx16eeNX~cAu^Hw&;eo`#!Sx8ZJ^`+*XT-u8 zU9a-pN8URXTn#sV2eRK77mD6w;kTQ5f4YS44T4`TzJ|oG_c3>n{5jxv{+p{?URS9L zvcXN_Kh=tFZb1JQ=HJzP`+@x+`^WID-Z{*DK4PqN$CQTg4zh zYIKb0Wc5!!A8LDmvX4{tQQ;3Ul?^&?UGvaNsI^Fa==64Bj-WygK5MrnR}XY z{u_I=fBm|uUH6z#tM|7>iIYk{-ud}ZnZ!!jEHU0|@be_j zQ1!4D+oY?!Ue{owcWe_nKKV z7TMBm4u&>p_$}-6%Qp|z@qrPtzlr@1_rBzwf7$c*w~%4?{2hN) zuOrAjw@$yKJ}PukF7;;us}kQ0-ibW4!fT;htJw#7>WhtRwd#-^Y>n6Ug@m$oXI4#Ye@x^=B{ii~h*` zI9iMxjG&DR>F)_VPm=W})zQW~j216#JZ#>aWAmoZ_i1#zDj{z&Pk4qHwCG8%et~}X zvtt)^tZEoE(FY$tVD&)+S$1OJ$>(p)*YWqneo$@WPY%F;uWbAUXNj#u_H;XTEN{8I z>%M1ZOs=Irn`y;&>^y1n547oyzs=X{T?zQRnJXAwcOS|=HTaKud*`Lj@SE>; z)_v#0&T!Pz6+DaYmoHMwq%S0vs@t~LK^S{NyxXF`hZ&~Nu=`CSbF7nfjbZ&c%(*E6 z)iouOYsUTxUSakJW#y^GyOZ#84^Y#rMS@m>O&v$<@TBtLw3Q>?L_p(rNp%GFDUPVSePVQ%_H%ukUNj zW8dCf(gISaDHf~Q3Wz)uLp8eQsFV_#Kvn&bLP+&1OHr+&eoxrCM(a;P-qaO=(eV2T=62Q|9$Qu&S-I4fmHyuEx8lbMc;RzZH|wcS1nl>MrB7Hl z?+%}#jnCO_w7cX{+E;vk&%s~xSH9opJUjF}I8x*_v3EdZw0zGD-ZwVhZbL@5ocn{$ z>KFEOzVVrlI^~YwMXk5A&%A4L6OuCh{p1m!>DN@F9KoV%MJrTxNFg@<}38MW*c;TgZvPYjXtXo1OD zxE9?1a^(k1591X3hQUpARmKg=R#^KQqSvfy+5G5hozXYm>fH0gXlEO62utHQN&sCdXFyrWWLF~L+Y>4_1~brtl#FC>Y(sm_Ot5qy)T4j%1Qst z<2!JLwO8NTgC1|2wUj1xzY5rNk%^F=IwF+wkQ8sB`kbLFo(I$LQ&^Mt-~^W*`k z4}S7}A*o+UePWavPXjw7Y4?&AB2DA@cy$ z_f-iELz|RLg{VTl!9Lb#%Op^Zujg_-1sx3LW2rj!T*& zGmHzmZv)739kLuomYb2~e9|r1RMz^NjkAo6|G7GWZ(rX7>I+|i_dkKJoUg3)=jz`0 z%6^vq@O`@Vp(){?_sbwM(G;l;}~Z1?+18AnrP2M-FzlXb^eI z=-@q_#-fSU>vP8K=6i~qf1K{EDG7Qyc2h?7cdJ33nh5^H7g~Gcqx1Z-Zf7=5>MKuK zc^4(+$=Z#P8EiS9y{|I&arh_eQpxMF%nuG!RLzw60q4wF*YcW~%t2($$=5Kn7@b0{ z<(=*g;JTVNWiQHKBCJ6o)2oS9yslKogN#8diC_5HKjZjNIXs)3;bg7#dK^vgWICDxT3DsP=TTze>j<)LKus)3)Xba~+`}uyouh zS(`2ZZUerj2mZ>s;A;Qw^{L40t)8w|$NKlKPe-=LrKi`Vr|5O;j%OxrTz?pOKEky~ zr8Fetn)QgMBUhgbpWYztu7bBKUrYFRKd&}wUxA;p4wubO#$Dv>0*9~4{&V;_UVon; zvA@deM?TJ0J7jGxGKn>uFPZXv_bEA?IVybAG}=CU>t-XroOw)n-DG+Hd7toK+b3k8 z7Mm1IRj(-gEfpRWN>5|WO6ESlnxW4tXl0Ja8dzd zai4&7=&wMVBd-tY_s0_FLuj7~pRN^o#n;v6U&Y6FbX5BU$dC9N#Y#OCMhC?f2(OO} z6W*lM)S;*BF_8O*BsL=ULwtX+ozvJ?Sc>dP+-3r?E`^+jd7oC~N%q0YIYYa!5%Nx9 z8-22o=WO)TOB?bm@q*sA($*ozb|(2lf2eZN4o>24ipo0lTd|*nzUuP>PX?RHQ`P0@ z*Sd1_s{&l+fZwyHiVp4drPgdzsqMMQg6Oo+wYjVEP&x6_0CZV#AG7iOL85n(kIqrI znljAIVm&?H`aG}f?-&|tLvBQ0!ci4E#hFVop5zMM)T!pWkue3io*e)Wg-v+kgPtcG zoQUP)hvNHV8)UuHtt$bM2_I+oF=xIJnefZJ`oIXz|1=wCxnx9SSWWmds^KtorHld5XSv5iALws89E%|_lQFxUs zAJ0wH^Q*XAnDAnEch4(c&YqPy4{H_r{2|6>EAC^z#OFjVWxtd7D^I+K?oT0)Z~KZLE$ zRf-HOFxj){YyW^a=3BH~pfcKb^G=M!>W+;ic6hUj?ZR$F$_4M#hBN z6kARm+3Wui`4Q}h#5HBVR}`ED_Z+bm1;9#Yt@akq`=wq4JW8qC3O#Qkhho#?=f;qh zN}c2Xm$x^8ud=%H|DStrLc-F5N?p<1dlN*|)(wReXL6IvqGMazN?S*5v)q6nZLPIV ziGWEUXoXJ8rF5KunI_26l6Gcj25U222#Z>q&d5?bwNC3@5aEZ_4z-~D{gIpoqPHmox7MYYEzt92fF>LanfZ&PQ!IY&lv(US+u z-595Az{kL!g~6;pA!qvGt^2Soqr}sNBh63 zK9Dzl`M^=|r7>up%QTMJZeD*4@=G!rKVrOa^G$Feous@{`%N(bqu=j{^?d-_P~TO* z>5oM>sm^NJLk>QbnF_9yS3*D4^!*j#Jr0cUjLN;8=O&%0!kENsqt)&O;G1XJr2hU= zar(H8^JeHz-@ATWG*x|a59$RO=&4#b1Rm*l!$TepQ{>T!E~YCl&e$X)+o$ncXBK5c zpX&G!zxDSH{+5JYyHv8JaT(={Vttcoe?Z=1bNl0+)+VSVCb%5Cz&`Iq9?rg=`r;$W z2Jk665}89zTJXp_kp&rW5F#I{{=3j0w4Uf<+{mL|$|@h-w)N4%q4Kd8-PN>c?(s&Q z_b?XQh&C0Ako+~cLpJq5lRLoQ*Rko9v!?Of#(4gl-wyxmct#q3deDA0@B&K)nzDAv z<8K?ZQ<`NDOu`;P7i8$u*emoUd!^(=fIDuT_8QMdsbKx)UC_PCN1=VinT(A>dD$pB zi(o+4GbX_p^>CgZ%~%-QN%s$fH-COR^s!yGn{cahc_hQ1N6(x2_iXRnK1SyB;g7FB zZ{qhu@nP{W+lPmM@SySM8FzqjA0`(^-!<+(c;nRgUTbz~YPj?Lx8~_za!|I6)@xW3 zHDeSn|7H|A8hR1VB@0CZe|Lr6dGwz%e)a!DuYch;H-BI2bEodVgqY@F|1Ws`oA@E{ zNe=!{Ja&ry+fUQ~WV608i2o3G+pwPZz%FD`;O3A%GGy(CZHtQVNRxuaEg z5v%W&>U(;ulfFCi_RTtm`kt@8N5?udIsEu)&ivE=u_qaOgfT`KcLd+vj2pRP`sSWj z<#np>h3Xp`pl?GHl6AR!puTVQ<{;nv=aUE0i^w8EvY{ll+IZ2U&;`(jh(9`abn zZR#Hy2w~4i2M+8%119OfN$`Z$QzP(%^}hnZnhT@ifr7KdM=QDev+aDj@wGvE@yjpa zV!01?;$`Cv%-mI*B8Dn{y3B)FdRBXS1bYEIZQ*carHprT>iN96FP=uD#9`q2vaqY5&UotVI<#H`Q>CGwXk! zX54d(ZH-?hy?Yn$O`MCl!w0^vO|}j8g@N7rT(SwUC!{;C#1}DoRB{fQ_)qd5Pb!~V zKj)cw+a~}1JELifHX`UJZ|=-K#N4@ynS1%pPd>=pDZeM*+}-2D>A(8uX{1?y9Xzj2 zdP3{_p)tpw?tw2?uz z@haIe^_1yh&Q@T9w&5dK|1vfbSpnXRtU_N@jyV2w26&@OcCFu42rU4wd~e;oQavtk zq!ha=h1}_HEaWVL5nKDGONK}nj7ny%Lf&D=YY#`7_t_hO6}-!4r~UC&F?UQF%YQ-N zGZ<%mfB$yl)5B+#%#Uk-7PSA7SXK@BA1UOR^tWKtTBgpMO5GMC$AL4dC=>I_xOC*^ zX+1rU`$75t6#uvLzr?d8{p%aAH4c>xU&!GPS3V4`Z&VdA2IbI$#~JACnb<^eC$v)I zn#Vlv#z$==&#H=X%>&1ejSH>%-28dRui#9Grumm2Pg~z|xwm$~oGX`S5p?Ezw7KL;-Ses@cW7a_7I`ho?EhK z{iHF@Q$_HQ&X0LD#D2546&_hm-oD~iy&li=zWp`oPpWm2im6t^^P3A+tZU8T`RpC| z;2z(bSkc+=Juq#?KW}RqO|MY z+{X-U`S`yV{@41h)=I=Di5ho&8rQF&CB?$#!vB&>qMKT1xQ>04J>qeAL;T(3@wcHd zWPr}jN*a*l)&GDf}hRT90a`4d{d9c;k z3xo0?jy&L8kxt28$%0wP1on;@d7wB!53->Zc~HkVA1f~Cer`-r_hH5>d61G_h&;$( zH@GxzWrA|h$nPVM>Lgf!^Ivk{e91?Tujbe@vcK*o|E-R=V}@}`-YZs+1=d>N6R#+? z76+yZ{L^K?$zGSfSj!gGX?uu!yoo#xoOtsGjoj7K!#$VM#g}j=nVxIq z^Kg&Zdge~w3jUOP_AYn>4z20G=lhO($ItwrxnJy4UBChi@8hqLi#NOW(tUalJv;XO z``w(Odc6n6Kav}2%K!6?$p~v-AJcpI=w|-zrjHNupYMB}@Fen_9_e@uo5fEvnvd&z z^y1G~lz;hZ&icJzM~{z}Eh5=m8*;WwUkaz}QCh2a!dD&m3bMwMf!?K)-^4bkHFyge zylLNz{kGWPkGp@sU#$;+J?zgPO7}L_=J5fxz2MjV>5BVszV84%362WnhdqDT(wFi~ z{qYFVzxH{$c22V20pHz9Hkq2&N~2~1>M)A%o)A{uE1PCs40M2uTyMN2>7cT6<< zjj`q)LCufmX*GYVnTucZJ*@A=7bh#p-+h$%p!`uM{8!0l;^)hJ^P{o-aH%`Cy}q&e z`Q@bb`f@KX(%KK;$odmcdu_?j87|)|x4m_F+7n!xyteH6zs2w4Is7Yn;r{NmY3X0+ z;NSQ?WKO*~T87`h93bf+>|+d;IYn%0_TA=v4u!i>$)`bkfDt%W$hZaJ9gJr!4EQLnAkG) z(CiHQUco(_8p}M!@~n|L1?_Xq7z&OY^kk09Gn`2PEzb2|*S8UZ9T_gXD_@=*tT~D| zD!2cK%+06&6?$YI6hldIR)F#}Kd}NDx|pN}x}_H~$6jJ<3|N z###SX(bO*b>v^MyEg?;7CV*qfT#E~hL2-6?<*2jG&Efpcw+3aGXfWi_%tMs3^p{J& zR}MpOzgyz+RWAKLZ|vov@re`6V-T3D3!Gyc&<{i88@8F^n38XyT>0jGbLq^LZy}$2 z0|z%@pN^M}5d*)|oxs|_luDy-2IMDtST;>w`RRQdPJV6z*OJq+!3EYXczE9gEaG$fuLM2Y6>`ra)jK<%3v%?2=HbmL?wz7ptwS)jT-?h? z(fi@>u6+bgI?i^@XBYgTwV1u_L*)`_ockPo17YJ73#Z#j0N z@*N!UcJaH+9hiG)-`XYO?J*vX+dVq*=VVFl3$KbTN$x8SG?XTUuaGDAT|3RCiIR4g zCR|(1%6!>sEkWm|X3j(~u_wkT`iXmZt7AOE5qxU!c5JJ=A6s*&HOF)X+zXAPg8xR^ZR?6YuRB|=G(sm2*t0^naD936mBDc2WLUGx3rnSCK*YH{|BRgH62DNZQ;r|-l-p$YEN!ZtH~seb+W z*y!wC=ev0~(7EFXKL0yAzq$6shu<2Sk1Cq6bMx}UgL9K>Z~NO;x5KsnvpnrfKJM|_ zw)RVId;hPWExeDLvqT2z>&k86J9hsuU785cPA z8tW7p`c__Hd{ND!MyL1~bUP>P-Lw6*hn%&ctJt4NTQ#KxeJTDrPPy6V(=7Tn&n3xP ze6XeVIb33VvIhGcD@ktPJN70y)o!kg?CcD6t76wD91`fMP+&EyX{z zh8@6ot?fBl7cb zlXzjq*1U7P2?FO%eFa-+;3C(c9mOxFWS=V(b`SlBY0M`^*lokyH{Fa3>Y$C^v!3s7<04-hAES+!WY&)-n7KTcZ>i8{I#%=E$cP#4{_Zin z59PGIp0dHyBsfR6#VTWA}&kV)JFk6+fr zvl+wZUD>*XXUTr?{xb~$?sYm@{~X)xo)_}`^@?%4V=$kr8d^y}r}sL2*?6d2Hq!}m zQBn!$s;O=NTbCoJDkxJ8ZQaUQe@@%$QHNZld)@rV8t6*;sT5i*_?sr~3vYY91zRUb z-4Jw@;H>&y`S<92#U(#6!dcsd?V-3zs)D`u)KlAP&&1(*H;#A9h~d^j$HCP}(7 ztAKvhj=>9Xv=z9rO=A^)wV$kQq_aIm`)NBzK76Haclye~R~j4{8G)@72s`E9f%j`a zJA+(7r%%6YK8wt|o%oFbE-){p(U6}U&-BNv^hp|2`*({7&*7w zUGGcBv1yUf8SJenIh|Ug2M%J~;FfkpZ?)hf0&FIpNn0wTILdC$chb903TEumD$bM= zJkw(_?jf)23(BX8we9~TG?O}q`MQny<@?=yPb|NsocX>f!1rIg3%LS(`u!Vzr)d9g zy*82irp-{iX@4m^R?0aFncLtIV9mrCA7wwNve0c6=QL>l{(5+M#iE+yGvCG<%uJUz zd+E1{yy(EP=KT@c$*|T}Dn6|#O+HF)n!_DL4&TCj(|)}u->UewksP?DQNYgnTsj^v zujLNUENv}j4E6C!^LK7VC3$KEN1E}=Td=k2$pes1s7F5c;Fq~FV6e?E&}K~$vcR@O zeYICR-ThlLJ;5@LCWu!m zyfsEkN1^*VE>upMC-2VTx8z<4f05zj5{xo-#n=wxdu($q44D}JXr7Vz=s;KB74e*= ztwK{j))8{+A9dQ?T~?uMwO} zunDkLeolWSxohLg-CY0ZBJfZ|ef$sQ|7DlQ%0KGAPb(*%TmG_g{p0YN)|E~EFMJ^R zS6AR{7aXPVpX@?n@FwR{GHA|3`ZEfD`K0d-0Qe6~)-2$b79eus3*B5ABfS zuqxpMyLZbErmXtfFP@{U>iBIS*;fANA@akEb6DG6_L=l>_OnCBzT2mhSAz?!pSbG{ zgX@8^7o~rZ(dPW|mCe8d%-6C;uD_RvH;@+r_TX#o-RI)+A9&v-(?pkhcsB5QaekGp zz>ohpx+sYJkPZ)`Pjv@Il(kchUoz+W?{xe79kBZAYit_RFTArEhFfo#Z02)tJOT2& zqfXb)s>mymO^8C96RL?dkn^yro?O7f`d9<k^d962DN}5$w$X_rw>}I1Pa=?%bwKpv!4^=mBT|+(o89gU}&%#QGua zSv}xe6VX^7^yZKJ(}DQ$^T=R-zHoFx>_Bxmcx)N+*6gWT9x(P(u#FsV=~J;~|JKv!{apuOefJ#@A@frSBNP!;g&URdE~gW`hFYkGNQ`6tN- zwYdv5^Xrbo!+pmtV|gmkQ8Yi&6-zi)eXD+g|OFms^Bd}=wL$-&`K{hyyyRpEY3a8=Vbf@7m z)~6iFhNHx`$ z*O_pIi2-e;eZvpuH0^(~$+w0ccV*hI{?6m;c&z+kkEiAD9*ev7_2lWIk-_t9(SLgr zFU;y}EOs7fE9b0%8<98IWohh^%*J5(&!>2PP?nf^A#2F!%fxf+`O)21=ocrb^4J;0 zvDa(ihb%f-x%?#s_W6;Hkvx+twg&t0SQdG%7-7O`StnaUb+hDRNxlWWy>;8{x<}l# zeFS6e^3QUVl<9wO?HjZDmQfGBGW(y*_cw{#LM!g?5yoCb(1LHLZ*LzoeYB}Fa=mk7 z@CwDVgGXZ58QMdJV{;yLI=?!JdA$}H&X_hJbG5g~zza=D$7U&)LjGreB9am z?w3whOdv7Jxv4eg9NUE-ALI<_R&db;pR|I58fdgWq_qsm@WzgPrRZDw$o_^ifoR9r z&dBp~g$q;Wk&Yh>Q$~1n%Pj5KF-)16>>1htEXDLc0w3ksfU~{Q8L=vjZCl8m1@>kd z`J}ymsj18xV_yw^WV5HatQ7h4$n zA;#2??~;HPw$MMm%u_mRxD8wWtLmS+?%Bgj%(~9Uc&4n$!*s`2(7r9od~xQ7`WVC$ zd6VER^INBU1^TBNUu5&RmUTN)V~^bej@|R~mv*cGFC_)Yya@ZBt|hkNM3PmUnX9(j zoN@cop@xnnD$^4>77aUdc2g$dOiR{LCWgFJJSNJ$Kk*5T2lnu-g_z9p`H4l@MhAXn z4w<(_pK{g)DJ$7pcPV`za>}KXqsY||GPMeMD*3ANwZq^peTeft`Ib3CUCQ=0B2%#~ zQgLW(V^w)6w0`;O%JPHc1j|1AD!iV;W;SzhBv#&g4Y>I&=VG!>rr4{Ad&7GZ8JqUU z%nY-q8v8Os*(~)mFD~8-+ufYElJ={?iF{Vc%dbQKvYkceA#_v-nHxd|XMyQQ_am2q zDZ)BKFKuoCu6f)eC|snqP6utt_IX4wLPvV9a@w;~L?0QI14hw}e(Rf_>zMb0{1r`X zsRm5I(; zLznRKv)ET#ls|)gIe?exlzk&seh`?|uiDx1*P$0DV*^Z{?=(o3EI>AHWvr6bIw$*A z9|TW%+E73Kc3!^L*|y;2c;A)a@HKF#99MD)=2R4t*8y)R|Ft48>d52#js!+^BXe{& z$awLjdmi_w_7Rd_^kwES53H|&6U)P`$0^HL9Ox#+IKsvJrA|!|KDpp!j4R0lVN6F8 z$nsL|jyAt{G<9x-#>~8_FYvc$ttq!Rfy~|L$=n1ow*?%v;y=p<5^fUxv-)~~f%7$1 zxz8ia-7k8lIn`g;?On)@&|YE?)KB2sQNBC0m$`s8V}chN5Irc?@zOM62GE87-IQ|1 z2K;{cL_Bh@<6NBdziX0SzLPj;QPcic{>{^yDOYd4%(M70fZqHuIXBImX|$iekrMYg zGR}QQ*B*6Z=O&wpC;m5e96ir)?}z!J`@GHW4}I45al&1%*~N2--`DW=6c;}PUlcJ1 zqroqGiYNHaQgrxdkWOfV?)#ObxX)6l|LmIwErv!y)1vOsysnXnP5DMZKH20qnw#s z*z6j_e|qoLbjuQKh-I)A)avc0L zqn4K_fBqvfaCHqbP%$Uu8#;Pu4jl2cwa${*m(2Wo{*C&& znZEqzZQ1$Wnv+ivNVV-R!3NZNvcqr594ExM@wuF)w*42sjvawbm<|Q5409Hp?lTO$ z|K7_S&Z8^l46^qcnC|_G=qtkayDxKA*WEGeEuB;6@IT-zx=b-PKYY1ku)gP54?ic* z&)|OfesF2-Hq@PA%vA{1PsBzgwRa(#U=IR*fqW+AW*PedoT&YOd=Neb=LQbXr_p=y ziS_4yqcT>;3^PBk!iWC+!5HJNq-+)R5vQ);z)o75<+%oW@$;qTih)!R14*+sR#6-?>tIdHjpB7B?B|Xuzxoc+2>yJWJ0hUc>sIiF1CJ@#tF?_!7WJJjmo-TG(5FU3wdTXRp@$v@VR^=6)XF z|0nA57eBV!(fK8O{~hmA%!wZsbi=m93-LaUX*sZ)u|ZSXi>q(SXDCFs_VRmk&1FgD zlx#9N4Iz_agbri}|JK_pt9EFU zJZf(~ZG6tkM*HmNZ~74b{o&I?$1gtJX>br&yY`&fhW2t)=-HbbF{?G(H{brhabVV&4(8wpO9-N|2sz? zXkc>MWk>Sb5}T&KzOxtHL|i zMMM)$;8-PbNa7^>(3|%eoeUiY#(VL|@lJyumf_x8o%cZx#-Dn8sJYZX%a82kM?YLN zxRy&SCLM=QW~2MYvqz!O*`9#+b`v`nkBWDeiUt)^f|t^9@lHwm=ap}OAE7#ny*bl; z^ey-;wbZ|Y`O;hw!|GE`LWX*k%(L341-}{U#&hZ-!>3$Ey)gCEMuhpSp}z6)saHrl z;V^r5u-9bYsei@){{>hCSCns6@b@zI59-@=*;)LJ&`(4(Lz{{rC9ogDJWB^?{l@Ga zVx01`>)DIh(iBdPdmHDNBlDl6f6?PS#e)%HG> z7cS6qH%g|7eh*VmzoXPGSd=(kM%^IirU~xUY;elAslq9L&3y0n_McJCZ&Up2fuZtd zWsbbfw;utT=?h>Zhs`~qf0cX(_%pH;7;AM#R*4Ja4sUFFj#5WF79KDBbI-Sj!!)|O zMrTSB!wG2~C@cI<_wntM;OQG)TT$U%?O0yjJ=EXX;*Dpx^?{S@qbNG5sVLdQerd`1 zi^W&S-0&EuGuNjQ&whdS{ql#i0fyK|p|Jd4)_|9U)|aw>5xqU&OWcaAH1ZLDM9kFtBN;0*BSdwTJopU$mgT(qdvxINR?Y=;n zl)xX8g zEzkbB&6T%WD^PzoQ(nJCuOY8LLqvMD%y_Fdv9q7(ThDcX}g7x(5KTy75)?_Ou-jrUsfQ~Q#AlHZxB*d@q6e?Nuv zqdt&X*u{z?bHCSx&e{TCw9l=|Riv))Y5Oy@K)bhye&|DeNe;n>hSttgeQ3(`g}iKD z5?ud|%V>u=)>&jmue>+uS z+D5;``YtX5=OK7)OblKX&I;OV9QInvPK)ym-6@=Z54oZ_H1D82?c*$DkK;kwdJddy zSW>iJ>`6@VouBC^*P8*p<#a)pH)NiJYS-*zw6_d@^j@B)!!`!RK8FHob>!uZ8 zGiY56IOml1_ur^Ji-rd@##m+f493*rtpy9ek7{htj^<(G9`~#z@wNOWGe&+JT}=M< z!{AZ#W8h=HG&gOEB@1T8E&9`*9#fva668(Hn896nyx%ycV12FnrQ8Db2@R{ym0q7l zKH5G@Pp#u3mL^BjCp7s{pZs|I?CFuSB3yd>4f)7_4n1CUhV*#VDd=&`S`>5_O}Ub<8s@u}!C zHDQo0-`f5E4_)q7pB`QI*gm1f0bbyD8XM4$v)q`@!#WQ{^3tQtyBMd#Kdaxia>t+F zzQ%?%@-j8nFozZ-uQ8DY3t9GdAIs#Yo49w9GPeIDe_7CW6nhGDb{^Dxp$S1 zzTRW|J&C@M{lMZMZ!V3cb*6-m#uoVH-xZ>-!Sf#~CqY-U9dn13&S$ZD*ilZ!m~e6f z`48Xx8vKqtPv3?-z5O(Lm@?Q!Wox2apGs3-zSjuygs?AH>&#l?J5XNs z%{FphIsXL&Dut{l4!=)3>A1bj_*`}#iZrCQO`)77uL2S)qa(EVoZOL|QDJ%w*8-K)Ge z_1Q-IhTbWwH9x@@M_<*Te=C9W;{)Gg9U6;)A0J)c$PHW@?kk$wz*KINOKtK0s#T36~Ep(p7&pM*9U6A*(U1ekHoD@6u34$LO;^^=mz9qn6t#mhK z9~Lgvr}sUtj;GwGC}-QAL7Y`>8#|Y8ray3C`jZN5O>^AB$zlv>$el(}*dyDXoj*(xbSkmPlJ`K&%els>xgm=P? z{72d98RpsKg2~pTopRuW7N^RV(%wJAd%!!1`-4=^^R>-cQcvP*?<2oRycdODt*>qD zR@%B!V?e6<1GxovcLZOFElZy8oxgZc(ff)zXwS6rKgHicXKFpuSY9&cUO>gNUFq563PdRb#m zCF5YzZ~^^n@5qKW{rZgrTTgPY3i*uF3XxUhXBpq64Btg( z!)bl32RK&18*>@k1|t)K?RRR7o~`!KPEQ_``s4w>Pvy6CiGS?4pjXKxa~=VG)v7&s zB10Q@yK$@4I;#+xo+6pwM{YnV{8SB1tB;Yw0e@vH)O$XEE#<_!AC&CSx8Y<5eNWU_ zB-dA}(9ST-iPo#Cm0WN>9(AJ;nC)9D=UZfAB(d zi0aUmt)nrOdu2n=p(#hs^mpsP6>`_~V`N*f{dVaVPq0MYEL6 zQdZ}WY41uJ8dv_GY&O}A2YDxZQf;qumwYzY)2Mo|zK^?m}{T)69ERI*9Kzypv8}flXb743_>lej)Q4clusGZe;IN zm6xtk>`QIOpu;S6tX`5GeuO#!_S74BIZT<1S4Q+Je^_)Pe@|yPW~oyT%)-mJ=~uRn z;~roF zUyn=(ge%K8IDu7ZbTj_Yn#?4pZ#l9|?JQ+%HS%w0!`RHoZ~Zp1j(B&o#>-em3(5n_ zpvS7zMkzRAOg7Hf44-^K^JMHt;)^>xJ&A0MF}5J%wZ4vtKl^nQx@#b2N8d}-4nCA@ zlj;KJo3+3oJPSVg1@}N#;A?+sIzwMtR|4n1KtBm$T&?_)C zD~?S2#`edKurx0mUk#3>56LH3sWT`V(FtvgNqtz{J}&*>dln4FPqpvh1HCH%rdH+R zQ@<4%#dyI@tV6sY9DL|3a1as>Y2WZUa0-@6<)YJ0nlVW)enP&X;&>Jg;8$LSXxFZb zYpmk4pOOC~ePhPXoJ&4OkjruCxpb@p9iUfOmlXai?K8JG%HGr5?xMbaiwEkcFaLq> z_#^Bc^5{vvblB1pzlXE~9BOBq2S=LcD1940gnrF>5qum&&c~2{($f{_{V;M~?bthX z+o&%XR3;1zm0EX%_Z)aHc6Fd!dL(wW-$n3eZ7@^HvY3- zWQWP`k1`&~9qC)wE(o%lVmVdoFTrGji@$ z+AO0zeVa&oGng0Ev$l&}w^tkQ_R3a613Ot;RJkg}e~_VJoonp;RdU7e`=1y>1K>$C za1C`ui;~+>>KPhf9?kkV^H;+=*>tLF?iK>JD0MXNLB^-@+Fxwsua|R!|G3(j@9yJy zVdGGrPji31H}|qTmiu(Lwb!=htDGz+E-P5Gj=rh)>Jk%uZxU9h9fsBmHWZB z3MaJC<^$<2Dfr@8%DaPAHc^Fh>8I_p9gn*nK4^aips#ebQ_lXoC(_lNpN(8CVVx_? zI@clcymH|d&Yt&R&X>=bn}5Xl^e5*ZF;8meX|ElBKFr9Rd}+m5)1~mqBp1&I1t z+e5Zz8a?z*_)fmm4!$AxZqmCb_JzJ*Zf!bW-as0Dur~WYSo|~p;JNP?-W*tbZOzH= zDFx33*g2KhE7B9+KR>XxGY_8peJsuC<5l`F_F>4qZ|7DMlN~>pQ*$q4UI>i$JKRs> z_SeEXuCXDoRW{IP>Td9{ko7UfY-sTASl<)C(N*Y>2Ev(u{hV{%&pFrqMO!nJGjV`> zkw=Pq-jD9XPWz(T5njQke4JH!#@5VGPX4Iwsd`lJWFOGRLi%b#2M@FdjrY*jT=oha zq|S4+t+mw#)xoxv-dDR1=~=d#uia1SU7Rw&Jyv`~`#z2``^34+CpgZ7JJIX)N-~Z;X%2a~C6n)<0gQ=3W z&eZL(zU$Nu@(jJ26kHX^l>7SdPmz)G4Kf-7V~owOohF?T(7Zy|s*~lspdP+0#~+3l zjBTg=$H?*r67Rr1q3`nVxprKdwxy?J$ElypYq zgKc8Z`mW#B9~M7oKa9JkLW~{#t-Y*^l{ds3XC^Vm^T3hf@6hia&JGPwU;4fodqH@X zkBAJLBE9^3@)2aCaPE@wGW!C^ER~TBvrIM&c>N`1WV2O(Tj}n|@g-{l1M$$ooHxH- zIYi!=A3ww~24WCae=RWk#|O`=%`A30+26fga-mK+ILPTVep{42Gj1GWwas_<59Ypbu?3mhvSfrOa|_xJkEdHKxt^D}cLY`Y>En`E=i)r{;hrz>=h4Si zdFVqjE#}e3W12%?KU4a+opGNjeblJ!Vd$gsEa>BXv?Kbs#p2vY9~qB6q{l3MNUsgS zxkn>2sBg>f()x#?5$-?az3TXBEVm8O$<@H&r<1BPpp!R$>(TUS=;R&36@J4IxRLor zmUy)C<9Xo0%35e;k&jj!{#ki)>qU~cL+OS6K11ZllgJV1`KaUN4{T^djvy~Wg5yl+ z0a;W<{y-G@Cwh8P{v-9m;aJ}vjv3$4$k$rMA)o>2%Qo_AjPEF#ppNk!(MPEZyqFC2 zRdy8lB>EdhCjAHaOY=SG1Xh~!DtP~Id~cJS@XE{Pnv4CJ;hV9cd2eiJ-YaJL{quxd zcc1IUz+r3v__P-uH?{`#{)skg)F$OjZUFDJ24Zsqln>*6_i_W&mzNvx2;ahgESh>f zZ5!P~+meL?`@?}}Gvf#o!`AwS)@mewbtYK`7$mD2kvqGPFxUgazv z%$k|^E-XHxea5;yP1~9`#RE0B8Oj{ee1Id#$CUWz0&G#eqmFDT@dxW7*ixm_1V=(} zc)Ix>%>(i@pnKD3GYWncpNT3KMSa!H(oX_8T1Bq5Wa#bG(Y(f?H*!y>8ehmqx4&(L zZqXAeQ)zUvyXNfYBPXofO|!1NTIikfBm}46A}Dt4Ir2ruXZi&0A?wASzLp&Q8GZZZ z=rY!hMNb)MgV?Fjx6t1l#Zd&C?8OW)N$-ADFhM6qjzh!CuoC7d{A;Qn-@Ge_Z*KDV#_FTf#f$EOcGL8a92kff zarWX`&BqNMT}!^$coAcEZK`47MWg)iV1xSOMfSYQtrNt<`Omw|7teX8_~j1dRD%2( zU^4NXJMjI$T}<&D-SJ@WEo&s6Lph_1sy$tFuN%*~MD0j!G9Kad0zDf(T--5UzlrUr zk3QCSV~XS0b}m3((}s!T(58*!6sgV))VaZJFQjLD1)Y!R=ywI*fYZcpXv@TJXlEdP zLtBd9d>I{PWWa7O?v77Mtg-J6ba_ni8)6=U_sBW48F$-1%x|Mt2pHdvTlJk7oX9PcZCq6(Nj)~duO);B8^rQ7S8?)KSej>rL zmN{usdGICOZv0RBABe?J#>8UiTkBOS2T#40B~DULEJW);2kB$a{E5?Qh=r683t5J5 zoFEp$*(u4#$gw+g8~d`sSqZU_o$#{kfn}U)V{uUgy=6<}*LpFK+XiDGEsQ_Qvtl5c z|0es4PiyNO;ydT+95*os`e{K|_cGSG^UJ1XvB`RXoj61%v4+kpV*}2w5Dau(Bm^0&IA!@bzT{#<>G|EbvX zh4s){5$%tr|FN9^N`1%o&&rpR{AXzXRQ@yT4FmgEvh;23$b9~D1@NDdp7wNe5j1tC z{?UbM8`+=Ff9_MB1!F!F|9J%M$S!i|yGAzbRr&qrF4km*^Pk^3N`Ia&wNtjAWE6JW zHMA)n*E&kR`jQC;$GJK*kN<4)+O#g4>pwq5e+E`~Lg(V2v{4808FKkv2v^S*y}?fM%82e>*byFSN%zWmq5f8I8be-91F58J!& z%>3tfE3bw+@}IN6;Wv87??3;7?`@J3z^QW5e;*)UXgFWt*JFj-Q~S@)+k6+w<@2Av zJn;Qw|M}neb~^w0MaJ>x_|NO9ch>$h>jt%+|NQTa9lL&jKD+)x|M>!sSN#6-O3e{G zc9Q=L9De`#^O}bWV$=A`MlJx?Dg9?;Xd`v3ujccg2k5p`bUO(efDTUKKW~%&yi;c- z;XhY#F3J!;z~is0l`rVi*TebGw{pkBkoc7N>p~}=-#h>(hgKWE`EKFhFXXTH{VG3y z9VgG=OyW~@URcJoIk)OXhfbmTDYdf$g_9h-k25eb>~05^XH{u94w%};jl3@?6V;u6rN)&Zhg1AzZpY4cS47Z+WhCI8j^V}Aa7 zPwi0tBmX|Hy?j!982&p={Az#?FYx%VfpMKRA9^^@!#GzTa59FI;#|MwJ^Jvh;#?bk*FR_SN1zvY#>TnYpw0i6ajxfq zGdIq)NAKXZd~vSplw;<_x!%R^eERJ(HADGpIQ@3Ic-L3RV@Lx>zIfMX`6fP)ygJi( z*ZXqd$`|iiz}dQI6YqL}vvF*^>n>oj@veKpVeBm8UDawwzNCBze1N<4Y~o!HcigGp z*YGV7>-#JEIFoqSZK~socg@zbiFZBRF+;zRWoHuadI@=xFWxm>MAMd)vw6V0~BK|6NW#e7tMd$(WkU!qV+1?%;s$=6_#cBiF-Q*|%lRw_2 zSXW9hFXBx$-t|+?VeEpoP8aV=aDJ3v`6)R)O)8J9{=bTMRS`=YF5ZQXJt^LG8}ngf zS0?A@w!wJU561Z8T@QEcvCqVs49v(^#mQ{kEnnOIA z@%znLb3OQH>#++CgX56_V;ii#kGzm}zzN2 zHiB~^^2gDZc6`Z>At#RZ_x3$wQ;b7#GzYyv9Br?SqdCLa<+G}xVV_<8N8f%)8xOyA z@=*DZxtAE+Lh{5pBP`0;$T{7fs)i2|j>$vOx)yP?fpa&`(OHS5q2%qOTpmnAKZ>UX zL!A8%PPNx5OZ>dL$vO6#d?@tRKSGbPwUn16`g%jQ9q-rZJ?}Dn)B7Ie#$$XVw!k`` zJ%h!IQ`6^%!HxK4z~`p#AvrFRHy%8a@t4s)YgX<%!G(=ra$IO*OHPi&Fr#csuB zHMpf-FZE1rAAMz6k8af(66boiT)dLaK;xfj*0wNTj=gN z%GGnv94&0$$k+@GQdf5`542Z}tcM2Oa}k8cVEdGuG3CRD_M@anJFG`I1J&@lg31J%xOY`EiJBcne%fzP{T} z`<{GV$u~P***Jb)lw5xcxh`3BrZV=K*UntV{zPpLBV(Ud&cPYV*geuc$k^}GH*=m> z#{RqD$|GaH$NPLT_BVPjI`qldb54OP@xhb8aVBy$`hO&6U;ECP%h|=kwT+W|YrR(1 zenxPgp{!kY7P9u;!XdK2=$zBY+INB5vyrv4HRrd%kHg5?3cjDItlfF|%w+AAd2l$K zye*+@uDpGO`AVS|hvT>5WbT+e{fgd3@cvYC_sO%6yDz-z(L3{%J%!x8ka;?l+?{D@ z@(kqePez_hlf&UApZxv8JtxcG4W9hfdBl&0C3^?YQ_5h&$rcTiINN1=rJCkrOm712I6q<()#u+H|$L3H>KTT^xm@6_H&`H|EMhsj?&)c?eHSc@H4 z-=VzLckU!_#l)XgAGv(wgl z=*P%e^o3dT;hpRqn=^Ug!1t5SQ@W0CO`NCnQQDT=mE6hFzHHny_M6S`H}(zieh9d_ zI7>;f4P(DjM|%$4@~Vpr!1fa#)?usmU}v~CT>Z2W1g~S-}Jqp|3L3<8) zl^Pdg*e)GoavhN)ip?lL%#K;SmF0asxtC?w9PDAcAlI&%2oB}vnEj#rZDq~73%kbF zwQcRAuH>6?&nmDbYbhgrE8EA+0kCOL!$bes|3t{!i>(-++GSndoGBt$Y`B>mhp|O6z$M$a3K&AKRrOP=8|1#O6rFQN_g ztGV>@MF-|F1TG9rd>fK4y4&qf`t5z9g$q2tm9}+0mF|6VeTzZAHToue&wiG(@ms}z zI#WXOD<$~}|5^WaZKubBrS#>ENoT3`di*%?&7!HIce_U@2wi8%F%a)5Rxf*JCO*ar zbLNqJj8OX}8Vm1pWA){%zf0ywF04ckXuMg)>KW%Lb5d#R?cf}K9*orsH@q+AJunT8 z)$>hlo19e53H_1BHE_<)&e!|r{PhQ*MZVcsz4ErIC0B>bNrg@Za#E4O139VmrFvDv z<)nIW{sMiNkq$64J1J4UL>>yuL06u6*(O$(IfF7j5iKak+f?sViio+yVV2Vtt0PhHXx@!(J$8?T?BHjvZ#;`Opa6<74f>wkIh%;NQ>?57nh zzhv#ZNj8F!9sf7^sX^}6JezoZHS>`zk=zfsdvtFbjMx7!`c5$~H$SzZz6^aRcuvk|UDEMQ z3tLVc{_FNVFt0$CC=P!aGM_m7HXDb(>`Qs<4B|xfe+z9EK{KO~!DERz`(%;ik$;b@ z_Nn3v%#nVv>kx{WwTRZ`W5A<2Zy_rk?8N|OH{PIiB=9eJB-=B@_y@m-+V4hQx_spB zSM~q)_it?3fwoK9FQr|7*<5%9TP`f)a_accXz9Vm*VyK=#xjxnEgjZeq_^=?wl|_P zmJ`R*87}6GLdlPTF-qT;v}3HVO<%i~oDn=m+yBGUdt$V)87QSgO_NGPA<2ob4*3mwH zgCFR=D^&dx7e5mQ&Wn&g(6VjWI&|&!M&`B+cy#x(e1T=y2c|D@F#=p@+*!t~v$bb9 zh26qS3->o38kmoe@e#6|OZBwHgLr-b57=nRb!0q#m=qHo`s~H|Jed9SZ|SZcyoeT} zKDry6=aTj(=-<+t>>oQ1e@p+Tq8CfUitFn9AkC>{wP3`49%yrRo_2&=_g`R@#kKd` zJ>;3W&w1YGfA-&*Cx6EYv)`l|d(`61J6F#3HefGc&-m*~*9NH@xjA+~cFEgmL%7I< zqU~AcrH-@o3@-fV)Rj67iXB(q>B)rBSi|8Qd0_i{+}vj}ct2v0ds0L7?)~7p54@E% zh%o%Jk(iwDn&lpB{NGN_;_TbZJ?opfXZ>8+x0LnINmb9oYtT6jl{d!^Jg+lKkQ>~u zi!aypvzgREespHzv4$*nXZKJy!|xrO*;PqjRZbu|v+QBc@G4yR1J;5<++8dCc1Zis z>@0B7irEZjRD?zeb&xA@LIPbfG))=&ZeK8dfO z{h|K36wPe;n3-?FrSl0=ks5u}y z&80EX=yM-H?m?gAPIafCE$)VJ?V=o770uf5EC84OwhXP8ao;R(=hC_#&TsqR)craR zbrcUsw~&U)1E zpm)}z+V-`_mEul$Zhv-sTcNE#jV&3FwE=ud$&_j*_`pua9)K4k(3|NS`+#|zvXq>e z2=;;aRB<-i$0m(+1lZ3kKP+;*@qm8oY)91{II}7~c+P|7@_r9TKLz zWizKG&(V3hL-{V&a{iY8(B@ued{HvO`Rz-!evbS;kH4SRS`T`ytH62cc7FeY|DVu1 zbQ65>)H3NQ?2dR#L3vDPXWepbGJPKT0MK__Nb<9hUAW5?aR{~&Gf?x<5dI+-qN?2yjPQg+)7&>rIqe4f1-;CBMF zs90e@bItj!P56hU)MZ>poga@*HZ!i-wD;G7iSb;h^4KkD#rTj@(%n_lkdx5$JKTD! zoulq~Bjth*8|DSzqrKJ6`zHa*BON#BJ>!4gzHf5hzfg#(NSW2)pGMsNluBOg0xk=x8d2eE! z{4N0hde+)$7QI%%8Hgz#ti+6_=-wj>-|W-CHyqq*<43x;h%KA(w0PvheUWH&8`MiTR7 zkA&J^d&#}eR5+48t_ts77y7`m{p6CYf<8=ce-E~#?2n*$pY?LtXwP%6W%@kM)C13R zgWU7B*eQ4WjCG{xQ?f1?aBkFkZ*7WuWGkTM#hfuDJB|Kz&vBY>dhgmf#B+GRf_j@d zvvRZA<-BIasxysFxz1R*9G!U(9yv6fJ)XpLURmnmDT17mj8YCm)G1n}INvXGzG)r6 zl*1QNKk7TvNN$Mw#}}wVrlIFuJ9YV>ojOS0gE39+;My+VTx&dy&_?ZO^!Gin^5w=6tsc zPXgRe#NKQqHogmaqBZu$@v+xM<1I@n4``239QbEuCH9%B*cp%LHU|ti$2?4YxdZ zoBwsPxu9wP7r7%^vE+%g`#E2`8Q`d5E=1cu%<1FTl5<`kNBC{z<^1u;l^Z$nu4C!70ghwAIn6Y&Fy z3G@q})$?1v8h3ysdx2Rrw+r8}DprafENrh!6CVV}A?IuRD>xVL7VHtxc*U5iBeEq$ z_p+O0YwaH0v_|n<$w}$NOB9pmy^)2iFIBe$&Dp?yIcRiP&vnUKbXXDdARGk9=?l`| zX#Q$mtUlBD|Hd1?;tbFE^q0nqW4*5;IPS=Tcgbctcfe*!FJ>-0KTI)u$w6dUpW=@7 znyEj>Gnk)d z=0@e3DJMKuu~xN<{xZ;B7M?#ydGWi+`A44FF*JB%Fy-K_8MGPUoMNpj%#*K8-7N1~ z@lniq=HX}7sht*VRKa)<*)f;C)AX%1%mn=sv)GP5Uw#PsIE;=dE_C)41`1bh4nMmt z;fz@I3T7nb@zvvfur9U_ua7}{qOy#R7=Ej}d?ZH1)OkG32y;FhZ4(i`Kh+Fbno=8D2q7khR zM#8(+$+lt5Z(o-3)gDgG`E}q^`HYGkH=FSnw4bZ~?YMpODE(+~z*uLV=zmIg&7>zm zJMg5P*CN$bzwl!;jDDD;{^4WjOT4)peARPK>qKxg3qN!Rusp-K^ld}avURPx>j3)) zd-hngsA<1wXoj__=i}(dYfZG3mP2bljqYQ1OL&fAtj%XhPzFxZ>xX>@~A+%Q9 z{xoM&rNV**wObV{j zVQ7%K6b(k9LD`JIWS!QWEe{=)dOXyu`rtmQ@h}gi8lPk?di+W92#kDP?w(beojyoE z4^mGuZwT#Dzt*GEY(l?wO6#AfLER1k=^8b zaW>x?>OUp^)S9ElY-x9n+Vk@aZO&D{jJFis*F)cSZgqZ?a$lcd?0(tbeTS?2B>P*2 zS-(~+#vkibELr;-#s{=s@?gig=CAyZ#*Wl=*Z@rzC*L6-2N|NXH&V$ z`()Si+qH`Z{p0j#S08Wj!So9AF55x>tp0r*UKj!o^W^Wl<3mGZ&sNW`_S%)5t@cWs z;$x}D+`HHHJenx;MkS-=e<%oBGy2f4tk+hsf>V=eYB>)wNwy@5NRt;GEV;thLe?=bJp?=$!c0 zSow>53*aB@#Q%~E)mbF6|7wwC1<;Lhv+CXx>od9$T_~9o!}fj-TUh*?0f*U3fjyOC$i&ada=!e$e3r*&sENdAC`?N9Eb_~=U+VDgZ|Gl z@A7@Kns54ba|oaVcqvolJhgj-vwfmdoScUb@~q>m+QHm!WbSnaYZuSLiDa#jCDdtk zoFkL*QxwmTja$c<3ZRP?1BPT41M+EzZebU+Z>a3(roGw-%wOSpE! zv+G`k7bm`LX7?+|%n{NF$V`oI2hY+~jx%wk&cac7mHjV%=i*xark^HH_kF94BgS1@ zT665D-|P(zzG;EM$E}=Kx_h*Xtc=*cBez1?f88^b}w|Q_a^s=Z}JIT|N65XztVSPioUB{J@vGYXAAT43jXMP zaJPXz(Lbw1`)%O8ShO@9TB5w-wXFHg5#L~A6Z;;Xo@GCXw$w&5^Y$8NYy2KNLNOru z(8MLXtC%0@vU+TpYUW`X^N_z?B~4}udU~(a|La;0!t6|dO`)=Gq^u_hf{oH7ky83 z3JqO-mGaMGD;%cZLTIX=^3PH}m!?{vDXky+`#KfQ2x6S%5Bg=e;yltTm%PW*8}OUr zbGN|@;`a#hPV-BC<9gHQZdY%J?(9E*&L*~TJL79_EsnhoohX*JP3xkZxlEoTePPqs zyv}v>*@m1*p~vJm$j_K38UQ96Kl{~fgYmN_=tTNE!~9A%2u^+1yAsEZpFK&wZie@9 z;$_B;wEDoyHEU*`!o)vrf6F*cLzfT{eZJ$Rv8>)F^UtJ3hR{L4fG z?1|^U?gU&GpT75S*RV_NRPpe1*r=B2GJn%6@-?IoYS0Z{N$^~ zp{0$6mROgg?4{uKV#b~3w`gG}vQT#+8Q6EbGCjqdX@8XTwDh&gE<;Ai$H8Y@B^z3_ zuxkM{&UznG z#_|30%ftT0z}9|rOzDYR4`3gxYPqnoyJs}>A^pkw)M(%u%iJLo-`eOT`}4}fp)o4) zxQVwimpcU)a}))pz?8tM$c0tilE325|Kyu&6a9W#<)A6qB2nZ;74T&E7C~oAkCukf zbHLO?*%t8L18g(FtL9#@_EOF^F|wWdS{D<}_3cvLTlh=IRIO5;q;ypy`ep(Aok9Pw zF4#>BcAw(?3FJ|Nc#Go8y~y3oo?d+t-NczT`>N1oRm2=Bs9(uD`Cp3t8a?c*FQ2!? zr;}B;690I>o*iP(oQyxaCRfjV%Jz6e`f0jwqwygph_STEj+hEAkU!cZSPdK*p7YrR z>OTX{j6DbrL*P*M(Ok1`!h3M6dH9ew55jv?I0v6I#>7`m1ZQF9q?K_iu9^jJb&~7g zv$3r5$g9LE4}$OK7S$Xt<{q}YWmhZ)&ig8 zdz}7lI|u1s_Ni?Hy4V-txz>rSj5s6OD}h1!&G4l+AF^?Ntb8cqA&Nuot)|6c*NgTThxWxM?7V)TRj1-ouEwlxG=3 z4e#Z*PvOi1m8;}g_eVTQPshkIy5c z?cD0`!2Cjoe%V?{y*TwHN4u_L?U{Im;s=MZ1Jzay@Hc=*{Wfxk@z)|JuO$!H)myIZ zDOm0X7UgoOKmS^Ro^Agl;U$0n{mAkD{=ilh0Y%9a@-r3Z+-u-TCHM;t3pGY`npvX- z-s$N0NSl+ayUy8GOn_E)49_4Y_cBfcA85x8Sn>EPS`- z#CIx%TOV$o+(*vx^}yOSB02RO=nK4r=|}oraE05>P2PPy`;)S>I~%`FZk&hHDf?{> z?jXL#0tfd;88~eJui}3U!4J3zfSX9u1+0599v@zIyl?0n2v?eii-a%WKH?jrZU6b4 z`HxXfZIb9gjEei9e@R@$gZWm%_UDdg&|Yz{Q$Mud*eTn| zH4)#AH~dpN107=dz{QarPcQ8bH=dE>hsvuc@~9d**mbUZKW-2@DV?zN0DGQ~ujq<3 zJj&V{afyYM=deaH72Zd-NY>1SmNr96ieWkAjIFpc)~R`%$2>ke#v$Ko#KH)^dwO@E zTRgs$~5`;Byk~Bdg-{t961IKOz_GcBdh= zyR!UhcnVv*Av7WOCDul!kD&eS}+@BU~wt6RX zyanG~zEAy$>L2KL{fSF{z#jLfj6Y8MJ?Mj0?o3KUPmwMs*)x^3b9h(n%%h!0Y3FjM z_xQ7{*QlM#X-B^=_u6Si4%)FSU@XQyl0HVZC??T{59x%-A3>&F2c7GC#gCkZG<`?F zO%=GQ0ykm7NxZCv+|3YpC;U$tlf_I9R983 zYuL?|3G%FXbaQdj{x``-GG#Ax%f3mB9eaG6bH#PWXL*BX`B8y$n)V;1Y)Lret{r+d z@^p_*Wh39|<2}h3%Mb4T$b+_2X>rW>ar4o;vPm-=1LaZlVd=H8HH{AYKMIzulg|+Y z2l7FL?|+R84q`GJIS1kve(!L~Z5+_@=M;Q_*hpu)aBSys$7ekMI^`&zYqfI8o`eo$ zlaxYJ3FbLjSMkvdsy$1*1i9fnLD^K57_w2C{24K3P!U!vau zdZDk)p}{_rGVu zS2xHfbIf{oaGG#d(!NdWYJB(GQJTj`m`6W7Ji;9NpC9IVV4l%cnFMwLGPdizu1qp| zHxVn(cR#ZB&n`gD_+v4Ow*;VJ&2tKzHe-tvI5IMF5 zKmT6j)FI^5D^Ago6#l(rmx(1pBRk<8#Y}b~XI_DaB-`v9#FzugJNX-LgJ!VXzNB?y zyCz(L>{&)X@@EwDFgh0b6GHxA(;E4sxnIuQTUwFaD9xc0+uuF(Cz>=lO5i$af~9%nl;pW+vin`0ziancLf?`*KPPw2(wJy#vPWCwvkllN1MaUtJm1Z^=)8ybi~rtP zJBt5?zqYx#hfh8_$X^=!YwvOSYL9R1e);LHzYW?GCjP;iVlb>V`Nbw@=2h$#<7Y63 zde>{8Yh0T;ZJ(W>`TldBU41cVcMxMTeEzHlPa2t?Z~aXqM@|JF?VS$3SI-}6zez>~SjU#^&(4zmjeV&E*;K{dk9F5# zQ#4IWR?V-OCVeQm{#vE8w(@*v23eOzCVW!Akx?n^0P)?f3-s;(BkgU#qpHrm?>#dK z2?BzG#fp+i0`h64LV<{yoeYBbQSFf)+iGRXeSy zz9!hQ&%$Rj9U(V5XX(}k)+=Q9VZ*%_3mtl1Jg2dM--h$R+fwjmvj@qsPgoDU*@{1M zj=@>FjLjC!9#Z$c*G3^ZyoTY^OrK-AbLb`flBZsd?blWd1Lr4ZOVq&eIxpVK1A6cfo|&3 z&q2O^uBJ}r^IV=UpdL122XW>k_+88R zlmn}>lQm|_{);lvp?us#weXf#{~hqwMc&I^jux97%gOHAm3*@#_K;-MQg?i^g?{Ib z(Hq|w_SN{;l9kWz@ps$#o&3$drP<2WAa+<(0iRdE=N0gI^J;jC{wAm^n?-iYYg#j2 zO-u^i7do}-0mWOF^WKUHR?Ui7VVrMtENaHj!WM2)JYymDPMzoz`jF3Md?a+9;ut?R zyujF*|6*WBZ^)iNey>%TXFrCC`DEIU9lYzt*In&K|R4a%}E=I2`w(a;$p&9A@l2gS?wg!TM zRe85Bdps`~Xk)#6c7pzEJvtG(o|s==J^7q9rP0FpXMbd!A;3G}a2jnyLw(Z!L)`?t zxR#vHXylY4zpOL9Rdjf~gdEwr6_NwjZG9M=sqf<7wJ!cdV=Wg3YM*s!ODxoZzYP7W zIr-s9_~EQM3T9OYOh>n4d$7Ob8}TxH!D?V?e$@UuwBKF4WY+PTpU(W;X6$zP^;%2B zW(NoC7sU71_vi*fOO1WdJ?NctgnMvwo_;kS;6(Ig{AA_FxpT0=or5ywU>dm3XAbn6 zqK!!74|kW|^aH+cV{ctfoL)FBV_r->Z1Tb*ALint-BUr#qnTWKjkm)_pOBi$Gea-f z=&DzbFPEzrK?mIuQ&pT!^JC`4z1KXPYGM){FmyWf5+?hG|JsQG&Q=1Z%^kpra5u<(A>lQGTLy;rXi1R z-)eGrsQcmRZu!NNX`6jizzz|||FbDa9}%|OPG7fXUVUQ80tpO$$)QecWKUV<7r+~#Lyi&4c0fHkMLn@tSB}u^ZeIyBmL60$p>OBp`%UY-=EwzML%z3wCjycV>!h)7JZA!RW}{{(l?V|TzGz1FZ*D< z)&neqN8o)mt1Ip@<9~gzJN&qNvxoN7_cmW!`+a@)^Lu7{9rxtl7>nRccyy6qxD!d>=r8gh)#(}LNxc{&7S?R;^e|l|oGloZfW9W81 zGw{noPnR`SKW#kVYpW;xzMavYXx-5#!TNS=1<|!=uw(ogefH>Lkq?%5Dsz9XAOA^s zDFr`AtmV71;AfpFBN?@wy$|crK^^kS#kJoy$)xYQP5*uVu}crE1F(O{YWO2<`rr5C z=OSO9Kk0$~dTgJyFSY;MUfQ47OZ%DYC7Jhr9`gFU+JoiJfrkq}zhw4THbf-YiRbIQ zHeB3#ZHpgsdg*Uhdhf)yY2P=G|3>@&r#bY){P==SdD0!d&obXb@6^W~x>)q%8`mV@ z7EiDagweCii&;CCz99Bt@=>v)-TWL!2fj`mxX#$Q1LDbktbd_{q}$%~bWtVx4E>T) zIr?lgztrDi)jE5H{;G2L;x`%f|EO|!W;VamSj+nzaIky!TZc|Uhb`G!zTD``8tW}5 z=6p5xvPt|n+2q5?Z(X|d@bBUP#uqvW4xtycBQZ=PxP9qT%Jb52K@HRy)n zwq+faJ)?XFGhR1OU3DvYPjS@>e8H$yK0LN4e8j99;!})e+^SP{>&&zhXDEzE7DX2k zH)|^-&ic!2{Qd3N=7PU?rhyryZh-cje#}hE4lhT)vVM8g#KRfu3dVXqV|3ng#x$2P zp~EMQ>t#%dh<()QPmXd$-m@0vAL-}9FI(x3d6mYQ|) z&U1@#Zb!eRhAviMt0xw~7s%e%u$M|-`ewWtU*D@2IP1t6Ar#0YeT)j`JoREag3VM+`M>1K7~8xOL~FxrXNm%cy}*wB0e~br>S)QY4MG| z@l5Om&XayPcBof4W4gkrDSh(vc%cu@*L#6;zaLIrRQ)%5d;uStP$zI_6zz>J@j}Ch42G09k;p{IR(LY}8gR`R-IJO^--8-C@GvWNC zE1ai#fpfYaPP7w_bgEyMKH`G`tu>Xd=*l~_y}%gYhf&uvj8#4uX8xn$_(mVT7WV?< z3vwS^Ik3N?v1b@R_Q7BrHKqGbj5qsWl=lKd`9&Qt5D546D-~$ea(`2gBg%^{#V1p%)mN{V>8k!x)tbV^LRr9NG(v8b1uX6Nc>4Ouiq` z6;4y>CtdmRC}*K|$M-t7?iS#TK>n}b`<5%B%z4{IE>aiSGxf|avgfrP#wr-f z@9Chw#-3p`_+S_sKlQ9Gw)N&-U=;Xaus-d{x6E;{p3yN5U^JCpe?k`;ujv7X@ZHys z?{M&#IZKHzw>h@p?cLy8Z5$#;p<~|dW7}Zfn@UHcr{L`$_0Yy%e;d(b+c4ugXkB3>dV%qMKa6lEjP7LHAAN9`ll`SzI($Pj zmN$EWQ|yNm?H$fbnQ#&l;uVfhVBkF23!IUDII-U0Y{-POt#7>02j~7?;Pmsusp}oi zU72vc7xsK=GoD4gz&Suph|7~r6^$;O_Uz4Oezbm8p%?+NG-3odbcIt>y1zJH?a;G< zb9FCp-uJ^v^gbSw-`q)WO{JA%JpMOuruPEpWj`FwHuYq3cl36)Z#>X7ag`3Az`z;X z3!II9IN{#mgne+J>!#A5oaDt;44gr|z`5HG$9CcLFh6~KaLjl{PxO2o1LvQ6x|apg z5jO(I)e%iAqFJ7vG4IJXFzwl)cp<(_3+=eJ!4|)5aJ9dUShsC#DgCRX`*!!x#wGqX z8jo#bgXF>zM@PTbLmTJ#+ejSS24mq&qcKKKKGQ=R zgpX~5el(R%!rsMyzpsZj`uf|jyKQ5C>Fdr|ZttOuL*z1a&TY4CG?hN-^y5bvZB()c zXD{=wz3Vy9$)~i1t(#WaDAsF;S=P*d<^1$$@=NX_&X~I_JD!VOsq%TRWTy`k&&3MfOX(rV*VeEwl}v;DB1k!)Y8qL*^$j3J(0V)?b*JYKYj7I z&7W=WxA~(`r0CkOa;EH?2HbhXFK3cddXdd~eqQ~n;4puD-*^ff-of>z2`9z(uzs|& z&BSr(!}(_YSKm;<)^+HavtuUu#yJoBb|v<$#`lyvzLf>!?#8CYa~R9sd8~;|bIw0k zyqY-cmgr0`Kf*a%rKQO0^lN0vb#nEz7owW^t>z4N_09Xf&GBxZmNB+`+Kn*|?cMaR4RygYd10cztPEUZJEx!a z;oHNfvmVu%pBvLYk=XEf?hf+J7^`=W2? z=&swRM$t#+tA%;<+MoKmJ16f)bT-zu!a;m1vNo`=jC>n|j}Id0?V8WfPfQNe2G*#Q z!}MEsE~6iW9K2Ca^(#M&=q$G`WfdQ~bwX7|705Knj(=m`Rll6~BFvWq%dJOWBFu?- z{=QRIPMJ;L@@mO(Wo@%0N?aq?S~a47XjQ3g#Z`AMdH0*h{}eCHuv%ZxJ{{4Qxj!=J zF5S;KGVCtp_L#PjJ>+eCD@C4y_QU8rp1tHPXg}(sp3qn#r)jKSR0uu>8j}V z^Bwu>u9ygYcyyA!T zMX2w4zx-G6=5;|Uezeef??_IdgI+FST~l=H$L)zBhOOWBg~vDH?Qv<__FX+l6RCFnHn5Gwj;CQ7wyOK+8*rn z1=*lngc45{AZxrj^&b4ez?Xi2cZrj2(|(sbkQ4eokdt#5tbYSo>)=InX!;d+P{eFN$2HoR?}D`Yd8m{wb*L76M3^|SRkE)%-M@A^j80z zRr>}8(qA+O;%hBy(9zG%+kCXbdao9_p?Pa>x6*z4f|C;RPr);J#%=hdmiD z{?r%sW6!V>a~|)$fet>Mytz<)-vNB*^>}Mrv1J|j5&HEb;Ds35oFx{v8T+J%g2O4C z*-O2Pe#p1_PGCRWcdUg0@`R@aVnzKHgV92G{(EI!{sO+te9PoiivugF550t@OqDcKRLi$v+A~J7!OPzxu0QF*Mn^XFOD5 zbozO`FP)y^K7tOFZnmXEHUFX;7vJ5De*ojF`o6WW%pJpVZr>Krw=p2j|V74H)Tj@h#Yu=DdTrV+Yz>Wv}IrfS-`*%R<(+f+*w0eo+2SHT4TBom`#@$`)S?lQdvK_GoY>!DsZbq`4{KSf^_@}Rt%MR_7jbvP$tx!71zJJd5tcCf7^zCGF z&kL+=i7RRE3T$?8E}0yCw0(6r-=V#4-U;vyx%ay@7SW#_ zw&Fp_A+A%vm7OCw5C-SXS77ThhSyKAw%tMb9j92&tzfL{Y;vAYAvb1YR{SY<{K(;@d;e|D1FnLPXfILCZ*$1({qF<4_{Y+LuZyjPN%jOKE@x~PQ6C&t*PYp$@QoH~&-T|Tmz=qlTyBfLBrX+hHSd8oY>nAL-yFmk!<@^kg|D(7Hy9@WAKFVW zXEC?WiA&i}@>}3wJ6;J6ettjrCYLM;?Z_re(C*!omG_hx?Sf9h6#>3?c5zl9-l9>>Gyb)BCXg@M}5dDsJUobhOUC6qlvSt)V7 z<~j6{e&Sc}-_$e!zq*R^R;~Jd%%AuU-+O<4O~3f5`>fivoTVguDKB5YvXeB=@!SQ8%V!JMN?whP5%A3D!>qXqhWC#Dk$!VO)z2N>0xHfQuUEwxu`rbM5 zN3m&KxLfk)pB4W(aEtVwnP+-l2ASMvk3sL~g9-e@BG=BdZMmhupmi>c`ZxOg{#@{Se%9fZJVsA~T<{ zg!UyTM^8W2P98@a{(MI5-*(P7@APMj2iXVqAv21@)`3=dYW;*|YXXj6SfjkYY`#x% z?o8$sotX_B`B#PL%541qk?80kwi^CjI`2qebKYpHp)6=^OND;CwKVtDH6=>|YXjr0 zhP;!F{^&SUCZF~cYeNPbpFNAcdXhKn$#?hDIPsEZ_P{p^KP}Ea*PXX^KTn?DGq9Vv zlHa3!c%FZ7x7nZ686OEDcdB!&ZCUt=)9L$i?t}P%L1dbqv2SWskp2g)lA_m`JHbM) zAfL19H^QrG|Co5gDCFE|yFvRF%aOmK@pgmuCQ3(1=KUF)QZbY$Hf|-)D#4q|1K1&_ zfa6nS&kwWGr6KwNp7qQo#-;pS<*Em%*U>lH2m(v@I_o<~TbX?qkN9cs<)w!2wpa;= z&yrPE?Vl(!woaX6>)hnSwdnDMa~(eT6}Ytc^I#a5!VmZ>fNlcdPPT@JZ=GA^k9XMY zW!E0mWOdorwg=l+pPdgcV&BF1O^%8+$ewn5hl2Q=Vd#dCwH5!Usr`#LV)rhsv;jW#`J*%G391_|}$r9yznfZ}WQN z|0shVgMmOT^|zF5pAKIKcFL~8_cCqz=||@{X;0}g_%Doo{=G)`T!rwgba4EvbTcwv zd*pRCW0+X2p#gralgoyi_TQg=^n=ql8{^CwM@w?chKIw^;fX8U?}GW}?eFIVYPHAE z>+jte@mxdmjRWE*!#nH|ZzyGd41QWe0d|wl+(yXJjQIhl&m^$(^gPOXg5LeJ@7;g>;@EdZ_ait90$X&K-iz_x zA6@}IGR%YdiSIqx)taL+=1?~6tMox*$j{}>EBaKz{W(|YefHndj$d|37X2qUdcjBA zUFbVweiPHI2IbDv5Ayzz6`@n>H*YhzAdbtvKi29tU?Vg`L&KJJmj6{YvEBh+FVpwM z>_znY8_0^S!Eb1oLtjg=M@>E2x)C3{3(fR%&OEr5{wDg_4e$HU9Neet$fQ8FDy*F@6xDeuh18NTgDIPOpq^D zTO|Hy}L1<+$UFRBE-x{@`n^1TtWry%**x;3IJM;~_8O__c5+HV{V zJ-~nFp7x(qKapMXc@k4H`iPC9z1*xnf|KF(eT9GIo7oRJ%x+lk^4Edw&i7C5Hs4o1 zq2v1}shOOOfKQdc4=aHFr0>^-@U6g8Aa|LeS;>e%44)TYDW5v>J@Y(T-R`V+$ybn{ zl$vQbtdJioUzE8Jzq~WPlh+#I7ehnQ{_$JhV4S}9ZsEOfwl&%COLfe^1}5<-d#l>f zH@c*&@-29FBK)TPGKo{;m9%57n@)|Fajmm*se2%Wd_~7ybV`upAz6a3G&9 zifocUpTbX4EaP|JQMob&>%f&eUzNzmDxg z9rMg`&VTqImp;))=xCepzWpigX|IU$5Pkw~p6$o?0Z(SGDJ!S#QhQju1bw;ix753W zzE|NRFOdC8|6?b|lNI#8g8t8Q$H6o9iJE@@m2XaY^mDCf@(MdWPwfET2L9|ScTCK= z=*vIniI6oGxy!jr;N^1JrPy^5`~cQ1V%lTY=CZH?m}o3+NO9ALgLxScbK^89|B$N$WMpZ^0s{o2>qf1UC- z(vLUw(7`>> zfM5PfzCFWSz2nm@7Jr_8c^h8y+k5gCB^zZYw5^237%%f#q}aV_x4P3_UQ4@~`{~{u zr1m<$4QJ%mP5t8+yl&MhmY=soJd*96e|dUbJe0(~k!&)w22Y&tqpe-MXL!}M1p<68 zQ+O%cUTW}F{%onyvnBejIdgDIHZ;)Bn&Q#sSoi&^_xm&?$Zs&b7dtmTpZ$rZ-S=mh zb4H(iaq_>QUCz%5#lsro zcB_c9cRI%!8{1{9DflWS{%5T1oM+eGp5@@Aaa0_Chwom36Xc1JAJns`m*9*zn{Q>r zps_r+AI3lUNBg7z{kW8V$gg;e{%0lVKlmu4ulew~?BY&Y!P-S3-^)bqoH)qkQ|9Pa z#x8mB+>;J&BzuJGisp-pJQZHvtin@=F z=xk&E`4)!W;p1u2S?Dk27wEbI{nb3s(O-&lw!jB5=_zoZf~RHA=i$G9EL{b^l%T83 znKIZ|FP9->>8H-E2wuE=m(GM7auzr{nuC6~x2laWJZ1Xq+D*dG4*LAZ4E*%WpZGNY z2mXAP_Wb;LAkxRg^EZE6@%-E_@%-cyjI}sWB))%&vjfe1V@Lhqzg#`|K_LCgQO1By zXno15m5&{8X;AAb%i)C(H2AAhhZhoi$;E&lD&U6@{Gk1kA!+&*k`$b!}yhsK*fq<#hUn)z++LoPXX3u9@2Uwo41)?;s2JI~+e%w*QFnwxV> zy~)&T-ixoQb1^=%fx~$kz|wguH;3S%!@z!woPAx(o;ggN$L#cyEIo6sf622HZOqBw z^$6p;#T_5(c8(lCE>%Y?ty9-nji<-|caAxGc}sLvR@%s#=($E;4x(Q-3V+xHo4*C0 zF0mg7+7Iq3z4@_&fvljB_2tla^Nr}0Cs@CPzBfQOqVIC(+tB&%18MR$YD()0rMKVW zdP^yD6yf?suFDT!&``?Ruc|wjwjQPKn~B2s8}kbe`JZp1?xsX2zTPRXDO)_HrfpAo$`%!U)HabzBvA|`W~&$IvPcmS@slcB)$vzpV-T~k2?4L zxd#Tm&k*xGmwVF=vg=jmS#6ZHU(k>b4?EYn4W>`{W!JvgzS@+5zmDgJ-RE`qcmL_i zNa}t?-7vPN6+11yY6NzP=3Vv|^Y%m^tM-)3Og92`&l9zLY4#BT9pNl}953Fsj~okT?+W7jU7 z8mJuv9Bg3M-aXfp-%5Fc^ZyLpHJ%%P8o8O6R#Ma`c+Ydb7qK(OZ2ERGeOs$}UWw0u zA9uz`=erZp>gh)l8?B>dpNJOP0L4w(!X1yOo=gLO!;TPsVuS9K@@0 z$_?G7z?0Sl5|LnB>jI(?ePd=u3fN!5v+Jz%YWfjXeE)mSc{nfLCj8nB0e(&S#m;xB zpHuml@bWs&clMsmcAou8&+uEuJLOGQrPJ2q+^?g3#zP)U3AXUbo7;Dq@zs>=D3Oh# zvDTD9|H&QhH9V1|j_7d+Is#vMr^e-tb1mc3c#|5}_CS2FZ!DFtVckKCwxbk_2%;H@G%UX5OEUSOpa z$B5$R<$>3Hbaoc+fInh9XBwYtH0|V3*1W(@{~g@b9d6%tm>9Po$9dHGnqUJ<_0;}u z>N@xw5x)<-1dhz!om}nVa76qb$_(ASk9^a!2ONBre*k{CPu=I-SA1B)w*zMHZeHc+ zmCEYrd=q2#?v|CTrSRKY?bN$wadpF`W}_9gg^L=$)3I5@wpNzUrio_SDxVPC%&=% z7nN5-BVIWWYcQ_+zPI5yE zLr%S_!C7gq&AWaBt+zpsRZgCE0y;~6Zege4zmX4?{G6D*O$-&8Vv|>tM;w@MNzQiW zz94?r*A)kPe3#-)81l2DCO^%Q%O^}RzVa4}Sj)q&q91g|2r-zoTqm$I9{i1KD@Ssj zoC(ReMZ@FkS>yZ~Yg~2miEAgCZ~C6-+&5X*kB_e>HhDbvdGcusITO1d_7HaDcY&8E z#6IuGIe|yJ+S}I}f3MTtE{TwjF_1CkVDDguW!ljNw59mI=P%A8*WAAzV&?I3Xqop@ zgI!thVZi8vvRfV9!uJDbE8n7meV6iGEaKxejCmOLaRB?+!get6bL7CA13T-iq|V1z zgCqL)4)Nn++K{Zs=4?X2jjk<8zZtZQtsVC4Xcl@A}`z`0U~@4?=F4xelKjU%S@T{jvV6-^A{J9$UfaTkfOKm*}x9Z>6y@ zoa>wh^NXLQ-*TRj!?56I#Iwvi`1+HeKmPN0E!sCYcsAHzezyl3GS@Q>Y`2{JoqYBA zq>lLIk%+TSks=qt^=F$r8@>P=_vK<|J$Jd;(|3Hl09&^)j4ZIujvvRmSu*0}cDVMj z;jwD$f7!>s;$88V;&-x7t* zZZ0M^1dT_KC;Ene3K_5inSLLA`$6SVHE#FlEJ<3)xu}19GuVdHg z9aC0li?*9|?qD;rE5tlZhZa{@{cvNNU)W@YR^_T4e>pkJD!;?cS=M}A^K5B@zOfJ{ zUnlh;eoa;1&Fz;PJFv!zjgKp~oMLRLOX)A=&DcfqgTBId_@TxzigNlABzCTI&(*&| z#^cE&*-y_8rQV0+(Wsw{tA#pId}hV}QlrR0U|g+~J<59@q92p+MxP6o?|Rhgvr1!} z#~2^u-M!=N^jp^6L%D$*lZS2YISX9(Z@FjRtG>Rou!s74Xn!VS+zU?jS$kf{4fHWM z=~50(RKCxLlX>7IFOaj~apc7-qx%{=Vy-F6UQqU#^40R{HxO@Nz6=b-5=0|m)|OW= z_cQrVKo_#dbbsaH_SJ%^96!EaJXX0tN%pNM*0g~!vmTZX-eTk{F>yzpo-X}v*TV8taI&PW~uo$hES@w1?c&y?j@K zHuqcG!twRw$@J5^tP_1Fqs?rUlS_IL<=4?(n)i$juqGKD5T{M`T*@{OgHlT@3hy-^G3ZtzbO7HIZ8`;Uphp(<4x%6fG>Y# zR>pa@CjL1Le;m1K_9Nh1m&2oV%beKfV){`@Ki08+R0ln+gRY>z+1gi9g6@#KkHTL= zjt3@u;@wZ>ei-+Pm*{&3hEJKhQz%d6L94Hq7KMV==tM@JwxwMO;9<3_HS@|qVYhhIb+*|eFUO)oa^V9e9M0Z;$dSS?P@&14^L z=75{uWayJ?O+2YHU#5=Ox2MxqvtF8@&yH-%j^C`l5x*1vmpxHx>wV_)jC@uj+_fe;$HXFP%AZ9xiGK!@7sz-j-0@U0o^@7e!3FGNF>PZ5sO?K=`%L7G z>Mkzq-(jD*Ik}TmUS3_29!`!<0s2GtRn-B-;+jlc4*9KX6PH8Y2{$>=i+J)4*2PH#x`%*-^-R#*XAn!Jru8^~>v%`V*wwq7Q=oJH{(`E5hW5wzqGCAJPPahhE9J%CMI_ zIep^ST-pl-4ekA%H44cS?1zRVx@uUK9WM`EScGj`^ghp!A2rtWlj3FQ#KZ8iX!@u8 zn(`V)R{cZeRpgMv=O26RO_-H_m7MRe@`b?P>y$?&i*hF$|6!lr0dLpv`#1L;YtpQ= zP0o|$zVp2I&UojY58QXY&uV8?o#<+_R;bCDSchS zzh(BhoftRq9BWGa#s$>ToQ=pa=h_Vfuaeu^nzszL@7$g^X}R#r+i(Oc+l*3Ar?1j3^_f<2h%&Nr<*-4s$a1he@yMy zIqknf`{usUx!=pZ*Vj{#rKVre6XOR8tXkPK$f*M*@Vr;&X2z2U&3jmFM+ave^~wkE z?li?1wO$P^>DsJULo?!If?GpO+vIeW3nz@fEb?zf0c5wXt0E^B={GvF)aVn%H21Ui z=)Lm~1Gj5Vh4fVc@}LxXAba>N_Rc1mZ^^7Abfq-~t$pvrr+gPYlYjBdtDHSvDjh0%yhf;(pULuT$X&i4++SUa=o4o*V1ul4P-xgT24 zJ{zqi8C-x9`Ou1e8T$hHCcJ4~MtD2@8-@qW`QoFv7Ve6%HG z`H41bZrgEw`Zn~w9m2OI50kPjGXfIfwPYz81>tW(A#X9)r!lXj(FD9o&JoZoe z@A2Mxc<)NuD|>%tdOFYZJw5w=j^gvkfb-%rm`8KncwT&?2lGQ0Cb^^?Fv&6P0+ahQ zdxJ?Eqx>*GbYTK#3^0wIsua$jT+3 zDZA}$>QywdCw2bFsT*mJZ&0))X``6=&|2kN@K^5q!l@hiu8_|D*1gt?^{!$o-n&{O z;rk>zHy)|J$HMo^=f0~gmtDUWd}#h3G{4#PtN9h}NuHbhq=CqF=tjCsIQj4_hmRH4 zNg?08eVYxy_vo{4H|GUsH{HK0dvM*sD*9N?80H=+*?s5UwY&Cge&*nwUGE;8QNI7+ z8%y3;yXnXUyXQj3&BW&=1F@41%%XlX=k|ivBJqcRp57qNe+O~?O~mZ=wLFAsk=hw`B_~n`HWZ*`4d9WM2 zyyT-Di98QKvzQ})zJu|b23heJe(v_yjk$O_b-CMiPv?g_`O97Dk+p&%e3JAk;!1V$ zS&;3)m|fJ&nmIA?-<6UFiQh6sGH)yXY>IMy|D`;}d*HZyg}XNF^+h({sYB!Ip|umQ zH}Y?b)t_%UaeqAb9W)c+ebEd!neE|(_?~Fx4?W<+@n1UQfx#7a5%%|FNA@Zg2pi7G zu0Z{n;3$bamVE9H9t$njI~YUO#j%ER@>L|yj%UoOBU@$^_4PcD@m%G_*tT1qkF~{m z%NfJpuxmQT(9h}r2(SOpx4{)2|>jAB5($C#WMw(Zi=p zL&DQ>J~;n3`zZ{pI&z!4p%*Xy`j2mR@~MCQUG`YF^p~*WRxj-(duuNv9w~V!oP44< z3HFMiJ?7NV8@S;+@5cT-#IIi-`LAQLCC-_MJ-l@5E#1t`%f9|-t;Ek?ADR50PXAK= zr1q-`Z^Wwb&m2Ae(7nvnMJ_FoV^zSM$)9Y-@2rHL*#Fy*n8x>dsFxz|U*%Eop5Xl! z?Dpk+lT$XqJv>*eAcovRzUwABk<$X+rZ64 z#~w7c;S`^3h|grcR|svlf=9_m(YbOg9hvC(ZI?3{rrnNBkeFzbD~HS#+|CmO1BzBku;-Ld>V z-bX_Vsqe|>YfZjgr#ubed+KbZ^NDj_gPwl{opc5?Pwcd<8CjrxCCaO-wn96Rt*gx5 z9Nr0HAKi&~S;K%dOxlavgT6{Y}u*otE{SW!lfHpP11`7d?)w`D{X`T#!uO&bY-p`s)~fH~L9( zReE7uH|5zvu@hUl$YW|wKtx&7}LUKjLkppsOIf;$0xnjH*bRTiVH{k621P; z%9t-t{=nxAJJH>BS&j^nT>g?g)YP_fc{yvpX$bMn7-diC_K z`8%?7x4*0dpWVrG*PhVa{gW}V9=Dpkal7H$NrK^@zXY~~?2128NA{L*_NnmT*=~Lv z=(86t@W$)f3q5@={B5)T*O?D%)*+CMT0fEPt(b>ognS?M_jhIvh&Q=?&JWS&byku3 zl|-Ixr92@%rG8=^eW#4Xg4Ic$oAnmjdzCiqqkLCS&uQC?*Yy<~yE4PqrZ30T^XdEn z-dOt``~9}JGyFR`1N!}9sTn101q`&C9`XSuZ zP(Q4119Gq2?w{~plz1F*3lm?R56w$f$DkX@<}mk0$1sQZuv?&+_-E{69!wu3vtOm2 z=GS}n2cGrUGvsyv-Z6aWdrpqL>(`MV1#Vkbb+ymC;8g3)7xamjvHpC^wX!!kZ&vek zpH=j0;^9U{EOO##e_{Pu;}gDV7H##$NCe`PUd$c7|0`Bv&&z!O{+EWfeNBQS&Ic;|-|I#f7j>0i1o3;LVq zqdAY>9QoJzJ##aLCrZuuytSOi;axO4;r`I(0IJ>W1;LI=Zp043c1tu{@fG0K!1Ur! z$ct2=)$sQlpq)ayL9&H44aOg+p9SB*S2dgjgB^4G)}!2ub|d`8#BbZ2{S9Ao|G&IX zS(EiW_?$JyJLfz6r7`{f8-d#YcE{w6XLClppd^QQ8#yl;R|R;IJ|4h$LVqePD#Wg} z;Tz_tiwySTPVzGUr|>;{JmiNcE*rTRI~#mVr;Qe5|0eoq#&eUCd-t}+L%qlNrF@HZ znG?eZl{cZcVfACf<{nf2*B^h^|3dFY}5I7m!m&1yEf8hhBhGpB@m zS7-99y*(GT-q+y=<=oAL4=&;#J)XFf-#Kl4m+|TMk}0i=^Q&adg8=4>`VYp6F{Lx!KSb<@>Gco%Q&ys~nv^hjK&L z?zgiBtDJTG?|bF$Hy;O3F8H)jV>LNv2|YBAb$NK_QQL~YdE~>p_JsP3eJsj#Zl6`J z?q9l_{aQ7poEO)OPFH*_L40#quHGR(4Sp5=QjDLoPR#c%6%$lmNH+THQS`}U=#`|^ zXXmDq9T_|idfmtPa{@U#TS7Twn}z>SAN-8$dg!jU72M(9tZIecTgP#(z4T=j0VO0am_*H}9$IG2>mOm(ZfRE9u zl-WfCTz)q37IU6Mr@XeQC*52Nc$M#fDZW>U{2P&FP0?B| zdA&u7v6**hBSCIliuNMRWd(STAY;6>hfVbL3b)t1_2``Uf z9(?K7DGA<}trzBff4QN%@8!hv(GOo;)2Saufk*7|F7X^^zf33oiZ94&Q#_%=@9^{& zeAJ9=XhDWmZ@Xc4Gx*HDAZt}CV_f#mPj<_PoA(!IjHOmd+?@3WJyl+yZ#M_qQlT5R zE}O7?jnNsHWjk0SWDLl({Z%`1+=1p7DvmgDJDmiw_32 z_xw*h_rnq{c8?F#zUiA!PruFjdRP4>+pqkw>FL5FRSy*IkF3&tC2PQQk4%4H&Y= zxut>_S^wL1XIsm5jbv?bE^(YZYtVsx*z|isw`@h1?cBo}N}nTl-tz{}=5R*l_7jMC zL1(S#jOG1r-JOyiflh+p+CoNQ8=G(2Wl?_x-wVDIpKJzeV#?oWX@~EqD<8n%%GC?` zyjL7%4UzRW<%{hIzq)3nm2=Nt-W|oeGy7YsMp-$l+H>s#+W6%DT$~lSrpr{NUl}{@nKTd%K7xoz~6#Cg{Ug?0;fT8pg9OVRYeq$CkTH z`j&AUyNLbEvTGkezi!ZaMudD|uAk=mJmbh1+pSA@(S;B(a8 zVY_HK@2%(A1pXUkJJygV&AP~2dQZ82p_{k9K|Ykuhx)zwy=Cj4&F^(vUs0YE{YZkp zm&~>7gJAu0T<7`L;lxW8ykvAtKh9BPoW@>^IQg|>IOpxFfkQiTssiMrYA$ppKpnQx zGI+Lta{=a%cXT~-o*$EcXKi!%)wNBa=PtAvamv*<_B<4!YilfG0N+k?{@oC3in))T z9{=NA&_$u8y-}>+o*v(&`%%`>By>^G1g%Ie!$W1nqLD4;Y>`4@(ap%I7qy?Kc*fC! z-01M>l(it|oOVaXx2;6p(C=c~KA`+N$?MW>)qiOY-L$oA%d$0j#9`khRwbKB{^)g# zGX>1)z_fq`Jsb_wuHxQ`&$2cfpWbAdGbOc${SNA}M!IS_Wts!yFB8A_;J*a?6f`LP zM@((!Yki?xU~7J4<0pd1T*h$wKbU8DTfF!L*LCI$1#kw8@V;P?;UDo0G`jXnXcK%k z^Q@d_hMy>3uQr5d$~ETps+`U35jPjN@oQ!cL1WYTbVDtR`ZF^xq^P;+pI}kYZ>j3$T(7@z-unjfGE1{{G*z2+VIg@Ak z#&iqUh97x1k3JiF#2wFl8V}`jd}FzR`d#P>T!mSKoaAe>td}-#>!!``_t0jZug!~l zX>)EjZBEZ@6MTx#P8UwG(ME$0=)L35^H($1&r0A&oBFxl+DWx#))&>*=VN{6n+w^hf^RL(GY;6>k#1`71AXd;+>dY;^PR?qHFZWk)pZR{JX`<|``4S^ z&WKle?JuJJ66i)}9dNeLUF);0Nusmzr^yk;E;qdM1UaJ6zj=p#=&YyL*1Pl{9U1@f z4(A-xdl`fDfT7bT0{Dy0b@b^#x)E7^F7zZ?vSM1_%&XVE*N=bFj}G66*oImEadA*a z&Ta}DN_*k&x&a)(JBBVY>b06Sx;_&wJ{%LM{jH04Paba0IIj@h-!Z-gjI9xV^7wlv z^om}_HYtBtx*1t;)a&?^AtE$KIDN=$n2MTdyLL+&+c+Q zLgF#T`-GMLn6cK4h)zyCW~cXZ9XNFJ{l&xu?!vBz%t3KTj|eQ{C;GXWcS-ox;o_g@1#?=y0Yr}6Vid3zN2qr z#{)N=kQV&G|Lxd2t3buM|NS~evQ0md+WI>U&;ADp3Iu> z$gC+UU&Z-9ls`mU9%c=ZGo`z0f2gm%_9d^UeQeBa35}P27k&-+Tn`xP z{8n%u<7`v*uop2O^?LRLo`u=35QH{T_>ze#=IB0$*9YqT`|R}hp{>LN$ZxJMIR`~^@Kg$0153E&#m!#@1rmah{>8ljuvKy4Ik*bFFciKe}ybb6vV#sq&R}`dx=^*`MXm^)i)1*E=ZRLtFpB zf1TQE5pOQuIzV(yd)tAJecB*CEnv+h1%F-Wz}|0-KHJy>H@L7b&VW7Nh4HHl*yWUC z<2J}g`;upG(%yHyHe*hkpOzhKD^zmciDWDMn%?Z&Pj)x)8^8Tce~mpY-ztPmQm&5^ zN6o6g`2)rS&&i%ManU-vsEYN5W@517L6s{fs~O(2dAEdjuW{dzt(Z;OCf<1kS=8#j zqw-eXX_=;PN7zNDXG6R2WPsmRVzbgY4bT@hT3WG7{M?1oUCra5U2vPdWa$HYXk!QR zJ3;=I*8Q7{k(0ESBz`g(8caI(iQ;2ZvO>#L69KDn;!K*mi;@J^kPb?6nIhi$7!_)c)0$F<=P*S7UvEB^M1 zWwrf?xKkh2k(Up$R?VZ&cg}zGg&EeNDf0x|>a*$^`u`y@gS&{gC9vJq?$1u5-`LO^ zzlV!Y;9t-F^zvFC9@R-#itk=W9g9ED9vTCl{r0Ey#Wyp2!w&uLw&ma7es{+E*e*X# z>08^_Y$b!L*N~Ip_}A5zqt9|I#RQ6EPu%MDjhqGbUH$U@dg`BSLgd;pZK}PBZu&Q- zuq*%ID>aozZY+8&ANlF>(z0Rb%qX~qhUJ^u*c9994Iifqkj07}R%P9O5ZiEe)*oti zjUe{A!U~c@H)!(toK3i?F()orJJ(uzKl6FOl-1?LHw|+5F3Z|~zj#Px;TDeHF+)49kd}|TsEbNjSi(vcu?)@ok6@K zzwS!x_Q)^F8>-;RW}S_S&+fg~(&ZiU&*_8o|6azrvadD8jPF@Hy;6DtzHb}u;8fQu zxK5~?KFs1e#`VT;JG^*4_f`&imS^_|oHFU9Vmt4^$JmRaf61~I`rAw&l8iz7Ol|xb z%NiL^FUK~gPSnaZ_O$V@sc+_zy0#VCd4w~&RL9ulJd4mic|zbHJBjCv_rR0LF>k(g zcADT-(ofB$;$+Q=XW$>jEPXdGtKK5dB{|ILTQhP@^;=~p0O$OJIg^j$9hKcDKBY`! zP~VLW>dhth>Wkoi3Qfp<_r|3?>aV$DYh)v$@Z%rT4vmR2)|k8a&#I@n5iRXuJxp`2 zdH3dTAM`SsyhG8;KIT4;etPusTi``|qZis!yL#^g;e@sqLo=1o%sObM#n24veDuMi zHA80|??J~y9lF^EUfUqRge{Up834%pv}i=1_CS z^OApJJNo8n4f7T=@dqbYFJ&F_Cxe|hde{}n)Ow_G1BEc5LX_h z`ooi=CuD?jbQPCM5r?ioE@{nG`b2A}NzL6rD_zN)L5q{MrXad=JF=jn`~w{CaZYI^=}L|Ey0ge7=l%r;hL|9#LDIF}{j#;tVzI zaj*And~Bnqw>vt^%=uN5On(3E-OTwvIBUeS-R`6<&AF$)t~KXTcb@NQa#kW1Yf`|! z2zi4)DS2Z207Ik5^qI`tMeygPiUnl1%|Z^fp2l=P&D&9|g zy_k0*k~hJ6?V-@M%366YyGVP#oiRBv7TF%9OGfG1v;PlL`f_T5C&?*@IJL3s}k{5RjS!zWOjKFYpl*`rBhK^3;jK4h1ZpB!kD zjUapL_a`z()RjEe+1f3PQT<-3_iO7fiv>UIqPXKT(2r z1G&`WUS}SXJ7{=C@mq86>70nWK6j>_{#^2e{w29C0H@@*LyLj>PboJtmhztqH^|sl z;A-7Vc;I*Eqr`dEf#bcQ8@IN^R;&^3R`Q&)-RfIer?# ziNaoN;*CY$4qA?z0%@x~ft=M>RZtL7B^$zSoql5Tz! zoDn-ov&RQ|LvLAq+Ae_BSK=?~`Xkw39W-Wd{qqTmr`zc!+S~&jDlaMuPeeu6l>bh! z&})*@8|brQu4ewBz1z5_-elElH1)_AWBz1EltDAC&}P`mUTf?J>a>89bD>++-$s4E zKNU5x1}ArMNXA@c%8c*%=FKlN?x#&pUKo9C_7`-ne;Iob8lH^|wvc&}jndiVuXlXQ zV$)-8Jd(AfEaa$>XUwtjeHoX=g#GCHFpfNyY?CZI%k5Xf?T7lJKTn^0WMo%ofAVte zgX@VAc)pC{0v&X9k>)}{^yaiPrt9G%*OZkmz7bbcfQ0n=)=4#)*oX3dLe$2)`*J9QF)Dgjmr6D zQ}LVbA%?rEnp}|z_E?!dVe3^x1BDY(Q!A{X$u}uHGACEpg-3?v>btc`+Sj+{*d6BV z5rr>|Jfgf5I`L$ZpC0_zP99(Y*%7Sw)BW*(cGl2DUt#3G&T+Z>6l3#D(Y4CI$-TcV z|FvUR-m-NOc~mb}@SfsdZ#nYgL*-QP{(tamD{d8a;w^9CMU*<4DyEif>gJWo|)*JH>_BmiT)(98qg46lEL-l|Y?r&|A{h2_{C%G?R zZ9sWAh0ulKO(UQK*(u+5aJAoh$;o|Lsg zwZ+Npo}oUGv+y&gPaQO4Q$B^d>Qg>=Ne%_~(^wmJ`=vPStCHhGiLoK4jebY}WXW!! z%;-ga^`429A-{A^M9_o(kh8X+`8ka;!xJG#_m|R+)_y-i56yx13y~>VR`5OYw%YCn zCfCa0YC{*zmM`!H^dtKvgrE5_u~{>|pE-MCj;H->+LwJIdSESxvjONAH1MHQcZ;>e zq5Y6>A)bYvEUx{$bp-q*Xrt7_Q>DX4|5Q1&A^f$`o*6gwWXmP#-zo->vYcy||Neq3eRwBogA3XbKq%>0fFA971M za{V>QW$^g+?^x%P56d|I$TbSs_&xWXYSli>{C6jxm!s$Y|H$WMqJ83Kdp5bcZz_2M z!nY@zr@CwWu21F3&9UT(HA-)f&W z;_?mzbKqt5*v-6N+I*Dk-wVh?*Deuviw@FJZTWj$W|#DnD8 zga%zdys*EWSIJs-HRY8jmk-Y#bi?o!Q|AsRU$18Fr8ADk!gGf|0xz5U!Wl>F!j;2W zyPbUpu?9O_G5isG#hT^3n}1g{FMM)zxV^$U8j>93EF@jaKAKw{Bag^h_!RAU<+81u zdOCX}t6sEN30>-Uu4t0+%dWqZv#37+uOIOJ^~E{1*=J{RXtC?Z5&KtsM>hI8a)8U| z7k1bI2M)e5ZJbNasC;G}BXyK3HspeKbLC#A4R9qS8%S$D8lRtV2FR!$;5XpZknKLF=s+{pkKlo++GL@5?F_8Lu=+l4j@9<2gt(_T1 zXq`wt5d8CR`Nzs$6DOT$H=LQl&t5!XmRY0g8c#4XR`a0TCG=JSbSymYQW-cjWsOeR zyDGyTGG&JMg7smQVMjRciXVgZ!zh!#mX8ih@=R;PHhg%J>S9MoKb{q0?6Qxj=lSYJ zhx06Ashv>$GpdjLGi}?fbw?xzgY{3Sef9Mm`0q@`l{g;&Utcy>I2?>`)O*aiZ2dab zWlmDaePerL)2BFhVh%hKVvVE_+rNCv@-=El_^U$Sk3}BKzkhT*v1sJyK4KYxK>5Sv z;yw7bfM0#fPx-dnfn8#i8y+s_41GNh!q+9E%Z8`idZ$zGLo3wQxTSiHd@JRt>sK(0 zd}geY;qX)2r|@ln_ap<#$GP7O>JkGu4ERZtp^({qn-Uc{TTjKw)==5?cJzC>Y`^;6IY&rZl#-_Dd)4pV& z;?Ch{DE=QA?dQ|J@TK-myX0GkW6<8ER{A>XlE>!sy$;%wUjXe@QZ66Q&^FIgz!q)G zXZWGsVLoJ=1=TO=rHUQ8Q@sd%#LwIrwJIJ?B5zXUZ5NC#=Nu7-rb5t7#niIl<=k7$ zRp}u6s6EI!s<>$8-Uh`*^9J!P0pxI`&WcwoiXNFx{TO-z+hKNu_r7G_;OnF8**|Ji zr=*cw9?pKbl3d(o`h#pc8Vwu0v858(yH0*J=L$}YTD52KZ_5|k@5sD=M@C6TuEh`Z ze=DL1nPuwrA8K-VE~Z|XoQmH$}s#xOHRELsn=I9nd_D65Aw$JhdGw7ls|zs=wo7z!B35K zmt*^9seRhM&}%Q|?4$UK`$Qgj_D*?|)#&(ghum`YgZ}LNiT8ZJ^L)RaqeE_|FV48L zjbHjP6-H}(micj%XDXRZ4szNekYq3`_|$3S?t+Aa!Z@W0|s zeNBF1=lN37BUW7~{?KA4*YaKLM|65k8E2p?e@<(J3Gy;+Vs+X_5#U#Lcq1|2&_;Yv zor{`hHHg+F51f8FwqsA%slo7`_<(OiVBpM73^p+$12c@x^wVF0gS=P+KGK4VBx|S} z2{k%zmc2S{rSvmM-i9f|CW^8bmK>>uIrKR|+`8pH6CWfF#o0yRp{Kq`HYi?u zD!GSwZtPVubiRwvWA@*f^E*4^W5QJh=bKj?Z%s1v4j+``?|!ctn@M?7&=)q(7EE;J zH&}nxr<}op@77TU?JT5BH2wRJh!yoS&uT2YAUtUJ|;^it4<32QNVfKdD1<+XJbF*>if0G*iy-JV6rZ?Q?m9F@TmCs zTHd>ZZ{w~8t6F{E-cH^p&}mZZ`r6c1VkY}F0p+x+_m z=)BNMAKJ(7DCl;Wg&$>al^v$M_ubI! z&4BOk<4=3&V|V@TuB=h=^VG5NS2=HE&G)*AT|pm-;a&M{k&oAy>kfa+`Ceh?enw*# zAzuO)vkvRpY}dkjDP&g!d#xE<*)ilLbo2ae=py;q;2}yK$(gN`sjhvFW$Z0ezb+Vm z(pUGp)D7b2$u=s-r+HAg2k)}e-sIX6j=?v&%&dzo`&7@J``37G<~7pQmK9HI^o{wg z9>zPy_|u)|Malm}jvTO|Gh#vqqR>;Z&K`&Fhe2~8^t<>%cH>6IfUZg>gI4W8XjjiI z+j;&F&twmncfy_T{Fm^-J9eGQ?5+26@6e?qgX%Pwk2_}zjp|`8f8-mNWaqn#>nx zWt^{*&-#d=W5ol|U!^|W8lL8CQ_+5Z%@=Y_I2LZ_XW|_hSm?uhrP_h+HMgEjA;$Bq z6mr(Ii_auH{gd&@raW}y*c|E(oxog8%^1@=JDrl3f{>Ad;0&QXH8k~k48EE>+Gk=+f=c`>jKi&hqW}Z(hd~?1YXDA}?X)}-c ze4IXLF1xf3p0gPH3UV?w5x2affA-o(b7H$z^zXB_n0Lx1EL)>>+x7e=!MXNzEA}0- zE_-iX2aROaH#0YO)QZ0&9J_NQ{I)P3;%DJS_*@R1DQ3Q$J^!MysOZkJ+Nx>O-!HW% zx;XiVuK&nzRtT%)-Gu|1-Kk|IP)#RML`s}}V>Spoi;Zq$xU(Z~4^7~qIeppxi z8???>Zp)Npb)YD!^949-efkFI7}=YwE-`0E1mQ>Vr|5nexKsXRKxOD>PjBB!dBB<; zmwsNvwcdYt5jLE4XtMGHq=Qd3yrunR@<)R4>r_wt!hM15_(gLmGxyMg<|YDtR#?`m z7UCThoa0*21C5ssiL5Hb#tI{AMli>UH;)8{@}y6v?LE+t=CWMpI53V&1sfY;mfHu- z%M7lKJ%JAz81$pzVfG;f29=xNQpIWLkK#0?^rr;>*F3j=`mn}4jdu-g_-zF@_x2a= zTqMc8{iSa{W*K?e>3>NU8emqY&d#}AN?|RpJTkm?; zTJc@b<88ueCH|7qr8lps0x$LOem%Uu72eOl`*llqZ>WOzjg5=HTXw~#OdauE23CK4 z0J#p|>=NC4*@qRMcCNh4)sIop-*UTF6XT3n*)omj5aOj4XMXX(e(=30r1wJh{C_8O z+h+L30cO*-7o)uGC1-6T_IfZaJ|whGIB~|^$KPrX ze-83hcF1UOkYda>J4b&k{uRHK2`@uExfa9=vRUnq@$rIeK3TlL{l-4(g9qN{EaW_M zCcuZ^U=JYk#s3?Q4qF^~aHI^3PWEd-TzTIJ8n(WRm#q9a2l=4>NY9+bv+fHS#$UT& zDV(D7_1Yf)XDchzuOp*EYZXf(JHY=JJVX8jo!E|T2`@>Xe;u5Kj@2AMW-j_~#yJ{3 zIyu7pG{YH9qnFmKsdE$?h0P9c-6{O)oJ8zWGq#>S(VU~-yRj3U>>m1M=<7@NZoWgv zJN3(9?%QBx=4#E=H*+swQs3ZBefu|_r_tX7l&_KOeVTjZ@#QS?`m8>lU^CID>4Cl^ zAKPeko=2m;{2a%e@&AgO30{3+=J0i)qm!{wPQb}!Hnrc z|Igt$kN&U8>Hm1I|GuuigKYMY)&gs`tspE=Ez%zV2=W~nLEcz6B9n-j2&X!Yq^I6`83f_|3kKC zU11k6$@Zf!m+Kk%B^sB#`mwk5%|2hoH^1Do$B{YEb_wxYCT&w`A`E^szp3Ls%@nj< z>f75MZ-_t3S+mXMPoEx(m`4U_+0@HD&tIto2IQ7`cg7@caT&JW=!H1`l>$4zLMP;)&7C# zWOEncm-wbNHa~3v@3J2@vCqi(PSCX>{^a9cg8!(7GbGJB>lY5~Z07ESM($2%dtfYO4_aOfU^G?e7Cf*CqOCJLF;z8fu-{Q$(e|#6_#II}LW9g~HkD%M+ zTY6|?&$?saSn%q6k2>ba@qV1 zD<+yU`)Wo(YiF?DF%6#wvC(QvXEVfUOKF#R{fN?*!+t>KaoOlK1LP%bOfc^z@?Jw; zY|sEyU{ZG(I;OWJ;MeV=?1KY!dCbDgPzDl-54@gA3B&uE;5 z!vzn+4~(PE=F+)6*b&@8;kMfr2i)3yJODuL=GH(J=3GT zfc#%by+L`Rww<_qwQk$RU+eEn^7Tl{tLHBR^hfj3VC;^U9A=EtDS!JapV6*7U;c(_ay6+=Gz2&Mv>MgBWJkBV`tQ#TgzG} z>j2rX%e)7h?>p3;qV6kruZqwg;Fq5oAIONrAEYnfQ@)qNAF|ao-|>C%|M79g3HLp#^J?C!H5k(#F@4nz@ehnU zJ`dtB?)tv&gCVW^X8Kw&MKLnY2-k5sqC6XXH(Nh|(t`y$XC4B-LFY&QsgK{#fyc#jQ#_hT4t9^<9iaEUIrQ%Ps~!M{qWR=V=ph*@ zAM4YaXAkq1F=Cv3ey%0n+|VEEyt0Rd^Qa51n5P;%dGwc$ zea8IdxS6w1{w(BHCAii;s&>wCl&rr3xo2pM^Qc5)wVqt8L!X7wr(w=j)7%wZVCc7g zD(n4)v0~{At+BI*>3HSX`g7H;zR3?&1w9sX)>aIB8QsYJSrP6aR~darubUX2H1<;n zxX}qaO+MPxoO=(nq`s(6L7p}8=}%TZH8XDCzSj6O_BqSXF!#ya6BtX4mhjlV1eo+tO+WX4FPM9-+BE~N>oLH22#34*S%vrV({_?hmS$e6$Ue_5j z8E9AM%VelqdnqL^QuyDHaas7*p8t%EaH`;@-5PKppO3~kL=5N$jIHR*;DGO`517jV zS5PLX@4fbow-);a4-dYLqqW$R-G5}`_4@2{7n`+G^hZ0>;Ki%3l@ufWDDX5B&vH9* zpc8qvg7t7<9;iANC-(!x(T8Xji zlIJJB_h~Dy%{#XCcX@BbUlCdw+MxNsnb`T9-Mtff$)2uql1)49Jay6yl*QNS9Q(|H zC13F7?Q88>f*0%Cc>C=u_S-(kxzwC@G*;gvw<-5!`)#!|(fSoi^bOpkz>!n<-1>QZ zH*J2$uF0Rt_hG=1tgkHJglzqge$~|9TF!ooNpH_FFmP9|ZRa%d=95=>mepTUu6Vi> zc}#tsmz%pd^T~6JwAcB&nY>wkkMd{ez?-)`GP6$x8+xd>>+-LSwESymq24Xm*}NJO z|GvL*=KQn1cy`63D3(1v%i2K=$3AQ1GugLYZ_W^`_R<~f zh18zjNbBY7#YvG?N}7pP(>xBokWck@pQ0YVr6=2azwKOTjQMteZ?57U=# z@za@eo3&m)9{f3}qwKFV_jsFk?(x=p*t^F&g#S)u>L`PbnIvCrnUg-MH94b;^iCPQ zvzO&1?Pc-X97UT!e60Ddr4NG-_s3)3 zMc|9P*f?f<>^Ky+Uc?yqW&X-|8hhH2-`wVVaeRN8IE^t9zFlx@`N`6SaQh5#Y{gzo zMz4%T#z@9pGB&_hLm5M40kN*VGS8QHc7JT&dUOgpuOR-4^EGrn)R7u*UD}1lm0qbm z%cbCZ9r3l@PTLhc->~&c6Jv1+_~`xi*Z$we@y+T5yKY$FI!6|$?kH>Ds+;#(Y?UX0Yzp`+qx~ZxwN`9w&691law0LY(~&gi-R#|Hhft{oofrYyKY|{TypMp(B;7 zr)eFm#KCtJDe1S4=*l1Up7pPO;ky2^P59sRi9Y;q^YpzRubO-QYI+W5debiJOK&%F zc5&TEXJ<9--^Y2xirK^Ve@g3_T4TZYhAh*bvT*BxJ<#v?{qaWdUdmoJV>>{9Rd+QU&F60md%k@8;ZE$HV%ApMi5IeU z+j=^wcUqpUV+->qzm9Z_vwNvy5PzJ1?A4RsI*)p!`_hr9u}hx2gLmYZ_$k);^#hXI zvS*e@+t<%?oQ^K!HgfgIa_~>w_*0#ng}a>eD*8ga(+I7b?w}6!(Zr|FcSBoVoTrfo zKaZJMb!2>Z{U!1Bioco1o&s|gj+5VUh(1?yKJr4*9P(oUI-@wmx!%}Q+UqU5T(;36 zWN!xDP)~mCajHbGq`msIruEIWJim@V8NS%zOgYEgU(tgNkfe>P_-$Y<@~`&$YNy7=kGIUi zf16Y0U9Zd(e&63?I-3$-GkEo*+&B-huon zsR;Ka!558r$E;Vr*X4 z`TRX0-}B*Otxs_M!IKAq=Plz8>9cROw&MF!Gw^|6%G<=+CA279f9`h1OZEVCH|HFy zTWgtH$qs3P28}Ha4PB#rz$Tq3`VtKm&hoy0pP21aC;SkHAA0kGiwa~wA$&d!zfrN)@HJBBB&kp3qv)!hvx(zrpARWRmFd3A;m504E|sr(JLqR zk$&~|5!p9ieN>wI2>+;$(hut6Hu`ulr;m0o+o0CXs+;_GFxFkvBb~z;5-r=H%h1I9 z7Wo0YsCQEo{lJ)Sf|f)>;?qiGi|k50yYP|dw2M6YKA+#X=uWi7dk60Zr!h-I!s(=5 zoaVJo7zn2xpWl^(SIJ79*Yhr2oIr^H}od((|ts>tyIT-1{EdUWIu8fNP6OzV-;A8~K%+Z67|oe}$d+@cyK|(CaW>;a+5@y{`WI*~ zRfaqm<18k|X;-H=e?K_fw!im)LMV`O$TcEty)@hz~#3+QvDkKrE=u%?Mco-^xsR4F5@^dr@Z&waohZNzrWiJ zJ@n0IIww23x-$64uScHE0e*B#W)JVs*&+G$@R24nz^k)=k^gDVj>Ps}v{^dodUtU} zd%u>&2fo_9@hFPT=QHlBXZ;n1lC!_vO1s>%)O zu^EfQd0NkR7gv%8d@e3wY$}|>+iLmlM4bfjV*S=tpo45?mb18;^&>M6`iiypn*SMo zpXDyz%ldm%>r97j?AzT+M`rCIJx!V0_%k-$8AB44*mOmlZ58Ad_Vw%%zs&M!YcR5L z6z7QtXv!b&g(vB+bihlD;XmkWhx)4iasK0g{Tq|hznNbD5;^_5%IjYX>8+G0=dVUK z>u>CRTd(579;kmKbNbgYK>zG{*?r?FTMF9>-@1FeWJ=As$ll|5BUncn7Aw};#%tV@ z8CR?m>l)AST%%Za3uY>r( z>kDr>xATmKb4#bxo!c~|s@NSn@7(AJ=lB!Ax5>n1;ishRg8_JTenv06?I(eED6j!j z(&sO)AF{uN3&E5IKcc0do^Iuo@Io9E>F)8z0{GT`I_@bsF4=1`Z# zMR5I+aWMAO9_Y}wt?Kk#<0PukeUVM*NAU|fvW~o^#E(xa#MgK@a-zGU&@5?o#4IgfP&^`jpXKhvL|MIV}fMmT#mhOhXm8ehiS*hObJ+34Bc7-NHL?jwF~pkEsu z=g61gy?pR?FMT`@zs4KKoFh%dq|K*~Z;lw$^5UCI4jf!?)6)g{?k>*YZQ&mBMG@$8 zBl#Mk6Vc@t{Psjoe!C}YlX6?Y;XLYpbVOduO6p(EST=xP@j{ss>Danp%+s;F_^v(Z z71@CrvkQ>1l0C5~z7+Dua_v2A4s={w6Zk|o9CkJhPL!~A+r+wo%In*b0Iqxeo#6b1 zk6GR}^a&04{x&nerjJ2>mHcE)J{txOtHUF$ry^_QtFIZ|pGPD|G^RiF>hBJWsZalQ z|5D%loq5$x`M_hxs))~rcaK$ac5+@TXRNHN26yOMt=F1;Xl3BAegtv+&^G?RMD3999;VMv4t61Vxl_2quuOocrwO$=*zH^76NY-wD=*oVSc?!=d?1vTvV@g z`tdi?)uv>rVCj{q+Ywa0?hEuF7$1p*v-3bx8^nMCuPs(x-jP(iEi`05I1Kc>&%quX!yt$ z@`TU6>p&bo;%3diu$>y7?^(Cxa(ixt-ly<>C+|`D`JhL?O=Qll?@@Q}Ie@Vj$L1Rj-BoC^DYmjf#QLzf2&WQsjfQOsBprI8j;=d zDH!)iHPFrv{!snVgD*LklUIxUMGgCC1Eies}6KszSA zX85$@;PLpKtV^KZcQ{G*R1bICHV`|JL|>*pZ|w8K&JKGg`nQyhoOzveS9bfbkDI%g zA5=Q@^(&iypL3&KU%p@I?3o|wr(b9HqbOeE>$GXc!qbt#XJFxsFMHW3zRH0kS-v%I=aHebKr=&L^YCmQ=a^`)RK ze5H#tA0DXQJg?r|{d?PU>Jxu`_FK@9$6u0TpQ8SO>io-4%e(K;Z@<5L&3vm*-(5jn zzd(O#o#;8vXF!f{ANJ`9?4Nb*5$AG4r{Yoes7PiEGra9&cSFBbo6bvAMV%Jeh|&?m z_w=mWJ<-x4zL;H;dH*lo)4(eEr?g_^+hCo;uXc#Vc$+)8E*;t57ZVqq{l=bWb^8oU zSJLCp(4Uuc=x4?N@gB#32fkdb_}SgWjczAiL~*mkK($;tRCf>>v z!sFaeBb@v6e}hL;n@IC@V^AO1{S3w}uers3t*C84M@kT$s7$6OK ziCjKAQOW%2*ThKl$}rF8cdpl8*`@>eFYf1Fyx{q?$5=OMgtm15W)=7^Eey#XFg&IG z2gx#Q>NQSzC2>1i+bO}8_42-|yiV_4Dr*P2-u}HLF-Yy$rqUfDoskGVXnaE05RB_> zE^CFt-0Hm-l+K-X$uZcB_z;ELLO;)Pt22M9Jn(;* z-xAg^cTjhYbn}hWfo{IWqaDeq1aRMV68^~5H$Gl&1t&pTRXxk7CwD*g_5tkACdMxY zyKo2F*MsB`M2>3#etd`uNR6u8-+fm`V_|NgXvH=KBX+CRcc<-fu!vHWt)i7KIS?0z$U zp9`$6cx!`apGogQOGN=b3;hdap#yWTGPKfw?2<3G_VdK=%oeB*r7^jvrr_!LjqMZT>=@-}3!nJ*y^Yp9b;34k^kn=J%&jYr#SUof6@xHAV+39`w(^^3+?9SI>BvN4H8{hFzbdC}Rh8y~ zlkpW4x(`*2-m_lsb=WR~yO#4p(v+1xxr6ri{urE)UfS+1j$G*;P`t=h;8L*Ek0t(v zwUP{T?r6KSxT1!?1bD881`v5Iv8=g7+`*#Anmy12OY_dCJe24dG4Yt3`3(NUFU z;E6mjbW|tnG|S+d=QyiPGIun6(|h|l_@&WVdamI)hU}lnv2e=9&|Ie3o%H zsQ5#DuUs7}Cw_6YVkV!Q09>~~E0l}da%(Dvg^n~4vzodEdPN?UB#RQ^v+rJ`b0Jh; zdXBYiO%x3sJi03L|#)5d(_}%E?`gfNQLkujz{7vk;$<063%l|U@zes-9vvUOJ zcTdxJdG?$)UIxBXxI02PDCDkH@$wyU>>SSULZ66FirGu@sP>&8E8g4Pvrae(*4s?I z1`q6Kf$w)#UFVk9g`$%*)(&IsxWf}k#yZ6~CmCniyr0%MtL|$ZyYG>4y9#_7z1Ci& z*wxj&v8%xBkB97{wBB=KS3{eM5~H-Y&yRNn)_!I5o>PXgIxKprrd^&_n{gxGc#T^Q zp3;UN!iFE37&q{~PxCbKgU0FIXDv_M3f^<+SN@;ViF?%VFz@#?#X-W~jfL_3gT1sO ze&e!z9xq8$;^Qs48n~plM;9ha*vFL5y8{m-uLqa3nVRKft7Mm=AFEiSFnPaY6~$DW9n~E`YboQiS%cw>vQ}8%W7vB=K-=7dGIQ$ zOOvv{kd1;NP5WDU&dhYOCD62VBK!NS4LITwY?`HQ(^N0Iag}Y4`pQVZyY15+e9K99 z)lOkaVl#c5;=yr`pZ^k@|1zb|j=04jjfl0fu6SxEtAv70~|@WML+TKIHs<^2RmK0v^dn{Ou#s4*~=4 z5p>}))?wsFmW(s=ftBQoO)D=`8}iwZujE+4q-XO3a)`Exqu*fo2c2AsEZ5v7O@8sO z{0Z}krIrmTp3RWoY3eu z&9V_4RDzF#dtZ!A^2*1cf&av(huu+1-b_q;=OW!rPccWH4i0GdA;CP|elMerD(2OS zjax=t=+oKgjB*FNSvJn=)TcR0lKiq)-r!yHX?=T|XZfH0siKcJ6u%+b)SN8^Z!BT0 z1Rgl-c)YO@8WL}GSz7JojqfTQ-gv{OVUIV~C>`GTE$K(8YbAfs>^^6QT^}rl_6#oJ zN%>Cs#u@+ed)(7@2H%Qv;?t@J!}|pqOSgP9I73GE{`37wZy{rX>ob+)*B;xX@WxoC z+0Td!X0CNsV*aU~pU0ac$fiG^HiG`CajdTd>#L%^80!;xmpO-*x1TDzpc{K=c6vDS z*sJ$j-@w1ZcZct(;oQG<8aURwgMXCwzwz$p{Um3aoG{-Q7D_ZCJATcXP{M)Wa)9e~ zaO8K`@9*B>g0KI6mQ%sA#yo_6O_e!W*@ukl;sVm)edaT^{_z?g@)@2$rjF#D@!sJ? zKar@#e^jRL(9J@Bysx$C=O~@HjC#`J8qY_@oBh8kf11~}`y_ll#$l|8X}uWQHSH9) z{(o(xPau6O>Bt+&e66D-%R-4cD$^WF{4>9)kyaL@DJQ*O3?J;qwe%G?H7cBa}V zuktZ>5gP?` z^HKksyw7>{Z1lh7O*Z?W_VDc|IrY2?{^F8-=v9Y%;jjru2!~00I7!mK>DMvVo-^A< z9otE}kH3+OjoN2EQyzb>U{Z!YHh{a0-09F2`C8i}@#X8~w{Mh8q0S6tbw{2nnz>-O z;mgZBn)Ll|Uq8k2p?kPwN_CC)AN)Jcx;J z@nMi&tBg0VFVVRVob#aj(-nWOb;%U`Z0cq1`&;TE#>3VD|4Jt7ESjW4X;g9)C+L+Ap0Bj%3U zpnM9#@nMlCkAcJ3HyU{FpAXMl1Dt2$dU7)MV9&ZQg2PS1K>$Z%fYTqtuWL-93F(Ov z$6@cxv{$t*W$?||+^+BbSTS!}FZ|ONGv45J8GAB1BX_hlbEY`9`H>$Op6?qE;lyQ6 zaxH&4`@=JnX<+X<2(1dnser()U9;C-74A*)#yw$m$S1> z#epCTG)K`nIr1$dpR}&I+TjeHM>)f{AALgGn~UT7^N58j_U#9cZ)OGPb;rr%mEoVj zdI50mW^QI;q39EGX*Tcp0UQ$#Rq4UWJ~s5yi9UY=8-7apAO+VSiRa0MYg_=X6V4xF zt{U{`r_h;UV!o1-@x1{Xaq~}QV(>RMvcA;`zmvfs-;D2LDs)f*u4CA3;G6R{t?We4 z3Z{CepyMEZhqn&jec=4#_pYkqy@c5EE%^2&mla1OKi^c!jb$BrCH;P!eiVfUb-W!Z z>UfcIFCJU9>L6vRoucmPJMLd!;SB0df+OuQIfVS_dKNz%`4o3!;){V#c4-=(&M@Ac z@M+hx+&c?>sP22gsbY)n1*g?cL3jFtp4s?BN96wlIvDNKf!8m^ul!mxDH^3c(dY!d z3pddAXy}x=hQ(0;7VXzn`)@GTN!BRD({`U!xOJssvFL-wae2--ir2&!;?<`L`{ZI8 z{*r8c;3V{B*FXEmZ;5xeAQS$g^$T!P>W!uB&aK3;DJC61o&1Q|2z^j`Mtg#3p8#f^ zH@s7FCP};Z@Gcl^JvJt=cb@Ipy((XW-&iqy#q@hO{8h;~M~P_*@|OC2QJ~-I>({-$ z{?AGJXZ2Bkeri&@4{gTy4Ypea&Gc*6+~fWlv7@X=S86+em5C18Jfk^oNm)5z67~dTNYtOMdxvuFTELxG+BWT%1<* zH3H8f!}j@Wik+7@tCz>kJ-SD?Igu9Gk-cg7Ta>oK+h44h%}QdQfOV%M-wStQPi(OJ zc&mxk3d$JYE*s(D)Es3H_7+r^Zm{oang%9j}-v*@*HDXbc38WZ^*ZVSAyuV7!O)Q4@F$!VuM*Xtwps z++Nu?FBM!r@!-;$xD)v2)89$ze=4W`!_I7b$IcBo^>6uK>K~V*A6Uy@UH881T+wxL ztMo56z-nhxL8AVCGk4gTM6UlvYi!6pje9M&fXRcM@ZS#@8)1j$$Bm@F$a_-bH^_Oa z2brS!Ybz?X2C&mF^IPim(}|HbcNUm$$)dy`PhtF#KjuApN@CJrY+k`bTZ>lNy7fJU zTs$VGT?I&Dd&)(E%Y&YZ=U)=>oSc&U{yTgtq&| zU5f^@;N|~He;V&E$VOmH<Ggf{NGuRjm^awPn}&|fZntNwAh^~duQx1OZ_w>75p z`DE~qGxl?zyfW}o-wx_aYOM#`?o`q8V1M1++FC*W5{~xK&Oq_D1D%g+;FsP-7AWpk zF}GED%^juCKpuZaHliof$PUdtBIwHV_}exl+|p$19D7G=hvGb`=PAL**cq7icy_&K zr`|xEm2VFU&PP3bz@G!k6Rqt9<(1C|N5O~T!6%W2$ZtI_dmmaBpTLJHeoNrLhu}xQ zObhfJ#8Zvt`PWQLgy8!r0orX8OecfK=#xJBO=j>zc)WQ4n0%SPnKe!ymJ5La8)cH8 zZ=v`K9u4A0vZkjQ-;3k{XYm_*CgYY9FH&yg0(#-YeBko>cZT{^-PiVP)md$QB*A)- zE9JuTwdzxuTkh)p%>ulUr|1avoTOlLn0>nG;Cm%1O>-})!4 zKjZ@Jtg5_lOBMW51;6xw7o8EMGZ8Y(zpL7t*Qb#UF8on~4O0>?OFZ@rV?;h;!FFb- zcL_1e4b-Re1-g(=UEo@2^GKVAuGe$zV=gk<%|46Y^^qOR*UQfm2Z!RjzrahXrxTu2 ztiVC?sZ0%J^gADz^}B%j^n24|j`?kP!v4~Hbt+D1s_LSw ze${_$?}U6o*h{mOR!=?hQ--~F!J3|c9AV##p+RpfRo9Kgaq0JFeqHh1Vb(s0+qnUM zye|)Yf6r#oIWjUe*v;m~tKOeuza+Q91K2uwPolrJLjQUF_Y{i$Q)4U-w5VQa8{bNK zuKab*t~C29;Xm__`Pc2q0=sw8BpkE*F1^o=cp^wo!Dr>k^+^#^Xnb{l=T~Rx*CE%W zcmJ$+&WYK=JN}m)wVVSd-K=lOZ@sn_&2@2ZN7Wi@$&lgpYne+cnrBY4RIcgdX(c@IrhGvEC_PNgUpgZd5+w z=jK`8rT@h{>2({|>-!dDPl&S`Ww%$8zE$OXybWNN`|@%i{kfR>C9jw0*TdCPwaJ(b zgsXbScnLVF0ax_{z}f_0_LXZ9vh$R=}qBE@oYY>zUkr0w^v@vv%GRL{rQ%$ zm;2(4WnW6RHKOx=jn0ryBJyCO_gt;bq`yjf_zQ{srJS`TAF|Hd3XO>G59@qcw=gjp zS+U$HOWg7z`Ra1=eVcPM!K29&E#uts;?{Y}x2S)>2hGI(Y+Ff_lqAShrYZLTVkq{9rH53 z(k?So|<-r_Z6h8t}fcT3LJOQ#!J8G!~Ng%9Kih#1Gs-z-=@0R zLdML<{ATZ*y8>{HOccGm8nH4#`txfZ%@}%#gkG%(59_w)XN~Bim-$Y%^G@)-#L1>_ zp`JySb_$RK?b^4*euU0QI@3P{k9vBc`LD5 z-eldc*O!YQ_mp^i|0kidRn93bKgS1qb!bq_+cRn7)X#L!U`%Hmj~x J=1g9-QT5 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.WLt$s&WtfY>d@DLj2?G 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�SOmOkL<8Jm&LkrcF$=8%l*!2mn3r?~D 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
          VL!JP1C_qQZ#T00hR1Af^yKm0sv?9UHB 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 z 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%0AEeLF{a6Jv?Y^Ol^nIjn!6xjd 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 m)d=r^ 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

          BhWVJs--|+p)Y{p$`;m)L5G4W@eC8 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

          C1!Tj(=PnsQ>B^HyZdfcXpm7wC%%UL0Is)Y5j+ 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

          m3d>ZybHV_(nN^^f(&pI@1a^@^8!^sRh# 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

          E4H+2W`0d;(vf|Y=Y<24q?tLbAtIPQ#Q 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 M;LwBt+UCx7M+8Lv3tV& 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
        1. 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

          {91|{aQAz?{4VkPM`+$aw3>YHmyuCE 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

          XuWbtEV2NOC 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

          Mq@ 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±=JPik?iPRCKk*1u* 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

            em&VteEZU>mdB9&=AMv*5(-X!3}I*BwOc3t_w5Z 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≧O7?0-Z4M3nb{=f&7y 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 z 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�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%0A<>+ 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%0DwNgXt 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

              v3{09%&H|~~LvawzMqJBHR_quX7j_GTY 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 C91blbCc+*}6(SWH@AWlm4opI7gvzXVKS6 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 BNXU{y62R*vY57lZj2KNh{@dk0 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

              JeWKm_%tB9kWm0z||q zxvfg6?vDlrSg1;emdmZW)H_B+yg@%e{e-7-z&Q+6k#D3!J>Gc#hhfUn^*m&0lQ?ue z_X7Aa49oxxf9l7};@cNtci+Ih{ePNmG7;hAP^1JiOqr-f8QEqP39o<&_yLyEoh~&R zf2jiz^yGOdeOAF4pPdRZWugMntjAwzg}Bn;z-DTJ32-HGy-TB9NvN*)yHY+^5{xVU zj$M_YY5FHmDJ|2C!x~^Z0OUBh~tJooF1S_pd zk0OSnkl_l=aMYT)IVq!oXt*j6D~*`8CPXnCxk@qp0{|T1(7o{ySoJm{=V&1~=$A7- z_wZWU_vCC_>vi*r;RK$$dRK);(f^1#cmTsR?CUA=B7mCIB8>e~zKgl^| zICN)^0K*GEr`%W(E8wTxSPV29=R+R0L$3IyX7^kifX{=YnK1cMmT+W#VSyH|;0CLZ z1qmSwF!vyeAng#R{4Qq%sIdu=EWm^)Nlm~1o-+arlzRHaaZrSEyKw6Prr>-W3ONa{ zz`+4)anN6enNL7CT=_BBN=5K{P8n=6qJ?l0|LAKnqDAV*rY3hAY8rt5Vbup4jd}1t zJU96=>C-`|b&=M#$EJ0OgUmdcX4EAp-{(2X=Sx=IjqX`ttKq~<`Vhsc^siP!PD~hb zB8q<8a7$@ZN+qU{34jyszyvlV5xhTK3`ug4ST4Laner&JO+x0bc%QxX3P zITTS9T?yFIVHI?aBM~^5gY|n%E=r1X6M#9J7v{p;TxE+nVhirs=HTQpdDI<_%(p-) zC|GTUoNs}gkC4|`Am=0GiyCr1L(Vb6k@-;0KkTg|k16njcPZ6dQ2TDNqE}ncs}ViZ zNGM#5=%->rIJvE$FjEv?@f>lcH|P&l1E;UWbPg!k(svumc9b251qKT&rl(W5eY5pP|FHTNYSzm<@qbVvX03p^^Flq z7y60g7@I2fm^FDoR%zBnQEHZ7lvbkl++h_NubRFg#gM}p& zV!8}p*h_|AJdZEzMZ+(Ke{Tegs`gTF1eQ3k3HcKyRho4e3X!BGm=suGNqP8tBj9jG z!f$*ym>U-D;S6I-ZEY4>9HVL4mPJBqOYKm!Q_f0|wky&^qBEY2Q6@e3ZY2xQx+Jw9 zOXc_aW+MofI8ZYeest6ti42+x)rTmk(^6$odbhPq+8q`@YNs;!6b)jT$^f)e$&4AP z+@sxb{M{HHZf`c`)y$u7M&MczsC5z5@v@ z4mSMzO1`&AAXj|-B2VK3%oiTyCwt^a6wJn0kFC-qd!#=Q^?4(H{q?U2?Cwg|Zkx<_ zwRZ);H{_xdzCXgwIvAQXb@~L;=dFn*eQ{iIX?chxbkHbuiBr!~mpE~nTK9dN+l3_L zw}c{-f5$X6PhCQ>-96d}OrnFAODI~I9J#TIH6t`>dYKku{KHmpmLB6%7jU@ILp$CV^&tD^d?G>@sC;sy4-1Lxh|&w$&fxPmO|!cnqKGgi!n2aPJtM5l5aA-Hf6 z%+}l}@?QKvyXlAPgsvNZv<%-{9 z4;!C3drHZqpf6Gv#;@~CGZ&au`DL+4AXu*L7Jfn5Z#)3}&@rkC;D={c=E5V|BtOK8 zg12uc)#{Q^FgPavf|`JDrs=g*XS#__@h#YF<^Pz|fgeD6jK0_RDV9SJ;4#u?j7Js0 zV`Oq?ywuYz!hI-D3ba2VujksE0`;k4l&8#$p-5#Mg;gR9{KG2BGc3w8B+6V5&d<<3 z0M9s4{cA8q-2NG=2rp6!vxH};{4#%-)E*@XL4B`Cq0qawSf$v)Qfwh9CjKxX#TJsH z0aHYZEhNQSN)aixkQDFlO9~R91U(=$(Hrw>_?B%}F?v~yUJ_&Uj}l_^k{IV<3T<3~ zUV^;(M-<k~L^8B899B)p@{#E^9`is2nvj5FzzhDw5wJFJqt$CA89lI%d- zFt6XidxUKKcpoM|Ej^M#D1F(A^f4oSOh{9Iti11If^o*j^L*`N@;2<0J?%R=d!IbX z8$YM_IDj9rcIb|-Bvc))GI2B}f^_sUM+a5Dy)4jP5@^Z3^qgs)Z~E|>A$6UI<}~n% zmE#f@RktPdLBxml#qn%!Acjlq7<;SIT;QKpZY!AE3gR}P4YtC?G0%=>$e^YsbbPET zYO4x1?)iRmz8P5<@rDaEz+4UFF!H@Mu~4i!d|na6T|avmqf+)mEvk}5%_uJ2m&Nc1 zh2qfGr$jCUfLqz5w~|SJ{S#Hjw>mRhF+L$>d@Ge9ma(l2d03@6hX18F&j5hq9k@~$ z1UNocHyr-&C)~}<50nEOkCCiQeVpWh=Y7k+55(yY@|9|%>q{YzI?xs|-*M~(&u0654_pNrg@6MRmr zru=jSpzO)%ty=!iMg9TV7xpVY-1c2-sRe*U%SPOES(=p0#MgX=^1Np2jr)|zJ z=%{ADjF`4bN%S_k`w$u@joVdPGnNKy7YlVYgL~wOcrrT@ftQ756Vtpb(snev$0G?Y z7``HDZO!0rQHiffVoNig!NyeN_NH)K&)nV=0}m!`^R+mz3@nw_@B^#%U*HY=kqE#S zSpq=6`2nG5eJ2>kK$pN{|yLFb>+DH4vD^8>XrLP4KdJgIo1 z=H2z9G#K-uxiI_Zq6Yq0en1$tp-2KiG4A+D8h{U@x$u+%z#m^H1K9gJZ0#rU*nG1!#P~KCCLu(v7q~#<-b;Y93&dP_ZDl{u!dREk<xU55;EgFA^e}0N?x5hFqAa*?liPyEOAC zEvI4#c?rfihYD@Tg$B)-=1{2xolW661Ax%k|_VRoSR5*9p~58bULkl8FS~pg&sStu%i-zgjC0 zJ}RMzFIEe1x1;)<9B4u;?EM^fQ}2g^+5A{VAPSD6t4x?r(cc;7LgcEr4J5d7 zuy;}K?}uY$P)vA9tTcVE>TrbTP{^((ViM`kQ%JS1Sjk4GkWKLVOA;r`h}W?xM6-i>qen9FZ&HXY6f?~Q zp-R#CxP1{$stpJ5>l&I^TD)?0Ff=db4FtXOs@UN_NhO~hjF`Sqc`#6K`sph&D8fK0oxS>$ z(fRS2W;7fMMw$2S{pG>N_bhK!4U>PGN-o}7S~hix-wei7p?;Q1Y0+_}c|nb?QF~HJ zXM~Ew;VQhyA`l8H{~{#^ZNwDDq>Xpfl-k-_d542ldTDEC=_PLYE~0lCR;Q+SWv3U9 zJ?R8`nQeXPHNAcs>rdkYx7frRR)QeTG;jx2pw>cS1DG|f?7W#}#pj(pW!CBE%`7?L zyuzZB&MP~;7;t+)rj?nEa_q!OW#>(rIO)8S2_>4`*5=#Dizk&4V=J|-u}PsW8h4_N zdfbqrB=Ig9cOuDdYa3G7qn4+YOh?gGh8t`pmXZSnk{nnVXr3EWa!~Q(-=QpeNsB94 zk(4}13K7(@1I&j~T8(_^Q2B-|^Z0&qq%Hd^_nR%9T2~!Vu4JWF4wY+Ci8g!^nkwX5 zhRUk#F+|4O4mhJYi9)=0sElcZP0D)bP+4ulqID#ra?GxwGA3cB$$HmNSv6+K>BS|d z7Z(+rS9->@KNpTI7-y|So!9Q)zxT=D_EZL{L_|qt*u}>r*CZrNqtcQT!hK4xG=+R} z@w90Zic6-RS5{JX7FEZVyN0OxLtBaR9g=w{XOdlHe1pA40k!*!hgq#*d0j}amkjlq z`<$giy&g-sFHHBktZdp?#%{5_uJ+cJR(S)wnp9@x{{mKIyjSM9Bx9W|@WXq4v@Q6d^?H6vqS*rtT8 zZ(_O2!ln z61TY8MkGkVkqV+C0-FtyfKQz!2y8ANm*oPX;XjUyh9HtL{{`f(NN01A1T%G1g5t1IqO^@IQz=VB zfnba&ZO)RQ#Fbx+6XS(4kwC1XnyGERps9IWmBhz{8CJ|h=eAwxHHDV(f;_!N)*sG3(y(Tlos-!9Jcs@ z&N0=jBkK@}EqkElDbg?#W*>wEp1cqDZ%+6qFwy0ZHyE3MHkoziRe39MIuKo z#gPl1uCn<7zrv9lzOvO}el@PBkY4@BD&m}?apMY4ru3g#)5Fn9EDY*^sY2UoqP(4W z`XqX16ETc6XmTi0?TyV2s)}!N`($I1xcTjjlCsiNMi|q@E^}sCF%~2Bsx~A=K!Z_D z(rpJ()wOhLNm=27!f}N2mW_|5nORm`T2@9B|4L6mP(<+d5CncUD0U;eY$P*6+@h2J z^(IF^rCUiNu`xiBK*TH#)+JHddRp#M5)@PBpB7kP1_{yTZkiod-oSiI7NWIv%w#kG;GF`_KR)3t(5|OkSJ_zt(9V2VG&cfVlv!$1CP6s%q!XA>AuhG)lpq{eRLF!1dZ|q{vP|2SY~6YDQAXa9D!uYM=yPD>-ViKPPMnz)`RVzvoAco ztZY&=7O2LJO*n2}pJV07W8ktty*VKiipFMDM9gSKsLD^IEiJYp_nY&*HC3_c-rAXE z#n=Y~>SeHRZ%=U2K?AcyY!G`O1h)9Qjw4ps9Wz zbUfwGaTN%0uwfs>7+vP`y=O#l+f0tDRI=fLTbq_vS(38N2o+B%gB(|QsJ#9_6xSg9 zG6Tnhh^SA8=#Aggv|&YX#e7n6|swq08A;+GH8lPIoarGTUMrG%= zA(iIF%_Pbc1lproKBQC?w7J` z?8yalAjfsnJ}8SPm7P{H{d8}{zt9^o%Xqp0Ij+ABmB(vF%YD_XDVA5)kmVJKn7$a+ z7Oqp-udrsg#%|M0j3?OXkKO0Edc=fy!rqp>!mO$a%`{_?I&4wQs5@9&YEWSBLe~E5|jmgKK4qx5cWWg$2BI0&-m4L-7<wvJ9}Mbx#_P~Cg&mDrc4yt0?2Vq z6xx3*$+nAe9(VLO(Zp#8XMr5oT*+|SFO!NSR1=#}Gru$xs)8IBJnthBe*bu~c9BR~ zMNQ0)OX@kU@k80lj6|sGrhOCC&!JvJQOByHHNmKNzG+rgLyl|HP$e8Qqp?7+{ET2# z-Q-ZjXN~GxB%UmmLR2Fvq9k@DkfkC)L1 zUd09OZMS6uR2)Tq3%_$hKAaZH^Huwg$7y_^%FHVd73LQeyi6ETFuQoLqK|I%1z(2d2jEGt74Fsc5 z$SLca_Al!s^eDfUt|x4ja<($yY&77^qesA~aMY~vhw!GJP&FP2huJ9hGJF-lU=;t} zq}7;BxB0|R$D4$_K^%>p#de$nuxj`LIh3!$>#Oh<6@)`ob%kRK#)13PJF=mpj3v!G z1m{ZOxGzUbCe9B81F;1BEEdBdyS)#N)eLhXC=MO76({uF(GEPR0WccPn{|xxiqV{h&Nfw zHV(bc84v&W=w+t2N+Xt@ZMDnEgnTk0HytwqM){*LfRoWk_v266T_OpeVM16h`!Q9~ zuSdWroc-X=8E+L$`1noa*UHGmjt+tEqy0&?S$Z>u&7fAG?ax+4P9sH5Lq*o2Or*$Z zsL1>HQxu_u(W7x&D_t@~>yw;Xj;YC-5dCeVl_vDlh1UqshpSIxcfl)<4@NV(Aa!ym zQXCGOK|i$p`6zJwKla`{KC0^M1Ap!e^o4k%A=(*hw^S{HTABcYxV$DLASi^9uvj-T z%-kd+lbK=e1QL==qN0t}Y6elGqK!*6b&b{~u1&RXrEZO_R%)xJueS2GwnnQhTCKm& z_j%4abBEy8&+qr&k3X24bIng4e+s0$Z&@dQJ_YTmp1V#s zemq=5$0CM_k$SJbzQ%U?HP~s@p}N9-4H|1jP}wO*+=mEHh2zM7AaZvzjZaq$0@rXKcS1kmGAiv=lWL5d;BD0pH)_=S$( zjAGJ)aKtJ^cnyJLFGcL`lJJ-3XJ|<{m~ZNf#Spr?Xs^#xMBe4vW zdor(n@Bg_no1qGtYA$>PND6U(2MwPZ|G=s#etu4V0<*@mg^0_OH%=Jo+|4}hOG zlE7OCtWBoV$&D&zT6r-|iN+cl$l~N+PZBVHD(*kwZ)r<>&TPZiNCAKQGJpGmzcuBe zJPuq2Zkl3baR~lk;z<)&^f{G;nSdr+f1EBmG=nqMOkn2m-B?D^rWvaA(q3YfHW4iW{)7rNu|!MI03TgZOj8nMEkT{bJXx+P zEkX5R$2^}<3&&fpVgz2DH2J|QFB_PL60HOqo503eHO;&eY_K+X7V3xFuI6xrR>|0G zXZAnSh-{)69=hjyc{zhsat3%A126ib5y>MJhs@Ls@)=mz_UC@m#VoA>OaF;#n!^z_ z%+N)p`59cO`NFvNSmx_kw{b6Om?=fYKF+T;3>_JUVqo;ELu$3W8rvglVhlkE%H)tRMo5z)$D{>#Z=l%)OcxhFFI=$E`fh8 zi*DxTL=#9Y_7ciirD38Bnv)@rS*rqX&eE2X*@x%xLtS=Lj9QQoxBucv{rBf>Tf)(3 z#mplO8}%o6*=b{T+CXyZY?%*nVC`(p4hP|j$d1q^;ieLtwc~HNCIf5y0aLrrSuSo< ztRb^J*4UJp-!{{*)?dKl*%tG7wgo1yF?>nb2lrK-ezI3{%1Fpr_1SoRJf1B6|`N2dq6i`PCr-Su@1YbB3(hh zP~p)IyJ=>+oE}%^ZMQQO^s)-=Xty&n=@k_kX}2@8XjFx^w+99x@7k6Iy1{x==Fsh*GKU`D zrr?lt1T$z|Y@veUy9hqjh%WM>a6(5E6NWz$`Yu9k`r9K%Xe*bmpSFB8o|A@HLYfuL zLAhF(w76Nm(q~CScBKz3*}I_LM0BNZanoLO_?%)YbrD+Iv=>F@V0us2G1KtUX-8;K z1xB-WQ#oCwLOZfBHXRzt!q{|Zd)97R8cVdep>hK?Y~m{DdWA8RB|pyV9tFo1pR4}h zuB;YPufpo(Pb_3x=o_zuXt)-Pz_W9T$#X5Z@e}7H<5j#O+*pT(8(mV#C(RAUXH72+ zyX)jez(*f_^wID~AAPjXe}Ett7C!jT5Sqj8x+TetGv~)LF2NxEpN|9NuT5qOAUZxD zL`tqy_~~c#nPxV61%v|6+%t)~=SkBz`X5Ya4ALjH(K-tCw-)A{j^aci9nIBADoV4M8bRVxAeHaN5^;uB+Q{XkC(o-MH=0B>K zu-cevF-TYQ2VXApdAT`x*>Y3=4Ilkq^71nz{0uQaM;)bW$`Fsr)+5YSMZ$yNt)V3z zr&pCn<*^RDW~*xA4mBtl?FiJv8rC^&b=>yQ&lwI+6b5?nB}PvwfSqvN|0KKa_2+(r z$A3qV0OOfARi?2{4~@U6d^_Og{}cLIQz<^F?Koa7)oYcMAMRC6x6i_8qT7d}dK0SP zmBwy%9yaypViMIz*g3kG>_|D~d@xXd?)M#bq{4)DAXHA5_~her2v(Tj2!gX{tNQvB zg0oFw~++jy%nb1QWc4RhfQ8+^#cH{^Xy1T=U%rT+C4m&c}gl_Gy zBS#u`20HA>JQKR1BS1&_$Zm+F%jt&-y1xVAikT*28%NAG;XV!@X~J7O?ACG`P}zGs z?A8kUkqTXiQ2t{Ng88qT5u9lfcOy89ZdQ3eXt!G{X45SyxC_A}44rq{?bewl?O40r zI?E(|qup-JXWZFtx90P`)^4}XF(gOZ?bf*l<@fD&>yak3qup+uXE2{@4^%=|F}j@{ z!eS}sQ^w*EwHrTUQFT+e8vF9b3cJ7MwMO_ig#$U|zVrszpK7ATq3Nqf>!wb^*z=RN zZijLtw=;`|g?`TljJ560)}AyO&NN45ne>(lzJuT_dRqm@5S&ea zSHU+BJc8a)!JVBj7ft82PMC`hjdsFZ{!gX+eJ9N2&nmQ|6Xx<46?(1{=JJLLjda3X z{;EPxb;4Z!rb630gFmYfP1>{7Z;bw-Oo!h!{VXk9I2t`UnKp%@hnKQhQff)7Rf>N7 z6%+-x=N$anvDgqJDn+YwIs$7|VC%8P6iC68H_!q2iq7Y=O>m4s%aF|sHuW;T3_6v^ zBebkff-t5w2>AZHU~04K6Q?$Y)Y_H?Go$JDebQLoWI?~ECqbWSXXZcIk;&)z96K>H z&MYUW{EuTlz2FOv7D}V0N zEYXC|#QcoLq_}+6%$Fqv+48!4t|+Hf5X6^D<=xp;RM0BW_T`#9kuzx(WW=tM@fck( zi&jBYANJiog{^3^IvkH1HU`&gb};=sjdgk&Sa}6Xj1Zj$76O%8!KZ=vQUsyk(?Iq7 z%3=!kr3B|Rg$K1p?`VRKw_~^BQ@C1~OgB34M#TqE4OiW+ph}4+nY$#o8wLkFvSCk{ z|E$zyoRk8317(~B>%3^5Tt{j7@Yn387F;1OI7P4Bc58M<4O=_*FnSQ=9@{iq}FEm`v%Fi6VLlp@fs! zm`txD+7~vp-~3`KZA#)O;eH5*=IbK;;_nhLBmLCm7iIMT2k11X%*ISZK2^ZR{#I!= zRZg@&E-GF)9}71H`DU5)-39r+w!56OO@dyN@DL)hRl??QiuE?5+$5;~zE;S85z!$k zp_@!+=C>_hSUqR%%-JSQ*+n`nYU17&4x6N1qP-#hV}|d7%o}5wrn+>*HJQt{ctO5s zKv;*qYMFkzL|>egDx#`tJP{a;rmHfUG<|7j3Tob&wcT`tV-Ap*p=^MT_L04TzPu=j zB)wTXMqkECus=8287Rj`4YN2zUwLRDQjKIWi-D?v7lkaEyOPViTpnh)JPe|CSL=d5 z3{3hl{+^0S^tU#r;XX43{#-g-KK5h-^`IXkby$0(GtiHS2vz(!4L*jl>=?U3%w`}P z7{O-@XlDV?pX=wAeU`KjPj%vSJ+mE4K?}$2;TE$N6;Q$-F`$`5|2sQJ_& zQ9HACIFm`&R8iw~tk+Q$F`t?wVuwVij8znq=#hfx`E;g4Z_frdUngSON<2G~Y;H~_ zs^}ML(P%iUqUO^RDrzW8Qkca*hk4#~9q8;2OW8Z;> z((uh*iZA$hxA+Anc+5iC(tg2*qHbSUOj9DMI9V^KIqN`|9jp* zoD#tv5MX=lY}&yHI4T&RV|--e$QAuX!3=iU;kERJ@6>i2FTJVDUYifysMUpL3U?$H zq|=Gy4Dl?gSueXqC|TRSO+??YN}X_w=o?37is%6_&ExcMpl|Zw*e|qE2)Dv%P9@Xf zben++6+j-SAP)rOTL$t#QTs+QsofxB%?{3BXrS%_z=IUvK>(a~ysm5q6#zyWlS`7x zbuFn-GMzC1V?Xu^i&gzhD^Unt^_t_0@tC{noI?=!Dn#La63R%TUH~~fZ9`TF6(5_W zaso*$?{|0EQ=8cP&Po3@1!k5K0Soxyp1ZV9`W)Jvr0t>ih;_$i@dstK{qELN)wW(^A;78 z(oIZw@9q%Y#1!wHc0^}66H_y6j^Hg@N`s0YhZh0C<)^>hZeJ}5a#9+F=>Mdw?kzr@M< zzE0Z>Q;&7Wa|rF~prB54VLtKqRpMSwe4+IMCm!p-HYX~HDR7Ury`yTa@Ij+^cM z2s(#ZF#aEp>|W^u@5E8i~cOZDAqS@{9xR(>|-Q4~}n-0YBw_&16P_01(~tA()# z6hDPMes5)u-~JrVa?thG7dp_W?Ch|`82YSVPeHdn)WL;z6LaXtBDgBG0o7ALkv$f&9+L>&CEu1{2PSfZf5q&EuJP*KpMi$v3Q%w-d_N7guomDm~Wn-dx9g* zojN&R0tzM`ZgfrVkph%Cf-(mvrx}zvdq7Dztr?S@rL~{jXE$5iqE^nl-GLg?j)RiI0Kp*i z7a$!iNJj(d$P@LTc}?}2#&B$nn@KxqJVT@N(9>SM9H)BgP3WQEJd zWKuZ~ajP4XhEjh4#cjG`Z{yrPJ?5HrXe60vm_DPq#f200Cc1kqiq684vya{oGs!{qFUR0x~IY~X|<>(d5 zvZsQ=E7l2{xSVZ>!b}Jcy!wcCR>Q}6*ePOaF#5X}^iLw@pIFQ*Ay^uZyg`xAB4jA2 zm)|DUYBB$$#O!O&i}@!d=5VLo5KFrmdY9iq^L#HMPZLPxbKhH~-Ecccu1J-Dv&I-#?5ipiNT2W9||( zQ!rVBT>nomg>xoYrA}j=L^dDjPj5{ zIbWe{&?w7VGHc~*l*(SY%gfBg0&_9L>@qMH7s5+~6oPR790zo+5$ zC8DVo&gxHHoGqf+%XGgoRRn7gmZlwA6N8Ja=`*4&;dosJFJWkq{sOS;EUPq1be+|d zEuwV>?mDi4rqyna!TancC!NGB*+9_0ynNjtN5F2dYJNAFu3IK65fb`?0hX{2w|8L1 z9!8yTG#*Ph26XrXFZkWU=iSU_SqLY}FpIvMhp(#C@9K4@Jcnt=m7Yp-R`#Kn!$*X}N0`H3fde+V zN4SYKL-SNPjf)vIT3U@!_K_FsaZITo&*RM8asJjW+$KVNefH%n6~o=tb>fGsQh}Wwy6fyg4a0laGT-0 zyFdc;s!^hsSR0QReqLfwuQpt#R;_<%fZpQ$c+b;fYyYFAW-5Q=qJ9@rCsYplBlpM^ z%X#+VL|uLx1ktDs&C4-gX~0H{B??XkC9T0-czY?OB)GH!~idIzsFqob3e?Rk{;|#*T#g!`Xwa0)CCZ6uPbd^dl&~A%XboHR55e!Mk1E(Mg=~$i2{Qr_D71w&P@~;HLY>cK0ufl3p3uYw)H>W+zhP{D3*r$E1n9agZzrq9kdB}-f4nOG{EXnl`C+r zC>q7fT%_VU5QjDaNOX-K&B2hNdW}ERhO*kOjul^{#wbIbc9eeLU)6<=J357@yqMt5 zuroN-%hsKK7Vl0!#CsFOO{Kn*nVh=P%cR7uU8&V@r(&p2&7au{?(UsXEh2 z|I57lbGtU#Zj|2icWg!hjcp2M4iU*;n)^Gg!**NNg4{0^xzSBTK@Ht{s3MV!N2~d%Eqc!X@@vT1-yWpt@-?GV zMI_1d3cTBZKd-SdP5mrElMd|bc=F5AJ)hgd(H${>@dQ41EF&!z}!ASY~Ges z?9r>W)t)m!YIt|Mj1OgZBLqRp0NKbDA(Q&WtnXz z?M`j1ZOR6II6BnK7Az77hMRr&~o>24+BKsynys89R2 zvQejvW}C7ZG-c#jo1Hm_?wSDZ3XU7ioJ)5xb&P{Qg-jIAByp~3mZ4B`thNR(r3$)* zivh;`DVTClYNi3|-4kHNk#y5|)+^@GO@?(fg#Q@pRkcQgj~u7D#w6yF32In(38QUV zjXT`jso$}k7Brkq`6&3>FW6A(0wV)%X>NKS`c+RF97 zk5k0Eo7gBegmyEr9i3=8&*3WO&y93`nodnQRTxRjE49R)a+*iyvk{}1_N>1;CmjpN zP43WQjRL(rJ;CC-|1>l9SE!Ba{?n|+gHOh?W7s8nnx(BjS=aBUl@@oY`u((0<4&xm zq}|Mdbef(~af2O!dae**8kvAWq91L2j7BENka@U0(2wsC+Nn@`J8iUEs8%m9BYv#> zU}G17qriGu0VZxu>k zNARHqqNmV8`PGf`|ElWW!^cfbGrybB*2NNyamOfoWR-wO6aSu4`g^SOA3({h^!HfS z-yob06TQdED*X<2-N|}S>1MQj3KU_zr=@7O<6+u7Q4~AeuDY=ICrB5z!_$S$noI9b zkS;6`f;Q6Ox=flr;DrP~y4yfEqT^xu?nE`3Znx86I!}fA+9@!oQd~4q4X`=I_f@F3 zodTmOMQ)-D*#|g9uL||FQ=nwNk3ePXL>YUdO%Br~D%9Ohfl8!Ehv_mU*Vv{{*0gFI zw4PI|z4|_DqGeBo($1PVbek*%c_oK?05_^i!h zw4Wu@^Zj7bKE1HytZxa&tLmy3FRsO=lg^U*j^++o=U7u(iRMI>VQF^Kls5IZKiA_E z%sCiB`Ev2VAe0iLql88(Fp6-Pj>cB9FPE^_(lPR9v$o5aD{JpeUXvX=-AjHcubnN$ z8e=U?jaM0#3dv=5oK6*L^;}otPD0KH;Sg&)>}IH5D4t{|l8M@uW(Tg&!jd}_D5>_5 z9ixaqGzBUVj!;zcEZ1Cy*LvC1?9m!8o4s;zt(Pav-!qI#*eE>VY+UZhV?;XpNL0go zkqF9OPc-MtAy#&2I7-Co{W%b0QL^UX?HGUVwM|o6qN(N1da|@jug)o%NI}ei+HjsD zLz~{Ly_SwVeL02>{aHIsCqZni+uG?Ss(G#!AKuv%TvRU%-K~DPU7IHu-B}9i_$6UU z$KQ{U?_-@5)bT^!?^W`Bw3C86RD5WyC;tNZKGI1+9ZwO@_eJuZosz-YBTY_Z-Ezm3 zw_LRj`x_*S#kyQ=m8PBbi))BhLuvnp3e(Q|lUf{?Xth>x+Hq5hqG_VlSDaWxb57xH z05|1H<*-PpjQDf!v;;S+ z@;kX%q+tTxioigYf*tBZf5MaCT$P}2Pb*+fYlL6)Ga4#8N3x2h`Ym4i>gVOt_n<58 za{GA|u;Mhe2kWGX`nicooK{R|D*BmeXwR%>^z)+QEy&a2IxDI}$OFrL6;WtX`Z@UJ z)3t&1D{YOoh@ShETC}43m0(KK*QwyHjrwqcOE+4wlQg&yt6gZAu2c7Aw{NgjQ>9}D zH`uW#U1z}%{JDoR!6mJtijuSCSHse+EUQ1aePdt{#v7qQ3&!Nn4Yk^83VoX;GpxZ@ z8!D3r_Wim3RxY$b#p}+Ec8c!Pa&EAjXh;e9NG902N$4(VmtQ-oR@VKwo>nXq+|3H} z=kCi;FryMtmr9&mN3tX9&)u7$z$h3+Eqhdv-m%df{N-kAkrRfeWL^H{-xVCOgJCB7pKMUyzXiparvzuv|C;caWtp(7YK&M&HFh%3;syX@u8-N zz+V%Z@pF8r(!SgzX+h5Mi7NWrf)6P+pZlJ`FuUL7^;EDMM)vRegyS39R8u$2vxuEZ zw=GLJJXX=Hj9wvF!qQeBSK_U_e*MrHde>$vuV4S2!wrpu@TMaA_8Kf;W86hsc}2Ss z5lZV@ebD+1YqZw4vXuVZh+1Wn93tgRvbHKI_Gg){;E*5f9mYVI>s+d$dOK`)iIbqq z)t%3QO?;BkNiS!|5rbNAlcGG>VW;ROCB|U8B1=DH(fzspcDspg;lMY? zm#E)p0*Bk^N4`}VnD&m2;6P43b#IYhI{|vP`)>L^5_ETjR^R`&o+zkkO}k710`CFEe}6}CiQ>h4S3EtacpAakHf_m`PNt5}x75_u;jBcg z(HKkUO2HSSdCO;sslMfdS(vfnv_tg{oMfNQ2VYF)`m4Mk|MXd4Nr|x{sS-8xqgjxt{+(Y)*C}TmluRjs4phS4!-C|esJwaw~H;jEoymn zs55xs)q>i8jr`ip=%T1!r5Nc9_Nf$y>l9G9J`k`AXD#Sj|3wF&ICo+?tJZmT*NYLz zyDFh&>NT=?RwZUqFN@|`mDmGlRfON^uXCEi2BxH6gpsnl&8X@&#yhWGSJ>NlVcBe4 zj4y?>6L-R{fNRiH0r&g`(-T9-DLyRrJe~A zG00Nb@Vn-GySZbrm3>LJcnm(Vk)5&DUiPArqQ-AKcY+x8oiQCf95NoB2)LKAa zSMZ%1guNXpc}Uqb`%i*0C0@d_ZzbdEPm}DoqmIIRPh~ zt~UbRsi+Qi1#6U2wyR&;rMvhm4uvPz(OpWC+w#Xmt%O0}~y zc+8K4;NZ>jt5W=0rP$GFZ^DbaIy~4J?B6{{EJe>vz*P&lhYk*_&$ntoruh7XMSKSb zo+Nb{cso&jXJB!ty0&WRf@S=MmsZB;lfs*n#%mL}JAG{ewu1v}b$9w2FGJNLoN(0s z?`tf@1sungFA>`jkz^9|8W-xs2w-sJ5ICEP=-3Fh%|+9%DNT28ni63c>$M5!_0Z3v zX|i6^i&|}VJe+Xo+=<6tjn-*fD^UsRM z;WnZ`*#h`VLB$xDDE2ba8t6r2Q!In35W(;unWkGON)5a>5}<`X65i=Y6EO_&=Xz2U zD9=aVrlQYF1-cO{3(R!;#D3OB&&J>z4+uxS56Q3e&4UxAZ|>(o^`IhoPlN&^fPspi zQtBIQvzzFti8317nhO4GSb$1?CcpO7F#UGo2S30%Ns4p+R^{w(qd>{=KBNeT!?bha zG5tu?#EEvQM7?bks6-;r{HKcSZnGow&xt<>p%CtiP;kdDgjl6AOHO_67o>p4T4CQr z!J&I3RrFr@HKwrb3o=$2WO28BK{R}Kgo1@7b*zP#;@n{_2niN z8o$0T`F>W3pFkCyzH52Wat ziI_t9u{iJ1nHi#A!v*5UCgEqdx0yzg)N@{mwwiL@%CK9b#iT{t%DQ_tT1;YZTaCSW zirt^<>-3bnKiAXA5?`()-i3L_S}DN&I7ZC6-B*GG9jwd!rG1#vM_7YVvI1yYD$nQ8X*V!%$qZAm-JWoWK3>)-ccUnkht zG4?wKNW#W!H>Sg>x;8fwj>q|`ngI#@OM|Tv2M=7rR05gH8;YqEts0fUF5(TkN^sDZ zYYJYdSec|yFcO~vJM-mMs(C;R)769!)x^p_&_q`g;TZ)cvKNR97$SQK&S}9W1zw_Z z*{(x&^;4+l^&n_V!qXMOX@@49%)*-KGh8QA6^*71waO1Q)gy@Lt5#`4l<2F&>x<|$ z2pY#=l<2D)(na*;M&95?Zi!gksONwNzB-!zr9S(5u7=|c>+A8hB zA)>)kmRFFRB9dbw*C`@7Ch}WDBv(iz;cQ%3V}Q#18n8wlRdm~27~}y^_WoxUQ>nTg zC^5?r<0fTonA4nx7@Rt$15jBXK2ytf0F>*?oh*9_2cWbtO2bW`FUzO;-AXQoxA!zd z{RNColMA>fbR$}&B2nB(e6aQ`v$#uD zx3jY~P_EO69m^Swl#aZ@LhI7*p)31eJpD?M8yi=VPKDX7|nhH9~Fjvs?^Iz zlO@;Ln)G3gyuxAsnkc3yd(?ebuwTg)Qn-)=tN3Ta2+$zOAjLGR%HF->6wT6@f+!fL zRLr7NZrXRZxl6@tIt8|5E{yVRs3ozClMcrhhYS+!r-eO*c#J9C6OS*y9M_efgMQp+ zhV}0Y#`yu4Sc>+AV-nmc5Z$JoaCA}9&A0}+zsyTvw#5*t0*&DSSKOf*47B(FWmAgg zpy9y;#cpz`s%HQu49j+D{@ontYgdcUM?*rGDKAzZA)%p7wj0~z(9u;FV6R}XEzl1W z=Ar9Sf!?(VJv<*f@#lKl0;5R4g0s&wOeH*X_){fQcZc0T%Vl)Cqdib|B5#}2qG9!8 zc_t8&nA0R?s4dWoh$eY!hR4frL{=|oJ?%2;Jzat$n}Yj&RrECB>+)-Fpr%%qx0l&% zl1AXWGOiVyG1~STi&i*&Lx6TSmL*WO8P&?&!MaR16N{kWOt!Lvb#_?BS(e4OEQ!wI zG2v=s8)vCu?sj#cLB9KQL!H476bDBhC{T7hxzR~8mG7$k*$boKunsr#c*Ia;B@7NlfnE>B76UZ8{PC%(6;1MezIhkBaD$I1WoRWDq{><|29m z;Rd|JjTjW`*$|~iR<%xy{n?GQ+#pf(GZR}E8r!{@X>#S=I2ytpJNR|fJ&j5ZzN0;4a>p; zk_^yFrHvlyU=vX-_V!L2X82`EI@oD9yNxdG+p-pxvJ2;Ff&k@vL$t(4b~AnT+B5L6 zuQO0C5ns2~AfmT3kV1qTrm6d`M$8y*(N2Xq`*Xj<*-if5=F*{iIY=S2`6%1z$YAfsj&Y-!)WhlOD z7QxX^4KQ|$SBO4Kkoqh@J#3)*xOVw+s{-Xq(NCvl(-oWqmlgy+=APoDldb_AIo1pO z3pqja3(oX`!Tp88Z4A^iEh5HU5I z2001O%|*y2r&VJs%+VSz_Pss}=5((wb?zkEWuWg>&_i9eOZV|dUv5!g7-V8J{C zp?)SoL&`tfzx8TZEVZCHm1$FSHNEZyUb@3dreS7yZd&VimU}$Lh-<(VY^T8!oQ>7-(mQ76ug9H zxtis76#UH!-iVYOT6Ik`>ayDK}7Vv4;3?Q0N+>Y9qh6b^e+_{ z>I#gB_CMel%wjgs2TJ#M=w0u{ArRK~q$!RTP`=jBH~X*kgY2D#?6rKFz^Gnr@z%C9 zuXWN@i70RlQ28>iCF6)|ErEq460rt1fLa)Lx#xkaxbw0*Atf-Vt->qU#>FvhT?6r z%4SdHSL693^ZoF+z+skX%-L#J}3m)?~V*cbVgd^n-FMVF6+dFaQ91tuKjd$k1vp^h}1H3Frq5^h}hQFL#D8nQ%5P4pk=; z36piS0OAR?miUB)g|W8`$`jVz7oh$qBZosQn8=Fc;*de8KUFhx01-S4yJ4cev79q) zgD#A{v7n8{I#5;%PcvaE8G9PnDEqo75K>X4i`hG1uQs#1X4NXBrW88OOL2b|e}9M{ zH3avU-XXsTt+lB|Fd)6Bd%+H5umb^h)dtV{=Yhccm4QDH;z1rU<^yFYH>RrPxQmqV zO{d7zul161<%XNvvAKvQZ`8|?E|w!J5mfsDF8Jv{L>lTRiTLqGtzH+UgkyNZjw|f! z!d___H`NvTRVoQeJ;s}GJf#Nrtzjiwdi8DT=rlHKBB*^GvZ6B2E+PjbagkadiISgjWlf z8=T7-=K+Irxx!f`#!{Dx$1+$^W8btIWMrck48DzUa1ynN=mu8HM*u`5SrXyT^><9+ z6eglqIitNnDQd8T6@|6yA6d<}!;**LRqPI)1NpI&jXH@a z-K*kuwJUpfwFp>UGptjaSA^fme)R8{_oLg3N%1Zba1q4E9aR`pl|VlT#^_~5Za{ZJ zCnRGDqcBZ{HhHQ2#VmIIg$ZtK#|9?cBCCiWg9BcVk_0~8pL$PC@p41L;q78Jcul1I zyIx|uO<}FqgdGx{>8Gw4s27qF7}~v@kt}pz7-9+E_f6i8=1{8L4z~tz(FeY}LfiAfhkxZImxxaBC5Ly|Y->S-&Y= zY+t9%IbAyZ{{~S9MmubmzA1*@(-9aEyE{fAdOHFoA+`0UUUBc~#Hv}f3^+!RS-tk& z-4XnX;-W_V^6K63LU=YdAUM^%=Kvt*QbS9U7xnF zwV#c!8k23Yz~m!{QA|qA`-st-Y5iz4R+G1h6_G%X- zjFPoQ4bcYG8H+8tdUn}L0aq|3^wsQVpF4{yxbgSrE>#m=Tm*yoXb~1CoXl(^{m9i` zEnKbEjIQQ2qc3-Z`(!#pbTtz>rCT>5S6in%gCj6%PItB9YG>BQ656$#9dG}^f`7X=I#+rn;+qNxibt6-{58JF$_Iq>4qL-UXDKtI}s@avFwmVP!uQMA4Y`m`WW;2 zj^Xt&ODgydHQIPgF}pn*JWZ+N(5o{U0Dk1WEWoVN&b|D zxs^{HgnmjTH^UU!_zJ;7Bgy#EaLS0l(X8Ep&6qmue@`Ga@+G!InMaVJ{Khm^G_4wLB&xYJyf-QneK zrKd?*2?pb5V~Fdd;f$XoY5+WQnaIN@ek{(5du2-%^1onhx2*xM~UIc9d&ryYtmdsR5z;<(kB*6B0&PXjep0C_du zIo%K;y4ttx&LV2ttRGUl+V`iMC()oGB4J-HB&D`7mT6jQhHmEjtZx_s5;pq?UX4qx#k`DVKvUbj;DbI3P9Fz-xaBkLT)hA? z$VAp4Y!(Uzc~$-@#PRr3MZ9pXE~Y^>+8k+>5$&M5ygA&8SL2@c$uoU}n{az^bvTyc zBI7ec&-(s)4=PRHCR=#sPs*j%FMM*v9M^u>^R#@-w9+q_OPuCV*-muY=t*YNpBrqm z^{v8%Er|&I#D^Ek{J3W#e%yw9$Fm=|ovryR1V_xKA)j)BQ*x3T2i~LP=-GrR<~=@H z8r{)G!IK{pUB01y?QlFp!-~+5$GOfCN7As*xwnX{Z4{^ka3sTrivFmu`!{hv@+Wnf zwR;l%iAi=Seu=uH+?f>P*qP`aOe@Ce(+D_7kjhssC|f=T7&!jM54{-mpU+=~Xr)bfx*&dGsnd+hBmj%A1il5OCnNXDE2?0DWhk9 z+Gk1Q{4_Tpe$$sftxA7;*5+y_)sQDpBG|a_*|M; zP%kI&er6MlL?2mZ~`pXtEGro3ey~S0nT9l%Gxenr2<1;fnij<4YbXVi7YERM%&cJ&xjs;cnewXm||>Xhz~#SW#TqJ zx3ahS(aKui)vfGp>}~Q$gcFVw7~RIZHW|dBSBOO%9XI%0GYYv)anr44Be${k`AN(K zToVgJbh{rV;Lm-iO4-XZT&Ni?%XfIWy=x+Kd)Gv8`vy4S8QEPEv3Pt?kIcx}yyz~z z%d-Y?;1(WIB&F6rUlx)OoYJ)K#IKopywV)W@DKZt3n<-+Hpa9lsHl;xEXr z9i@jSitktB;RVO(^mx@ZLX7@ia#-8GPDK040ml7g965q(?Qw_p!oB1k?MTuZwx62(I56 znF)P=;-JKk=^gcwJC1GdIGEnD^L0fz4z$lhFrn)SKdpsU?+9)&R?3yD?O9$YtC6(*SzE3vS8nFFHhT6@Z|u#y-jNN|!_d&Fha^R>N}-;2LyM;St=;?-E)A`y4jJ+4Ulpp>wvZgUf?L>P zY@B`b0xf4TQwMbKpZIwPms5Kgn_~iv!#^T?dixsU(88H?Mhx$a+G`!!Em_8%9 z&JZ6qOcWCq9N5Lx%~t#RBKpFG8uaGf=L_%8+_Y|m2fkNgi1+`Wmx%|3i3gd9A1fvv zWG4P>n0QbDYbG94R236HQ9)+nCn{~;QME8p&6k!m@v*;nnRr~7c$}G-{(Y@dapsTn zCa|O@nTnaz=yKwRGSDL%%{iYZ1b-{a`@t*m<+!=bEuk%d2NGsxXC3 zQJ+JmPKnBQzqX_)kG+>DcO z((}WSb@61Qp*UPX`5iq1en*{cN=a_hI!JZee=Nar31NJ;?4|{aBOTXoSr(-vK>ba%H9R8OV`(J|nFUAh^ zYTf;db?480l(jR|JwYa&J$yF2djiyoBObvU6q`HV7f3td&=x2q~oRYU*HUEPj2~jbMo(Wc|L)0??3SVmE=uynR z2{|sAFy%h5wu_el#lN&aH zt7yK3H9Ix>hyIVwxTPBp8RYaSO6t}Q*6C4+C=??Yx$$Nm- zMXfeNa#zoN(}cMKnF9ZSp}Sx$2JggsK&w@dgWU9}?V$7}qhl4}Chfc|B;v z(E{X$1^Hn{zSbZ=T!=jFP`LU^wuo~XZ3!Bw%;(kYbAtHXgfs3dqL&QfbA>wC9Z}1# zu|fry&kN@BjJe+yt=H#2najNF8m+qk^*4h08%90Rp#J8QQ5U-grp)gZe22j8V7Rll z=yi-8?7!!J11~PZJyu&&TgR5A)v8hJCwS4{7xechzz5B{2JL-Ts~?S)OaE4Z{1Lf4 zwpOr4?JYn*eP#B?f(8x~9`2U)v2Wn9Kdk=o zJnmo#siDHOLldsMF_wumRVNedSB)<J9qk=@=Y2(V zu*i#4p^++p^z0?Y+S^{GTyfmlX(y5!=_m<}blM3Q{ty~y5xDo~ws!_6Ocuax>X*k+ z%5QUT7QQ{I#J5Lx)|@H$ST?;20-Dp3y@Wu)I%fqP369Nzz>+hx^>Bxbi|qAX2OYR zI32CVp@(!VYyd*VT41o)Y?Zo1&3M^xgW<0k{P}a|bp;Q$B{8W?b|f9kP-065`td=$ z(v^_;w0VFKMJObb3ByDkzo%Cf;X{C$f%^RfTO`88%m{8}0{g+OeB{E-AOg%xx>W1# zEDrl}3+<@WKsgw{NYG2`Qf!dpGhNF0k2C0(T4H&pCk6@`sR#=!cxK-3atUCBQ(Z2y~+g_hkdUSpVP^zMEJJe$>F^I=YE9?9aW^ z5g102=vul{B^c|p-E_pIyHt1(sPSY1JCo;3!l1M>Kr4J=CTw*-wI;HybZ3#1?pGOy zJ8d^bLuwwrt0Pd3T$n=tLaBJP(_S0l`S{ONsvca2RWm16h_bV=(Zq0>S0gW5eEj}p zCV3Y$5+Unl<_8DuK+JksQPX`*0j}DY(5Rt68S97{M0)5+$Va3*ZBjvgWmSPbzchWHX7!j~1( z6ql?oVNnj8Oi8XI>r1GT{@f#3I|`Hoa6JkW5<5m;7CYFU4b-DV6LLPCuMbN1r&&Q) z30@5Cu|vH)R4@+};Gs|PP$4{w3J(>+!`<0HF9@MDmCK8rj znQ+F?tv}pLznbY+gZ?i;Uuw8jEnU@Eb_(Ckx2olGzFthNmUX(GF5AsejdV<-YOyq# zauS9J&F~UC(Nb&2Cql$8T&~-?6G0wpWwHu*qM+}Rwn(jO_I1H`!;&k$RK!~{qGT3K z(@1^WORG-PsspY0prvH16WMlY+3G~L9crPtPN?^?Y%4@Iy-gNLwj?rDiMIJ|8OPA; zF89(sjXRptKs0-~EZ}h90dT-ohaC>!1bsq$U-@z;2Zm9$F**YUh&@at9!}a;WkAg} zWV&a0$u%;$Mv(i5BFBN5eOkGVvT@PhWrwLr{vPULFNt&}$ngQJgg$LDmJN&vFX}mh zZoSvm=wuegoOskV9MEhpC+*BhJ2*)g;_V=4x~*s?88f*?j_~F_TMi7L&CSfs$e$qV zY;H+>x%w%we4vS|=Gok;_;RO6M)5N(QVtrm`$#YPqtXaJ%1zmUR}@nqBye)@40GzW^q3{5Z5FEX z%|jbBn&(A*(&CGmPjbHS6}m_z?9;>YOgh$FmkML2P~{#x%8T-A;qBKfd7nX%uuso( zW3FK6y!A(WG0@4ZC3=}TdCp+GthASrVn{p9$qi0*vbotwWDG+2F`{X4PC1Ae#LO`6(7w`v z_GSaUfadC@hBDo}2&woQ?Fft@K?8ja4Ks%Db~8QJoAXzG7dD;2<=^#%UtIuU*gr{9IG_ps6z~MAl`4bp?c_}svK2%wK;I1Mp^pw zH+$Gat>qdNNz(!6Z-#Nz+v#|$nF8sjaqv16994{zsQhd_ zK@4%w@C)hYa4YV+cz0+tx!zh$_DsH7DxB{vWGfkLihwP$6I23w_M0pAxasL+494(s zjaAErET>9Jv15Gh)pDprIZFL0g8F1P`%U=}G5SnD$IQN_7!EX(nWS>9vJMgE?g5pe zie85}wG&;6+X62lB8?LQBoVePQJN{pui7H_c=LX#MdsdCAC7|W#NYE|24 zad5SuTCB~bVqr_c?}gx=Elj!3(vv=e$7g>uK>rzDpwk5CGypv&x@jdk4TbbRf=ZdE zL78*z%-j2QLw%aaH_%~6=yVvrpQr2aKDSX0-}iO0BI1&8 zXNMhk!?aGmZSP<|bsHo!)DfI;vM~OJ`n5qB8z9DKS7$J#zL_-8bA!O+eoioRs({>} zemTKe+^hR@J34kR3E9b%=eLaJQfmc6isCXXP(+C?;~OJ?5|y+f3?+W`T3+#q;<22| z_yWs!5VKb8jM8O147n6>5JxHUGQN!R)U{fZdVQu>rbw47euuNHu&dNnhW>2uXKRGD zXubT}5xUkA)sJL@BfEcvcCJ%kIA$;HgRvWt9y993bhz2b9cmJAk^deg|2-_f|2nQ; ztwi^*{6`@i7y0jD`8OcOBkMgZ>s{ArS?|&Oh;2Nrf}@=*>oZE$;m*Jy>JcN~XKm(t zyFJ<9wuta{q$9t!cvyIhQ}}Wzli)d(kaaMuh>T$=CisEMyRAWCMCduC#O`cxl8QB7 zp+x;C)Cd5$lQ2pIhkPJetF7!zfwi`Mm52_O3V1Lo;QtvV9Q@S>d3{B&TqjfGG=y8? z8C)hxrZTPp8Cj>n)~S&V5szWYuE$td-In2))riq;D#u)en0yn;qn!V_UKhkZs5Yk4 z%k!Z74#SJ)p+4^AWjYUdr=!{Yz+g`Q7);|w$bf3F%4RR<3Mnu4EAbp2j-bqzWxGU*@oOU7y58A2EHVv$)t#A zKg;x*{M6_^Kg5_uxr^nPg@}=piW1TJL#;Lbj_Yf(2%`>64hbJ>#IVSAwac-7HB*>& z=!$B-V37CZp_vL9=4KILyCsbO&n}|74bej}^z!L3kOxb-^3V_?>$RMKI-Gq(91f_z z7^uSmC988ODwja-cqTp0JTz#3+6z9H!RG?}z#Fx4=Aw|i&OBCBi#HFQcf|E#ysz58 z_qh%H&W)29Aa+qQ2`4~SRBTh!vp=DZ;Tu~h|fMXjq@NB6IZkVV9 zJ#gFrmEiCe^d1;R1MG&Wbj)}bDLL6kh}sXg-!QpWmCjSrs!h_QMq9lk58%Q$0EIDN zD6->YR1v8a9xN?|K`GzlMLU?$4hGsQH+h=FgHfLY16nl)LqJF*HQ`{Xkss?@1Par1 zLLFXumEv5avSV`*EgjGuVI{@^n-Ns~U?mtDMuZxfa>PFkKb0^7KNf_u=?bzcg`bgZ zut`Zbsa>erO;mN>xmX|_%TiFs-jM%VBVTvsN0{CdpUIk7n5EHDly?fQ#l?SuNOJ z@YavZw&?O#N{Ss>tW&QO*>-Ge8{zHgx{aFjGn7xCZu zy6mP}(y?TVyP$U2imFvri?eORB>IzQSEIE4AuboWM zB^J(Yfp&5oUBZi(JYNl(M2d{p4r(O?99FmW}}kR-YBMZx9L(-4l>mkpm6**?a-Aq zyY>5;O0S`YN4&qqjqbNFBEQZce+%~M>Gutm>i0E7$@!XbKz*B`z743~8mMmr3azyr zOVKO|Q4D?*z)Nn|8aN6H@#T~gFOSSgzIkLID!=FDvx=dr0Cl{9 zszN_$L{2yxSJuc7LgyVRz_`LErF4Z4#gsKLSNQ&%##BHJ3D9J(tO=RSBbRs?xz6WV z=DLnoQSZ4uKLNeY2NvH#jA|7nX4)NE{_B{UKi8u!?_9?xd$D3?N9b1daX@Bfx2kV_ zooGgG@u5Zb=XyJpRhj_?v#Z$bzFf0=lA5lBiS|MNyTdQW3dD@ydV1!Y$b>hAApo@;MJSoMET z^Mv=uh*3o?F@H8pJ#E3Tz=m*TCfeRE?-`z)qbcH+=Q%Y`?(RaT_Z*LQc>#<2jy(yY zIy5cD;5M%~BRG2wH)SKt|2OVL+vKQK+7aH0IURAPPm{PS5EmgDvCykMf2UUS2y>^p zHBpi2*QOo1G7)RVYEgdPqL~>pOs$Y7V!}jUZ9Kb(rrf2WzlwIoRAw)jYQQu`{nc7P zV10w_;~T(QWU#*Ru~?oqOXG|b;7wz^X~63;c+;fKQfKzmHCQdJ0qDNY%h)_mJ24OZ z+X*ww6S!Rn2yF{*hZWPM!3sd@r#C!yo6zVk?-QoI8oGMNpZ33DzoKLWHt>j`-5u z#iSg-@H0m%5sqY9t262N!URzX26tQT*35C=ov$3KyB?MGw{J;zEw$iVXs=NTY&G+q zBCW{|RlRi+vLXpR8349GNxzvww|QloZShoVHX4d23=^}_68dtL!FQA*_EVW`mySq{ z@QObMHb=k${JDqCKqcSyCSt9;cBjdW-0mfNw2(a-WWR8ami=f=HlxUGRhev;j`5H^ z<`c=L!V#=oXo8_ZFX8z@cs>ZvH-zVF!tW@8`>9N}OVu92)w>b))<@O)YjWKR!D16y z#r0(QW$-02nK6h=D*X!qRXY5h+D;2Q@26bNZ*&nd7SQ+viY znTc4dAv5}8FF7~~LgRlmH~t6Rs~i8Tx$!&&VO0aJw!qV6h*4EQVxGQN7xC3x_wx3w z9SIdQ{?`;X{@Tr)nEef0n_>6T4(w49)%t5WhVS;u)300qeimTDeNv<4qH#aB{*{O` zt-r)|ATC1G&#nK^eOjb`Z|g5QGOd5XL1x92W~TBU%@l4*yr54g#|!T;sZ2U?cR{9i zeU>Pp4hML&^E#D9Cmp<3(}8!(A6XU)M)V_=^c_gGv8hdm%ZH2)JxSopEmB+562=@# zcBy`(1UEM~67mun^oE6J#fPRpYWTqN^E|7RZ&1yHk;Xxkcar8wO;m$U9ID0v>s8^n z0@EP%Lt3aW5YcH$4bkNMcrvmsmS}{Rp6X2Nsg21QZc{kr%sBOQTxS;F45uqF4N`f( z2KzP<&9SCqCqLXgiynWli2U}9Xe^SU!#2JNH@5v<_F6@Q4*S+aSOe+nvePt|Uf7@Q z8vYOHh)({Zk8^zjU$I0+v!mG<`#5&~3D81zhP>>Y_%PTRWOgoQcEFnB(h=wLm;7u+ zb=K+W>YB0Wh1D|C(64_$s|9`|p2geqO+?SKXNrL#v;yHo#NkftS$0hE%257%yWKq(v?oElXuQk#Y7-vm03_ zoi1bNR+5oVAPQ03@Q_G1+0fuRnX;BxA~S2Iii;&0=g*%^!-&`rjuXv`zPLaA^Zzfq|8L4}NirNYMOOKsuK6fB(;${} z(UB^;3NAW65or7xd}cPPtPre;9okjt(4# z8D1lTrjMt?Zhm=xy8dBp%7+cTjDCJtty3L_Q8oO#NVorU{y5ed=s(#q-1TA26V1yof;$wtIzn>TW$-hnZ2#=mWFFcPR3WR?V(&mMq z@<=gxg}>>Q{b}hVM)-SPf$%+Q<>oLYyc+X7#vg~XfwJ$2@XvC@_ACYJ5hKD2L~s6f z+2Rm-4xBYL681l-CACUpDWaQvUl}f<&4!Pgc!d#@8Fo@L?a;*`JQ!kdbpFs&d7NgV zYyC5ai|9cEbFCj!cmq>VZ)OHvNvL~KiGdL-j7`zqinI||v&=4czpup19VQsv- zL&@k>xqHyJY&A&g+1>cM!M|j5m`{7AL?nXaM$(P%ZCpUX{a+r6;5)H`(>2xBg1=5s;JrtdAjOZK9!$tI8 zKh@g#hE#=JKn*UO9s87>5S zoxyq^E#^0=#lOts2Kx1nRYjeXfi_G7sA0QbDB$&NhX2B20x!;Ej(tpPMLUn#Bj>Ae zq1E7P+{zsV_#ZNUhr$=nFh4f<+B3{}dQjAVx4;IpRoS)KZGN|K>PNP7}CUftL1&rRoAV2t-*XDj>AV1aS@+6wI zZzD~h>~{r(USUFC{2#4@aVDpsycVZ1MhmfCXRIavBPJmhcaA|GXK@~6sKOY8M(zK7 z0jF;>`lAY64DLOHKF;7g=xh=OUc=VEQ~>`W!yox`VP5Pl`E#w7arUO+8QWl0zFdI$ zAY`jA@6cTxyH`ES(T(dgP-V6-1Y;q62Qo!mRjB@JZUW40W zFhAAcJT#2OX$qC21(aT4O3xbXaTaH=ye6kX=nn;8uQS-B?NVxDa>s4gsu*W-UTA2; z7=?x%E`)!Z;j;=}Z0;TdKhEa7@N5_cU*mTFZvp!sGX6UXUySasUugEn8J)pra06EV zY60kj40`4-q$tI)+qDMt)2&WztLeT~qmLC*dECM_+Ni-DZ*~R;nl{--UMpbs4u%On zAa+DaLpDQ=0A1V0`0zE9s%ECRF}^d4dkngA*Xj~YH1Rt;-4SnAIOygtOBMNeyWXje@J zba&4s*a7)gL$kpd$>Z5GGEFg;EI2H|E~1k54uYXm9tm>4|H6ulA@NDRtRtS60ge=cqXBw%fv6!gZCei)6wuQua5)P=4_-c7GAQ3kI-G zh``~`eB#<$+HqUrnNzWD^XPpQ26Jpr*!K(z;o7@fq4z4VGZ9U& zgP&OA>4rw-n|qMs;GY)JvzitHlYUts$3_n=#*KyJ%UPC3@0)2Ld&l+wz3Qh$blfkM z7zk|eLhoS>QR&ER&1q$6^!m5GYhwPxvUFoU!=!xt@$uwZMR{+I zjWi~)+PgT>kX*>mmt(75Xv51frtM3d1ji1GB+cR0+HiBhm+msgT2sBIYT=s2wF_2o zdO^uY&f(avd6KTItqU!v=4ioQQ@v(E)#5c($5$<`F-%U@6D%rE@F}g_bW{v1|>F zxkEc&*!=^Jr{TjC{h@AI^@(e0j$d9SNJa>buUoNvf%+hY-yBW23)9Kwx;8iCG}E%? zBBc#{sB+zwW@kZb%+0v`DW69^)g&FaHksiRoIt2W<$BbL>QMe_4i4OQ-}?C2T;{Vm zm5HQQx{kU?MNN6S__82@XZ@obt!N^;Cg$ejg;aC6wWhW%#HU;8Vw)V+#fTIHnn&@) zUfq}^IF*)y&d0-hlUq|;#~+1I{$ovT9e?MKLM{I>|HaP&<-ce+sVR|gq{&$tZmnu` zLnr#B&LZ^ z<_;Ifml%@ETM~&_qLE{z=HSK9xT&EZzQ2Czh)(}ux)i6QYJna<2_ zX)xNC4{KwMob02IJ`(eH+uRk^p*1HiSP)uVyJFQ6{(6>(h9!&*YD}_zX+;ki2(K$>FfTNiU7L zYn`U>1{CaMfB&8mE>7@k)-|uB?G}%9* zfF2tMROh{cIN85LCB$8_LbSS!lfqD#Ci_QKqFZj6v|A#1cE^c=J(}#_IW8eu8W+t^ zD4c1c$^NpOnDz1JYA76(b22z=M3env3gEln)C!0s6Sz>KzVA}s|7^a?Su6FKE)w*r zsXBY3lL3KbDziADK_;nGc_PduP4-hvO88Wh-$`p*G$RryWSpVwA>HCc)M&Jc0&)r~9CBK&z{+qXHbiP3rNyhQDUR7oIR1wX&;#345o7Bf0Nu4#Ca98W6u)w*( z4nC@T4>dl~lQx>{FHxqBNt94XCL#`&F1UkKd{mC>hon{+FYMY<#uUlMLv;PZlX%Ix zmRJV;9frraKQ`H4KF;8rG}?WfRm!KT9G7ZAI?XE+E0Wbx@3{y= zuwYdT*tr!kaZO2W=uYZPSO)HZ(1*aFI-APLtD4W~OJ(B$G6m zgaV}?LIw~bqDB-5f*1ucAVQE=5rl{$%4&&4TK65(-xq}ZVX<`IiY_x9rn-{|h#;^hyGQbcgS^)^V03k~1@f3Aq&kCr* z;?u;YV%)CeH{|F!o%Ng!J=1=ptUDdHU`u{NX?)m~MJiFlIU-lF$W;(|susEGfFjpg z3Cq=D2H)~}VhxL1198dU$hVJen2U>rOPUgCkJR z#DQSGzw#S$FL+OvnT*<7lNMddr__whGhKo5v;1V*^gYQl+C_mn5p<&r;v+$MnCFVe z+!W%m9OPf~`AVBx@O3J{9RAcyDxEDA)7N}&Z7ZZNKZV1tUYUFsnwHc5uGbTIo~9)j zs#Lq&y^z=v3{|OsC!bP9^G9r$KNHI>o2xB}cy6VZJ({EAGM|rV>gI9HOlo1pi4^$e z$|4$Fd^k5VJ!c(yGs9Apy&!;SiRHL;u~IvU+6IQU0nl#OXqYtcRc4$vBFe}Nb(I~vTqGP>A%4v*^c9TXjm&VD*-Brz;_pS= zB9skE#s?LnjUlj=pmPPwNEcC=lG3?SOAFn#2v+~DGuyVaEn=BRWt}!)ILDBr%=x6m z3)fYWFDcwJ&|Ow8**D5xe6GDV7IPESiX=E1FnMX&WJkkwG1rQ^b}&*G#GPvi4WN3h zFhLZ-3-Ey@(FHz8{VTGYGmS3rA=^IpJ5{1C@Ex`U=I+^MhJw+s9S*uyf^LwZqn&0; z&{^qzS#U-*(~*K3-qI*3Q?~N>EBj1 ze44<&ZjJcO;-L(K79a1%q6yat;@+E#Pn6Hyom>PneE!71bz58P@G8KjuXCGXWUktV zn+hi@nW0$J4cgI!c40-mfFN9nw|x^tx3ViY{tjn5QOW35Ms>M%<*icLce*Ff!J2Rw zB}i-NU+2|yhsd-$SkuEE54L0TX!XQG)MlBPZrN17U<73ixWme z>^gsDqo~6e`MFFk!gkHq6vl-r^I2Tc6GYE*pS}9`Gl>siJ}>k5k6nRLl;GJY3gUX*Kl|=^ z3?DMa&DoJ)M?1rR-8Z)uJwUVQ(&-Pr|2+n^Z6GZ?{Tk1N+AA4Na7v)gR6o3My`hwrbCVz7xfc9SiOlbh&vF4~yImhtA=T_lW3W$u^I;f(D@bAMUTMYtbf5=zwbDN&&VPF5c--jPi8{xQ@)CoFQr@B< z;WL86`R?n(k;CU{IP&=FmfT9jH~iMrudb9|-zz~SNw2_@eWh-&iRk3@<_sEoW+veS zrldu5GRotdTF1#^AT%P6)1NFx9mDCsAZ%)+YCtkF+tU;nMM#3y-`Id+GL{aM{GXr9 zh!_zXctDiOUWf`1m&U}enV@rohS4+ys*#|PLPF+w`EFv%cp*{QGTI@;_}ED?AKHGR z*q@4L(A?ds6vx8z&_E8#&mm&Mg#IpbwiAxlTU*HmgFh1w#G#)9U21JQ4yi`E%!K7q z8$@ET80ZI2&<(ayrwmJ*LDzMt$Jcx;QpkHKFP4pAPug^XZD$7I+zWgn$(}BhkfgOP z*hCllkOM~MQobG0TU6QHnw8qf!7i_{*Z5=uat#Y@(dJ&`JAIkJA=;2@vOt11^~uN4xq6r+L0t|J@#)uul!~aTm z-IZPp&-#3&Tda0mT1xb+@5yB|D5!Bf>%%MNMrO1_l$&Rzmqt2FonuZM*64kz1d7|qcX*H)TNRe zn?>OzNvGAK?f&!r0ina4o=~*hANoE`5HO_lFSQ){Kw=!)#!4>nm(2oC?=~|4mG(g1ZGKT-`-Qw4{U5OnJ0aqFDQ~PJZ(zkm_cW`0J@yr| zr9$Pz;8jA6XtM6}%UXONtLoFaai9NFJZJ2awdOu~q0msbnS|iQHs)#mU%ZdwOe;hf zJ;ay2<1kTR1kIF956h5&{6PVuTpUc;p(T3ylgOe~D95h$qJ2W4eS*BpUz0X7$UthC2>qP}Leyxxr@_erXyqEP}3T)wM0v%g| ze0%-aJO#j6R!h*1$lU~QRA2Wjo3Grm5;FWTZb8PY-*Ur(nwTU)lzKXU+uHEzz% zGfc%ao3p)k?em}bC5(j|%-L+#KL24%Z!Fs_{ki{}0-wnO>0Q4VO6>0}BNvy= zC1LI9Bnng@_tDbOM>5$!XIc4mLSTdZxB)yHkD0K&$qofws}9FeY|GPjDdXv8p+-32PUVC<*$F+`33nP7b7dKZ(Us)8 zQyM*(Mn{*RpUL>$>A)~-TC;Mgn4SNE1);SyLvgxCQaihmjP5shDususVq55bY0eMw zhqQKr2RY)~P>p!(2VUfl8NSk%U}6i=V+QKkeH!{>EY_bn-Aq_k^elY1`?w5R6&M59 zMtZ`)Xxg7yJyC0gHfO^2Um+O%i5JN$hOZP`iu8(sY4C^7<5NIT7{M%jVJ6K=Mw^4t zaKs9e?-fR3WIos?u3~vb`n9Lav{Io+GHiwE9qF_^oo18e@*p`uI|@opL-iSzTPXCl z+3X|gRNGrQnOb=`Dh!5*J&Xt;=^qdG>nru zM>dkmH6@RDU9_XXSDHvRx{ifsOLi2X!tH=(bUWzVQ6O6Qv5r}GJOO$o7r>!*(c*KE zU>WE@i@r40!fS~-42e>8IC3}59uus-QLwH(V8MGBg4L)GVM45u8;v&rMRoSSdy2g(C&fZN*QulDo_XI zVTMk9eBK>nOA`+?wOC`#>q-68zg^HcH54dXYYg*!Va&;x<7Ep!9Fa%*I+ zOc4bJ5opKh)&f)wBQw%&a$Qk$f4do>TMEP~M1P6`qe$Rc_xq(puyb44n2uPi&Ukd;X2QAt9V*wH@-siJ{A ze~PT!=TAZ9eh7t@*SOA~B4*4xQ>^|1NshG#N*erRT6EzQ)PEz>(-CMuh^Ht{5#z#d zwFL$dgLRQRrl3w3nbA~W3}NB;(%Q9jmkh;hBaWJfz+cF~p$=07);U%JuW8*Y<$k9v zP#*LXN*_HgnfJp5W#1nWwiP@je$C((J50|=o;@85<@b`@m7=mcb_vGRqvF?0Ai-ZG zM=w_#+9S!q6b0&_7*nBlrii9~xV^0US&{gH=fp3^@124U(8vt5Bd7LC=-+N53iLt- zobr(r+?NUrBP?hK;eZRK3SaeXGg~aTITog!Q-!eI?R)@Y{BX|GHR=qG?-g)FM&CG9 z&N*(JiaPVY&gdJbBIAwB?wFVX-Z-`V8`#U<6%$L#H_7-hmkYw5W%Q_P+R=E@rJE(% zk%Va{5=qNhyL5Ge{xKEHD@JCQ3dNGk8aDs5@%WAVEKosrMwzxGd$jPZPE0d$B+TxY5birrZP#P22tztg-EM0u6}3 zD#rcOL}rb+7*^5!(?p%@V^Xe6{6gyJaZxZaFnws67?}1aP@Hl~Q(e$W$iB{&^C}JmBciIOau;#Au?wQxxiX!cD!M=Ipp*w^GH=R%4P8XD9M= z7zTzTTda0kE>aG6;^GvSDk0a%40Hy1mDBm{E1nqyhE*6}0g63C3XCBvNN4{Ryk&Qu2=P9Va?x;&cyJn-BFI|0`Bd9i$>#s=~t-Qjj&Cl-Z{ zcy1L;Z7BO933*2t;+Jjzf^f`Wd!RgoqUks^TLksDQ=m?T@hc@prnjA_tf4@p-#AtL znvLz)>OBF#xGTo|O048y&1TW3dC6v1s%)1`xNeF}2yN1FJ&>#<-cuwQW{0pI~uy~!oF^V25r|u>A`w!m4=QAOy0Q3}# z)V}Kq`H2(JL4SO|JQGq75~tyKQz1_V&S_gtn-h#zYB8f)oG*K4MQ&}kyN zKZT}2PItp;o-X&casQa0;*o_AF`O_XR&W!Q2y!4{Mw2b*mlMQ?<%~>!!sO2=Y%4*Z z7hHV_Gm(h!Y_^@gAi{bQCf{kdrg1YJBZBrjfgV)FNQeRp`7F(z*0Non6$T$64L3tn z278Unuo$!PlQl+WPn($t(P2W;&IAUekc9&pYpqRGB_f6rWiNbO2weIJ@yn%kf$+%g zHli{W(f>&g!>NK{SDWcrE}be0e{X^UqtIg0DiJc62$YBMUbyAB;>eGY84@_v%M!w& zz_eOm+6Az6NQHWHu23}4MrGmu5dc2@8SyJuLN|-WgfWM5i{k-`Pqt_-&?RVCI+Q;k z4JO@~+Y&#w>I9k(RDOI$>aB4HC49aXT7I~IoGW}G&HK-VS81U=6A7m}tIc=GhipLy2dLe7APF`_@ascXS$|uhgr66V#swPiAQlcd9mdi6Kk@vgg zJLK)6uNf1k9oj`Cp5OLn46cCmHeE{bXbylLb*!O>Pi^3-WqxC(hc`m}nYvuNxW}$t z;^~r{pa~3+|YN11QzIlt^yx5haL&>g~=hd;!SDM?^ z(mM3DFT6OD#8_b+l>gUDGf9jU)=tBD4BJ`(!pID7D_byIpx-!0{Bo^6Q)FIm zXP`$_^bI1Yr;`GMDvU3QHZo)5mPOIR$|5E|ui}df=kj0eu(3*^(s$j*h^W?AY7y0z zoH2ve!aH2zYB47Eo@nO&6i4OZWELldDq$rHy+Xr$2sxZSV+LKNg@z%NkK%^N5=FX? zxAg2VZ4q(1(}7V~X~!vYMGV_sJ>7v43u`#RC~Xx%c&{k8Aj-P~YLaeq%(2~eFF*xs z@B}ZwOMPtirM`V<%%INX@@b2O0pzrq_9^$Uuu6=tWQjO7%|7P(KPqnzNxb*U zjp8BJ@6R*`#!wDy`h|f(qCZm|C~xwUSj)Yaw=j&%ecdz>O0kseajimFa+VkA!`J|l zCHi4@OXQDvWkUoHXtWPYv>EB$hZ!xt+wc?xS&jZ+h$Z`;v|Qko;lGyQd%Db)WWrq$ zY_;l>jRHu5o{<`^?84gMuO)RwSD+5oXUi=Mqt_U=k?BjDHoeB4GBSPnS(i5q4K-V# zEoiy39!hA}^fY>1wAbLd(q7)(c~y8P8Fh*F8hgr$=&)C2QfW&N@0rL#u_V?K4?1=t z7EKWCV?b-cgnn{ed)y-WCquqi1rqJ&fQJykEo~Ukh~71@eBpbQHMqFM{a?nu`WbX8 zLbAI)^d9rIB2@1p$-vuRRi*4bnNL02^i~t^Ezt)?WFHpJ2DW8)l0-~zfr#ndhK#sI zE~mfJQFg@H!b6L`B7RMqE|A*^V;yC6GWG}+o6R!1umC1uq{3BAZPtuz69?dFhg9-v z2T>WFE5y4E;@7mPPpa9|QFg41{XZ4!QS%L{W>l#8rraGE9ydP9D;IL>Q5S)_sL(9x z^=$=Q6mBcPP-P76#sEO%>1_<`$UmX>h-ccDU=B@mTfxvtGw3Ub5VP#t3NX$7)}K_y z+$O<|wVTmc8{J)i4;qb3e}@^;C20v4xe?Z3VEt;+68E^|8EQB6vhuN}l~Kf|oP2k__1Emqj(uOsf6f@aUi47TUB za1&>m+=5hDMkygzWZlaJ@|?!Y?4REuJHkOXNc1vqlFj(D$_|Bcf6APlp8+oypvwDk zTw~G}GSPWsRP?6;bjh5lXd&oTxzjbsJ0pKm^&wT(5ECig zxcFtC{?+5tKpirRg}fz&^tT6k5E$D+Z%aw9q^N9Ef*5f;qW&pG4WQ~>kPtCfCB-i* z>yf)$eH}u}M^Z~~J8w4iOc6&scD9$@;fiEA$uE@2cS3=RxwTDjVu1g(Dd;ba%xHVr zJyP#LtBj7&WwJQzNl}>!)~T@qa)p$?AKO4VbKSfGbEa4tQzc~Ze4)d~v!6Gna3z0( zH~hZzXT3P~#*{yu;vM#pFu@cQJUAuVX0)a)i`r)a*QuZa$!z^q!+>JIB0WiAkHB~JI z1LiTYJhf>@xMJ%^>emslSLD1o>N zgtR|1vytiT3iKnKCA`Lg{!H_@eW<(w-I%l^VYWJ<&85o)7~$%VU^dZ5to}hZH>a2S zh^>AP5ed7AyMYAQ(cYc3M^}Q6rlRlKy2rCb{E;j-JJaI)#YeJ)jfwG~9ky`8jQHY> zE}ZtpMmVh}Z8qCcUI3%*yys{P$D#A&#@FtyvVlv58K-|u{F+WI=F-r#e=UZb zp)M*@F=L8@Uxbmp2>o1g?)o<)LXQh&N1_~9ceT(g9C_h1u_PyY{R^j|iyDA~Jca5) z*7?$&nPkr9Qk9?!r=7o1tR2lpQ+46Ap&w#9q1l`bo4NbEa9Z19ur!D;_(8F4G-qdX z<-%z(7FCBCBIl=(8BAjh%CVwy)FHCdfS-BLA@U7_^s?bzVNP>K{BpB!rF8gM7nMb> z5E129ieF~9K{AYXQCWqIIO6M)frk^a`2A#>Xz2R#r+a+2k6JIP!y`IQRQq-~$H$LO z^T~??ALXss!~UXLfk%1w*N?Xgy){2a_DbG&R}w3(5gO_@T}PpmNJ4I$mw>9IDnObM%|e#y#} z8hiEiUK{!g#cEbR3*D#D3L1CE{xk&|V2n*am8g5V%@F;xP%LNtKHr4AK0pj=RHkS<`fn7PMEQTXkOwyp z7ou~mdL0>0^e`J|zpgU<;X<*(yfdBc@mAK+E@tCzFmzkT^VDZ##Bf?1>R6(>SB~8+ zt$(O1(9h<@>G47_&KpPvMi8XM(UUS}6l-_1g%>+8@qJFJ7}u)sM4p?TWidyen^i`~ zf8aI#?=W6;@_#SH*yRQ|V2k`JAwl%_!gTcvdR05(?-KgHF0q4_pf{O=ztiC_4ial| z$~uZm&GyMm+us$a0C1Z=kRko)Km$T}0PrEZ9>p`zk3bef7ZizM*3L8qMi6Y%WksUs z_TiP5tw}54T4CN|rOPC9Z#qB`9Q4As4|Jsr?ZIMUUTLql<=LK^NE4RBn_K4EiM91L zb@lbyN2A(TB}DYP&sQ3ZG{x}W11HR&&%dEc$LqXm>(6BGkKmnv2~@~$?Udk>TUBO2 z!8=;PJFMU=t>7JAIfjqR3T_ce9+$sn*m8q*Btd(9bQb#mo%x?|=&yaUmP!~({a6l+ z%lyjD%lv;oVFqP1jLUd|*Pp-4-ekGsO~qHOH7m8~x;q4HA6t60;VZ?%9akGTf3-_1 zxY~eY4gTn^rD;>;ieRF7Suz@;L1T&BXPO-k^5meS{*@29&;6S!J%2UeWekdQRAAC7&crCWO5WhlymBuukYD9qUVtNiEn4p7 z1?T-^`uNEBIjItq_d)kMD{pqGtAq)%+{uNyV$X%SI)# zJER~p9<&|0a?1amgOWLvUouxl6ILkcWUFAUkPPb8itm-vmcH)ny4mscFgw6^U2bX3 zL(?4O@07BxPG}T#uNTcr0*#mhKB85>bWk><;qkgviLSfPtKt=*;uSXdL#^T!KGlkk zoyv}qkUlQcnHIe|Rh*0L&o8qHTlO0{^?#MTk%SA9*55zu#qkD;ZYpktTq|6cY&^~4 z2ASxMsi^-8-$YJuFoLio9C=d}fj4AM^yKaPb62l3UF#cp#H;t6sj5AHXDXW40ce65 zR+#7=_QFdlNSt<+p`RHOkmR?b^v=}t_DrX95E{fK2=yy!DiMlN>a}AtNlbR%kyr=P zW^*vn%#*^sQ*RR2O?8>V#2WOY``B8fes z?y9~tmEHP);2(WZ{6aikJ578v+MA}b{W4b0h(|og*cXh}?V-%MWuawd%UZ6$G5lc)bAADkq^fiC*Wej!XZ66)ew|t_a?xA*zodzAiTz zUze-BeR;JkuWif4RHd=>{@ROae;%g&jH%$QJWL|E`Yn}B`{k1K4HDCSiD}?aFwNIk zhM(|a+A$^9Pdlcdnd!{OB!Y)DrX8|_|DnXRV~Usz4IT=n1sV&DcroFPWA6svm5k|~ zd`u#^;%()pDX)v z9d_;vio89OO1F|Az6XSke0vpF`A@83!m~J9Ma4@Ks9JjN40=wf0x|0y+-&r3Rbe5` z-o)QPdXGD4B^9F+C`+C@gI2sF?E=xAuPpCGV@_}A*lu%+e!)^H7|AM<^Qg=G1Lw}5 zJ0Y4!aoPDro^;*Cq2I`ruB66a)@DfQ@A!Uy?hN{ymM$hyn7!mlU$b(l2CKxB|1m3$ z2f+irf1Ngij@YXTpt$n}m!{=Oo5bI9=8EE^1dn$6AH*#Szh z5=ei_3dZTH@A?WFW)SUDe%1%Q{=Hy%x=TqM%#(aGOFltMzFD5@8Yg+;X^8@^#Mb>e z3)~|5_SA}o85Gshzbz*Q8}o5z$HckQ4<%p89rMVSGmplG8FYizpr#(V&vs&V;=3+i z>Ez=UrBy!I+%m#46?}n3SVx;qlBdC5OWb;e_&OR{P|3td6UKc~7 zOy4?T2IYFAHWjxWE6g#uepphIBVk$0S=VgyJdv4mtzH+4tqMllS4Le+ZCoXoE!Xsw zQ9h91+KmxQECm8luJKrNRTDIh&b1uT*-Dw%V7tw+Bz7Q$zNtBGS|8OTN;%quzG*o; z61qnwGZp4AjdzCUrUvFO%HhYCBAz15#VptH-aWp2&fJV}Vlm!dlfwd*mFs;R<-oEq z@|fp@yu2V@`FJ%~t?WKDr|zN&lg(V-RZFYj-nI2L9GQ!1)zXFD$Xq~}YkFgIOF{jL znyQ7zd*gFUK>doE`HL2K<8zBZ{fe4}l{wIIbA4%j4H5$c1JBLxY%Ho4tj^8q+9g>I zkv=zTz41!I^qkE1a?D?}fOX86lw)CK6?2$5963J1DmQ@6%xB5ENwE~?vt&J`SU#4+ zQkQhB+Hlpvg_S3=j*^^MSzN}C7YVB%xy1$L1fjX*WNCd3hvpU#b`gi?77c|2a&ilW z+8SAEH`#75q6;wLMx|VpigigWiYsuJ#9CTxx5bLO%$o~D@t$V2*G5C!?rY9T00iCO zIM&=E2F%uGD{35&rOJZRQc49jUit`Fbb}gJw zj^i;1D})tcX3otn5A({p`r0M6QTeeD^X4`v`Mm3r(Wn(+#@v=ApK*P{a+oc*iSe-E zZoPUp*b-MJ<(3o==b9z;bza-^TAi%ztL%^yOT;$0!u!jEt`%Ow6Jmyv*A`{dt+w1m zC>WQSmY*!IfyyS+>QIj?Cu9dB`Pr1)bWN1@G|P!vH{DeKrm!TKZTE%$P{M<2cf*U*!-+SL zP8TR~Ty9c{ID=DU^iPTogW+Vt+9YpQ!%zdVN2ToABk_EP7lY+Et7ACakl;r|1}Bvq zSGN{ogn>aD9Q%HV9lOlVH!Ws|QTBQ8;u&@n8NJ^ZNw8{~Yh`W{Js2r61`jF;Mh6%r zpw}ugMh-TOXW&v~j2&#MY(I?*zTsd@${pks85IYWN^Xf48FdH6?j7kA8Sz6*gV9fs z(R)y-xWk9P;df-xA*T}BMh-b0Mqow8*deFGxU9%1x$$5!OAT9!jEV#D^S~Fm^KZBW z=J>zi5(s+_#IyGIo&M3#(8PN(K(#a8J*Tp)vg znan%hEHdg2GL;?;iY)hzB8!apK?<3CBwA$j9;6HnWa43Ikui9vg2s}dJh@v?MH2$#{J7#%3>1WDF} z5^)q9nQX#Q-UP{3@qvUjmwgEeUs5#&6V|-M*2uiD zW4Brk1sXF&)F7V(Z-^ZFi%?RIF@bQg)2W0HzZKwdv0Bz9!?89+tdKhw^Py!iC+Ep> z@xpldwsQW)@u)fFM@^)FBabb&94F??DepQ*E2(>1DVst>4+MOrbHjGX#lH(5EuuHE zc+UHK4+K8`PkdH6*iF+X(opL-^;>MtzMO{!C*fTj3@?dAqnHL94EtKECDv-yI88}j zJt;DJ|81&PT*vRM6|RHlF!hnCV2Y1IMmEbmvzmFl7#j^n=CuSvu>=L`uPUOEYHWd*v#5R3qFekbnH(&0YP~Uy6%dOp9v8|2w+_!#MF~le}qe1fM&wfUNa%mCCuO>~+B~; z*SY`UNl~ZZor8}dk6u;kKWguCzTMWMIQ5n3O#D`nhI%(~796)^dhNT6UfCy?n`;!d zz5xDS?`4&|WcBCn8a+u)VWsx7<8SSsJIrW0#omoP!&Zqm;eYp`+A#(QUWImF#9w{{ zKI_k2APY0TU=s-STz>HXPF&xmkax9Dx0v(loDPvopIF=03xvv7;3}Z)h=JS(4;5kr z8&vA(66)GpO6D-pId%S7dwBwarDg(NT1NCxi0x%iK#riyEZ8S4h%W}-mFNAi%Qu|i z@Vs^E`DP*{-Ps9Hgoa9cLZ`7q)*pj?IKA;UeW4ccm|`^U2M$OWrVhcx{O-CzSG)uiyF~~)c}}k+Z4$U$g2^~} zO>on<@N7{Xnfh$A(rmLVS?t$RY(ZQ7hdxP%j2XK5V;&j0tlzoQ6Esr z(HPu!J8iX~#IVblJqCha?*6vPFS!Y=tr}=r<~Y zigv~MuU)o&98oKQYSi;?!}_Co9K#xT6lla#R0ThXhMqH#2Ik(jE0Wi&qLyr=Wm$JGHexk@B3VN zz>|I^wR)XzP|bXa}{dyT(9m_?<E2kQfLZD2qRB^&J-z~tZQ9IJ1xImUv2?`L2e7kU&>1>t_LVWJ` zW{ObT?BDZc?yXqgkvf(-P8#DENc6n2>e{?+MOs{w0V9=*Q*#?t>qRw z7gDT}KEYbRf}d>!p_i5!&H4&PF~QTsR3x-2Wu!ZO-cPs2l6mJP=+G!{#WE2sf+wd< z-iyD!jy(U=PL7%Umohegu?7^yJyqM?R)WtKtMZnIXr$0sE=HWT?bilI&y1}wCUtEdid2FCHrGI#ryL!AFD?lG6(3w)HoyE zE-_6bcz)rM>1W6o*Bh zEU;E*ie$6isKj$Tf3{RhQ7LXE)*~c&WDZl6!Ynaq#ieWX7-_Q6^Oq<~K3MyQQSK}; zp`$mbAq*jUC3aisrM10R(p5g5oSm08QYuULxXq=)VMKocfI2609^(xMvqj(?2lFm9 zHKj}KrY+T2_!Df={zW+o*3=QSPr9~`J?%zwF+WBF+P;(QL#B7>QNsbvM|tN~WJ~+> zWDp4_rI)@x$Oi{wNG-OO5EN^@;$R8nQZlTbOvu0OPES=H_k75s#ae@U?E^j!%mT7q zu|kD22V(U1=b+wW$o8q=Bf@hWXRv&S2CsGcWysqkn-c)KzV^D?hK>dq>mM8AhN6%4 zk$Qn%a5Tke%0GPvqfBmZKqsULPGgJ1;X4oQ0pL;9hwW{>Y3z+0dAQuz-Jyky3{%U7 z^l$fOs|rkyY+QwF^w;yPH7q~}1J>+BW7WWACu#Z z)Kg?1$!ci^%6zgDk*{LIgN@`^kz!g}enz)UW=bd6*vKka?ndr2t=y>5Gj260RoUi~ ziSGo#JHByU7)nHsQX_ldOcPJ~@Pypo7!Ak#H1Fey0`jsuU)7v{iHV6z+mB!pt6k*S zG{#Q(d<4s+YxjJA3zlC728NqGdYVU+KWMd1<$vp6$=~^mzi8u8hRJC ztiXlcy63BNxQAGGFz0?^%wh<(yabYZb>wG&k>N~CkA$4v3qBf|apwLjf7-P~Azrb5 zy=C-#{Ai0`lIp%S7D?0`7=V+;FxW9fzT$S8xM}H(Zp7m9a(5T4e!n8BSOj#Ex}6J=LEMTUC{RN-d3$ zC;I8iGYtyKBSQ7XtwLSOqOG!Kzg;g}MxR-vDhx#lsF0S`{s990F{YJMqi)1E?JT^4 zSS~E@6+TeE`07MA#%5@+9p_!HW0CFX} zQd*ip2!A=N(+lqN(^Mr7q}}-RjqQN2s^M#zUX14>DIBjsyftx5PR#asw>+M~4P9>nNAZq!!LX|x^S<&?n* z|1LNGVy6$M%%WtYA65Q+#iP#4#uuh{3R8(O}ITn@lr7Eu@d&X6}$ z?9%6VK{XNi#5m@dJzYgVn|I0c4y>k4CQd?onbbwy#E6~ z)k}@B^zEkddPIWl7Omz)lA}pllFQ$~d@Ni6cp_dj#ZES|CN;FEN3SS7i`CWQf9Mj~ z{~6sDWEOobvn&Uu zQe#Z|3#myfNn{Qzw>fRKmnzd)vSlJ6zF~jDExQ-3`!U?TOZYYOd`@NE?r37d+ia7S zc`-MWX_2#}EXAM0Ha?W4w_dY8;swHA<+i^ZZq>?_DjCzs&XR>&PrubjZZ9NppniFH1P(!*BPA2k#86>-iPua&2{Or>>{47)ljUwT5bf5ot zpFlOL{M@BcdDfic-!zzZfh%AecKvlLcAp0^)7&AYt)xk}WB+Ih=pH(xJ1n8Ln1k+7 z8iWUO@~)xfB_i`qE5lh20cV#kgZ7+yIA~xlK`IiQw59TQ*)ev`5z*$Qe>Cc7WQd*a z&a6gh?sFclJ$J^z=^Ml{m06v7R++#T~7r98iI2YR`@{Iv-KDsdstioqovmK}U@xDL0W zko|!(6!p+pu2#q*NOQh}4m?s*cqOS!99Vsf)pfU#6k}K>tHtV>rARihw5;M&!Vc6> z5YF7-tICkZ2Ap^HWmW&!T~=Xo9NKPZN=nsgtn*f{qH?!*u2xsDRd}YWT8;`LT#K3N zX~wNC7DzjqwPg!d%PMEhKHF3ox^W3z7g@bCXGh*W&HfOC`em+MB1Fih)3gNg5F-{d z18fiP4`-;OgL5B=|2FgGLnx!Rh^cHtrvDqj_*00<3ahJR^*qVNGQU(FI~csK@&<9sp5d6S7uEZzj-e9`n=YfPz)K})HL zqz=|DtZq^|uTXlP+XK>UNKEJ!0m-DU$Z>J89vJ7ULV;V@dG)B2vS8`*-}l1pQ62ag zy9J?~Cuf)=|5m7+9VZ#IOkrqq2V^aNHuQ3aW_Lg1yw87Ex`n`mSe8#Z2gg)hO3uf_ zWN(pG<4auVo3vqn5P)aDx%y`;cX7qG3eC>GU{&j|v{Wna0?;Gf6&L}uJg7+_xMjh1 zsG@n2TS2Fj~=?{`%ca`5d2X6cA3$h@`3^}$3rHU_DywvFPOaE( zeIhln<8!VUIp3Zp4}8uEf8U6*+d|C1+M$6&vSY<}0fTCTr0q*XSV%ZrZ=aUsu&%Vo zUeAghgx^{JtyJ-FqI?EV7zhQkDczgU2-TVyM|txrpv^5QvzHc2ANQ!N!L@dD_UZUD z&g$1YZ)rgwPf2x#bhe~2LwR|j{X93F=TAwD(j6;n-L#}H6CqV~`e@DI5B4H8SLUX| zs-ngegkJg2EIG9YcHCJHhw}|=#10poMs@0k2h2LmRd_&cp8I@V=^}ApXC(P!y8;$^ zHHs5rp6Ze69D012f&!Zj5;U6S7#7=_k77Ufrn8L6qMy7EK#+7^XHE?u7?#KDo~6=K-5 z;nMma2AUNR`pKLGS!c(Tz(3GD`&6z6ul=JpHPV3v?a+386kqHd{;=+B!CU!0 zGSs=Gc^7Rw^o~&M;*wD8<|*t8OCDv(EZ??}&}a5eG#^j6|M}X+FeqKGQ9f%K8w*c1 zy+_;iTY9w#@@9*c&2-crQU@7?=|A}MYXQm@!)X8|qHjRbd;*EwG7MJ7% zzBO{cX;lh-s-pMKzK^bA_kCb~Ek>ie39@EU)efoYOKr9oFz=7;I|M-+e)&+wJ37v@ z|HUHQDisr>(C#(visZa8uO57Cn`fwhSg1eLK)SDXEURF!ku!F(@K)R-?rDd_Ur=OV zu((wU3pVLd$+%iFt<}W2$5t$N@_=_IWs%O}=>|O;HJ1I2+lUe~1c~n7@khbDqfY`H zIdPwP#WIrpgQBkcW(K@kvio3pxD+lwmd%U$ zO<4^|t-&19Z_c#|&QLs)(%O?Rnh*SUs|bs!EW?^7Ks~%x%$B@S9-y_-={3qEt;bE{ z#H(YYsB1Vf`fR6g!|W*%R_`@yB^Hc(bBysm&Hj;>1m^42pUKsjsVlZw-s_Y@O*~PA z4wbAsQHOpgaUb>STQyfNCxOEQyTovub*DV~QZ3De8~&lfk4%bvx_i-Tn8~yPbFVe% zlQ&iwelZk15LklrXT(Zyu=uFs{Z9mKZhY;R`cY8wb|yGv1-VR`L%^dlZ>eT0l<9HUDp zl;Sn^Y3Ob-B!B5KbiAqj7^2m9opkaUQQ*W%$gI~Ts-bbBIQco8J7TO5y!Q78hnOqg zNbIal0|94&X8U0c#ERWBoc?Igs<7kP3Gk!=X>!iOM}F^!%iml~s|Dzq`oX?=Dr?xc zA*#8m#fpPuqeX%J)6Cu&pF{X~X)qK~b}7h` zN?6zNH%kNv5)MHLAED21%(j5?5dFB@JSA)R%lGvM+PHX4*BcsR1d-CZw@<+BH#U%n z_?(S4V@K7v{|O14Lz5D}l0p0yWzGE_DAwY4&=;b;k2iEvqR+JY`n#exuKz*uF{lIi zoY3bD5}ld7?achuf6KPOVf-t5n%YOw?W$@-2O?K9+Ee*rhUXzkT-Pw z8KybsjpP`$h=|$))p#?&F6?;GCJ9eIy8z=daY=Clp=Hs4oIQeYR)Zq&Qu3{d{Khb< zOx+%qN0>9w7QvWGjN7Pq_HWE{2zL@i9sP1G}r+>No^J!uJA0y7!6%pxO^b*2EDyn!l~aFv&WJ!!;KM@iI*6|+>2 zrB*PO;xkXm+5*qSNi5ba^U}ymdF1knrN|Xh$I29{gK6uzDw8oZ z`i4kHzs;FIgJ^yHk-t-1xj@hcheYb6Z`YTRY0r@zQ}CW+Y*oqQ)?w;fU>^P@vgY}A zLKdl1H~a)tXk+iGrK*ytT8h9S3fpR+QOF-9nyBgE($N6e@$Rj#C^V;YMaD*t0m==5k_oh1x9( zswf(uhxhTMVnDHk|Inw4bCGCkbIL2=)!pg4vSWOtnRs5dbO+_8E-^6t>`h)WIiiqUkoKk(Xn-)@j)SZOZqN`MxWey9G;!k{^dA$^I+ z!A)#k+SZM&>!lw17#VVkxN)wELROgHx0+TiXha!;iKqeJjh)kdKn5abL z<@yQivR4Q^NY^VYc~be|9ZZ2{W13kvN;&nRy7=jY?u||B>O8+H7N>L9W~%eWHvUv^ z7W^vTU&^?icMe{t=0X2^?TJLwAG^f^DfMEErGE=mmM0iQESJB)9?A&Q zn_Ln7IXAlQi_w<(|Hy3t(4OUm$Jc6=p6=|!1e=(d5Og{8D8REoUJH&UPUp$IB#7KK zm~0*Lb8&0)rA>5HBUJ1uGab;~9S#^B4yN1BHrt%i?f7!pem}luiAUEXJ2Z7t(>UJ} zG_Ed1t}f})k3kp}3}$v1O^cg9D|Yj^7n{$JaF5iIVOlk{nfUkB9P1Pv838Z5?S;$e zs@heZ8WVz}Dr$SbfG)u3B7>j90!*RaY0#P%j3D`(pD5oN>qoWKMmld;L z(x80|da}Tqns$X8eRYwK6&7Q{TPYmPy{p9eHL)%@M#~Twg&}pWq<9%cTdfQSS$Fdl zUuHZPm^K)*pg_*N2D%IxJ~?*94wq#*a3kbvEzM66ybN{i4R93{)z+tA0V?teiA7#n z@DeX10O``|r#apzB=9nsue0JF2F^38T2e2btbIi+eS=zhkoiHo>hXIqGju1y`&2TB z>1_>o{_#?0WYiK=sSA1N^AM`sL=tc34d?tQZak^Sdwrm1LuK$Og}5s=Q!z#hv1(_b zyk>C+X%8hu*rxC_*It6nI(gTdAe=14mNPm;^?Q#`+W5;S2i~}k@XWPw) z++VOnm7q78|D+*rzBUHCzY%ClL)yRr(bZLxfCiuXowOmaWvb>uBhALtt5Y`oN!r-I zY<<35K-8>)RTLBQ~IO4)*sDW7?ysf-=nlx1dI8a*q0Uyiq_S ztXE9}(P%2A=%ylzzR{j|DY5FWPtAz$aM#$I4~&_NgM{XwW6p-q9YzeulHNhv{?mQ_ z@wru_*7?b#(@T&NSTSTXoqzqPC`fECCsSM)q2D4JXIl^sv_^g4#BHu3Ly?gD^~oT7 zan5#-nuT}8cA%DpcTP^b$xpdu_9^<=dc&DbT#pjRWFExg;(WxqlIn2Ic6%?&YaGAzA1@dz4Y#GxRCo-IvLI3k%Os^|HPKE zaJ*zR^v0BBBV<)CY=_Fm>aKZ5vkc2aOX~Km!k&;v?+ZI&_*L>kn6j#SJeIsIIGf_wHST2q&RAG<|jiY)TZ-^^NqJjrwv7O z`Y2r2PLDN@$B2fUgug#MUzCcO>+-`(Xeh|--#Yoa@{BY)yaSx#l27b?#1#Y5Cssc; zU>dXm@6WBV__1cmxhy{D&IGq>wT!6Jg#uOf9Ftkf8zWH z{6dt$&=JtEl}Q^c%TXH@TBUB|XzC>#2b*AmaAy@TM4nXKp~(aM*oxrXMldA zgLq?|4&<@4ge^UFF&w6iqLSEe;Gl1{FKtBKkKZdeWR^VO)uOv11W$~XXP`XY$B~@G zZx0VrqOZ70){jJGs76g$#v$hcqS~%(Ly6d~h~@9q<#Td_F81kxs1MJ1@1#9Bt!Re_ zOPa-*%aQ`eBeH&JYZGeUJ3EKcv?1EE?kzhSlI#@c-I2ltkFOahY*%b^lyy++YKTL!b?YYs zWjr6!`TP1s?C4Tq^82wFu<`;2Qq>+ATI$f^v#W*VF-nJs{S#QcwGF}`h# zX7i*!lm}(^wz&xzKeZV`*|eqR#i}56=tHanvq*zw)zJ-+i3qQqY3u4w6F*|4uh@na zJ4f{(%a|M|&T?_Za);|6Wge@TRP|qQC)R1^31IB8%om?3(c{f$&h0-qLzo@wbfY)d zF(U>|!*`61%2_FUJmlx~)8a@8aUf(^FH_LMI_Io^*^4J&7yaa2iw;zbA?_;;R(xr-t&sNXI5${Wd$U6kGEz)oL zrKciWLa0VA1#haXvL|9mKZN8!;c-Ky_CqpsvqdREt*HmC**ELz)mVww%AAwzZm;??RsUXXsmauaHj!x-kcFd9XyQ zeaSmKFnfJ7cCV(8N&NhKxE%653)3nVvbE}D{k9j6blwP`XCwA|M4!Nby*JEF5_v^X z3AGlWC`uo!gI&hKfR=z};f)nw&J7Auw9~TSLWfyCwZg>@&?xe5Nc>8Hm{OVEl{8j$ zgY7Ko?xdnljcypOslm~?XgM~3+*16Ce*8r9OeUu>uwypxA=|ICi5}nDAaK<=BQrN2 zB0woarce}cy6G9>h~U2UPQsCNkt_xrC6Kxy`)c4Lo3o%7x-zcyVQYoSCWMRlQ@cEmz*d&M9tC+rq3dSv3a{5E6^o^mSA(q8mYOD`#$9XDJcIPJ?&3#pQFU6*T8GZW zc3%IaDvZKKR*`+?-&KHC^T=Xn3R9s?anOC5*V<08br!+cCpus!Ix+XjlaTVlcHfqz zlREHJ*9IW59&TZ(wA^rTaU_nKPK>_zVengj5c&-yPcgJ zizgB01&>}I`x#tVeI-UNE?9IWE&~_JN*0W4$9HKTW89$1vn_N$xK2H_LhK?U55HyWt0tRIQE~a_#DIZZ zT(;f&>zkOT5)oo`GOeGreK4T^aMGB;z*Yz$uf_B5;0;l2GhDG2Cb@{kAx;|Xy6LvY z^$#qD0#uDsp`RI6C{@^?@fmGOI*Fa>&1a?z(RZzu->Mv2jx6`8d z(x1i`-mr zNwI}TsMw3?o^_Z~~qRU6`|h z72O$Hs!8POX=~<`+D5Q)fQZAQGwDP&5uIdb(@bpx_;e?Oj?mBTx4G#+W2<*Qy{j4aRI%$rpwb| zF&78pu#&_e^<*ZiM-3)|&G8OpT^1a18WTX^eaN*@!`LmX9PH{mytDA|0Q_Fuyi7N? zI$&G#C+x!@CIkJ)p^T@CX>s%fLw(4fJ-PjKLbpmurVTUuLY3ZI8e6T)D^lg_t0rRS zz!^lHY`U^(*bxBx3Ulnb#mxWXWO$GeA|G}6{H4d6c3-Qsg4$h*f@rJ728y45t*1KG$`>1hCu~qLF zf|N|S3ND*{OL{TQh(u83K1?=HwjFzx%jIU_Oua~=*A8boVpNbV(@Ut6eTBJeDt+*l z>zCBu6&e0X;uD5lf4FTJO)S)V(87Y_l&*8NVaP^cQ$T7`)^!e#xh~=0{RZx=M4v?}{{F|VhPnGgM7L1QA`G3ujSOkG-}D+O zBpoj~n?nmJ9x9+>)Fqv;(1uW=HVX^awG;;`U;O3ts?fG>!L)OFe5AcVbF!;cvzo?u zT88qH3G!-Fr8qGy&*L;0EX`P!PA>)WD10wt0!0mrQYzKiBsQy)q*mF;43+p+4UI6e zx}1j)prMx3sIWQ=p7GRJOr$mtFY{6_@cjP6bfk3-imPu-7qm1a8!C;Z25P2J!68KDQ=+oX znUyYm{nHC%297+4FJkJM1H|??$Xtj@3zCm^D@_NM!w`;fT+3!Tqn#FV1b#ePz=duO zjXHj{NShT#eI6ETuhbc|tNON-rm!`8cR$CeKgB6iwwCQAVw*;RSV5&>ooSr>c^XxKar{Di8AFweDW4ib0Wphzpud3l#w+3YL>q$SAMVw0Jee*5G zAaDF9nRqFhY_j6a?3+p$k;M1w$vR`SDE8;63In+F&Omm0k$tY>>Z;w0c_(daOg_TM zPc|hQQl}NCBs@Yj4lsCy0*s*Z`z}fOq}JS&q7QNse@-lu3#ObHNix<12G&loeeXlY zqC^w?U-p0uh#4h`d&-K-nk^U8OZ5P8b|$rkI-*SZ-i6P-sMzIZ++^yCCIVfJuUo2y z1ZLP-XR5Rq)@TQoG)^Uq)csIk=B&2q5#UB|5iJP^u#ikH6Lj#&UU3crpbtb4rasn>ov7DpY|kM$&ME@ za!zM~=^U#S&d6oskx8OavM+wjVKZo&jLP_m#c z=tT1IZSNq4)vK=jcT%if$HDL5+H9W}ftaBRB-Z7;qY*`M_HZprGZL|cu{tvd;}liy*$o=6^?*Qh3Q^n=5p54g#{Cj3Gr6T|2Tr{CZeFJQ z$BcRQOqkrGO_bD>>kL$}j8Nl=6a-&XfG4@7#BdJgl$vHZP?(cCQ+=tz=Z_`01#7+e zfk<&+4#KE2Ci|M%9WKpe!CZE9!^Mqc*%?%}`krbP!YgigwNyv5TK(1%x7O8gO?hkW z6>VMW$@|*Wy>Gn>mFNhs$H{xZxxn0lBI+H9h={IcXa(s@3Ttx>Y5rdXv+8_i7A%wM z`_~-^vc=uumEEbR8z4b;-Pk;Xri{k;nx2-&!)r)`f_s+w|GZbbKq#@C6Mx>q3@8=!b!3mR-bmqyk+6Y;JX#;U1G1`fy0_o9`M1prla67H%Qt0Jl|p}9opPYx zS16+dZ~sPm#Sq@wumHcJ=dkH^k1oxQZ=RVPthdk6rS$l`-#T9=b1+Ol8t`X>fQ_o?;`8&WF) z_~*Ckifj;gueY?P^(AMsbq9l{8ZNI-7M0V~+XG+tnSu7K9ig>}s{S7NV7bm`JmS`- zwdbXviw4^cH5NoS=r>g3^#@U;I}3FPan#04`-5-Ioq>1oAEu?J63U7WoJgW4%|f82 zPb0eSeay^XYbJDcjqYd+&aese`K(xZ<2E<0pd=+X&w#+7^0e{ z)oA4EK(xQ|JH)MRP-ENBSAUG^SIOTApGu*0cy(94QuPnP3p-C+-1R@cFr|n^;w2TC zR#=)h-z4UFrqWqZOco4rsnBR4QBVb%QpmREWtIU?V$&oARg%ik_Ndubb4-5Np2{Aj zngB~L(h2983lT2PL`qe=N?Aikl?nypD2nzV)CRJ-^!ckjhJJuar+; z%ff~@frLMbG#e)X6m?f14CG18E0(dGPT_VZT)H-)M*Pf=&oDktue+$n@(bm=1HtEW ztx>NP;aLF6RChnm>Faf@^&>olRUx@ap$kMKltlYF|!o!dWIc){z)|wEjlmS)=>A@@43=%J%cq2M7xPY~Wf;6d8a?j&9dwkmQyznv_uVRZgBP&|K+%FmnB^zH%?y9 zt0hL5n|p*Sb#)c#ktc(UvapVuKce z6fOT2vN((7XSDAV8!qKf=_hFpk4&p}d(x#&JWCrNKGE5db`Ywyd~8d1{_CY__x8tE zf@_q5L~8B%NjHyzQBIlAiJ&26${fv{^U@d1XkOuu-}FvAZcmHGBQBCCj(ZNg0)}cE z-ue%Pn*G%3--g@2sN`4b0v4*+q2dNp#H*jGg%s>f!xmoy}_WmM2gUCzH{J}N#Q zNDGy;886xR|9TuP_-Zl;98M)KXU(ikT3YQXys%giT{h@t$91Kv@nV7&0f<^chCpl4 z!0z+cBp*0BA1H2|c>#<=b!)2j%<9&21b&rYhs;#EfX*EygX)FZqzj3G)L4ko(67%+t zGg`CLbJ3#n_ZrQ(@#?2Y_RZ8mNDOhVte#K#7kkJTb5YiTE>fNk!mhH>B{I0czz4d_uiIO zF+ppMwuGaC>6#m}J?Ki2!+54tT6GF0b#3k?aGCG`vj~4mDs^q_MWRP{W&{d=DMQXb z^Z@HxQ4F1_4>U-A_y%%$JW9HP=FhVYY>lswK2L4vmerWYOxhWL@aa%q;0N`hPR7fB zOIB^hKvF}-E9UH=LSex>Lm;q+1k@JxJSRnW_8Iyak5qhszECz~hn}q3T$|Yi6KHA( zrI4BR#QuTCxiUC4I&Zx}SF}olt1)On!rch5zFzLa*^kgxff`8xv>@Bj`gSk85D&c`?adc6E z;(y~R``@@klZXu8fE_Xm|MKI@u>Knt+*^ChrCCSPRpNs@Xnypio|*Xbu96=<%QGwa z{Jw8r_r3&)u&|gYv8w(2_%gYiE!wS|;WK#22C7vko_BR^>lN&Jt?IRPcG$;za9QO2 ztf|#L+suJuPp)+J;Hd~iP&Jo?O!|mY8d)1#TT5zaur(nwu?=BvWx|0lM_I#Rj_&_q z&K#{Z1%|No$T#aj%-g;VdA97oo;SO*u+FoP=r`*()8r9^za}vMgyB7Aazx-gPId&w znHWBR8`m(8m;$ynwbJ7pp)DgBf%>!X;^y1WYJxqIJ4x=5!NUUQAc=ACBaHaO_X%7g zs^=6JKH)1`Y|p4IRE8T9d^;VQzC~L*nsCpsEk*Z?gufH0xn!#;CS5|g|MGdTv0(Md z6;f5YWOJ!4JVW`^8E$BQK7hZ%epDjbQ=|OREDBT(SY2&A z7Mr6qOemnlwhBJX62&G6NpAnbd%2x!Kx?SNFa~od(lDqg(xe}wDuS#Zp(;|epTH&p zydUfY<$bqmhT=sA-&o;CA5W_rr06f13mBf}NV|TR6I7ibW)3v`AXpC6zd^P4OTS21+DI!d7(XAk>bb9>W;Ip5z;|D=Jpy|0abw;*UZcg0j4|L+F=->H$PTKy(nTx822?eU?>>;J z|8c0nFlu`!(J+jEsK79;8x+ncFgxPkwd#qp&vw`vI*cRhW=9ZG8)!06?a5jpO}6B1 zVJUwnuc62?ldnLsZpl@{9{&#KdUtnYV62bl`seOe+sA1qiyrvxxxtPO#~4Te%flx` z04MI5z=aZX%hbS_@dwpdfoa%esMauyxq&R>0M=NizAt%brA?3r&5-FdI6(Ak{!8Jy z^F1VtI$H3kC~!D0$?;EIUHV=?q`_<0zkj`lD(*x$->OO9VDi-(%!$8OQ@+C((yvQ= zJ4x_`sL#D13vd}109zA!Lhbu$O8niH98`>+iP~q4v>N^`d;LN*0BJq^8+H=!80BG^I1 zYJ&HjM*E~AA&B;EjQ?)`gB6M^eDG1Y&z|G`#~<-VWU!|s8|UBDBLNq|0omgMFuzkl z#O9dED=W{06ZFqw-9Pdy!2xarx$$6E#!aAv@}2q*QDZ#VQ=%`1Bk{V#cQViqq934K zlK+VRij`Q30$jLtiJ|yL%t49#lTjbKDTojQ5sUv3G9V)4Vld!jOaQ?%5JX^)BYT?Hl6S5@YK1f{0Gjk?$u?o&qRqv*yGw zT?$Wuec`6WFiU>JJ!3vU9BJ2~!S2TeP&9==1tN{e5a*^)VEEj8#ISUrK|o+7`;ym( zT#yBpn1XW1-X-&;h&~iaV=*Sj1<*8wpA!3|oi*OEHN~!Au-At6-W2nP&57YaOjHCh zF&qrUL~0NdMFT-h!~ij|;6En9{ZeRE{39C|*U)EPhz!Ni)PxMhV@ix*OY&}L2*~Ug z3Rf7l{3Aj-7#JN91Ko;-i(*U0Lb@hzD(ML8WX;@4Fx9Nj9;-J*PBiM*-&g%ii+4f? zk<-91$Tk#QtSxaKYvv&qvbKQt?28Pc&F15&`iTltcG}g-!FnTqx5i7BwUz*e;xG9pDiX#D-gA6m0$IHd^ z`%1&d&~dwt{Fxxg|2dY0iOGpB6nq#<9M0D-mcx{|;9DE|-yo7J@)Zceu%S%4Jj^}& zeO0Cr{{MufFHp}0Fzh>&*nEtG8Xg2mM2;k1Im4~1a1IaYnX!hBa7*0)IAx-ghO`RV zE`E|?5o`=!;*lyPeM-Wkl3MadukcG6+T=_Ina*2!!&|u*LZr4OmO|4)e`f!b8$Xm} zS?uL}nGW79TAh48b@PoUI?+L!(1*J#{g>>pk$v3tvgn}A_6!xjo902%SJ7+j|IiE} zIz@HPds-h*er*^M3iO3GS&Do^qSOQ~c`ywd7j^|BIo#FXL5X{2lV2Oe;7aZEKwKvs zZp+*fN$qqaTqhq+Pu_l)+UW#iC#rM#Q#$|k8Obl5es+7p_R{Xs`KIyj#Q(8wqC)p& zde$!{C0{j!sQIbQe`2qf@5OFYS>Q3vK(Fl@MR(AH2BP(}Vdqb$E2_biX)O;n)bAiJ zbp*%ZvP(UDn())a@ChW1Bj27Gh6@-! zXhRLPHhA3O9MOH4)i@Zy_par}fIzk-l1n@KJC+aC{dbgtAXZF$G#8qzBcc;^#y-!! z5R+)$8upYEcmtKDA!oxo>uc$n^f?UV@5D7MgogArG*=uHe2_MvTmfkV>1vQRh~;{> za+@jn9n6I}%HTt{=dNSGT!!65Ngq0s_$@BVZL2#B+E>bDZs-to_^s@5KNO@2~+Ho|p|5*SI>YSO-LA-mIqm z_WZ2%{$xwC3z>=5da$?fNtc?l)rHP`&IT9sAHgi~q0ub5d4wTLZ*gL>Tj5+-iLvz$ zgff>~tAd>0Y4fMjOytEUt^@+TpNN246@k7sR`u9FuqvS@8>X18m+YgP_YBVIElJdH z%b4dZ8M5Tz4`O%AC-nRCo4ZRTQK@4e3rGGI-^fWr{PY+&fhZk+>(D}_MSMM(*F5mt z?>T%kL(me^p8bFxT>qrf>K3V?(Yru&udY%wNocPuE!S>5)0?m=TkKv zz_`U+jv4RA_{3a}R_Vw1$6QWS8NdX_T#kD)fC-JcoXT%gm39HPA!{R>exW-FQfPP1 ziEma@dGHKpoXB^{K?%+{R^fEg*^Hv{uO4Jl|257y`5zf11%@u}?E%c=7^gT|*Cw;h z3w_!IJ1HmYC#HCm#N7~VR~86P^VHf@WxtQLHpVAO++{`eV_wI|c3KeZWQ&t(li|F^ zKRGWBV0vO?doTn$1%*G&(eQEOpO{MVK|QXwR4@B6pJO;~&iRpEFqEE>Q66;T(ii!X zPI}8A7XR9{$*&XEsYb9mP^e2jxo>m%oG_H@3UEKK_Z`I2&KF{nzlpV{ecr-hE~VOcn(W3t*hTTD)&h!l$r-HD1yfjKRO~Es&J*@-q3^@q{ zusZtP3;>3@APVr{=Pv_19{fTSr1%AMN`kg`F>m^G)`AS{o%7a?`Z&*sczMq-X%fGUnhq`%l!Scv+M4C2~*#d9w(0ViXc7npYb%h~GBDrgM&Q1$dtuiLid0#N;h*8VQShh#Zh7!Xr3m!<19Y<-6TW zhUO$$dD-0>T4fneKDbMg26`#~sh;mkA19MNcR6aE6B$!G1kM zL%Hv@ZeBf_={NSF@YN*+jjqcBxNx4?d&a4`8K*B7ggYGn7mk0JxqP6}{@5D_f^Pfn+TVeVk6_z>LSw*8 z?U_=WMu|rsVig>UD)>0uT9Kn0=gfbsY(v;63Aqh=kYLj2lc$`Dq^UGOW2)t}lL5Gc zs)i|`C)$|>=*c;2=ur|KiroXdFSdAp)lp`{C2%-`jDk6>6}BPjzws{ZnCbJHu-5U< zg+VP;MO(l|QN^9e-jmRS9gpMP$WZ$0!h74lS4aDgKIt&h?d<(F-=Xtf>{%Cbi)zUTnqdE>Yd~Eq5fMX}?YsHnA!_&|IaD0X+pm#|wmC;>n%_r+@LdP$3{%%+aihdT; znw!;j{4BC{uL0xtN@sE1ElXo`BxKJCid1_l&29WD zVDjTw-u{eO@~h4K!Z1+X7gSQ1%$>td@@|CWaFXuoTI<{%c+OY@jzr1+61B3q&b+nI z+=a9AWLHG3m!W0xsc{asv|kf*_vWo{xR9Z#Gy&7PIGM_99`aMF6|@qgIk4Dh0%QirGc(#f6zGRy8li+Ui{;LVS;VKl2K{btL{IN zgI0giyDBGFdvs4vGjx`7s(O6-&T)$U z$@)q~r-L(7rf%&5Q#FeFr0AXgQe$3K3+uj7V&{_4h0ty47k?&3yvEaGjmEJ>;%4niBA}M_ z*ex5Zg7-P2Um`?*A#)2h^QaVEL(T5fBjCBY2x~1?HESrj%e|ybXr7*zUE&XW-%oal zU3SUF^k)O{+_niip)Z(uf#Cqrz$tOU&fAy^V@ROczLNRi3YE8*(H4xM_AzX-w7VFE z`)!_RX_$#5UMLb@E`?NN+?E^&Bs>7|_r=F6J9;}i*aO;`bFC7&rFvo8y8AC)WqjXD zu=^Dvv7YoS=Bh#805XHI=aUs?9~6R;~3Eq9axw_|#EFte8_z%WA3~9L zguxfHgQYFL=Z2aib8l8p9G(lMMY^A8&ev!iXsVBJ9@}d2ynS5qNnyT*bv5SXdYaz3 za%X~^5bL84|2fnzJrhcrxX~=RP@`31-x>L`ucYQns)ph}z}HFz$j{zI$zA8;rxcG3 zD2Prvgr?N^;{^?;ezbjd@o#*sY})H&^>JkH&L8W)wXeURd!5>Pw+})ounvSTUoR(B z9I3Q%oqTRXh!P`P&AzswERj=^Bl}A2yhbw-Ga`*uVGp^r_RY&(+x(cNaXX{mkEzwA zgK#rrquqA~%)e)jcKcu0(`sGS;yT%8EN6@O2FL9@-2W>qqyghG8hp}vEp;LCdhzd$ z(sXUl$e%l-EF$l>Is4haMA#Z3o&16kLOzG8v14???;{wFilepE_O8{L-C*6%Ti>fY zVTv6?t)GNYinj%Bl#tT`e+mnS83VlXS|^W3wa*Jj&197Rt%P*0Us5&475>J@FTA#r5QGd**s|bVX)OC!K8%mPg;Q1CmVptLwxHC=IUlsd((zSi|4u z)RM=rNN3-?n z^MeJU0}ndkqS!G^a_OH03z$s3p&?^=tdMM4_1>V+%#6UOj>=wjcyTR|!**J$oZMNn zy@%_E_14XqqK+3%1$)P03Qnx`VrsZz0HRGO!ya6BP;vrn{_BR8qF z&iNeoXKj?iP9k}Y4*f5-hHZpIRGA&fMQ+%Ht!?i_olL}zf$#bi*GKO7hvG(0wVA=f zN7&%LIoiuy`tiWpAqSq-#eWexeM9wVJ@QuMmlHN_BZE-5@MW$1ppR`q{GYADx{tGY zcLk#nLP{~4K?H6i)S)7TmZ`kYVf?4H$6jHbvPI?AUUX$tz z!LHhq%0LuW;U;p|77;HO<159xQ9jBt$8KP_xc%JSUJAxk>;-DlYi2pZ?z)NmzKS@{ zR4hsK2RYYGiP}FiFgJL#*|HVG`mGerM&?jOheTRax4@g|iG78&Dho3n?O>b^+;P2u zAk9>4OXT?FeFxSDsM#YroEye*mV4SiCmjZ-QE}zoMdz1prArcN^A~IVV%8^`1f^&< zV&Chy#h)Q-nxz6-t(fF%-s@75)+XRMXRWga^Z3VhpIXBk9Mj&|Qk)-ouyMucbePCp z69k;8*dtOx(S)^?{oV^m2d_37w?JUOS6P6IeJ@6;hsOw=_n7DecHV8m@1|7Jtivim!+c20)PQjc`C_}- z>kZ?viV&ZrhNs-P*bjAW>DXlU;F{g5li9H!xJdNDwc(YJoY)UyB${19__G3h><4NR z^KRX{>Vll|_nIUsHo`mUf`@M31142Az79b&jc+j#vecS(7#ZTxyc|S}AO|^Ma1F zZ0Y?_pRL$(*;i`G?N5MC(}U`Wsz{R`2{u>kx#-*T*C(yqv_;yJ(Ms1?H)SaXa3P8T zJe*q=itVw(1qSvH&Ra2(Vu=*D~o=CNL5bNzD9k2R$+9JqW*B54> z`q0iQbuNkDi)d(bMd7eofi?$EVzneOvmhf%3S1DOm3Fw`_h~VM3R}e%53+%Zuntc3 z9uiq)8g_A|1nb(Dkets^fZ8>N(IT%9bMp)FZgvvE z`l*;5e(p_nG$H6|IRsBqU~#khGWaRGl;HUEDWtS7KWGl5d9gEBeC)4q9uuYln`E0&|&o{IXggObSDFI+QCwhTQ(=04@SG8rxZ?Nm)riJ z=|<;p{o}RN*_GRBMENi$6I+CgwAT%yjm?dZW+Q`N^WTDMc9vYSW(yAA>*TDK>^Rza zr;M|8_73u~goko9{6NvpD2tK!l)e-&15NF9e^P+gQw}FpRuYz_mNwj!?MYOvBTu*8 z1_mNh)?3=60u^o~o(`Kd(Lr?cLs0fW&sCI2&njE;j+&-z1iNy+8)tJ}+}p!~xoIXj zyN+<+URIDpQqdumRJQTc$Dh6t*4m1(#`o^x>}}4@TuUX6?WJPu@V##U^^2|L1^Dt! z783K)W=J3jvXtco2FY2i!@6H~ix-N7W1l-eV44UofdC*Ew|E(EVJTr)itzcqjq*)u zplvDZ(iLu=VQ7RjYN45k2-?_J2lbg|cv6XhW`OM=!hIbC9JR1QWYq){U@75Z#7_Ay zJMNx|o}K3yDu=UL=BEBKQ++^wXSFQAq_S7+mmI6{h`Q%g^Zv&F58GVR#3e7FDxP6F z6uK+KP@A(3ma?;6a~=j)B~+HiQ}WLL=jQoW7t#GrW7>MMBd0eFCpJC0Q%q?#8;(n( zf2S3w>Dd{}kq!E(W=j1TbJ+{-_ia^sL<_&+oz3vQDmWdDfwe#qee1>6r;r8yhSB4C zHQsWDLJ4&CM*=q(m2;sD6bJ@G&&}JZ!|4I8F*V*Np zby`&;dU~MQXi9Gbt|=W!Vt)B|&}!s^C|fpDr3l-xHKEGR;JF;TBR@J2E&rf8YyEuu zM&Onp7~=zPz!*1eEr;X;Zn2QcDzmCVhd&N8L3BY=eRd4MrB}cI>ChK;xbjV|IqDUS zlrs+r77=BTc~NB8GqRt2=o5&OKvOlO6tyN*F#)asJsNSqGFh87eO=ZM(Ii2xDe$N( z=6ljdu}n%2D7nSkFHQtQcER+AdI&$ zV>Nv4nH}%T3cmInY*4li^TfMSGST8g1183H^1DUqob+u0BEy>FeS3tA*KIFwed&Bi zW-DWtj<0_4n6b}#pblZq>?hZpmfc0|)<9(4tqXq!nLE982}~<3tJ0D%FQ05njm~3x z5_4LHIuQ}}$H%s*oy+?UgRr$hWij8Zq4IdPj)qBHSfKNf;jhGRF5eWQ(=*?BIcR z4k+WeTDo@LVy@$fUvL3?&XbdKK*ll~B8O<8V9mAv`^2+9Uy{l7I-U3&0`{FOta#@E*Ny%V*qEv3+lzE`#ARbWTG-J4g? z+&QX-k=AESuLBb-JLcQ9eH?I8v?oOEq}odlk|qMhL*8rqM6*s!sIhC@Dpu~`%c*%S z`7cjO*2T+U<4NpSngF|wFL=i&X>5udktHC~N2ihrVhvF9&EF1sd~`E#?MdL&(`b$= zmlfR$vg1AiOwh)tS7II9&EQUyS%s4>I<(2x)&U$gU%i{jnu0gg+gZ)Fzx5I9V1GmK zvVA|N?2Nk5DcBw7Xje6Lo!8ip*VZfAv&nag%yg~k^1;mpQ`&9Jw+5_Z)ZwJsarE@1 zKP>7=Vo^`*-uS@yO6;DQyq^<666E-@R~r7%xM&c+R5@ByO?}}o-c+@ninal?Q5X6w zy?y9;NN)%J$o)OycO9@)xVCDEGnn@Gdx2T4KCmNwb;x#IJi*kLU(qoO+rKrKQP{N- z2$yO-^$3g9TK3`%kJu_fPk9R53XV@2Kx#Fmkhin!!KIeu#-C)QR;biecmzgra!FE7 zQc-IXTq8yk`rM12{64dWyxf$uYH2tZYi=_KcGQE6yR{gL>y3vr<<)+|x9?x4L`g!( zHniFIEAG)-+N|RqushCmqh_rANS$Tr@3t6K-nr`yhs>l^*P`NnyWS2z z@jd_vmCNHdYHN9bHvbMNmb4U+Epcq=;fY(9321Yq@tP5*ywN88WCbkz+cUKJLB3>B z$?t4UV{>29Jaue5bq_*{Sw$Kwqr`h7B@n|jay8$UVBy8jM$He1 z#zm#S%hQksHeYy%+Y)Z_VOH`mufwp+tw5m>NvZJH`DlxStqVnE1+{Hxi&mW-Ln8;S zA6dA=$+aw8>-ix`DJ|DSYtC>_8|Zo+uGM(RLkj(;T;S`s>{w?cs_DTh61AMv6^18_ z1QnHQJR}1cI{-84dS55a%26uM#>nB4L)H&?yMprJ#q#QNkBmg+0yZREktR*iN8$Nn zIVt-fTVUIh$a8pjk#v@Twyct%Knku9H@6A(-=VcrY5gtWwT|36SkZP=<7)BodIHBzfX8;JzQ^lfG9ZuN?ZAcC8dkp@0$n- zcT`g?)Mby>OnOL5x)#0q{m0W~U{{ahrepKy^#ewwqE}>4P~rUb&4)qSfSDU3SDK z707(JI&}Tu+U>BnW7Tf&Gv~UUn($F*tAp3fVQ;tWk&i*NhY1wQ-JJdSuSV71^fX~q zr`*UKz_d)Xw3+F>TkfFOw0ko^4~FE?~n+iBIscOsctbJ z+1eg6R8Z~^I|%YTwskYZWV@LbYYAN_*P^w<9G6f{>q=%1enGi;8 zT20(XwxB0#gC7k}yL;~-P!3U`c)b?zI3syjP+o1cgBbiOlJxudN>N>b0Z8lv9Cnx7 zN5-meD8Gj|f%6f_R0GWLW`vJWx*DDXkYl7M5s*VL1jQsuoy&j{PoW8j4Y-3JJ&?}> zfWkTIK>IBK1Y9~n!ZWwbdbIDb!0i!W<9f-_a|I7iy{|=EKu*7GQH8QBen?>;N#K^@ z5qcWbmJm_*fMwcL$dL1b%zFt%k5Ki|AD8m$PN`1-WUZ&B0kPpXqc%53 zj*%XdVxV<$jJt?IdvEXq6wV`*1t6>zQ}kH28rVh*A|C-6{RdFv%NH_fhQy}(g8+7v z(5?H?6w2ZLO`|s7i6F0qBGKUVygJAhxnXfR=~OTQl&^~dhQ0xYT5>?~VZY@t0@_#v zqGDUtQ;Hg3zp)gO0Fr6xbeWRfO%NXkSo=5KqWUo0oudQuLy%f^|d8{fV2_+wa|qQZ02Sy6teJan`9s%Q{}@l z641taGLXfV5fJa1D9HH?a$4|!+i;Nc{gV6Gn4Hb8Ed2cmkad3m>4`W8fMi^uGQy;n zZev^WB@!}I;_foSk_ukSIT~(X#^gf3X6m}qv@J^2;YYV>hi)85pz~h;Miu@)fZH~M zEMd^6G7eA$A4;XKTh|)?PYhHi)|WeM;XDW5>{~yTIm)aswrw4}{x61a&`3)evTa4X zey6~-xUGKN0bdlLfQJt5dkdo0Hrq2RhHPbBrMK~cqTBcg+N(cgcQnE^fhTZC*Zs*UPASB~@qv72Nh%9Zmn!Pu?={8fqEn8$GS^$(RhoX*ap z04e4GbnddFBt`jvWvfeWKejX)6#f^(aM|WHwLIt_a*N;dSIDtgB!A3q+?}l_xwNf) z#HSs-EtBCDzG9o-7}XgyFZe^guO-IqL&}AAl&;NPG3HIi+VD)=nv)SuPo_T7(yqN$9DOASuo>Y!TZ=#w;x8eS;NFne$W{N57S5~wf7 zvth$K=(k@4UH(nuQeXu96I4@xe?m?A1kaGUWCIOT!Da6P*sg`vz{00kD!7x2$%Sr< zc{0sAmBz~jh3DSXYxcyOnx;1+3Pn=T>4&gFi4@axTb@EO7Ib-9n%Yvcm}~&p|=ddD<8^dM$>@aH}@4Hdego1&yuYRoSayIFUSN4Gv3qnMOUD|47KY7yr2DP;EqKU4wn>=u_WUPd;eg-%GsqwD z21k3qW?c|5uhKO97>8-IM*d0qoMaIHM)l!^G3y zPv~0U**amD@Mjph+KYE=ymBNMy3X}JceTkf`=VTk_FZ1Egr6IH5#yBZBw~Y?V15V* zBvhhcUIKEWqpj5|dG7}2OwLfl-M7J+pOa8&0;8Qq4T$-q)g)_NP5mGa&iru6-E7Os zbGtZ2aPiL=>y+zq#s&|=y-u}twJE)DcVcvoC>mSLR1-H$Fe@zOX!n=*&7713U{y6!D3;9M`Iyeopsl20hKdXb`tc@p4|z z0v&`r#}>;3U-Y9(Jbn8__^=WfAcw?&edb42Gm*noEEwkkr}#M+m;(DF#Tx5DvBr+n z#@JcP`awg3aDVOh32hs(RG$!gSmy_BWR2^rAI_!W1o2t%MEUFKbVP>hnTJHF>lycn z{5KY>FsVw5shFtOiw%AWdXSqa`F1sBU`?u&9M2Z~3V4lSS)6=RrmWtp4|wg^2fQW@ zFVnEJ&?5Z=sqB5gxDT_1#m~rfV>RpP5rc`Ji-LB7>}i z3QmzMKAs(5cezT6_h*L33~tLCKDY4{D3CK{9LR22PtKhM*67aHz#5&5q$tomuy*(O z0vlIGTGk2?Q7Ar+W75zo47dMPM-6Ny=i@{08sBxEre?Vfy0q0(gP|~1MeolOTC&P2Jpk}aix!wr069waC_#p! zQs|R3bS<8OShNd4L3{@Bg(3~! z-M_=#Jz)$Gm7cpCuW=|X_0hC87F>7KWNQE`TMDK6b76mAr`u$R7pOWbbY3T`0QtM5d4m|A5pWfW93R~Y_ zDb(K1rPCh;;wOx8w)b4(S%{v7dDvuE@pEN00!e;%;Z^vJz21*Wq06tQ-W7~bp|rH;i+`NpZJ z>Nk0+F!}KckP5%SyT9o+xv2y+=D>o8GXR9db1+NWWiWGtrCcWr~leC^|~n1-Qu_$#%XzL0!a z@bV9aLJ^|L+t5UYTIgd%4Fg>B-ED{*I|=%&r9DZv$>2@<6l7uV<>w~R_Car)z}+PF zYIf4`bm!c)lIcQQ-H;Sm@Dh*w_jAPICcS7CEar}H#yse#N4BoH93=3c3j3OMn-t%` zHiT+7Kc^LrA2hAL{`=|U1w;tr?a|_hUd(8*+?qN~pKxyU*MMh3hW4FO&jj{+%4r>lT;lw85A6(1Z)3Ufx{YArC5RP11qid9U*2#Q1@; zQ#AZS5};r)BpDQ#&H94^k+pe0rFsTxjShDfpH6mk21p1NLQ%KGro1#!_*p13mxclU zCzRPz1C9Tw-!OGA1OCB;54di^KcpC6ey0t}?lwN^%9_=G`sArMo)X*?L-~nWnpI~> zG-gOWQyJg{rzP7v84_#g2dK;1L<{6)-ljBl_05PF>aLjO zRe=G}xEZRB<(W+0H|umdFt=*qp zphJSb5-4x39~{1tC_k(a4ZQ&jv)rkOUSQN2RylRhDJmRJPF;;8h#y=lt4up|jbQ z!Ka||AqxM#HCv|U21E7qp~9tMQj+r*ayI$qUg4-cP92>^?YM5{kxL&k;*vV?()p<)*7 zqM$a~5Z*aMRy^qr6!41ilPb@O88_5G-|R&HF5Ba z)Fg{a3DmQN66TeD&Xq=3-#r42y6pM)P*nZG{3(Hc&h;xMBl-jy4cQ>oA~;7{l9)FX z)xR*$$D1zk!=La)#wJ=w@;)}*YwModE88uyoU7?e@M5N0Q?}!yMmXoLstp-G%(>qv z-YwzE5MBTeLg6R+BsgTnP#X)GeCh+7M~&hgXIvQ~{}t`^N$^*RqE0Qk*4h$uFUd;z zu{23^p*NZ1rA5-SKKo9>FQ=n)eh+ZcB5YRiaHn*X7#WI!h+AI0-_J=u!2S6qL020n zA(xG|NM6a?Ja}!ou{lsX$16{t`HG<~E-DzS+A+ktCjJUiMrnX*!I={0GNoRK*ocbe z=rulqi)0KsPwU`w0sKye1Po)7c-XJ>+h}G`LcbU*#B`PO0~2pNu?NQJe;PoS_803=Qi(OO z023j3R?iiXE1}`d@;dk{)sW$FVuKePdM|-mcIGBE#%O%lp~}hZ>y*E_;0I)qNNv~a z4&dk6bF%2Zew$+id*RM(3Wj+;tBmHag|oLY28bRdiXi5h$1`ld7M7wZqLTHarihB> zj$fnFav{yc@Q=yJ%xiSOvAXcQI#~jZ6JzeTXyTJ#@D)h|NB>t~w;eYH9zQ~Y)64J5 z8!<8uXnLYIq4DF_nEiMk0Z*GX5fsT8r#6kEG$sYib)ab%dygorjM1>AdmV&H35kP7 z;M_xU;pIu@`3oFCI!4$L7Yc6*EyI*f!u?F9NZFico`E94ysj)teF8libi6##S>vCi zP!~jkTj7s3pN6DXzD}}97#WkHHjKOr=Q?Z_QyVI*4e^~ls{J*I zpy3wLbriMo2QS5d{1({P145KS-(CQRt^9J-yI4c*H?ph+ocvl_we|l60S6HCCuRXH@K*=_28OPxl(<*_R1fVvBK;wyM3gW)FA-%CE?? z)W)geuE)OyZzy8|b)TCVyHo-zlXLzP6SC0~w*YuQ!YqI#l-$l=2y;f=VDg3<`8&ti zBJ`z9hN$e?d%tpk*CXAr-IGPX#$0R@EOK)7CX5QMcqJ!+SEV#lz_Xp(zT}g*J9ySn z4wWDDm#UR}%tRL7Ilk&E+nVA+W~6N_NU=!GjsM9}epWuXF>@kwgd>QfoJT&*U&-8v zW1D82vz${N?JwxRBl&h`;t$0fCO|QV-A`E1%CIe5pXD>q7TF<~-)3iuf0RJ&nc}Bt zex5yv?+yF?vHV$O@K~j1RaZ(2t}tzg`_(1dmk#?JuLu5LONv&w^%cT>}{QKq-wSts7-Pn+c(bn*vU35}^2KZi$FOPU~Wi%r7hf^YB0 zEx(`9+$-0#YpsuubXh)%cVwdzqGDU|3Qwbs)MZSOch)lYx(Ggn1doLerFiCCje9`oRgVR^Byro(9&uDp}5_GVo~Uq)9% zN#P>*>(NPcK>-QY_goh-EZ<9(u0XK*ofUB7nw)SF@rO@Q^*!SKRR zS<`$c-6WtMTbK1>OE6f-AGmTO{YCj)6#e13E=>M+GsCzvd(4?*sl445F1-gn;BtJW zC>-ITMh|NVPH+(+D|UPGa)L+Xg4bK0KeQGE_Bq77dk2jiy9$GQ2sWhEG0G}I0R6&9 zssk5N=$K%I6`&DoF~uGHmosZJ-!zs#=QDo~7)aU2AB&%s{4Q1~#y1x}f1`s>n0=fc zx|iN~<3d-<=p++PJMme2*!=m)aFuSV`N?Q-RIcJSu1RRrzR=}7ZxfBcv*$4JsAf%Q zJXgz!vDWvd*T2P?!vIxHYP@=(%V<6?n)W(JPQle|2lD6co@iFD1P^+BYm^=ENf$IX z(ivl3;zZ|sp%O@7B3Z@(Lj(_f>_mU>M;bA2(GlPhaC-A<2e;t7Mh7!5r&lzstY}1t z^R)OS6?4?ot}2 z-ptNY5~i*m4>fOnY#&3?-46<4xXw_1)s&0HDDgoq(xFYm6EWg$fSsds zt(=w0ZSnnkrc`#ufR1>#GN2>LI)&YOm8biYlQam&`ZJifxp0ElEagRIjW}42Yv!E7 zJh}UYE_hK3o~!3@mBZmZ8ktvP%THIGOEvwpUMgh%qSGQ?8f$R|uiuzBkuxG6#Bo2G zp$ckbZ=FAXwuC3ntq~8)cJfSJNw7GJ=lRJcAZa8r`&|6FGME<8m4+?}0tt#zXYWp! z6fo*f=-@D2@ZJ>N=PE;-WQo+WfW$`$z^#NDyx8j-1~2xaY!lvby}+P9y#nvc6Q&Xb zFUL<&UfKt<+eU*g8z|FoF=GQexP!rqJ^nT5NNP2)`mZLK38U^~vld9|zb}qi!`hMa zKlfftpRL)uaM;mu5;7n%2cHk`8(cj9g>zTXAzN!wnRETjkUz(!5CZ-qYYln4&c+zw zB;dZry53fxb#i!&I$&>KXO*-4+(0@EWi@L&>5C}3q4$kmt^EXgwD@wrk^Q9eIMVfx zYJ8;U$%)aQM*0)tais2_kiQK_yBl4|6Iylm6yTxXbCNxJq7?Q5p~?{dSm*Gs!U0> z)qMGCs9K3qpQE_>m%Sb_?KWuL#4@#QJS>d}`ShXhXys%ZorZi7_GXIIe7r&zloz=e zrL!^VawPC-Zy>F9@NY-oUgym5;))im=qN#}rf!o#lXxe5URa3sFCIc->ihb1h*1(B z|5xU|(>u!-29rX|C(}WKT7-KAn|B0+k5TV@*A&+20)A3F{nr%a9=@%I^tB!L`2V$4 zU(5Kskan;szo(+#HVt#l361>u_5V8l7cPaG?|Jm?ztP@YAS*;}*gAO(3IBRear_U+ z2}LYg5lhQ<2uOz`-oC$!s@yBW8jCr|r>hF;E*JpvgRp>P0u&7~MUfI{7v8cY5%6yL8WH)8OO-2VL7%*B@75+0qaP{kh=0w8(jML&H%TS>aCC z<3h8ewGVs02H1!bZys+n2~R$qa+o*xmDA$xcKW{)s*Uo84)no!IlLG$dhs^n>2evP z)ZZcdZ|gU+gk5s>A8P4F9)sJWKA*qSn{5@q=O6Poa?4W4VHuqb+Use%XBm0(OyuOk zAkWNkyP3@C~Pa*%10-WYaCJ?8N% z30sR$SVBiDM=l!fna^te(KyPeWj*S_VKBpxaLF|h5<$;rsf$w>d~qS#M^fS&=!uLqyC&Kvy6J}TAm z<4QZ3H?ch05g(yG2QuK3;C;P{z_v?xdo~AIW$}jiH(!=s52}&2m z&c+Aaio3}1nw++cD;@KGv}rqMl`oTcN)Y+% zG8d*J(WuUJ!7=Ij)qJIV`l-EVlb`S1?&P!2molNUC6tU6yf14^4(|m!?(xTJ=Z7<} z^m1m*Cfzmf_N0fSurzXY1~a;eQhKAhaaK}qp_mra5Ax=-EQt+?>@zsDb@`+MbE8CL z`Q!zTc^~8x-_AL~#C$CMy2Vh?00V;yxgt0J$_BEhTQ`wSsu!y8>8|>cQGlyxyw9+M zC#wl}?x+y;8CHYI_QSZ--oeL4bsnPK+Q=tfoyC9*hZBe1lrHmBaod=8-j$jd&9hL8 zwGR%SUrb!Bdxey^5Z*b*Mgc+D1uRyMi2KIZboT@V_PQ_3>K|qQn9xng4r}j^S-1`o z?{#B%?lT*ATkCvK$#9ebZ6U56N)K0InO7!DT}1nuxP7>2mCfp}cJHOKv^eq2YBY?S z#HbdPxOa90ZB}3Oup%}kh}pFZS#rs%adUAocrO6L-l9EvWO;>*Ip@S;EMyAyAC%E| z+`)6_n)qH7ON$5JEGKA)Xw2%2gJ%#p=l2TvaB+Ckofy@*iT0i$f4Gq0#|9F((MjEk{-rl`3^(g*J5MT53TaWxTN0fR9}pTDy*%7ellLH zS^XOcmrGPCK~Ot>ENks+#Qmr`3uUa zp#vH=Z<9Dl!YG$Dra0dg?b`<8qov^PJI@Glp%&(k3&FDS<@-&qw2eV>6E3)=wPJId zkF4@FxfpJGq*YoligeDsR33V3@t{qqlK;Puw09or z614m=6KHv*Img3et9&jl4y0>ZEtYTl?$QcH<2s&m>u^c!9#>zagDSus0U1cc4B%YR z{K<%r{TY!6Z|Zfv|5P8Y`f!QxSk@b>!i#U^Ce+|cd_{W|fJ)PtBu=_vlsmZxrJh0+ zDxc)$_Sa@QdzZAIPt0J9U+|vQ={hCTz-AmnQL?!je2Ir>r&?kamTyH$4a!+B^%ZL2 z{p40&e@#Y-lW5;QcOcL>%THHz_pmHsLC*`4VC}TtMfvppB0b$PT|9}kSbAG2eW65nF! zn_;&>RTKFs5f3p_Kbf9Sx``_=C{*D$7=xJUOY#cljw(H7deI1hz4i<3DcVS8rH1s#(fCr+@N_e+x_4 zZEz9WfHsbqFpyWC^V90-*Nx%md9RyHC-oobeqAu!<~b4zvCL@}cTE=gEbkg~hZK~& z676D8-oQIOkevJurVXjYw+!(ffMZb&lzi63Vs3T~19_#4+0aBRmRrsu*~B#j>+CAp zCtXB{VgXZz1@qNK)q$^I#<=Nne^fVN9861)?`1!86E=9je38trH>evO3Pb+3M69G2!0>=)3Mr_b{G-xufF!z*;I`;_G7!~8gUbYr{1Qp3Cb=idB2l1m$-uKN*Yf zJ#Y>xE=Yy_T&~jgTVVO>MWdMns9Oy?Ox^%=VA>6f~NN{ zyKB;IP2qah7;w#vlDYv^xCrzPb5ZISl(9h1+|nF;3MlMLMx8m0bqA{@=E!W4-}>JXF|dz?~c&xY%2J|$}N7niT*Vf zE)iw(PbR7q)kvVI#yRjfTVA#dtg%2hz#99C+l7n2!93Y`al%yoqWLUmVpJkKOKQs< zh$Ef)Z?J+Smw1VGno`EMl^Gb{Kh5in%Nl{8MZ09dya5?E`((`Bh<9$VF^%uSu-?55 zc{0k%1+=At?~&hxiM#@b6B}iCzXQ6=;9K(Z(G`D1%Fe(R3=_<>{s*u#2m(6;dJq3a znFZh!sMDpJAfopzrt2HG5>S=mT%XK3j-JLGFi1MW!Ac;t1`zjeoC2~)rIU(-GHMvh zn{l{E7<^Y@-Jqv%90EA*bOJ)=n4_o$A4N69L-GN~JwP?M_@MwXqOdggv0R0i>;_fO zRlVps#1_{70q>-fw`lhuPz}~!}ljY^R8?{^~QDM-hjy&GX(nz zR0Z|HBE$KN!S@TS8$#-zOkzSP%l{m8;-o%8z%wR)ZNSXa)TBGtKwdt>5!o}LoA?o? z59Wq4zWjcFH84L%sp&cB#eIf^j;glvliw?GILqtx#dPI?y#)szaNT{&?4q&wEsIYk zWvWRf?xJ0ciIbriH3G!L(%6I>D1~{33yT3#nYAWgP#>xd9&zOR)ujBQY{KXpnEc8o zRX7&xkYygCQ9hq7DC_-nbQxHG`yCI%ujc!3A(S@}H^2@g0j$4QxmDvSL;dFl2N>!q z;a~?Nu;|Ur%3Iq9R{NBpf2;k}gp0T6ocnb4kAAQns*)ZCLtcF^JqlZ3t7?@W&PD5O zyJ%D=Dca%imFAe`RK;8o*Kh<{i`v1q%SI0%Ud=IPiO06slN+>KT z4N?+HcdOKjuyo2Uf?!>x7Far@ky20*DG?Nv1r`<%5akkrN?I6zf!DbAcZTo#dH*^4 z)SNkU=JY%}PYDl%G#axgis{!pXE|aTA1WWb~@9^$pryprhQ5*C@L!|-8fnzCct%IWv8|oW?W(ROmXdeN zI*Qce(W4ZXa~I zs;ib0AzqKu>1Z?-)urTzL4J2@NusNdEl~)QkBYD*E-M*(+MXJQ@I11EXGWEXIZa5{Q%xW=Ip5> zwbPGt?q;w=q#ps6CI+oxc?5We!CFazwbH;wCDcMZomrN7fIjm9%r_+u&PkHJA>Tnu zJ2jzqb*FjJ@4`2jPZpRQ{oC)_+&J({#yFzrNbq-CorvNiAeN?c2cWy6l+JKx2n%x} zmuk_lRwk_q0(wo^XZ5c?Z75|nC$ZcrM*b}9R#~Q~5M|kAX`APa4@t65E3KJ}`Vq7i zs|*T|(wqQVOZNw@m5*`$YU|e#4+hL4tJ=4^`zS74kWG1!>Dj+MrWqNUQ1F_fjaQLr ztSh<&Mz^n{0vVbJ6i1wugY4tORpDYLSpY29rBZozN!YLO`1$i!w|V|^@J#>q2%pWy zRQ|h8r)+iR?8mjR3-;hRg-wt@KJ5ZZ+d)N2YnV3k9`^AF&IZ?ZJ#_~mEj5jQR%fG` ze34_?$4|1)1S~o)p9?qmrhMd*eZiu0iPya?v0P_08!%0-16xDUw;KmWx~C;$s2@e+ zUg&fuiiLnzbWqE)zA>TObr`v1Y2=bskV`IdPPeTE^A#l7y9#z!7tB|w9E3U!W{EaB z8;#_PcW0`6CHwTi(C~f+Lt{Ga03tMh9t=8euk(bhU;Vq7{|a7*6`a$l7OiszV^idy z=7ja-;5Z1z<{~mS$cjbQBdXmXX2bfbfl-f_20tW!8Aac2=Hps9HC8~hx2~CqS^Tih z#y#>y!4HlaSduj3Lzu2eYVUqv2d5GuIuuyFs{vSTN#+GsCx1gkL!478*K`Tu2!{Pu z9HGAzM;M|wLIxPkDFoKB@2%s6oz%23${HloW~_C^f|F?wZd1Z)ii+f(Tot~_jAXMg zROgN4(&M&E?8qm1_bjNVJxt{+bopxAwdVg_CPe z%|OmnI?LA?pLXL>bMZy?wCh~d7vP1k5w*f7mx9QLei7Kr7y*iRM*zi4vIubElAheX z{TL!6=X5&D+#oO5zhtm~yr*3b*qVY=fbBCx3Bsn+n%F(6ax|Wy0F<;V($`g8Cy{a(d#-6BFy+Yh$5WzZD0m{ zj3IhmiUZU;R2&~)zEZujoYESG z6VeaL1aiuX)xz~DPu?(p^>4?wnn1*jB!kxmT&JXBO;Bmdcx@1*=VizzV?gM*6#y}% zp}NSbIR-BnSdt2Znb?a2qX!9w8WIf4NF*3(AQ&>R%mg9ek}^amJ5IZ_9f6RU za1yrIDinJ!WBj3}zBsbu3MuAVS%!X33Q7(VfMPE3YGIfsPKbMwEr7+as1DTwefx1& zr}==)u0YXwtC+VXoFEYpL1>@|qT*^$amu==S+8mQ8?e{TU6!CEU?gUC>57?Uy2?St zz*b&Hk|G*>qRaQ{zV6U4@nX*PgN!GMy&^y~_9X;sDeGEDuTKNf&JgaXq0|T}1)Cso zm~)onj@U(f#X2bVbBXWHV2{eI)jZExM=SG*y@m+I)a|gE8rD|=BA@t!KzEuMSi0SK zuo=s4#^c&f-tuM+Nxk8saZ@_o>PWXiDoP{W?8hNyWCOC(3m{zMI_5NCTN?z5lKpH! zy`ie8gxP$VM5^vSnAV)ec{ggAu(WM;#wSS9v=mg^hXrK_8DK%xMv(<=Dz5gGWUv7{ zb}NI(ffqp;!m+e_X~L%|C_@lx?G4K*%h2hIL8`3`5pkjzh=!UnGDb~#NVQjxYM%jr zqT5*ewpgx-R((^Fo=x}+6ILSjT*jDaGp@c6DFy^5t^%J)bBBS?-h2$($%Mf?NQrFi zV15zB7fB70j2EJBnL6D{A5;%u7muY~;-b#V|CEuOGaA>x`dUIxGp`IXhuefu+pnV# z(z}84kV>#%JNB!MnCi@3DO$p9Ox=2$4*cmw_zU81jQ9wX~d6R$s`&a1M^# zPyopVH5qULUa(bEy}iL~&O$WDUPd(QTL8^#`iN#BM01xZ&^#}gHe;+S7MCUuYLYw! z**}!-)U=%D?b346c5ISSMsu>cx7##jx7n-2UOm8!eOdDsT<#U%GMxjsEN_Uotm<$& z?e+l?&`fJ5ZKwGIX(cH;PTW0FJQELo(Ci}i#K443_l}q=kQE+eOedO@gBk7F4Z@*@ zghNUv59zlv(r+Fphltt%M|K1{wH-~2y+}9-X)v7^(wfn0^&l)L2B|Vr(}P!hgnfCC zdf!3nJ?WGV6+Z_x^_&_zwF6GxER4fRy(Xe@uXMW2W8M~Xk`2wK5_?hA0=!6@U0+8w zu$qoX>g@^qP$${~KYaBVVGqlAT`O(Wj$#*lGS87vPL#goMf`evWWiG<4uckwzRLZS z*+sM(*T^9Wp%mdJN)bRTfOQAcE~g1+QI>g@woSE~yf94>fvSb*cgM%}1+7?%jvS=k zc1XS1LF(iqsvz2kQ~<=8vq-%`EL?Nu)sT97Gg0pUsTy*Ba3JB5JrBU4sC}vlDzc0` zWcI=|jRO#?Lz-MFTSpjNR|QsFvXGP6@2o$Xla;}u-_J`BkmyID1`-a_E#c^YhC&Sx z4oHKmpkM*U0tyyFavuBD_34+i(pkEgywS*QfJKT;BFQL>3c4q{f_Ei#nX5q#%L7Iq zif!p2Yo(wm1L-91>hAlv^Mbk+i_EkA+h6)pAwK#HH5{FDhsU+BRsAjhLV)xI-0QB# zb@h-6?t%P2ISJRw=g>GR7?=4BaAPLqW%gtAM-bIzbVM}>g`G~Bm6|HnM;_EWogJAZ zl#8Xc%0cRgh*s{jg; z6fQ(|Db-=)NlWYP6h^rI@`n$$h za}B>MoIEAl?b27!xeo2xfZ^_APfrDd%hGL%VT6>lf8$zza;Ry$xZ8b_(tS~YVk4LC zD2!f3x7kaeejZU9ll;2-xnOCK%!jGA6?#Xk(tX7N8 zn52(?+=DNNy6Q8;kDtvH9dpcwW1EGk#*VDdVK#fQ>`ewnd>&nkafa0q2BMp6w?y5# z7Nx%zz5B`I^Z3PK1rGe}qLzWaGqrQrHj4Lp+SH7%p8;jMv64f{YaNQ(ZPeZrf{N?y zqGpq^gNdwMsYuJhwx4d>H`{#LNRTJN4ETIck* zF_$kzq3L4JZLjrh7GBCH$OrY(zhRwH4w`kIW9-JQYzWfi*}rEC2ReVXlXA0mQa;fP z*|>rF0eP5=%P#rDt__uI!>;;$IfbjP4SrP0pR}X6m7ju2X~oL0Z;_jcQ{xF_-VJtv zyDznDt^mtmvL##WX_r!Wh{*rkzf1pdPT@|svN7J{tNbJlv(AfP-&c0vg`D$ux`kEA z2{lbazusgubSEaQxN$Li`7H`zr;Q+A26jU&Y~DFWxR|p!ubN0-q@-Q?mhz+qd>vWZ ztTUdWoYwfwlB{V~cN!d-tp@Sef05r`lPO2v6#w_^{r8h$&NXyfN!`>XCsA4YXwlrC zmnDObnZg4)%^5pJi)_pI+G^ROC8fq+^eAO}Nb}cAXCG0Lkh_$P;eSF>`p(X}|2s+L zaAklBe@cMLchZ07UvBDep3vaVZOE|$`(p$&NH5w;9T30Btb}=Hlvrgr8_ps;8mOe z+;)^J(rSq=|1T+AU2LD>HGt(op zh&s@Jx+z}uKCftB>*#utL%UxcLol~|f-W~ysy1lqcQKhalf}v&14BC8tg6CT`EJT_ z@1|Q+7!Pu8XP0v$(C*+Gav0Zfn1CGNI;SRce4Pt`Rr%#p*u8}Gxr6RybWC*g>9ylw zm8v9GzCfq?-Shz&Os_eoW38j6aY~e&n=CC#KHn}w_>GgWx^es$dAMMNN$?9#b2Lal*CL9Es_v$MnD|_3g(*vp0*j8s34avEYV+p3o*Bh)J*ar_>p;%ZeS$5 ze3k`!d6V6MY@sPY9#0jKb5o(+!Zj2!>=4kxOb#ywVB($yrF)_~ATR*rYrXKd)i& zF_`PcjMenHd+z!}n8^_m2uJ`Dkbrd^1f-Jg9n|lWsHj#YC321dVhQt%_~_QyOyj>N zm?YVxGz{1K^ttEmUELUyYw@(>IBWAYRbx6_FhyYN$Qm8lBVdGp6#`}wcUoifam@wC(OZii@_@<;4=_VU0Cvi`^hk(My5R`pBdyy6HH_t)VXu9(@wN`Oey z1-y;ild;7M>=lLha~vo0ZdEb38cy;kU3LztznZYLB!!uLLfV~#bs_XoFq#BYHzWEU zk22$`kPs=53{s-vF&9f7rI$XHCLZ+Y?7*a4EU}?VHHeijRNl>m7L9ADVgv&)yA-e4 z=H`IfT2)n5@J7V*pj+k`f=6%f+4Qb}X}Zj@reu7eOMS^6@zE+rwfHQMj|~2KeUNGh zJOHsIw=+BeQ)WV=Z2|e^J3M?E``8NXK@k)Sf$mW{A{6Z3AivW3SA_DmUrV$hM%_TJ3eiY?+n$QN^tEw*Z=Fnv2Co<;A5x?7=OlW~_ zH31>4sv7t1@^Fht^hGuJ@F+c2TnVp9#s|Foh@Lo3?Azl})LApjZv8wc-9h-DN*`*g z=G_dq_)pHPIggT;e<>pM{VXE&^?0}lbe~5%(9Z1KWuY2HZ%0qg979jOT#?jlwY;p6 z($2$uGkadcJc37Q53!oGzeBavZ|k{YS@hgvV%8P`F#|xrPK`&tv-MSsUF8=W!zZAl z^=as+IbXA(DyjHQ^T-~LxRO&#t}oDS_s(d&4dENJSXwV8NXHOeYTPaz_$qrk?^0_+cJJM1@mcu8MZ=l8aN3iR|&jb~ffUWD}? z^q8~pnQqJJeyoi;Ti+IXq|N-|1#>U050Sh>2s5=KF}f|bsHf7sZ-9VHGv{2BV_OYU zv!x#dSwp}G0Z_kdyheBjm-?IhBwfN@wGZ>VkAb0Mv?4>dpbLiXM{ETcy6s+-j#|bk zLh{_ZC3-jk)4F<+kqd#YfCJ`);xHbB9*lW}n37i@+;gh)7E^jzi*$rJFbl4bbBz~l zXku&@s2}!aooZO3@LtFIJrZ;(ZvU2-@)snP^)RVW2~QLRgkX|t%p&%FIXHaKL$L~w z*;fL%jJPlB1ORk$HX}H5fVU!PARe%qlf}6 z7eM_6buQ!xAOZI_$Z19Fz@0W`lv%@7MpDB`B_-u*Zva&YTm@i_gBvRd6yV;!-~ zNQ=MI){$&HGQnK*z+At|*kc}{q}1rk78*=80MJ~3?&koQHm7@di-0hmCY2BQATan3fhXTqI#+F~nELuJh5(?v4` zKn zW`~-MUUSrQ$sF(N)kXaTpf2X(N&g@H%=XS{7RU(V$=1^JkzfNg*k1B4usg=SqJwj?xZElVq_u=1*xt$F#Z6 z6Hf6V(A_oi&ZKzkjyY@k8IL*ps#g;!ksL{7Ske(WHwW5%1kTE(*RLngT6cGTYwIW! zY^Y=W!QBYp;^T9y7p4y+;NXG@3R3uI<@3||7qFPgXC#iK>gze)Me*O-V#|!*2a|aT zcPsD?O~&@6YeW!*Gaw38jaqyaS$o)4gVz<4O0Hu`vglABKr_vlp_n@llJE>9!Nj9? zAizArK*=irtOA{J6Lkny;aYN*HX`pJYKBiLbC>F$MYrxFa2Dt6K>H#b^zqa`N@wRQ z=?E1_#4`w51zS_Hwj^R60@i0B5z;P%p4>yrb_`Cn%sOuaFa>f&d)&(`C2kw1>=cfB z)6a+UHBYyvb z+yC6^!vaVL;m5Qw^h~rwzP;XVZff?z@MBoyDY3r)$msqRxQWVvDivT0Z8cDg3QS34|44S4ZH2}>KR~=O~_2=v* zPO|Pj?f6#P_#y_x!+6fDN}`{4F__GUTB#s#2u;K`HkjK!y`Yc~vb<}p3}4L^n=x9u?~y6U4rbd|EU3o@O)*kZ^TxV)~a1|=$b)i@rZ z_pYSRm3VZ~F>x+*vvT7{Sp6Eg_fsf>Q@_eqRGD8C@qL1yCu znT=pLq32F|SJ*Tie++UGh+y;6=NCwr1WM9Z|9b?4hLJp zT#Ui63GO0}F~5MJ83e*3ovN}m;;Hu$X=f3UzmPF8*|m59P*qz4OY|)fu&p9JXOi@i zS}^Wm{>xydP;N5;X2b|wi7zr!klloaKz7r09bPX&{9fZmW@vyh_vDJ&zC75Q^(}S<>%$K!O9n)`zLMYw;*XngD-tj*q?rIq&#{ zrDL6=sxkhgljU)xh-I12Q<%ntyY5KoKSOqMJ7IOf025945#-p^h=<^!cn?Z)!V)?6 zy1<1i&hC}W9h&h=PWQ0tC%26+dJ4ylHYG?Z9Jo9@#Gwo^#&M<5 zs}OYj&_Pks_E8ii@h9MJKr=$Fmhbv9Q9i5w2Re!?fP|*O%8VD#L z05&Fs3>j+(SvD#DoizP8ZUdwy0(1Q)Lo8jtPLRa0*)8WSfdet6f^nv zq67jy2w;(!O}7AkWTWCp$ht6?EK5h9RsiAxsMprH;R&ajYz<8)saHun zp#0-)}&EA3;K@3nUPW~5oeEwhAgw{F2pM-8_a76`~9P>0(evUeeo zX{WWB-GY^bpfemI4o7v(U5Z=Q%Dy`LxyRfv6I!YtW3KLMq(NYJi-EyRPJ$iDxVqtT zUc1{G&QJ&vno|eOp)}%&N+Y+x)$D&xqyE|*H`A2x%#Hrsqs$(BLo8&#a0ux;gr4yH zXmz%Bxal;c_#WV9JZVv2re^5Fi$u)zTMQPc2Y8eXpzhA0Ub5rw+?h76sxJSreM>M> zXsC$|0>h}^VR@XLh&$0p;?AAe?3_1ujOXX~A8TsIySf0Fat2_6DEo#04=&_A8`cyB zo_9J@0mz|;v|TL2mBdNQ(Bm=G@~)HcgqI25X-7CdjS!r6VwRd2&)HSI;>3P}@{`i1 znkSBdR8=|)AT=xKNtsM(D$kkX){9LMgkE}aH$X=$5OE+Fb{X4xamnfYi)v^{T$qGw z=JB%fxQuMZGaP1rUu@!~*F1W$$$~#K<`>=3Bf5}q#iX3qM?C8~jDTfT06rC!MZjPn zuytf!)etTHa20XQ3dgS57?$pjjv)%2B(WtK zwA}eI{y|72z_1WSCbW<_aQBH*xnXd#FCDy_SE!Y>B7Bz zCEoD^DZTOT@EI)e!gt>yHLgo8&s&k)pD>>FNf_~s@!P~3R!H+=*kd!@aNO(q&HIEG z*hpTg{j|OdbXG!NnKxcVKx81`%=tO%8#{GllXN8CE^3nOp7gHv`55huCLLAnF6~S6 zPPv=vPv`v1Ph}P8vQXp-7~jV$UiywFQslba^1KPj=m}$>ud9;kkoqUykn)#e*3nxm zy7X-W0wO!r9~h-v?Yrlln3qC`SNoZIhpqS}?B>3(0Kc54b8o-{YM&&J;{DDD%-QW% zVSWuDs{{va_Xs?tR5Ycrc~bAq*HfoPg0K9!8+Gvh*@FSUKVr*28uYLG|9k4JwYUG5 z>rTIyzD~&f+g!GX7AMnD8Og(@BIvbrovbxgEk(VXV3V2Rrk+_e?Z|_}bc~Zj8S80*Z+(M{;?-q3hFW>cUF%|V7876k8GlgEN8s5X zvDxtKMJgO7P6H*fJvGqLjxvkfFEV{>Qo7-i+_}pQsbmQ&`w~{6oaNfV#a+$|(*`=6 zdS`e`p7~@wiu29vE&M?KktXrd(U96Y)rER>@FyAVkf7PNNc>q~u*7>l$?U`;Wa892J!MY$Nt{4*rcDE%g%K(vVX{mSTCwtn@8B?*e1Zg&ijn_|H{y27c)6kHMR zU2dVo4-A?NfjTL3QFRIyc=sQSO=Fn(3pwQN91;&%?rO;j9Q-r1JtjA5NTNbk`-1eC z2Yg#^bx6%iDoai_HkIfyy6C^r6q)!;IO6Cy{ib50-2GU@+%@(%%NdJuqBHLrKF(3M zZ+5wwl6V@JEBra<%MjO|f7(i>AMj4YPMh+H!Ffe#*L;>T zQ)LCJn>nzzsf_5H*&MH5Up9{e#I%Ct_{j7xyCb~D=^^+{h5Jkp2Jy*kkwar&&opP< zS-wZP7`=>L;jhaH9l~OkeO825L5W!da}|c%!}b*>32>{!KSwzrig1o;P6c{F4xDBN zbb;QBBf#C1FQCL&W#Fzacdp2PMen}lvI^y{4!ILe#j&HLoxQi@4|XIndWV#irCkdQ z@|lAEdkgc1hqgCL@qzxP0kx4lpcegiKrLWHcd$8)vTy!#@)8#t3;LBLN;G{ee{gze zDB~~Y*Pod*k-=zxzF8(=$Z!a(&P7jPgG2-%Cd}D4$_;cR5RZ*k8;kFXA*=N&K*yzw zgdycm5<&$Aa~8^SzdEjzx$-(nZz@n@v&&pE*Hk;#TWxQD?w_`ARFI9$M^=ZIVmIA; zmHV{YINevVasU0;GNRM>HL1>q4@>eO4;KSL9{4pudK2G(Jix9cY%8oP*og}2kN0HT81^)7%%)U84IKa=(MdgA4o;n_^K%Zz~MA z8H+pFNA5ss>fX0EJo*3BNNaXhGTBnDX?YY>Q@5YP+riZZaW$#Y;V zJt+2W7s?Jt{62rpRW!h!FjZiHL+qV|4?b)kmEu#NP9JXEZ!v8N?41TFlhr9j^y&h= z={GxcIRwSR0?1A?jJRd6IXjWfNdW5rA5I3Fqb#X?A@|+4CE-H&jyIPwAxkdMNpdPt zfY`g1490@Kc%y};FevEH=L!O0*eJm#&mk;Xm~TR~5I>R`$pTvJtI!FX)5%c0bZOyW z)fF54J9N!Bv|BsKhp$bI-9tOleUB80Go2auh{Qo}5X52s@(oJj{Xwwmo7uy#&p&}r zK9GE<^VG$2M7NcXris|jxZaiYbYu!+^^4}<{Ri+D9itvwh}+WyS4)eCJA-I zhYb?TTr<~qb)L|rD=e2$@V9eCeg&Rk;q%-baeSPGKC+xkiT^T~09t=o8Dr6rw1CHnh53-ZW*AA! z7r+?+a}AZ9B1D411P<-{Cwv`;vLfgHiF zx!l+&N%52Sa$GO3xIZKb9n(foW8lkj3YwGiG`S#h*eGy?vt@flEu`v+v1mOJTTxXR zMPZ#0*2Elz6_F^kqydG}@@zt1D)%|dArlTk%3xE1klSBSV~lZnQmkV<(96kIo=P}% zuFF*7B%W&x!&Xiu76G z$_}u&tBDqOQLXDd)Err%Ha6Ogy(eK<3rVZwIa?@bsu@;QYD6Y(Jllpj$Y$|2Ag5IF zZeshTF6G4qarPS;kttQf>kZi&g2b}JRT5E-i4{-*fh9*+&9#=YTMrAuU@;V1uP>Ek`8RlA{h71^AOh!}EUk;B>Y>|Na| zqMpJWWU+Wlm2+ek@4=2%KI!n{eg!$>|5;vnhT7rLQNraUgZ|`S)P|UhWcW{%K~hziPSA}e3qB+m_OIdFV4yVi+pfU zR^ustCz&oeXH^xEC@hFZEiByu3rJ9`6vy;JPMflY?Zdp`vHBv6@~1jSt$6Bw7z`o( zygn)xv!dlXtZ`T!nl*Bw1sXMM9>=luh=9I%)vLA~sKcJZWUA6*%wJ}^@9*hjy-0@#WI@UJp`LF>NM!!$gdOXDi{uFSaIuyD zMWB#C0$(ZSddq_k{ex}A=Mw~R~|^PYFc&}k*|FgCgm>b5W%#?xtBeDA8p2A;|_7h zqG`)$Q_eTo?zmya@Fzre+Z31wADL_Q4KBA_ws3oL48AKuTL)Ry*mwf08Iw(a4k5ppBA;lMsliJX<}p{iP&)h^Na0yyBWNc*UjjkoCp0cit#tP?yu1vVQGG z*@Fej9@e=adsuMUsBFoaJ5iKywO-Vl3q1KED})|B&WPYV6p{}!GyWR~IC~7;kg3eyymFQfIBGuNZ`1^k9f^@oW?$ zoxTKa?b~m?4QRh03AY-RKRbOm!g9~`E-{F{Si&T;RP((&2 ztHHf>BPJanR-DvPazI2^*pF;=FYm6epIu3YKGAft);&(oTsi2^w!&P^;A1Z{ax_D= z(js-;TLV@`gaOvDy5_7t8vS~2!waENYu6w`OEKaw$*!aT{(%7}21EyhM%rB2<_r0v z$Y99<1(iP3zlB^LV6%_h33!$iBM70BVeuBi6*40-yb*!T@T2@mD)edCVwLe^?M&am z3qWSK1HKGhJ0sP1ez~N!Tn76|78>oUv7T(0k)kK~jg;86#1;V^?jO8iIHl1|Orf=1)7fZ$0kG58CK1ffRO-rX-d(( zRXoD4EmvbzS6Ie+sNs#y^x#mg`l_z7*FGCKjh!~TobNuiu4W8hyd0d{xwgyQIlw@+ zPr+}n_*)t0?Of@=$tY5n{pB+EF{?FpcM9C3X%FUVD7^Z%yRr818CYjVgwmgDIl&JJzT9)BKFPfrmYegY! zsz(Ws{yRbw{V2pQpyBEyI{}$>)boMRO`)Or)-&yoW5Met-!$@0%i6g?i<`+aMb`<*+B|MDx!M^S|)I6RO zc6|(-+(`4v?NvQYl+L?xg zLO0^&_Z#ME(4#xw?JbqHK<&%+11^P=H3(zI8Xl?daU8%_u9woGlMP*|k~WhKS>fr& zC;{g=RCWPx3#S|#V5V|IHYH$+&c|^fkv#Fz2=Tqp)p2=4Mf#|U=_i#DGcRZpx7`e+ z{KU&cNJa~%9ME*Gd=x;!^bZXQ(_`%2bjF{jw znB<2dK3n4Vcf>_>)^$qKX0$=&a~Tq}v$4esR?tw_Z2$>?flyr@5VEO{VDluC_4XLq@3x-4%u)8Y+BZE%M9L zbMy1oco^N@j*b$*cVT{E55jjTO9K5EU0g-N${`W459k3eCk;Q3zr`RX{nK9(cQxNyThWEOb{b0(v~ zap}Ld%zDQaB>DKGNMP$V=AIw&J0tz&lMx+%=B7pwE6R&@T9j6G)QT{u1fj zu0;blNegDxmA#n<%kpzNuz(@UWhezIn9CSIqP}=Mxelb8<4O~d(yDAoaJ|~uK%F~L zJbVvq{CQENfMFK}kfigFC6STG!rMI|XVrcVmS~pRK{4yehN8WU&1Bd`^_qgRnQr=7 zQ>$VgQI5JMm?rj2+EHLKk0{?wkR=fvLw1-n5uNRmV2ZUO;XhQDp+#y_CQSY%fu&QF zf9i@~c3U~Zl!ndwk&%t}$G3wRYKU|wBQXq{KQnEqY z6^VAcg-7~f?_0oEI==&ifIR~5$-MJu>d1X|?K&W+B4MXH%>Jb}izGx}1=R*o6l(~3 z+zy4!v&n%%YONU)jl?HDNfNCPc{H+SXXOf4qXfe3uV#v_4N$qYW&b|UG1ctm9KiC5 z!Gi{Qj?WVf@`qsrC}r3@$F#Zlzp1q^lRAnKIeQoIh@1=QvrPY6SLS23PVgXmfm)nv z*xrKtnSGIt$lI`AqTL^43szo>S-A&=j-33{W&X?z56gB2?-H6?xPK+3u* z@F8IzeG8q0p-*hDv%#q~IU0gJYwgBafa#sZZy zdFqe<*>VSFw3R}J?>TcM>_(q%kN9_8TY*p+PFZcBVwNVrA&bOQKu8vBu-1CyE|5ck zy?=lpyB&(MTY~O~q#kRJMzjmQ57HWt#|n;1v(!)RFrZPi|9=5YGAK%EG}7#lusAB zkpGTH4AxvgjFK~HQG-X4@|jm2(~%1@TD7_qf)GW(G7Q_Ty`&VV zSw)J$e4A*~d6vsA2a;>lqXJC$h7UZ{%2QXEp=dY9UwfQfK~rb5E9PN{CHJgp4gOp^ zH)n0+5@143sj38=LW{hZ5)F|w8*a9dVx9-Wr=6aZ%{Z2kYbkCyANJI zn~A75N-4)}1mwUjTYytF1>Rp9ov>6jHi`=9-A5~wo6!9GK%YFqChhr2@Yw$v7NCYz z)G7I(p)lc}u?gtZCq-MnD1Sz^XBKDs6omXZMkZ9tcFmA2Pg5jdeLMQ`k!I1fYRyT= za-&O)m@6ArdFMjpa>Yp%E@nyp+L)i-KM;qTXT?Mdk{SYJWdgN~Du~ZE6eqJa{k3{- zoskF?d6GE8qZ!G7LRpJtiCer2sZ3#qIF-y_A{UHp9a3T11W zXz{9APO{GE^df)}d2 z_dAhR26b0K_b()Yy;IqmN?KfzO75+sJpQR1O?j=y|E#n+!D|mU@&Jr>9_SjluzsSPy0gmHvs;I;-(qS(>a>hV;6eN zCiSPo;?EA2a3~yFkkoFRO*mI%axmcZ}eGXI@^6=9t`({{3iyEXV#fy0NS z*qm?W&)YtW!J#frzo|bC_xng}?mKle0}fA)kn@Y{WZvKohYMm4ijREEyHZ~6aN}$0 z-MM|&=VV_}gmROA_IZ9HIbV0^T2YqfNlTTot|h&ysAc>3sIsnRwz2C=-s_CWM=v-x zKi^+pf3SAq*9Y^C6L*IWeJxI}%}pmAw&=<~3DP*1m_(Oy>pJ|S+hl9SX+d2OEWGRlAPi5iPaKeqAZq)}8m zW3RaJe_h|MrXsvZAU*OY6?k2mb z(pLK3OX{ZGZM~Y7P0Mq4!+&kg)sYhRz38^swQ3d4VKE*+HukCxSULu-gKlH zlYz%yW-}ogi|$G%?{*U1-Re%X7sXkabM*fDca?m?Vzrwsjkoc~!-X#e21GMM2ivkJ zJ8~+LgErBAI7dagS90Y6~35}jbIY%kHkk0=lp36(7(W@wjFXZ+vSFSU$3V%D zJ2ifm}K~H-i@pHamhPgv#+1L zJI-FO;K##C>aT$jHFH!PvNbghyq*{m!)FS;la zkJS=50h{LT_j}74aux#EpnU7LBNeys` zR^a!*>VAji(z3zx=%zHrnY@_e4Kl08pMT4iT@CkmymydtCFaGpP$s1=<^_M~AmwJv z3)pRZ#p~lewaJ{7fRFdM>bpMCB>#TK3c%%X*R0`*|XJicUgo^V^4WGI>$szHHFmzroCGt?S+#mQ# zi`?d&eMSXxcT4xtI8rG>oMdsU+at>2GDFfDUz^J1Tw9(D5KKF}6JZ4`Er%jZ;vl;< zu40o@kJ5#+una5R$BSGfcjdozt{jkpmyD`~yeBzdi`Q|nSmwW9yTCd-)*IbGbN zrUKu+w)r5G-ket?V7sQ@Ob#<=|Ea>iIxy7wimeta!ErxD(@02V7nRK*o&RRMp_e3d zCpzy>a!Zo*qpYA6zYyo$fV8%(S5?q!EX-;Jb% z|Ce+~HS3-VMy4aa{vs$4p>AU==zrUXvyPrDtEnwN|oy1~mJeRoa z)bHp2QdRmocjfUXog2RPW1E}5X3BgI-aGTb;NEwKcMpCZVqvy@ zc(&cI;!K!I*SI$J*VkSDhOC>OYrQ>eM7wM!taISm()?Lx2lnxSMU}^Y@m*9^^(L;K8{668dEuoRN6W+|~u1MJ_u*J(L_Mm96#3i*k| zckh35mA?yoY})(ZpR9ZLo(uhMt9dgJ^=9myZbRM8KlO1@fv3}c>79L5`j@8`Gb-rX z%IV;*|Fw@*yjriRxH3{aGd?>P^Za$bTDZepO*>!E=ivW>Ewc1w99G|jL}-SO?0)wC zHw74@U&waiDSs57EPj(@2=syqMlgPKyE(x}L@jnm(|R`!mR zPN@Z66XzSj)_q**Z`1S7dTvnppsts7ZjSWa`GPI&)r)8N*+nx8t6L#qAUQ$G`l8DFlbN3l@DUbd0 zJu*3X=E8Hex|*900wW5;RX0~(C;!*tes}LJoa~7QNjD?Fvezs;bdhXP+wMeGGW-Gx9?E`Ekh?c1*iI!)KTLUZ$R~&?+=! z2Dz_xuT`J?9^Dyab*-V0nm<%+b@s}E?Zugm%C?%h=?QAlPrpBSvY%y&O{e?!Uw-4u z^8bbW)Gzxhx|wB!lw|1rw5{z{LdNu~!s1ztn>DNRol$2ai-Ils`*o&&KYA$Fx{X@$ z-xS_I;BmQzz{l6`HkOm_mpA(zip!mT6>({?NQrzPtFY$k-w@};+>g7O6C4$&Qlzn2 zKl**9y&#TS8hyaxRs7}i_}K0p!40ljVJZvi_kHfzUf~anjy@%tX6Aglr+Z;3=J%4j zn8v?LmAZ#2UPaqdKTHi=J)-&6YTD*LA)_Et{58ouS+};J8RyZ z2(#~0x_8@S#h@snk>=U>;^9;W^{tThR8@QE;}G5|KV!LI&e8RE-}eU#S%_Z|SC&pb zFcE0HUroy3&FuxP-LJLol@MR_hJURo)(Af`>NGO`F(^1^=R9vlM2+eHQS}x;bu_`E zFoX~+KyZiP?(V_e-QC?C5;WMs-GaNjySwYb-CYmxpYPsRf4x_=J1aHaJ3TYqGuu7W z%{dKygCfQ_I00u>QPiX#U-(4gmpufs zDG%OQ5WuGO)2ng(vpsfYdt{BL->rAW)0Z_i5&0R*o{L}g_SDe!gI{jo(1@RKMTXbd z**0jxY+{1g(e_0hl9r438J6O4+d_-uPuoJzBuQTfUuBi$maX`u-1B1QrF_~DCM7)E z8RRwYc4bOZ9rsvz~3wX3bWPPw8xj z19=9p)iKcuI7tlT&ov|RL;7}^eVtYO*e8ABnH_8UydHcAJIa5MUx>y`&FE1g&-ZUE z_)kAYlGu!5Ic}+Lt4F{Qj*B=UOTM4G&oblT^kuCP!N>aHHDT7jlt~G8>?_ebY{L?j z5*<7U!mOXmv%BFZ94ucP#>jEqP`7GnV9J+` zkGbwz=_M@v=@XV^nB+u3Br^Fh=eZ$?yhC7hMjVQ4W7dXIXUzP*RCeuf*qr5JKJ{J+ zfV-wRtJH2O);S)z$C33Y0`eR%>y&n@H7f^{pVwKOiyu359+z(I+*-O1eOv$u+C=6U zP7x-oGu~Fd%`bktu%44bGxF#SRbPef=As5d7fGM}io?1>tTe~k$FlHdDj9DcgFy#E z1F5WQoK^9}B<5Rc)Bx{Gf4sK}sK+UKY%e0U4-9PyJo6pq*ibT>uLtRTIvq0U=_rSZ zB|IKh+-Ql`I{-R54~0uh>aCfXBxfrKbCq@8S->!S{_f6lD0&^89DaGiFA4^kX|nudyppZsycSMCVlDl?>Kd;?fx^jJHec4_aWHgdAl>5W*-5{sAX)3h-7-v zFSA3CtDMEs4iQV`3pw2ZWtX{>C;tH z;6DLk;@G-m)z#WBkEb$WdPb(9dM5&72NTi_wy6+32PO?~#R}t6TsF;iqZn~=ql0b3 zO?z}!_6`C3!%rzo=Jc#s!Xa|wbFA`C9Wam6PX*JaO&Pa!hnGlmmq_uKgh`i0P%xu# zA31OHmkkw*0+|G+@>k*pMdb)#9S;qzWwAc&Dp4@yKAykMPj1n(2e`p5 z7-2HdeFFzvk)hN49TIRG)ev`-eaiY)xR7$vr&QGV+CqxITIB8+U$xP2P^3{Gqu!7@ zI~sv`a(4872;G#6b{>J7&BR2{I*pM3?o_svjFt(NyoipJ0%}fx3%hg=lc6;UWwcUM z(O`pVp8amXVePXlV~g<1dw!@%DM#=?G-YReRhyHb3tg(6s7sPe@ap*TW3l3qd*1eG zF(ISBWhL0DmZRzF*7eF@0?nd@k(D5&VI;+46b9d;@Zg2Ru7hW0W0akq{>|0R6>8a% zGmM_or*Fne7-6pNEm^5S1*Uec;_~=-KHYZDFtc07iyghW zzXI0X5@io&-mY)m3Pzq!!(*vuiTG?*o`u3LsX1xGC({%oV%Cx8VGLLU>3J!;`w8=V zOAE;f9z{6*``VL(1p!Xx*&SkMAEUE(>lS-o1-$k#E!sA6+&*omQ0fFR4dL8cr@Z7| zZx+t{(k@>lR@Lu(T9RQ>4d*a2+q%5O6s#6&XQ(Ud^1As}qe8xCS!zr;&PP->&^E0@ z`Avj=Y}^^(_I0qPi)byE#r!;DORPkdeueFl&-vVJx=E!$`&N`jdF}T4Oo>HP-_uJl z?CR>~F){F}&OJsEk-kaf_sY20))z7-`u4>`D0Wj zi_JAN(5|(&SWHnLjOZB)dG%4p)9oU!fDWp7`*d@iY@FrBOV97F$MaXbe%`H6ttvGXW<2t&M{;dIuvuTXLZf-36m12H|QN8HQo3x#qX74L4y<&OsN6j00Ku#S*x(_Ogl|sY?9>Z3@Y2OqYg&?Ey@L^=FfN z(rdSyco`aR0`vWTYyF5#VQ;RK<4VPhQDv2+(%@-wYrLFxJMg13R zJ34h)2hfB~Hpp8BN%kifxWBs+jtBSJR7@okwG4A>!ip{4P$XQZPGUE>Ydafe7a}K> zE?AT<=1PzZ%nNR;YmyuMbC8qM)At=Osa92hrO+@Dsbg%vob;5Sh(0+KDR z5}hT+$M+H=?&c=zA8gF;&=1olRm>G$fCeGOUPi8p%Mfmp(eh)O80uBSIr)~X5m36R>A(47xc&~ny9FHC=&-2#nNW?1WU)t}wG38Pz= zoGTnUY*$@SBg(CKYyr?OdX6z7vYRPU#rY=X8y*5{nAJfyi>^T`xAn)lJw6C{WIB(` zI5Ckm|EFKh$jzwe?YPPw$4s- zLEXT2NQ#_@_u!m}c{%QbL)QfJbU}H8m)O{lqBu86ziR_`bk{e_ih3&tcL|vGK{})p9Bf z-MebXhjf9AZzyYD*hhUxM?KXeWG|I=~Ao%0cGV8B%3WG%i zcctK;42BCL>yOV?g+WgI=C^)v<-W&eou1P46774>+MI~OMW-BXKkn=E_0$FozLkx& zFLx~Ff7qJTI4XQ;Fg@4pHO0KTdpQ{+3p53|&M(EXT=@?5WY*05WS1XRY8#${8qtUq zq-B!UmWyC!j|4Gf^uh;yX*e3*gnGLKEqVGTc9Mo-14_JDR}==Fe`DBQLA@T#3XEm1 z-Ckrl11>*Ec#1^ss50DDeG6Je-byuje1ECy6PY2b^?!O;x4rHK&?GN5=R_bz`O|Rl zeH0t>3%hdV;vFgCnSRV38eS9|!#xJ9Zg;(^+>{Y?pB?fnxa;BCBlY^zB>(W1m&@Uj zSsN7ND5!o`wQUObH9OCA`Cdg4^O@!3iZ`kg$40{k#Ls$HrJLoaoE?=IB8Uj+kl!RY zE;gplYGMF37kS>R)WR{mtJ+fipR;5{VK5Y2xBve+^r_0%)&`ThOnQ>Olw+rF0;XZf zDy@p7M*4)JJv3B85TpKc@RqMWnarV{FH<_cSxaCk4vfLP6^xsBHT<@8WhVPl*q=sz z*=%g;(5)^f!YpfZ(G8p>@bjJRaX??>@2j}3BRV}_tYaLZ-c>(^h?*58svv>JD*j@spMfv1g)q7jnJ5l;lcm0{g)Q zTy|BQ42yGc+o}Vs^L=+zZd6xUori5cRQVJJ4(U5A!0aa4J+bCS+d20?Gi{ZgC3WtH z@;bn4sphd@CD9%A&v#Xj{}#C5$|{?yYYKznEAKMD+5Y{27$blPi=y6&-Jjw5q@8RP#CN*Pdp zfQ9ch_VnLmdt8f7aK|(LmZ-}J&tTN}1#$R^>N6BP!^SqO1^qSQIGFqoga`BJmFb0M ztolEYGp!BHhBpa2oZOIXn=YE-c9*pbik@UdAI_K=B!7KEiy?yCLb*}5P7BxIWRBFg znpPvgOu=g8!N}s)C6)goteq@p)1nm-d-D`ZdPA2AKuqco<2iwKjy85zBWh;ozCa<^edlX`dM==`Wv0;+D;X?O>VXA5`BB{L;v*(+5Vn=px7)%ijq{dShxBQZ`hFDIOpXVA(F}Meq5uPSs6_#nIYi9SbldzoA_cZ4b zMoafI_x|DMA52k*8i|vOgX-h}_U?H+yqt*)@Wd;B`>^zDJOE=n?Mi2I^YX4O^=k517FZB*>M5jpU31qmHz( zl{8=$W?dI0yqtucync>(%3qfhx3p3X3#jMj0V6!tPdMIR^$**9n%b@J>;`+q$S5#>f#T|$}%Cs$d0#H25;0A@_1myc=2VC9Y( z+C$3|4_bwn94Eg%PXE7fU^HOy!XnJtP~09%+Tf};mXN+Y3I?XHQF6}!%zQNwlRL!7 zBrWMD1k6mWr(P~qY71qX4da2k7q5G8a;S2~2L4_~=-a++o%$B}JZAlr0EFJG&8C&W1CF=+QNpqb)>$Q&^^X zs=*;6b)r6!Aa~UJLPPdHN%Furg0@AtDK{}yL)y>~x#5xCz7`9v{&K)BmbfLJ?G;|b zm_4{*LEygdl~&@xUfh!Wf20Rt?xLveW}gp-Fap0uLgSnpFQ}WnIv^fS03A21XA z$o(cGVd((?w<$R8CL3uKtFXzhe9{KCyw}u`b67cC(CX?5tQ?icqo}O@*qYgYl7X1u zV}#$iSp(t3@ADmyDrgaE^Hv^E?G@=7{ULsPXH{u(Sz{8j)F8#-_H4k(+1k-a&f3}8 z4n=vE`?HkHCnrxMSq1y1K}tpJ*`p%Qaoh7{)gQIsEY_Xv!C?;RKxFaxYH;;_si(fa|Y#m=kZgw?_Gi11pzzfYJ=Cl#L)Y z(`7trFp*=IlFDg5%G+fumC=#Ta0t?K8CLKe+{FhJBPs|S&S zR`y5P)mK8ihjP(u@eG-~HLY`XUrCJ|!MwS$(Z}o42*KOc=;M+INb9z{N?*MQ z$<26QC*|QapB^a4FxVRBQ2FGq@-0eZ+=uk5Eq{M}hs^2g>dx7Gn%|CeC#Qf|X*SC- z`Ry0bV#BCQ3nljcGmmPodaIVm3tuW@czWKB9LPmK7flN6uy0oa@wc6@be~H3q~4An zX6Ip^P{(I~+-BZ42Il#G$^7$4Z;9vs%55(BIOJC@Nqmf<_TCrt$3vg?4>t5>s?ha-mpo9woz*KdBoc55{0YXiO?oZ0sCD(-Oy;wNg=d%StT! z@mMVz*1fwWOUYpBbTS@#x0jZ2=y#9ZY9Y?|*!wz~u&&A$+=dFk<7L0`@|@CNwld#k3+!JRmiURp9+t%w-h#`}Px z{}H9zer;rqTaYDVkKTt}_mDHG^@``!Nxgk<*RMOcFm1kYUhC#?2*#3IX0%?m$V%}y z@K$6MJ+?)>()V0o03+-ObY23GWTYMeyoXn2)G-J6;3seMSgwSbkq z)Y+S>^L{g6U4_T}Hv3ZfliZk$66NMU<+E|w8~~?w6mMTqmy{ZHj?Vx}Nxit5E=t$_ zjxQ+7(BD4U{!eGXdDv*)+=U5da{ILsSGbb@D6&zPsS6wb z82;`0qZdaLbr|PxDkt+H`;ZD5;N>TfreMn_cDY2L!;pkU!sxfr#Q41-;^!xC*nPcy zC$&4_yb%-)0M51^e0)1ZDq1(G7r!kOgd+&R16g`MZLHq;@Yr&ytYGuC7!54rl6o`94uKuRYaSOuRQg9WUqbx=(O>%G@kE(5rG zacsXki#Z)a%4L6QSp6K9TJHR*XVlJ7*e$VKhv7Tzu9Y#n@$gV|cGh^7veKAKjg@Za z_#S*k^yCJ5?Q_LTRp#dO&eF zoJhw9*Ecixmv0rpuX7f|Gc*}CA3x4plLxnGQy0VS=&&5#3?FsJL%R6ey7Acq+>h6y zS=`L;hFUEGKb)TkFN~6G0Vh5DZQS-LlgvI0+OoMDnig(=xrPa)ddF%8%BRkJbF}-~ zeGmLn*^D=x>4cZB^V?+-95636t3k+TgdokpbLi1-DxgJ?Y7Py7ZH}S6@B1sUAbBm+ zH67xEoV}wC89`CIEG4TA<#&9*Xm_4B4Ve9E=k>`bQc9M<_V#d;WcmL636!G29Iz=K zt-AL9mu$9}TWkPpmS<$43iAs`ncW6#ntVrfVVf1DLM{jo%(A;Cn4ba)zF?aLKHX!! zdxpZB2U?rgrH+~ZYFC+>J^QDBT&ph*kIpf6Y^a$6eiWt(htc-6!$%X)8#4{r@s^#R zRfG@SsjaElN*SyOjydfSho5KB)6dZ=lrk9!;L5T18HoD!J_(Mf!&#(v|y$ z#|@`!Pyl}D(6)=oxR3iI_Hf=4eju(^eI6L!5v%W9L1XsxXa0C*t&F(s1ZIK_9xkkUZT^zSrSvHs{umCYtPmuyC8sl)s)p_Em3`FJ7-6^QQa5<8z)F>Wo*$WH8ZV{|G9Xd z4%s6YTpOyabaSx+AuXWC>8E5pdbu%i{nAbdKZaDxpUjHhp0B=%zp~6jfo6VHGP3sf z;_|AGO*qyjt6q#xTszW~&ZVU7m=Kh1q@IEO zo*_~(fv#5y7ghrBQ>-TScdoYX*Jg){DY*xAR~B5@v;JTnp~|=6l13(S46$=F|6 z>iMbVFVau_(pCkUYBax%dS`;y6jKZ;e_kdZ$aDji{_J#3oNs>?UySeN)6_LhUt~Z? zRgsCFbEV_t2X+0%O@M%u$bu{XsiP0YP@P{i@0Y-K5`8Hz`SXOW>K~xU38BP9G5Ifm zV;5B;uVtHKh(L*%%6fz8H%Z?16K`>HS0@?Sc1i%x(Pr5l-;wHKX`7ncSs#yoJLx~} zlGDy!M%yCcD@9E>V~mlor6wZVPOApAZAOiQID*g36wU8X4@)^R+;Kr=hF>f42$VN7j3(QwA>T zKEtwAlYrP{OL%3ViD#rif?O)v(U!`B$y>%O=hj(H8aN&ifSJ-Z_=Dc=`!l;*GR(%p zrx>t{(QY6LMwI+GHVHDtnHBx_R!j`5Q1cp1Z^!MjY8u}WQ%gMN&BUKCStb-}$qYXh zQPZ$7K~yK#af6FyNbPQI`kcZO?>FBs8cFsbAX4Qm1ZBJT%2l7WmJUyzjft``%CeNz z^^oe@Oq#ZaMQYOMbJyyxryJUZiT_5z?HUJ~% zf%_WVd*0XzkzsZb#TP;G%M7Lnp=Fn9r5(MmQ$}d}{-JNGJ@Ky1@yyEfgYu8QmZP$T zc+hM?lI)Z89KYD9e(66cihdoO&XYr*|sup>mdhF91m=9=5VFBqA%ipXTwRfBvCdNSRM3m?{J{97&lmztA{W5UrY6Sp0#* zFe-&lfv8rrl=Xz3j1(YI(-R7VNf%~4iLIiw(q2YS&r0fNW!&l3#?c*gn2MOVaMt7l zD)k-ck<7(W)mTDvx+q?U5Z+YLaeh(zWU*# zHxOZ);S}}y9={$2;a5fV_K-hQbB&Cxk{Dtm%mjhwppi#%bXdFBQWJz;>QBaCr%j%+ zf(V2mbZH+xC3nAq>jVu!X$d zAD8vgh|I%=hX~m9`b=axyN+v2OiRD~yMg+;30T+;pK}e2w}R%{iL6#J>Y^J!bL>u~ z?s^w5Erk3UDW`04#4es3Kn@HL16CpcO83X?9(0UZt3{-{=vXl)mBlRqknc*klM<(O8W{c}8h*S+bV1G~h zi&RVudchL~3PdXbhx?DLzIW0x_=>lVlExjiX#GyDT9&$gJc}lS4;Lklhm}GN`P-%y zPc`r?k)@6SihhsDc`5iZeDUT=K@ReJs}ou%%F_}0GW_>LMR~M!R?><@DgAGve@Y@n zo&h`&ihmlFWsSX=aSkXDn!L7;6NlLX^-y-8!rzq1lxIUd63UQ*XBV>LXIpa`EU0y# z8O=(pY)*E_#Nbzd%9eR;MyP~~Y3w-u@TPxHsihRTXJp(Qv~w$4cAKx?sn;;K18&Orw%Ft}{$=a9nt&`E9@s)jZwD1?<0pxh;+)hZrvthJ34WW?V z<(tsLE4ndTirb^wr|bj_rXe41B&=*{zwTQ6{;}Ra{^mwzOcHt_cZGNX4nZA^qV!Ab zs{ew=Nl|Ta@k_#t$>v2>D8lzRfmPS;Bgbh*ST<~~QBo4$_oma2WbKA9_fLRN{~__` zYF(8J9%@4T;5ol;2g+5YYSR7z%2svBKLb99C^GR%{1lgR4@0R3ue7;3Kz5-ax`T6d zxuD3IC80;JwsSA1XGq_qcHQN`a7d%gsJEIwuPMF7 z2JTGRHl%+&f2>+-X0A;pblUO|n!{y|S9pI?4dW3*=)ieHWT0R|g)GWJw!}epg!p<` zk%h>~UXaj=?XYq;0b}f_yY2jE66SiXkO`v#MT;iXW#61@Rw5u|6=#NT?#8VfksHQ&)nM_cGc2uYwR%kS7|F>N7`EG^j(EX;rLPfu(&}(zE{)x3{a1iGP;8G)fwn`P;&a8Yb0*>UzsUT?_;FURnVk34F44)}+4T*x zZm3sqj`)Z*bNWi$oR&HQfPFlBtf}qoP+AHu4t~DKq`wN;gcQ6` z!z4ht(a@bv3K7C6Le=3p?j(WwH8&%kCNi;hQr8T61jB+k&v)2Ow5)g=Bgr)Uk(xGS zYM8aMxg_dmVmOVd|wJ?d7+qf4T3C01Ia#ghq@fpszT2oC?IJW#PNuv zB#JA~GT4h9{;curensx8;%y?frSf%){9N8Pap#E1a2(Gpw$Rt+$HrRxVN?lBJ^_Ms z#Oj|CA{D=jL$0XQCFA*2@u{UY2cWBWmo)uD24Wg7hfL~rY)8X54X=*!zoVGZ6%s4BaB5x1Pw)#;^zN;nx2#Q#Co zY{&72F9v)HNZrQROni&aV|LLW{0u+PkOXO(WZx9qJ`3M+2M$F!^zDpy{0}Wb|Irfr z7-Tz9{Z5Tn$2r7th}wY)Os!t0ig-k}oA|b=2}2s4cE{jH1qcwhIf{OH-K*Q-HnllU zdy*;(Fg4*|y2xdADFcF*S5jy9DwsdtpKY<%8S;?X%{AH`FHqRbq4-@3z*%^*b~F_L zq}mnC-5$Oi70C@H%mH*(?@rOHJuGF+F7_8^CfopWKn3%%nMME2v>4~%T@G5;+kd1M zSWaYW-1OIi;KPY*CIVhvI5wzWMuzCrFDxsneLClL*)hX_=2Us;>{p*FG9}M{e`1|c z1;G?Msw_O>ty&YR7d(Hh@8kd?P+Q-4C&TAx87oKQa^fm4OzI-KAKkzO<0?#BJ6dy! zU2I!B{w2ycmlf(#oL|Vt<@hAi@d@`M?o!oj4ekt!s^^^5_VU&$_4+nV%#t``aV_Io zuJLq7*BCbPh58iJXk)qbU(ajYjm&SPFyLOZPA|w(I=up|Q10EJE-`&SpHCx;cln^f z6D&o;7IL0aOMJLK8+4UeD(}?{G^^+~li(SR`)jm7m>s_kK0$`q$_Qi52N@cUIK{k7 z1q>v!_kGs>2%PZ?FAq3vG7Q|VU+a>u$1YcTezVh7DC%#9v;{`D_%{budv_RR+M;~( zq+@7z(|)0A4&e9%)iC|Maw>|EEAGH!-q&L(IQD9adS-|#mncPQY1r}VKV*Rm$-&3H za+Dm*rusb{HC`M@kbU`c-c7vlO8uEdgmbp{sGw!8_Xlx3Ml;R@_s=?_V{%>&@wiHU znm1)M2?OgsWw|Iow4&*_Pv2kv@)3WV>D5_1)9#T|FX@sVKSvRgD|Ts*S~?SWv$<>5 zA-Yh91qllwUa`5$=pi~2A7P<&(YcPJXf1P!5oPo0o@F!26ZQ7_-B=vM1ZES~H${zl zI7)%8UUMM_YL1K=qiu?I7R{;8ZrHO2XEX-c3}MzigzP=JMH_N)33PRYerw_i6^`(! z(vUO8r7=VD&zu_d$0&ARvPl`NJ+gWSQHHl9$Ll~QrymgbwE4ZYpO^9>EO4@UPScs- zK=cpUBc-9j>>ZZD*c8N}!~?f-6=_H!lpLyZkdV)`}L~)|}mDNPHzBaUdNsWTL2@=sN zcA_QP?oOZ1*SR=wr_BtZR~+QmyrkiZJow;Hs?gyYyf9-VkV&pt9dXC>8?weU7U&s` zyKW_uAi1Q`hOKATGKiqNt<1lpQ};*%?#9>bXhdCONm=LxPw`xe9acpCI1W%Mfuf)j zG9t#}==w_l>yIp&n|K^f>?Y2=QZkzxkdjC8y3G~Q_2P)rK4Yi(_bfN_rcqObmxTfX{1f;22FzTAz+?Pbm2p{CUVEunS2LFQfe^UFfb}ei7G$z_&3gl*3 zmw2IMwCx+CML_=?AdhU2ZpmshVQ(nVukX*&gg1`=IV%oB6rus|pk zf+D)^Cd|;64NRO_Ta_BvYLTPmFSexC)48gY1%6cY=yN#Le*=xI78UUf?$DgE55B}Y z+XR_AdD76=1SOW|8vfR!`pw{PW)P%a^hRHkFbYk-fO zxB4^v972z%`2(nXYS|Om0%&7qZ)k-ict_~ASV>=3N#La8MHmig#wGCN?8+P&YVydK z`EyYHJ#+%D5yAuQP>*a0?nV#2T(Qr{VXeF`gsv9XS}5fpC@}-C0S>{4zEpWORon7F z7|$Oh2D|gkE*D)Jua2)HG0efpl(cu75Z8A0B;t~$C9KVr{T|QXAZ;n<48&8hN4ZE; z!Wnjw2NWz{gL}HeG75YqK4@_=mwhnF?te$Joz3>CJT?*kI~Zd@vgs4r;jvlHwGMF| z1@~UB`Fez7?;2ZO1M6k*(*|bQcU(f&WnjVG{uI^wi{(+#Mk3?IL7$#lzu2tbVS*3>%ERL8W!McAH%h^F2T8Y>#bU z$@8Y%!unymz&BG0V#P{Xd?Lrs#$Qvk_U&uAWQ-E;!eDl0!||$Ma{i9R7w2;WAKKPjaxWhMMQT9cI2)Sh*sHT2$h-N2!H}Dz{7U%Jkij#f{dYEK zOMNKk55w_!GlH&t_55xP!`+Npbo z(_DRwSzEa8^(?zNwfi~58-g!;C8rkfpB1X|j3c4VGrul#lJ;|i2t0Y%dZZ7|18tur zU@mK#uybfRrJiad1U^zk z0`3-ZI%X<#qnUIAuZDGT3-h7^5+?f@oq=&}#?#9<&R5I4_!6AT1sY1>?kggl3F~5=#}9I{Ioeuf}YPL+QW{a7#fBja-g2ZGVez<#Xqs< zjHhZ}@1zpC1EMFv}lh5%HZJHWML@Pnz9l zPBdkE(Py!k9Y8PRz7_A;3*Sy@=B)ZEjxsGt#eF(qi~ZQ;ND_me6gE0glk^jn`)hbq zj>%}$Sdc|PR0KZl)I_MvCee4LI1`+?w|vsDKi0DQKls}Bp1~DhAhOSO<*<5MHjg8z;Mf4GJ zD1OSXkqSdMOZ*K3JL7yb-2d^-^#j#L@*~akFR^onr#eSw8##@0VlH+#{!&J{wP7y38R0wXxv|?AGeING!!L$!NinxTZo|jFU=`&%+buB+aoB$=_Fx>YyLk0 zHfAK>;M?xWq#KZtDl8JHsF?ls%Vt_Y6)JoZ4_|36k&z8ywLu7FzqhHU46~r$V z@x-AcH*bPuAK2`vSUY95nK$(bPbH?77CJozOMwxa&Px?jXOh=f5_#{aqfy)iQ0&~Sk zVDuM1P!#*4&)}JZud?AXIs!k4(zHM9m||~UdZ?+l0qP(o8Xu*MIZou-R{4LrI=H1h z-GwPK08`Ihjt};Dxg|N4+i>B1hui z31GOX{V&BUm2}4cL$P8sJK3i!%fJursmw&gC*noP{bNyPRPH(+7!h+a=Luo(ebps8 zN4R3I9qKNTp$eHZY@~Di?*Gy&p)eI%99I#A@1qzWXR`0!3;IhcG4Rgk4C_yS!zZBx zCkl>ZolxIPQhJZc?RZ5@pA_{^8M7@TzL1dwIXC1@IoFF9GxHpBQ{QNhI5?hZ&NJ}k89HxzBmISZ;$;n(@2z%VMZW#Zpn zaIg)IeAZAr#hNsS42=B2n=98t4;+Y5_11V=ZWl+PkJIA9)6%lcsJrqQySbTTTs4M+ zP8r_@ce=%%VSWgrW{F?*7=ib*s8NZ>*j%m>>(ck5&^i+nM(CL)(n@+M?~c4n?>CWl z)VlCIMjlUDl{wK=Qq@^$OuX)3a&f-dDoW%{e;W;cUL=xK(s^c3KBpqh&kLffIs`;s!8qeHrNKwGcD1>|4~$jqVuE_z}6 zXtWa6niJ&bfXE-3B_g1EJhSC&8B*36(LBawJ)MD0_ue3rLeMQ8NC-7_+_=6_W|D;R!jdlUJp*XFk-;~)5+awU2 zy(_nD(!ko@m+dbDLrEDG4DyXSCf4jJUB3%o43djlQ6_%mp>;8ePPWL=I!ntSXLj;r z-_w^g6|(~2lP(TKUz`g%;#IovF&yF&PYC`0(Z}pWkRsqBhewutsU+?Hd-_uqCa)-9 za4aX7+5k=>&JrHuLDR&`>)BP%|3RYU3fnlilsFYP*yY8GgPB^q8od z-Y@eunh4U9g%e9Wt|1YWlSC22!93lU3D?>A(QH+!e}|LcQC~2_xge`l8Q#e;^S4QUknl%U@l z`uDQ)EsS_U?{x%n8Egy!?zDsw(-ob+RQyEPOvJ2d@Jwf-*R9w_P_v8HDsSO!dttn& zXbHO9(~=9jwF|$@(aZN4C%A-m*MPojFx0W-s2hqATmG^kQ32ySsktRlF)cJ2{xoy- zV1UqF-{4G><0pYT&F_AUnE_OT{M?bZvzj>FWx)0O4n@wpG^mc}!4i^1tRHV9mM#~@7eyy(%%^}}97k5a6 zTV15@y)y5QDF!>Qd zrZKh2J@<~upiYSo@S0pXcvK8WQ)JW&lUnwp{b<`v{+6 zs^=XT$L}ALi@6Pt7CILe#}AOLVloPO#vSBwVm;#B@lM9(AGaA_EJ|H-M(k!%>t`i5 z3J-@~VydRoxIr|ij6Os%pHlWOM9%s*Xr92)6E3ckoK~WvDc+>}3^e?8E8B)Lsw1Q| zlqPEZTA5i^angK)pptgxurm=DZQhbL1UCs9ix+9%)X<~g=EySLZ;N-*lhQTV*G;>} zJ8EMAoYBb3IqOX_I#xY7oA-*l5bm`l8=OR!FVnWVA+b7dSSqt*LEy<@Z%gl>7Dp-?KHHP`Q2ksq6=3(y}?h4brrpaA~MeFJpC67D$MEIs~@HqX^ zs#VGu_?mi!yCc?x1m>3Ff-VeH(W z4jb|+JkNE#p&Lgq_d=cUDH5$lm-{xQ-fA&T8ksT)xh{xk6NpT;6iv>{CB+;lf zCYg%A$}26ZJ3qwb)9IH7pI!SF>*b{{Zt<$p+t?@jYz=&$bCnTL8yV3-s z2(=^?4nn0}%t$RRdnQ;O4dVo&&aEL*5XjzBw4PPKoB<>p_&l?youG5_O|4Wk^U|%P#>=l>p@pqet?QTJEu>}3`$GI^udajP0TKww($>0~IoE8iCh;#A@X~}xZzlIwx-KBN#6+e3*i(0u? zORd9U8-DoKJ*UkW_-q4`R_Qzp)JUkwP!|yjYlZ5c#rMqEvbUP4xMs#^#kF=y-%*cf z$hrPbkK{tA--_*jXtkEbW!91*BSblcL%6M6EK=Xgz|g=8(W4vDdek#H8g+vj+)j>z z_Yc?FJw4;PiNIdY9F$IQh}7ZC%y!3S_tk?p<&pb`J$Fje&kZ|WOH!_u$**hpnxi{y zXY8~a{VHtSlU|Mo@j+e^-+P&?{Q#Ila`sXj=213OJW zbyJHqciB9)?RYDW9A)qiqt@mA>3xs6W~=<#{6|Lb>l0N92kAz?uBBKD;riFNwJ~Tc zU8-_@&%j!Eft-r%aldJ_$wAFY>pwCVRExR6X1BcRJWF`A)AJaaknC8*HoP4@7ss%v z{GNmGj5ln0kRaS~u!jNEp6OaxxapqrIPR<4ng`giLA2Kaw5@ zp6_?rSHpnk4KzWWqbV~twKivyGqzvs2tgBQA!n0fo`vv%P&L?#iZ-3xe>Ki)JRxkf z?L3dqi4lyQD~k)}E*=aFZ>DN_-A=-{+43cl5w{7oI3Oa;NVWA4bk`!|0jSE{?-rN~ z$%wyVR{Svujkvvtf#TM(xymlQq(IpMx!lr2`wm5DT1gyvO%c#A?Q{L$0oIrFwM~~m zRB0xv=CfFgKr;22CSRqH-uY439c3*4ZV}qy!Lb-BLg_oywpTB5F8D zCQ;6bQzlvbmO1Vchux~ntijWS3Vglu1cfg`pU^QT4epSw@&pWGIH{odyjC~~C7Qs| zT^0UH$iYfVPmvzK7fzhKa1cJ{MGnzO%!Zv^HOI| zN2RFv*jWar3pV&F(g-%&5pL9IF?|GP!wJ$}eTornj+^|WpRboo3OTt(Dx;K4KftI- zAEiLbJ`t`)App7pS&m^svF6jQJ{W!KO}J1ywO43bIpEk93D^+@T%=@{0TiK`QzdW_ zV$q|x2gZ+Ch)5S{UfmB9(ES(?#Xvcc_nFTTm;EOZgJ&2`o~~s20H&j}ua(Ht4~$6@ z$TN({Gy8%}UbdX8JxU^?8kiIDlf zh$^+1=In)$S1A1hy};tA*2nv&xomo^#B7SfUK+t(O4yaZ42DcQ%dwQu@0M&>3c=>O zKC(Gqcjy+ME`g!IXgnSchV2EG6a4$X7*5SfT!!S*iC*2}*JoDyX{01ndZJXfh~uqV zNVVX-vX8t8XS~OwyKLl0sl7W2r8VNgR>C=I|6s_hu{eOsllC9dq)8UP&McD3OGg>K z^pK)t`gE(?W%B_%q+m2zv|m(`hX_`f7w)5Zlf7QIccR-am36+2+*Q2MsWNlzR%Areu=gPD$Rz9(jNjKzq`pMA&hb|J{H!!CwEHV3>Rvw{ zUS+{;8v-Uc)(E#y$+YTTzYky`2FCyXimzR}9d@f-7uS-169q#_a3H`|I~HR1&$?qj z)MMnNogIE8F}rLYEJBSqj_JL3)U5`d5%M^Gl4RjbBk5~#8v($zw61@)q<1Zq1I}eL zev!9`H5#8R;rF)$s3x)SiZ9PY5+CyS;MN}b<=XUe-MheR@#IU2rIMP_>#e^oKg`Es4@P(Mj5cx5Xsj$$>zqa*SYnh zIUMGIH+lYIlqO=Z@8AewdX>J!?}h(zmBw8kJybrj6uXT`qo>y^jsg4CC2I8zH<;mEP>wrccaHYk7DsTvAFrbV92xsupK9_N>1!9#wivf zKIi_MO5WZ<9C4uEpOA%Jyv1*ktf0uqZYQ1qrhEMWJBgWcP}GH;6u%ISaoI^+sOZaJ z58cEy6RfL0aAJ6nMeIRFiQFi<8Ymvmxa3S=zvAIF6Av_+IyMc)9UKgFpb-l0gHZ<> zUD#_l7(P;YfxPSVRQ z)ebh3bEr&gKr-27b>qIaxpStBqe-3M6~V}iR1bKws-0!Jw`7{jKdN9(okypPYHuV( zk6WVq{dQM{?|j`??eOy>o#D7KX}!};oSmBB`EIwL6v$byM5KFBFy1FsnEG$RB;8d< z@P}dkTo*qxQ)ezn>I;0d=Pv52=UBF4uiL8YHpNW}lx9wcio5?KiRJYGR%i`2$+I>zu@Q!ls{GksyXSrF!=V%AM?=_E3OlP^NK!vdc z_STbu-e|In)BL(~mfJtYUF~AVJ@8~e%zF1d&P>-rHAc z8IxZC<_kxs$%%5$VN7*%Jz|!Ui8Q^Pn@JJ9PAcgvF)F)JA#FD*sBY-* zV&rrq4UW`MkU!(x$VX0inkn4GZ#GAcvx~!)FN<+>fm-}eBlbM`iaI{oie3=nqGkcWXOiG`VN|`KQGY}vAZ)?Qf z+(>$>P`A~f?xRDg8&fFN0+#Ou~d-CBh-1bonCr12o5@gQmbKZ*Mw zX*PuhX&#Hsp}XK|B8GDXD1}Yf=5VvW=7$Yj=niNsAi~R(8~v&IogP?ky75=sSJ2WB zOS7cfiSb-e3c8KdK0s>tAPFB3_%g}v1JaM|Z19n34pSZ%-pa7PovXWauiYwD2Wtcb z&MuZJnKpX`Kq*#^w-r`7N^!9(#gqLR=My*2p-_od6ivOD%&3P+mHx+-UuOndg;Dvd>zYL7^+1!Gc>|noszPy-wk%)(PgL16S)mkg7T~TzR?bZg17 zJ$L>7`Y%^~BOmp7ZcI`@N$&4{=f{V3KK=OFG4PmTG^Kd!>J>lifAf}W-%6x}+4b%I zYqoBDbnkN~Bv3Mzl>GAizB@wqZs`6fk&=AsAJNSB@7wd=t_QyC-jgU9>qarz6;B+z z{qvvxbKuVj@J2~xZ*F|{xfk#G>AznkQZ`y9YrW&GZMT2_>SO5%l#P+8o?o_XO?c-= zyM9ijtWYM~{QZv|*F3uYzyC;}Y^+SRa`o05KYZ_rr9%>=%DY_DmIrn|wEfM8H#eV@ zAXR}(_10(q-T&CXcE0l01gQ#Ts&%_=+wuIyFN3EhNHtcby63}NZruFTYab0xkShOj zQB$v7w`aq>tFL?GvqY{KC6hhz@Dpt}-SO+~$0SfTTBcfmTkzoTufMW9VIhr`$yVL{ z_0Jz&`S#YAV=?*HoOGLPov+JBCtlevpN>y7>#el8CAe`AD9{8wJ|1j7Crw6)(mVRU zw}^qpc2*RH#`~O7bvPgb5pLBPsQ~=&_XsDQPr999@wxKB{MO&oWQO2ja3U>glu~No zQfcX8BOBb06P>uk@2$4_tGyNnOxEhzQ%|#TVl*cjB3Q7 zDcjjSDJ9m^T=aayRpl))s=Q39ybM)7f+~sjW#g~MjZ4jqYy^54LkKsTTd=bvQ_t5e zHmJndiK|x-TNwoQr~--Ez0`i2W{qdaP#H-2q%ffjTAyY5k>e zG}JMoTLM|7+_F{tmy*}8H{|$$JvW;|#b&tEge%)O z(X$3FN8unOn*Rj5pUti0j`vIArT=1hZ2e~~dwN}~Jo8&B%uhy z?0S#IhD#I^?0z3?<_y{cvA&pHHcz+ur`dEDuH@_9T=rtQAdq*9k;rF?lIgYse5Ras zAQh^T(;?H1)3)NuI^;zy;4?aJ+Z4Lo>|s9mk{IA*z#$p1N+F@cw;Cz@z$yGd6uy># zKhP>Q8IA`4u+=SW)|wBxmFHi>9 zB)ih(MwW|BGBhlvN3G!l(qV`Xl*K0WT%^1f^Dkp`1vER{!5@H^1T=SfIUf9R6TcEf zZbI1C5bHvsh6icq7mUMbAjkyoG?Lm7A+>=>RSdue<+A%{Gc?#haBGk&#ZV^WTYf`0 zA$h5pSGWz_fL2=RFB}bznpiwr5-_)5(Nm+)ZSWZB#wj&(2VO6OXH9IU`@x3z*gzJ| zoihr_Mg8d$4%pOb6}XytCN(}HmaKBTYap>diI zKHx%EgBk8Jf#%b_cKYyy4L;|$wlu_5U1CWO#4Ihb6)eN|7}?^x#=H&hCbroFMH}AD z*^0@M-JI=aB=#dmZwX`#U&$0YxMCy8{XAJy5A}9dwNv-nt-NUoYB{TzMiy+ZRuw_< zY85-QOC-gs)pM`L9&HKlO|Mp2uhiU_)ydhsa4*xPmBBSCE7-m9Wb8i9L}Ir@akvRN z0Ng|xRvZzVL$C%d~ zF|UKu3$JFnv@%#u3nfc2y!V^BI|T6})pYxh;*MbCj$IF~Lu zJ-XM2ha|yz_4Wg)5EvwS?)BUkRSA7DZTuMS1%X?%&WQgi;xjM2N?v#r6_XcUjq$>( z5iexi$8_xAzgii*Mi!`{pW_Ren#G*Ld`?6V=!hbM@8WVI9}0t97H+;^n=!s4FxqGDgT3mSQtYAH8qIkaejKoyUL?kEMkbCr zb1W6(UA7r)%f2AudDKW~S(0qe%aX7?uTP1I_sf!S@Y{_XsRk@d`pZF_S8S`7@t!47 zLtE;ZkCr8|mfzH%mBET6*3ciXHa)wG8R4gl=5$8P=_GUhCp8^1efa(Z?WTavq@h2jKsjF39lFza@t#ys5 zz3Az7-ZgY`dzJ(={!OrJlL!8ePT10*>9ro+>ep>^EETYw8?d<^&7ADeox02KgRlAJ zwtCTLFX69iwbpC+<_)fa5|!;q7{k=i;(CqNZpXXo`?~Bas=r!Kwe#0Tc z^;xSPV;&j$B>UC;@GUR1CG`MVQ~C8G?m5j4OF5nP`nZZ@XWs_rl}LCy?`fu+wVu22 zwKzUJxSLdMLkBxp#p9QbNfRZ(b@A&n(nQd@I~k3~FD4`^`zdzaVUxf`KNtzDNmepz z0M;a9xm}4sJZh|=ck!ObE5evOrA_;vP+mHisd^N})utUEi{jXU3AznI_^ zo?t^6n8T>P2DT2^OHH%09I}ROVM$N>ko{^k@X3H|z?WIJltb2!@3PB7-)FyC4Rj7T zk8XFAL)K~HGS{Njz~=*!J25hBE{Cj~k6ErC`7b{8=EJuGSS@L{Yc=rAfcd1Yy&MCF zPq*Q~``ZER$^V5i$kIMxIz0SWtASkuo~1l(<≧R(AWhkJvAR_=!V=?FOws4Zvr0 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

              5sNKSOT1?0>D~JT>8GDFewcq1+ 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

                WrER6PU?W#%&JRn^^ML1E?rlL7b;iG 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 literal 0 HcmV?d00001 diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go new file mode 100644 index 0000000..cd53350 --- /dev/null +++ b/examples/go/faults/main.go @@ -0,0 +1,202 @@ +package main + +import ( + "bufio" + "context" + "fmt" + "math" + "math/rand" + "os" + "time" + + "github.com/google/uuid" + amqp "github.com/rabbitmq/amqp091-go" + grid "github.com/zaphiro-technologies/protobuf/go/grid/v1" + "google.golang.org/protobuf/proto" +) + +func CheckErr(err error) { + if err != nil { + fmt.Printf("%s ", err) + os.Exit(1) + } +} + +func generateFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.Fault { + description := "Example fault" + + tm := math.Round(float64(time.Now().UnixMilli())/20) * 20 + + fault := grid.Fault{ + Description: &description, + Id: fault_id, + Kind: grid.PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND, + Phases: grid.PhaseCode_PHASE_CODE_ABC, + UpdatedAt: int64(tm), + FaultEventType: event_type, + FaultyEquipmentId: faulty_equipment, + MeasurementTimestamp: &measurement_timestamp, + FaultCurrent: &fault_current, + UsedMeasurementIds: used_measurements, + LocationProbability: location_probability, + ImpactedEquipmentIds: impacted_equipments, + } + + return &fault +} + +func generateLineFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.LineFault { + + fault := generateFault(fault_id, event_type, measurement_timestamp, fault_current, location_probability, used_measurements, impacted_equipments, faulty_equipment) + + length_from_terminal1 := rand.Float32() + length_uncertainty := float32(100.0) + + lineFault := grid.LineFault{Fault: fault, LengthFromTerminal1: &length_from_terminal1, LengthUncertainty: &length_uncertainty} + + return &lineFault +} + +func publishMessage(ch *amqp.Channel, ctx context.Context, header amqp.Table, buf []byte) { + err := ch.PublishWithContext(ctx, + "fault", // exchange + "", // routing key + false, // mandatory + false, + amqp.Publishing{ + Headers: header, + DeliveryMode: amqp.Persistent, + Body: buf, + }) + CheckErr(err) +} + +func main() { + reader := bufio.NewReader(os.Stdin) + // Set log level, not mandatory by default is INFO + // you cn set DEBUG for more information + // stream.SetLevelInfo(logs.DEBUG) + + fmt.Println("Getting started with AMPQ client for RabbitMQ") + fmt.Println("Connecting to RabbitMQ ...") + + // Connect to the broker ( or brokers ) + + conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") + CheckErr(err) + defer conn.Close() + ch, err := conn.Channel() + CheckErr(err) + defer ch.Close() + + err = ch.ExchangeDeclare( + "fault", // name + "headers", // type + true, // durable + false, // auto-deleted + false, // internal + false, // no-wait + nil, // arguments + ) + + ctx := context.Background() + + q, err := ch.QueueDeclare( + "fault-storer", // name + true, // durable + false, // delete when unused + false, // exclusive + false, // no-wait + nil, // arguments + ) + + msgs, err := ch.Consume( + q.Name, // queue + "", // consumer + true, // auto-ack + false, // exclusive + false, // no-local + false, // no-wait + nil, // args + ) + CheckErr(err) + + go func() { + for d := range msgs { + + if d.Headers["type"] == "Fault" { + data := &grid.Fault{} + err := proto.Unmarshal(d.Body, data) + CheckErr(err) + fmt.Printf("Received a fault message: %s, event: %s\n", data.Id, data.FaultEventType) + } + + if d.Headers["type"] == "LineFault" { + data := &grid.LineFault{} + err := proto.Unmarshal(d.Body, data) + CheckErr(err) + fmt.Printf("Received a fault message: %s, event: %s\n", data.Fault.Id, data.Fault.FaultEventType) + } + } + }() + + //send messsages + + fault_id := uuid.Must(uuid.NewRandom()).String() + mt := int64(math.Round(float64(time.Now().UnixMilli())/20) * 20) + fault_current := float32(100000.0) + fault_equipment := new(string) + location_probability := new(float32) + impacted_equipments := []string{"EQ-1", "EQ-2", "EQ-3"} + used_measurements := []*grid.FaultMeasurement{{PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}} + + startFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_STARTED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + + header := amqp.Table{ + "id": fault_id, + "producerId": "FL", + "type": "Fault", + } + buf, _ := proto.Marshal(startFaultEvent) + publishMessage(ch, ctx, header, buf) + + time.Sleep(20 * time.Millisecond) + + endFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_ENDED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + buf, _ = proto.Marshal(endFaultEvent) + publishMessage(ch, ctx, header, buf) + + // first potential location + equipment := "EQ-1" + probability := float32(0.33) + header = amqp.Table{ + "id": fault_id, + "producerId": "FL", + "type": "LineFault", + } + + location := generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + buf, _ = proto.Marshal(location) + publishMessage(ch, ctx, header, buf) + + // second potential location + equipment = "EQ-2" + + location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + buf, _ = proto.Marshal(location) + publishMessage(ch, ctx, header, buf) + + // third potential location + equipment = "EQ-3" + + location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + buf, _ = proto.Marshal(location) + publishMessage(ch, ctx, header, buf) + + fmt.Println("Press any key to stop\n") + _, _ = reader.ReadString('\n') + channelCloseQueue := make(chan *amqp.Error) + ch.NotifyClose(channelCloseQueue) + time.Sleep(200 * time.Millisecond) + CheckErr(err) +} diff --git a/examples/go/go.mod b/examples/go/go.mod index 53d6929..adfa21d 100644 --- a/examples/go/go.mod +++ b/examples/go/go.mod @@ -4,6 +4,7 @@ go 1.22.1 require ( github.com/google/uuid v1.6.0 + github.com/rabbitmq/amqp091-go v1.10.0 github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 ) diff --git a/examples/go/go.sum b/examples/go/go.sum index 84a82d3..e45ded3 100644 --- a/examples/go/go.sum +++ b/examples/go/go.sum @@ -32,6 +32,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw= +github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o= github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 h1:aStxoALHUFdUouWWtG6f82rW0VE6885q2SGLKGOCZ50= github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6/go.mod h1:CDeYQ8E+cC96SWnkmdDc5NVEWjmtRBA9JAQrMG/y+MI= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -43,6 +45,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/zaphiro-technologies/protobuf v0.0.7 h1:77G8EcuMQVdRoxPOxb5WUiLEg8uQkVlAx2GzxwGzCEo= github.com/zaphiro-technologies/protobuf v0.0.7/go.mod h1:/CDMGG5KN/dWrdk0p6BPWKCvRasZYVIAzpamTDRTUQk= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= diff --git a/examples/go/measurements.go b/examples/go/measurements/main.go similarity index 93% rename from examples/go/measurements.go rename to examples/go/measurements/main.go index 1100bbd..5fae202 100644 --- a/examples/go/measurements.go +++ b/examples/go/measurements/main.go @@ -4,6 +4,7 @@ import ( "bufio" "fmt" "math" + "math/rand" "os" "time" @@ -57,10 +58,13 @@ func generateDataID(pmuId int, nMeasures int) map[string]*grid.Data { dataTypeInt = 44 } dataType := grid.DataType(dataTypeInt) + // values are stored as uint64 + value := uint64(math.Float64bits(rand.Float64())) + tm := math.Round(float64(time.Now().UnixMilli())/20) * 20 dataID[id] = &grid.Data{ DataType: dataType, - Value: new(uint64), - MeasuredAt: time.Now().UnixMilli(), + Value: &value, + MeasuredAt: int64(tm), } } return dataID @@ -147,9 +151,9 @@ func main() { "consumer name: %s, measurement_id: %s, measurement_time %d, measurement_type %d, measurement_value %d\n ", consumerContext.Consumer.GetName(), measurement_id, - measurement.DataType, - *measurement.Value, measurement.MeasuredAt, + measurement.DataType.Number(), + *measurement.Value, ) } CheckErr(err) @@ -169,11 +173,12 @@ func main() { // client reconnection or just log defer consumerClose(channelClose) - fmt.Println("Press any key to stop ") + fmt.Println("Press any key to stop\n") _, _ = reader.ReadString('\n') err = consumer.Close() time.Sleep(200 * time.Millisecond) CheckErr(err) + //of course in prod, don't delete the stream :) err = env.DeleteStream(streamName) CheckErr(err) err = env.Close() diff --git a/examples/go/vendor/github.com/golang/snappy/.gitignore b/examples/go/vendor/github.com/golang/snappy/.gitignore new file mode 100644 index 0000000..042091d --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/.gitignore @@ -0,0 +1,16 @@ +cmd/snappytool/snappytool +testdata/bench + +# These explicitly listed benchmark data files are for an obsolete version of +# snappy_test.go. +testdata/alice29.txt +testdata/asyoulik.txt +testdata/fireworks.jpeg +testdata/geo.protodata +testdata/html +testdata/html_x_4 +testdata/kppkn.gtb +testdata/lcet10.txt +testdata/paper-100k.pdf +testdata/plrabn12.txt +testdata/urls.10K diff --git a/examples/go/vendor/github.com/golang/snappy/AUTHORS b/examples/go/vendor/github.com/golang/snappy/AUTHORS new file mode 100644 index 0000000..52ccb5a --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/AUTHORS @@ -0,0 +1,18 @@ +# This is the official list of Snappy-Go authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as +# Name or Organization +# The email address is not required for organizations. + +# Please keep the list sorted. + +Amazon.com, Inc +Damian Gryski +Eric Buth +Google Inc. +Jan Mercl <0xjnml@gmail.com> +Klaus Post +Rodolfo Carvalho +Sebastien Binet diff --git a/examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS b/examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS new file mode 100644 index 0000000..ea6524d --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/CONTRIBUTORS @@ -0,0 +1,41 @@ +# This is the official list of people who can contribute +# (and typically have contributed) code to the Snappy-Go repository. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# The submission process automatically checks to make sure +# that people submitting code are listed in this file (by email address). +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# http://code.google.com/legal/individual-cla-v1.0.html +# http://code.google.com/legal/corporate-cla-v1.0.html +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. + +# Names should be added to this file like so: +# Name + +# Please keep the list sorted. + +Alex Legg +Damian Gryski +Eric Buth +Jan Mercl <0xjnml@gmail.com> +Jonathan Swinney +Kai Backman +Klaus Post +Marc-Antoine Ruel +Nigel Tao +Rob Pike +Rodolfo Carvalho +Russ Cox +Sebastien Binet diff --git a/examples/go/vendor/github.com/golang/snappy/LICENSE b/examples/go/vendor/github.com/golang/snappy/LICENSE new file mode 100644 index 0000000..6050c10 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/golang/snappy/README b/examples/go/vendor/github.com/golang/snappy/README new file mode 100644 index 0000000..cea1287 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/README @@ -0,0 +1,107 @@ +The Snappy compression format in the Go programming language. + +To download and install from source: +$ go get github.com/golang/snappy + +Unless otherwise noted, the Snappy-Go source files are distributed +under the BSD-style license found in the LICENSE file. + + + +Benchmarks. + +The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten +or so files, the same set used by the C++ Snappy code (github.com/google/snappy +and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @ +3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29: + +"go test -test.bench=." + +_UFlat0-8 2.19GB/s ± 0% html +_UFlat1-8 1.41GB/s ± 0% urls +_UFlat2-8 23.5GB/s ± 2% jpg +_UFlat3-8 1.91GB/s ± 0% jpg_200 +_UFlat4-8 14.0GB/s ± 1% pdf +_UFlat5-8 1.97GB/s ± 0% html4 +_UFlat6-8 814MB/s ± 0% txt1 +_UFlat7-8 785MB/s ± 0% txt2 +_UFlat8-8 857MB/s ± 0% txt3 +_UFlat9-8 719MB/s ± 1% txt4 +_UFlat10-8 2.84GB/s ± 0% pb +_UFlat11-8 1.05GB/s ± 0% gaviota + +_ZFlat0-8 1.04GB/s ± 0% html +_ZFlat1-8 534MB/s ± 0% urls +_ZFlat2-8 15.7GB/s ± 1% jpg +_ZFlat3-8 740MB/s ± 3% jpg_200 +_ZFlat4-8 9.20GB/s ± 1% pdf +_ZFlat5-8 991MB/s ± 0% html4 +_ZFlat6-8 379MB/s ± 0% txt1 +_ZFlat7-8 352MB/s ± 0% txt2 +_ZFlat8-8 396MB/s ± 1% txt3 +_ZFlat9-8 327MB/s ± 1% txt4 +_ZFlat10-8 1.33GB/s ± 1% pb +_ZFlat11-8 605MB/s ± 1% gaviota + + + +"go test -test.bench=. -tags=noasm" + +_UFlat0-8 621MB/s ± 2% html +_UFlat1-8 494MB/s ± 1% urls +_UFlat2-8 23.2GB/s ± 1% jpg +_UFlat3-8 1.12GB/s ± 1% jpg_200 +_UFlat4-8 4.35GB/s ± 1% pdf +_UFlat5-8 609MB/s ± 0% html4 +_UFlat6-8 296MB/s ± 0% txt1 +_UFlat7-8 288MB/s ± 0% txt2 +_UFlat8-8 309MB/s ± 1% txt3 +_UFlat9-8 280MB/s ± 1% txt4 +_UFlat10-8 753MB/s ± 0% pb +_UFlat11-8 400MB/s ± 0% gaviota + +_ZFlat0-8 409MB/s ± 1% html +_ZFlat1-8 250MB/s ± 1% urls +_ZFlat2-8 12.3GB/s ± 1% jpg +_ZFlat3-8 132MB/s ± 0% jpg_200 +_ZFlat4-8 2.92GB/s ± 0% pdf +_ZFlat5-8 405MB/s ± 1% html4 +_ZFlat6-8 179MB/s ± 1% txt1 +_ZFlat7-8 170MB/s ± 1% txt2 +_ZFlat8-8 189MB/s ± 1% txt3 +_ZFlat9-8 164MB/s ± 1% txt4 +_ZFlat10-8 479MB/s ± 1% pb +_ZFlat11-8 270MB/s ± 1% gaviota + + + +For comparison (Go's encoded output is byte-for-byte identical to C++'s), here +are the numbers from C++ Snappy's + +make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log + +BM_UFlat/0 2.4GB/s html +BM_UFlat/1 1.4GB/s urls +BM_UFlat/2 21.8GB/s jpg +BM_UFlat/3 1.5GB/s jpg_200 +BM_UFlat/4 13.3GB/s pdf +BM_UFlat/5 2.1GB/s html4 +BM_UFlat/6 1.0GB/s txt1 +BM_UFlat/7 959.4MB/s txt2 +BM_UFlat/8 1.0GB/s txt3 +BM_UFlat/9 864.5MB/s txt4 +BM_UFlat/10 2.9GB/s pb +BM_UFlat/11 1.2GB/s gaviota + +BM_ZFlat/0 944.3MB/s html (22.31 %) +BM_ZFlat/1 501.6MB/s urls (47.78 %) +BM_ZFlat/2 14.3GB/s jpg (99.95 %) +BM_ZFlat/3 538.3MB/s jpg_200 (73.00 %) +BM_ZFlat/4 8.3GB/s pdf (83.30 %) +BM_ZFlat/5 903.5MB/s html4 (22.52 %) +BM_ZFlat/6 336.0MB/s txt1 (57.88 %) +BM_ZFlat/7 312.3MB/s txt2 (61.91 %) +BM_ZFlat/8 353.1MB/s txt3 (54.99 %) +BM_ZFlat/9 289.9MB/s txt4 (66.26 %) +BM_ZFlat/10 1.2GB/s pb (19.68 %) +BM_ZFlat/11 527.4MB/s gaviota (37.72 %) diff --git a/examples/go/vendor/github.com/golang/snappy/decode.go b/examples/go/vendor/github.com/golang/snappy/decode.go new file mode 100644 index 0000000..23c6e26 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode.go @@ -0,0 +1,264 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt reports that the input is invalid. + ErrCorrupt = errors.New("snappy: corrupt input") + // ErrTooLarge reports that the uncompressed length is too large. + ErrTooLarge = errors.New("snappy: decoded block is too large") + // ErrUnsupported reports that the input isn't supported. + ErrUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// DecodedLen returns the length of the decoded block. +func DecodedLen(src []byte) (int, error) { + v, _, err := decodedLen(src) + return v, err +} + +// decodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func decodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrTooLarge + } + return int(v), n, nil +} + +const ( + decodeErrCodeCorrupt = 1 + decodeErrCodeUnsupportedLiteralLength = 2 +) + +// Decode returns the decoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire decoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Decode handles the Snappy block format, not the Snappy stream format. +func Decode(dst, src []byte) ([]byte, error) { + dLen, s, err := decodedLen(src) + if err != nil { + return nil, err + } + if dLen <= len(dst) { + dst = dst[:dLen] + } else { + dst = make([]byte, dLen) + } + switch decode(dst, src[s:]) { + case 0: + return dst, nil + case decodeErrCodeUnsupportedLiteralLength: + return nil, errUnsupportedLiteralLength + } + return nil, ErrCorrupt +} + +// NewReader returns a new Reader that decompresses from r, using the framing +// format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +func NewReader(r io.Reader) *Reader { + return &Reader{ + r: r, + decoded: make([]byte, maxBlockSize), + buf: make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), + } +} + +// Reader is an io.Reader that can read Snappy-compressed bytes. +// +// Reader handles the Snappy stream format, not the Snappy block format. +type Reader struct { + r io.Reader + err error + decoded []byte + buf []byte + // decoded[i:j] contains decoded bytes that have not yet been passed on. + i, j int + readHeader bool +} + +// Reset discards any buffered data, resets all state, and switches the Snappy +// reader to read from r. This permits reusing a Reader rather than allocating +// a new one. +func (r *Reader) Reset(reader io.Reader) { + r.r = reader + r.err = nil + r.i = 0 + r.j = 0 + r.readHeader = false +} + +func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrCorrupt + } + return false + } + return true +} + +func (r *Reader) fill() error { + for r.i >= r.j { + if !r.readFull(r.buf[:4], true) { + return r.err + } + chunkType := r.buf[0] + if !r.readHeader { + if chunkType != chunkTypeStreamIdentifier { + r.err = ErrCorrupt + return r.err + } + r.readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + r.err = ErrUnsupported + return r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[checksumSize:] + + n, err := DecodedLen(buf) + if err != nil { + r.err = err + return r.err + } + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if _, err := Decode(r.decoded, buf); err != nil { + r.err = err + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeUncompressedData: + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:checksumSize] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - checksumSize + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.decoded[:n], false) { + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeStreamIdentifier: + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(magicBody) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.buf[:len(magicBody)], false) { + return r.err + } + for i := 0; i < len(magicBody); i++ { + if r.buf[i] != magicBody[i] { + r.err = ErrCorrupt + return r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + r.err = ErrUnsupported + return r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return r.err + } + } + + return nil +} + +// Read satisfies the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + n := copy(p, r.decoded[r.i:r.j]) + r.i += n + return n, nil +} + +// ReadByte satisfies the io.ByteReader interface. +func (r *Reader) ReadByte() (byte, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + c := r.decoded[r.i] + r.i++ + return c, nil +} diff --git a/examples/go/vendor/github.com/golang/snappy/decode_amd64.s b/examples/go/vendor/github.com/golang/snappy/decode_amd64.s new file mode 100644 index 0000000..e6179f6 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_amd64.s @@ -0,0 +1,490 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - AX scratch +// - BX scratch +// - CX length or x +// - DX offset +// - SI &src[s] +// - DI &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly DI - R8, and len(dst)-d is R10 - DI. +// The s variable is implicitly SI - R11, and len(src)-s is R13 - SI. +TEXT ·decode(SB), NOSPLIT, $48-56 + // Initialize SI, DI and R8-R13. + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, DI + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, SI + MOVQ R11, R13 + ADDQ R12, R13 + +loop: + // for s < len(src) + CMPQ SI, R13 + JEQ end + + // CX = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBLZX (SI), CX + MOVL CX, BX + ANDL $3, BX + CMPL BX, $1 + JAE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + SHRL $2, CX + CMPL CX, $60 + JAE tagLit60Plus + + // case x < 60: + // s++ + INCQ SI + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that CX == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // CX can hold 64 bits, so the increment cannot overflow. + INCQ CX + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // AX = len(dst) - d + // BX = len(src) - s + MOVQ R10, AX + SUBQ DI, AX + MOVQ R13, BX + SUBQ SI, BX + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMPQ CX, $16 + JGT callMemmove + CMPQ AX, $16 + JLT callMemmove + CMPQ BX, $16 + JLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(SI), X0 + MOVOU X0, 0(DI) + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMPQ CX, AX + JGT errCorrupt + CMPQ CX, BX + JGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // DI, SI and CX as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVQ DI, 0(SP) + MOVQ SI, 8(SP) + MOVQ CX, 16(SP) + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, R13 + ADDQ R12, R13 + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADDQ CX, SI + SUBQ $58, SI + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // case x == 60: + CMPL CX, $61 + JEQ tagLit61 + JA tagLit62Plus + + // x = uint32(src[s-1]) + MOVBLZX -1(SI), CX + JMP doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVWLZX -2(SI), CX + JMP doLit + +tagLit62Plus: + CMPL CX, $62 + JA tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVWLZX -3(SI), CX + MOVBLZX -1(SI), BX + SHLL $16, BX + ORL BX, CX + JMP doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVL -4(SI), CX + JMP doLit + +// The code above handles literal tags. +// ---------------------------------------- +// The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADDQ $5, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-5])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVLQZX -4(SI), DX + JMP doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADDQ $3, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-3])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVWQZX -2(SI), DX + JMP doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - BX == src[s] & 0x03 + // - CX == src[s] + CMPQ BX, $2 + JEQ tagCopy2 + JA tagCopy4 + + // case tagCopy1: + // s += 2 + ADDQ $2, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVQ CX, DX + ANDQ $0xe0, DX + SHLQ $3, DX + MOVBQZX -1(SI), BX + ORQ BX, DX + + // length = 4 + int(src[s-2])>>2&0x7 + SHRQ $2, CX + ANDQ $7, CX + ADDQ $4, CX + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - CX == length && CX > 0 + // - DX == offset + + // if offset <= 0 { etc } + CMPQ DX, $0 + JLE errCorrupt + + // if d < offset { etc } + MOVQ DI, BX + SUBQ R8, BX + CMPQ BX, DX + JLT errCorrupt + + // if length > len(dst)-d { etc } + MOVQ R10, BX + SUBQ DI, BX + CMPQ CX, BX + JGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVQ R10, R14 + SUBQ DI, R14 + MOVQ DI, R15 + SUBQ DX, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMPQ CX, $16 + JGT slowForwardCopy + CMPQ DX, $8 + JLT slowForwardCopy + CMPQ R14, $16 + JLT slowForwardCopy + MOVQ 0(R15), AX + MOVQ AX, 0(DI) + MOVQ 8(R15), BX + MOVQ BX, 8(DI) + ADDQ CX, DI + JMP loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUBQ $10, R14 + CMPQ CX, R14 + JGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMPQ DX, $8 + JGE fixUpSlowForwardCopy + MOVQ (R15), BX + MOVQ BX, (DI) + SUBQ DX, CX + ADDQ DX, DI + ADDQ DX, DX + JMP makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by DI being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save DI to AX so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVQ DI, AX + ADDQ CX, DI + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + CMPQ CX, $0 + JLE loop + MOVQ (R15), BX + MOVQ BX, (AX) + ADDQ $8, R15 + ADDQ $8, AX + SUBQ $8, CX + JMP finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), BX + MOVB BX, (DI) + INCQ R15 + INCQ DI + DECQ CX + JNZ verySlowForwardCopy + JMP loop + +// The code above handles copy tags. +// ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMPQ DI, R10 + JNE errCorrupt + + // return 0 + MOVQ $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVQ $1, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/decode_arm64.s b/examples/go/vendor/github.com/golang/snappy/decode_arm64.s new file mode 100644 index 0000000..7a3ead1 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_arm64.s @@ -0,0 +1,494 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - R2 scratch +// - R3 scratch +// - R4 length or x +// - R5 offset +// - R6 &src[s] +// - R7 &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly R7 - R8, and len(dst)-d is R10 - R7. +// The s variable is implicitly R6 - R11, and len(src)-s is R13 - R6. +TEXT ·decode(SB), NOSPLIT, $56-56 + // Initialize R6, R7 and R8-R13. + MOVD dst_base+0(FP), R8 + MOVD dst_len+8(FP), R9 + MOVD R8, R7 + MOVD R8, R10 + ADD R9, R10, R10 + MOVD src_base+24(FP), R11 + MOVD src_len+32(FP), R12 + MOVD R11, R6 + MOVD R11, R13 + ADD R12, R13, R13 + +loop: + // for s < len(src) + CMP R13, R6 + BEQ end + + // R4 = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBU (R6), R4 + MOVW R4, R3 + ANDW $3, R3 + MOVW $1, R1 + CMPW R1, R3 + BGE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + MOVW $60, R1 + LSRW $2, R4, R4 + CMPW R4, R1 + BLS tagLit60Plus + + // case x < 60: + // s++ + ADD $1, R6, R6 + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that R4 == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // R4 can hold 64 bits, so the increment cannot overflow. + ADD $1, R4, R4 + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // R2 = len(dst) - d + // R3 = len(src) - s + MOVD R10, R2 + SUB R7, R2, R2 + MOVD R13, R3 + SUB R6, R3, R3 + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMP $16, R4 + BGT callMemmove + CMP $16, R2 + BLT callMemmove + CMP $16, R3 + BLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + LDP 0(R6), (R14, R15) + STP (R14, R15), 0(R7) + + // d += length + // s += length + ADD R4, R7, R7 + ADD R4, R6, R6 + B loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMP R2, R4 + BGT errCorrupt + CMP R3, R4 + BGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // R7, R6 and R4 as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVD R7, 8(RSP) + MOVD R6, 16(RSP) + MOVD R4, 24(RSP) + MOVD R7, 32(RSP) + MOVD R6, 40(RSP) + MOVD R4, 48(RSP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVD 32(RSP), R7 + MOVD 40(RSP), R6 + MOVD 48(RSP), R4 + MOVD dst_base+0(FP), R8 + MOVD dst_len+8(FP), R9 + MOVD R8, R10 + ADD R9, R10, R10 + MOVD src_base+24(FP), R11 + MOVD src_len+32(FP), R12 + MOVD R11, R13 + ADD R12, R13, R13 + + // d += length + // s += length + ADD R4, R7, R7 + ADD R4, R6, R6 + B loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADD R4, R6, R6 + SUB $58, R6, R6 + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // case x == 60: + MOVW $61, R1 + CMPW R1, R4 + BEQ tagLit61 + BGT tagLit62Plus + + // x = uint32(src[s-1]) + MOVBU -1(R6), R4 + B doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVHU -2(R6), R4 + B doLit + +tagLit62Plus: + CMPW $62, R4 + BHI tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVHU -3(R6), R4 + MOVBU -1(R6), R3 + ORR R3<<16, R4 + B doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVWU -4(R6), R4 + B doLit + + // The code above handles literal tags. + // ---------------------------------------- + // The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADD $5, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // length = 1 + int(src[s-5])>>2 + MOVD $1, R1 + ADD R4>>2, R1, R4 + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVWU -4(R6), R5 + B doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADD $3, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // length = 1 + int(src[s-3])>>2 + MOVD $1, R1 + ADD R4>>2, R1, R4 + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVHU -2(R6), R5 + B doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - R3 == src[s] & 0x03 + // - R4 == src[s] + CMP $2, R3 + BEQ tagCopy2 + BGT tagCopy4 + + // case tagCopy1: + // s += 2 + ADD $2, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVD R4, R5 + AND $0xe0, R5 + MOVBU -1(R6), R3 + ORR R5<<3, R3, R5 + + // length = 4 + int(src[s-2])>>2&0x7 + MOVD $7, R1 + AND R4>>2, R1, R4 + ADD $4, R4, R4 + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - R4 == length && R4 > 0 + // - R5 == offset + + // if offset <= 0 { etc } + MOVD $0, R1 + CMP R1, R5 + BLE errCorrupt + + // if d < offset { etc } + MOVD R7, R3 + SUB R8, R3, R3 + CMP R5, R3 + BLT errCorrupt + + // if length > len(dst)-d { etc } + MOVD R10, R3 + SUB R7, R3, R3 + CMP R3, R4 + BGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVD R10, R14 + SUB R7, R14, R14 + MOVD R7, R15 + SUB R5, R15, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMP $16, R4 + BGT slowForwardCopy + CMP $8, R5 + BLT slowForwardCopy + CMP $16, R14 + BLT slowForwardCopy + MOVD 0(R15), R2 + MOVD R2, 0(R7) + MOVD 8(R15), R3 + MOVD R3, 8(R7) + ADD R4, R7, R7 + B loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUB $10, R14, R14 + CMP R14, R4 + BGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMP $8, R5 + BGE fixUpSlowForwardCopy + MOVD (R15), R3 + MOVD R3, (R7) + SUB R5, R4, R4 + ADD R5, R7, R7 + ADD R5, R5, R5 + B makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by R7 being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save R7 to R2 so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVD R7, R2 + ADD R4, R7, R7 + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + MOVD $0, R1 + CMP R1, R4 + BLE loop + MOVD (R15), R3 + MOVD R3, (R2) + ADD $8, R15, R15 + ADD $8, R2, R2 + SUB $8, R4, R4 + B finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), R3 + MOVB R3, (R7) + ADD $1, R15, R15 + ADD $1, R7, R7 + SUB $1, R4, R4 + CBNZ R4, verySlowForwardCopy + B loop + + // The code above handles copy tags. + // ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMP R10, R7 + BNE errCorrupt + + // return 0 + MOVD $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVD $1, R2 + MOVD R2, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/decode_asm.go b/examples/go/vendor/github.com/golang/snappy/decode_asm.go new file mode 100644 index 0000000..7082b34 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_asm.go @@ -0,0 +1,15 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm +// +build amd64 arm64 + +package snappy + +// decode has the same semantics as in decode_other.go. +// +//go:noescape +func decode(dst, src []byte) int diff --git a/examples/go/vendor/github.com/golang/snappy/decode_other.go b/examples/go/vendor/github.com/golang/snappy/decode_other.go new file mode 100644 index 0000000..2f672be --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/decode_other.go @@ -0,0 +1,115 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!arm64 appengine !gc noasm + +package snappy + +// decode writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read, and that len(dst) +// equals that length. +// +// It returns 0 on success or a decodeErrCodeXxx error code on failure. +func decode(dst, src []byte) int { + var d, s, offset, length int + for s < len(src) { + switch src[s] & 0x03 { + case tagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + length = int(x) + 1 + if length <= 0 { + return decodeErrCodeUnsupportedLiteralLength + } + if length > len(dst)-d || length > len(src)-s { + return decodeErrCodeCorrupt + } + copy(dst[d:], src[s:s+length]) + d += length + s += length + continue + + case tagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + + case tagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + + case tagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + } + + if offset <= 0 || d < offset || length > len(dst)-d { + return decodeErrCodeCorrupt + } + // Copy from an earlier sub-slice of dst to a later sub-slice. + // If no overlap, use the built-in copy: + if offset >= length { + copy(dst[d:d+length], dst[d-offset:]) + d += length + continue + } + + // Unlike the built-in copy function, this byte-by-byte copy always runs + // forwards, even if the slices overlap. Conceptually, this is: + // + // d += forwardCopy(dst[d:d+length], dst[d-offset:]) + // + // We align the slices into a and b and show the compiler they are the same size. + // This allows the loop to run without bounds checks. + a := dst[d : d+length] + b := dst[d-offset:] + b = b[:len(a)] + for i := range a { + a[i] = b[i] + } + d += length + } + if d != len(dst) { + return decodeErrCodeCorrupt + } + return 0 +} diff --git a/examples/go/vendor/github.com/golang/snappy/encode.go b/examples/go/vendor/github.com/golang/snappy/encode.go new file mode 100644 index 0000000..7f23657 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode.go @@ -0,0 +1,289 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +// Encode returns the encoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire encoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Encode handles the Snappy block format, not the Snappy stream format. +func Encode(dst, src []byte) []byte { + if n := MaxEncodedLen(len(src)); n < 0 { + panic(ErrTooLarge) + } else if len(dst) < n { + dst = make([]byte, n) + } + + // The block starts with the varint-encoded length of the decompressed bytes. + d := binary.PutUvarint(dst, uint64(len(src))) + + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return dst[:d] +} + +// inputMargin is the minimum number of extra input bytes to keep, inside +// encodeBlock's inner loop. On some architectures, this margin lets us +// implement a fast path for emitLiteral, where the copy of short (<= 16 byte) +// literals can be implemented as a single load to and store from a 16-byte +// register. That literal's actual length can be as short as 1 byte, so this +// can copy up to 15 bytes too much, but that's OK as subsequent iterations of +// the encoding loop will fix up the copy overrun, and this inputMargin ensures +// that we don't overrun the dst and src buffers. +const inputMargin = 16 - 1 + +// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that +// could be encoded with a copy tag. This is the minimum with respect to the +// algorithm used by encodeBlock, not a minimum enforced by the file format. +// +// The encoded output must start with at least a 1 byte literal, as there are +// no previous bytes to copy. A minimal (1 byte) copy after that, generated +// from an emitCopy call in encodeBlock's main loop, would require at least +// another inputMargin bytes, for the reason above: we want any emitLiteral +// calls inside encodeBlock's main loop to use the fast path if possible, which +// requires being able to overrun by inputMargin bytes. Thus, +// minNonLiteralBlockSize equals 1 + 1 + inputMargin. +// +// The C++ code doesn't use this exact threshold, but it could, as discussed at +// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion +// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an +// optimization. It should not affect the encoded form. This is tested by +// TestSameEncodingAsCppShortCopies. +const minNonLiteralBlockSize = 1 + 1 + inputMargin + +// MaxEncodedLen returns the maximum length of a snappy block, given its +// uncompressed length. +// +// It will return a negative value if srcLen is too large to encode. +func MaxEncodedLen(srcLen int) int { + n := uint64(srcLen) + if n > 0xffffffff { + return -1 + } + // Compressed data can be defined as: + // compressed := item* literal* + // item := literal* copy + // + // The trailing literal sequence has a space blowup of at most 62/60 + // since a literal of length 60 needs one tag byte + one extra byte + // for length information. + // + // Item blowup is trickier to measure. Suppose the "copy" op copies + // 4 bytes of data. Because of a special check in the encoding code, + // we produce a 4-byte copy only if the offset is < 65536. Therefore + // the copy op takes 3 bytes to encode, and this type of item leads + // to at most the 62/60 blowup for representing literals. + // + // Suppose the "copy" op copies 5 bytes of data. If the offset is big + // enough, it will take 5 bytes to encode the copy op. Therefore the + // worst case here is a one-byte literal followed by a five-byte copy. + // That is, 6 bytes of input turn into 7 bytes of "compressed" data. + // + // This last factor dominates the blowup, so the final estimate is: + n = 32 + n + n/6 + if n > 0xffffffff { + return -1 + } + return int(n) +} + +var errClosed = errors.New("snappy: Writer is closed") + +// NewWriter returns a new Writer that compresses to w. +// +// The Writer returned does not buffer writes. There is no need to Flush or +// Close such a Writer. +// +// Deprecated: the Writer returned is not suitable for many small writes, only +// for few large writes. Use NewBufferedWriter instead, which is efficient +// regardless of the frequency and shape of the writes, and remember to Close +// that Writer when done. +func NewWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + obuf: make([]byte, obufLen), + } +} + +// NewBufferedWriter returns a new Writer that compresses to w, using the +// framing format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +// +// The Writer returned buffers writes. Users must call Close to guarantee all +// data has been forwarded to the underlying io.Writer. They may also call +// Flush zero or more times before calling Close. +func NewBufferedWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + ibuf: make([]byte, 0, maxBlockSize), + obuf: make([]byte, obufLen), + } +} + +// Writer is an io.Writer that can write Snappy-compressed bytes. +// +// Writer handles the Snappy stream format, not the Snappy block format. +type Writer struct { + w io.Writer + err error + + // ibuf is a buffer for the incoming (uncompressed) bytes. + // + // Its use is optional. For backwards compatibility, Writers created by the + // NewWriter function have ibuf == nil, do not buffer incoming bytes, and + // therefore do not need to be Flush'ed or Close'd. + ibuf []byte + + // obuf is a buffer for the outgoing (compressed) bytes. + obuf []byte + + // wroteStreamHeader is whether we have written the stream header. + wroteStreamHeader bool +} + +// Reset discards the writer's state and switches the Snappy writer to write to +// w. This permits reusing a Writer rather than allocating a new one. +func (w *Writer) Reset(writer io.Writer) { + w.w = writer + w.err = nil + if w.ibuf != nil { + w.ibuf = w.ibuf[:0] + } + w.wroteStreamHeader = false +} + +// Write satisfies the io.Writer interface. +func (w *Writer) Write(p []byte) (nRet int, errRet error) { + if w.ibuf == nil { + // Do not buffer incoming bytes. This does not perform or compress well + // if the caller of Writer.Write writes many small slices. This + // behavior is therefore deprecated, but still supported for backwards + // compatibility with code that doesn't explicitly Flush or Close. + return w.write(p) + } + + // The remainder of this method is based on bufio.Writer.Write from the + // standard library. + + for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { + var n int + if len(w.ibuf) == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, _ = w.write(p) + } else { + n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + w.Flush() + } + nRet += n + p = p[n:] + } + if w.err != nil { + return nRet, w.err + } + n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + nRet += n + return nRet, nil +} + +func (w *Writer) write(p []byte) (nRet int, errRet error) { + if w.err != nil { + return 0, w.err + } + for len(p) > 0 { + obufStart := len(magicChunk) + if !w.wroteStreamHeader { + w.wroteStreamHeader = true + copy(w.obuf, magicChunk) + obufStart = 0 + } + + var uncompressed []byte + if len(p) > maxBlockSize { + uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] + } else { + uncompressed, p = p, nil + } + checksum := crc(uncompressed) + + // Compress the buffer, discarding the result if the improvement + // isn't at least 12.5%. + compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) + chunkType := uint8(chunkTypeCompressedData) + chunkLen := 4 + len(compressed) + obufEnd := obufHeaderLen + len(compressed) + if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { + chunkType = chunkTypeUncompressedData + chunkLen = 4 + len(uncompressed) + obufEnd = obufHeaderLen + } + + // Fill in the per-chunk header that comes before the body. + w.obuf[len(magicChunk)+0] = chunkType + w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) + w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) + w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) + w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) + w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) + w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) + w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) + + if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { + w.err = err + return nRet, err + } + if chunkType == chunkTypeUncompressedData { + if _, err := w.w.Write(uncompressed); err != nil { + w.err = err + return nRet, err + } + } + nRet += len(uncompressed) + } + return nRet, nil +} + +// Flush flushes the Writer to its underlying io.Writer. +func (w *Writer) Flush() error { + if w.err != nil { + return w.err + } + if len(w.ibuf) == 0 { + return nil + } + w.write(w.ibuf) + w.ibuf = w.ibuf[:0] + return w.err +} + +// Close calls Flush and then closes the Writer. +func (w *Writer) Close() error { + w.Flush() + ret := w.err + if w.err == nil { + w.err = errClosed + } + return ret +} diff --git a/examples/go/vendor/github.com/golang/snappy/encode_amd64.s b/examples/go/vendor/github.com/golang/snappy/encode_amd64.s new file mode 100644 index 0000000..adfd979 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_amd64.s @@ -0,0 +1,730 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The XXX lines assemble on Go 1.4, 1.5 and 1.7, but not 1.6, due to a +// Go toolchain regression. See https://github.com/golang/go/issues/15426 and +// https://github.com/golang/snappy/issues/29 +// +// As a workaround, the package was built with a known good assembler, and +// those instructions were disassembled by "objdump -d" to yield the +// 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 +// style comments, in AT&T asm syntax. Note that rsp here is a physical +// register, not Go/asm's SP pseudo-register (see https://golang.org/doc/asm). +// The instructions were then encoded as "BYTE $0x.." sequences, which assemble +// fine on Go 1.6. + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - AX len(lit) +// - BX n +// - DX return value +// - DI &dst[i] +// - R10 &lit[0] +// +// The 24 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $24-56 + MOVQ dst_base+0(FP), DI + MOVQ lit_base+24(FP), R10 + MOVQ lit_len+32(FP), AX + MOVQ AX, DX + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT oneByte + CMPL BX, $256 + JLT twoBytes + +threeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + ADDQ $3, DX + JMP memmove + +twoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + ADDQ $2, DX + JMP memmove + +oneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + ADDQ $1, DX + +memmove: + MOVQ DX, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - AX length +// - SI &dst[0] +// - DI &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVQ dst_base+0(FP), DI + MOVQ DI, SI + MOVQ offset+24(FP), R11 + MOVQ length+32(FP), AX + +loop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP loop0 + +step1: + // if length > 64 { etc } + CMPL AX, $64 + JLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMPL AX, $12 + JGE step3 + CMPL R11, $2048 + JGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - DX &src[0] +// - SI &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVQ src_base+0(FP), DX + MOVQ src_len+8(FP), R14 + MOVQ i+24(FP), R15 + MOVQ j+32(FP), SI + ADDQ DX, R14 + ADDQ DX, R15 + ADDQ DX, SI + MOVQ R14, R13 + SUBQ $8, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA cmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE bsf + ADDQ $8, R15 + ADDQ $8, SI + JMP cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE extendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE extendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - AX . . +// - BX . . +// - CX 56 shift (note that amd64 shifts by non-immediates must use CX). +// - DX 64 &src[0], tableSize +// - SI 72 &src[s] +// - DI 80 &dst[d] +// - R9 88 sLimit +// - R10 . &src[nextEmit] +// - R11 96 prevHash, currHash, nextHash, offset +// - R12 104 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 112 candidate +// +// The second column (56, 64, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 56 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 56 + 64 = 32888. +TEXT ·encodeBlock(SB), 0, $32888-56 + MOVQ dst_base+0(FP), DI + MOVQ src_base+24(FP), SI + MOVQ src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVQ $24, CX + MOVQ $256, DX + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + CMPQ DX, $16384 + JGE varTable + CMPQ DX, R14 + JGE varTable + SUBQ $1, CX + SHLQ $1, DX + JMP calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each MOVOU + // writes 16 bytes, so we can do only tableSize/8 writes instead of the + // 2048 writes that would zero-initialize all of table's 32768 bytes. + SHRQ $3, DX + LEAQ table-32768(SP), BX + PXOR X0, X0 + +memclr: + MOVOU X0, 0(BX) + ADDQ $16, BX + SUBQ $1, DX + JNZ memclr + + // !!! DX = &src[0] + MOVQ SI, DX + + // sLimit := len(src) - inputMargin + MOVQ R14, R9 + SUBQ $15, R9 + + // !!! Pre-emptively spill CX, DX and R9 to the stack. Their values don't + // change for the rest of the function. + MOVQ CX, 56(SP) + MOVQ DX, 64(SP) + MOVQ R9, 88(SP) + + // nextEmit := 0 + MOVQ DX, R10 + + // s := 1 + ADDQ $1, SI + + // nextHash := hash(load32(src, s), shift) + MOVL 0(SI), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + +outer: + // for { etc } + + // skip := 32 + MOVQ $32, R12 + + // nextS := s + MOVQ SI, R13 + + // candidate := 0 + MOVQ $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVQ R13, SI + + // bytesBetweenHashLookups := skip >> 5 + MOVQ R12, R14 + SHRQ $5, R14 + + // nextS = s + bytesBetweenHashLookups + ADDQ R14, R13 + + // skip += bytesBetweenHashLookups + ADDQ R14, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVQ R13, AX + SUBQ DX, AX + CMPQ AX, R9 + JA emitRemainder + + // candidate = int(table[nextHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[nextHash] = uint16(s) + MOVQ SI, AX + SUBQ DX, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // nextHash = hash(load32(src, nextS), shift) + MOVL 0(R13), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVL 0(SI), AX + MOVL (DX)(R15*1), BX + CMPL AX, BX + JNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVQ SI, AX + SUBQ R10, AX + CMPQ AX, $16 + JLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT inlineEmitLiteralOneByte + CMPL BX, $256 + JLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + ADDQ AX, DI // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVQ SI, 72(SP) + MOVQ DI, 80(SP) + MOVQ R15, 112(SP) + CALL runtime·memmove(SB) + MOVQ 56(SP), CX + MOVQ 64(SP), DX + MOVQ 72(SP), SI + MOVQ 80(SP), DI + MOVQ 88(SP), R9 + MOVQ 112(SP), R15 + JMP inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB AX, BX + SUBB $1, BX + SHLB $2, BX + MOVB BX, (DI) + ADDQ $1, DI + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(R10), X0 + MOVOU X0, 0(DI) + ADDQ AX, DI + +inner1: + // for { etc } + + // base := s + MOVQ SI, R12 + + // !!! offset := base - candidate + MOVQ R12, R11 + SUBQ R15, R11 + SUBQ DX, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVQ src_len+32(FP), R14 + ADDQ DX, R14 + + // !!! R13 = &src[len(src) - 8] + MOVQ R14, R13 + SUBQ $8, R13 + + // !!! R15 = &src[candidate + 4] + ADDQ $4, R15 + ADDQ DX, R15 + + // !!! s += 4 + ADDQ $4, SI + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA inlineExtendMatchCmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE inlineExtendMatchBSF + ADDQ $8, R15 + ADDQ $8, SI + JMP inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + JMP inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE inlineExtendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE inlineExtendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVQ SI, AX + SUBQ R12, AX + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + CMPL AX, $64 + JLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + CMPL AX, $12 + JGE inlineEmitCopyStep3 + CMPL R11, $2048 + JGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + JMP inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVQ SI, R10 + + // if s >= sLimit { goto emitRemainder } + MOVQ SI, AX + SUBQ DX, AX + CMPQ AX, R9 + JAE emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVQ -1(SI), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // table[prevHash] = uint16(s-1) + MOVQ SI, AX + SUBQ DX, AX + SUBQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // currHash := hash(uint32(x>>8), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // candidate = int(table[currHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[currHash] = uint16(s) + ADDQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVL (DX)(R15*1), BX + CMPL R14, BX + JEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // s++ + ADDQ $1, SI + + // break out of the inner1 for loop, i.e. continue the outer loop. + JMP outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVQ src_len+32(FP), AX + ADDQ DX, AX + CMPQ R10, AX + JEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVQ DI, 0(SP) + MOVQ $0, 8(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ $0, 16(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ R10, 24(SP) + SUBQ R10, AX + MOVQ AX, 32(SP) + MOVQ AX, 40(SP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVQ DI, 80(SP) + CALL ·emitLiteral(SB) + MOVQ 80(SP), DI + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADDQ 48(SP), DI + +encodeBlockEnd: + MOVQ dst_base+0(FP), AX + SUBQ AX, DI + MOVQ DI, d+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/encode_arm64.s b/examples/go/vendor/github.com/golang/snappy/encode_arm64.s new file mode 100644 index 0000000..f8d54ad --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_arm64.s @@ -0,0 +1,722 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - R3 len(lit) +// - R4 n +// - R6 return value +// - R8 &dst[i] +// - R10 &lit[0] +// +// The 32 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $32-56 + MOVD dst_base+0(FP), R8 + MOVD lit_base+24(FP), R10 + MOVD lit_len+32(FP), R3 + MOVD R3, R6 + MOVW R3, R4 + SUBW $1, R4, R4 + + CMPW $60, R4 + BLT oneByte + CMPW $256, R4 + BLT twoBytes + +threeBytes: + MOVD $0xf4, R2 + MOVB R2, 0(R8) + MOVW R4, 1(R8) + ADD $3, R8, R8 + ADD $3, R6, R6 + B memmove + +twoBytes: + MOVD $0xf0, R2 + MOVB R2, 0(R8) + MOVB R4, 1(R8) + ADD $2, R8, R8 + ADD $2, R6, R6 + B memmove + +oneByte: + LSLW $2, R4, R4 + MOVB R4, 0(R8) + ADD $1, R8, R8 + ADD $1, R6, R6 + +memmove: + MOVD R6, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // R8, R10 and R3 as arguments. + MOVD R8, 8(RSP) + MOVD R10, 16(RSP) + MOVD R3, 24(RSP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - R3 length +// - R7 &dst[0] +// - R8 &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVD dst_base+0(FP), R8 + MOVD R8, R7 + MOVD offset+24(FP), R11 + MOVD length+32(FP), R3 + +loop0: + // for length >= 68 { etc } + CMPW $68, R3 + BLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVD $0xfe, R2 + MOVB R2, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUB $64, R3, R3 + B loop0 + +step1: + // if length > 64 { etc } + CMP $64, R3 + BLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVD $0xee, R2 + MOVB R2, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUB $60, R3, R3 + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMP $12, R3 + BGE step3 + CMPW $2048, R11 + BGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(R8) + LSRW $3, R11, R11 + AND $0xe0, R11, R11 + SUB $4, R3, R3 + LSLW $2, R3 + AND $0xff, R3, R3 + ORRW R3, R11, R11 + ORRW $1, R11, R11 + MOVB R11, 0(R8) + ADD $2, R8, R8 + + // Return the number of bytes written. + SUB R7, R8, R8 + MOVD R8, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUB $1, R3, R3 + AND $0xff, R3, R3 + LSLW $2, R3, R3 + ORRW $2, R3, R3 + MOVB R3, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + + // Return the number of bytes written. + SUB R7, R8, R8 + MOVD R8, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - R6 &src[0] +// - R7 &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVD src_base+0(FP), R6 + MOVD src_len+8(FP), R14 + MOVD i+24(FP), R15 + MOVD j+32(FP), R7 + ADD R6, R14, R14 + ADD R6, R15, R15 + ADD R6, R7, R7 + MOVD R14, R13 + SUB $8, R13, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMP R13, R7 + BHI cmp1 + MOVD (R15), R3 + MOVD (R7), R4 + CMP R4, R3 + BNE bsf + ADD $8, R15, R15 + ADD $8, R7, R7 + B cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. + // RBIT reverses the bit order, then CLZ counts the leading zeros, the + // combination of which finds the least significant bit which is set. + // The arm64 architecture is little-endian, and the shift by 3 converts + // a bit index to a byte index. + EOR R3, R4, R4 + RBIT R4, R4 + CLZ R4, R4 + ADD R4>>3, R7, R7 + + // Convert from &src[ret] to ret. + SUB R6, R7, R7 + MOVD R7, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMP R7, R14 + BLS extendMatchEnd + MOVB (R15), R3 + MOVB (R7), R4 + CMP R4, R3 + BNE extendMatchEnd + ADD $1, R15, R15 + ADD $1, R7, R7 + B cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUB R6, R7, R7 + MOVD R7, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - R3 . . +// - R4 . . +// - R5 64 shift +// - R6 72 &src[0], tableSize +// - R7 80 &src[s] +// - R8 88 &dst[d] +// - R9 96 sLimit +// - R10 . &src[nextEmit] +// - R11 104 prevHash, currHash, nextHash, offset +// - R12 112 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 120 candidate +// - R16 . hash constant, 0x1e35a7bd +// - R17 . &table +// - . 128 table +// +// The second column (64, 72, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 64 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 64 + 64 = 32896. +TEXT ·encodeBlock(SB), 0, $32896-56 + MOVD dst_base+0(FP), R8 + MOVD src_base+24(FP), R7 + MOVD src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVD $24, R5 + MOVD $256, R6 + MOVW $0xa7bd, R16 + MOVKW $(0x1e35<<16), R16 + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + MOVD $16384, R2 + CMP R2, R6 + BGE varTable + CMP R14, R6 + BGE varTable + SUB $1, R5, R5 + LSL $1, R6, R6 + B calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each + // iterations writes 64 bytes, so we can do only tableSize/32 writes + // instead of the 2048 writes that would zero-initialize all of table's + // 32768 bytes. This clear could overrun the first tableSize elements, but + // it won't overrun the allocated stack size. + ADD $128, RSP, R17 + MOVD R17, R4 + + // !!! R6 = &src[tableSize] + ADD R6<<1, R17, R6 + +memclr: + STP.P (ZR, ZR), 64(R4) + STP (ZR, ZR), -48(R4) + STP (ZR, ZR), -32(R4) + STP (ZR, ZR), -16(R4) + CMP R4, R6 + BHI memclr + + // !!! R6 = &src[0] + MOVD R7, R6 + + // sLimit := len(src) - inputMargin + MOVD R14, R9 + SUB $15, R9, R9 + + // !!! Pre-emptively spill R5, R6 and R9 to the stack. Their values don't + // change for the rest of the function. + MOVD R5, 64(RSP) + MOVD R6, 72(RSP) + MOVD R9, 96(RSP) + + // nextEmit := 0 + MOVD R6, R10 + + // s := 1 + ADD $1, R7, R7 + + // nextHash := hash(load32(src, s), shift) + MOVW 0(R7), R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + +outer: + // for { etc } + + // skip := 32 + MOVD $32, R12 + + // nextS := s + MOVD R7, R13 + + // candidate := 0 + MOVD $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVD R13, R7 + + // bytesBetweenHashLookups := skip >> 5 + MOVD R12, R14 + LSR $5, R14, R14 + + // nextS = s + bytesBetweenHashLookups + ADD R14, R13, R13 + + // skip += bytesBetweenHashLookups + ADD R14, R12, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVD R13, R3 + SUB R6, R3, R3 + CMP R9, R3 + BHI emitRemainder + + // candidate = int(table[nextHash]) + MOVHU 0(R17)(R11<<1), R15 + + // table[nextHash] = uint16(s) + MOVD R7, R3 + SUB R6, R3, R3 + + MOVH R3, 0(R17)(R11<<1) + + // nextHash = hash(load32(src, nextS), shift) + MOVW 0(R13), R11 + MULW R16, R11 + LSRW R5, R11, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVW 0(R7), R3 + MOVW (R6)(R15), R4 + CMPW R4, R3 + BNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVD R7, R3 + SUB R10, R3, R3 + CMP $16, R3 + BLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVW R3, R4 + SUBW $1, R4, R4 + + MOVW $60, R2 + CMPW R2, R4 + BLT inlineEmitLiteralOneByte + MOVW $256, R2 + CMPW R2, R4 + BLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVD $0xf4, R1 + MOVB R1, 0(R8) + MOVW R4, 1(R8) + ADD $3, R8, R8 + B inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVD $0xf0, R1 + MOVB R1, 0(R8) + MOVB R4, 1(R8) + ADD $2, R8, R8 + B inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + LSLW $2, R4, R4 + MOVB R4, 0(R8) + ADD $1, R8, R8 + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // R8, R10 and R3 as arguments. + MOVD R8, 8(RSP) + MOVD R10, 16(RSP) + MOVD R3, 24(RSP) + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADD R3, R8, R8 + MOVD R7, 80(RSP) + MOVD R8, 88(RSP) + MOVD R15, 120(RSP) + CALL runtime·memmove(SB) + MOVD 64(RSP), R5 + MOVD 72(RSP), R6 + MOVD 80(RSP), R7 + MOVD 88(RSP), R8 + MOVD 96(RSP), R9 + MOVD 120(RSP), R15 + ADD $128, RSP, R17 + MOVW $0xa7bd, R16 + MOVKW $(0x1e35<<16), R16 + B inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB R3, R4 + SUBW $1, R4, R4 + AND $0xff, R4, R4 + LSLW $2, R4, R4 + MOVB R4, (R8) + ADD $1, R8, R8 + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + LDP 0(R10), (R0, R1) + STP (R0, R1), 0(R8) + ADD R3, R8, R8 + +inner1: + // for { etc } + + // base := s + MOVD R7, R12 + + // !!! offset := base - candidate + MOVD R12, R11 + SUB R15, R11, R11 + SUB R6, R11, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVD src_len+32(FP), R14 + ADD R6, R14, R14 + + // !!! R13 = &src[len(src) - 8] + MOVD R14, R13 + SUB $8, R13, R13 + + // !!! R15 = &src[candidate + 4] + ADD $4, R15, R15 + ADD R6, R15, R15 + + // !!! s += 4 + ADD $4, R7, R7 + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMP R13, R7 + BHI inlineExtendMatchCmp1 + MOVD (R15), R3 + MOVD (R7), R4 + CMP R4, R3 + BNE inlineExtendMatchBSF + ADD $8, R15, R15 + ADD $8, R7, R7 + B inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. + // RBIT reverses the bit order, then CLZ counts the leading zeros, the + // combination of which finds the least significant bit which is set. + // The arm64 architecture is little-endian, and the shift by 3 converts + // a bit index to a byte index. + EOR R3, R4, R4 + RBIT R4, R4 + CLZ R4, R4 + ADD R4>>3, R7, R7 + B inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMP R7, R14 + BLS inlineExtendMatchEnd + MOVB (R15), R3 + MOVB (R7), R4 + CMP R4, R3 + BNE inlineExtendMatchEnd + ADD $1, R15, R15 + ADD $1, R7, R7 + B inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVD R7, R3 + SUB R12, R3, R3 + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + MOVW $68, R2 + CMPW R2, R3 + BLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVD $0xfe, R1 + MOVB R1, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUBW $64, R3, R3 + B inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + MOVW $64, R2 + CMPW R2, R3 + BLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVD $0xee, R1 + MOVB R1, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUBW $60, R3, R3 + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + MOVW $12, R2 + CMPW R2, R3 + BGE inlineEmitCopyStep3 + MOVW $2048, R2 + CMPW R2, R11 + BGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(R8) + LSRW $8, R11, R11 + LSLW $5, R11, R11 + SUBW $4, R3, R3 + AND $0xff, R3, R3 + LSLW $2, R3, R3 + ORRW R3, R11, R11 + ORRW $1, R11, R11 + MOVB R11, 0(R8) + ADD $2, R8, R8 + B inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBW $1, R3, R3 + LSLW $2, R3, R3 + ORRW $2, R3, R3 + MOVB R3, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVD R7, R10 + + // if s >= sLimit { goto emitRemainder } + MOVD R7, R3 + SUB R6, R3, R3 + CMP R3, R9 + BLS emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVD -1(R7), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // table[prevHash] = uint16(s-1) + MOVD R7, R3 + SUB R6, R3, R3 + SUB $1, R3, R3 + + MOVHU R3, 0(R17)(R11<<1) + + // currHash := hash(uint32(x>>8), shift) + LSR $8, R14, R14 + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // candidate = int(table[currHash]) + MOVHU 0(R17)(R11<<1), R15 + + // table[currHash] = uint16(s) + ADD $1, R3, R3 + MOVHU R3, 0(R17)(R11<<1) + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVW (R6)(R15), R4 + CMPW R4, R14 + BEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + LSR $8, R14, R14 + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // s++ + ADD $1, R7, R7 + + // break out of the inner1 for loop, i.e. continue the outer loop. + B outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVD src_len+32(FP), R3 + ADD R6, R3, R3 + CMP R3, R10 + BEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVD R8, 8(RSP) + MOVD $0, 16(RSP) // Unnecessary, as the callee ignores it, but conservative. + MOVD $0, 24(RSP) // Unnecessary, as the callee ignores it, but conservative. + MOVD R10, 32(RSP) + SUB R10, R3, R3 + MOVD R3, 40(RSP) + MOVD R3, 48(RSP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVD R8, 88(RSP) + CALL ·emitLiteral(SB) + MOVD 88(RSP), R8 + + // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVD 56(RSP), R1 + ADD R1, R8, R8 + +encodeBlockEnd: + MOVD dst_base+0(FP), R3 + SUB R3, R8, R8 + MOVD R8, d+48(FP) + RET diff --git a/examples/go/vendor/github.com/golang/snappy/encode_asm.go b/examples/go/vendor/github.com/golang/snappy/encode_asm.go new file mode 100644 index 0000000..107c1e7 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_asm.go @@ -0,0 +1,30 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm +// +build amd64 arm64 + +package snappy + +// emitLiteral has the same semantics as in encode_other.go. +// +//go:noescape +func emitLiteral(dst, lit []byte) int + +// emitCopy has the same semantics as in encode_other.go. +// +//go:noescape +func emitCopy(dst []byte, offset, length int) int + +// extendMatch has the same semantics as in encode_other.go. +// +//go:noescape +func extendMatch(src []byte, i, j int) int + +// encodeBlock has the same semantics as in encode_other.go. +// +//go:noescape +func encodeBlock(dst, src []byte) (d int) diff --git a/examples/go/vendor/github.com/golang/snappy/encode_other.go b/examples/go/vendor/github.com/golang/snappy/encode_other.go new file mode 100644 index 0000000..296d7f0 --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/encode_other.go @@ -0,0 +1,238 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!arm64 appengine !gc noasm + +package snappy + +func load32(b []byte, i int) uint32 { + b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func load64(b []byte, i int) uint64 { + b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +// emitLiteral writes a literal chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= len(lit) && len(lit) <= 65536 +func emitLiteral(dst, lit []byte) int { + i, n := 0, uint(len(lit)-1) + switch { + case n < 60: + dst[0] = uint8(n)<<2 | tagLiteral + i = 1 + case n < 1<<8: + dst[0] = 60<<2 | tagLiteral + dst[1] = uint8(n) + i = 2 + default: + dst[0] = 61<<2 | tagLiteral + dst[1] = uint8(n) + dst[2] = uint8(n >> 8) + i = 3 + } + return i + copy(dst[i:], lit) +} + +// emitCopy writes a copy chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= offset && offset <= 65535 +// 4 <= length && length <= 65535 +func emitCopy(dst []byte, offset, length int) int { + i := 0 + // The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The + // threshold for this loop is a little higher (at 68 = 64 + 4), and the + // length emitted down below is is a little lower (at 60 = 64 - 4), because + // it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed + // by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as + // a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as + // 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a + // tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an + // encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. + for length >= 68 { + // Emit a length 64 copy, encoded as 3 bytes. + dst[i+0] = 63<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 64 + } + if length > 64 { + // Emit a length 60 copy, encoded as 3 bytes. + dst[i+0] = 59<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 60 + } + if length >= 12 || offset >= 2048 { + // Emit the remaining copy, encoded as 3 bytes. + dst[i+0] = uint8(length-1)<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + return i + 3 + } + // Emit the remaining copy, encoded as 2 bytes. + dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 + dst[i+1] = uint8(offset) + return i + 2 +} + +// extendMatch returns the largest k such that k <= len(src) and that +// src[i:i+k-j] and src[j:k] have the same contents. +// +// It assumes that: +// 0 <= i && i < j && j <= len(src) +func extendMatch(src []byte, i, j int) int { + for ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 { + } + return j +} + +func hash(u, shift uint32) uint32 { + return (u * 0x1e35a7bd) >> shift +} + +// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It +// assumes that the varint-encoded length of the decompressed bytes has already +// been written. +// +// It also assumes that: +// len(dst) >= MaxEncodedLen(len(src)) && +// minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize +func encodeBlock(dst, src []byte) (d int) { + // Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. + // The table element type is uint16, as s < sLimit and sLimit < len(src) + // and len(src) <= maxBlockSize and maxBlockSize == 65536. + const ( + maxTableSize = 1 << 14 + // tableMask is redundant, but helps the compiler eliminate bounds + // checks. + tableMask = maxTableSize - 1 + ) + shift := uint32(32 - 8) + for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + shift-- + } + // In Go, all array elements are zero-initialized, so there is no advantage + // to a smaller tableSize per se. However, it matches the C++ algorithm, + // and in the asm versions of this code, we can get away with zeroing only + // the first tableSize elements. + var table [maxTableSize]uint16 + + // sLimit is when to stop looking for offset/length copies. The inputMargin + // lets us use a fast path for emitLiteral in the main loop, while we are + // looking for copies. + sLimit := len(src) - inputMargin + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := 0 + + // The encoded form must start with a literal, as there are no previous + // bytes to copy, so we start looking for hash matches at s == 1. + s := 1 + nextHash := hash(load32(src, s), shift) + + for { + // Copied from the C++ snappy implementation: + // + // Heuristic match skipping: If 32 bytes are scanned with no matches + // found, start looking only at every other byte. If 32 more bytes are + // scanned (or skipped), look at every third byte, etc.. When a match + // is found, immediately go back to looking at every byte. This is a + // small loss (~5% performance, ~0.1% density) for compressible data + // due to more bookkeeping, but for non-compressible data (such as + // JPEG) it's a huge win since the compressor quickly "realizes" the + // data is incompressible and doesn't bother looking for matches + // everywhere. + // + // The "skip" variable keeps track of how many bytes there are since + // the last match; dividing it by 32 (ie. right-shifting by five) gives + // the number of bytes to move ahead for each iteration. + skip := 32 + + nextS := s + candidate := 0 + for { + s = nextS + bytesBetweenHashLookups := skip >> 5 + nextS = s + bytesBetweenHashLookups + skip += bytesBetweenHashLookups + if nextS > sLimit { + goto emitRemainder + } + candidate = int(table[nextHash&tableMask]) + table[nextHash&tableMask] = uint16(s) + nextHash = hash(load32(src, nextS), shift) + if load32(src, s) == load32(src, candidate) { + break + } + } + + // A 4-byte match has been found. We'll later see if more than 4 bytes + // match. But, prior to the match, src[nextEmit:s] are unmatched. Emit + // them as literal bytes. + d += emitLiteral(dst[d:], src[nextEmit:s]) + + // Call emitCopy, and then see if another emitCopy could be our next + // move. Repeat until we find no match for the input immediately after + // what was consumed by the last emitCopy call. + // + // If we exit this loop normally then we need to call emitLiteral next, + // though we don't yet know how big the literal will be. We handle that + // by proceeding to the next iteration of the main loop. We also can + // exit this loop via goto if we get close to exhausting the input. + for { + // Invariant: we have a 4-byte match at s, and no need to emit any + // literal bytes prior to s. + base := s + + // Extend the 4-byte match as long as possible. + // + // This is an inlined version of: + // s = extendMatch(src, candidate+4, s+4) + s += 4 + for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { + } + + d += emitCopy(dst[d:], base-candidate, s-base) + nextEmit = s + if s >= sLimit { + goto emitRemainder + } + + // We could immediately start working at s now, but to improve + // compression we first update the hash table at s-1 and at s. If + // another emitCopy is not our next move, also calculate nextHash + // at s+1. At least on GOARCH=amd64, these three hash calculations + // are faster as one load64 call (with some shifts) instead of + // three load32 calls. + x := load64(src, s-1) + prevHash := hash(uint32(x>>0), shift) + table[prevHash&tableMask] = uint16(s - 1) + currHash := hash(uint32(x>>8), shift) + candidate = int(table[currHash&tableMask]) + table[currHash&tableMask] = uint16(s) + if uint32(x>>8) != load32(src, candidate) { + nextHash = hash(uint32(x>>16), shift) + s++ + break + } + } + } + +emitRemainder: + if nextEmit < len(src) { + d += emitLiteral(dst[d:], src[nextEmit:]) + } + return d +} diff --git a/examples/go/vendor/github.com/golang/snappy/snappy.go b/examples/go/vendor/github.com/golang/snappy/snappy.go new file mode 100644 index 0000000..ece692e --- /dev/null +++ b/examples/go/vendor/github.com/golang/snappy/snappy.go @@ -0,0 +1,98 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package snappy implements the Snappy compression format. It aims for very +// high speeds and reasonable compression. +// +// There are actually two Snappy formats: block and stream. They are related, +// but different: trying to decompress block-compressed data as a Snappy stream +// will fail, and vice versa. The block format is the Decode and Encode +// functions and the stream format is the Reader and Writer types. +// +// The block format, the more common case, is used when the complete size (the +// number of bytes) of the original data is known upfront, at the time +// compression starts. The stream format, also known as the framing format, is +// for when that isn't always true. +// +// The canonical, C++ implementation is at https://github.com/google/snappy and +// it only implements the block format. +package snappy // import "github.com/golang/snappy" + +import ( + "hash/crc32" +) + +/* +Each encoded block begins with the varint-encoded length of the decoded data, +followed by a sequence of chunks. Chunks begin and end on byte boundaries. The +first byte of each chunk is broken into its 2 least and 6 most significant bits +called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag. +Zero means a literal tag. All other values mean a copy tag. + +For literal tags: + - If m < 60, the next 1 + m bytes are literal bytes. + - Otherwise, let n be the little-endian unsigned integer denoted by the next + m - 59 bytes. The next 1 + n bytes after that are literal bytes. + +For copy tags, length bytes are copied from offset bytes ago, in the style of +Lempel-Ziv compression algorithms. In particular: + - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12). + The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10 + of the offset. The next byte is bits 0-7 of the offset. + - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65). + The length is 1 + m. The offset is the little-endian unsigned integer + denoted by the next 2 bytes. + - For l == 3, this tag is a legacy format that is no longer issued by most + encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in + [1, 65). The length is 1 + m. The offset is the little-endian unsigned + integer denoted by the next 4 bytes. +*/ +const ( + tagLiteral = 0x00 + tagCopy1 = 0x01 + tagCopy2 = 0x02 + tagCopy4 = 0x03 +) + +const ( + checksumSize = 4 + chunkHeaderSize = 4 + magicChunk = "\xff\x06\x00\x00" + magicBody + magicBody = "sNaPpY" + + // maxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + maxBlockSize = 65536 + + // maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + maxEncodedLenOfMaxBlockSize = 76490 + + obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize + obufLen = obufHeaderLen + maxEncodedLenOfMaxBlockSize +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func crc(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return uint32(c>>15|c<<17) + 0xa282ead8 +} diff --git a/examples/go/vendor/github.com/google/uuid/CHANGELOG.md b/examples/go/vendor/github.com/google/uuid/CHANGELOG.md new file mode 100644 index 0000000..7ec5ac7 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/CHANGELOG.md @@ -0,0 +1,41 @@ +# Changelog + +## [1.6.0](https://github.com/google/uuid/compare/v1.5.0...v1.6.0) (2024-01-16) + + +### Features + +* add Max UUID constant ([#149](https://github.com/google/uuid/issues/149)) ([c58770e](https://github.com/google/uuid/commit/c58770eb495f55fe2ced6284f93c5158a62e53e3)) + + +### Bug Fixes + +* fix typo in version 7 uuid documentation ([#153](https://github.com/google/uuid/issues/153)) ([016b199](https://github.com/google/uuid/commit/016b199544692f745ffc8867b914129ecb47ef06)) +* Monotonicity in UUIDv7 ([#150](https://github.com/google/uuid/issues/150)) ([a2b2b32](https://github.com/google/uuid/commit/a2b2b32373ff0b1a312b7fdf6d38a977099698a6)) + +## [1.5.0](https://github.com/google/uuid/compare/v1.4.0...v1.5.0) (2023-12-12) + + +### Features + +* Validate UUID without creating new UUID ([#141](https://github.com/google/uuid/issues/141)) ([9ee7366](https://github.com/google/uuid/commit/9ee7366e66c9ad96bab89139418a713dc584ae29)) + +## [1.4.0](https://github.com/google/uuid/compare/v1.3.1...v1.4.0) (2023-10-26) + + +### Features + +* UUIDs slice type with Strings() convenience method ([#133](https://github.com/google/uuid/issues/133)) ([cd5fbbd](https://github.com/google/uuid/commit/cd5fbbdd02f3e3467ac18940e07e062be1f864b4)) + +### Fixes + +* Clarify that Parse's job is to parse but not necessarily validate strings. (Documents current behavior) + +## [1.3.1](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) (2023-08-18) + + +### Bug Fixes + +* Use .EqualFold() to parse urn prefixed UUIDs ([#118](https://github.com/google/uuid/issues/118)) ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0)) + +## Changelog diff --git a/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md b/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md new file mode 100644 index 0000000..a502fdc --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# How to contribute + +We definitely welcome patches and contribution to this project! + +### Tips + +Commits must be formatted according to the [Conventional Commits Specification](https://www.conventionalcommits.org). + +Always try to include a test case! If it is not possible or not necessary, +please explain why in the pull request description. + +### Releasing + +Commits that would precipitate a SemVer change, as described in the Conventional +Commits Specification, will trigger [`release-please`](https://github.com/google-github-actions/release-please-action) +to create a release candidate pull request. Once submitted, `release-please` +will create a release. + +For tips on how to work with `release-please`, see its documentation. + +### Legal requirements + +In order to protect both you and ourselves, you will need to sign the +[Contributor License Agreement](https://cla.developers.google.com/clas). + +You may have already signed it for other Google projects. diff --git a/examples/go/vendor/github.com/google/uuid/CONTRIBUTORS b/examples/go/vendor/github.com/google/uuid/CONTRIBUTORS new file mode 100644 index 0000000..b4bb97f --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/CONTRIBUTORS @@ -0,0 +1,9 @@ +Paul Borman +bmatsuo +shawnps +theory +jboverfelt +dsymonds +cd1 +wallclockbuilder +dansouza diff --git a/examples/go/vendor/github.com/google/uuid/LICENSE b/examples/go/vendor/github.com/google/uuid/LICENSE new file mode 100644 index 0000000..5dc6826 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009,2014 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/google/uuid/README.md b/examples/go/vendor/github.com/google/uuid/README.md new file mode 100644 index 0000000..3e9a618 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/README.md @@ -0,0 +1,21 @@ +# uuid +The uuid package generates and inspects UUIDs based on +[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122) +and DCE 1.1: Authentication and Security Services. + +This package is based on the github.com/pborman/uuid package (previously named +code.google.com/p/go-uuid). It differs from these earlier packages in that +a UUID is a 16 byte array rather than a byte slice. One loss due to this +change is the ability to represent an invalid UUID (vs a NIL UUID). + +###### Install +```sh +go get github.com/google/uuid +``` + +###### Documentation +[![Go Reference](https://pkg.go.dev/badge/github.com/google/uuid.svg)](https://pkg.go.dev/github.com/google/uuid) + +Full `go doc` style documentation for the package can be viewed online without +installing this package by using the GoDoc site here: +http://pkg.go.dev/github.com/google/uuid diff --git a/examples/go/vendor/github.com/google/uuid/dce.go b/examples/go/vendor/github.com/google/uuid/dce.go new file mode 100644 index 0000000..fa820b9 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/dce.go @@ -0,0 +1,80 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "fmt" + "os" +) + +// A Domain represents a Version 2 domain +type Domain byte + +// Domain constants for DCE Security (Version 2) UUIDs. +const ( + Person = Domain(0) + Group = Domain(1) + Org = Domain(2) +) + +// NewDCESecurity returns a DCE Security (Version 2) UUID. +// +// The domain should be one of Person, Group or Org. +// On a POSIX system the id should be the users UID for the Person +// domain and the users GID for the Group. The meaning of id for +// the domain Org or on non-POSIX systems is site defined. +// +// For a given domain/id pair the same token may be returned for up to +// 7 minutes and 10 seconds. +func NewDCESecurity(domain Domain, id uint32) (UUID, error) { + uuid, err := NewUUID() + if err == nil { + uuid[6] = (uuid[6] & 0x0f) | 0x20 // Version 2 + uuid[9] = byte(domain) + binary.BigEndian.PutUint32(uuid[0:], id) + } + return uuid, err +} + +// NewDCEPerson returns a DCE Security (Version 2) UUID in the person +// domain with the id returned by os.Getuid. +// +// NewDCESecurity(Person, uint32(os.Getuid())) +func NewDCEPerson() (UUID, error) { + return NewDCESecurity(Person, uint32(os.Getuid())) +} + +// NewDCEGroup returns a DCE Security (Version 2) UUID in the group +// domain with the id returned by os.Getgid. +// +// NewDCESecurity(Group, uint32(os.Getgid())) +func NewDCEGroup() (UUID, error) { + return NewDCESecurity(Group, uint32(os.Getgid())) +} + +// Domain returns the domain for a Version 2 UUID. Domains are only defined +// for Version 2 UUIDs. +func (uuid UUID) Domain() Domain { + return Domain(uuid[9]) +} + +// ID returns the id for a Version 2 UUID. IDs are only defined for Version 2 +// UUIDs. +func (uuid UUID) ID() uint32 { + return binary.BigEndian.Uint32(uuid[0:4]) +} + +func (d Domain) String() string { + switch d { + case Person: + return "Person" + case Group: + return "Group" + case Org: + return "Org" + } + return fmt.Sprintf("Domain%d", int(d)) +} diff --git a/examples/go/vendor/github.com/google/uuid/doc.go b/examples/go/vendor/github.com/google/uuid/doc.go new file mode 100644 index 0000000..5b8a4b9 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/doc.go @@ -0,0 +1,12 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package uuid generates and inspects UUIDs. +// +// UUIDs are based on RFC 4122 and DCE 1.1: Authentication and Security +// Services. +// +// A UUID is a 16 byte (128 bit) array. UUIDs may be used as keys to +// maps or compared directly. +package uuid diff --git a/examples/go/vendor/github.com/google/uuid/hash.go b/examples/go/vendor/github.com/google/uuid/hash.go new file mode 100644 index 0000000..dc60082 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/hash.go @@ -0,0 +1,59 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "crypto/md5" + "crypto/sha1" + "hash" +) + +// Well known namespace IDs and UUIDs +var ( + NameSpaceDNS = Must(Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceURL = Must(Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceOID = Must(Parse("6ba7b812-9dad-11d1-80b4-00c04fd430c8")) + NameSpaceX500 = Must(Parse("6ba7b814-9dad-11d1-80b4-00c04fd430c8")) + Nil UUID // empty UUID, all zeros + + // The Max UUID is special form of UUID that is specified to have all 128 bits set to 1. + Max = UUID{ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + } +) + +// NewHash returns a new UUID derived from the hash of space concatenated with +// data generated by h. The hash should be at least 16 byte in length. The +// first 16 bytes of the hash are used to form the UUID. The version of the +// UUID will be the lower 4 bits of version. NewHash is used to implement +// NewMD5 and NewSHA1. +func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID { + h.Reset() + h.Write(space[:]) //nolint:errcheck + h.Write(data) //nolint:errcheck + s := h.Sum(nil) + var uuid UUID + copy(uuid[:], s) + uuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4) + uuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant + return uuid +} + +// NewMD5 returns a new MD5 (Version 3) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(md5.New(), space, data, 3) +func NewMD5(space UUID, data []byte) UUID { + return NewHash(md5.New(), space, data, 3) +} + +// NewSHA1 returns a new SHA1 (Version 5) UUID based on the +// supplied name space and data. It is the same as calling: +// +// NewHash(sha1.New(), space, data, 5) +func NewSHA1(space UUID, data []byte) UUID { + return NewHash(sha1.New(), space, data, 5) +} diff --git a/examples/go/vendor/github.com/google/uuid/marshal.go b/examples/go/vendor/github.com/google/uuid/marshal.go new file mode 100644 index 0000000..14bd340 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/marshal.go @@ -0,0 +1,38 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "fmt" + +// MarshalText implements encoding.TextMarshaler. +func (uuid UUID) MarshalText() ([]byte, error) { + var js [36]byte + encodeHex(js[:], uuid) + return js[:], nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (uuid *UUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err != nil { + return err + } + *uuid = id + return nil +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (uuid UUID) MarshalBinary() ([]byte, error) { + return uuid[:], nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (uuid *UUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(uuid[:], data) + return nil +} diff --git a/examples/go/vendor/github.com/google/uuid/node.go b/examples/go/vendor/github.com/google/uuid/node.go new file mode 100644 index 0000000..d651a2b --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/node.go @@ -0,0 +1,90 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "sync" +) + +var ( + nodeMu sync.Mutex + ifname string // name of interface being used + nodeID [6]byte // hardware for version 1 UUIDs + zeroID [6]byte // nodeID with only 0's +) + +// NodeInterface returns the name of the interface from which the NodeID was +// derived. The interface "user" is returned if the NodeID was set by +// SetNodeID. +func NodeInterface() string { + defer nodeMu.Unlock() + nodeMu.Lock() + return ifname +} + +// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs. +// If name is "" then the first usable interface found will be used or a random +// Node ID will be generated. If a named interface cannot be found then false +// is returned. +// +// SetNodeInterface never fails when name is "". +func SetNodeInterface(name string) bool { + defer nodeMu.Unlock() + nodeMu.Lock() + return setNodeInterface(name) +} + +func setNodeInterface(name string) bool { + iname, addr := getHardwareInterface(name) // null implementation for js + if iname != "" && addr != nil { + ifname = iname + copy(nodeID[:], addr) + return true + } + + // We found no interfaces with a valid hardware address. If name + // does not specify a specific interface generate a random Node ID + // (section 4.1.6) + if name == "" { + ifname = "random" + randomBits(nodeID[:]) + return true + } + return false +} + +// NodeID returns a slice of a copy of the current Node ID, setting the Node ID +// if not already set. +func NodeID() []byte { + defer nodeMu.Unlock() + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + nid := nodeID + return nid[:] +} + +// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes +// of id are used. If id is less than 6 bytes then false is returned and the +// Node ID is not set. +func SetNodeID(id []byte) bool { + if len(id) < 6 { + return false + } + defer nodeMu.Unlock() + nodeMu.Lock() + copy(nodeID[:], id) + ifname = "user" + return true +} + +// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is +// not valid. The NodeID is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) NodeID() []byte { + var node [6]byte + copy(node[:], uuid[10:]) + return node[:] +} diff --git a/examples/go/vendor/github.com/google/uuid/node_js.go b/examples/go/vendor/github.com/google/uuid/node_js.go new file mode 100644 index 0000000..b2a0bc8 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/node_js.go @@ -0,0 +1,12 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build js + +package uuid + +// getHardwareInterface returns nil values for the JS version of the code. +// This removes the "net" dependency, because it is not used in the browser. +// Using the "net" library inflates the size of the transpiled JS code by 673k bytes. +func getHardwareInterface(name string) (string, []byte) { return "", nil } diff --git a/examples/go/vendor/github.com/google/uuid/node_net.go b/examples/go/vendor/github.com/google/uuid/node_net.go new file mode 100644 index 0000000..0cbbcdd --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/node_net.go @@ -0,0 +1,33 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !js + +package uuid + +import "net" + +var interfaces []net.Interface // cached list of interfaces + +// getHardwareInterface returns the name and hardware address of interface name. +// If name is "" then the name and hardware address of one of the system's +// interfaces is returned. If no interfaces are found (name does not exist or +// there are no interfaces) then "", nil is returned. +// +// Only addresses of at least 6 bytes are returned. +func getHardwareInterface(name string) (string, []byte) { + if interfaces == nil { + var err error + interfaces, err = net.Interfaces() + if err != nil { + return "", nil + } + } + for _, ifs := range interfaces { + if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) { + return ifs.Name, ifs.HardwareAddr + } + } + return "", nil +} diff --git a/examples/go/vendor/github.com/google/uuid/null.go b/examples/go/vendor/github.com/google/uuid/null.go new file mode 100644 index 0000000..d7fcbf2 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/null.go @@ -0,0 +1,118 @@ +// Copyright 2021 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "database/sql/driver" + "encoding/json" + "fmt" +) + +var jsonNull = []byte("null") + +// NullUUID represents a UUID that may be null. +// NullUUID implements the SQL driver.Scanner interface so +// it can be used as a scan destination: +// +// var u uuid.NullUUID +// err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&u) +// ... +// if u.Valid { +// // use u.UUID +// } else { +// // NULL value +// } +// +type NullUUID struct { + UUID UUID + Valid bool // Valid is true if UUID is not NULL +} + +// Scan implements the SQL driver.Scanner interface. +func (nu *NullUUID) Scan(value interface{}) error { + if value == nil { + nu.UUID, nu.Valid = Nil, false + return nil + } + + err := nu.UUID.Scan(value) + if err != nil { + nu.Valid = false + return err + } + + nu.Valid = true + return nil +} + +// Value implements the driver Valuer interface. +func (nu NullUUID) Value() (driver.Value, error) { + if !nu.Valid { + return nil, nil + } + // Delegate to UUID Value function + return nu.UUID.Value() +} + +// MarshalBinary implements encoding.BinaryMarshaler. +func (nu NullUUID) MarshalBinary() ([]byte, error) { + if nu.Valid { + return nu.UUID[:], nil + } + + return []byte(nil), nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler. +func (nu *NullUUID) UnmarshalBinary(data []byte) error { + if len(data) != 16 { + return fmt.Errorf("invalid UUID (got %d bytes)", len(data)) + } + copy(nu.UUID[:], data) + nu.Valid = true + return nil +} + +// MarshalText implements encoding.TextMarshaler. +func (nu NullUUID) MarshalText() ([]byte, error) { + if nu.Valid { + return nu.UUID.MarshalText() + } + + return jsonNull, nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (nu *NullUUID) UnmarshalText(data []byte) error { + id, err := ParseBytes(data) + if err != nil { + nu.Valid = false + return err + } + nu.UUID = id + nu.Valid = true + return nil +} + +// MarshalJSON implements json.Marshaler. +func (nu NullUUID) MarshalJSON() ([]byte, error) { + if nu.Valid { + return json.Marshal(nu.UUID) + } + + return jsonNull, nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (nu *NullUUID) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, jsonNull) { + *nu = NullUUID{} + return nil // valid null UUID + } + err := json.Unmarshal(data, &nu.UUID) + nu.Valid = err == nil + return err +} diff --git a/examples/go/vendor/github.com/google/uuid/sql.go b/examples/go/vendor/github.com/google/uuid/sql.go new file mode 100644 index 0000000..2e02ec0 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/sql.go @@ -0,0 +1,59 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "database/sql/driver" + "fmt" +) + +// Scan implements sql.Scanner so UUIDs can be read from databases transparently. +// Currently, database types that map to string and []byte are supported. Please +// consult database-specific driver documentation for matching types. +func (uuid *UUID) Scan(src interface{}) error { + switch src := src.(type) { + case nil: + return nil + + case string: + // if an empty UUID comes from a table, we return a null UUID + if src == "" { + return nil + } + + // see Parse for required string format + u, err := Parse(src) + if err != nil { + return fmt.Errorf("Scan: %v", err) + } + + *uuid = u + + case []byte: + // if an empty UUID comes from a table, we return a null UUID + if len(src) == 0 { + return nil + } + + // assumes a simple slice of bytes if 16 bytes + // otherwise attempts to parse + if len(src) != 16 { + return uuid.Scan(string(src)) + } + copy((*uuid)[:], src) + + default: + return fmt.Errorf("Scan: unable to scan type %T into UUID", src) + } + + return nil +} + +// Value implements sql.Valuer so that UUIDs can be written to databases +// transparently. Currently, UUIDs map to strings. Please consult +// database-specific driver documentation for matching types. +func (uuid UUID) Value() (driver.Value, error) { + return uuid.String(), nil +} diff --git a/examples/go/vendor/github.com/google/uuid/time.go b/examples/go/vendor/github.com/google/uuid/time.go new file mode 100644 index 0000000..c351129 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/time.go @@ -0,0 +1,134 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "sync" + "time" +) + +// A Time represents a time as the number of 100's of nanoseconds since 15 Oct +// 1582. +type Time int64 + +const ( + lillian = 2299160 // Julian day of 15 Oct 1582 + unix = 2440587 // Julian day of 1 Jan 1970 + epoch = unix - lillian // Days between epochs + g1582 = epoch * 86400 // seconds between epochs + g1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs +) + +var ( + timeMu sync.Mutex + lasttime uint64 // last time we returned + clockSeq uint16 // clock sequence for this run + + timeNow = time.Now // for testing +) + +// UnixTime converts t the number of seconds and nanoseconds using the Unix +// epoch of 1 Jan 1970. +func (t Time) UnixTime() (sec, nsec int64) { + sec = int64(t - g1582ns100) + nsec = (sec % 10000000) * 100 + sec /= 10000000 + return sec, nsec +} + +// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and +// clock sequence as well as adjusting the clock sequence as needed. An error +// is returned if the current time cannot be determined. +func GetTime() (Time, uint16, error) { + defer timeMu.Unlock() + timeMu.Lock() + return getTime() +} + +func getTime() (Time, uint16, error) { + t := timeNow() + + // If we don't have a clock sequence already, set one. + if clockSeq == 0 { + setClockSequence(-1) + } + now := uint64(t.UnixNano()/100) + g1582ns100 + + // If time has gone backwards with this clock sequence then we + // increment the clock sequence + if now <= lasttime { + clockSeq = ((clockSeq + 1) & 0x3fff) | 0x8000 + } + lasttime = now + return Time(now), clockSeq, nil +} + +// ClockSequence returns the current clock sequence, generating one if not +// already set. The clock sequence is only used for Version 1 UUIDs. +// +// The uuid package does not use global static storage for the clock sequence or +// the last time a UUID was generated. Unless SetClockSequence is used, a new +// random clock sequence is generated the first time a clock sequence is +// requested by ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) +func ClockSequence() int { + defer timeMu.Unlock() + timeMu.Lock() + return clockSequence() +} + +func clockSequence() int { + if clockSeq == 0 { + setClockSequence(-1) + } + return int(clockSeq & 0x3fff) +} + +// SetClockSequence sets the clock sequence to the lower 14 bits of seq. Setting to +// -1 causes a new sequence to be generated. +func SetClockSequence(seq int) { + defer timeMu.Unlock() + timeMu.Lock() + setClockSequence(seq) +} + +func setClockSequence(seq int) { + if seq == -1 { + var b [2]byte + randomBits(b[:]) // clock sequence + seq = int(b[0])<<8 | int(b[1]) + } + oldSeq := clockSeq + clockSeq = uint16(seq&0x3fff) | 0x8000 // Set our variant + if oldSeq != clockSeq { + lasttime = 0 + } +} + +// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in +// uuid. The time is only defined for version 1, 2, 6 and 7 UUIDs. +func (uuid UUID) Time() Time { + var t Time + switch uuid.Version() { + case 6: + time := binary.BigEndian.Uint64(uuid[:8]) // Ignore uuid[6] version b0110 + t = Time(time) + case 7: + time := binary.BigEndian.Uint64(uuid[:8]) + t = Time((time>>16)*10000 + g1582ns100) + default: // forward compatible + time := int64(binary.BigEndian.Uint32(uuid[0:4])) + time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32 + time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48 + t = Time(time) + } + return t +} + +// ClockSequence returns the clock sequence encoded in uuid. +// The clock sequence is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) ClockSequence() int { + return int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff +} diff --git a/examples/go/vendor/github.com/google/uuid/util.go b/examples/go/vendor/github.com/google/uuid/util.go new file mode 100644 index 0000000..5ea6c73 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/util.go @@ -0,0 +1,43 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "io" +) + +// randomBits completely fills slice b with random data. +func randomBits(b []byte) { + if _, err := io.ReadFull(rander, b); err != nil { + panic(err.Error()) // rand should never fail + } +} + +// xvalues returns the value of a byte as a hexadecimal digit or 255. +var xvalues = [256]byte{ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +} + +// xtob converts hex characters x1 and x2 into a byte. +func xtob(x1, x2 byte) (byte, bool) { + b1 := xvalues[x1] + b2 := xvalues[x2] + return (b1 << 4) | b2, b1 != 255 && b2 != 255 +} diff --git a/examples/go/vendor/github.com/google/uuid/uuid.go b/examples/go/vendor/github.com/google/uuid/uuid.go new file mode 100644 index 0000000..5232b48 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/uuid.go @@ -0,0 +1,365 @@ +// Copyright 2018 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "crypto/rand" + "encoding/hex" + "errors" + "fmt" + "io" + "strings" + "sync" +) + +// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC +// 4122. +type UUID [16]byte + +// A Version represents a UUID's version. +type Version byte + +// A Variant represents a UUID's variant. +type Variant byte + +// Constants returned by Variant. +const ( + Invalid = Variant(iota) // Invalid UUID + RFC4122 // The variant specified in RFC4122 + Reserved // Reserved, NCS backward compatibility. + Microsoft // Reserved, Microsoft Corporation backward compatibility. + Future // Reserved for future definition. +) + +const randPoolSize = 16 * 16 + +var ( + rander = rand.Reader // random function + poolEnabled = false + poolMu sync.Mutex + poolPos = randPoolSize // protected with poolMu + pool [randPoolSize]byte // protected with poolMu +) + +type invalidLengthError struct{ len int } + +func (err invalidLengthError) Error() string { + return fmt.Sprintf("invalid UUID length: %d", err.len) +} + +// IsInvalidLengthError is matcher function for custom error invalidLengthError +func IsInvalidLengthError(err error) bool { + _, ok := err.(invalidLengthError) + return ok +} + +// Parse decodes s into a UUID or returns an error if it cannot be parsed. Both +// the standard UUID forms defined in RFC 4122 +// (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) are decoded. In addition, +// Parse accepts non-standard strings such as the raw hex encoding +// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx and 38 byte "Microsoft style" encodings, +// e.g. {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. Only the middle 36 bytes are +// examined in the latter case. Parse should not be used to validate strings as +// it parses non-standard encodings as indicated above. +func Parse(s string) (UUID, error) { + var uuid UUID + switch len(s) { + // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36: + + // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36 + 9: + if !strings.EqualFold(s[:9], "urn:uuid:") { + return uuid, fmt.Errorf("invalid urn prefix: %q", s[:9]) + } + s = s[9:] + + // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + case 36 + 2: + s = s[1:] + + // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + case 32: + var ok bool + for i := range uuid { + uuid[i], ok = xtob(s[i*2], s[i*2+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, invalidLengthError{len(s)} + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34, + } { + v, ok := xtob(s[x], s[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// ParseBytes is like Parse, except it parses a byte slice instead of a string. +func ParseBytes(b []byte) (UUID, error) { + var uuid UUID + switch len(b) { + case 36: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + case 36 + 9: // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if !bytes.EqualFold(b[:9], []byte("urn:uuid:")) { + return uuid, fmt.Errorf("invalid urn prefix: %q", b[:9]) + } + b = b[9:] + case 36 + 2: // {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} + b = b[1:] + case 32: // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + var ok bool + for i := 0; i < 32; i += 2 { + uuid[i/2], ok = xtob(b[i], b[i+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + } + return uuid, nil + default: + return uuid, invalidLengthError{len(b)} + } + // s is now at least 36 bytes long + // it must be of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + if b[8] != '-' || b[13] != '-' || b[18] != '-' || b[23] != '-' { + return uuid, errors.New("invalid UUID format") + } + for i, x := range [16]int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34, + } { + v, ok := xtob(b[x], b[x+1]) + if !ok { + return uuid, errors.New("invalid UUID format") + } + uuid[i] = v + } + return uuid, nil +} + +// MustParse is like Parse but panics if the string cannot be parsed. +// It simplifies safe initialization of global variables holding compiled UUIDs. +func MustParse(s string) UUID { + uuid, err := Parse(s) + if err != nil { + panic(`uuid: Parse(` + s + `): ` + err.Error()) + } + return uuid +} + +// FromBytes creates a new UUID from a byte slice. Returns an error if the slice +// does not have a length of 16. The bytes are copied from the slice. +func FromBytes(b []byte) (uuid UUID, err error) { + err = uuid.UnmarshalBinary(b) + return uuid, err +} + +// Must returns uuid if err is nil and panics otherwise. +func Must(uuid UUID, err error) UUID { + if err != nil { + panic(err) + } + return uuid +} + +// Validate returns an error if s is not a properly formatted UUID in one of the following formats: +// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +// {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} +// It returns an error if the format is invalid, otherwise nil. +func Validate(s string) error { + switch len(s) { + // Standard UUID format + case 36: + + // UUID with "urn:uuid:" prefix + case 36 + 9: + if !strings.EqualFold(s[:9], "urn:uuid:") { + return fmt.Errorf("invalid urn prefix: %q", s[:9]) + } + s = s[9:] + + // UUID enclosed in braces + case 36 + 2: + if s[0] != '{' || s[len(s)-1] != '}' { + return fmt.Errorf("invalid bracketed UUID format") + } + s = s[1 : len(s)-1] + + // UUID without hyphens + case 32: + for i := 0; i < len(s); i += 2 { + _, ok := xtob(s[i], s[i+1]) + if !ok { + return errors.New("invalid UUID format") + } + } + + default: + return invalidLengthError{len(s)} + } + + // Check for standard UUID format + if len(s) == 36 { + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return errors.New("invalid UUID format") + } + for _, x := range []int{0, 2, 4, 6, 9, 11, 14, 16, 19, 21, 24, 26, 28, 30, 32, 34} { + if _, ok := xtob(s[x], s[x+1]); !ok { + return errors.New("invalid UUID format") + } + } + } + + return nil +} + +// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// , or "" if uuid is invalid. +func (uuid UUID) String() string { + var buf [36]byte + encodeHex(buf[:], uuid) + return string(buf[:]) +} + +// URN returns the RFC 2141 URN form of uuid, +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid. +func (uuid UUID) URN() string { + var buf [36 + 9]byte + copy(buf[:], "urn:uuid:") + encodeHex(buf[9:], uuid) + return string(buf[:]) +} + +func encodeHex(dst []byte, uuid UUID) { + hex.Encode(dst, uuid[:4]) + dst[8] = '-' + hex.Encode(dst[9:13], uuid[4:6]) + dst[13] = '-' + hex.Encode(dst[14:18], uuid[6:8]) + dst[18] = '-' + hex.Encode(dst[19:23], uuid[8:10]) + dst[23] = '-' + hex.Encode(dst[24:], uuid[10:]) +} + +// Variant returns the variant encoded in uuid. +func (uuid UUID) Variant() Variant { + switch { + case (uuid[8] & 0xc0) == 0x80: + return RFC4122 + case (uuid[8] & 0xe0) == 0xc0: + return Microsoft + case (uuid[8] & 0xe0) == 0xe0: + return Future + default: + return Reserved + } +} + +// Version returns the version of uuid. +func (uuid UUID) Version() Version { + return Version(uuid[6] >> 4) +} + +func (v Version) String() string { + if v > 15 { + return fmt.Sprintf("BAD_VERSION_%d", v) + } + return fmt.Sprintf("VERSION_%d", v) +} + +func (v Variant) String() string { + switch v { + case RFC4122: + return "RFC4122" + case Reserved: + return "Reserved" + case Microsoft: + return "Microsoft" + case Future: + return "Future" + case Invalid: + return "Invalid" + } + return fmt.Sprintf("BadVariant%d", int(v)) +} + +// SetRand sets the random number generator to r, which implements io.Reader. +// If r.Read returns an error when the package requests random data then +// a panic will be issued. +// +// Calling SetRand with nil sets the random number generator to the default +// generator. +func SetRand(r io.Reader) { + if r == nil { + rander = rand.Reader + return + } + rander = r +} + +// EnableRandPool enables internal randomness pool used for Random +// (Version 4) UUID generation. The pool contains random bytes read from +// the random number generator on demand in batches. Enabling the pool +// may improve the UUID generation throughput significantly. +// +// Since the pool is stored on the Go heap, this feature may be a bad fit +// for security sensitive applications. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func EnableRandPool() { + poolEnabled = true +} + +// DisableRandPool disables the randomness pool if it was previously +// enabled with EnableRandPool. +// +// Both EnableRandPool and DisableRandPool are not thread-safe and should +// only be called when there is no possibility that New or any other +// UUID Version 4 generation function will be called concurrently. +func DisableRandPool() { + poolEnabled = false + defer poolMu.Unlock() + poolMu.Lock() + poolPos = randPoolSize +} + +// UUIDs is a slice of UUID types. +type UUIDs []UUID + +// Strings returns a string slice containing the string form of each UUID in uuids. +func (uuids UUIDs) Strings() []string { + var uuidStrs = make([]string, len(uuids)) + for i, uuid := range uuids { + uuidStrs[i] = uuid.String() + } + return uuidStrs +} diff --git a/examples/go/vendor/github.com/google/uuid/version1.go b/examples/go/vendor/github.com/google/uuid/version1.go new file mode 100644 index 0000000..4631096 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version1.go @@ -0,0 +1,44 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" +) + +// NewUUID returns a Version 1 UUID based on the current NodeID and clock +// sequence, and the current time. If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically. If the NodeID cannot +// be set NewUUID returns nil. If clock sequence has not been set by +// SetClockSequence then it will be set automatically. If GetTime fails to +// return the current NewUUID returns nil and an error. +// +// In most cases, New should be used. +func NewUUID() (UUID, error) { + var uuid UUID + now, seq, err := GetTime() + if err != nil { + return uuid, err + } + + timeLow := uint32(now & 0xffffffff) + timeMid := uint16((now >> 32) & 0xffff) + timeHi := uint16((now >> 48) & 0x0fff) + timeHi |= 0x1000 // Version 1 + + binary.BigEndian.PutUint32(uuid[0:], timeLow) + binary.BigEndian.PutUint16(uuid[4:], timeMid) + binary.BigEndian.PutUint16(uuid[6:], timeHi) + binary.BigEndian.PutUint16(uuid[8:], seq) + + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + copy(uuid[10:], nodeID[:]) + nodeMu.Unlock() + + return uuid, nil +} diff --git a/examples/go/vendor/github.com/google/uuid/version4.go b/examples/go/vendor/github.com/google/uuid/version4.go new file mode 100644 index 0000000..7697802 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version4.go @@ -0,0 +1,76 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "io" + +// New creates a new random UUID or panics. New is equivalent to +// the expression +// +// uuid.Must(uuid.NewRandom()) +func New() UUID { + return Must(NewRandom()) +} + +// NewString creates a new random UUID and returns it as a string or panics. +// NewString is equivalent to the expression +// +// uuid.New().String() +func NewString() string { + return Must(NewRandom()).String() +} + +// NewRandom returns a Random (Version 4) UUID. +// +// The strength of the UUIDs is based on the strength of the crypto/rand +// package. +// +// Uses the randomness pool if it was enabled with EnableRandPool. +// +// A note about uniqueness derived from the UUID Wikipedia entry: +// +// Randomly generated UUIDs have 122 random bits. One's annual risk of being +// hit by a meteorite is estimated to be one chance in 17 billion, that +// means the probability is about 0.00000000006 (6 × 10−11), +// equivalent to the odds of creating a few tens of trillions of UUIDs in a +// year and having one duplicate. +func NewRandom() (UUID, error) { + if !poolEnabled { + return NewRandomFromReader(rander) + } + return newRandomFromPool() +} + +// NewRandomFromReader returns a UUID based on bytes read from a given io.Reader. +func NewRandomFromReader(r io.Reader) (UUID, error) { + var uuid UUID + _, err := io.ReadFull(r, uuid[:]) + if err != nil { + return Nil, err + } + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} + +func newRandomFromPool() (UUID, error) { + var uuid UUID + poolMu.Lock() + if poolPos == randPoolSize { + _, err := io.ReadFull(rander, pool[:]) + if err != nil { + poolMu.Unlock() + return Nil, err + } + poolPos = 0 + } + copy(uuid[:], pool[poolPos:(poolPos+16)]) + poolPos += 16 + poolMu.Unlock() + + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid, nil +} diff --git a/examples/go/vendor/github.com/google/uuid/version6.go b/examples/go/vendor/github.com/google/uuid/version6.go new file mode 100644 index 0000000..339a959 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version6.go @@ -0,0 +1,56 @@ +// Copyright 2023 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "encoding/binary" + +// UUID version 6 is a field-compatible version of UUIDv1, reordered for improved DB locality. +// It is expected that UUIDv6 will primarily be used in contexts where there are existing v1 UUIDs. +// Systems that do not involve legacy UUIDv1 SHOULD consider using UUIDv7 instead. +// +// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#uuidv6 +// +// NewV6 returns a Version 6 UUID based on the current NodeID and clock +// sequence, and the current time. If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically. If the NodeID cannot +// be set NewV6 set NodeID is random bits automatically . If clock sequence has not been set by +// SetClockSequence then it will be set automatically. If GetTime fails to +// return the current NewV6 returns Nil and an error. +func NewV6() (UUID, error) { + var uuid UUID + now, seq, err := GetTime() + if err != nil { + return uuid, err + } + + /* + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | time_high | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | time_mid | time_low_and_version | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |clk_seq_hi_res | clk_seq_low | node (0-1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | node (2-5) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ + + binary.BigEndian.PutUint64(uuid[0:], uint64(now)) + binary.BigEndian.PutUint16(uuid[8:], seq) + + uuid[6] = 0x60 | (uuid[6] & 0x0F) + uuid[8] = 0x80 | (uuid[8] & 0x3F) + + nodeMu.Lock() + if nodeID == zeroID { + setNodeInterface("") + } + copy(uuid[10:], nodeID[:]) + nodeMu.Unlock() + + return uuid, nil +} diff --git a/examples/go/vendor/github.com/google/uuid/version7.go b/examples/go/vendor/github.com/google/uuid/version7.go new file mode 100644 index 0000000..3167b64 --- /dev/null +++ b/examples/go/vendor/github.com/google/uuid/version7.go @@ -0,0 +1,104 @@ +// Copyright 2023 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "io" +) + +// UUID version 7 features a time-ordered value field derived from the widely +// implemented and well known Unix Epoch timestamp source, +// the number of milliseconds seconds since midnight 1 Jan 1970 UTC, leap seconds excluded. +// As well as improved entropy characteristics over versions 1 or 6. +// +// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#name-uuid-version-7 +// +// Implementations SHOULD utilize UUID version 7 over UUID version 1 and 6 if possible. +// +// NewV7 returns a Version 7 UUID based on the current time(Unix Epoch). +// Uses the randomness pool if it was enabled with EnableRandPool. +// On error, NewV7 returns Nil and an error +func NewV7() (UUID, error) { + uuid, err := NewRandom() + if err != nil { + return uuid, err + } + makeV7(uuid[:]) + return uuid, nil +} + +// NewV7FromReader returns a Version 7 UUID based on the current time(Unix Epoch). +// it use NewRandomFromReader fill random bits. +// On error, NewV7FromReader returns Nil and an error. +func NewV7FromReader(r io.Reader) (UUID, error) { + uuid, err := NewRandomFromReader(r) + if err != nil { + return uuid, err + } + + makeV7(uuid[:]) + return uuid, nil +} + +// makeV7 fill 48 bits time (uuid[0] - uuid[5]), set version b0111 (uuid[6]) +// uuid[8] already has the right version number (Variant is 10) +// see function NewV7 and NewV7FromReader +func makeV7(uuid []byte) { + /* + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | unix_ts_ms | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | unix_ts_ms | ver | rand_a (12 bit seq) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |var| rand_b | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | rand_b | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ + _ = uuid[15] // bounds check + + t, s := getV7Time() + + uuid[0] = byte(t >> 40) + uuid[1] = byte(t >> 32) + uuid[2] = byte(t >> 24) + uuid[3] = byte(t >> 16) + uuid[4] = byte(t >> 8) + uuid[5] = byte(t) + + uuid[6] = 0x70 | (0x0F & byte(s>>8)) + uuid[7] = byte(s) +} + +// lastV7time is the last time we returned stored as: +// +// 52 bits of time in milliseconds since epoch +// 12 bits of (fractional nanoseconds) >> 8 +var lastV7time int64 + +const nanoPerMilli = 1000000 + +// getV7Time returns the time in milliseconds and nanoseconds / 256. +// The returned (milli << 12 + seq) is guarenteed to be greater than +// (milli << 12 + seq) returned by any previous call to getV7Time. +func getV7Time() (milli, seq int64) { + timeMu.Lock() + defer timeMu.Unlock() + + nano := timeNow().UnixNano() + milli = nano / nanoPerMilli + // Sequence number is between 0 and 3906 (nanoPerMilli>>8) + seq = (nano - milli*nanoPerMilli) >> 8 + now := milli<<12 + seq + if now <= lastV7time { + now = lastV7time + 1 + milli = now >> 12 + seq = now & 0xfff + } + lastV7time = now + return milli, seq +} diff --git a/examples/go/vendor/github.com/klauspost/compress/.gitattributes b/examples/go/vendor/github.com/klauspost/compress/.gitattributes new file mode 100644 index 0000000..4024335 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/.gitattributes @@ -0,0 +1,2 @@ +* -text +*.bin -text -diff diff --git a/examples/go/vendor/github.com/klauspost/compress/.gitignore b/examples/go/vendor/github.com/klauspost/compress/.gitignore new file mode 100644 index 0000000..d31b378 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/.gitignore @@ -0,0 +1,32 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof +/s2/cmd/_s2sx/sfx-exe + +# Linux perf files +perf.data +perf.data.old + +# gdb history +.gdb_history diff --git a/examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml b/examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml new file mode 100644 index 0000000..a229538 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/.goreleaser.yml @@ -0,0 +1,123 @@ +# This is an example goreleaser.yaml file with some sane defaults. +# Make sure to check the documentation at http://goreleaser.com +before: + hooks: + - ./gen.sh + +builds: + - + id: "s2c" + binary: s2c + main: ./s2/cmd/s2c/main.go + flags: + - -trimpath + env: + - CGO_ENABLED=0 + goos: + - aix + - linux + - freebsd + - netbsd + - windows + - darwin + goarch: + - 386 + - amd64 + - arm + - arm64 + - ppc64 + - ppc64le + - mips64 + - mips64le + goarm: + - 7 + - + id: "s2d" + binary: s2d + main: ./s2/cmd/s2d/main.go + flags: + - -trimpath + env: + - CGO_ENABLED=0 + goos: + - aix + - linux + - freebsd + - netbsd + - windows + - darwin + goarch: + - 386 + - amd64 + - arm + - arm64 + - ppc64 + - ppc64le + - mips64 + - mips64le + goarm: + - 7 + - + id: "s2sx" + binary: s2sx + main: ./s2/cmd/_s2sx/main.go + flags: + - -modfile=s2sx.mod + - -trimpath + env: + - CGO_ENABLED=0 + goos: + - aix + - linux + - freebsd + - netbsd + - windows + - darwin + goarch: + - 386 + - amd64 + - arm + - arm64 + - ppc64 + - ppc64le + - mips64 + - mips64le + goarm: + - 7 + +archives: + - + id: s2-binaries + name_template: "s2-{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + format_overrides: + - goos: windows + format: zip + files: + - unpack/* + - s2/LICENSE + - s2/README.md +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ .Tag }}-next" +changelog: + sort: asc + filters: + exclude: + - '^doc:' + - '^docs:' + - '^test:' + - '^tests:' + - '^Update\sREADME.md' + +nfpms: + - + file_name_template: "s2_package__{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + vendor: Klaus Post + homepage: https://github.com/klauspost/compress + maintainer: Klaus Post + description: S2 Compression Tool + license: BSD 3-Clause + formats: + - deb + - rpm diff --git a/examples/go/vendor/github.com/klauspost/compress/LICENSE b/examples/go/vendor/github.com/klauspost/compress/LICENSE new file mode 100644 index 0000000..87d5574 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/LICENSE @@ -0,0 +1,304 @@ +Copyright (c) 2012 The Go Authors. All rights reserved. +Copyright (c) 2019 Klaus Post. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------ + +Files: gzhttp/* + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2016-2017 The New York Times Company + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +------------------ + +Files: s2/cmd/internal/readahead/* + +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--------------------- +Files: snappy/* +Files: internal/snapref/* + +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------- + +Files: s2/cmd/internal/filepathx/* + +Copyright 2016 The filepathx Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/examples/go/vendor/github.com/klauspost/compress/README.md b/examples/go/vendor/github.com/klauspost/compress/README.md new file mode 100644 index 0000000..05c7359 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/README.md @@ -0,0 +1,700 @@ +# compress + +This package provides various compression algorithms. + +* [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression in pure Go. +* [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) is a high performance replacement for Snappy. +* Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). +* [snappy](https://github.com/klauspost/compress/tree/master/snappy) is a drop-in replacement for `github.com/golang/snappy` offering better compression and concurrent streams. +* [huff0](https://github.com/klauspost/compress/tree/master/huff0) and [FSE](https://github.com/klauspost/compress/tree/master/fse) implementations for raw entropy encoding. +* [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp) Provides client and server wrappers for handling gzipped requests efficiently. +* [pgzip](https://github.com/klauspost/pgzip) is a separate package that provides a very fast parallel gzip implementation. + +[![Go Reference](https://pkg.go.dev/badge/klauspost/compress.svg)](https://pkg.go.dev/github.com/klauspost/compress?tab=subdirectories) +[![Go](https://github.com/klauspost/compress/actions/workflows/go.yml/badge.svg)](https://github.com/klauspost/compress/actions/workflows/go.yml) +[![Sourcegraph Badge](https://sourcegraph.com/github.com/klauspost/compress/-/badge.svg)](https://sourcegraph.com/github.com/klauspost/compress?badge) + +# changelog + +* Feb 5th, 2024 - [1.17.6](https://github.com/klauspost/compress/releases/tag/v1.17.6) + * zstd: Fix incorrect repeat coding in best mode https://github.com/klauspost/compress/pull/923 + * s2: Fix DecodeConcurrent deadlock on errors https://github.com/klauspost/compress/pull/925 + +* Jan 26th, 2024 - [v1.17.5](https://github.com/klauspost/compress/releases/tag/v1.17.5) + * flate: Fix reset with dictionary on custom window encodes https://github.com/klauspost/compress/pull/912 + * zstd: Add Frame header encoding and stripping https://github.com/klauspost/compress/pull/908 + * zstd: Limit better/best default window to 8MB https://github.com/klauspost/compress/pull/913 + * zstd: Speed improvements by @greatroar in https://github.com/klauspost/compress/pull/896 https://github.com/klauspost/compress/pull/910 + * s2: Fix callbacks for skippable blocks and disallow 0xfe (Padding) by @Jille in https://github.com/klauspost/compress/pull/916 https://github.com/klauspost/compress/pull/917 +https://github.com/klauspost/compress/pull/919 https://github.com/klauspost/compress/pull/918 + +* Dec 1st, 2023 - [v1.17.4](https://github.com/klauspost/compress/releases/tag/v1.17.4) + * huff0: Speed up symbol counting by @greatroar in https://github.com/klauspost/compress/pull/887 + * huff0: Remove byteReader by @greatroar in https://github.com/klauspost/compress/pull/886 + * gzhttp: Allow overriding decompression on transport https://github.com/klauspost/compress/pull/892 + * gzhttp: Clamp compression level https://github.com/klauspost/compress/pull/890 + * gzip: Error out if reserved bits are set https://github.com/klauspost/compress/pull/891 + +* Nov 15th, 2023 - [v1.17.3](https://github.com/klauspost/compress/releases/tag/v1.17.3) + * fse: Fix max header size https://github.com/klauspost/compress/pull/881 + * zstd: Improve better/best compression https://github.com/klauspost/compress/pull/877 + * gzhttp: Fix missing content type on Close https://github.com/klauspost/compress/pull/883 + +* Oct 22nd, 2023 - [v1.17.2](https://github.com/klauspost/compress/releases/tag/v1.17.2) + * zstd: Fix rare *CORRUPTION* output in "best" mode. See https://github.com/klauspost/compress/pull/876 + +* Oct 14th, 2023 - [v1.17.1](https://github.com/klauspost/compress/releases/tag/v1.17.1) + * s2: Fix S2 "best" dictionary wrong encoding by @klauspost in https://github.com/klauspost/compress/pull/871 + * flate: Reduce allocations in decompressor and minor code improvements by @fakefloordiv in https://github.com/klauspost/compress/pull/869 + * s2: Fix EstimateBlockSize on 6&7 length input by @klauspost in https://github.com/klauspost/compress/pull/867 + +* Sept 19th, 2023 - [v1.17.0](https://github.com/klauspost/compress/releases/tag/v1.17.0) + * Add experimental dictionary builder https://github.com/klauspost/compress/pull/853 + * Add xerial snappy read/writer https://github.com/klauspost/compress/pull/838 + * flate: Add limited window compression https://github.com/klauspost/compress/pull/843 + * s2: Do 2 overlapping match checks https://github.com/klauspost/compress/pull/839 + * flate: Add amd64 assembly matchlen https://github.com/klauspost/compress/pull/837 + * gzip: Copy bufio.Reader on Reset by @thatguystone in https://github.com/klauspost/compress/pull/860 + +

                + See changes to v1.16.x + + +* July 1st, 2023 - [v1.16.7](https://github.com/klauspost/compress/releases/tag/v1.16.7) + * zstd: Fix default level first dictionary encode https://github.com/klauspost/compress/pull/829 + * s2: add GetBufferCapacity() method by @GiedriusS in https://github.com/klauspost/compress/pull/832 + +* June 13, 2023 - [v1.16.6](https://github.com/klauspost/compress/releases/tag/v1.16.6) + * zstd: correctly ignore WithEncoderPadding(1) by @ianlancetaylor in https://github.com/klauspost/compress/pull/806 + * zstd: Add amd64 match length assembly https://github.com/klauspost/compress/pull/824 + * gzhttp: Handle informational headers by @rtribotte in https://github.com/klauspost/compress/pull/815 + * s2: Improve Better compression slightly https://github.com/klauspost/compress/pull/663 + +* Apr 16, 2023 - [v1.16.5](https://github.com/klauspost/compress/releases/tag/v1.16.5) + * zstd: readByte needs to use io.ReadFull by @jnoxon in https://github.com/klauspost/compress/pull/802 + * gzip: Fix WriterTo after initial read https://github.com/klauspost/compress/pull/804 + +* Apr 5, 2023 - [v1.16.4](https://github.com/klauspost/compress/releases/tag/v1.16.4) + * zstd: Improve zstd best efficiency by @greatroar and @klauspost in https://github.com/klauspost/compress/pull/784 + * zstd: Respect WithAllLitEntropyCompression https://github.com/klauspost/compress/pull/792 + * zstd: Fix amd64 not always detecting corrupt data https://github.com/klauspost/compress/pull/785 + * zstd: Various minor improvements by @greatroar in https://github.com/klauspost/compress/pull/788 https://github.com/klauspost/compress/pull/794 https://github.com/klauspost/compress/pull/795 + * s2: Fix huge block overflow https://github.com/klauspost/compress/pull/779 + * s2: Allow CustomEncoder fallback https://github.com/klauspost/compress/pull/780 + * gzhttp: Suppport ResponseWriter Unwrap() in gzhttp handler by @jgimenez in https://github.com/klauspost/compress/pull/799 + +* Mar 13, 2023 - [v1.16.1](https://github.com/klauspost/compress/releases/tag/v1.16.1) + * zstd: Speed up + improve best encoder by @greatroar in https://github.com/klauspost/compress/pull/776 + * gzhttp: Add optional [BREACH mitigation](https://github.com/klauspost/compress/tree/master/gzhttp#breach-mitigation). https://github.com/klauspost/compress/pull/762 https://github.com/klauspost/compress/pull/768 https://github.com/klauspost/compress/pull/769 https://github.com/klauspost/compress/pull/770 https://github.com/klauspost/compress/pull/767 + * s2: Add Intel LZ4s converter https://github.com/klauspost/compress/pull/766 + * zstd: Minor bug fixes https://github.com/klauspost/compress/pull/771 https://github.com/klauspost/compress/pull/772 https://github.com/klauspost/compress/pull/773 + * huff0: Speed up compress1xDo by @greatroar in https://github.com/klauspost/compress/pull/774 + +* Feb 26, 2023 - [v1.16.0](https://github.com/klauspost/compress/releases/tag/v1.16.0) + * s2: Add [Dictionary](https://github.com/klauspost/compress/tree/master/s2#dictionaries) support. https://github.com/klauspost/compress/pull/685 + * s2: Add Compression Size Estimate. https://github.com/klauspost/compress/pull/752 + * s2: Add support for custom stream encoder. https://github.com/klauspost/compress/pull/755 + * s2: Add LZ4 block converter. https://github.com/klauspost/compress/pull/748 + * s2: Support io.ReaderAt in ReadSeeker. https://github.com/klauspost/compress/pull/747 + * s2c/s2sx: Use concurrent decoding. https://github.com/klauspost/compress/pull/746 +
                + +
                + See changes to v1.15.x + +* Jan 21st, 2023 (v1.15.15) + * deflate: Improve level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/739 + * zstd: Add delta encoding support by @greatroar in https://github.com/klauspost/compress/pull/728 + * zstd: Various speed improvements by @greatroar https://github.com/klauspost/compress/pull/741 https://github.com/klauspost/compress/pull/734 https://github.com/klauspost/compress/pull/736 https://github.com/klauspost/compress/pull/744 https://github.com/klauspost/compress/pull/743 https://github.com/klauspost/compress/pull/745 + * gzhttp: Add SuffixETag() and DropETag() options to prevent ETag collisions on compressed responses by @willbicks in https://github.com/klauspost/compress/pull/740 + +* Jan 3rd, 2023 (v1.15.14) + + * flate: Improve speed in big stateless blocks https://github.com/klauspost/compress/pull/718 + * zstd: Minor speed tweaks by @greatroar in https://github.com/klauspost/compress/pull/716 https://github.com/klauspost/compress/pull/720 + * export NoGzipResponseWriter for custom ResponseWriter wrappers by @harshavardhana in https://github.com/klauspost/compress/pull/722 + * s2: Add example for indexing and existing stream https://github.com/klauspost/compress/pull/723 + +* Dec 11, 2022 (v1.15.13) + * zstd: Add [MaxEncodedSize](https://pkg.go.dev/github.com/klauspost/compress@v1.15.13/zstd#Encoder.MaxEncodedSize) to encoder https://github.com/klauspost/compress/pull/691 + * zstd: Various tweaks and improvements https://github.com/klauspost/compress/pull/693 https://github.com/klauspost/compress/pull/695 https://github.com/klauspost/compress/pull/696 https://github.com/klauspost/compress/pull/701 https://github.com/klauspost/compress/pull/702 https://github.com/klauspost/compress/pull/703 https://github.com/klauspost/compress/pull/704 https://github.com/klauspost/compress/pull/705 https://github.com/klauspost/compress/pull/706 https://github.com/klauspost/compress/pull/707 https://github.com/klauspost/compress/pull/708 + +* Oct 26, 2022 (v1.15.12) + + * zstd: Tweak decoder allocs. https://github.com/klauspost/compress/pull/680 + * gzhttp: Always delete `HeaderNoCompression` https://github.com/klauspost/compress/pull/683 + +* Sept 26, 2022 (v1.15.11) + + * flate: Improve level 1-3 compression https://github.com/klauspost/compress/pull/678 + * zstd: Improve "best" compression by @nightwolfz in https://github.com/klauspost/compress/pull/677 + * zstd: Fix+reduce decompression allocations https://github.com/klauspost/compress/pull/668 + * zstd: Fix non-effective noescape tag https://github.com/klauspost/compress/pull/667 + +* Sept 16, 2022 (v1.15.10) + + * zstd: Add [WithDecodeAllCapLimit](https://pkg.go.dev/github.com/klauspost/compress@v1.15.10/zstd#WithDecodeAllCapLimit) https://github.com/klauspost/compress/pull/649 + * Add Go 1.19 - deprecate Go 1.16 https://github.com/klauspost/compress/pull/651 + * flate: Improve level 5+6 compression https://github.com/klauspost/compress/pull/656 + * zstd: Improve "better" compresssion https://github.com/klauspost/compress/pull/657 + * s2: Improve "best" compression https://github.com/klauspost/compress/pull/658 + * s2: Improve "better" compression. https://github.com/klauspost/compress/pull/635 + * s2: Slightly faster non-assembly decompression https://github.com/klauspost/compress/pull/646 + * Use arrays for constant size copies https://github.com/klauspost/compress/pull/659 + +* July 21, 2022 (v1.15.9) + + * zstd: Fix decoder crash on amd64 (no BMI) on invalid input https://github.com/klauspost/compress/pull/645 + * zstd: Disable decoder extended memory copies (amd64) due to possible crashes https://github.com/klauspost/compress/pull/644 + * zstd: Allow single segments up to "max decoded size" by @klauspost in https://github.com/klauspost/compress/pull/643 + +* July 13, 2022 (v1.15.8) + + * gzip: fix stack exhaustion bug in Reader.Read https://github.com/klauspost/compress/pull/641 + * s2: Add Index header trim/restore https://github.com/klauspost/compress/pull/638 + * zstd: Optimize seqdeq amd64 asm by @greatroar in https://github.com/klauspost/compress/pull/636 + * zstd: Improve decoder memcopy https://github.com/klauspost/compress/pull/637 + * huff0: Pass a single bitReader pointer to asm by @greatroar in https://github.com/klauspost/compress/pull/634 + * zstd: Branchless getBits for amd64 w/o BMI2 by @greatroar in https://github.com/klauspost/compress/pull/640 + * gzhttp: Remove header before writing https://github.com/klauspost/compress/pull/639 + +* June 29, 2022 (v1.15.7) + + * s2: Fix absolute forward seeks https://github.com/klauspost/compress/pull/633 + * zip: Merge upstream https://github.com/klauspost/compress/pull/631 + * zip: Re-add zip64 fix https://github.com/klauspost/compress/pull/624 + * zstd: translate fseDecoder.buildDtable into asm by @WojciechMula in https://github.com/klauspost/compress/pull/598 + * flate: Faster histograms https://github.com/klauspost/compress/pull/620 + * deflate: Use compound hcode https://github.com/klauspost/compress/pull/622 + +* June 3, 2022 (v1.15.6) + * s2: Improve coding for long, close matches https://github.com/klauspost/compress/pull/613 + * s2c: Add Snappy/S2 stream recompression https://github.com/klauspost/compress/pull/611 + * zstd: Always use configured block size https://github.com/klauspost/compress/pull/605 + * zstd: Fix incorrect hash table placement for dict encoding in default https://github.com/klauspost/compress/pull/606 + * zstd: Apply default config to ZipDecompressor without options https://github.com/klauspost/compress/pull/608 + * gzhttp: Exclude more common archive formats https://github.com/klauspost/compress/pull/612 + * s2: Add ReaderIgnoreCRC https://github.com/klauspost/compress/pull/609 + * s2: Remove sanity load on index creation https://github.com/klauspost/compress/pull/607 + * snappy: Use dedicated function for scoring https://github.com/klauspost/compress/pull/614 + * s2c+s2d: Use official snappy framed extension https://github.com/klauspost/compress/pull/610 + +* May 25, 2022 (v1.15.5) + * s2: Add concurrent stream decompression https://github.com/klauspost/compress/pull/602 + * s2: Fix final emit oob read crash on amd64 https://github.com/klauspost/compress/pull/601 + * huff0: asm implementation of Decompress1X by @WojciechMula https://github.com/klauspost/compress/pull/596 + * zstd: Use 1 less goroutine for stream decoding https://github.com/klauspost/compress/pull/588 + * zstd: Copy literal in 16 byte blocks when possible https://github.com/klauspost/compress/pull/592 + * zstd: Speed up when WithDecoderLowmem(false) https://github.com/klauspost/compress/pull/599 + * zstd: faster next state update in BMI2 version of decode by @WojciechMula in https://github.com/klauspost/compress/pull/593 + * huff0: Do not check max size when reading table. https://github.com/klauspost/compress/pull/586 + * flate: Inplace hashing for level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/590 + + +* May 11, 2022 (v1.15.4) + * huff0: decompress directly into output by @WojciechMula in [#577](https://github.com/klauspost/compress/pull/577) + * inflate: Keep dict on stack [#581](https://github.com/klauspost/compress/pull/581) + * zstd: Faster decoding memcopy in asm [#583](https://github.com/klauspost/compress/pull/583) + * zstd: Fix ignored crc [#580](https://github.com/klauspost/compress/pull/580) + +* May 5, 2022 (v1.15.3) + * zstd: Allow to ignore checksum checking by @WojciechMula [#572](https://github.com/klauspost/compress/pull/572) + * s2: Fix incorrect seek for io.SeekEnd in [#575](https://github.com/klauspost/compress/pull/575) + +* Apr 26, 2022 (v1.15.2) + * zstd: Add x86-64 assembly for decompression on streams and blocks. Contributed by [@WojciechMula](https://github.com/WojciechMula). Typically 2x faster. [#528](https://github.com/klauspost/compress/pull/528) [#531](https://github.com/klauspost/compress/pull/531) [#545](https://github.com/klauspost/compress/pull/545) [#537](https://github.com/klauspost/compress/pull/537) + * zstd: Add options to ZipDecompressor and fixes [#539](https://github.com/klauspost/compress/pull/539) + * s2: Use sorted search for index [#555](https://github.com/klauspost/compress/pull/555) + * Minimum version is Go 1.16, added CI test on 1.18. + +* Mar 11, 2022 (v1.15.1) + * huff0: Add x86 assembly of Decode4X by @WojciechMula in [#512](https://github.com/klauspost/compress/pull/512) + * zstd: Reuse zip decoders in [#514](https://github.com/klauspost/compress/pull/514) + * zstd: Detect extra block data and report as corrupted in [#520](https://github.com/klauspost/compress/pull/520) + * zstd: Handle zero sized frame content size stricter in [#521](https://github.com/klauspost/compress/pull/521) + * zstd: Add stricter block size checks in [#523](https://github.com/klauspost/compress/pull/523) + +* Mar 3, 2022 (v1.15.0) + * zstd: Refactor decoder by @klauspost in [#498](https://github.com/klauspost/compress/pull/498) + * zstd: Add stream encoding without goroutines by @klauspost in [#505](https://github.com/klauspost/compress/pull/505) + * huff0: Prevent single blocks exceeding 16 bits by @klauspost in[#507](https://github.com/klauspost/compress/pull/507) + * flate: Inline literal emission by @klauspost in [#509](https://github.com/klauspost/compress/pull/509) + * gzhttp: Add zstd to transport by @klauspost in [#400](https://github.com/klauspost/compress/pull/400) + * gzhttp: Make content-type optional by @klauspost in [#510](https://github.com/klauspost/compress/pull/510) + +Both compression and decompression now supports "synchronous" stream operations. This means that whenever "concurrency" is set to 1, they will operate without spawning goroutines. + +Stream decompression is now faster on asynchronous, since the goroutine allocation much more effectively splits the workload. On typical streams this will typically use 2 cores fully for decompression. When a stream has finished decoding no goroutines will be left over, so decoders can now safely be pooled and still be garbage collected. + +While the release has been extensively tested, it is recommended to testing when upgrading. + +
                + +
                + See changes to v1.14.x + +* Feb 22, 2022 (v1.14.4) + * flate: Fix rare huffman only (-2) corruption. [#503](https://github.com/klauspost/compress/pull/503) + * zip: Update deprecated CreateHeaderRaw to correctly call CreateRaw by @saracen in [#502](https://github.com/klauspost/compress/pull/502) + * zip: don't read data descriptor early by @saracen in [#501](https://github.com/klauspost/compress/pull/501) #501 + * huff0: Use static decompression buffer up to 30% faster by @klauspost in [#499](https://github.com/klauspost/compress/pull/499) [#500](https://github.com/klauspost/compress/pull/500) + +* Feb 17, 2022 (v1.14.3) + * flate: Improve fastest levels compression speed ~10% more throughput. [#482](https://github.com/klauspost/compress/pull/482) [#489](https://github.com/klauspost/compress/pull/489) [#490](https://github.com/klauspost/compress/pull/490) [#491](https://github.com/klauspost/compress/pull/491) [#494](https://github.com/klauspost/compress/pull/494) [#478](https://github.com/klauspost/compress/pull/478) + * flate: Faster decompression speed, ~5-10%. [#483](https://github.com/klauspost/compress/pull/483) + * s2: Faster compression with Go v1.18 and amd64 microarch level 3+. [#484](https://github.com/klauspost/compress/pull/484) [#486](https://github.com/klauspost/compress/pull/486) + +* Jan 25, 2022 (v1.14.2) + * zstd: improve header decoder by @dsnet [#476](https://github.com/klauspost/compress/pull/476) + * zstd: Add bigger default blocks [#469](https://github.com/klauspost/compress/pull/469) + * zstd: Remove unused decompression buffer [#470](https://github.com/klauspost/compress/pull/470) + * zstd: Fix logically dead code by @ningmingxiao [#472](https://github.com/klauspost/compress/pull/472) + * flate: Improve level 7-9 [#471](https://github.com/klauspost/compress/pull/471) [#473](https://github.com/klauspost/compress/pull/473) + * zstd: Add noasm tag for xxhash [#475](https://github.com/klauspost/compress/pull/475) + +* Jan 11, 2022 (v1.14.1) + * s2: Add stream index in [#462](https://github.com/klauspost/compress/pull/462) + * flate: Speed and efficiency improvements in [#439](https://github.com/klauspost/compress/pull/439) [#461](https://github.com/klauspost/compress/pull/461) [#455](https://github.com/klauspost/compress/pull/455) [#452](https://github.com/klauspost/compress/pull/452) [#458](https://github.com/klauspost/compress/pull/458) + * zstd: Performance improvement in [#420]( https://github.com/klauspost/compress/pull/420) [#456](https://github.com/klauspost/compress/pull/456) [#437](https://github.com/klauspost/compress/pull/437) [#467](https://github.com/klauspost/compress/pull/467) [#468](https://github.com/klauspost/compress/pull/468) + * zstd: add arm64 xxhash assembly in [#464](https://github.com/klauspost/compress/pull/464) + * Add garbled for binaries for s2 in [#445](https://github.com/klauspost/compress/pull/445) +
                + +
                + See changes to v1.13.x + +* Aug 30, 2021 (v1.13.5) + * gz/zlib/flate: Alias stdlib errors [#425](https://github.com/klauspost/compress/pull/425) + * s2: Add block support to commandline tools [#413](https://github.com/klauspost/compress/pull/413) + * zstd: pooledZipWriter should return Writers to the same pool [#426](https://github.com/klauspost/compress/pull/426) + * Removed golang/snappy as external dependency for tests [#421](https://github.com/klauspost/compress/pull/421) + +* Aug 12, 2021 (v1.13.4) + * Add [snappy replacement package](https://github.com/klauspost/compress/tree/master/snappy). + * zstd: Fix incorrect encoding in "best" mode [#415](https://github.com/klauspost/compress/pull/415) + +* Aug 3, 2021 (v1.13.3) + * zstd: Improve Best compression [#404](https://github.com/klauspost/compress/pull/404) + * zstd: Fix WriteTo error forwarding [#411](https://github.com/klauspost/compress/pull/411) + * gzhttp: Return http.HandlerFunc instead of http.Handler. Unlikely breaking change. [#406](https://github.com/klauspost/compress/pull/406) + * s2sx: Fix max size error [#399](https://github.com/klauspost/compress/pull/399) + * zstd: Add optional stream content size on reset [#401](https://github.com/klauspost/compress/pull/401) + * zstd: use SpeedBestCompression for level >= 10 [#410](https://github.com/klauspost/compress/pull/410) + +* Jun 14, 2021 (v1.13.1) + * s2: Add full Snappy output support [#396](https://github.com/klauspost/compress/pull/396) + * zstd: Add configurable [Decoder window](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithDecoderMaxWindow) size [#394](https://github.com/klauspost/compress/pull/394) + * gzhttp: Add header to skip compression [#389](https://github.com/klauspost/compress/pull/389) + * s2: Improve speed with bigger output margin [#395](https://github.com/klauspost/compress/pull/395) + +* Jun 3, 2021 (v1.13.0) + * Added [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp#gzip-handler) which allows wrapping HTTP servers and clients with GZIP compressors. + * zstd: Detect short invalid signatures [#382](https://github.com/klauspost/compress/pull/382) + * zstd: Spawn decoder goroutine only if needed. [#380](https://github.com/klauspost/compress/pull/380) +
                + + +
                + See changes to v1.12.x + +* May 25, 2021 (v1.12.3) + * deflate: Better/faster Huffman encoding [#374](https://github.com/klauspost/compress/pull/374) + * deflate: Allocate less for history. [#375](https://github.com/klauspost/compress/pull/375) + * zstd: Forward read errors [#373](https://github.com/klauspost/compress/pull/373) + +* Apr 27, 2021 (v1.12.2) + * zstd: Improve better/best compression [#360](https://github.com/klauspost/compress/pull/360) [#364](https://github.com/klauspost/compress/pull/364) [#365](https://github.com/klauspost/compress/pull/365) + * zstd: Add helpers to compress/decompress zstd inside zip files [#363](https://github.com/klauspost/compress/pull/363) + * deflate: Improve level 5+6 compression [#367](https://github.com/klauspost/compress/pull/367) + * s2: Improve better/best compression [#358](https://github.com/klauspost/compress/pull/358) [#359](https://github.com/klauspost/compress/pull/358) + * s2: Load after checking src limit on amd64. [#362](https://github.com/klauspost/compress/pull/362) + * s2sx: Limit max executable size [#368](https://github.com/klauspost/compress/pull/368) + +* Apr 14, 2021 (v1.12.1) + * snappy package removed. Upstream added as dependency. + * s2: Better compression in "best" mode [#353](https://github.com/klauspost/compress/pull/353) + * s2sx: Add stdin input and detect pre-compressed from signature [#352](https://github.com/klauspost/compress/pull/352) + * s2c/s2d: Add http as possible input [#348](https://github.com/klauspost/compress/pull/348) + * s2c/s2d/s2sx: Always truncate when writing files [#352](https://github.com/klauspost/compress/pull/352) + * zstd: Reduce memory usage further when using [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) [#346](https://github.com/klauspost/compress/pull/346) + * s2: Fix potential problem with amd64 assembly and profilers [#349](https://github.com/klauspost/compress/pull/349) +
                + +
                + See changes to v1.11.x + +* Mar 26, 2021 (v1.11.13) + * zstd: Big speedup on small dictionary encodes [#344](https://github.com/klauspost/compress/pull/344) [#345](https://github.com/klauspost/compress/pull/345) + * zstd: Add [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) encoder option [#336](https://github.com/klauspost/compress/pull/336) + * deflate: Improve entropy compression [#338](https://github.com/klauspost/compress/pull/338) + * s2: Clean up and minor performance improvement in best [#341](https://github.com/klauspost/compress/pull/341) + +* Mar 5, 2021 (v1.11.12) + * s2: Add `s2sx` binary that creates [self extracting archives](https://github.com/klauspost/compress/tree/master/s2#s2sx-self-extracting-archives). + * s2: Speed up decompression on non-assembly platforms [#328](https://github.com/klauspost/compress/pull/328) + +* Mar 1, 2021 (v1.11.9) + * s2: Add ARM64 decompression assembly. Around 2x output speed. [#324](https://github.com/klauspost/compress/pull/324) + * s2: Improve "better" speed and efficiency. [#325](https://github.com/klauspost/compress/pull/325) + * s2: Fix binaries. + +* Feb 25, 2021 (v1.11.8) + * s2: Fixed occational out-of-bounds write on amd64. Upgrade recommended. + * s2: Add AMD64 assembly for better mode. 25-50% faster. [#315](https://github.com/klauspost/compress/pull/315) + * s2: Less upfront decoder allocation. [#322](https://github.com/klauspost/compress/pull/322) + * zstd: Faster "compression" of incompressible data. [#314](https://github.com/klauspost/compress/pull/314) + * zip: Fix zip64 headers. [#313](https://github.com/klauspost/compress/pull/313) + +* Jan 14, 2021 (v1.11.7) + * Use Bytes() interface to get bytes across packages. [#309](https://github.com/klauspost/compress/pull/309) + * s2: Add 'best' compression option. [#310](https://github.com/klauspost/compress/pull/310) + * s2: Add ReaderMaxBlockSize, changes `s2.NewReader` signature to include varargs. [#311](https://github.com/klauspost/compress/pull/311) + * s2: Fix crash on small better buffers. [#308](https://github.com/klauspost/compress/pull/308) + * s2: Clean up decoder. [#312](https://github.com/klauspost/compress/pull/312) + +* Jan 7, 2021 (v1.11.6) + * zstd: Make decoder allocations smaller [#306](https://github.com/klauspost/compress/pull/306) + * zstd: Free Decoder resources when Reset is called with a nil io.Reader [#305](https://github.com/klauspost/compress/pull/305) + +* Dec 20, 2020 (v1.11.4) + * zstd: Add Best compression mode [#304](https://github.com/klauspost/compress/pull/304) + * Add header decoder [#299](https://github.com/klauspost/compress/pull/299) + * s2: Add uncompressed stream option [#297](https://github.com/klauspost/compress/pull/297) + * Simplify/speed up small blocks with known max size. [#300](https://github.com/klauspost/compress/pull/300) + * zstd: Always reset literal dict encoder [#303](https://github.com/klauspost/compress/pull/303) + +* Nov 15, 2020 (v1.11.3) + * inflate: 10-15% faster decompression [#293](https://github.com/klauspost/compress/pull/293) + * zstd: Tweak DecodeAll default allocation [#295](https://github.com/klauspost/compress/pull/295) + +* Oct 11, 2020 (v1.11.2) + * s2: Fix out of bounds read in "better" block compression [#291](https://github.com/klauspost/compress/pull/291) + +* Oct 1, 2020 (v1.11.1) + * zstd: Set allLitEntropy true in default configuration [#286](https://github.com/klauspost/compress/pull/286) + +* Sept 8, 2020 (v1.11.0) + * zstd: Add experimental compression [dictionaries](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) [#281](https://github.com/klauspost/compress/pull/281) + * zstd: Fix mixed Write and ReadFrom calls [#282](https://github.com/klauspost/compress/pull/282) + * inflate/gz: Limit variable shifts, ~5% faster decompression [#274](https://github.com/klauspost/compress/pull/274) +
                + +
                + See changes to v1.10.x + +* July 8, 2020 (v1.10.11) + * zstd: Fix extra block when compressing with ReadFrom. [#278](https://github.com/klauspost/compress/pull/278) + * huff0: Also populate compression table when reading decoding table. [#275](https://github.com/klauspost/compress/pull/275) + +* June 23, 2020 (v1.10.10) + * zstd: Skip entropy compression in fastest mode when no matches. [#270](https://github.com/klauspost/compress/pull/270) + +* June 16, 2020 (v1.10.9): + * zstd: API change for specifying dictionaries. See [#268](https://github.com/klauspost/compress/pull/268) + * zip: update CreateHeaderRaw to handle zip64 fields. [#266](https://github.com/klauspost/compress/pull/266) + * Fuzzit tests removed. The service has been purchased and is no longer available. + +* June 5, 2020 (v1.10.8): + * 1.15x faster zstd block decompression. [#265](https://github.com/klauspost/compress/pull/265) + +* June 1, 2020 (v1.10.7): + * Added zstd decompression [dictionary support](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) + * Increase zstd decompression speed up to 1.19x. [#259](https://github.com/klauspost/compress/pull/259) + * Remove internal reset call in zstd compression and reduce allocations. [#263](https://github.com/klauspost/compress/pull/263) + +* May 21, 2020: (v1.10.6) + * zstd: Reduce allocations while decoding. [#258](https://github.com/klauspost/compress/pull/258), [#252](https://github.com/klauspost/compress/pull/252) + * zstd: Stricter decompression checks. + +* April 12, 2020: (v1.10.5) + * s2-commands: Flush output when receiving SIGINT. [#239](https://github.com/klauspost/compress/pull/239) + +* Apr 8, 2020: (v1.10.4) + * zstd: Minor/special case optimizations. [#251](https://github.com/klauspost/compress/pull/251), [#250](https://github.com/klauspost/compress/pull/250), [#249](https://github.com/klauspost/compress/pull/249), [#247](https://github.com/klauspost/compress/pull/247) +* Mar 11, 2020: (v1.10.3) + * s2: Use S2 encoder in pure Go mode for Snappy output as well. [#245](https://github.com/klauspost/compress/pull/245) + * s2: Fix pure Go block encoder. [#244](https://github.com/klauspost/compress/pull/244) + * zstd: Added "better compression" mode. [#240](https://github.com/klauspost/compress/pull/240) + * zstd: Improve speed of fastest compression mode by 5-10% [#241](https://github.com/klauspost/compress/pull/241) + * zstd: Skip creating encoders when not needed. [#238](https://github.com/klauspost/compress/pull/238) + +* Feb 27, 2020: (v1.10.2) + * Close to 50% speedup in inflate (gzip/zip decompression). [#236](https://github.com/klauspost/compress/pull/236) [#234](https://github.com/klauspost/compress/pull/234) [#232](https://github.com/klauspost/compress/pull/232) + * Reduce deflate level 1-6 memory usage up to 59%. [#227](https://github.com/klauspost/compress/pull/227) + +* Feb 18, 2020: (v1.10.1) + * Fix zstd crash when resetting multiple times without sending data. [#226](https://github.com/klauspost/compress/pull/226) + * deflate: Fix dictionary use on level 1-6. [#224](https://github.com/klauspost/compress/pull/224) + * Remove deflate writer reference when closing. [#224](https://github.com/klauspost/compress/pull/224) + +* Feb 4, 2020: (v1.10.0) + * Add optional dictionary to [stateless deflate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc#StatelessDeflate). Breaking change, send `nil` for previous behaviour. [#216](https://github.com/klauspost/compress/pull/216) + * Fix buffer overflow on repeated small block deflate. [#218](https://github.com/klauspost/compress/pull/218) + * Allow copying content from an existing ZIP file without decompressing+compressing. [#214](https://github.com/klauspost/compress/pull/214) + * Added [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) AMD64 assembler and various optimizations. Stream speed >10GB/s. [#186](https://github.com/klauspost/compress/pull/186) + +
                + +
                + See changes prior to v1.10.0 + +* Jan 20,2020 (v1.9.8) Optimize gzip/deflate with better size estimates and faster table generation. [#207](https://github.com/klauspost/compress/pull/207) by [luyu6056](https://github.com/luyu6056), [#206](https://github.com/klauspost/compress/pull/206). +* Jan 11, 2020: S2 Encode/Decode will use provided buffer if capacity is big enough. [#204](https://github.com/klauspost/compress/pull/204) +* Jan 5, 2020: (v1.9.7) Fix another zstd regression in v1.9.5 - v1.9.6 removed. +* Jan 4, 2020: (v1.9.6) Regression in v1.9.5 fixed causing corrupt zstd encodes in rare cases. +* Jan 4, 2020: Faster IO in [s2c + s2d commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) compression/decompression. [#192](https://github.com/klauspost/compress/pull/192) +* Dec 29, 2019: Removed v1.9.5 since fuzz tests showed a compatibility problem with the reference zstandard decoder. +* Dec 29, 2019: (v1.9.5) zstd: 10-20% faster block compression. [#199](https://github.com/klauspost/compress/pull/199) +* Dec 29, 2019: [zip](https://godoc.org/github.com/klauspost/compress/zip) package updated with latest Go features +* Dec 29, 2019: zstd: Single segment flag condintions tweaked. [#197](https://github.com/klauspost/compress/pull/197) +* Dec 18, 2019: s2: Faster compression when ReadFrom is used. [#198](https://github.com/klauspost/compress/pull/198) +* Dec 10, 2019: s2: Fix repeat length output when just above at 16MB limit. +* Dec 10, 2019: zstd: Add function to get decoder as io.ReadCloser. [#191](https://github.com/klauspost/compress/pull/191) +* Dec 3, 2019: (v1.9.4) S2: limit max repeat length. [#188](https://github.com/klauspost/compress/pull/188) +* Dec 3, 2019: Add [WithNoEntropyCompression](https://godoc.org/github.com/klauspost/compress/zstd#WithNoEntropyCompression) to zstd [#187](https://github.com/klauspost/compress/pull/187) +* Dec 3, 2019: Reduce memory use for tests. Check for leaked goroutines. +* Nov 28, 2019 (v1.9.3) Less allocations in stateless deflate. +* Nov 28, 2019: 5-20% Faster huff0 decode. Impacts zstd as well. [#184](https://github.com/klauspost/compress/pull/184) +* Nov 12, 2019 (v1.9.2) Added [Stateless Compression](#stateless-compression) for gzip/deflate. +* Nov 12, 2019: Fixed zstd decompression of large single blocks. [#180](https://github.com/klauspost/compress/pull/180) +* Nov 11, 2019: Set default [s2c](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) block size to 4MB. +* Nov 11, 2019: Reduce inflate memory use by 1KB. +* Nov 10, 2019: Less allocations in deflate bit writer. +* Nov 10, 2019: Fix inconsistent error returned by zstd decoder. +* Oct 28, 2019 (v1.9.1) ztsd: Fix crash when compressing blocks. [#174](https://github.com/klauspost/compress/pull/174) +* Oct 24, 2019 (v1.9.0) zstd: Fix rare data corruption [#173](https://github.com/klauspost/compress/pull/173) +* Oct 24, 2019 zstd: Fix huff0 out of buffer write [#171](https://github.com/klauspost/compress/pull/171) and always return errors [#172](https://github.com/klauspost/compress/pull/172) +* Oct 10, 2019: Big deflate rewrite, 30-40% faster with better compression [#105](https://github.com/klauspost/compress/pull/105) + +
                + +
                + See changes prior to v1.9.0 + +* Oct 10, 2019: (v1.8.6) zstd: Allow partial reads to get flushed data. [#169](https://github.com/klauspost/compress/pull/169) +* Oct 3, 2019: Fix inconsistent results on broken zstd streams. +* Sep 25, 2019: Added `-rm` (remove source files) and `-q` (no output except errors) to `s2c` and `s2d` [commands](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) +* Sep 16, 2019: (v1.8.4) Add `s2c` and `s2d` [commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools). +* Sep 10, 2019: (v1.8.3) Fix s2 decoder [Skip](https://godoc.org/github.com/klauspost/compress/s2#Reader.Skip). +* Sep 7, 2019: zstd: Added [WithWindowSize](https://godoc.org/github.com/klauspost/compress/zstd#WithWindowSize), contributed by [ianwilkes](https://github.com/ianwilkes). +* Sep 5, 2019: (v1.8.2) Add [WithZeroFrames](https://godoc.org/github.com/klauspost/compress/zstd#WithZeroFrames) which adds full zero payload block encoding option. +* Sep 5, 2019: Lazy initialization of zstandard predefined en/decoder tables. +* Aug 26, 2019: (v1.8.1) S2: 1-2% compression increase in "better" compression mode. +* Aug 26, 2019: zstd: Check maximum size of Huffman 1X compressed literals while decoding. +* Aug 24, 2019: (v1.8.0) Added [S2 compression](https://github.com/klauspost/compress/tree/master/s2#s2-compression), a high performance replacement for Snappy. +* Aug 21, 2019: (v1.7.6) Fixed minor issues found by fuzzer. One could lead to zstd not decompressing. +* Aug 18, 2019: Add [fuzzit](https://fuzzit.dev/) continuous fuzzing. +* Aug 14, 2019: zstd: Skip incompressible data 2x faster. [#147](https://github.com/klauspost/compress/pull/147) +* Aug 4, 2019 (v1.7.5): Better literal compression. [#146](https://github.com/klauspost/compress/pull/146) +* Aug 4, 2019: Faster zstd compression. [#143](https://github.com/klauspost/compress/pull/143) [#144](https://github.com/klauspost/compress/pull/144) +* Aug 4, 2019: Faster zstd decompression. [#145](https://github.com/klauspost/compress/pull/145) [#143](https://github.com/klauspost/compress/pull/143) [#142](https://github.com/klauspost/compress/pull/142) +* July 15, 2019 (v1.7.4): Fix double EOF block in rare cases on zstd encoder. +* July 15, 2019 (v1.7.3): Minor speedup/compression increase in default zstd encoder. +* July 14, 2019: zstd decoder: Fix decompression error on multiple uses with mixed content. +* July 7, 2019 (v1.7.2): Snappy update, zstd decoder potential race fix. +* June 17, 2019: zstd decompression bugfix. +* June 17, 2019: fix 32 bit builds. +* June 17, 2019: Easier use in modules (less dependencies). +* June 9, 2019: New stronger "default" [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression mode. Matches zstd default compression ratio. +* June 5, 2019: 20-40% throughput in [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and better compression. +* June 5, 2019: deflate/gzip compression: Reduce memory usage of lower compression levels. +* June 2, 2019: Added [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression! +* May 25, 2019: deflate/gzip: 10% faster bit writer, mostly visible in lower levels. +* Apr 22, 2019: [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) decompression added. +* Aug 1, 2018: Added [huff0 README](https://github.com/klauspost/compress/tree/master/huff0#huff0-entropy-compression). +* Jul 8, 2018: Added [Performance Update 2018](#performance-update-2018) below. +* Jun 23, 2018: Merged [Go 1.11 inflate optimizations](https://go-review.googlesource.com/c/go/+/102235). Go 1.9 is now required. Backwards compatible version tagged with [v1.3.0](https://github.com/klauspost/compress/releases/tag/v1.3.0). +* Apr 2, 2018: Added [huff0](https://godoc.org/github.com/klauspost/compress/huff0) en/decoder. Experimental for now, API may change. +* Mar 4, 2018: Added [FSE Entropy](https://godoc.org/github.com/klauspost/compress/fse) en/decoder. Experimental for now, API may change. +* Nov 3, 2017: Add compression [Estimate](https://godoc.org/github.com/klauspost/compress#Estimate) function. +* May 28, 2017: Reduce allocations when resetting decoder. +* Apr 02, 2017: Change back to official crc32, since changes were merged in Go 1.7. +* Jan 14, 2017: Reduce stack pressure due to array copies. See [Issue #18625](https://github.com/golang/go/issues/18625). +* Oct 25, 2016: Level 2-4 have been rewritten and now offers significantly better performance than before. +* Oct 20, 2016: Port zlib changes from Go 1.7 to fix zlib writer issue. Please update. +* Oct 16, 2016: Go 1.7 changes merged. Apples to apples this package is a few percent faster, but has a significantly better balance between speed and compression per level. +* Mar 24, 2016: Always attempt Huffman encoding on level 4-7. This improves base 64 encoded data compression. +* Mar 24, 2016: Small speedup for level 1-3. +* Feb 19, 2016: Faster bit writer, level -2 is 15% faster, level 1 is 4% faster. +* Feb 19, 2016: Handle small payloads faster in level 1-3. +* Feb 19, 2016: Added faster level 2 + 3 compression modes. +* Feb 19, 2016: [Rebalanced compression levels](https://blog.klauspost.com/rebalancing-deflate-compression-levels/), so there is a more even progresssion in terms of compression. New default level is 5. +* Feb 14, 2016: Snappy: Merge upstream changes. +* Feb 14, 2016: Snappy: Fix aggressive skipping. +* Feb 14, 2016: Snappy: Update benchmark. +* Feb 13, 2016: Deflate: Fixed assembler problem that could lead to sub-optimal compression. +* Feb 12, 2016: Snappy: Added AMD64 SSE 4.2 optimizations to matching, which makes easy to compress material run faster. Typical speedup is around 25%. +* Feb 9, 2016: Added Snappy package fork. This version is 5-7% faster, much more on hard to compress content. +* Jan 30, 2016: Optimize level 1 to 3 by not considering static dictionary or storing uncompressed. ~4-5% speedup. +* Jan 16, 2016: Optimization on deflate level 1,2,3 compression. +* Jan 8 2016: Merge [CL 18317](https://go-review.googlesource.com/#/c/18317): fix reading, writing of zip64 archives. +* Dec 8 2015: Make level 1 and -2 deterministic even if write size differs. +* Dec 8 2015: Split encoding functions, so hashing and matching can potentially be inlined. 1-3% faster on AMD64. 5% faster on other platforms. +* Dec 8 2015: Fixed rare [one byte out-of bounds read](https://github.com/klauspost/compress/issues/20). Please update! +* Nov 23 2015: Optimization on token writer. ~2-4% faster. Contributed by [@dsnet](https://github.com/dsnet). +* Nov 20 2015: Small optimization to bit writer on 64 bit systems. +* Nov 17 2015: Fixed out-of-bound errors if the underlying Writer returned an error. See [#15](https://github.com/klauspost/compress/issues/15). +* Nov 12 2015: Added [io.WriterTo](https://golang.org/pkg/io/#WriterTo) support to gzip/inflate. +* Nov 11 2015: Merged [CL 16669](https://go-review.googlesource.com/#/c/16669/4): archive/zip: enable overriding (de)compressors per file +* Oct 15 2015: Added skipping on uncompressible data. Random data speed up >5x. + +
                + +# deflate usage + +The packages are drop-in replacements for standard libraries. Simply replace the import path to use them: + +| old import | new import | Documentation +|--------------------|-----------------------------------------|--------------------| +| `compress/gzip` | `github.com/klauspost/compress/gzip` | [gzip](https://pkg.go.dev/github.com/klauspost/compress/gzip?tab=doc) +| `compress/zlib` | `github.com/klauspost/compress/zlib` | [zlib](https://pkg.go.dev/github.com/klauspost/compress/zlib?tab=doc) +| `archive/zip` | `github.com/klauspost/compress/zip` | [zip](https://pkg.go.dev/github.com/klauspost/compress/zip?tab=doc) +| `compress/flate` | `github.com/klauspost/compress/flate` | [flate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc) + +* Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). + +You may also be interested in [pgzip](https://github.com/klauspost/pgzip), which is a drop in replacement for gzip, which support multithreaded compression on big files and the optimized [crc32](https://github.com/klauspost/crc32) package used by these packages. + +The packages contains the same as the standard library, so you can use the godoc for that: [gzip](http://golang.org/pkg/compress/gzip/), [zip](http://golang.org/pkg/archive/zip/), [zlib](http://golang.org/pkg/compress/zlib/), [flate](http://golang.org/pkg/compress/flate/). + +Currently there is only minor speedup on decompression (mostly CRC32 calculation). + +Memory usage is typically 1MB for a Writer. stdlib is in the same range. +If you expect to have a lot of concurrently allocated Writers consider using +the stateless compress described below. + +For compression performance, see: [this spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). + +To disable all assembly add `-tags=noasm`. This works across all packages. + +# Stateless compression + +This package offers stateless compression as a special option for gzip/deflate. +It will do compression but without maintaining any state between Write calls. + +This means there will be no memory kept between Write calls, but compression and speed will be suboptimal. + +This is only relevant in cases where you expect to run many thousands of compressors concurrently, +but with very little activity. This is *not* intended for regular web servers serving individual requests. + +Because of this, the size of actual Write calls will affect output size. + +In gzip, specify level `-3` / `gzip.StatelessCompression` to enable. + +For direct deflate use, NewStatelessWriter and StatelessDeflate are available. See [documentation](https://godoc.org/github.com/klauspost/compress/flate#NewStatelessWriter) + +A `bufio.Writer` can of course be used to control write sizes. For example, to use a 4KB buffer: + +```go + // replace 'ioutil.Discard' with your output. + gzw, err := gzip.NewWriterLevel(ioutil.Discard, gzip.StatelessCompression) + if err != nil { + return err + } + defer gzw.Close() + + w := bufio.NewWriterSize(gzw, 4096) + defer w.Flush() + + // Write to 'w' +``` + +This will only use up to 4KB in memory when the writer is idle. + +Compression is almost always worse than the fastest compression level +and each write will allocate (a little) memory. + +# Performance Update 2018 + +It has been a while since we have been looking at the speed of this package compared to the standard library, so I thought I would re-do my tests and give some overall recommendations based on the current state. All benchmarks have been performed with Go 1.10 on my Desktop Intel(R) Core(TM) i7-2600 CPU @3.40GHz. Since I last ran the tests, I have gotten more RAM, which means tests with big files are no longer limited by my SSD. + +The raw results are in my [updated spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). Due to cgo changes and upstream updates i could not get the cgo version of gzip to compile. Instead I included the [zstd](https://github.com/datadog/zstd) cgo implementation. If I get cgo gzip to work again, I might replace the results in the sheet. + +The columns to take note of are: *MB/s* - the throughput. *Reduction* - the data size reduction in percent of the original. *Rel Speed* relative speed compared to the standard library at the same level. *Smaller* - how many percent smaller is the compressed output compared to stdlib. Negative means the output was bigger. *Loss* means the loss (or gain) in compression as a percentage difference of the input. + +The `gzstd` (standard library gzip) and `gzkp` (this package gzip) only uses one CPU core. [`pgzip`](https://github.com/klauspost/pgzip), [`bgzf`](https://github.com/biogo/hts/tree/master/bgzf) uses all 4 cores. [`zstd`](https://github.com/DataDog/zstd) uses one core, and is a beast (but not Go, yet). + + +## Overall differences. + +There appears to be a roughly 5-10% speed advantage over the standard library when comparing at similar compression levels. + +The biggest difference you will see is the result of [re-balancing](https://blog.klauspost.com/rebalancing-deflate-compression-levels/) the compression levels. I wanted by library to give a smoother transition between the compression levels than the standard library. + +This package attempts to provide a more smooth transition, where "1" is taking a lot of shortcuts, "5" is the reasonable trade-off and "9" is the "give me the best compression", and the values in between gives something reasonable in between. The standard library has big differences in levels 1-4, but levels 5-9 having no significant gains - often spending a lot more time than can be justified by the achieved compression. + +There are links to all the test data in the [spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing) in the top left field on each tab. + +## Web Content + +This test set aims to emulate typical use in a web server. The test-set is 4GB data in 53k files, and is a mixture of (mostly) HTML, JS, CSS. + +Since level 1 and 9 are close to being the same code, they are quite close. But looking at the levels in-between the differences are quite big. + +Looking at level 6, this package is 88% faster, but will output about 6% more data. For a web server, this means you can serve 88% more data, but have to pay for 6% more bandwidth. You can draw your own conclusions on what would be the most expensive for your case. + +## Object files + +This test is for typical data files stored on a server. In this case it is a collection of Go precompiled objects. They are very compressible. + +The picture is similar to the web content, but with small differences since this is very compressible. Levels 2-3 offer good speed, but is sacrificing quite a bit of compression. + +The standard library seems suboptimal on level 3 and 4 - offering both worse compression and speed than level 6 & 7 of this package respectively. + +## Highly Compressible File + +This is a JSON file with very high redundancy. The reduction starts at 95% on level 1, so in real life terms we are dealing with something like a highly redundant stream of data, etc. + +It is definitely visible that we are dealing with specialized content here, so the results are very scattered. This package does not do very well at levels 1-4, but picks up significantly at level 5 and levels 7 and 8 offering great speed for the achieved compression. + +So if you know you content is extremely compressible you might want to go slightly higher than the defaults. The standard library has a huge gap between levels 3 and 4 in terms of speed (2.75x slowdown), so it offers little "middle ground". + +## Medium-High Compressible + +This is a pretty common test corpus: [enwik9](http://mattmahoney.net/dc/textdata.html). It contains the first 10^9 bytes of the English Wikipedia dump on Mar. 3, 2006. This is a very good test of typical text based compression and more data heavy streams. + +We see a similar picture here as in "Web Content". On equal levels some compression is sacrificed for more speed. Level 5 seems to be the best trade-off between speed and size, beating stdlib level 3 in both. + +## Medium Compressible + +I will combine two test sets, one [10GB file set](http://mattmahoney.net/dc/10gb.html) and a VM disk image (~8GB). Both contain different data types and represent a typical backup scenario. + +The most notable thing is how quickly the standard library drops to very low compression speeds around level 5-6 without any big gains in compression. Since this type of data is fairly common, this does not seem like good behavior. + + +## Un-compressible Content + +This is mainly a test of how good the algorithms are at detecting un-compressible input. The standard library only offers this feature with very conservative settings at level 1. Obviously there is no reason for the algorithms to try to compress input that cannot be compressed. The only downside is that it might skip some compressible data on false detections. + + +## Huffman only compression + +This compression library adds a special compression level, named `HuffmanOnly`, which allows near linear time compression. This is done by completely disabling matching of previous data, and only reduce the number of bits to represent each character. + +This means that often used characters, like 'e' and ' ' (space) in text use the fewest bits to represent, and rare characters like '¤' takes more bits to represent. For more information see [wikipedia](https://en.wikipedia.org/wiki/Huffman_coding) or this nice [video](https://youtu.be/ZdooBTdW5bM). + +Since this type of compression has much less variance, the compression speed is mostly unaffected by the input data, and is usually more than *180MB/s* for a single core. + +The downside is that the compression ratio is usually considerably worse than even the fastest conventional compression. The compression ratio can never be better than 8:1 (12.5%). + +The linear time compression can be used as a "better than nothing" mode, where you cannot risk the encoder to slow down on some content. For comparison, the size of the "Twain" text is *233460 bytes* (+29% vs. level 1) and encode speed is 144MB/s (4.5x level 1). So in this case you trade a 30% size increase for a 4 times speedup. + +For more information see my blog post on [Fast Linear Time Compression](http://blog.klauspost.com/constant-time-gzipzip-compression/). + +This is implemented on Go 1.7 as "Huffman Only" mode, though not exposed for gzip. + +# Other packages + +Here are other packages of good quality and pure Go (no cgo wrappers or autoconverted code): + +* [github.com/pierrec/lz4](https://github.com/pierrec/lz4) - strong multithreaded LZ4 compression. +* [github.com/cosnicolaou/pbzip2](https://github.com/cosnicolaou/pbzip2) - multithreaded bzip2 decompression. +* [github.com/dsnet/compress](https://github.com/dsnet/compress) - brotli decompression, bzip2 writer. +* [github.com/ronanh/intcomp](https://github.com/ronanh/intcomp) - Integer compression. +* [github.com/spenczar/fpc](https://github.com/spenczar/fpc) - Float compression. +* [github.com/minio/zipindex](https://github.com/minio/zipindex) - External ZIP directory index. +* [github.com/ybirader/pzip](https://github.com/ybirader/pzip) - Fast concurrent zip archiver and extractor. + +# license + +This code is licensed under the same conditions as the original Go code. See LICENSE file. diff --git a/examples/go/vendor/github.com/klauspost/compress/SECURITY.md b/examples/go/vendor/github.com/klauspost/compress/SECURITY.md new file mode 100644 index 0000000..ca6685e --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/SECURITY.md @@ -0,0 +1,25 @@ +# Security Policy + +## Supported Versions + +Security updates are applied only to the latest release. + +## Vulnerability Definition + +A security vulnerability is a bug that with certain input triggers a crash or an infinite loop. Most calls will have varying execution time and only in rare cases will slow operation be considered a security vulnerability. + +Corrupted output generally is not considered a security vulnerability, unless independent operations are able to affect each other. Note that not all functionality is re-entrant and safe to use concurrently. + +Out-of-memory crashes only applies if the en/decoder uses an abnormal amount of memory, with appropriate options applied, to limit maximum window size, concurrency, etc. However, if you are in doubt you are welcome to file a security issue. + +It is assumed that all callers are trusted, meaning internal data exposed through reflection or inspection of returned data structures is not considered a vulnerability. + +Vulnerabilities resulting from compiler/assembler errors should be reported upstream. Depending on the severity this package may or may not implement a workaround. + +## Reporting a Vulnerability + +If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. + +Please disclose it at [security advisory](https://github.com/klauspost/compress/security/advisories/new). If possible please provide a minimal reproducer. If the issue only applies to a single platform, it would be helpful to provide access to that. + +This project is maintained by a team of volunteers on a reasonable-effort basis. As such, vulnerabilities will be disclosed in a best effort base. diff --git a/examples/go/vendor/github.com/klauspost/compress/compressible.go b/examples/go/vendor/github.com/klauspost/compress/compressible.go new file mode 100644 index 0000000..ea5a692 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/compressible.go @@ -0,0 +1,85 @@ +package compress + +import "math" + +// Estimate returns a normalized compressibility estimate of block b. +// Values close to zero are likely uncompressible. +// Values above 0.1 are likely to be compressible. +// Values above 0.5 are very compressible. +// Very small lengths will return 0. +func Estimate(b []byte) float64 { + if len(b) < 16 { + return 0 + } + + // Correctly predicted order 1 + hits := 0 + lastMatch := false + var o1 [256]byte + var hist [256]int + c1 := byte(0) + for _, c := range b { + if c == o1[c1] { + // We only count a hit if there was two correct predictions in a row. + if lastMatch { + hits++ + } + lastMatch = true + } else { + lastMatch = false + } + o1[c1] = c + c1 = c + hist[c]++ + } + + // Use x^0.6 to give better spread + prediction := math.Pow(float64(hits)/float64(len(b)), 0.6) + + // Calculate histogram distribution + variance := float64(0) + avg := float64(len(b)) / 256 + + for _, v := range hist { + Δ := float64(v) - avg + variance += Δ * Δ + } + + stddev := math.Sqrt(float64(variance)) / float64(len(b)) + exp := math.Sqrt(1 / float64(len(b))) + + // Subtract expected stddev + stddev -= exp + if stddev < 0 { + stddev = 0 + } + stddev *= 1 + exp + + // Use x^0.4 to give better spread + entropy := math.Pow(stddev, 0.4) + + // 50/50 weight between prediction and histogram distribution + return math.Pow((prediction+entropy)/2, 0.9) +} + +// ShannonEntropyBits returns the number of bits minimum required to represent +// an entropy encoding of the input bytes. +// https://en.wiktionary.org/wiki/Shannon_entropy +func ShannonEntropyBits(b []byte) int { + if len(b) == 0 { + return 0 + } + var hist [256]int + for _, c := range b { + hist[c]++ + } + shannon := float64(0) + invTotal := 1.0 / float64(len(b)) + for _, v := range hist[:] { + if v > 0 { + n := float64(v) + shannon += math.Ceil(-math.Log2(n*invTotal) * n) + } + } + return int(math.Ceil(shannon)) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/README.md b/examples/go/vendor/github.com/klauspost/compress/fse/README.md new file mode 100644 index 0000000..ea7324d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/README.md @@ -0,0 +1,79 @@ +# Finite State Entropy + +This package provides Finite State Entropy encoding and decoding. + +Finite State Entropy (also referenced as [tANS](https://en.wikipedia.org/wiki/Asymmetric_numeral_systems#tANS)) +encoding provides a fast near-optimal symbol encoding/decoding +for byte blocks as implemented in [zstandard](https://github.com/facebook/zstd). + +This can be used for compressing input with a lot of similar input values to the smallest number of bytes. +This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, +but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding. + +* [Godoc documentation](https://godoc.org/github.com/klauspost/compress/fse) + +## News + + * Feb 2018: First implementation released. Consider this beta software for now. + +# Usage + +This package provides a low level interface that allows to compress single independent blocks. + +Each block is separate, and there is no built in integrity checks. +This means that the caller should keep track of block sizes and also do checksums if needed. + +Compressing a block is done via the [`Compress`](https://godoc.org/github.com/klauspost/compress/fse#Compress) function. +You must provide input and will receive the output and maybe an error. + +These error values can be returned: + +| Error | Description | +|---------------------|-----------------------------------------------------------------------------| +| `` | Everything ok, output is returned | +| `ErrIncompressible` | Returned when input is judged to be too hard to compress | +| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | +| `(error)` | An internal error occurred. | + +As can be seen above there are errors that will be returned even under normal operation so it is important to handle these. + +To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/fse#Scratch) object +that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same +object can be used for both. + +Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this +you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. + +Decompressing is done by calling the [`Decompress`](https://godoc.org/github.com/klauspost/compress/fse#Decompress) function. +You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back +your input was likely corrupted. + +It is important to note that a successful decoding does *not* mean your output matches your original input. +There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. + +For more detailed usage, see examples in the [godoc documentation](https://godoc.org/github.com/klauspost/compress/fse#pkg-examples). + +# Performance + +A lot of factors are affecting speed. Block sizes and compressibility of the material are primary factors. +All compression functions are currently only running on the calling goroutine so only one core will be used per block. + +The compressor is significantly faster if symbols are kept as small as possible. The highest byte value of the input +is used to reduce some of the processing, so if all your input is above byte value 64 for instance, it may be +beneficial to transpose all your input values down by 64. + +With moderate block sizes around 64k speed are typically 200MB/s per core for compression and +around 300MB/s decompression speed. + +The same hardware typically does Huffman (deflate) encoding at 125MB/s and decompression at 100MB/s. + +# Plans + +At one point, more internals will be exposed to facilitate more "expert" usage of the components. + +A streaming interface is also likely to be implemented. Likely compatible with [FSE stream format](https://github.com/Cyan4973/FiniteStateEntropy/blob/dev/programs/fileio.c#L261). + +# Contributing + +Contributions are always welcome. Be aware that adding public functions will require good justification and breaking +changes will likely not be accepted. If in doubt open an issue before writing the PR. \ No newline at end of file diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go b/examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go new file mode 100644 index 0000000..f65eb39 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/bitreader.go @@ -0,0 +1,122 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +import ( + "encoding/binary" + "errors" + "io" +) + +// bitReader reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReader struct { + in []byte + off uint // next byte to read is at in[off - 1] + value uint64 + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReader) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + b.off = uint(len(in)) + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.bitsRead += 8 - uint8(highBits(uint32(v))) + return nil +} + +// getBits will return n bits. n can be 0. +func (b *bitReader) getBits(n uint8) uint16 { + if n == 0 || b.bitsRead >= 64 { + return 0 + } + return b.getBitsFast(n) +} + +// getBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReader) getBitsFast(n uint8) uint16 { + const regMask = 64 - 1 + v := uint16((b.value << (b.bitsRead & regMask)) >> ((regMask + 1 - n) & regMask)) + b.bitsRead += n + return v +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReader) fillFast() { + if b.bitsRead < 32 { + return + } + // 2 bounds checks. + v := b.in[b.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + b.off -= 4 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReader) fill() { + if b.bitsRead < 32 { + return + } + if b.off > 4 { + v := b.in[b.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + b.off -= 4 + return + } + for b.off > 0 { + b.value = (b.value << 8) | uint64(b.in[b.off-1]) + b.bitsRead -= 8 + b.off-- + } +} + +// fillFastStart() assumes the bitreader is empty and there is at least 8 bytes to read. +func (b *bitReader) fillFastStart() { + // Do single re-slice to avoid bounds checks. + b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) + b.bitsRead = 0 + b.off -= 8 +} + +// finished returns true if all bits have been read from the bit stream. +func (b *bitReader) finished() bool { + return b.bitsRead >= 64 && b.off == 0 +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReader) close() error { + // Release reference. + b.in = nil + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go b/examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go new file mode 100644 index 0000000..e82fa3b --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/bitwriter.go @@ -0,0 +1,167 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +import "fmt" + +// bitWriter will write bits. +// First bit will be LSB of the first byte of output. +type bitWriter struct { + bitContainer uint64 + nBits uint8 + out []byte +} + +// bitMask16 is bitmasks. Has extra to avoid bounds check. +var bitMask16 = [32]uint16{ + 0, 1, 3, 7, 0xF, 0x1F, + 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, + 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF} /* up to 16 bits */ + +// addBits16NC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16NC(value uint16, bits uint8) { + b.bitContainer |= uint64(value&bitMask16[bits&31]) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16ZeroNC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +// This is fastest if bits can be zero. +func (b *bitWriter) addBits16ZeroNC(value uint16, bits uint8) { + if bits == 0 { + return + } + value <<= (16 - bits) & 15 + value >>= (16 - bits) & 15 + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// flush will flush all pending full bytes. +// There will be at least 56 bits available for writing when this has been called. +// Using flush32 is faster, but leaves less space for writing. +func (b *bitWriter) flush() { + v := b.nBits >> 3 + switch v { + case 0: + case 1: + b.out = append(b.out, + byte(b.bitContainer), + ) + case 2: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + ) + case 3: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + ) + case 4: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + ) + case 5: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + ) + case 6: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + ) + case 7: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + byte(b.bitContainer>>48), + ) + case 8: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + byte(b.bitContainer>>48), + byte(b.bitContainer>>56), + ) + default: + panic(fmt.Errorf("bits (%d) > 64", b.nBits)) + } + b.bitContainer >>= v << 3 + b.nBits &= 7 +} + +// flush32 will flush out, so there are at least 32 bits available for writing. +func (b *bitWriter) flush32() { + if b.nBits < 32 { + return + } + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24)) + b.nBits -= 32 + b.bitContainer >>= 32 +} + +// flushAlign will flush remaining full bytes and align to next byte boundary. +func (b *bitWriter) flushAlign() { + nbBytes := (b.nBits + 7) >> 3 + for i := uint8(0); i < nbBytes; i++ { + b.out = append(b.out, byte(b.bitContainer>>(i*8))) + } + b.nBits = 0 + b.bitContainer = 0 +} + +// close will write the alignment bit and write the final byte(s) +// to the output. +func (b *bitWriter) close() { + // End mark + b.addBits16Clean(1, 1) + // flush until next byte. + b.flushAlign() +} + +// reset and continue writing by appending to out. +func (b *bitWriter) reset(out []byte) { + b.bitContainer = 0 + b.nBits = 0 + b.out = out +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go b/examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go new file mode 100644 index 0000000..abade2d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/bytereader.go @@ -0,0 +1,47 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +// byteReader provides a byte reader that reads +// little endian values from a byte stream. +// The input stream is manually advanced. +// The reader performs no bounds checks. +type byteReader struct { + b []byte + off int +} + +// init will initialize the reader and set the input. +func (b *byteReader) init(in []byte) { + b.b = in + b.off = 0 +} + +// advance the stream b n bytes. +func (b *byteReader) advance(n uint) { + b.off += int(n) +} + +// Uint32 returns a little endian uint32 starting at current offset. +func (b byteReader) Uint32() uint32 { + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := uint32(b2[3]) + v2 := uint32(b2[2]) + v1 := uint32(b2[1]) + v0 := uint32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// unread returns the unread portion of the input. +func (b byteReader) unread() []byte { + return b.b[b.off:] +} + +// remain will return the number of bytes remaining. +func (b byteReader) remain() int { + return len(b.b) - b.off +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/compress.go b/examples/go/vendor/github.com/klauspost/compress/fse/compress.go new file mode 100644 index 0000000..074018d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/compress.go @@ -0,0 +1,683 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package fse + +import ( + "errors" + "fmt" +) + +// Compress the input bytes. Input must be < 2GB. +// Provide a Scratch buffer to avoid memory allocations. +// Note that the output is also kept in the scratch buffer. +// If input is too hard to compress, ErrIncompressible is returned. +// If input is a single byte value repeated ErrUseRLE is returned. +func Compress(in []byte, s *Scratch) ([]byte, error) { + if len(in) <= 1 { + return nil, ErrIncompressible + } + if len(in) > (2<<30)-1 { + return nil, errors.New("input too big, must be < 2GB") + } + s, err := s.prepare(in) + if err != nil { + return nil, err + } + + // Create histogram, if none was provided. + maxCount := s.maxCount + if maxCount == 0 { + maxCount = s.countSimple(in) + } + // Reset for next run. + s.clearCount = true + s.maxCount = 0 + if maxCount == len(in) { + // One symbol, use RLE + return nil, ErrUseRLE + } + if maxCount == 1 || maxCount < (len(in)>>7) { + // Each symbol present maximum once or too well distributed. + return nil, ErrIncompressible + } + s.optimalTableLog() + err = s.normalizeCount() + if err != nil { + return nil, err + } + err = s.writeCount() + if err != nil { + return nil, err + } + + if false { + err = s.validateNorm() + if err != nil { + return nil, err + } + } + + err = s.buildCTable() + if err != nil { + return nil, err + } + err = s.compress(in) + if err != nil { + return nil, err + } + s.Out = s.bw.out + // Check if we compressed. + if len(s.Out) >= len(in) { + return nil, ErrIncompressible + } + return s.Out, nil +} + +// cState contains the compression state of a stream. +type cState struct { + bw *bitWriter + stateTable []uint16 + state uint16 +} + +// init will initialize the compression state to the first symbol of the stream. +func (c *cState) init(bw *bitWriter, ct *cTable, tableLog uint8, first symbolTransform) { + c.bw = bw + c.stateTable = ct.stateTable + + nbBitsOut := (first.deltaNbBits + (1 << 15)) >> 16 + im := int32((nbBitsOut << 16) - first.deltaNbBits) + lu := (im >> nbBitsOut) + first.deltaFindState + c.state = c.stateTable[lu] +} + +// encode the output symbol provided and write it to the bitstream. +func (c *cState) encode(symbolTT symbolTransform) { + nbBitsOut := (uint32(c.state) + symbolTT.deltaNbBits) >> 16 + dstState := int32(c.state>>(nbBitsOut&15)) + symbolTT.deltaFindState + c.bw.addBits16NC(c.state, uint8(nbBitsOut)) + c.state = c.stateTable[dstState] +} + +// encode the output symbol provided and write it to the bitstream. +func (c *cState) encodeZero(symbolTT symbolTransform) { + nbBitsOut := (uint32(c.state) + symbolTT.deltaNbBits) >> 16 + dstState := int32(c.state>>(nbBitsOut&15)) + symbolTT.deltaFindState + c.bw.addBits16ZeroNC(c.state, uint8(nbBitsOut)) + c.state = c.stateTable[dstState] +} + +// flush will write the tablelog to the output and flush the remaining full bytes. +func (c *cState) flush(tableLog uint8) { + c.bw.flush32() + c.bw.addBits16NC(c.state, tableLog) + c.bw.flush() +} + +// compress is the main compression loop that will encode the input from the last byte to the first. +func (s *Scratch) compress(src []byte) error { + if len(src) <= 2 { + return errors.New("compress: src too small") + } + tt := s.ct.symbolTT[:256] + s.bw.reset(s.Out) + + // Our two states each encodes every second byte. + // Last byte encoded (first byte decoded) will always be encoded by c1. + var c1, c2 cState + + // Encode so remaining size is divisible by 4. + ip := len(src) + if ip&1 == 1 { + c1.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-1]]) + c2.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-2]]) + c1.encodeZero(tt[src[ip-3]]) + ip -= 3 + } else { + c2.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-1]]) + c1.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-2]]) + ip -= 2 + } + if ip&2 != 0 { + c2.encodeZero(tt[src[ip-1]]) + c1.encodeZero(tt[src[ip-2]]) + ip -= 2 + } + src = src[:ip] + + // Main compression loop. + switch { + case !s.zeroBits && s.actualTableLog <= 8: + // We can encode 4 symbols without requiring a flush. + // We do not need to check if any output is 0 bits. + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encode(tt[v0]) + c1.encode(tt[v1]) + c2.encode(tt[v2]) + c1.encode(tt[v3]) + } + case !s.zeroBits: + // We do not need to check if any output is 0 bits. + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encode(tt[v0]) + c1.encode(tt[v1]) + s.bw.flush32() + c2.encode(tt[v2]) + c1.encode(tt[v3]) + } + case s.actualTableLog <= 8: + // We can encode 4 symbols without requiring a flush + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encodeZero(tt[v0]) + c1.encodeZero(tt[v1]) + c2.encodeZero(tt[v2]) + c1.encodeZero(tt[v3]) + } + default: + for ; len(src) >= 4; src = src[:len(src)-4] { + s.bw.flush32() + v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] + c2.encodeZero(tt[v0]) + c1.encodeZero(tt[v1]) + s.bw.flush32() + c2.encodeZero(tt[v2]) + c1.encodeZero(tt[v3]) + } + } + + // Flush final state. + // Used to initialize state when decoding. + c2.flush(s.actualTableLog) + c1.flush(s.actualTableLog) + + s.bw.close() + return nil +} + +// writeCount will write the normalized histogram count to header. +// This is read back by readNCount. +func (s *Scratch) writeCount() error { + var ( + tableLog = s.actualTableLog + tableSize = 1 << tableLog + previous0 bool + charnum uint16 + + maxHeaderSize = ((int(s.symbolLen)*int(tableLog) + 4 + 2) >> 3) + 3 + + // Write Table Size + bitStream = uint32(tableLog - minTablelog) + bitCount = uint(4) + remaining = int16(tableSize + 1) /* +1 for extra accuracy */ + threshold = int16(tableSize) + nbBits = uint(tableLog + 1) + ) + if cap(s.Out) < maxHeaderSize { + s.Out = make([]byte, 0, s.br.remain()+maxHeaderSize) + } + outP := uint(0) + out := s.Out[:maxHeaderSize] + + // stops at 1 + for remaining > 1 { + if previous0 { + start := charnum + for s.norm[charnum] == 0 { + charnum++ + } + for charnum >= start+24 { + start += 24 + bitStream += uint32(0xFFFF) << bitCount + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + } + for charnum >= start+3 { + start += 3 + bitStream += 3 << bitCount + bitCount += 2 + } + bitStream += uint32(charnum-start) << bitCount + bitCount += 2 + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + count := s.norm[charnum] + charnum++ + max := (2*threshold - 1) - remaining + if count < 0 { + remaining += count + } else { + remaining -= count + } + count++ // +1 for extra accuracy + if count >= threshold { + count += max // [0..max[ [max..threshold[ (...) [threshold+max 2*threshold[ + } + bitStream += uint32(count) << bitCount + bitCount += nbBits + if count < max { + bitCount-- + } + + previous0 = count == 1 + if remaining < 1 { + return errors.New("internal error: remaining<1") + } + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += (bitCount + 7) / 8 + + if charnum > s.symbolLen { + return errors.New("internal error: charnum > s.symbolLen") + } + s.Out = out[:outP] + return nil +} + +// symbolTransform contains the state transform for a symbol. +type symbolTransform struct { + deltaFindState int32 + deltaNbBits uint32 +} + +// String prints values as a human readable string. +func (s symbolTransform) String() string { + return fmt.Sprintf("dnbits: %08x, fs:%d", s.deltaNbBits, s.deltaFindState) +} + +// cTable contains tables used for compression. +type cTable struct { + tableSymbol []byte + stateTable []uint16 + symbolTT []symbolTransform +} + +// allocCtable will allocate tables needed for compression. +// If existing tables a re big enough, they are simply re-used. +func (s *Scratch) allocCtable() { + tableSize := 1 << s.actualTableLog + // get tableSymbol that is big enough. + if cap(s.ct.tableSymbol) < tableSize { + s.ct.tableSymbol = make([]byte, tableSize) + } + s.ct.tableSymbol = s.ct.tableSymbol[:tableSize] + + ctSize := tableSize + if cap(s.ct.stateTable) < ctSize { + s.ct.stateTable = make([]uint16, ctSize) + } + s.ct.stateTable = s.ct.stateTable[:ctSize] + + if cap(s.ct.symbolTT) < 256 { + s.ct.symbolTT = make([]symbolTransform, 256) + } + s.ct.symbolTT = s.ct.symbolTT[:256] +} + +// buildCTable will populate the compression table so it is ready to be used. +func (s *Scratch) buildCTable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + var cumul [maxSymbolValue + 2]int16 + + s.allocCtable() + tableSymbol := s.ct.tableSymbol[:tableSize] + // symbol start positions + { + cumul[0] = 0 + for ui, v := range s.norm[:s.symbolLen-1] { + u := byte(ui) // one less than reference + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = u + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + } + // Encode last symbol separately to avoid overflowing u + u := int(s.symbolLen - 1) + v := s.norm[s.symbolLen-1] + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = byte(u) + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + if uint32(cumul[s.symbolLen]) != tableSize { + return fmt.Errorf("internal error: expected cumul[s.symbolLen] (%d) == tableSize (%d)", cumul[s.symbolLen], tableSize) + } + cumul[s.symbolLen] = int16(tableSize) + 1 + } + // Spread symbols + s.zeroBits = false + { + step := tableStep(tableSize) + tableMask := tableSize - 1 + var position uint32 + // if any symbol > largeLimit, we may have 0 bits output. + largeLimit := int16(1 << (s.actualTableLog - 1)) + for ui, v := range s.norm[:s.symbolLen] { + symbol := byte(ui) + if v > largeLimit { + s.zeroBits = true + } + for nbOccurrences := int16(0); nbOccurrences < v; nbOccurrences++ { + tableSymbol[position] = symbol + position = (position + step) & tableMask + for position > highThreshold { + position = (position + step) & tableMask + } /* Low proba area */ + } + } + + // Check if we have gone through all positions + if position != 0 { + return errors.New("position!=0") + } + } + + // Build table + table := s.ct.stateTable + { + tsi := int(tableSize) + for u, v := range tableSymbol { + // TableU16 : sorted by symbol order; gives next state value + table[cumul[v]] = uint16(tsi + u) + cumul[v]++ + } + } + + // Build Symbol Transformation Table + { + total := int16(0) + symbolTT := s.ct.symbolTT[:s.symbolLen] + tableLog := s.actualTableLog + tl := (uint32(tableLog) << 16) - (1 << tableLog) + for i, v := range s.norm[:s.symbolLen] { + switch v { + case 0: + case -1, 1: + symbolTT[i].deltaNbBits = tl + symbolTT[i].deltaFindState = int32(total - 1) + total++ + default: + maxBitsOut := uint32(tableLog) - highBits(uint32(v-1)) + minStatePlus := uint32(v) << maxBitsOut + symbolTT[i].deltaNbBits = (maxBitsOut << 16) - minStatePlus + symbolTT[i].deltaFindState = int32(total - v) + total += v + } + } + if total != int16(tableSize) { + return fmt.Errorf("total mismatch %d (got) != %d (want)", total, tableSize) + } + } + return nil +} + +// countSimple will create a simple histogram in s.count. +// Returns the biggest count. +// Does not update s.clearCount. +func (s *Scratch) countSimple(in []byte) (max int) { + for _, v := range in { + s.count[v]++ + } + m, symlen := uint32(0), s.symbolLen + for i, v := range s.count[:] { + if v == 0 { + continue + } + if v > m { + m = v + } + symlen = uint16(i) + 1 + } + s.symbolLen = symlen + return int(m) +} + +// minTableLog provides the minimum logSize to safely represent a distribution. +func (s *Scratch) minTableLog() uint8 { + minBitsSrc := highBits(uint32(s.br.remain()-1)) + 1 + minBitsSymbols := highBits(uint32(s.symbolLen-1)) + 2 + if minBitsSrc < minBitsSymbols { + return uint8(minBitsSrc) + } + return uint8(minBitsSymbols) +} + +// optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog +func (s *Scratch) optimalTableLog() { + tableLog := s.TableLog + minBits := s.minTableLog() + maxBitsSrc := uint8(highBits(uint32(s.br.remain()-1))) - 2 + if maxBitsSrc < tableLog { + // Accuracy can be reduced + tableLog = maxBitsSrc + } + if minBits > tableLog { + tableLog = minBits + } + // Need a minimum to safely represent all symbol values + if tableLog < minTablelog { + tableLog = minTablelog + } + if tableLog > maxTableLog { + tableLog = maxTableLog + } + s.actualTableLog = tableLog +} + +var rtbTable = [...]uint32{0, 473195, 504333, 520860, 550000, 700000, 750000, 830000} + +// normalizeCount will normalize the count of the symbols so +// the total is equal to the table size. +func (s *Scratch) normalizeCount() error { + var ( + tableLog = s.actualTableLog + scale = 62 - uint64(tableLog) + step = (1 << 62) / uint64(s.br.remain()) + vStep = uint64(1) << (scale - 20) + stillToDistribute = int16(1 << tableLog) + largest int + largestP int16 + lowThreshold = (uint32)(s.br.remain() >> tableLog) + ) + + for i, cnt := range s.count[:s.symbolLen] { + // already handled + // if (count[s] == s.length) return 0; /* rle special case */ + + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + stillToDistribute-- + } else { + proba := (int16)((uint64(cnt) * step) >> scale) + if proba < 8 { + restToBeat := vStep * uint64(rtbTable[proba]) + v := uint64(cnt)*step - (uint64(proba) << scale) + if v > restToBeat { + proba++ + } + } + if proba > largestP { + largestP = proba + largest = i + } + s.norm[i] = proba + stillToDistribute -= proba + } + } + + if -stillToDistribute >= (s.norm[largest] >> 1) { + // corner case, need another normalization method + return s.normalizeCount2() + } + s.norm[largest] += stillToDistribute + return nil +} + +// Secondary normalization method. +// To be used when primary method fails. +func (s *Scratch) normalizeCount2() error { + const notYetAssigned = -2 + var ( + distributed uint32 + total = uint32(s.br.remain()) + tableLog = s.actualTableLog + lowThreshold = total >> tableLog + lowOne = (total * 3) >> (tableLog + 1) + ) + for i, cnt := range s.count[:s.symbolLen] { + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + distributed++ + total -= cnt + continue + } + if cnt <= lowOne { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + s.norm[i] = notYetAssigned + } + toDistribute := (1 << tableLog) - distributed + + if (total / toDistribute) > lowOne { + // risk of rounding to zero + lowOne = (total * 3) / (toDistribute * 2) + for i, cnt := range s.count[:s.symbolLen] { + if (s.norm[i] == notYetAssigned) && (cnt <= lowOne) { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + } + toDistribute = (1 << tableLog) - distributed + } + if distributed == uint32(s.symbolLen)+1 { + // all values are pretty poor; + // probably incompressible data (should have already been detected); + // find max, then give all remaining points to max + var maxV int + var maxC uint32 + for i, cnt := range s.count[:s.symbolLen] { + if cnt > maxC { + maxV = i + maxC = cnt + } + } + s.norm[maxV] += int16(toDistribute) + return nil + } + + if total == 0 { + // all of the symbols were low enough for the lowOne or lowThreshold + for i := uint32(0); toDistribute > 0; i = (i + 1) % (uint32(s.symbolLen)) { + if s.norm[i] > 0 { + toDistribute-- + s.norm[i]++ + } + } + return nil + } + + var ( + vStepLog = 62 - uint64(tableLog) + mid = uint64((1 << (vStepLog - 1)) - 1) + rStep = (((1 << vStepLog) * uint64(toDistribute)) + mid) / uint64(total) // scale on remaining + tmpTotal = mid + ) + for i, cnt := range s.count[:s.symbolLen] { + if s.norm[i] == notYetAssigned { + var ( + end = tmpTotal + uint64(cnt)*rStep + sStart = uint32(tmpTotal >> vStepLog) + sEnd = uint32(end >> vStepLog) + weight = sEnd - sStart + ) + if weight < 1 { + return errors.New("weight < 1") + } + s.norm[i] = int16(weight) + tmpTotal = end + } + } + return nil +} + +// validateNorm validates the normalized histogram table. +func (s *Scratch) validateNorm() (err error) { + var total int + for _, v := range s.norm[:s.symbolLen] { + if v >= 0 { + total += int(v) + } else { + total -= int(v) + } + } + defer func() { + if err == nil { + return + } + fmt.Printf("selected TableLog: %d, Symbol length: %d\n", s.actualTableLog, s.symbolLen) + for i, v := range s.norm[:s.symbolLen] { + fmt.Printf("%3d: %5d -> %4d \n", i, s.count[i], v) + } + }() + if total != (1 << s.actualTableLog) { + return fmt.Errorf("warning: Total == %d != %d", total, 1< tablelogAbsoluteMax { + return errors.New("tableLog too large") + } + bitStream >>= 4 + bitCount := uint(4) + + s.actualTableLog = uint8(nbBits) + remaining := int32((1 << nbBits) + 1) + threshold := int32(1 << nbBits) + gotTotal := int32(0) + nbBits++ + + for remaining > 1 { + if previous0 { + n0 := charnum + for (bitStream & 0xFFFF) == 0xFFFF { + n0 += 24 + if b.off < iend-5 { + b.advance(2) + bitStream = b.Uint32() >> bitCount + } else { + bitStream >>= 16 + bitCount += 16 + } + } + for (bitStream & 3) == 3 { + n0 += 3 + bitStream >>= 2 + bitCount += 2 + } + n0 += uint16(bitStream & 3) + bitCount += 2 + if n0 > maxSymbolValue { + return errors.New("maxSymbolValue too small") + } + for charnum < n0 { + s.norm[charnum&0xff] = 0 + charnum++ + } + + if b.off <= iend-7 || b.off+int(bitCount>>3) <= iend-4 { + b.advance(bitCount >> 3) + bitCount &= 7 + bitStream = b.Uint32() >> bitCount + } else { + bitStream >>= 2 + } + } + + max := (2*(threshold) - 1) - (remaining) + var count int32 + + if (int32(bitStream) & (threshold - 1)) < max { + count = int32(bitStream) & (threshold - 1) + bitCount += nbBits - 1 + } else { + count = int32(bitStream) & (2*threshold - 1) + if count >= threshold { + count -= max + } + bitCount += nbBits + } + + count-- // extra accuracy + if count < 0 { + // -1 means +1 + remaining += count + gotTotal -= count + } else { + remaining -= count + gotTotal += count + } + s.norm[charnum&0xff] = int16(count) + charnum++ + previous0 = count == 0 + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + if b.off <= iend-7 || b.off+int(bitCount>>3) <= iend-4 { + b.advance(bitCount >> 3) + bitCount &= 7 + } else { + bitCount -= (uint)(8 * (len(b.b) - 4 - b.off)) + b.off = len(b.b) - 4 + } + bitStream = b.Uint32() >> (bitCount & 31) + } + s.symbolLen = charnum + + if s.symbolLen <= 1 { + return fmt.Errorf("symbolLen (%d) too small", s.symbolLen) + } + if s.symbolLen > maxSymbolValue+1 { + return fmt.Errorf("symbolLen (%d) too big", s.symbolLen) + } + if remaining != 1 { + return fmt.Errorf("corruption detected (remaining %d != 1)", remaining) + } + if bitCount > 32 { + return fmt.Errorf("corruption detected (bitCount %d > 32)", bitCount) + } + if gotTotal != 1<> 3) + return nil +} + +// decSymbol contains information about a state entry, +// Including the state offset base, the output symbol and +// the number of bits to read for the low part of the destination state. +type decSymbol struct { + newState uint16 + symbol uint8 + nbBits uint8 +} + +// allocDtable will allocate decoding tables if they are not big enough. +func (s *Scratch) allocDtable() { + tableSize := 1 << s.actualTableLog + if cap(s.decTable) < tableSize { + s.decTable = make([]decSymbol, tableSize) + } + s.decTable = s.decTable[:tableSize] + + if cap(s.ct.tableSymbol) < 256 { + s.ct.tableSymbol = make([]byte, 256) + } + s.ct.tableSymbol = s.ct.tableSymbol[:256] + + if cap(s.ct.stateTable) < 256 { + s.ct.stateTable = make([]uint16, 256) + } + s.ct.stateTable = s.ct.stateTable[:256] +} + +// buildDtable will build the decoding table. +func (s *Scratch) buildDtable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + s.allocDtable() + symbolNext := s.ct.stateTable[:256] + + // Init, lay down lowprob symbols + s.zeroBits = false + { + largeLimit := int16(1 << (s.actualTableLog - 1)) + for i, v := range s.norm[:s.symbolLen] { + if v == -1 { + s.decTable[highThreshold].symbol = uint8(i) + highThreshold-- + symbolNext[i] = 1 + } else { + if v >= largeLimit { + s.zeroBits = true + } + symbolNext[i] = uint16(v) + } + } + } + // Spread symbols + { + tableMask := tableSize - 1 + step := tableStep(tableSize) + position := uint32(0) + for ss, v := range s.norm[:s.symbolLen] { + for i := 0; i < int(v); i++ { + s.decTable[position].symbol = uint8(ss) + position = (position + step) & tableMask + for position > highThreshold { + // lowprob area + position = (position + step) & tableMask + } + } + } + if position != 0 { + // position must reach all cells once, otherwise normalizedCounter is incorrect + return errors.New("corrupted input (position != 0)") + } + } + + // Build Decoding table + { + tableSize := uint16(1 << s.actualTableLog) + for u, v := range s.decTable { + symbol := v.symbol + nextState := symbolNext[symbol] + symbolNext[symbol] = nextState + 1 + nBits := s.actualTableLog - byte(highBits(uint32(nextState))) + s.decTable[u].nbBits = nBits + newState := (nextState << nBits) - tableSize + if newState >= tableSize { + return fmt.Errorf("newState (%d) outside table size (%d)", newState, tableSize) + } + if newState == uint16(u) && nBits == 0 { + // Seems weird that this is possible with nbits > 0. + return fmt.Errorf("newState (%d) == oldState (%d) and no bits", newState, u) + } + s.decTable[u].newState = newState + } + } + return nil +} + +// decompress will decompress the bitstream. +// If the buffer is over-read an error is returned. +func (s *Scratch) decompress() error { + br := &s.bits + if err := br.init(s.br.unread()); err != nil { + return err + } + + var s1, s2 decoder + // Initialize and decode first state and symbol. + s1.init(br, s.decTable, s.actualTableLog) + s2.init(br, s.decTable, s.actualTableLog) + + // Use temp table to avoid bound checks/append penalty. + var tmp = s.ct.tableSymbol[:256] + var off uint8 + + // Main part + if !s.zeroBits { + for br.off >= 8 { + br.fillFast() + tmp[off+0] = s1.nextFast() + tmp[off+1] = s2.nextFast() + br.fillFast() + tmp[off+2] = s1.nextFast() + tmp[off+3] = s2.nextFast() + off += 4 + // When off is 0, we have overflowed and should write. + if off == 0 { + s.Out = append(s.Out, tmp...) + if len(s.Out) >= s.DecompressLimit { + return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) + } + } + } + } else { + for br.off >= 8 { + br.fillFast() + tmp[off+0] = s1.next() + tmp[off+1] = s2.next() + br.fillFast() + tmp[off+2] = s1.next() + tmp[off+3] = s2.next() + off += 4 + if off == 0 { + s.Out = append(s.Out, tmp...) + // When off is 0, we have overflowed and should write. + if len(s.Out) >= s.DecompressLimit { + return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) + } + } + } + } + s.Out = append(s.Out, tmp[:off]...) + + // Final bits, a bit more expensive check + for { + if s1.finished() { + s.Out = append(s.Out, s1.final(), s2.final()) + break + } + br.fill() + s.Out = append(s.Out, s1.next()) + if s2.finished() { + s.Out = append(s.Out, s2.final(), s1.final()) + break + } + s.Out = append(s.Out, s2.next()) + if len(s.Out) >= s.DecompressLimit { + return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) + } + } + return br.close() +} + +// decoder keeps track of the current state and updates it from the bitstream. +type decoder struct { + state uint16 + br *bitReader + dt []decSymbol +} + +// init will initialize the decoder and read the first state from the stream. +func (d *decoder) init(in *bitReader, dt []decSymbol, tableLog uint8) { + d.dt = dt + d.br = in + d.state = in.getBits(tableLog) +} + +// next returns the next symbol and sets the next state. +// At least tablelog bits must be available in the bit reader. +func (d *decoder) next() uint8 { + n := &d.dt[d.state] + lowBits := d.br.getBits(n.nbBits) + d.state = n.newState + lowBits + return n.symbol +} + +// finished returns true if all bits have been read from the bitstream +// and the next state would require reading bits from the input. +func (d *decoder) finished() bool { + return d.br.finished() && d.dt[d.state].nbBits > 0 +} + +// final returns the current state symbol without decoding the next. +func (d *decoder) final() uint8 { + return d.dt[d.state].symbol +} + +// nextFast returns the next symbol and sets the next state. +// This can only be used if no symbols are 0 bits. +// At least tablelog bits must be available in the bit reader. +func (d *decoder) nextFast() uint8 { + n := d.dt[d.state] + lowBits := d.br.getBitsFast(n.nbBits) + d.state = n.newState + lowBits + return n.symbol +} diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/fse.go b/examples/go/vendor/github.com/klauspost/compress/fse/fse.go new file mode 100644 index 0000000..535cbad --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/fse/fse.go @@ -0,0 +1,144 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +// Package fse provides Finite State Entropy encoding and decoding. +// +// Finite State Entropy encoding provides a fast near-optimal symbol encoding/decoding +// for byte blocks as implemented in zstd. +// +// See https://github.com/klauspost/compress/tree/master/fse for more information. +package fse + +import ( + "errors" + "fmt" + "math/bits" +) + +const ( + /*!MEMORY_USAGE : + * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) + * Increasing memory usage improves compression ratio + * Reduced memory usage can improve speed, due to cache effect + * Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */ + maxMemoryUsage = 14 + defaultMemoryUsage = 13 + + maxTableLog = maxMemoryUsage - 2 + maxTablesize = 1 << maxTableLog + defaultTablelog = defaultMemoryUsage - 2 + minTablelog = 5 + maxSymbolValue = 255 +) + +var ( + // ErrIncompressible is returned when input is judged to be too hard to compress. + ErrIncompressible = errors.New("input is not compressible") + + // ErrUseRLE is returned from the compressor when the input is a single byte value repeated. + ErrUseRLE = errors.New("input is single value repeated") +) + +// Scratch provides temporary storage for compression and decompression. +type Scratch struct { + // Private + count [maxSymbolValue + 1]uint32 + norm [maxSymbolValue + 1]int16 + br byteReader + bits bitReader + bw bitWriter + ct cTable // Compression tables. + decTable []decSymbol // Decompression table. + maxCount int // count of the most probable symbol + + // Per block parameters. + // These can be used to override compression parameters of the block. + // Do not touch, unless you know what you are doing. + + // Out is output buffer. + // If the scratch is re-used before the caller is done processing the output, + // set this field to nil. + // Otherwise the output buffer will be re-used for next Compression/Decompression step + // and allocation will be avoided. + Out []byte + + // DecompressLimit limits the maximum decoded size acceptable. + // If > 0 decompression will stop when approximately this many bytes + // has been decoded. + // If 0, maximum size will be 2GB. + DecompressLimit int + + symbolLen uint16 // Length of active part of the symbol table. + actualTableLog uint8 // Selected tablelog. + zeroBits bool // no bits has prob > 50%. + clearCount bool // clear count + + // MaxSymbolValue will override the maximum symbol value of the next block. + MaxSymbolValue uint8 + + // TableLog will attempt to override the tablelog for the next block. + TableLog uint8 +} + +// Histogram allows to populate the histogram and skip that step in the compression, +// It otherwise allows to inspect the histogram when compression is done. +// To indicate that you have populated the histogram call HistogramFinished +// with the value of the highest populated symbol, as well as the number of entries +// in the most populated entry. These are accepted at face value. +// The returned slice will always be length 256. +func (s *Scratch) Histogram() []uint32 { + return s.count[:] +} + +// HistogramFinished can be called to indicate that the histogram has been populated. +// maxSymbol is the index of the highest set symbol of the next data segment. +// maxCount is the number of entries in the most populated entry. +// These are accepted at face value. +func (s *Scratch) HistogramFinished(maxSymbol uint8, maxCount int) { + s.maxCount = maxCount + s.symbolLen = uint16(maxSymbol) + 1 + s.clearCount = maxCount != 0 +} + +// prepare will prepare and allocate scratch tables used for both compression and decompression. +func (s *Scratch) prepare(in []byte) (*Scratch, error) { + if s == nil { + s = &Scratch{} + } + if s.MaxSymbolValue == 0 { + s.MaxSymbolValue = 255 + } + if s.TableLog == 0 { + s.TableLog = defaultTablelog + } + if s.TableLog > maxTableLog { + return nil, fmt.Errorf("tableLog (%d) > maxTableLog (%d)", s.TableLog, maxTableLog) + } + if cap(s.Out) == 0 { + s.Out = make([]byte, 0, len(in)) + } + if s.clearCount && s.maxCount == 0 { + for i := range s.count { + s.count[i] = 0 + } + s.clearCount = false + } + s.br.init(in) + if s.DecompressLimit == 0 { + // Max size 2GB. + s.DecompressLimit = (2 << 30) - 1 + } + + return s, nil +} + +// tableStep returns the next table index. +func tableStep(tableSize uint32) uint32 { + return (tableSize >> 1) + (tableSize >> 3) + 3 +} + +func highBits(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/gen.sh b/examples/go/vendor/github.com/klauspost/compress/gen.sh new file mode 100644 index 0000000..aff9422 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/gen.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd s2/cmd/_s2sx/ || exit 1 +go generate . diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore b/examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore new file mode 100644 index 0000000..b3d2629 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/.gitignore @@ -0,0 +1 @@ +/huff0-fuzz.zip diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/README.md b/examples/go/vendor/github.com/klauspost/compress/huff0/README.md new file mode 100644 index 0000000..8b6e5c6 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/README.md @@ -0,0 +1,89 @@ +# Huff0 entropy compression + +This package provides Huff0 encoding and decoding as used in zstd. + +[Huff0](https://github.com/Cyan4973/FiniteStateEntropy#new-generation-entropy-coders), +a Huffman codec designed for modern CPU, featuring OoO (Out of Order) operations on multiple ALU +(Arithmetic Logic Unit), achieving extremely fast compression and decompression speeds. + +This can be used for compressing input with a lot of similar input values to the smallest number of bytes. +This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, +but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding. + +* [Godoc documentation](https://godoc.org/github.com/klauspost/compress/huff0) + +## News + +This is used as part of the [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression package. + +This ensures that most functionality is well tested. + +# Usage + +This package provides a low level interface that allows to compress single independent blocks. + +Each block is separate, and there is no built in integrity checks. +This means that the caller should keep track of block sizes and also do checksums if needed. + +Compressing a block is done via the [`Compress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress1X) and +[`Compress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress4X) functions. +You must provide input and will receive the output and maybe an error. + +These error values can be returned: + +| Error | Description | +|---------------------|-----------------------------------------------------------------------------| +| `` | Everything ok, output is returned | +| `ErrIncompressible` | Returned when input is judged to be too hard to compress | +| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | +| `ErrTooBig` | Returned if the input block exceeds the maximum allowed size (128 Kib) | +| `(error)` | An internal error occurred. | + + +As can be seen above some of there are errors that will be returned even under normal operation so it is important to handle these. + +To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object +that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same +object can be used for both. + +Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this +you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. + +The `Scratch` object will retain state that allows to re-use previous tables for encoding and decoding. + +## Tables and re-use + +Huff0 allows for reusing tables from the previous block to save space if that is expected to give better/faster results. + +The Scratch object allows you to set a [`ReusePolicy`](https://godoc.org/github.com/klauspost/compress/huff0#ReusePolicy) +that controls this behaviour. See the documentation for details. This can be altered between each block. + +Do however note that this information is *not* stored in the output block and it is up to the users of the package to +record whether [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable) should be called, +based on the boolean reported back from the CompressXX call. + +If you want to store the table separate from the data, you can access them as `OutData` and `OutTable` on the +[`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object. + +## Decompressing + +The first part of decoding is to initialize the decoding table through [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable). +This will initialize the decoding tables. +You can supply the complete block to `ReadTable` and it will return the data part of the block +which can be given to the decompressor. + +Decompressing is done by calling the [`Decompress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress1X) +or [`Decompress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress4X) function. + +For concurrently decompressing content with a fixed table a stateless [`Decoder`](https://godoc.org/github.com/klauspost/compress/huff0#Decoder) can be requested which will remain correct as long as the scratch is unchanged. The capacity of the provided slice indicates the expected output size. + +You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back +your input was likely corrupted. + +It is important to note that a successful decoding does *not* mean your output matches your original input. +There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. + +# Contributing + +Contributions are always welcome. Be aware that adding public functions will require good justification and breaking +changes will likely not be accepted. If in doubt open an issue before writing the PR. diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go b/examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go new file mode 100644 index 0000000..e36d974 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/bitreader.go @@ -0,0 +1,229 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package huff0 + +import ( + "encoding/binary" + "errors" + "fmt" + "io" +) + +// bitReader reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReaderBytes struct { + in []byte + off uint // next byte to read is at in[off - 1] + value uint64 + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReaderBytes) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + b.off = uint(len(in)) + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.advance(8 - uint8(highBit32(uint32(v)))) + return nil +} + +// peekBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReaderBytes) peekByteFast() uint8 { + got := uint8(b.value >> 56) + return got +} + +func (b *bitReaderBytes) advance(n uint8) { + b.bitsRead += n + b.value <<= n & 63 +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReaderBytes) fillFast() { + if b.bitsRead < 32 { + return + } + + // 2 bounds checks. + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << (b.bitsRead - 32) + b.bitsRead -= 32 + b.off -= 4 +} + +// fillFastStart() assumes the bitReaderBytes is empty and there is at least 8 bytes to read. +func (b *bitReaderBytes) fillFastStart() { + // Do single re-slice to avoid bounds checks. + b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) + b.bitsRead = 0 + b.off -= 8 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReaderBytes) fill() { + if b.bitsRead < 32 { + return + } + if b.off > 4 { + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << (b.bitsRead - 32) + b.bitsRead -= 32 + b.off -= 4 + return + } + for b.off > 0 { + b.value |= uint64(b.in[b.off-1]) << (b.bitsRead - 8) + b.bitsRead -= 8 + b.off-- + } +} + +// finished returns true if all bits have been read from the bit stream. +func (b *bitReaderBytes) finished() bool { + return b.off == 0 && b.bitsRead >= 64 +} + +func (b *bitReaderBytes) remaining() uint { + return b.off*8 + uint(64-b.bitsRead) +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReaderBytes) close() error { + // Release reference. + b.in = nil + if b.remaining() > 0 { + return fmt.Errorf("corrupt input: %d bits remain on stream", b.remaining()) + } + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} + +// bitReaderShifted reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReaderShifted struct { + in []byte + off uint // next byte to read is at in[off - 1] + value uint64 + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReaderShifted) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + b.off = uint(len(in)) + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.advance(8 - uint8(highBit32(uint32(v)))) + return nil +} + +// peekBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReaderShifted) peekBitsFast(n uint8) uint16 { + return uint16(b.value >> ((64 - n) & 63)) +} + +func (b *bitReaderShifted) advance(n uint8) { + b.bitsRead += n + b.value <<= n & 63 +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReaderShifted) fillFast() { + if b.bitsRead < 32 { + return + } + + // 2 bounds checks. + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << ((b.bitsRead - 32) & 63) + b.bitsRead -= 32 + b.off -= 4 +} + +// fillFastStart() assumes the bitReaderShifted is empty and there is at least 8 bytes to read. +func (b *bitReaderShifted) fillFastStart() { + // Do single re-slice to avoid bounds checks. + b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) + b.bitsRead = 0 + b.off -= 8 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReaderShifted) fill() { + if b.bitsRead < 32 { + return + } + if b.off > 4 { + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value |= uint64(low) << ((b.bitsRead - 32) & 63) + b.bitsRead -= 32 + b.off -= 4 + return + } + for b.off > 0 { + b.value |= uint64(b.in[b.off-1]) << ((b.bitsRead - 8) & 63) + b.bitsRead -= 8 + b.off-- + } +} + +func (b *bitReaderShifted) remaining() uint { + return b.off*8 + uint(64-b.bitsRead) +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReaderShifted) close() error { + // Release reference. + b.in = nil + if b.remaining() > 0 { + return fmt.Errorf("corrupt input: %d bits remain on stream", b.remaining()) + } + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go b/examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go new file mode 100644 index 0000000..0ebc9aa --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/bitwriter.go @@ -0,0 +1,102 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package huff0 + +// bitWriter will write bits. +// First bit will be LSB of the first byte of output. +type bitWriter struct { + bitContainer uint64 + nBits uint8 + out []byte +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// encSymbol will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) encSymbol(ct cTable, symbol byte) { + enc := ct[symbol] + b.bitContainer |= uint64(enc.val) << (b.nBits & 63) + if false { + if enc.nBits == 0 { + panic("nbits 0") + } + } + b.nBits += enc.nBits +} + +// encTwoSymbols will add up to 32 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) encTwoSymbols(ct cTable, av, bv byte) { + encA := ct[av] + encB := ct[bv] + sh := b.nBits & 63 + combined := uint64(encA.val) | (uint64(encB.val) << (encA.nBits & 63)) + b.bitContainer |= combined << sh + if false { + if encA.nBits == 0 { + panic("nbitsA 0") + } + if encB.nBits == 0 { + panic("nbitsB 0") + } + } + b.nBits += encA.nBits + encB.nBits +} + +// encFourSymbols adds up to 32 bits from four symbols. +// It will not check if there is space for them, +// so the caller must ensure that b has been flushed recently. +func (b *bitWriter) encFourSymbols(encA, encB, encC, encD cTableEntry) { + bitsA := encA.nBits + bitsB := bitsA + encB.nBits + bitsC := bitsB + encC.nBits + bitsD := bitsC + encD.nBits + combined := uint64(encA.val) | + (uint64(encB.val) << (bitsA & 63)) | + (uint64(encC.val) << (bitsB & 63)) | + (uint64(encD.val) << (bitsC & 63)) + b.bitContainer |= combined << (b.nBits & 63) + b.nBits += bitsD +} + +// flush32 will flush out, so there are at least 32 bits available for writing. +func (b *bitWriter) flush32() { + if b.nBits < 32 { + return + } + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24)) + b.nBits -= 32 + b.bitContainer >>= 32 +} + +// flushAlign will flush remaining full bytes and align to next byte boundary. +func (b *bitWriter) flushAlign() { + nbBytes := (b.nBits + 7) >> 3 + for i := uint8(0); i < nbBytes; i++ { + b.out = append(b.out, byte(b.bitContainer>>(i*8))) + } + b.nBits = 0 + b.bitContainer = 0 +} + +// close will write the alignment bit and write the final byte(s) +// to the output. +func (b *bitWriter) close() { + // End mark + b.addBits16Clean(1, 1) + // flush until next byte. + b.flushAlign() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/compress.go b/examples/go/vendor/github.com/klauspost/compress/huff0/compress.go new file mode 100644 index 0000000..84aa3d1 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/compress.go @@ -0,0 +1,742 @@ +package huff0 + +import ( + "fmt" + "math" + "runtime" + "sync" +) + +// Compress1X will compress the input. +// The output can be decoded using Decompress1X. +// Supply a Scratch object. The scratch object contains state about re-use, +// So when sharing across independent encodes, be sure to set the re-use policy. +func Compress1X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { + s, err = s.prepare(in) + if err != nil { + return nil, false, err + } + return compress(in, s, s.compress1X) +} + +// Compress4X will compress the input. The input is split into 4 independent blocks +// and compressed similar to Compress1X. +// The output can be decoded using Decompress4X. +// Supply a Scratch object. The scratch object contains state about re-use, +// So when sharing across independent encodes, be sure to set the re-use policy. +func Compress4X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { + s, err = s.prepare(in) + if err != nil { + return nil, false, err + } + if false { + // TODO: compress4Xp only slightly faster. + const parallelThreshold = 8 << 10 + if len(in) < parallelThreshold || runtime.GOMAXPROCS(0) == 1 { + return compress(in, s, s.compress4X) + } + return compress(in, s, s.compress4Xp) + } + return compress(in, s, s.compress4X) +} + +func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)) (out []byte, reUsed bool, err error) { + // Nuke previous table if we cannot reuse anyway. + if s.Reuse == ReusePolicyNone { + s.prevTable = s.prevTable[:0] + } + + // Create histogram, if none was provided. + maxCount := s.maxCount + var canReuse = false + if maxCount == 0 { + maxCount, canReuse = s.countSimple(in) + } else { + canReuse = s.canUseTable(s.prevTable) + } + + // We want the output size to be less than this: + wantSize := len(in) + if s.WantLogLess > 0 { + wantSize -= wantSize >> s.WantLogLess + } + + // Reset for next run. + s.clearCount = true + s.maxCount = 0 + if maxCount >= len(in) { + if maxCount > len(in) { + return nil, false, fmt.Errorf("maxCount (%d) > length (%d)", maxCount, len(in)) + } + if len(in) == 1 { + return nil, false, ErrIncompressible + } + // One symbol, use RLE + return nil, false, ErrUseRLE + } + if maxCount == 1 || maxCount < (len(in)>>7) { + // Each symbol present maximum once or too well distributed. + return nil, false, ErrIncompressible + } + if s.Reuse == ReusePolicyMust && !canReuse { + // We must reuse, but we can't. + return nil, false, ErrIncompressible + } + if (s.Reuse == ReusePolicyPrefer || s.Reuse == ReusePolicyMust) && canReuse { + keepTable := s.cTable + keepTL := s.actualTableLog + s.cTable = s.prevTable + s.actualTableLog = s.prevTableLog + s.Out, err = compressor(in) + s.cTable = keepTable + s.actualTableLog = keepTL + if err == nil && len(s.Out) < wantSize { + s.OutData = s.Out + return s.Out, true, nil + } + if s.Reuse == ReusePolicyMust { + return nil, false, ErrIncompressible + } + // Do not attempt to re-use later. + s.prevTable = s.prevTable[:0] + } + + // Calculate new table. + err = s.buildCTable() + if err != nil { + return nil, false, err + } + + if false && !s.canUseTable(s.cTable) { + panic("invalid table generated") + } + + if s.Reuse == ReusePolicyAllow && canReuse { + hSize := len(s.Out) + oldSize := s.prevTable.estimateSize(s.count[:s.symbolLen]) + newSize := s.cTable.estimateSize(s.count[:s.symbolLen]) + if oldSize <= hSize+newSize || hSize+12 >= wantSize { + // Retain cTable even if we re-use. + keepTable := s.cTable + keepTL := s.actualTableLog + + s.cTable = s.prevTable + s.actualTableLog = s.prevTableLog + s.Out, err = compressor(in) + + // Restore ctable. + s.cTable = keepTable + s.actualTableLog = keepTL + if err != nil { + return nil, false, err + } + if len(s.Out) >= wantSize { + return nil, false, ErrIncompressible + } + s.OutData = s.Out + return s.Out, true, nil + } + } + + // Use new table + err = s.cTable.write(s) + if err != nil { + s.OutTable = nil + return nil, false, err + } + s.OutTable = s.Out + + // Compress using new table + s.Out, err = compressor(in) + if err != nil { + s.OutTable = nil + return nil, false, err + } + if len(s.Out) >= wantSize { + s.OutTable = nil + return nil, false, ErrIncompressible + } + // Move current table into previous. + s.prevTable, s.prevTableLog, s.cTable = s.cTable, s.actualTableLog, s.prevTable[:0] + s.OutData = s.Out[len(s.OutTable):] + return s.Out, false, nil +} + +// EstimateSizes will estimate the data sizes +func EstimateSizes(in []byte, s *Scratch) (tableSz, dataSz, reuseSz int, err error) { + s, err = s.prepare(in) + if err != nil { + return 0, 0, 0, err + } + + // Create histogram, if none was provided. + tableSz, dataSz, reuseSz = -1, -1, -1 + maxCount := s.maxCount + var canReuse = false + if maxCount == 0 { + maxCount, canReuse = s.countSimple(in) + } else { + canReuse = s.canUseTable(s.prevTable) + } + + // We want the output size to be less than this: + wantSize := len(in) + if s.WantLogLess > 0 { + wantSize -= wantSize >> s.WantLogLess + } + + // Reset for next run. + s.clearCount = true + s.maxCount = 0 + if maxCount >= len(in) { + if maxCount > len(in) { + return 0, 0, 0, fmt.Errorf("maxCount (%d) > length (%d)", maxCount, len(in)) + } + if len(in) == 1 { + return 0, 0, 0, ErrIncompressible + } + // One symbol, use RLE + return 0, 0, 0, ErrUseRLE + } + if maxCount == 1 || maxCount < (len(in)>>7) { + // Each symbol present maximum once or too well distributed. + return 0, 0, 0, ErrIncompressible + } + + // Calculate new table. + err = s.buildCTable() + if err != nil { + return 0, 0, 0, err + } + + if false && !s.canUseTable(s.cTable) { + panic("invalid table generated") + } + + tableSz, err = s.cTable.estTableSize(s) + if err != nil { + return 0, 0, 0, err + } + if canReuse { + reuseSz = s.prevTable.estimateSize(s.count[:s.symbolLen]) + } + dataSz = s.cTable.estimateSize(s.count[:s.symbolLen]) + + // Restore + return tableSz, dataSz, reuseSz, nil +} + +func (s *Scratch) compress1X(src []byte) ([]byte, error) { + return s.compress1xDo(s.Out, src), nil +} + +func (s *Scratch) compress1xDo(dst, src []byte) []byte { + var bw = bitWriter{out: dst} + + // N is length divisible by 4. + n := len(src) + n -= n & 3 + cTable := s.cTable[:256] + + // Encode last bytes. + for i := len(src) & 3; i > 0; i-- { + bw.encSymbol(cTable, src[n+i-1]) + } + n -= 4 + if s.actualTableLog <= 8 { + for ; n >= 0; n -= 4 { + tmp := src[n : n+4] + // tmp should be len 4 + bw.flush32() + bw.encFourSymbols(cTable[tmp[3]], cTable[tmp[2]], cTable[tmp[1]], cTable[tmp[0]]) + } + } else { + for ; n >= 0; n -= 4 { + tmp := src[n : n+4] + // tmp should be len 4 + bw.flush32() + bw.encTwoSymbols(cTable, tmp[3], tmp[2]) + bw.flush32() + bw.encTwoSymbols(cTable, tmp[1], tmp[0]) + } + } + bw.close() + return bw.out +} + +var sixZeros [6]byte + +func (s *Scratch) compress4X(src []byte) ([]byte, error) { + if len(src) < 12 { + return nil, ErrIncompressible + } + segmentSize := (len(src) + 3) / 4 + + // Add placeholder for output length + offsetIdx := len(s.Out) + s.Out = append(s.Out, sixZeros[:]...) + + for i := 0; i < 4; i++ { + toDo := src + if len(toDo) > segmentSize { + toDo = toDo[:segmentSize] + } + src = src[len(toDo):] + + idx := len(s.Out) + s.Out = s.compress1xDo(s.Out, toDo) + if len(s.Out)-idx > math.MaxUint16 { + // We cannot store the size in the jump table + return nil, ErrIncompressible + } + // Write compressed length as little endian before block. + if i < 3 { + // Last length is not written. + length := len(s.Out) - idx + s.Out[i*2+offsetIdx] = byte(length) + s.Out[i*2+offsetIdx+1] = byte(length >> 8) + } + } + + return s.Out, nil +} + +// compress4Xp will compress 4 streams using separate goroutines. +func (s *Scratch) compress4Xp(src []byte) ([]byte, error) { + if len(src) < 12 { + return nil, ErrIncompressible + } + // Add placeholder for output length + s.Out = s.Out[:6] + + segmentSize := (len(src) + 3) / 4 + var wg sync.WaitGroup + wg.Add(4) + for i := 0; i < 4; i++ { + toDo := src + if len(toDo) > segmentSize { + toDo = toDo[:segmentSize] + } + src = src[len(toDo):] + + // Separate goroutine for each block. + go func(i int) { + s.tmpOut[i] = s.compress1xDo(s.tmpOut[i][:0], toDo) + wg.Done() + }(i) + } + wg.Wait() + for i := 0; i < 4; i++ { + o := s.tmpOut[i] + if len(o) > math.MaxUint16 { + // We cannot store the size in the jump table + return nil, ErrIncompressible + } + // Write compressed length as little endian before block. + if i < 3 { + // Last length is not written. + s.Out[i*2] = byte(len(o)) + s.Out[i*2+1] = byte(len(o) >> 8) + } + + // Write output. + s.Out = append(s.Out, o...) + } + return s.Out, nil +} + +// countSimple will create a simple histogram in s.count. +// Returns the biggest count. +// Does not update s.clearCount. +func (s *Scratch) countSimple(in []byte) (max int, reuse bool) { + reuse = true + _ = s.count // Assert that s != nil to speed up the following loop. + for _, v := range in { + s.count[v]++ + } + m := uint32(0) + if len(s.prevTable) > 0 { + for i, v := range s.count[:] { + if v == 0 { + continue + } + if v > m { + m = v + } + s.symbolLen = uint16(i) + 1 + if i >= len(s.prevTable) { + reuse = false + } else if s.prevTable[i].nBits == 0 { + reuse = false + } + } + return int(m), reuse + } + for i, v := range s.count[:] { + if v == 0 { + continue + } + if v > m { + m = v + } + s.symbolLen = uint16(i) + 1 + } + return int(m), false +} + +func (s *Scratch) canUseTable(c cTable) bool { + if len(c) < int(s.symbolLen) { + return false + } + for i, v := range s.count[:s.symbolLen] { + if v != 0 && c[i].nBits == 0 { + return false + } + } + return true +} + +//lint:ignore U1000 used for debugging +func (s *Scratch) validateTable(c cTable) bool { + if len(c) < int(s.symbolLen) { + return false + } + for i, v := range s.count[:s.symbolLen] { + if v != 0 { + if c[i].nBits == 0 { + return false + } + if c[i].nBits > s.actualTableLog { + return false + } + } + } + return true +} + +// minTableLog provides the minimum logSize to safely represent a distribution. +func (s *Scratch) minTableLog() uint8 { + minBitsSrc := highBit32(uint32(s.srcLen)) + 1 + minBitsSymbols := highBit32(uint32(s.symbolLen-1)) + 2 + if minBitsSrc < minBitsSymbols { + return uint8(minBitsSrc) + } + return uint8(minBitsSymbols) +} + +// optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog +func (s *Scratch) optimalTableLog() { + tableLog := s.TableLog + minBits := s.minTableLog() + maxBitsSrc := uint8(highBit32(uint32(s.srcLen-1))) - 1 + if maxBitsSrc < tableLog { + // Accuracy can be reduced + tableLog = maxBitsSrc + } + if minBits > tableLog { + tableLog = minBits + } + // Need a minimum to safely represent all symbol values + if tableLog < minTablelog { + tableLog = minTablelog + } + if tableLog > tableLogMax { + tableLog = tableLogMax + } + s.actualTableLog = tableLog +} + +type cTableEntry struct { + val uint16 + nBits uint8 + // We have 8 bits extra +} + +const huffNodesMask = huffNodesLen - 1 + +func (s *Scratch) buildCTable() error { + s.optimalTableLog() + s.huffSort() + if cap(s.cTable) < maxSymbolValue+1 { + s.cTable = make([]cTableEntry, s.symbolLen, maxSymbolValue+1) + } else { + s.cTable = s.cTable[:s.symbolLen] + for i := range s.cTable { + s.cTable[i] = cTableEntry{} + } + } + + var startNode = int16(s.symbolLen) + nonNullRank := s.symbolLen - 1 + + nodeNb := startNode + huffNode := s.nodes[1 : huffNodesLen+1] + + // This overlays the slice above, but allows "-1" index lookups. + // Different from reference implementation. + huffNode0 := s.nodes[0 : huffNodesLen+1] + + for huffNode[nonNullRank].count() == 0 { + nonNullRank-- + } + + lowS := int16(nonNullRank) + nodeRoot := nodeNb + lowS - 1 + lowN := nodeNb + huffNode[nodeNb].setCount(huffNode[lowS].count() + huffNode[lowS-1].count()) + huffNode[lowS].setParent(nodeNb) + huffNode[lowS-1].setParent(nodeNb) + nodeNb++ + lowS -= 2 + for n := nodeNb; n <= nodeRoot; n++ { + huffNode[n].setCount(1 << 30) + } + // fake entry, strong barrier + huffNode0[0].setCount(1 << 31) + + // create parents + for nodeNb <= nodeRoot { + var n1, n2 int16 + if huffNode0[lowS+1].count() < huffNode0[lowN+1].count() { + n1 = lowS + lowS-- + } else { + n1 = lowN + lowN++ + } + if huffNode0[lowS+1].count() < huffNode0[lowN+1].count() { + n2 = lowS + lowS-- + } else { + n2 = lowN + lowN++ + } + + huffNode[nodeNb].setCount(huffNode0[n1+1].count() + huffNode0[n2+1].count()) + huffNode0[n1+1].setParent(nodeNb) + huffNode0[n2+1].setParent(nodeNb) + nodeNb++ + } + + // distribute weights (unlimited tree height) + huffNode[nodeRoot].setNbBits(0) + for n := nodeRoot - 1; n >= startNode; n-- { + huffNode[n].setNbBits(huffNode[huffNode[n].parent()].nbBits() + 1) + } + for n := uint16(0); n <= nonNullRank; n++ { + huffNode[n].setNbBits(huffNode[huffNode[n].parent()].nbBits() + 1) + } + s.actualTableLog = s.setMaxHeight(int(nonNullRank)) + maxNbBits := s.actualTableLog + + // fill result into tree (val, nbBits) + if maxNbBits > tableLogMax { + return fmt.Errorf("internal error: maxNbBits (%d) > tableLogMax (%d)", maxNbBits, tableLogMax) + } + var nbPerRank [tableLogMax + 1]uint16 + var valPerRank [16]uint16 + for _, v := range huffNode[:nonNullRank+1] { + nbPerRank[v.nbBits()]++ + } + // determine stating value per rank + { + min := uint16(0) + for n := maxNbBits; n > 0; n-- { + // get starting value within each rank + valPerRank[n] = min + min += nbPerRank[n] + min >>= 1 + } + } + + // push nbBits per symbol, symbol order + for _, v := range huffNode[:nonNullRank+1] { + s.cTable[v.symbol()].nBits = v.nbBits() + } + + // assign value within rank, symbol order + t := s.cTable[:s.symbolLen] + for n, val := range t { + nbits := val.nBits & 15 + v := valPerRank[nbits] + t[n].val = v + valPerRank[nbits] = v + 1 + } + + return nil +} + +// huffSort will sort symbols, decreasing order. +func (s *Scratch) huffSort() { + type rankPos struct { + base uint32 + current uint32 + } + + // Clear nodes + nodes := s.nodes[:huffNodesLen+1] + s.nodes = nodes + nodes = nodes[1 : huffNodesLen+1] + + // Sort into buckets based on length of symbol count. + var rank [32]rankPos + for _, v := range s.count[:s.symbolLen] { + r := highBit32(v+1) & 31 + rank[r].base++ + } + // maxBitLength is log2(BlockSizeMax) + 1 + const maxBitLength = 18 + 1 + for n := maxBitLength; n > 0; n-- { + rank[n-1].base += rank[n].base + } + for n := range rank[:maxBitLength] { + rank[n].current = rank[n].base + } + for n, c := range s.count[:s.symbolLen] { + r := (highBit32(c+1) + 1) & 31 + pos := rank[r].current + rank[r].current++ + prev := nodes[(pos-1)&huffNodesMask] + for pos > rank[r].base && c > prev.count() { + nodes[pos&huffNodesMask] = prev + pos-- + prev = nodes[(pos-1)&huffNodesMask] + } + nodes[pos&huffNodesMask] = makeNodeElt(c, byte(n)) + } +} + +func (s *Scratch) setMaxHeight(lastNonNull int) uint8 { + maxNbBits := s.actualTableLog + huffNode := s.nodes[1 : huffNodesLen+1] + //huffNode = huffNode[: huffNodesLen] + + largestBits := huffNode[lastNonNull].nbBits() + + // early exit : no elt > maxNbBits + if largestBits <= maxNbBits { + return largestBits + } + totalCost := int(0) + baseCost := int(1) << (largestBits - maxNbBits) + n := uint32(lastNonNull) + + for huffNode[n].nbBits() > maxNbBits { + totalCost += baseCost - (1 << (largestBits - huffNode[n].nbBits())) + huffNode[n].setNbBits(maxNbBits) + n-- + } + // n stops at huffNode[n].nbBits <= maxNbBits + + for huffNode[n].nbBits() == maxNbBits { + n-- + } + // n end at index of smallest symbol using < maxNbBits + + // renorm totalCost + totalCost >>= largestBits - maxNbBits /* note : totalCost is necessarily a multiple of baseCost */ + + // repay normalized cost + { + const noSymbol = 0xF0F0F0F0 + var rankLast [tableLogMax + 2]uint32 + + for i := range rankLast[:] { + rankLast[i] = noSymbol + } + + // Get pos of last (smallest) symbol per rank + { + currentNbBits := maxNbBits + for pos := int(n); pos >= 0; pos-- { + if huffNode[pos].nbBits() >= currentNbBits { + continue + } + currentNbBits = huffNode[pos].nbBits() // < maxNbBits + rankLast[maxNbBits-currentNbBits] = uint32(pos) + } + } + + for totalCost > 0 { + nBitsToDecrease := uint8(highBit32(uint32(totalCost))) + 1 + + for ; nBitsToDecrease > 1; nBitsToDecrease-- { + highPos := rankLast[nBitsToDecrease] + lowPos := rankLast[nBitsToDecrease-1] + if highPos == noSymbol { + continue + } + if lowPos == noSymbol { + break + } + highTotal := huffNode[highPos].count() + lowTotal := 2 * huffNode[lowPos].count() + if highTotal <= lowTotal { + break + } + } + // only triggered when no more rank 1 symbol left => find closest one (note : there is necessarily at least one !) + // HUF_MAX_TABLELOG test just to please gcc 5+; but it should not be necessary + // FIXME: try to remove + for (nBitsToDecrease <= tableLogMax) && (rankLast[nBitsToDecrease] == noSymbol) { + nBitsToDecrease++ + } + totalCost -= 1 << (nBitsToDecrease - 1) + if rankLast[nBitsToDecrease-1] == noSymbol { + // this rank is no longer empty + rankLast[nBitsToDecrease-1] = rankLast[nBitsToDecrease] + } + huffNode[rankLast[nBitsToDecrease]].setNbBits(1 + + huffNode[rankLast[nBitsToDecrease]].nbBits()) + if rankLast[nBitsToDecrease] == 0 { + /* special case, reached largest symbol */ + rankLast[nBitsToDecrease] = noSymbol + } else { + rankLast[nBitsToDecrease]-- + if huffNode[rankLast[nBitsToDecrease]].nbBits() != maxNbBits-nBitsToDecrease { + rankLast[nBitsToDecrease] = noSymbol /* this rank is now empty */ + } + } + } + + for totalCost < 0 { /* Sometimes, cost correction overshoot */ + if rankLast[1] == noSymbol { /* special case : no rank 1 symbol (using maxNbBits-1); let's create one from largest rank 0 (using maxNbBits) */ + for huffNode[n].nbBits() == maxNbBits { + n-- + } + huffNode[n+1].setNbBits(huffNode[n+1].nbBits() - 1) + rankLast[1] = n + 1 + totalCost++ + continue + } + huffNode[rankLast[1]+1].setNbBits(huffNode[rankLast[1]+1].nbBits() - 1) + rankLast[1]++ + totalCost++ + } + } + return maxNbBits +} + +// A nodeElt is the fields +// +// count uint32 +// parent uint16 +// symbol byte +// nbBits uint8 +// +// in some order, all squashed into an integer so that the compiler +// always loads and stores entire nodeElts instead of separate fields. +type nodeElt uint64 + +func makeNodeElt(count uint32, symbol byte) nodeElt { + return nodeElt(count) | nodeElt(symbol)<<48 +} + +func (e *nodeElt) count() uint32 { return uint32(*e) } +func (e *nodeElt) parent() uint16 { return uint16(*e >> 32) } +func (e *nodeElt) symbol() byte { return byte(*e >> 48) } +func (e *nodeElt) nbBits() uint8 { return uint8(*e >> 56) } + +func (e *nodeElt) setCount(c uint32) { *e = (*e)&0xffffffff00000000 | nodeElt(c) } +func (e *nodeElt) setParent(p int16) { *e = (*e)&0xffff0000ffffffff | nodeElt(uint16(p))<<32 } +func (e *nodeElt) setNbBits(n uint8) { *e = (*e)&0x00ffffffffffffff | nodeElt(n)<<56 } diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go new file mode 100644 index 0000000..54bd08b --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress.go @@ -0,0 +1,1167 @@ +package huff0 + +import ( + "errors" + "fmt" + "io" + "sync" + + "github.com/klauspost/compress/fse" +) + +type dTable struct { + single []dEntrySingle +} + +// single-symbols decoding +type dEntrySingle struct { + entry uint16 +} + +// Uses special code for all tables that are < 8 bits. +const use8BitTables = true + +// ReadTable will read a table from the input. +// The size of the input may be larger than the table definition. +// Any content remaining after the table definition will be returned. +// If no Scratch is provided a new one is allocated. +// The returned Scratch can be used for encoding or decoding input using this table. +func ReadTable(in []byte, s *Scratch) (s2 *Scratch, remain []byte, err error) { + s, err = s.prepare(nil) + if err != nil { + return s, nil, err + } + if len(in) <= 1 { + return s, nil, errors.New("input too small for table") + } + iSize := in[0] + in = in[1:] + if iSize >= 128 { + // Uncompressed + oSize := iSize - 127 + iSize = (oSize + 1) / 2 + if int(iSize) > len(in) { + return s, nil, errors.New("input too small for table") + } + for n := uint8(0); n < oSize; n += 2 { + v := in[n/2] + s.huffWeight[n] = v >> 4 + s.huffWeight[n+1] = v & 15 + } + s.symbolLen = uint16(oSize) + in = in[iSize:] + } else { + if len(in) < int(iSize) { + return s, nil, fmt.Errorf("input too small for table, want %d bytes, have %d", iSize, len(in)) + } + // FSE compressed weights + s.fse.DecompressLimit = 255 + hw := s.huffWeight[:] + s.fse.Out = hw + b, err := fse.Decompress(in[:iSize], s.fse) + s.fse.Out = nil + if err != nil { + return s, nil, fmt.Errorf("fse decompress returned: %w", err) + } + if len(b) > 255 { + return s, nil, errors.New("corrupt input: output table too large") + } + s.symbolLen = uint16(len(b)) + in = in[iSize:] + } + + // collect weight stats + var rankStats [16]uint32 + weightTotal := uint32(0) + for _, v := range s.huffWeight[:s.symbolLen] { + if v > tableLogMax { + return s, nil, errors.New("corrupt input: weight too large") + } + v2 := v & 15 + rankStats[v2]++ + // (1 << (v2-1)) is slower since the compiler cannot prove that v2 isn't 0. + weightTotal += (1 << v2) >> 1 + } + if weightTotal == 0 { + return s, nil, errors.New("corrupt input: weights zero") + } + + // get last non-null symbol weight (implied, total must be 2^n) + { + tableLog := highBit32(weightTotal) + 1 + if tableLog > tableLogMax { + return s, nil, errors.New("corrupt input: tableLog too big") + } + s.actualTableLog = uint8(tableLog) + // determine last weight + { + total := uint32(1) << tableLog + rest := total - weightTotal + verif := uint32(1) << highBit32(rest) + lastWeight := highBit32(rest) + 1 + if verif != rest { + // last value must be a clean power of 2 + return s, nil, errors.New("corrupt input: last value not power of two") + } + s.huffWeight[s.symbolLen] = uint8(lastWeight) + s.symbolLen++ + rankStats[lastWeight]++ + } + } + + if (rankStats[1] < 2) || (rankStats[1]&1 != 0) { + // by construction : at least 2 elts of rank 1, must be even + return s, nil, errors.New("corrupt input: min elt size, even check failed ") + } + + // TODO: Choose between single/double symbol decoding + + // Calculate starting value for each rank + { + var nextRankStart uint32 + for n := uint8(1); n < s.actualTableLog+1; n++ { + current := nextRankStart + nextRankStart += rankStats[n] << (n - 1) + rankStats[n] = current + } + } + + // fill DTable (always full size) + tSize := 1 << tableLogMax + if len(s.dt.single) != tSize { + s.dt.single = make([]dEntrySingle, tSize) + } + cTable := s.prevTable + if cap(cTable) < maxSymbolValue+1 { + cTable = make([]cTableEntry, 0, maxSymbolValue+1) + } + cTable = cTable[:maxSymbolValue+1] + s.prevTable = cTable[:s.symbolLen] + s.prevTableLog = s.actualTableLog + + for n, w := range s.huffWeight[:s.symbolLen] { + if w == 0 { + cTable[n] = cTableEntry{ + val: 0, + nBits: 0, + } + continue + } + length := (uint32(1) << w) >> 1 + d := dEntrySingle{ + entry: uint16(s.actualTableLog+1-w) | (uint16(n) << 8), + } + + rank := &rankStats[w] + cTable[n] = cTableEntry{ + val: uint16(*rank >> (w - 1)), + nBits: uint8(d.entry), + } + + single := s.dt.single[*rank : *rank+length] + for i := range single { + single[i] = d + } + *rank += length + } + + return s, in, nil +} + +// Decompress1X will decompress a 1X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// Before this is called, the table must be initialized with ReadTable unless +// the encoder re-used the table. +// deprecated: Use the stateless Decoder() to get a concurrent version. +func (s *Scratch) Decompress1X(in []byte) (out []byte, err error) { + if cap(s.Out) < s.MaxDecodedSize { + s.Out = make([]byte, s.MaxDecodedSize) + } + s.Out = s.Out[:0:s.MaxDecodedSize] + s.Out, err = s.Decoder().Decompress1X(s.Out, in) + return s.Out, err +} + +// Decompress4X will decompress a 4X encoded stream. +// Before this is called, the table must be initialized with ReadTable unless +// the encoder re-used the table. +// The length of the supplied input must match the end of a block exactly. +// The destination size of the uncompressed data must be known and provided. +// deprecated: Use the stateless Decoder() to get a concurrent version. +func (s *Scratch) Decompress4X(in []byte, dstSize int) (out []byte, err error) { + if dstSize > s.MaxDecodedSize { + return nil, ErrMaxDecodedSizeExceeded + } + if cap(s.Out) < dstSize { + s.Out = make([]byte, s.MaxDecodedSize) + } + s.Out = s.Out[:0:dstSize] + s.Out, err = s.Decoder().Decompress4X(s.Out, in) + return s.Out, err +} + +// Decoder will return a stateless decoder that can be used by multiple +// decompressors concurrently. +// Before this is called, the table must be initialized with ReadTable. +// The Decoder is still linked to the scratch buffer so that cannot be reused. +// However, it is safe to discard the scratch. +func (s *Scratch) Decoder() *Decoder { + return &Decoder{ + dt: s.dt, + actualTableLog: s.actualTableLog, + bufs: &s.decPool, + } +} + +// Decoder provides stateless decoding. +type Decoder struct { + dt dTable + actualTableLog uint8 + bufs *sync.Pool +} + +func (d *Decoder) buffer() *[4][256]byte { + buf, ok := d.bufs.Get().(*[4][256]byte) + if ok { + return buf + } + return &[4][256]byte{} +} + +// decompress1X8Bit will decompress a 1X encoded stream with tablelog <= 8. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) decompress1X8Bit(dst, src []byte) ([]byte, error) { + if d.actualTableLog == 8 { + return d.decompress1X8BitExactly(dst, src) + } + var br bitReaderBytes + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:0] + + // Avoid bounds check by always having full sized table. + dt := d.dt.single[:256] + + // Use temp table to avoid bound checks/append penalty. + bufs := d.buffer() + buf := &bufs[0] + var off uint8 + + switch d.actualTableLog { + case 8: + const shift = 0 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 7: + const shift = 8 - 7 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 6: + const shift = 8 - 6 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 5: + const shift = 8 - 5 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 4: + const shift = 8 - 4 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 3: + const shift = 8 - 3 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 2: + const shift = 8 - 2 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + case 1: + const shift = 8 - 1 + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>(56+shift))] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + default: + d.bufs.Put(bufs) + return nil, fmt.Errorf("invalid tablelog: %d", d.actualTableLog) + } + + if len(dst)+int(off) > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:off]...) + + // br < 4, so uint8 is fine + bitsLeft := int8(uint8(br.off)*8 + (64 - br.bitsRead)) + shift := (8 - d.actualTableLog) & 7 + + for bitsLeft > 0 { + if br.bitsRead >= 64-8 { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + if len(dst) >= maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + v := dt[br.peekByteFast()>>shift] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= int8(nBits) + dst = append(dst, uint8(v.entry>>8)) + } + d.bufs.Put(bufs) + return dst, br.close() +} + +// decompress1X8Bit will decompress a 1X encoded stream with tablelog <= 8. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) decompress1X8BitExactly(dst, src []byte) ([]byte, error) { + var br bitReaderBytes + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:0] + + // Avoid bounds check by always having full sized table. + dt := d.dt.single[:256] + + // Use temp table to avoid bound checks/append penalty. + bufs := d.buffer() + buf := &bufs[0] + var off uint8 + + const shift = 56 + + //fmt.Printf("mask: %b, tl:%d\n", mask, d.actualTableLog) + for br.off >= 4 { + br.fillFast() + v := dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[uint8(br.value>>shift)] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + + if len(dst)+int(off) > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:off]...) + + // br < 4, so uint8 is fine + bitsLeft := int8(uint8(br.off)*8 + (64 - br.bitsRead)) + for bitsLeft > 0 { + if br.bitsRead >= 64-8 { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + if len(dst) >= maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + v := dt[br.peekByteFast()] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= int8(nBits) + dst = append(dst, uint8(v.entry>>8)) + } + d.bufs.Put(bufs) + return dst, br.close() +} + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) decompress4X8bit(dst, src []byte) ([]byte, error) { + if d.actualTableLog == 8 { + return d.decompress4X8bitExactly(dst, src) + } + + var br [4]bitReaderBytes + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + shift := (56 + (8 - d.actualTableLog)) & 63 + + const tlSize = 1 << 8 + single := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + buf := d.buffer() + var off uint8 + var decoded int + + // Decode 4 values from each decoder/loop. + const bufoff = 256 + for { + if br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4 { + break + } + + { + // Interleave 2 decodes. + const stream = 0 + const stream2 = 1 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + { + const stream = 2 + const stream2 = 3 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + off += 4 + + if off == 0 { + if bufoff > dstEvery { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 1") + } + // There must at least be 3 buffers left. + if len(out)-bufoff < dstEvery*3 { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 2") + } + //copy(out, buf[0][:]) + //copy(out[dstEvery:], buf[1][:]) + //copy(out[dstEvery*2:], buf[2][:]) + *(*[bufoff]byte)(out) = buf[0] + *(*[bufoff]byte)(out[dstEvery:]) = buf[1] + *(*[bufoff]byte)(out[dstEvery*2:]) = buf[2] + *(*[bufoff]byte)(out[dstEvery*3:]) = buf[3] + out = out[bufoff:] + decoded += bufoff * 4 + } + } + if off > 0 { + ioff := int(off) + if len(out) < dstEvery*3+ioff { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 3") + } + copy(out, buf[0][:off]) + copy(out[dstEvery:], buf[1][:off]) + copy(out[dstEvery*2:], buf[2][:off]) + copy(out[dstEvery*3:], buf[3][:off]) + decoded += int(off) * 4 + out = out[off:] + } + + // Decode remaining. + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + if br.finished() { + d.bufs.Put(buf) + return nil, io.ErrUnexpectedEOF + } + if br.bitsRead >= 56 { + if br.off >= 4 { + v := br.in[br.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + br.value |= uint64(low) << (br.bitsRead - 32) + br.bitsRead -= 32 + br.off -= 4 + } else { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + } + // end inline... + if offset >= endsAt { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + v := single[uint8(br.value>>shift)].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + d.bufs.Put(buf) + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + d.bufs.Put(buf) + return nil, err + } + } + d.bufs.Put(buf) + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) decompress4X8bitExactly(dst, src []byte) ([]byte, error) { + var br [4]bitReaderBytes + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + const shift = 56 + const tlSize = 1 << 8 + single := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + buf := d.buffer() + var off uint8 + var decoded int + + // Decode 4 values from each decoder/loop. + const bufoff = 256 + for { + if br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4 { + break + } + + { + // Interleave 2 decodes. + const stream = 0 + const stream2 = 1 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + { + const stream = 2 + const stream2 = 3 + br1 := &br[stream] + br2 := &br[stream2] + br1.fillFast() + br2.fillFast() + + v := single[uint8(br1.value>>shift)].entry + v2 := single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off] = uint8(v >> 8) + buf[stream2][off] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+1] = uint8(v >> 8) + buf[stream2][off+1] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+2] = uint8(v >> 8) + buf[stream2][off+2] = uint8(v2 >> 8) + + v = single[uint8(br1.value>>shift)].entry + v2 = single[uint8(br2.value>>shift)].entry + br1.bitsRead += uint8(v) + br1.value <<= v & 63 + br2.bitsRead += uint8(v2) + br2.value <<= v2 & 63 + buf[stream][off+3] = uint8(v >> 8) + buf[stream2][off+3] = uint8(v2 >> 8) + } + + off += 4 + + if off == 0 { + if bufoff > dstEvery { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 1") + } + // There must at least be 3 buffers left. + if len(out)-bufoff < dstEvery*3 { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 2") + } + + //copy(out, buf[0][:]) + //copy(out[dstEvery:], buf[1][:]) + //copy(out[dstEvery*2:], buf[2][:]) + // copy(out[dstEvery*3:], buf[3][:]) + *(*[bufoff]byte)(out) = buf[0] + *(*[bufoff]byte)(out[dstEvery:]) = buf[1] + *(*[bufoff]byte)(out[dstEvery*2:]) = buf[2] + *(*[bufoff]byte)(out[dstEvery*3:]) = buf[3] + out = out[bufoff:] + decoded += bufoff * 4 + } + } + if off > 0 { + ioff := int(off) + if len(out) < dstEvery*3+ioff { + return nil, errors.New("corruption detected: stream overrun 3") + } + copy(out, buf[0][:off]) + copy(out[dstEvery:], buf[1][:off]) + copy(out[dstEvery*2:], buf[2][:off]) + copy(out[dstEvery*3:], buf[3][:off]) + decoded += int(off) * 4 + out = out[off:] + } + + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + if br.finished() { + d.bufs.Put(buf) + return nil, io.ErrUnexpectedEOF + } + if br.bitsRead >= 56 { + if br.off >= 4 { + v := br.in[br.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + br.value |= uint64(low) << (br.bitsRead - 32) + br.bitsRead -= 32 + br.off -= 4 + } else { + for br.off > 0 { + br.value |= uint64(br.in[br.off-1]) << (br.bitsRead - 8) + br.bitsRead -= 8 + br.off-- + } + } + } + // end inline... + if offset >= endsAt { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + v := single[br.peekByteFast()].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + d.bufs.Put(buf) + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + d.bufs.Put(buf) + return nil, err + } + } + d.bufs.Put(buf) + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// matches will compare a decoding table to a coding table. +// Errors are written to the writer. +// Nothing will be written if table is ok. +func (s *Scratch) matches(ct cTable, w io.Writer) { + if s == nil || len(s.dt.single) == 0 { + return + } + dt := s.dt.single[:1<>8) == byte(sym) { + fmt.Fprintf(w, "symbol %x has decoder, but no encoder\n", sym) + errs++ + break + } + } + if errs == 0 { + broken-- + } + continue + } + // Unused bits in input + ub := tablelog - enc.nBits + top := enc.val << ub + // decoder looks at top bits. + dec := dt[top] + if uint8(dec.entry) != enc.nBits { + fmt.Fprintf(w, "symbol 0x%x bit size mismatch (enc: %d, dec:%d).\n", sym, enc.nBits, uint8(dec.entry)) + errs++ + } + if uint8(dec.entry>>8) != uint8(sym) { + fmt.Fprintf(w, "symbol 0x%x decoder output mismatch (enc: %d, dec:%d).\n", sym, sym, uint8(dec.entry>>8)) + errs++ + } + if errs > 0 { + fmt.Fprintf(w, "%d errros in base, stopping\n", errs) + continue + } + // Ensure that all combinations are covered. + for i := uint16(0); i < (1 << ub); i++ { + vval := top | i + dec := dt[vval] + if uint8(dec.entry) != enc.nBits { + fmt.Fprintf(w, "symbol 0x%x bit size mismatch (enc: %d, dec:%d).\n", vval, enc.nBits, uint8(dec.entry)) + errs++ + } + if uint8(dec.entry>>8) != uint8(sym) { + fmt.Fprintf(w, "symbol 0x%x decoder output mismatch (enc: %d, dec:%d).\n", vval, sym, uint8(dec.entry>>8)) + errs++ + } + if errs > 20 { + fmt.Fprintf(w, "%d errros, stopping\n", errs) + break + } + } + if errs == 0 { + ok++ + broken-- + } + } + if broken > 0 { + fmt.Fprintf(w, "%d broken, %d ok\n", broken, ok) + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go new file mode 100644 index 0000000..ba7e8e6 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.go @@ -0,0 +1,226 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +// This file contains the specialisation of Decoder.Decompress4X +// and Decoder.Decompress1X that use an asm implementation of thir main loops. +package huff0 + +import ( + "errors" + "fmt" + + "github.com/klauspost/compress/internal/cpuinfo" +) + +// decompress4x_main_loop_x86 is an x86 assembler implementation +// of Decompress4X when tablelog > 8. +// +//go:noescape +func decompress4x_main_loop_amd64(ctx *decompress4xContext) + +// decompress4x_8b_loop_x86 is an x86 assembler implementation +// of Decompress4X when tablelog <= 8 which decodes 4 entries +// per loop. +// +//go:noescape +func decompress4x_8b_main_loop_amd64(ctx *decompress4xContext) + +// fallback8BitSize is the size where using Go version is faster. +const fallback8BitSize = 800 + +type decompress4xContext struct { + pbr *[4]bitReaderShifted + peekBits uint8 + out *byte + dstEvery int + tbl *dEntrySingle + decoded int + limit *byte +} + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) Decompress4X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + if len(src) < 6+(4*1) { + return nil, errors.New("input too small") + } + + use8BitTables := d.actualTableLog <= 8 + if cap(dst) < fallback8BitSize && use8BitTables { + return d.decompress4X8bit(dst, src) + } + + var br [4]bitReaderShifted + // Decode "jump table" + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + single := d.dt.single[:tlSize] + + var decoded int + + if len(out) > 4*4 && !(br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4) { + ctx := decompress4xContext{ + pbr: &br, + peekBits: uint8((64 - d.actualTableLog) & 63), // see: bitReaderShifted.peekBitsFast() + out: &out[0], + dstEvery: dstEvery, + tbl: &single[0], + limit: &out[dstEvery-4], // Always stop decoding when first buffer gets here to avoid writing OOB on last. + } + if use8BitTables { + decompress4x_8b_main_loop_amd64(&ctx) + } else { + decompress4x_main_loop_amd64(&ctx) + } + + decoded = ctx.decoded + out = out[decoded/4:] + } + + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + br.fill() + if offset >= endsAt { + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + val := br.peekBitsFast(d.actualTableLog) + v := single[val&tlMask].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + return nil, err + } + } + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// decompress4x_main_loop_x86 is an x86 assembler implementation +// of Decompress1X when tablelog > 8. +// +//go:noescape +func decompress1x_main_loop_amd64(ctx *decompress1xContext) + +// decompress4x_main_loop_x86 is an x86 with BMI2 assembler implementation +// of Decompress1X when tablelog > 8. +// +//go:noescape +func decompress1x_main_loop_bmi2(ctx *decompress1xContext) + +type decompress1xContext struct { + pbr *bitReaderShifted + peekBits uint8 + out *byte + outCap int + tbl *dEntrySingle + decoded int +} + +// Error reported by asm implementations +const error_max_decoded_size_exeeded = -1 + +// Decompress1X will decompress a 1X encoded stream. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) Decompress1X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + var br bitReaderShifted + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:maxDecodedSize] + + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + + if maxDecodedSize >= 4 { + ctx := decompress1xContext{ + pbr: &br, + out: &dst[0], + outCap: maxDecodedSize, + peekBits: uint8((64 - d.actualTableLog) & 63), // see: bitReaderShifted.peekBitsFast() + tbl: &d.dt.single[0], + } + + if cpuinfo.HasBMI2() { + decompress1x_main_loop_bmi2(&ctx) + } else { + decompress1x_main_loop_amd64(&ctx) + } + if ctx.decoded == error_max_decoded_size_exeeded { + return nil, ErrMaxDecodedSizeExceeded + } + + dst = dst[:ctx.decoded] + } + + // br < 8, so uint8 is fine + bitsLeft := uint8(br.off)*8 + 64 - br.bitsRead + for bitsLeft > 0 { + br.fill() + if len(dst) >= maxDecodedSize { + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + v := d.dt.single[br.peekBitsFast(d.actualTableLog)&tlMask] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= nBits + dst = append(dst, uint8(v.entry>>8)) + } + return dst, br.close() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s new file mode 100644 index 0000000..c4c7ab2 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_amd64.s @@ -0,0 +1,830 @@ +// Code generated by command: go run gen.go -out ../decompress_amd64.s -pkg=huff0. DO NOT EDIT. + +//go:build amd64 && !appengine && !noasm && gc + +// func decompress4x_main_loop_amd64(ctx *decompress4xContext) +TEXT ·decompress4x_main_loop_amd64(SB), $0-8 + // Preload values + MOVQ ctx+0(FP), AX + MOVBQZX 8(AX), DI + MOVQ 16(AX), BX + MOVQ 48(AX), SI + MOVQ 24(AX), R8 + MOVQ 32(AX), R9 + MOVQ (AX), R10 + + // Main loop +main_loop: + XORL DX, DX + CMPQ BX, SI + SETGE DL + + // br0.fillFast32() + MOVQ 32(R10), R11 + MOVBQZX 40(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill0 + MOVQ 24(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ (R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 24(R10) + ORQ R13, R11 + + // exhausted += (br0.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill0: + // val0 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br0.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + MOVW AX, (BX) + + // update the bitreader structure + MOVQ R11, 32(R10) + MOVB R12, 40(R10) + + // br1.fillFast32() + MOVQ 80(R10), R11 + MOVBQZX 88(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill1 + MOVQ 72(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ 48(R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 72(R10) + ORQ R13, R11 + + // exhausted += (br1.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill1: + // val0 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br1.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + MOVW AX, (BX)(R8*1) + + // update the bitreader structure + MOVQ R11, 80(R10) + MOVB R12, 88(R10) + + // br2.fillFast32() + MOVQ 128(R10), R11 + MOVBQZX 136(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill2 + MOVQ 120(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ 96(R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 120(R10) + ORQ R13, R11 + + // exhausted += (br2.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill2: + // val0 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br2.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + MOVW AX, (BX)(R8*2) + + // update the bitreader structure + MOVQ R11, 128(R10) + MOVB R12, 136(R10) + + // br3.fillFast32() + MOVQ 176(R10), R11 + MOVBQZX 184(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill3 + MOVQ 168(R10), AX + SUBQ $0x20, R12 + SUBQ $0x04, AX + MOVQ 144(R10), R13 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (AX)(R13*1), R13 + MOVQ R12, CX + SHLQ CL, R13 + MOVQ AX, 168(R10) + ORQ R13, R11 + + // exhausted += (br3.off < 4) + CMPQ AX, $0x04 + ADCB $+0, DL + +skip_fill3: + // val0 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br3.peekTopBits(peekBits) + MOVQ DI, CX + MOVQ R11, R13 + SHRQ CL, R13 + + // v1 := table[val1&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v1.entry)) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // these two writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + LEAQ (R8)(R8*2), CX + MOVW AX, (BX)(CX*1) + + // update the bitreader structure + MOVQ R11, 176(R10) + MOVB R12, 184(R10) + ADDQ $0x02, BX + TESTB DL, DL + JZ main_loop + MOVQ ctx+0(FP), AX + SUBQ 16(AX), BX + SHLQ $0x02, BX + MOVQ BX, 40(AX) + RET + +// func decompress4x_8b_main_loop_amd64(ctx *decompress4xContext) +TEXT ·decompress4x_8b_main_loop_amd64(SB), $0-8 + // Preload values + MOVQ ctx+0(FP), CX + MOVBQZX 8(CX), DI + MOVQ 16(CX), BX + MOVQ 48(CX), SI + MOVQ 24(CX), R8 + MOVQ 32(CX), R9 + MOVQ (CX), R10 + + // Main loop +main_loop: + XORL DX, DX + CMPQ BX, SI + SETGE DL + + // br0.fillFast32() + MOVQ 32(R10), R11 + MOVBQZX 40(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill0 + MOVQ 24(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ (R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 24(R10) + ORQ R14, R11 + + // exhausted += (br0.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill0: + // val0 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br0.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br0.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + MOVL AX, (BX) + + // update the bitreader structure + MOVQ R11, 32(R10) + MOVB R12, 40(R10) + + // br1.fillFast32() + MOVQ 80(R10), R11 + MOVBQZX 88(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill1 + MOVQ 72(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ 48(R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 72(R10) + ORQ R14, R11 + + // exhausted += (br1.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill1: + // val0 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br1.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br1.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + MOVL AX, (BX)(R8*1) + + // update the bitreader structure + MOVQ R11, 80(R10) + MOVB R12, 88(R10) + + // br2.fillFast32() + MOVQ 128(R10), R11 + MOVBQZX 136(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill2 + MOVQ 120(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ 96(R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 120(R10) + ORQ R14, R11 + + // exhausted += (br2.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill2: + // val0 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br2.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br2.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + MOVL AX, (BX)(R8*2) + + // update the bitreader structure + MOVQ R11, 128(R10) + MOVB R12, 136(R10) + + // br3.fillFast32() + MOVQ 176(R10), R11 + MOVBQZX 184(R10), R12 + CMPQ R12, $0x20 + JBE skip_fill3 + MOVQ 168(R10), R13 + SUBQ $0x20, R12 + SUBQ $0x04, R13 + MOVQ 144(R10), R14 + + // b.value |= uint64(low) << (b.bitsRead & 63) + MOVL (R13)(R14*1), R14 + MOVQ R12, CX + SHLQ CL, R14 + MOVQ R13, 168(R10) + ORQ R14, R11 + + // exhausted += (br3.off < 4) + CMPQ R13, $0x04 + ADCB $+0, DL + +skip_fill3: + // val0 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v0 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v0.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + + // val1 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v1 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v1.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // val2 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v2 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v2.entry) + MOVB CH, AH + SHLQ CL, R11 + ADDB CL, R12 + + // val3 := br3.peekTopBits(peekBits) + MOVQ R11, R13 + MOVQ DI, CX + SHRQ CL, R13 + + // v3 := table[val0&mask] + MOVW (R9)(R13*2), CX + + // br3.advance(uint8(v3.entry) + MOVB CH, AL + SHLQ CL, R11 + ADDB CL, R12 + BSWAPL AX + + // these four writes get coalesced + // out[id * dstEvery + 0] = uint8(v0.entry >> 8) + // out[id * dstEvery + 1] = uint8(v1.entry >> 8) + // out[id * dstEvery + 3] = uint8(v2.entry >> 8) + // out[id * dstEvery + 4] = uint8(v3.entry >> 8) + LEAQ (R8)(R8*2), CX + MOVL AX, (BX)(CX*1) + + // update the bitreader structure + MOVQ R11, 176(R10) + MOVB R12, 184(R10) + ADDQ $0x04, BX + TESTB DL, DL + JZ main_loop + MOVQ ctx+0(FP), AX + SUBQ 16(AX), BX + SHLQ $0x02, BX + MOVQ BX, 40(AX) + RET + +// func decompress1x_main_loop_amd64(ctx *decompress1xContext) +TEXT ·decompress1x_main_loop_amd64(SB), $0-8 + MOVQ ctx+0(FP), CX + MOVQ 16(CX), DX + MOVQ 24(CX), BX + CMPQ BX, $0x04 + JB error_max_decoded_size_exceeded + LEAQ (DX)(BX*1), BX + MOVQ (CX), SI + MOVQ (SI), R8 + MOVQ 24(SI), R9 + MOVQ 32(SI), R10 + MOVBQZX 40(SI), R11 + MOVQ 32(CX), SI + MOVBQZX 8(CX), DI + JMP loop_condition + +main_loop: + // Check if we have room for 4 bytes in the output buffer + LEAQ 4(DX), CX + CMPQ CX, BX + JGE error_max_decoded_size_exceeded + + // Decode 4 values + CMPQ R11, $0x20 + JL bitReader_fillFast_1_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), R12 + MOVQ R11, CX + SHLQ CL, R12 + ORQ R12, R10 + +bitReader_fillFast_1_end: + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + BSWAPL AX + CMPQ R11, $0x20 + JL bitReader_fillFast_2_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), R12 + MOVQ R11, CX + SHLQ CL, R12 + ORQ R12, R10 + +bitReader_fillFast_2_end: + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + MOVQ DI, CX + MOVQ R10, R12 + SHRQ CL, R12 + MOVW (SI)(R12*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLQ CL, R10 + BSWAPL AX + + // Store the decoded values + MOVL AX, (DX) + ADDQ $0x04, DX + +loop_condition: + CMPQ R9, $0x08 + JGE main_loop + + // Update ctx structure + MOVQ ctx+0(FP), AX + SUBQ 16(AX), DX + MOVQ DX, 40(AX) + MOVQ (AX), AX + MOVQ R9, 24(AX) + MOVQ R10, 32(AX) + MOVB R11, 40(AX) + RET + + // Report error +error_max_decoded_size_exceeded: + MOVQ ctx+0(FP), AX + MOVQ $-1, CX + MOVQ CX, 40(AX) + RET + +// func decompress1x_main_loop_bmi2(ctx *decompress1xContext) +// Requires: BMI2 +TEXT ·decompress1x_main_loop_bmi2(SB), $0-8 + MOVQ ctx+0(FP), CX + MOVQ 16(CX), DX + MOVQ 24(CX), BX + CMPQ BX, $0x04 + JB error_max_decoded_size_exceeded + LEAQ (DX)(BX*1), BX + MOVQ (CX), SI + MOVQ (SI), R8 + MOVQ 24(SI), R9 + MOVQ 32(SI), R10 + MOVBQZX 40(SI), R11 + MOVQ 32(CX), SI + MOVBQZX 8(CX), DI + JMP loop_condition + +main_loop: + // Check if we have room for 4 bytes in the output buffer + LEAQ 4(DX), CX + CMPQ CX, BX + JGE error_max_decoded_size_exceeded + + // Decode 4 values + CMPQ R11, $0x20 + JL bitReader_fillFast_1_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), CX + SHLXQ R11, CX, CX + ORQ CX, R10 + +bitReader_fillFast_1_end: + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + BSWAPL AX + CMPQ R11, $0x20 + JL bitReader_fillFast_2_end + SUBQ $0x20, R11 + SUBQ $0x04, R9 + MOVL (R8)(R9*1), CX + SHLXQ R11, CX, CX + ORQ CX, R10 + +bitReader_fillFast_2_end: + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AH + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + SHRXQ DI, R10, CX + MOVW (SI)(CX*2), CX + MOVB CH, AL + MOVBQZX CL, CX + ADDQ CX, R11 + SHLXQ CX, R10, R10 + BSWAPL AX + + // Store the decoded values + MOVL AX, (DX) + ADDQ $0x04, DX + +loop_condition: + CMPQ R9, $0x08 + JGE main_loop + + // Update ctx structure + MOVQ ctx+0(FP), AX + SUBQ 16(AX), DX + MOVQ DX, 40(AX) + MOVQ (AX), AX + MOVQ R9, 24(AX) + MOVQ R10, 32(AX) + MOVB R11, 40(AX) + RET + + // Report error +error_max_decoded_size_exceeded: + MOVQ ctx+0(FP), AX + MOVQ $-1, CX + MOVQ CX, 40(AX) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go new file mode 100644 index 0000000..908c17d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/decompress_generic.go @@ -0,0 +1,299 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +// This file contains a generic implementation of Decoder.Decompress4X. +package huff0 + +import ( + "errors" + "fmt" +) + +// Decompress4X will decompress a 4X encoded stream. +// The length of the supplied input must match the end of a block exactly. +// The *capacity* of the dst slice must match the destination size of +// the uncompressed data exactly. +func (d *Decoder) Decompress4X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + if len(src) < 6+(4*1) { + return nil, errors.New("input too small") + } + if use8BitTables && d.actualTableLog <= 8 { + return d.decompress4X8bit(dst, src) + } + + var br [4]bitReaderShifted + // Decode "jump table" + start := 6 + for i := 0; i < 3; i++ { + length := int(src[i*2]) | (int(src[i*2+1]) << 8) + if start+length >= len(src) { + return nil, errors.New("truncated input (or invalid offset)") + } + err := br[i].init(src[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err := br[3].init(src[start:]) + if err != nil { + return nil, err + } + + // destination, offset to match first output + dstSize := cap(dst) + dst = dst[:dstSize] + out := dst + dstEvery := (dstSize + 3) / 4 + + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + single := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + buf := d.buffer() + var off uint8 + var decoded int + + // Decode 2 values from each decoder/loop. + const bufoff = 256 + for { + if br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4 { + break + } + + { + const stream = 0 + const stream2 = 1 + br[stream].fillFast() + br[stream2].fillFast() + + val := br[stream].peekBitsFast(d.actualTableLog) + val2 := br[stream2].peekBitsFast(d.actualTableLog) + v := single[val&tlMask] + v2 := single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off] = uint8(v.entry >> 8) + buf[stream2][off] = uint8(v2.entry >> 8) + + val = br[stream].peekBitsFast(d.actualTableLog) + val2 = br[stream2].peekBitsFast(d.actualTableLog) + v = single[val&tlMask] + v2 = single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off+1] = uint8(v.entry >> 8) + buf[stream2][off+1] = uint8(v2.entry >> 8) + } + + { + const stream = 2 + const stream2 = 3 + br[stream].fillFast() + br[stream2].fillFast() + + val := br[stream].peekBitsFast(d.actualTableLog) + val2 := br[stream2].peekBitsFast(d.actualTableLog) + v := single[val&tlMask] + v2 := single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off] = uint8(v.entry >> 8) + buf[stream2][off] = uint8(v2.entry >> 8) + + val = br[stream].peekBitsFast(d.actualTableLog) + val2 = br[stream2].peekBitsFast(d.actualTableLog) + v = single[val&tlMask] + v2 = single[val2&tlMask] + br[stream].advance(uint8(v.entry)) + br[stream2].advance(uint8(v2.entry)) + buf[stream][off+1] = uint8(v.entry >> 8) + buf[stream2][off+1] = uint8(v2.entry >> 8) + } + + off += 2 + + if off == 0 { + if bufoff > dstEvery { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 1") + } + // There must at least be 3 buffers left. + if len(out)-bufoff < dstEvery*3 { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 2") + } + //copy(out, buf[0][:]) + //copy(out[dstEvery:], buf[1][:]) + //copy(out[dstEvery*2:], buf[2][:]) + //copy(out[dstEvery*3:], buf[3][:]) + *(*[bufoff]byte)(out) = buf[0] + *(*[bufoff]byte)(out[dstEvery:]) = buf[1] + *(*[bufoff]byte)(out[dstEvery*2:]) = buf[2] + *(*[bufoff]byte)(out[dstEvery*3:]) = buf[3] + out = out[bufoff:] + decoded += bufoff * 4 + } + } + if off > 0 { + ioff := int(off) + if len(out) < dstEvery*3+ioff { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 3") + } + copy(out, buf[0][:off]) + copy(out[dstEvery:], buf[1][:off]) + copy(out[dstEvery*2:], buf[2][:off]) + copy(out[dstEvery*3:], buf[3][:off]) + decoded += int(off) * 4 + out = out[off:] + } + + // Decode remaining. + remainBytes := dstEvery - (decoded / 4) + for i := range br { + offset := dstEvery * i + endsAt := offset + remainBytes + if endsAt > len(out) { + endsAt = len(out) + } + br := &br[i] + bitsLeft := br.remaining() + for bitsLeft > 0 { + br.fill() + if offset >= endsAt { + d.bufs.Put(buf) + return nil, errors.New("corruption detected: stream overrun 4") + } + + // Read value and increment offset. + val := br.peekBitsFast(d.actualTableLog) + v := single[val&tlMask].entry + nBits := uint8(v) + br.advance(nBits) + bitsLeft -= uint(nBits) + out[offset] = uint8(v >> 8) + offset++ + } + if offset != endsAt { + d.bufs.Put(buf) + return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) + } + decoded += offset - dstEvery*i + err = br.close() + if err != nil { + return nil, err + } + } + d.bufs.Put(buf) + if dstSize != decoded { + return nil, errors.New("corruption detected: short output block") + } + return dst, nil +} + +// Decompress1X will decompress a 1X encoded stream. +// The cap of the output buffer will be the maximum decompressed size. +// The length of the supplied input must match the end of a block exactly. +func (d *Decoder) Decompress1X(dst, src []byte) ([]byte, error) { + if len(d.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + if use8BitTables && d.actualTableLog <= 8 { + return d.decompress1X8Bit(dst, src) + } + var br bitReaderShifted + err := br.init(src) + if err != nil { + return dst, err + } + maxDecodedSize := cap(dst) + dst = dst[:0] + + // Avoid bounds check by always having full sized table. + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + dt := d.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + bufs := d.buffer() + buf := &bufs[0] + var off uint8 + + for br.off >= 8 { + br.fillFast() + v := dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+0] = uint8(v.entry >> 8) + + v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+1] = uint8(v.entry >> 8) + + // Refill + br.fillFast() + + v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+2] = uint8(v.entry >> 8) + + v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] + br.advance(uint8(v.entry)) + buf[off+3] = uint8(v.entry >> 8) + + off += 4 + if off == 0 { + if len(dst)+256 > maxDecodedSize { + br.close() + d.bufs.Put(bufs) + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:]...) + } + } + + if len(dst)+int(off) > maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + dst = append(dst, buf[:off]...) + + // br < 8, so uint8 is fine + bitsLeft := uint8(br.off)*8 + 64 - br.bitsRead + for bitsLeft > 0 { + br.fill() + if false && br.bitsRead >= 32 { + if br.off >= 4 { + v := br.in[br.off-4:] + v = v[:4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + br.value = (br.value << 32) | uint64(low) + br.bitsRead -= 32 + br.off -= 4 + } else { + for br.off > 0 { + br.value = (br.value << 8) | uint64(br.in[br.off-1]) + br.bitsRead -= 8 + br.off-- + } + } + } + if len(dst) >= maxDecodedSize { + d.bufs.Put(bufs) + br.close() + return nil, ErrMaxDecodedSizeExceeded + } + v := d.dt.single[br.peekBitsFast(d.actualTableLog)&tlMask] + nBits := uint8(v.entry) + br.advance(nBits) + bitsLeft -= nBits + dst = append(dst, uint8(v.entry>>8)) + } + d.bufs.Put(bufs) + return dst, br.close() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go b/examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go new file mode 100644 index 0000000..77ecd68 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/huff0.go @@ -0,0 +1,337 @@ +// Package huff0 provides fast huffman encoding as used in zstd. +// +// See README.md at https://github.com/klauspost/compress/tree/master/huff0 for details. +package huff0 + +import ( + "errors" + "fmt" + "math" + "math/bits" + "sync" + + "github.com/klauspost/compress/fse" +) + +const ( + maxSymbolValue = 255 + + // zstandard limits tablelog to 11, see: + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#huffman-tree-description + tableLogMax = 11 + tableLogDefault = 11 + minTablelog = 5 + huffNodesLen = 512 + + // BlockSizeMax is maximum input size for a single block uncompressed. + BlockSizeMax = 1<<18 - 1 +) + +var ( + // ErrIncompressible is returned when input is judged to be too hard to compress. + ErrIncompressible = errors.New("input is not compressible") + + // ErrUseRLE is returned from the compressor when the input is a single byte value repeated. + ErrUseRLE = errors.New("input is single value repeated") + + // ErrTooBig is return if input is too large for a single block. + ErrTooBig = errors.New("input too big") + + // ErrMaxDecodedSizeExceeded is return if input is too large for a single block. + ErrMaxDecodedSizeExceeded = errors.New("maximum output size exceeded") +) + +type ReusePolicy uint8 + +const ( + // ReusePolicyAllow will allow reuse if it produces smaller output. + ReusePolicyAllow ReusePolicy = iota + + // ReusePolicyPrefer will re-use aggressively if possible. + // This will not check if a new table will produce smaller output, + // except if the current table is impossible to use or + // compressed output is bigger than input. + ReusePolicyPrefer + + // ReusePolicyNone will disable re-use of tables. + // This is slightly faster than ReusePolicyAllow but may produce larger output. + ReusePolicyNone + + // ReusePolicyMust must allow reuse and produce smaller output. + ReusePolicyMust +) + +type Scratch struct { + count [maxSymbolValue + 1]uint32 + + // Per block parameters. + // These can be used to override compression parameters of the block. + // Do not touch, unless you know what you are doing. + + // Out is output buffer. + // If the scratch is re-used before the caller is done processing the output, + // set this field to nil. + // Otherwise the output buffer will be re-used for next Compression/Decompression step + // and allocation will be avoided. + Out []byte + + // OutTable will contain the table data only, if a new table has been generated. + // Slice of the returned data. + OutTable []byte + + // OutData will contain the compressed data. + // Slice of the returned data. + OutData []byte + + // MaxDecodedSize will set the maximum allowed output size. + // This value will automatically be set to BlockSizeMax if not set. + // Decoders will return ErrMaxDecodedSizeExceeded is this limit is exceeded. + MaxDecodedSize int + + srcLen int + + // MaxSymbolValue will override the maximum symbol value of the next block. + MaxSymbolValue uint8 + + // TableLog will attempt to override the tablelog for the next block. + // Must be <= 11 and >= 5. + TableLog uint8 + + // Reuse will specify the reuse policy + Reuse ReusePolicy + + // WantLogLess allows to specify a log 2 reduction that should at least be achieved, + // otherwise the block will be returned as incompressible. + // The reduction should then at least be (input size >> WantLogLess) + // If WantLogLess == 0 any improvement will do. + WantLogLess uint8 + + symbolLen uint16 // Length of active part of the symbol table. + maxCount int // count of the most probable symbol + clearCount bool // clear count + actualTableLog uint8 // Selected tablelog. + prevTableLog uint8 // Tablelog for previous table + prevTable cTable // Table used for previous compression. + cTable cTable // compression table + dt dTable // decompression table + nodes []nodeElt + tmpOut [4][]byte + fse *fse.Scratch + decPool sync.Pool // *[4][256]byte buffers. + huffWeight [maxSymbolValue + 1]byte +} + +// TransferCTable will transfer the previously used compression table. +func (s *Scratch) TransferCTable(src *Scratch) { + if cap(s.prevTable) < len(src.prevTable) { + s.prevTable = make(cTable, 0, maxSymbolValue+1) + } + s.prevTable = s.prevTable[:len(src.prevTable)] + copy(s.prevTable, src.prevTable) + s.prevTableLog = src.prevTableLog +} + +func (s *Scratch) prepare(in []byte) (*Scratch, error) { + if len(in) > BlockSizeMax { + return nil, ErrTooBig + } + if s == nil { + s = &Scratch{} + } + if s.MaxSymbolValue == 0 { + s.MaxSymbolValue = maxSymbolValue + } + if s.TableLog == 0 { + s.TableLog = tableLogDefault + } + if s.TableLog > tableLogMax || s.TableLog < minTablelog { + return nil, fmt.Errorf(" invalid tableLog %d (%d -> %d)", s.TableLog, minTablelog, tableLogMax) + } + if s.MaxDecodedSize <= 0 || s.MaxDecodedSize > BlockSizeMax { + s.MaxDecodedSize = BlockSizeMax + } + if s.clearCount && s.maxCount == 0 { + for i := range s.count { + s.count[i] = 0 + } + s.clearCount = false + } + if cap(s.Out) == 0 { + s.Out = make([]byte, 0, len(in)) + } + s.Out = s.Out[:0] + + s.OutTable = nil + s.OutData = nil + if cap(s.nodes) < huffNodesLen+1 { + s.nodes = make([]nodeElt, 0, huffNodesLen+1) + } + s.nodes = s.nodes[:0] + if s.fse == nil { + s.fse = &fse.Scratch{} + } + s.srcLen = len(in) + + return s, nil +} + +type cTable []cTableEntry + +func (c cTable) write(s *Scratch) error { + var ( + // precomputed conversion table + bitsToWeight [tableLogMax + 1]byte + huffLog = s.actualTableLog + // last weight is not saved. + maxSymbolValue = uint8(s.symbolLen - 1) + huffWeight = s.huffWeight[:256] + ) + const ( + maxFSETableLog = 6 + ) + // convert to weight + bitsToWeight[0] = 0 + for n := uint8(1); n < huffLog+1; n++ { + bitsToWeight[n] = huffLog + 1 - n + } + + // Acquire histogram for FSE. + hist := s.fse.Histogram() + hist = hist[:256] + for i := range hist[:16] { + hist[i] = 0 + } + for n := uint8(0); n < maxSymbolValue; n++ { + v := bitsToWeight[c[n].nBits] & 15 + huffWeight[n] = v + hist[v]++ + } + + // FSE compress if feasible. + if maxSymbolValue >= 2 { + huffMaxCnt := uint32(0) + huffMax := uint8(0) + for i, v := range hist[:16] { + if v == 0 { + continue + } + huffMax = byte(i) + if v > huffMaxCnt { + huffMaxCnt = v + } + } + s.fse.HistogramFinished(huffMax, int(huffMaxCnt)) + s.fse.TableLog = maxFSETableLog + b, err := fse.Compress(huffWeight[:maxSymbolValue], s.fse) + if err == nil && len(b) < int(s.symbolLen>>1) { + s.Out = append(s.Out, uint8(len(b))) + s.Out = append(s.Out, b...) + return nil + } + // Unable to compress (RLE/uncompressible) + } + // write raw values as 4-bits (max : 15) + if maxSymbolValue > (256 - 128) { + // should not happen : likely means source cannot be compressed + return ErrIncompressible + } + op := s.Out + // special case, pack weights 4 bits/weight. + op = append(op, 128|(maxSymbolValue-1)) + // be sure it doesn't cause msan issue in final combination + huffWeight[maxSymbolValue] = 0 + for n := uint16(0); n < uint16(maxSymbolValue); n += 2 { + op = append(op, (huffWeight[n]<<4)|huffWeight[n+1]) + } + s.Out = op + return nil +} + +func (c cTable) estTableSize(s *Scratch) (sz int, err error) { + var ( + // precomputed conversion table + bitsToWeight [tableLogMax + 1]byte + huffLog = s.actualTableLog + // last weight is not saved. + maxSymbolValue = uint8(s.symbolLen - 1) + huffWeight = s.huffWeight[:256] + ) + const ( + maxFSETableLog = 6 + ) + // convert to weight + bitsToWeight[0] = 0 + for n := uint8(1); n < huffLog+1; n++ { + bitsToWeight[n] = huffLog + 1 - n + } + + // Acquire histogram for FSE. + hist := s.fse.Histogram() + hist = hist[:256] + for i := range hist[:16] { + hist[i] = 0 + } + for n := uint8(0); n < maxSymbolValue; n++ { + v := bitsToWeight[c[n].nBits] & 15 + huffWeight[n] = v + hist[v]++ + } + + // FSE compress if feasible. + if maxSymbolValue >= 2 { + huffMaxCnt := uint32(0) + huffMax := uint8(0) + for i, v := range hist[:16] { + if v == 0 { + continue + } + huffMax = byte(i) + if v > huffMaxCnt { + huffMaxCnt = v + } + } + s.fse.HistogramFinished(huffMax, int(huffMaxCnt)) + s.fse.TableLog = maxFSETableLog + b, err := fse.Compress(huffWeight[:maxSymbolValue], s.fse) + if err == nil && len(b) < int(s.symbolLen>>1) { + sz += 1 + len(b) + return sz, nil + } + // Unable to compress (RLE/uncompressible) + } + // write raw values as 4-bits (max : 15) + if maxSymbolValue > (256 - 128) { + // should not happen : likely means source cannot be compressed + return 0, ErrIncompressible + } + // special case, pack weights 4 bits/weight. + sz += 1 + int(maxSymbolValue/2) + return sz, nil +} + +// estimateSize returns the estimated size in bytes of the input represented in the +// histogram supplied. +func (c cTable) estimateSize(hist []uint32) int { + nbBits := uint32(7) + for i, v := range c[:len(hist)] { + nbBits += uint32(v.nBits) * hist[i] + } + return int(nbBits >> 3) +} + +// minSize returns the minimum possible size considering the shannon limit. +func (s *Scratch) minSize(total int) int { + nbBits := float64(7) + fTotal := float64(total) + for _, v := range s.count[:s.symbolLen] { + n := float64(v) + if n > 0 { + nbBits += math.Log2(fTotal/n) * n + } + } + return int(nbBits) >> 3 +} + +func highBit32(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go new file mode 100644 index 0000000..3954c51 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go @@ -0,0 +1,34 @@ +// Package cpuinfo gives runtime info about the current CPU. +// +// This is a very limited module meant for use internally +// in this project. For more versatile solution check +// https://github.com/klauspost/cpuid. +package cpuinfo + +// HasBMI1 checks whether an x86 CPU supports the BMI1 extension. +func HasBMI1() bool { + return hasBMI1 +} + +// HasBMI2 checks whether an x86 CPU supports the BMI2 extension. +func HasBMI2() bool { + return hasBMI2 +} + +// DisableBMI2 will disable BMI2, for testing purposes. +// Call returned function to restore previous state. +func DisableBMI2() func() { + old := hasBMI2 + hasBMI2 = false + return func() { + hasBMI2 = old + } +} + +// HasBMI checks whether an x86 CPU supports both BMI1 and BMI2 extensions. +func HasBMI() bool { + return HasBMI1() && HasBMI2() +} + +var hasBMI1 bool +var hasBMI2 bool diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go new file mode 100644 index 0000000..e802579 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go @@ -0,0 +1,11 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +package cpuinfo + +// go:noescape +func x86extensions() (bmi1, bmi2 bool) + +func init() { + hasBMI1, hasBMI2 = x86extensions() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s new file mode 100644 index 0000000..4465fbe --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s @@ -0,0 +1,36 @@ +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" +#include "funcdata.h" +#include "go_asm.h" + +TEXT ·x86extensions(SB), NOSPLIT, $0 + // 1. determine max EAX value + XORQ AX, AX + CPUID + + CMPQ AX, $7 + JB unsupported + + // 2. EAX = 7, ECX = 0 --- see Table 3-8 "Information Returned by CPUID Instruction" + MOVQ $7, AX + MOVQ $0, CX + CPUID + + BTQ $3, BX // bit 3 = BMI1 + SETCS AL + + BTQ $8, BX // bit 8 = BMI2 + SETCS AH + + MOVB AL, bmi1+0(FP) + MOVB AH, bmi2+1(FP) + RET + +unsupported: + XORQ AX, AX + MOVB AL, bmi1+0(FP) + MOVB AL, bmi2+1(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE new file mode 100644 index 0000000..6050c10 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go new file mode 100644 index 0000000..40796a4 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode.go @@ -0,0 +1,264 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt reports that the input is invalid. + ErrCorrupt = errors.New("snappy: corrupt input") + // ErrTooLarge reports that the uncompressed length is too large. + ErrTooLarge = errors.New("snappy: decoded block is too large") + // ErrUnsupported reports that the input isn't supported. + ErrUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// DecodedLen returns the length of the decoded block. +func DecodedLen(src []byte) (int, error) { + v, _, err := decodedLen(src) + return v, err +} + +// decodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func decodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrTooLarge + } + return int(v), n, nil +} + +const ( + decodeErrCodeCorrupt = 1 + decodeErrCodeUnsupportedLiteralLength = 2 +) + +// Decode returns the decoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire decoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Decode handles the Snappy block format, not the Snappy stream format. +func Decode(dst, src []byte) ([]byte, error) { + dLen, s, err := decodedLen(src) + if err != nil { + return nil, err + } + if dLen <= len(dst) { + dst = dst[:dLen] + } else { + dst = make([]byte, dLen) + } + switch decode(dst, src[s:]) { + case 0: + return dst, nil + case decodeErrCodeUnsupportedLiteralLength: + return nil, errUnsupportedLiteralLength + } + return nil, ErrCorrupt +} + +// NewReader returns a new Reader that decompresses from r, using the framing +// format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +func NewReader(r io.Reader) *Reader { + return &Reader{ + r: r, + decoded: make([]byte, maxBlockSize), + buf: make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), + } +} + +// Reader is an io.Reader that can read Snappy-compressed bytes. +// +// Reader handles the Snappy stream format, not the Snappy block format. +type Reader struct { + r io.Reader + err error + decoded []byte + buf []byte + // decoded[i:j] contains decoded bytes that have not yet been passed on. + i, j int + readHeader bool +} + +// Reset discards any buffered data, resets all state, and switches the Snappy +// reader to read from r. This permits reusing a Reader rather than allocating +// a new one. +func (r *Reader) Reset(reader io.Reader) { + r.r = reader + r.err = nil + r.i = 0 + r.j = 0 + r.readHeader = false +} + +func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrCorrupt + } + return false + } + return true +} + +func (r *Reader) fill() error { + for r.i >= r.j { + if !r.readFull(r.buf[:4], true) { + return r.err + } + chunkType := r.buf[0] + if !r.readHeader { + if chunkType != chunkTypeStreamIdentifier { + r.err = ErrCorrupt + return r.err + } + r.readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + r.err = ErrUnsupported + return r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[checksumSize:] + + n, err := DecodedLen(buf) + if err != nil { + r.err = err + return r.err + } + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if _, err := Decode(r.decoded, buf); err != nil { + r.err = err + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeUncompressedData: + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return r.err + } + buf := r.buf[:checksumSize] + if !r.readFull(buf, false) { + return r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - checksumSize + if n > len(r.decoded) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.decoded[:n], false) { + return r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeStreamIdentifier: + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(magicBody) { + r.err = ErrCorrupt + return r.err + } + if !r.readFull(r.buf[:len(magicBody)], false) { + return r.err + } + for i := 0; i < len(magicBody); i++ { + if r.buf[i] != magicBody[i] { + r.err = ErrCorrupt + return r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + r.err = ErrUnsupported + return r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return r.err + } + } + + return nil +} + +// Read satisfies the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + n := copy(p, r.decoded[r.i:r.j]) + r.i += n + return n, nil +} + +// ReadByte satisfies the io.ByteReader interface. +func (r *Reader) ReadByte() (byte, error) { + if r.err != nil { + return 0, r.err + } + + if err := r.fill(); err != nil { + return 0, err + } + + c := r.decoded[r.i] + r.i++ + return c, nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go new file mode 100644 index 0000000..77395a6 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/decode_other.go @@ -0,0 +1,113 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +// decode writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read, and that len(dst) +// equals that length. +// +// It returns 0 on success or a decodeErrCodeXxx error code on failure. +func decode(dst, src []byte) int { + var d, s, offset, length int + for s < len(src) { + switch src[s] & 0x03 { + case tagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + length = int(x) + 1 + if length <= 0 { + return decodeErrCodeUnsupportedLiteralLength + } + if length > len(dst)-d || length > len(src)-s { + return decodeErrCodeCorrupt + } + copy(dst[d:], src[s:s+length]) + d += length + s += length + continue + + case tagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + + case tagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + + case tagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + } + + if offset <= 0 || d < offset || length > len(dst)-d { + return decodeErrCodeCorrupt + } + // Copy from an earlier sub-slice of dst to a later sub-slice. + // If no overlap, use the built-in copy: + if offset >= length { + copy(dst[d:d+length], dst[d-offset:]) + d += length + continue + } + + // Unlike the built-in copy function, this byte-by-byte copy always runs + // forwards, even if the slices overlap. Conceptually, this is: + // + // d += forwardCopy(dst[d:d+length], dst[d-offset:]) + // + // We align the slices into a and b and show the compiler they are the same size. + // This allows the loop to run without bounds checks. + a := dst[d : d+length] + b := dst[d-offset:] + b = b[:len(a)] + for i := range a { + a[i] = b[i] + } + d += length + } + if d != len(dst) { + return decodeErrCodeCorrupt + } + return 0 +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go new file mode 100644 index 0000000..13c6040 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode.go @@ -0,0 +1,289 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +import ( + "encoding/binary" + "errors" + "io" +) + +// Encode returns the encoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire encoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Encode handles the Snappy block format, not the Snappy stream format. +func Encode(dst, src []byte) []byte { + if n := MaxEncodedLen(len(src)); n < 0 { + panic(ErrTooLarge) + } else if len(dst) < n { + dst = make([]byte, n) + } + + // The block starts with the varint-encoded length of the decompressed bytes. + d := binary.PutUvarint(dst, uint64(len(src))) + + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return dst[:d] +} + +// inputMargin is the minimum number of extra input bytes to keep, inside +// encodeBlock's inner loop. On some architectures, this margin lets us +// implement a fast path for emitLiteral, where the copy of short (<= 16 byte) +// literals can be implemented as a single load to and store from a 16-byte +// register. That literal's actual length can be as short as 1 byte, so this +// can copy up to 15 bytes too much, but that's OK as subsequent iterations of +// the encoding loop will fix up the copy overrun, and this inputMargin ensures +// that we don't overrun the dst and src buffers. +const inputMargin = 16 - 1 + +// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that +// could be encoded with a copy tag. This is the minimum with respect to the +// algorithm used by encodeBlock, not a minimum enforced by the file format. +// +// The encoded output must start with at least a 1 byte literal, as there are +// no previous bytes to copy. A minimal (1 byte) copy after that, generated +// from an emitCopy call in encodeBlock's main loop, would require at least +// another inputMargin bytes, for the reason above: we want any emitLiteral +// calls inside encodeBlock's main loop to use the fast path if possible, which +// requires being able to overrun by inputMargin bytes. Thus, +// minNonLiteralBlockSize equals 1 + 1 + inputMargin. +// +// The C++ code doesn't use this exact threshold, but it could, as discussed at +// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion +// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an +// optimization. It should not affect the encoded form. This is tested by +// TestSameEncodingAsCppShortCopies. +const minNonLiteralBlockSize = 1 + 1 + inputMargin + +// MaxEncodedLen returns the maximum length of a snappy block, given its +// uncompressed length. +// +// It will return a negative value if srcLen is too large to encode. +func MaxEncodedLen(srcLen int) int { + n := uint64(srcLen) + if n > 0xffffffff { + return -1 + } + // Compressed data can be defined as: + // compressed := item* literal* + // item := literal* copy + // + // The trailing literal sequence has a space blowup of at most 62/60 + // since a literal of length 60 needs one tag byte + one extra byte + // for length information. + // + // Item blowup is trickier to measure. Suppose the "copy" op copies + // 4 bytes of data. Because of a special check in the encoding code, + // we produce a 4-byte copy only if the offset is < 65536. Therefore + // the copy op takes 3 bytes to encode, and this type of item leads + // to at most the 62/60 blowup for representing literals. + // + // Suppose the "copy" op copies 5 bytes of data. If the offset is big + // enough, it will take 5 bytes to encode the copy op. Therefore the + // worst case here is a one-byte literal followed by a five-byte copy. + // That is, 6 bytes of input turn into 7 bytes of "compressed" data. + // + // This last factor dominates the blowup, so the final estimate is: + n = 32 + n + n/6 + if n > 0xffffffff { + return -1 + } + return int(n) +} + +var errClosed = errors.New("snappy: Writer is closed") + +// NewWriter returns a new Writer that compresses to w. +// +// The Writer returned does not buffer writes. There is no need to Flush or +// Close such a Writer. +// +// Deprecated: the Writer returned is not suitable for many small writes, only +// for few large writes. Use NewBufferedWriter instead, which is efficient +// regardless of the frequency and shape of the writes, and remember to Close +// that Writer when done. +func NewWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + obuf: make([]byte, obufLen), + } +} + +// NewBufferedWriter returns a new Writer that compresses to w, using the +// framing format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +// +// The Writer returned buffers writes. Users must call Close to guarantee all +// data has been forwarded to the underlying io.Writer. They may also call +// Flush zero or more times before calling Close. +func NewBufferedWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + ibuf: make([]byte, 0, maxBlockSize), + obuf: make([]byte, obufLen), + } +} + +// Writer is an io.Writer that can write Snappy-compressed bytes. +// +// Writer handles the Snappy stream format, not the Snappy block format. +type Writer struct { + w io.Writer + err error + + // ibuf is a buffer for the incoming (uncompressed) bytes. + // + // Its use is optional. For backwards compatibility, Writers created by the + // NewWriter function have ibuf == nil, do not buffer incoming bytes, and + // therefore do not need to be Flush'ed or Close'd. + ibuf []byte + + // obuf is a buffer for the outgoing (compressed) bytes. + obuf []byte + + // wroteStreamHeader is whether we have written the stream header. + wroteStreamHeader bool +} + +// Reset discards the writer's state and switches the Snappy writer to write to +// w. This permits reusing a Writer rather than allocating a new one. +func (w *Writer) Reset(writer io.Writer) { + w.w = writer + w.err = nil + if w.ibuf != nil { + w.ibuf = w.ibuf[:0] + } + w.wroteStreamHeader = false +} + +// Write satisfies the io.Writer interface. +func (w *Writer) Write(p []byte) (nRet int, errRet error) { + if w.ibuf == nil { + // Do not buffer incoming bytes. This does not perform or compress well + // if the caller of Writer.Write writes many small slices. This + // behavior is therefore deprecated, but still supported for backwards + // compatibility with code that doesn't explicitly Flush or Close. + return w.write(p) + } + + // The remainder of this method is based on bufio.Writer.Write from the + // standard library. + + for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { + var n int + if len(w.ibuf) == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, _ = w.write(p) + } else { + n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + w.Flush() + } + nRet += n + p = p[n:] + } + if w.err != nil { + return nRet, w.err + } + n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + nRet += n + return nRet, nil +} + +func (w *Writer) write(p []byte) (nRet int, errRet error) { + if w.err != nil { + return 0, w.err + } + for len(p) > 0 { + obufStart := len(magicChunk) + if !w.wroteStreamHeader { + w.wroteStreamHeader = true + copy(w.obuf, magicChunk) + obufStart = 0 + } + + var uncompressed []byte + if len(p) > maxBlockSize { + uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] + } else { + uncompressed, p = p, nil + } + checksum := crc(uncompressed) + + // Compress the buffer, discarding the result if the improvement + // isn't at least 12.5%. + compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) + chunkType := uint8(chunkTypeCompressedData) + chunkLen := 4 + len(compressed) + obufEnd := obufHeaderLen + len(compressed) + if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { + chunkType = chunkTypeUncompressedData + chunkLen = 4 + len(uncompressed) + obufEnd = obufHeaderLen + } + + // Fill in the per-chunk header that comes before the body. + w.obuf[len(magicChunk)+0] = chunkType + w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) + w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) + w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) + w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) + w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) + w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) + w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) + + if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { + w.err = err + return nRet, err + } + if chunkType == chunkTypeUncompressedData { + if _, err := w.w.Write(uncompressed); err != nil { + w.err = err + return nRet, err + } + } + nRet += len(uncompressed) + } + return nRet, nil +} + +// Flush flushes the Writer to its underlying io.Writer. +func (w *Writer) Flush() error { + if w.err != nil { + return w.err + } + if len(w.ibuf) == 0 { + return nil + } + w.write(w.ibuf) + w.ibuf = w.ibuf[:0] + return w.err +} + +// Close calls Flush and then closes the Writer. +func (w *Writer) Close() error { + w.Flush() + ret := w.err + if w.err == nil { + w.err = errClosed + } + return ret +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go new file mode 100644 index 0000000..2754bac --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/encode_other.go @@ -0,0 +1,250 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snapref + +func load32(b []byte, i int) uint32 { + b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func load64(b []byte, i int) uint64 { + b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +// emitLiteral writes a literal chunk and returns the number of bytes written. +// +// It assumes that: +// +// dst is long enough to hold the encoded bytes +// 1 <= len(lit) && len(lit) <= 65536 +func emitLiteral(dst, lit []byte) int { + i, n := 0, uint(len(lit)-1) + switch { + case n < 60: + dst[0] = uint8(n)<<2 | tagLiteral + i = 1 + case n < 1<<8: + dst[0] = 60<<2 | tagLiteral + dst[1] = uint8(n) + i = 2 + default: + dst[0] = 61<<2 | tagLiteral + dst[1] = uint8(n) + dst[2] = uint8(n >> 8) + i = 3 + } + return i + copy(dst[i:], lit) +} + +// emitCopy writes a copy chunk and returns the number of bytes written. +// +// It assumes that: +// +// dst is long enough to hold the encoded bytes +// 1 <= offset && offset <= 65535 +// 4 <= length && length <= 65535 +func emitCopy(dst []byte, offset, length int) int { + i := 0 + // The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The + // threshold for this loop is a little higher (at 68 = 64 + 4), and the + // length emitted down below is a little lower (at 60 = 64 - 4), because + // it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed + // by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as + // a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as + // 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a + // tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an + // encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. + for length >= 68 { + // Emit a length 64 copy, encoded as 3 bytes. + dst[i+0] = 63<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 64 + } + if length > 64 { + // Emit a length 60 copy, encoded as 3 bytes. + dst[i+0] = 59<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 60 + } + if length >= 12 || offset >= 2048 { + // Emit the remaining copy, encoded as 3 bytes. + dst[i+0] = uint8(length-1)<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + return i + 3 + } + // Emit the remaining copy, encoded as 2 bytes. + dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 + dst[i+1] = uint8(offset) + return i + 2 +} + +func hash(u, shift uint32) uint32 { + return (u * 0x1e35a7bd) >> shift +} + +// EncodeBlockInto exposes encodeBlock but checks dst size. +func EncodeBlockInto(dst, src []byte) (d int) { + if MaxEncodedLen(len(src)) > len(dst) { + return 0 + } + + // encodeBlock breaks on too big blocks, so split. + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return d +} + +// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It +// assumes that the varint-encoded length of the decompressed bytes has already +// been written. +// +// It also assumes that: +// +// len(dst) >= MaxEncodedLen(len(src)) && +// minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize +func encodeBlock(dst, src []byte) (d int) { + // Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. + // The table element type is uint16, as s < sLimit and sLimit < len(src) + // and len(src) <= maxBlockSize and maxBlockSize == 65536. + const ( + maxTableSize = 1 << 14 + // tableMask is redundant, but helps the compiler eliminate bounds + // checks. + tableMask = maxTableSize - 1 + ) + shift := uint32(32 - 8) + for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + shift-- + } + // In Go, all array elements are zero-initialized, so there is no advantage + // to a smaller tableSize per se. However, it matches the C++ algorithm, + // and in the asm versions of this code, we can get away with zeroing only + // the first tableSize elements. + var table [maxTableSize]uint16 + + // sLimit is when to stop looking for offset/length copies. The inputMargin + // lets us use a fast path for emitLiteral in the main loop, while we are + // looking for copies. + sLimit := len(src) - inputMargin + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := 0 + + // The encoded form must start with a literal, as there are no previous + // bytes to copy, so we start looking for hash matches at s == 1. + s := 1 + nextHash := hash(load32(src, s), shift) + + for { + // Copied from the C++ snappy implementation: + // + // Heuristic match skipping: If 32 bytes are scanned with no matches + // found, start looking only at every other byte. If 32 more bytes are + // scanned (or skipped), look at every third byte, etc.. When a match + // is found, immediately go back to looking at every byte. This is a + // small loss (~5% performance, ~0.1% density) for compressible data + // due to more bookkeeping, but for non-compressible data (such as + // JPEG) it's a huge win since the compressor quickly "realizes" the + // data is incompressible and doesn't bother looking for matches + // everywhere. + // + // The "skip" variable keeps track of how many bytes there are since + // the last match; dividing it by 32 (ie. right-shifting by five) gives + // the number of bytes to move ahead for each iteration. + skip := 32 + + nextS := s + candidate := 0 + for { + s = nextS + bytesBetweenHashLookups := skip >> 5 + nextS = s + bytesBetweenHashLookups + skip += bytesBetweenHashLookups + if nextS > sLimit { + goto emitRemainder + } + candidate = int(table[nextHash&tableMask]) + table[nextHash&tableMask] = uint16(s) + nextHash = hash(load32(src, nextS), shift) + if load32(src, s) == load32(src, candidate) { + break + } + } + + // A 4-byte match has been found. We'll later see if more than 4 bytes + // match. But, prior to the match, src[nextEmit:s] are unmatched. Emit + // them as literal bytes. + d += emitLiteral(dst[d:], src[nextEmit:s]) + + // Call emitCopy, and then see if another emitCopy could be our next + // move. Repeat until we find no match for the input immediately after + // what was consumed by the last emitCopy call. + // + // If we exit this loop normally then we need to call emitLiteral next, + // though we don't yet know how big the literal will be. We handle that + // by proceeding to the next iteration of the main loop. We also can + // exit this loop via goto if we get close to exhausting the input. + for { + // Invariant: we have a 4-byte match at s, and no need to emit any + // literal bytes prior to s. + base := s + + // Extend the 4-byte match as long as possible. + // + // This is an inlined version of: + // s = extendMatch(src, candidate+4, s+4) + s += 4 + for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { + } + + d += emitCopy(dst[d:], base-candidate, s-base) + nextEmit = s + if s >= sLimit { + goto emitRemainder + } + + // We could immediately start working at s now, but to improve + // compression we first update the hash table at s-1 and at s. If + // another emitCopy is not our next move, also calculate nextHash + // at s+1. At least on GOARCH=amd64, these three hash calculations + // are faster as one load64 call (with some shifts) instead of + // three load32 calls. + x := load64(src, s-1) + prevHash := hash(uint32(x>>0), shift) + table[prevHash&tableMask] = uint16(s - 1) + currHash := hash(uint32(x>>8), shift) + candidate = int(table[currHash&tableMask]) + table[currHash&tableMask] = uint16(s) + if uint32(x>>8) != load32(src, candidate) { + nextHash = hash(uint32(x>>16), shift) + s++ + break + } + } + } + +emitRemainder: + if nextEmit < len(src) { + d += emitLiteral(dst[d:], src[nextEmit:]) + } + return d +} diff --git a/examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go new file mode 100644 index 0000000..34d01f4 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/internal/snapref/snappy.go @@ -0,0 +1,98 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package snapref implements the Snappy compression format. It aims for very +// high speeds and reasonable compression. +// +// There are actually two Snappy formats: block and stream. They are related, +// but different: trying to decompress block-compressed data as a Snappy stream +// will fail, and vice versa. The block format is the Decode and Encode +// functions and the stream format is the Reader and Writer types. +// +// The block format, the more common case, is used when the complete size (the +// number of bytes) of the original data is known upfront, at the time +// compression starts. The stream format, also known as the framing format, is +// for when that isn't always true. +// +// The canonical, C++ implementation is at https://github.com/google/snappy and +// it only implements the block format. +package snapref + +import ( + "hash/crc32" +) + +/* +Each encoded block begins with the varint-encoded length of the decoded data, +followed by a sequence of chunks. Chunks begin and end on byte boundaries. The +first byte of each chunk is broken into its 2 least and 6 most significant bits +called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag. +Zero means a literal tag. All other values mean a copy tag. + +For literal tags: + - If m < 60, the next 1 + m bytes are literal bytes. + - Otherwise, let n be the little-endian unsigned integer denoted by the next + m - 59 bytes. The next 1 + n bytes after that are literal bytes. + +For copy tags, length bytes are copied from offset bytes ago, in the style of +Lempel-Ziv compression algorithms. In particular: + - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12). + The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10 + of the offset. The next byte is bits 0-7 of the offset. + - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65). + The length is 1 + m. The offset is the little-endian unsigned integer + denoted by the next 2 bytes. + - For l == 3, this tag is a legacy format that is no longer issued by most + encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in + [1, 65). The length is 1 + m. The offset is the little-endian unsigned + integer denoted by the next 4 bytes. +*/ +const ( + tagLiteral = 0x00 + tagCopy1 = 0x01 + tagCopy2 = 0x02 + tagCopy4 = 0x03 +) + +const ( + checksumSize = 4 + chunkHeaderSize = 4 + magicChunk = "\xff\x06\x00\x00" + magicBody + magicBody = "sNaPpY" + + // maxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + maxBlockSize = 65536 + + // maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + maxEncodedLenOfMaxBlockSize = 76490 + + obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize + obufLen = obufHeaderLen + maxEncodedLenOfMaxBlockSize +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func crc(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return uint32(c>>15|c<<17) + 0xa282ead8 +} diff --git a/examples/go/vendor/github.com/klauspost/compress/s2sx.mod b/examples/go/vendor/github.com/klauspost/compress/s2sx.mod new file mode 100644 index 0000000..5a4412f --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/s2sx.mod @@ -0,0 +1,4 @@ +module github.com/klauspost/compress + +go 1.19 + diff --git a/examples/go/vendor/github.com/klauspost/compress/s2sx.sum b/examples/go/vendor/github.com/klauspost/compress/s2sx.sum new file mode 100644 index 0000000..e69de29 diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/README.md b/examples/go/vendor/github.com/klauspost/compress/zstd/README.md new file mode 100644 index 0000000..92e2347 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/README.md @@ -0,0 +1,441 @@ +# zstd + +[Zstandard](https://facebook.github.io/zstd/) is a real-time compression algorithm, providing high compression ratios. +It offers a very wide range of compression / speed trade-off, while being backed by a very fast decoder. +A high performance compression algorithm is implemented. For now focused on speed. + +This package provides [compression](#Compressor) to and [decompression](#Decompressor) of Zstandard content. + +This package is pure Go and without use of "unsafe". + +The `zstd` package is provided as open source software using a Go standard license. + +Currently the package is heavily optimized for 64 bit processors and will be significantly slower on 32 bit processors. + +For seekable zstd streams, see [this excellent package](https://github.com/SaveTheRbtz/zstd-seekable-format-go). + +## Installation + +Install using `go get -u github.com/klauspost/compress`. The package is located in `github.com/klauspost/compress/zstd`. + +[![Go Reference](https://pkg.go.dev/badge/github.com/klauspost/compress/zstd.svg)](https://pkg.go.dev/github.com/klauspost/compress/zstd) + +## Compressor + +### Status: + +STABLE - there may always be subtle bugs, a wide variety of content has been tested and the library is actively +used by several projects. This library is being [fuzz-tested](https://github.com/klauspost/compress-fuzz) for all updates. + +There may still be specific combinations of data types/size/settings that could lead to edge cases, +so as always, testing is recommended. + +For now, a high speed (fastest) and medium-fast (default) compressor has been implemented. + +* The "Fastest" compression ratio is roughly equivalent to zstd level 1. +* The "Default" compression ratio is roughly equivalent to zstd level 3 (default). +* The "Better" compression ratio is roughly equivalent to zstd level 7. +* The "Best" compression ratio is roughly equivalent to zstd level 11. + +In terms of speed, it is typically 2x as fast as the stdlib deflate/gzip in its fastest mode. +The compression ratio compared to stdlib is around level 3, but usually 3x as fast. + + +### Usage + +An Encoder can be used for either compressing a stream via the +`io.WriteCloser` interface supported by the Encoder or as multiple independent +tasks via the `EncodeAll` function. +Smaller encodes are encouraged to use the EncodeAll function. +Use `NewWriter` to create a new instance that can be used for both. + +To create a writer with default options, do like this: + +```Go +// Compress input to output. +func Compress(in io.Reader, out io.Writer) error { + enc, err := zstd.NewWriter(out) + if err != nil { + return err + } + _, err = io.Copy(enc, in) + if err != nil { + enc.Close() + return err + } + return enc.Close() +} +``` + +Now you can encode by writing data to `enc`. The output will be finished writing when `Close()` is called. +Even if your encode fails, you should still call `Close()` to release any resources that may be held up. + +The above is fine for big encodes. However, whenever possible try to *reuse* the writer. + +To reuse the encoder, you can use the `Reset(io.Writer)` function to change to another output. +This will allow the encoder to reuse all resources and avoid wasteful allocations. + +Currently stream encoding has 'light' concurrency, meaning up to 2 goroutines can be working on part +of a stream. This is independent of the `WithEncoderConcurrency(n)`, but that is likely to change +in the future. So if you want to limit concurrency for future updates, specify the concurrency +you would like. + +If you would like stream encoding to be done without spawning async goroutines, use `WithEncoderConcurrency(1)` +which will compress input as each block is completed, blocking on writes until each has completed. + +You can specify your desired compression level using `WithEncoderLevel()` option. Currently only pre-defined +compression settings can be specified. + +#### Future Compatibility Guarantees + +This will be an evolving project. When using this package it is important to note that both the compression efficiency and speed may change. + +The goal will be to keep the default efficiency at the default zstd (level 3). +However the encoding should never be assumed to remain the same, +and you should not use hashes of compressed output for similarity checks. + +The Encoder can be assumed to produce the same output from the exact same code version. +However, the may be modes in the future that break this, +although they will not be enabled without an explicit option. + +This encoder is not designed to (and will probably never) output the exact same bitstream as the reference encoder. + +Also note, that the cgo decompressor currently does not [report all errors on invalid input](https://github.com/DataDog/zstd/issues/59), +[omits error checks](https://github.com/DataDog/zstd/issues/61), [ignores checksums](https://github.com/DataDog/zstd/issues/43) +and seems to ignore concatenated streams, even though [it is part of the spec](https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frames). + +#### Blocks + +For compressing small blocks, the returned encoder has a function called `EncodeAll(src, dst []byte) []byte`. + +`EncodeAll` will encode all input in src and append it to dst. +This function can be called concurrently. +Each call will only run on a same goroutine as the caller. + +Encoded blocks can be concatenated and the result will be the combined input stream. +Data compressed with EncodeAll can be decoded with the Decoder, using either a stream or `DecodeAll`. + +Especially when encoding blocks you should take special care to reuse the encoder. +This will effectively make it run without allocations after a warmup period. +To make it run completely without allocations, supply a destination buffer with space for all content. + +```Go +import "github.com/klauspost/compress/zstd" + +// Create a writer that caches compressors. +// For this operation type we supply a nil Reader. +var encoder, _ = zstd.NewWriter(nil) + +// Compress a buffer. +// If you have a destination buffer, the allocation in the call can also be eliminated. +func Compress(src []byte) []byte { + return encoder.EncodeAll(src, make([]byte, 0, len(src))) +} +``` + +You can control the maximum number of concurrent encodes using the `WithEncoderConcurrency(n)` +option when creating the writer. + +Using the Encoder for both a stream and individual blocks concurrently is safe. + +### Performance + +I have collected some speed examples to compare speed and compression against other compressors. + +* `file` is the input file. +* `out` is the compressor used. `zskp` is this package. `zstd` is the Datadog cgo library. `gzstd/gzkp` is gzip standard and this library. +* `level` is the compression level used. For `zskp` level 1 is "fastest", level 2 is "default"; 3 is "better", 4 is "best". +* `insize`/`outsize` is the input/output size. +* `millis` is the number of milliseconds used for compression. +* `mb/s` is megabytes (2^20 bytes) per second. + +``` +Silesia Corpus: +http://sun.aei.polsl.pl/~sdeor/corpus/silesia.zip + +This package: +file out level insize outsize millis mb/s +silesia.tar zskp 1 211947520 73821326 634 318.47 +silesia.tar zskp 2 211947520 67655404 1508 133.96 +silesia.tar zskp 3 211947520 64746933 3000 67.37 +silesia.tar zskp 4 211947520 60073508 16926 11.94 + +cgo zstd: +silesia.tar zstd 1 211947520 73605392 543 371.56 +silesia.tar zstd 3 211947520 66793289 864 233.68 +silesia.tar zstd 6 211947520 62916450 1913 105.66 +silesia.tar zstd 9 211947520 60212393 5063 39.92 + +gzip, stdlib/this package: +silesia.tar gzstd 1 211947520 80007735 1498 134.87 +silesia.tar gzkp 1 211947520 80088272 1009 200.31 + +GOB stream of binary data. Highly compressible. +https://files.klauspost.com/compress/gob-stream.7z + +file out level insize outsize millis mb/s +gob-stream zskp 1 1911399616 233948096 3230 564.34 +gob-stream zskp 2 1911399616 203997694 4997 364.73 +gob-stream zskp 3 1911399616 173526523 13435 135.68 +gob-stream zskp 4 1911399616 162195235 47559 38.33 + +gob-stream zstd 1 1911399616 249810424 2637 691.26 +gob-stream zstd 3 1911399616 208192146 3490 522.31 +gob-stream zstd 6 1911399616 193632038 6687 272.56 +gob-stream zstd 9 1911399616 177620386 16175 112.70 + +gob-stream gzstd 1 1911399616 357382013 9046 201.49 +gob-stream gzkp 1 1911399616 359136669 4885 373.08 + +The test data for the Large Text Compression Benchmark is the first +10^9 bytes of the English Wikipedia dump on Mar. 3, 2006. +http://mattmahoney.net/dc/textdata.html + +file out level insize outsize millis mb/s +enwik9 zskp 1 1000000000 343833605 3687 258.64 +enwik9 zskp 2 1000000000 317001237 7672 124.29 +enwik9 zskp 3 1000000000 291915823 15923 59.89 +enwik9 zskp 4 1000000000 261710291 77697 12.27 + +enwik9 zstd 1 1000000000 358072021 3110 306.65 +enwik9 zstd 3 1000000000 313734672 4784 199.35 +enwik9 zstd 6 1000000000 295138875 10290 92.68 +enwik9 zstd 9 1000000000 278348700 28549 33.40 + +enwik9 gzstd 1 1000000000 382578136 8608 110.78 +enwik9 gzkp 1 1000000000 382781160 5628 169.45 + +Highly compressible JSON file. +https://files.klauspost.com/compress/github-june-2days-2019.json.zst + +file out level insize outsize millis mb/s +github-june-2days-2019.json zskp 1 6273951764 697439532 9789 611.17 +github-june-2days-2019.json zskp 2 6273951764 610876538 18553 322.49 +github-june-2days-2019.json zskp 3 6273951764 517662858 44186 135.41 +github-june-2days-2019.json zskp 4 6273951764 464617114 165373 36.18 + +github-june-2days-2019.json zstd 1 6273951764 766284037 8450 708.00 +github-june-2days-2019.json zstd 3 6273951764 661889476 10927 547.57 +github-june-2days-2019.json zstd 6 6273951764 642756859 22996 260.18 +github-june-2days-2019.json zstd 9 6273951764 601974523 52413 114.16 + +github-june-2days-2019.json gzstd 1 6273951764 1164397768 26793 223.32 +github-june-2days-2019.json gzkp 1 6273951764 1120631856 17693 338.16 + +VM Image, Linux mint with a few installed applications: +https://files.klauspost.com/compress/rawstudio-mint14.7z + +file out level insize outsize millis mb/s +rawstudio-mint14.tar zskp 1 8558382592 3718400221 18206 448.29 +rawstudio-mint14.tar zskp 2 8558382592 3326118337 37074 220.15 +rawstudio-mint14.tar zskp 3 8558382592 3163842361 87306 93.49 +rawstudio-mint14.tar zskp 4 8558382592 2970480650 783862 10.41 + +rawstudio-mint14.tar zstd 1 8558382592 3609250104 17136 476.27 +rawstudio-mint14.tar zstd 3 8558382592 3341679997 29262 278.92 +rawstudio-mint14.tar zstd 6 8558382592 3235846406 77904 104.77 +rawstudio-mint14.tar zstd 9 8558382592 3160778861 140946 57.91 + +rawstudio-mint14.tar gzstd 1 8558382592 3926234992 51345 158.96 +rawstudio-mint14.tar gzkp 1 8558382592 3960117298 36722 222.26 + +CSV data: +https://files.klauspost.com/compress/nyc-taxi-data-10M.csv.zst + +file out level insize outsize millis mb/s +nyc-taxi-data-10M.csv zskp 1 3325605752 641319332 9462 335.17 +nyc-taxi-data-10M.csv zskp 2 3325605752 588976126 17570 180.50 +nyc-taxi-data-10M.csv zskp 3 3325605752 529329260 32432 97.79 +nyc-taxi-data-10M.csv zskp 4 3325605752 474949772 138025 22.98 + +nyc-taxi-data-10M.csv zstd 1 3325605752 687399637 8233 385.18 +nyc-taxi-data-10M.csv zstd 3 3325605752 598514411 10065 315.07 +nyc-taxi-data-10M.csv zstd 6 3325605752 570522953 20038 158.27 +nyc-taxi-data-10M.csv zstd 9 3325605752 517554797 64565 49.12 + +nyc-taxi-data-10M.csv gzstd 1 3325605752 928654908 21270 149.11 +nyc-taxi-data-10M.csv gzkp 1 3325605752 922273214 13929 227.68 +``` + +## Decompressor + +Status: STABLE - there may still be subtle bugs, but a wide variety of content has been tested. + +This library is being continuously [fuzz-tested](https://github.com/klauspost/compress-fuzz), +kindly supplied by [fuzzit.dev](https://fuzzit.dev/). +The main purpose of the fuzz testing is to ensure that it is not possible to crash the decoder, +or run it past its limits with ANY input provided. + +### Usage + +The package has been designed for two main usages, big streams of data and smaller in-memory buffers. +There are two main usages of the package for these. Both of them are accessed by creating a `Decoder`. + +For streaming use a simple setup could look like this: + +```Go +import "github.com/klauspost/compress/zstd" + +func Decompress(in io.Reader, out io.Writer) error { + d, err := zstd.NewReader(in) + if err != nil { + return err + } + defer d.Close() + + // Copy content... + _, err = io.Copy(out, d) + return err +} +``` + +It is important to use the "Close" function when you no longer need the Reader to stop running goroutines, +when running with default settings. +Goroutines will exit once an error has been returned, including `io.EOF` at the end of a stream. + +Streams are decoded concurrently in 4 asynchronous stages to give the best possible throughput. +However, if you prefer synchronous decompression, use `WithDecoderConcurrency(1)` which will decompress data +as it is being requested only. + +For decoding buffers, it could look something like this: + +```Go +import "github.com/klauspost/compress/zstd" + +// Create a reader that caches decompressors. +// For this operation type we supply a nil Reader. +var decoder, _ = zstd.NewReader(nil, zstd.WithDecoderConcurrency(0)) + +// Decompress a buffer. We don't supply a destination buffer, +// so it will be allocated by the decoder. +func Decompress(src []byte) ([]byte, error) { + return decoder.DecodeAll(src, nil) +} +``` + +Both of these cases should provide the functionality needed. +The decoder can be used for *concurrent* decompression of multiple buffers. +By default 4 decompressors will be created. + +It will only allow a certain number of concurrent operations to run. +To tweak that yourself use the `WithDecoderConcurrency(n)` option when creating the decoder. +It is possible to use `WithDecoderConcurrency(0)` to create GOMAXPROCS decoders. + +### Dictionaries + +Data compressed with [dictionaries](https://github.com/facebook/zstd#the-case-for-small-data-compression) can be decompressed. + +Dictionaries are added individually to Decoders. +Dictionaries are generated by the `zstd --train` command and contains an initial state for the decoder. +To add a dictionary use the `WithDecoderDicts(dicts ...[]byte)` option with the dictionary data. +Several dictionaries can be added at once. + +The dictionary will be used automatically for the data that specifies them. +A re-used Decoder will still contain the dictionaries registered. + +When registering multiple dictionaries with the same ID, the last one will be used. + +It is possible to use dictionaries when compressing data. + +To enable a dictionary use `WithEncoderDict(dict []byte)`. Here only one dictionary will be used +and it will likely be used even if it doesn't improve compression. + +The used dictionary must be used to decompress the content. + +For any real gains, the dictionary should be built with similar data. +If an unsuitable dictionary is used the output may be slightly larger than using no dictionary. +Use the [zstd commandline tool](https://github.com/facebook/zstd/releases) to build a dictionary from sample data. +For information see [zstd dictionary information](https://github.com/facebook/zstd#the-case-for-small-data-compression). + +For now there is a fixed startup performance penalty for compressing content with dictionaries. +This will likely be improved over time. Just be aware to test performance when implementing. + +### Allocation-less operation + +The decoder has been designed to operate without allocations after a warmup. + +This means that you should *store* the decoder for best performance. +To re-use a stream decoder, use the `Reset(r io.Reader) error` to switch to another stream. +A decoder can safely be re-used even if the previous stream failed. + +To release the resources, you must call the `Close()` function on a decoder. +After this it can *no longer be reused*, but all running goroutines will be stopped. +So you *must* use this if you will no longer need the Reader. + +For decompressing smaller buffers a single decoder can be used. +When decoding buffers, you can supply a destination slice with length 0 and your expected capacity. +In this case no unneeded allocations should be made. + +### Concurrency + +The buffer decoder does everything on the same goroutine and does nothing concurrently. +It can however decode several buffers concurrently. Use `WithDecoderConcurrency(n)` to limit that. + +The stream decoder will create goroutines that: + +1) Reads input and splits the input into blocks. +2) Decompression of literals. +3) Decompression of sequences. +4) Reconstruction of output stream. + +So effectively this also means the decoder will "read ahead" and prepare data to always be available for output. + +The concurrency level will, for streams, determine how many blocks ahead the compression will start. + +Since "blocks" are quite dependent on the output of the previous block stream decoding will only have limited concurrency. + +In practice this means that concurrency is often limited to utilizing about 3 cores effectively. + +### Benchmarks + +The first two are streaming decodes and the last are smaller inputs. + +Running on AMD Ryzen 9 3950X 16-Core Processor. AMD64 assembly used. + +``` +BenchmarkDecoderSilesia-32 5 206878840 ns/op 1024.50 MB/s 49808 B/op 43 allocs/op +BenchmarkDecoderEnwik9-32 1 1271809000 ns/op 786.28 MB/s 72048 B/op 52 allocs/op + +Concurrent blocks, performance: + +BenchmarkDecoder_DecodeAllParallel/kppkn.gtb.zst-32 67356 17857 ns/op 10321.96 MB/s 22.48 pct 102 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/geo.protodata.zst-32 266656 4421 ns/op 26823.21 MB/s 11.89 pct 19 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/plrabn12.txt.zst-32 20992 56842 ns/op 8477.17 MB/s 39.90 pct 754 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/lcet10.txt.zst-32 27456 43932 ns/op 9714.01 MB/s 33.27 pct 524 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/asyoulik.txt.zst-32 78432 15047 ns/op 8319.15 MB/s 40.34 pct 66 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/alice29.txt.zst-32 65800 18436 ns/op 8249.63 MB/s 37.75 pct 88 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/html_x_4.zst-32 102993 11523 ns/op 35546.09 MB/s 3.637 pct 143 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/paper-100k.pdf.zst-32 1000000 1070 ns/op 95720.98 MB/s 80.53 pct 3 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/fireworks.jpeg.zst-32 749802 1752 ns/op 70272.35 MB/s 100.0 pct 5 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/urls.10K.zst-32 22640 52934 ns/op 13263.37 MB/s 26.25 pct 1014 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/html.zst-32 226412 5232 ns/op 19572.27 MB/s 14.49 pct 20 B/op 0 allocs/op +BenchmarkDecoder_DecodeAllParallel/comp-data.bin.zst-32 923041 1276 ns/op 3194.71 MB/s 31.26 pct 0 B/op 0 allocs/op +``` + +This reflects the performance around May 2022, but this may be out of date. + +## Zstd inside ZIP files + +It is possible to use zstandard to compress individual files inside zip archives. +While this isn't widely supported it can be useful for internal files. + +To support the compression and decompression of these files you must register a compressor and decompressor. + +It is highly recommended registering the (de)compressors on individual zip Reader/Writer and NOT +use the global registration functions. The main reason for this is that 2 registrations from +different packages will result in a panic. + +It is a good idea to only have a single compressor and decompressor, since they can be used for multiple zip +files concurrently, and using a single instance will allow reusing some resources. + +See [this example](https://pkg.go.dev/github.com/klauspost/compress/zstd#example-ZipCompressor) for +how to compress and decompress files inside zip archives. + +# Contributions + +Contributions are always welcome. +For new features/fixes, remember to add tests and for performance enhancements include benchmarks. + +For general feedback and experience reports, feel free to open an issue or write me on [Twitter](https://twitter.com/sh0dan). + +This package includes the excellent [`github.com/cespare/xxhash`](https://github.com/cespare/xxhash) package Copyright (c) 2016 Caleb Spare. diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go new file mode 100644 index 0000000..25ca983 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bitreader.go @@ -0,0 +1,136 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "errors" + "fmt" + "io" + "math/bits" +) + +// bitReader reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReader struct { + in []byte + value uint64 // Maybe use [16]byte, but shifting is awkward. + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReader) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + if len(in) >= 8 { + b.fillFastStart() + } else { + b.fill() + b.fill() + } + b.bitsRead += 8 - uint8(highBits(uint32(v))) + return nil +} + +// getBits will return n bits. n can be 0. +func (b *bitReader) getBits(n uint8) int { + if n == 0 /*|| b.bitsRead >= 64 */ { + return 0 + } + return int(b.get32BitsFast(n)) +} + +// get32BitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReader) get32BitsFast(n uint8) uint32 { + const regMask = 64 - 1 + v := uint32((b.value << (b.bitsRead & regMask)) >> ((regMask + 1 - n) & regMask)) + b.bitsRead += n + return v +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReader) fillFast() { + if b.bitsRead < 32 { + return + } + v := b.in[len(b.in)-4:] + b.in = b.in[:len(b.in)-4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 +} + +// fillFastStart() assumes the bitreader is empty and there is at least 8 bytes to read. +func (b *bitReader) fillFastStart() { + v := b.in[len(b.in)-8:] + b.in = b.in[:len(b.in)-8] + b.value = binary.LittleEndian.Uint64(v) + b.bitsRead = 0 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReader) fill() { + if b.bitsRead < 32 { + return + } + if len(b.in) >= 4 { + v := b.in[len(b.in)-4:] + b.in = b.in[:len(b.in)-4] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + return + } + + b.bitsRead -= uint8(8 * len(b.in)) + for len(b.in) > 0 { + b.value = (b.value << 8) | uint64(b.in[len(b.in)-1]) + b.in = b.in[:len(b.in)-1] + } +} + +// finished returns true if all bits have been read from the bit stream. +func (b *bitReader) finished() bool { + return len(b.in) == 0 && b.bitsRead >= 64 +} + +// overread returns true if more bits have been requested than is on the stream. +func (b *bitReader) overread() bool { + return b.bitsRead > 64 +} + +// remain returns the number of bits remaining. +func (b *bitReader) remain() uint { + return 8*uint(len(b.in)) + 64 - uint(b.bitsRead) +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReader) close() error { + // Release reference. + b.in = nil + if !b.finished() { + return fmt.Errorf("%d extra bits on block, should be 0", b.remain()) + } + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} + +func highBits(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go new file mode 100644 index 0000000..1952f17 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bitwriter.go @@ -0,0 +1,112 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package zstd + +// bitWriter will write bits. +// First bit will be LSB of the first byte of output. +type bitWriter struct { + bitContainer uint64 + nBits uint8 + out []byte +} + +// bitMask16 is bitmasks. Has extra to avoid bounds check. +var bitMask16 = [32]uint16{ + 0, 1, 3, 7, 0xF, 0x1F, + 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, + 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF} /* up to 16 bits */ + +var bitMask32 = [32]uint32{ + 0, 1, 3, 7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, + 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, + 0x1ffff, 0x3ffff, 0x7FFFF, 0xfFFFF, 0x1fFFFF, 0x3fFFFF, 0x7fFFFF, 0xffFFFF, + 0x1ffFFFF, 0x3ffFFFF, 0x7ffFFFF, 0xfffFFFF, 0x1fffFFFF, 0x3fffFFFF, 0x7fffFFFF, +} // up to 32 bits + +// addBits16NC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16NC(value uint16, bits uint8) { + b.bitContainer |= uint64(value&bitMask16[bits&31]) << (b.nBits & 63) + b.nBits += bits +} + +// addBits32NC will add up to 31 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits32NC(value uint32, bits uint8) { + b.bitContainer |= uint64(value&bitMask32[bits&31]) << (b.nBits & 63) + b.nBits += bits +} + +// addBits64NC will add up to 64 bits. +// There must be space for 32 bits. +func (b *bitWriter) addBits64NC(value uint64, bits uint8) { + if bits <= 31 { + b.addBits32Clean(uint32(value), bits) + return + } + b.addBits32Clean(uint32(value), 32) + b.flush32() + b.addBits32Clean(uint32(value>>32), bits-32) +} + +// addBits32Clean will add up to 32 bits. +// It will not check if there is space for them. +// The input must not contain more bits than specified. +func (b *bitWriter) addBits32Clean(value uint32, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// flush32 will flush out, so there are at least 32 bits available for writing. +func (b *bitWriter) flush32() { + if b.nBits < 32 { + return + } + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24)) + b.nBits -= 32 + b.bitContainer >>= 32 +} + +// flushAlign will flush remaining full bytes and align to next byte boundary. +func (b *bitWriter) flushAlign() { + nbBytes := (b.nBits + 7) >> 3 + for i := uint8(0); i < nbBytes; i++ { + b.out = append(b.out, byte(b.bitContainer>>(i*8))) + } + b.nBits = 0 + b.bitContainer = 0 +} + +// close will write the alignment bit and write the final byte(s) +// to the output. +func (b *bitWriter) close() { + // End mark + b.addBits16Clean(1, 1) + // flush until next byte. + b.flushAlign() +} + +// reset and continue writing by appending to out. +func (b *bitWriter) reset(out []byte) { + b.bitContainer = 0 + b.nBits = 0 + b.out = out +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go b/examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go new file mode 100644 index 0000000..03744fb --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/blockdec.go @@ -0,0 +1,729 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "hash/crc32" + "io" + "os" + "path/filepath" + "sync" + + "github.com/klauspost/compress/huff0" + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +type blockType uint8 + +//go:generate stringer -type=blockType,literalsBlockType,seqCompMode,tableIndex + +const ( + blockTypeRaw blockType = iota + blockTypeRLE + blockTypeCompressed + blockTypeReserved +) + +type literalsBlockType uint8 + +const ( + literalsBlockRaw literalsBlockType = iota + literalsBlockRLE + literalsBlockCompressed + literalsBlockTreeless +) + +const ( + // maxCompressedBlockSize is the biggest allowed compressed block size (128KB) + maxCompressedBlockSize = 128 << 10 + + compressedBlockOverAlloc = 16 + maxCompressedBlockSizeAlloc = 128<<10 + compressedBlockOverAlloc + + // Maximum possible block size (all Raw+Uncompressed). + maxBlockSize = (1 << 21) - 1 + + maxMatchLen = 131074 + maxSequences = 0x7f00 + 0xffff + + // We support slightly less than the reference decoder to be able to + // use ints on 32 bit archs. + maxOffsetBits = 30 +) + +var ( + huffDecoderPool = sync.Pool{New: func() interface{} { + return &huff0.Scratch{} + }} + + fseDecoderPool = sync.Pool{New: func() interface{} { + return &fseDecoder{} + }} +) + +type blockDec struct { + // Raw source data of the block. + data []byte + dataStorage []byte + + // Destination of the decoded data. + dst []byte + + // Buffer for literals data. + literalBuf []byte + + // Window size of the block. + WindowSize uint64 + + err error + + // Check against this crc, if hasCRC is true. + checkCRC uint32 + hasCRC bool + + // Frame to use for singlethreaded decoding. + // Should not be used by the decoder itself since parent may be another frame. + localFrame *frameDec + + sequence []seqVals + + async struct { + newHist *history + literals []byte + seqData []byte + seqSize int // Size of uncompressed sequences + fcs uint64 + } + + // Block is RLE, this is the size. + RLESize uint32 + + Type blockType + + // Is this the last block of a frame? + Last bool + + // Use less memory + lowMem bool +} + +func (b *blockDec) String() string { + if b == nil { + return "" + } + return fmt.Sprintf("Steam Size: %d, Type: %v, Last: %t, Window: %d", len(b.data), b.Type, b.Last, b.WindowSize) +} + +func newBlockDec(lowMem bool) *blockDec { + b := blockDec{ + lowMem: lowMem, + } + return &b +} + +// reset will reset the block. +// Input must be a start of a block and will be at the end of the block when returned. +func (b *blockDec) reset(br byteBuffer, windowSize uint64) error { + b.WindowSize = windowSize + tmp, err := br.readSmall(3) + if err != nil { + println("Reading block header:", err) + return err + } + bh := uint32(tmp[0]) | (uint32(tmp[1]) << 8) | (uint32(tmp[2]) << 16) + b.Last = bh&1 != 0 + b.Type = blockType((bh >> 1) & 3) + // find size. + cSize := int(bh >> 3) + maxSize := maxCompressedBlockSizeAlloc + switch b.Type { + case blockTypeReserved: + return ErrReservedBlockType + case blockTypeRLE: + if cSize > maxCompressedBlockSize || cSize > int(b.WindowSize) { + if debugDecoder { + printf("rle block too big: csize:%d block: %+v\n", uint64(cSize), b) + } + return ErrWindowSizeExceeded + } + b.RLESize = uint32(cSize) + if b.lowMem { + maxSize = cSize + } + cSize = 1 + case blockTypeCompressed: + if debugDecoder { + println("Data size on stream:", cSize) + } + b.RLESize = 0 + maxSize = maxCompressedBlockSizeAlloc + if windowSize < maxCompressedBlockSize && b.lowMem { + maxSize = int(windowSize) + compressedBlockOverAlloc + } + if cSize > maxCompressedBlockSize || uint64(cSize) > b.WindowSize { + if debugDecoder { + printf("compressed block too big: csize:%d block: %+v\n", uint64(cSize), b) + } + return ErrCompressedSizeTooBig + } + // Empty compressed blocks must at least be 2 bytes + // for Literals_Block_Type and one for Sequences_Section_Header. + if cSize < 2 { + return ErrBlockTooSmall + } + case blockTypeRaw: + if cSize > maxCompressedBlockSize || cSize > int(b.WindowSize) { + if debugDecoder { + printf("rle block too big: csize:%d block: %+v\n", uint64(cSize), b) + } + return ErrWindowSizeExceeded + } + + b.RLESize = 0 + // We do not need a destination for raw blocks. + maxSize = -1 + default: + panic("Invalid block type") + } + + // Read block data. + if _, ok := br.(*byteBuf); !ok && cap(b.dataStorage) < cSize { + // byteBuf doesn't need a destination buffer. + if b.lowMem || cSize > maxCompressedBlockSize { + b.dataStorage = make([]byte, 0, cSize+compressedBlockOverAlloc) + } else { + b.dataStorage = make([]byte, 0, maxCompressedBlockSizeAlloc) + } + } + b.data, err = br.readBig(cSize, b.dataStorage) + if err != nil { + if debugDecoder { + println("Reading block:", err, "(", cSize, ")", len(b.data)) + printf("%T", br) + } + return err + } + if cap(b.dst) <= maxSize { + b.dst = make([]byte, 0, maxSize+1) + } + return nil +} + +// sendEOF will make the decoder send EOF on this frame. +func (b *blockDec) sendErr(err error) { + b.Last = true + b.Type = blockTypeReserved + b.err = err +} + +// Close will release resources. +// Closed blockDec cannot be reset. +func (b *blockDec) Close() { +} + +// decodeBuf +func (b *blockDec) decodeBuf(hist *history) error { + switch b.Type { + case blockTypeRLE: + if cap(b.dst) < int(b.RLESize) { + if b.lowMem { + b.dst = make([]byte, b.RLESize) + } else { + b.dst = make([]byte, maxCompressedBlockSize) + } + } + b.dst = b.dst[:b.RLESize] + v := b.data[0] + for i := range b.dst { + b.dst[i] = v + } + hist.appendKeep(b.dst) + return nil + case blockTypeRaw: + hist.appendKeep(b.data) + return nil + case blockTypeCompressed: + saved := b.dst + // Append directly to history + if hist.ignoreBuffer == 0 { + b.dst = hist.b + hist.b = nil + } else { + b.dst = b.dst[:0] + } + err := b.decodeCompressed(hist) + if debugDecoder { + println("Decompressed to total", len(b.dst), "bytes, hash:", xxhash.Sum64(b.dst), "error:", err) + } + if hist.ignoreBuffer == 0 { + hist.b = b.dst + b.dst = saved + } else { + hist.appendKeep(b.dst) + } + return err + case blockTypeReserved: + // Used for returning errors. + return b.err + default: + panic("Invalid block type") + } +} + +func (b *blockDec) decodeLiterals(in []byte, hist *history) (remain []byte, err error) { + // There must be at least one byte for Literals_Block_Type and one for Sequences_Section_Header + if len(in) < 2 { + return in, ErrBlockTooSmall + } + + litType := literalsBlockType(in[0] & 3) + var litRegenSize int + var litCompSize int + sizeFormat := (in[0] >> 2) & 3 + var fourStreams bool + var literals []byte + switch litType { + case literalsBlockRaw, literalsBlockRLE: + switch sizeFormat { + case 0, 2: + // Regenerated_Size uses 5 bits (0-31). Literals_Section_Header uses 1 byte. + litRegenSize = int(in[0] >> 3) + in = in[1:] + case 1: + // Regenerated_Size uses 12 bits (0-4095). Literals_Section_Header uses 2 bytes. + litRegenSize = int(in[0]>>4) + (int(in[1]) << 4) + in = in[2:] + case 3: + // Regenerated_Size uses 20 bits (0-1048575). Literals_Section_Header uses 3 bytes. + if len(in) < 3 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + litRegenSize = int(in[0]>>4) + (int(in[1]) << 4) + (int(in[2]) << 12) + in = in[3:] + } + case literalsBlockCompressed, literalsBlockTreeless: + switch sizeFormat { + case 0, 1: + // Both Regenerated_Size and Compressed_Size use 10 bits (0-1023). + if len(in) < 3 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + n := uint64(in[0]>>4) + (uint64(in[1]) << 4) + (uint64(in[2]) << 12) + litRegenSize = int(n & 1023) + litCompSize = int(n >> 10) + fourStreams = sizeFormat == 1 + in = in[3:] + case 2: + fourStreams = true + if len(in) < 4 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + n := uint64(in[0]>>4) + (uint64(in[1]) << 4) + (uint64(in[2]) << 12) + (uint64(in[3]) << 20) + litRegenSize = int(n & 16383) + litCompSize = int(n >> 14) + in = in[4:] + case 3: + fourStreams = true + if len(in) < 5 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, len(in)) + return in, ErrBlockTooSmall + } + n := uint64(in[0]>>4) + (uint64(in[1]) << 4) + (uint64(in[2]) << 12) + (uint64(in[3]) << 20) + (uint64(in[4]) << 28) + litRegenSize = int(n & 262143) + litCompSize = int(n >> 18) + in = in[5:] + } + } + if debugDecoder { + println("literals type:", litType, "litRegenSize:", litRegenSize, "litCompSize:", litCompSize, "sizeFormat:", sizeFormat, "4X:", fourStreams) + } + if litRegenSize > int(b.WindowSize) || litRegenSize > maxCompressedBlockSize { + return in, ErrWindowSizeExceeded + } + + switch litType { + case literalsBlockRaw: + if len(in) < litRegenSize { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", litRegenSize) + return in, ErrBlockTooSmall + } + literals = in[:litRegenSize] + in = in[litRegenSize:] + //printf("Found %d uncompressed literals\n", litRegenSize) + case literalsBlockRLE: + if len(in) < 1 { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", 1) + return in, ErrBlockTooSmall + } + if cap(b.literalBuf) < litRegenSize { + if b.lowMem { + b.literalBuf = make([]byte, litRegenSize, litRegenSize+compressedBlockOverAlloc) + } else { + b.literalBuf = make([]byte, litRegenSize, maxCompressedBlockSize+compressedBlockOverAlloc) + } + } + literals = b.literalBuf[:litRegenSize] + v := in[0] + for i := range literals { + literals[i] = v + } + in = in[1:] + if debugDecoder { + printf("Found %d RLE compressed literals\n", litRegenSize) + } + case literalsBlockTreeless: + if len(in) < litCompSize { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", litCompSize) + return in, ErrBlockTooSmall + } + // Store compressed literals, so we defer decoding until we get history. + literals = in[:litCompSize] + in = in[litCompSize:] + if debugDecoder { + printf("Found %d compressed literals\n", litCompSize) + } + huff := hist.huffTree + if huff == nil { + return in, errors.New("literal block was treeless, but no history was defined") + } + // Ensure we have space to store it. + if cap(b.literalBuf) < litRegenSize { + if b.lowMem { + b.literalBuf = make([]byte, 0, litRegenSize+compressedBlockOverAlloc) + } else { + b.literalBuf = make([]byte, 0, maxCompressedBlockSize+compressedBlockOverAlloc) + } + } + var err error + // Use our out buffer. + huff.MaxDecodedSize = litRegenSize + if fourStreams { + literals, err = huff.Decoder().Decompress4X(b.literalBuf[:0:litRegenSize], literals) + } else { + literals, err = huff.Decoder().Decompress1X(b.literalBuf[:0:litRegenSize], literals) + } + // Make sure we don't leak our literals buffer + if err != nil { + println("decompressing literals:", err) + return in, err + } + if len(literals) != litRegenSize { + return in, fmt.Errorf("literal output size mismatch want %d, got %d", litRegenSize, len(literals)) + } + + case literalsBlockCompressed: + if len(in) < litCompSize { + println("too small: litType:", litType, " sizeFormat", sizeFormat, "remain:", len(in), "want:", litCompSize) + return in, ErrBlockTooSmall + } + literals = in[:litCompSize] + in = in[litCompSize:] + // Ensure we have space to store it. + if cap(b.literalBuf) < litRegenSize { + if b.lowMem { + b.literalBuf = make([]byte, 0, litRegenSize+compressedBlockOverAlloc) + } else { + b.literalBuf = make([]byte, 0, maxCompressedBlockSize+compressedBlockOverAlloc) + } + } + huff := hist.huffTree + if huff == nil || (hist.dict != nil && huff == hist.dict.litEnc) { + huff = huffDecoderPool.Get().(*huff0.Scratch) + if huff == nil { + huff = &huff0.Scratch{} + } + } + var err error + if debugDecoder { + println("huff table input:", len(literals), "CRC:", crc32.ChecksumIEEE(literals)) + } + huff, literals, err = huff0.ReadTable(literals, huff) + if err != nil { + println("reading huffman table:", err) + return in, err + } + hist.huffTree = huff + huff.MaxDecodedSize = litRegenSize + // Use our out buffer. + if fourStreams { + literals, err = huff.Decoder().Decompress4X(b.literalBuf[:0:litRegenSize], literals) + } else { + literals, err = huff.Decoder().Decompress1X(b.literalBuf[:0:litRegenSize], literals) + } + if err != nil { + println("decoding compressed literals:", err) + return in, err + } + // Make sure we don't leak our literals buffer + if len(literals) != litRegenSize { + return in, fmt.Errorf("literal output size mismatch want %d, got %d", litRegenSize, len(literals)) + } + // Re-cap to get extra size. + literals = b.literalBuf[:len(literals)] + if debugDecoder { + printf("Decompressed %d literals into %d bytes\n", litCompSize, litRegenSize) + } + } + hist.decoders.literals = literals + return in, nil +} + +// decodeCompressed will start decompressing a block. +func (b *blockDec) decodeCompressed(hist *history) error { + in := b.data + in, err := b.decodeLiterals(in, hist) + if err != nil { + return err + } + err = b.prepareSequences(in, hist) + if err != nil { + return err + } + if hist.decoders.nSeqs == 0 { + b.dst = append(b.dst, hist.decoders.literals...) + return nil + } + before := len(hist.decoders.out) + err = hist.decoders.decodeSync(hist.b[hist.ignoreBuffer:]) + if err != nil { + return err + } + if hist.decoders.maxSyncLen > 0 { + hist.decoders.maxSyncLen += uint64(before) + hist.decoders.maxSyncLen -= uint64(len(hist.decoders.out)) + } + b.dst = hist.decoders.out + hist.recentOffsets = hist.decoders.prevOffset + return nil +} + +func (b *blockDec) prepareSequences(in []byte, hist *history) (err error) { + if debugDecoder { + printf("prepareSequences: %d byte(s) input\n", len(in)) + } + // Decode Sequences + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#sequences-section + if len(in) < 1 { + return ErrBlockTooSmall + } + var nSeqs int + seqHeader := in[0] + switch { + case seqHeader < 128: + nSeqs = int(seqHeader) + in = in[1:] + case seqHeader < 255: + if len(in) < 2 { + return ErrBlockTooSmall + } + nSeqs = int(seqHeader-128)<<8 | int(in[1]) + in = in[2:] + case seqHeader == 255: + if len(in) < 3 { + return ErrBlockTooSmall + } + nSeqs = 0x7f00 + int(in[1]) + (int(in[2]) << 8) + in = in[3:] + } + if nSeqs == 0 && len(in) != 0 { + // When no sequences, there should not be any more data... + if debugDecoder { + printf("prepareSequences: 0 sequences, but %d byte(s) left on stream\n", len(in)) + } + return ErrUnexpectedBlockSize + } + + var seqs = &hist.decoders + seqs.nSeqs = nSeqs + if nSeqs > 0 { + if len(in) < 1 { + return ErrBlockTooSmall + } + br := byteReader{b: in, off: 0} + compMode := br.Uint8() + br.advance(1) + if debugDecoder { + printf("Compression modes: 0b%b", compMode) + } + if compMode&3 != 0 { + return errors.New("corrupt block: reserved bits not zero") + } + for i := uint(0); i < 3; i++ { + mode := seqCompMode((compMode >> (6 - i*2)) & 3) + if debugDecoder { + println("Table", tableIndex(i), "is", mode) + } + var seq *sequenceDec + switch tableIndex(i) { + case tableLiteralLengths: + seq = &seqs.litLengths + case tableOffsets: + seq = &seqs.offsets + case tableMatchLengths: + seq = &seqs.matchLengths + default: + panic("unknown table") + } + switch mode { + case compModePredefined: + if seq.fse != nil && !seq.fse.preDefined { + fseDecoderPool.Put(seq.fse) + } + seq.fse = &fsePredef[i] + case compModeRLE: + if br.remain() < 1 { + return ErrBlockTooSmall + } + v := br.Uint8() + br.advance(1) + if seq.fse == nil || seq.fse.preDefined { + seq.fse = fseDecoderPool.Get().(*fseDecoder) + } + symb, err := decSymbolValue(v, symbolTableX[i]) + if err != nil { + printf("RLE Transform table (%v) error: %v", tableIndex(i), err) + return err + } + seq.fse.setRLE(symb) + if debugDecoder { + printf("RLE set to 0x%x, code: %v", symb, v) + } + case compModeFSE: + println("Reading table for", tableIndex(i)) + if seq.fse == nil || seq.fse.preDefined { + seq.fse = fseDecoderPool.Get().(*fseDecoder) + } + err := seq.fse.readNCount(&br, uint16(maxTableSymbol[i])) + if err != nil { + println("Read table error:", err) + return err + } + err = seq.fse.transform(symbolTableX[i]) + if err != nil { + println("Transform table error:", err) + return err + } + if debugDecoder { + println("Read table ok", "symbolLen:", seq.fse.symbolLen) + } + case compModeRepeat: + seq.repeat = true + } + if br.overread() { + return io.ErrUnexpectedEOF + } + } + in = br.unread() + } + if debugDecoder { + println("Literals:", len(seqs.literals), "hash:", xxhash.Sum64(seqs.literals), "and", seqs.nSeqs, "sequences.") + } + + if nSeqs == 0 { + if len(b.sequence) > 0 { + b.sequence = b.sequence[:0] + } + return nil + } + br := seqs.br + if br == nil { + br = &bitReader{} + } + if err := br.init(in); err != nil { + return err + } + + if err := seqs.initialize(br, hist, b.dst); err != nil { + println("initializing sequences:", err) + return err + } + // Extract blocks... + if false && hist.dict == nil { + fatalErr := func(err error) { + if err != nil { + panic(err) + } + } + fn := fmt.Sprintf("n-%d-lits-%d-prev-%d-%d-%d-win-%d.blk", hist.decoders.nSeqs, len(hist.decoders.literals), hist.recentOffsets[0], hist.recentOffsets[1], hist.recentOffsets[2], hist.windowSize) + var buf bytes.Buffer + fatalErr(binary.Write(&buf, binary.LittleEndian, hist.decoders.litLengths.fse)) + fatalErr(binary.Write(&buf, binary.LittleEndian, hist.decoders.matchLengths.fse)) + fatalErr(binary.Write(&buf, binary.LittleEndian, hist.decoders.offsets.fse)) + buf.Write(in) + os.WriteFile(filepath.Join("testdata", "seqs", fn), buf.Bytes(), os.ModePerm) + } + + return nil +} + +func (b *blockDec) decodeSequences(hist *history) error { + if cap(b.sequence) < hist.decoders.nSeqs { + if b.lowMem { + b.sequence = make([]seqVals, 0, hist.decoders.nSeqs) + } else { + b.sequence = make([]seqVals, 0, 0x7F00+0xffff) + } + } + b.sequence = b.sequence[:hist.decoders.nSeqs] + if hist.decoders.nSeqs == 0 { + hist.decoders.seqSize = len(hist.decoders.literals) + return nil + } + hist.decoders.windowSize = hist.windowSize + hist.decoders.prevOffset = hist.recentOffsets + + err := hist.decoders.decode(b.sequence) + hist.recentOffsets = hist.decoders.prevOffset + return err +} + +func (b *blockDec) executeSequences(hist *history) error { + hbytes := hist.b + if len(hbytes) > hist.windowSize { + hbytes = hbytes[len(hbytes)-hist.windowSize:] + // We do not need history anymore. + if hist.dict != nil { + hist.dict.content = nil + } + } + hist.decoders.windowSize = hist.windowSize + hist.decoders.out = b.dst[:0] + err := hist.decoders.execute(b.sequence, hbytes) + if err != nil { + return err + } + return b.updateHistory(hist) +} + +func (b *blockDec) updateHistory(hist *history) error { + if len(b.data) > maxCompressedBlockSize { + return fmt.Errorf("compressed block size too large (%d)", len(b.data)) + } + // Set output and release references. + b.dst = hist.decoders.out + hist.recentOffsets = hist.decoders.prevOffset + + if b.Last { + // if last block we don't care about history. + println("Last block, no history returned") + hist.b = hist.b[:0] + return nil + } else { + hist.append(b.dst) + if debugDecoder { + println("Finished block with ", len(b.sequence), "sequences. Added", len(b.dst), "to history, now length", len(hist.b)) + } + } + hist.decoders.out, hist.decoders.literals = nil, nil + + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go b/examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go new file mode 100644 index 0000000..32a7f40 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/blockenc.go @@ -0,0 +1,909 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "math" + "math/bits" + + "github.com/klauspost/compress/huff0" +) + +type blockEnc struct { + size int + literals []byte + sequences []seq + coders seqCoders + litEnc *huff0.Scratch + dictLitEnc *huff0.Scratch + wr bitWriter + + extraLits int + output []byte + recentOffsets [3]uint32 + prevRecentOffsets [3]uint32 + + last bool + lowMem bool +} + +// init should be used once the block has been created. +// If called more than once, the effect is the same as calling reset. +func (b *blockEnc) init() { + if b.lowMem { + // 1K literals + if cap(b.literals) < 1<<10 { + b.literals = make([]byte, 0, 1<<10) + } + const defSeqs = 20 + if cap(b.sequences) < defSeqs { + b.sequences = make([]seq, 0, defSeqs) + } + // 1K + if cap(b.output) < 1<<10 { + b.output = make([]byte, 0, 1<<10) + } + } else { + if cap(b.literals) < maxCompressedBlockSize { + b.literals = make([]byte, 0, maxCompressedBlockSize) + } + const defSeqs = 2000 + if cap(b.sequences) < defSeqs { + b.sequences = make([]seq, 0, defSeqs) + } + if cap(b.output) < maxCompressedBlockSize { + b.output = make([]byte, 0, maxCompressedBlockSize) + } + } + + if b.coders.mlEnc == nil { + b.coders.mlEnc = &fseEncoder{} + b.coders.mlPrev = &fseEncoder{} + b.coders.ofEnc = &fseEncoder{} + b.coders.ofPrev = &fseEncoder{} + b.coders.llEnc = &fseEncoder{} + b.coders.llPrev = &fseEncoder{} + } + b.litEnc = &huff0.Scratch{WantLogLess: 4} + b.reset(nil) +} + +// initNewEncode can be used to reset offsets and encoders to the initial state. +func (b *blockEnc) initNewEncode() { + b.recentOffsets = [3]uint32{1, 4, 8} + b.litEnc.Reuse = huff0.ReusePolicyNone + b.coders.setPrev(nil, nil, nil) +} + +// reset will reset the block for a new encode, but in the same stream, +// meaning that state will be carried over, but the block content is reset. +// If a previous block is provided, the recent offsets are carried over. +func (b *blockEnc) reset(prev *blockEnc) { + b.extraLits = 0 + b.literals = b.literals[:0] + b.size = 0 + b.sequences = b.sequences[:0] + b.output = b.output[:0] + b.last = false + if prev != nil { + b.recentOffsets = prev.prevRecentOffsets + } + b.dictLitEnc = nil +} + +// reset will reset the block for a new encode, but in the same stream, +// meaning that state will be carried over, but the block content is reset. +// If a previous block is provided, the recent offsets are carried over. +func (b *blockEnc) swapEncoders(prev *blockEnc) { + b.coders.swap(&prev.coders) + b.litEnc, prev.litEnc = prev.litEnc, b.litEnc +} + +// blockHeader contains the information for a block header. +type blockHeader uint32 + +// setLast sets the 'last' indicator on a block. +func (h *blockHeader) setLast(b bool) { + if b { + *h = *h | 1 + } else { + const mask = (1 << 24) - 2 + *h = *h & mask + } +} + +// setSize will store the compressed size of a block. +func (h *blockHeader) setSize(v uint32) { + const mask = 7 + *h = (*h)&mask | blockHeader(v<<3) +} + +// setType sets the block type. +func (h *blockHeader) setType(t blockType) { + const mask = 1 | (((1 << 24) - 1) ^ 7) + *h = (*h & mask) | blockHeader(t<<1) +} + +// appendTo will append the block header to a slice. +func (h blockHeader) appendTo(b []byte) []byte { + return append(b, uint8(h), uint8(h>>8), uint8(h>>16)) +} + +// String returns a string representation of the block. +func (h blockHeader) String() string { + return fmt.Sprintf("Type: %d, Size: %d, Last:%t", (h>>1)&3, h>>3, h&1 == 1) +} + +// literalsHeader contains literals header information. +type literalsHeader uint64 + +// setType can be used to set the type of literal block. +func (h *literalsHeader) setType(t literalsBlockType) { + const mask = math.MaxUint64 - 3 + *h = (*h & mask) | literalsHeader(t) +} + +// setSize can be used to set a single size, for uncompressed and RLE content. +func (h *literalsHeader) setSize(regenLen int) { + inBits := bits.Len32(uint32(regenLen)) + // Only retain 2 bits + const mask = 3 + lh := uint64(*h & mask) + switch { + case inBits < 5: + lh |= (uint64(regenLen) << 3) | (1 << 60) + if debugEncoder { + got := int(lh>>3) & 0xff + if got != regenLen { + panic(fmt.Sprint("litRegenSize = ", regenLen, "(want) != ", got, "(got)")) + } + } + case inBits < 12: + lh |= (1 << 2) | (uint64(regenLen) << 4) | (2 << 60) + case inBits < 20: + lh |= (3 << 2) | (uint64(regenLen) << 4) | (3 << 60) + default: + panic(fmt.Errorf("internal error: block too big (%d)", regenLen)) + } + *h = literalsHeader(lh) +} + +// setSizes will set the size of a compressed literals section and the input length. +func (h *literalsHeader) setSizes(compLen, inLen int, single bool) { + compBits, inBits := bits.Len32(uint32(compLen)), bits.Len32(uint32(inLen)) + // Only retain 2 bits + const mask = 3 + lh := uint64(*h & mask) + switch { + case compBits <= 10 && inBits <= 10: + if !single { + lh |= 1 << 2 + } + lh |= (uint64(inLen) << 4) | (uint64(compLen) << (10 + 4)) | (3 << 60) + if debugEncoder { + const mmask = (1 << 24) - 1 + n := (lh >> 4) & mmask + if int(n&1023) != inLen { + panic(fmt.Sprint("regensize:", int(n&1023), "!=", inLen, inBits)) + } + if int(n>>10) != compLen { + panic(fmt.Sprint("compsize:", int(n>>10), "!=", compLen, compBits)) + } + } + case compBits <= 14 && inBits <= 14: + lh |= (2 << 2) | (uint64(inLen) << 4) | (uint64(compLen) << (14 + 4)) | (4 << 60) + if single { + panic("single stream used with more than 10 bits length.") + } + case compBits <= 18 && inBits <= 18: + lh |= (3 << 2) | (uint64(inLen) << 4) | (uint64(compLen) << (18 + 4)) | (5 << 60) + if single { + panic("single stream used with more than 10 bits length.") + } + default: + panic("internal error: block too big") + } + *h = literalsHeader(lh) +} + +// appendTo will append the literals header to a byte slice. +func (h literalsHeader) appendTo(b []byte) []byte { + size := uint8(h >> 60) + switch size { + case 1: + b = append(b, uint8(h)) + case 2: + b = append(b, uint8(h), uint8(h>>8)) + case 3: + b = append(b, uint8(h), uint8(h>>8), uint8(h>>16)) + case 4: + b = append(b, uint8(h), uint8(h>>8), uint8(h>>16), uint8(h>>24)) + case 5: + b = append(b, uint8(h), uint8(h>>8), uint8(h>>16), uint8(h>>24), uint8(h>>32)) + default: + panic(fmt.Errorf("internal error: literalsHeader has invalid size (%d)", size)) + } + return b +} + +// size returns the output size with currently set values. +func (h literalsHeader) size() int { + return int(h >> 60) +} + +func (h literalsHeader) String() string { + return fmt.Sprintf("Type: %d, SizeFormat: %d, Size: 0x%d, Bytes:%d", literalsBlockType(h&3), (h>>2)&3, h&((1<<60)-1)>>4, h>>60) +} + +// pushOffsets will push the recent offsets to the backup store. +func (b *blockEnc) pushOffsets() { + b.prevRecentOffsets = b.recentOffsets +} + +// pushOffsets will push the recent offsets to the backup store. +func (b *blockEnc) popOffsets() { + b.recentOffsets = b.prevRecentOffsets +} + +// matchOffset will adjust recent offsets and return the adjusted one, +// if it matches a previous offset. +func (b *blockEnc) matchOffset(offset, lits uint32) uint32 { + // Check if offset is one of the recent offsets. + // Adjusts the output offset accordingly. + // Gives a tiny bit of compression, typically around 1%. + if true { + if lits > 0 { + switch offset { + case b.recentOffsets[0]: + offset = 1 + case b.recentOffsets[1]: + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 2 + case b.recentOffsets[2]: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 3 + default: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset += 3 + } + } else { + switch offset { + case b.recentOffsets[1]: + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 1 + case b.recentOffsets[2]: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 2 + case b.recentOffsets[0] - 1: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset = 3 + default: + b.recentOffsets[2] = b.recentOffsets[1] + b.recentOffsets[1] = b.recentOffsets[0] + b.recentOffsets[0] = offset + offset += 3 + } + } + } else { + offset += 3 + } + return offset +} + +// encodeRaw can be used to set the output to a raw representation of supplied bytes. +func (b *blockEnc) encodeRaw(a []byte) { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(uint32(len(a))) + bh.setType(blockTypeRaw) + b.output = bh.appendTo(b.output[:0]) + b.output = append(b.output, a...) + if debugEncoder { + println("Adding RAW block, length", len(a), "last:", b.last) + } +} + +// encodeRaw can be used to set the output to a raw representation of supplied bytes. +func (b *blockEnc) encodeRawTo(dst, src []byte) []byte { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(uint32(len(src))) + bh.setType(blockTypeRaw) + dst = bh.appendTo(dst) + dst = append(dst, src...) + if debugEncoder { + println("Adding RAW block, length", len(src), "last:", b.last) + } + return dst +} + +// encodeLits can be used if the block is only litLen. +func (b *blockEnc) encodeLits(lits []byte, raw bool) error { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(uint32(len(lits))) + + // Don't compress extremely small blocks + if len(lits) < 8 || (len(lits) < 32 && b.dictLitEnc == nil) || raw { + if debugEncoder { + println("Adding RAW block, length", len(lits), "last:", b.last) + } + bh.setType(blockTypeRaw) + b.output = bh.appendTo(b.output) + b.output = append(b.output, lits...) + return nil + } + + var ( + out []byte + reUsed, single bool + err error + ) + if b.dictLitEnc != nil { + b.litEnc.TransferCTable(b.dictLitEnc) + b.litEnc.Reuse = huff0.ReusePolicyAllow + b.dictLitEnc = nil + } + if len(lits) >= 1024 { + // Use 4 Streams. + out, reUsed, err = huff0.Compress4X(lits, b.litEnc) + } else if len(lits) > 16 { + // Use 1 stream + single = true + out, reUsed, err = huff0.Compress1X(lits, b.litEnc) + } else { + err = huff0.ErrIncompressible + } + if err == nil && len(out)+5 > len(lits) { + // If we are close, we may still be worse or equal to raw. + var lh literalsHeader + lh.setSizes(len(out), len(lits), single) + if len(out)+lh.size() >= len(lits) { + err = huff0.ErrIncompressible + } + } + switch err { + case huff0.ErrIncompressible: + if debugEncoder { + println("Adding RAW block, length", len(lits), "last:", b.last) + } + bh.setType(blockTypeRaw) + b.output = bh.appendTo(b.output) + b.output = append(b.output, lits...) + return nil + case huff0.ErrUseRLE: + if debugEncoder { + println("Adding RLE block, length", len(lits)) + } + bh.setType(blockTypeRLE) + b.output = bh.appendTo(b.output) + b.output = append(b.output, lits[0]) + return nil + case nil: + default: + return err + } + // Compressed... + // Now, allow reuse + b.litEnc.Reuse = huff0.ReusePolicyAllow + bh.setType(blockTypeCompressed) + var lh literalsHeader + if reUsed { + if debugEncoder { + println("Reused tree, compressed to", len(out)) + } + lh.setType(literalsBlockTreeless) + } else { + if debugEncoder { + println("New tree, compressed to", len(out), "tree size:", len(b.litEnc.OutTable)) + } + lh.setType(literalsBlockCompressed) + } + // Set sizes + lh.setSizes(len(out), len(lits), single) + bh.setSize(uint32(len(out) + lh.size() + 1)) + + // Write block headers. + b.output = bh.appendTo(b.output) + b.output = lh.appendTo(b.output) + // Add compressed data. + b.output = append(b.output, out...) + // No sequences. + b.output = append(b.output, 0) + return nil +} + +// encodeRLE will encode an RLE block. +func (b *blockEnc) encodeRLE(val byte, length uint32) { + var bh blockHeader + bh.setLast(b.last) + bh.setSize(length) + bh.setType(blockTypeRLE) + b.output = bh.appendTo(b.output) + b.output = append(b.output, val) +} + +// fuzzFseEncoder can be used to fuzz the FSE encoder. +func fuzzFseEncoder(data []byte) int { + if len(data) > maxSequences || len(data) < 2 { + return 0 + } + enc := fseEncoder{} + hist := enc.Histogram() + maxSym := uint8(0) + for i, v := range data { + v = v & 63 + data[i] = v + hist[v]++ + if v > maxSym { + maxSym = v + } + } + if maxSym == 0 { + // All 0 + return 0 + } + maxCount := func(a []uint32) int { + var max uint32 + for _, v := range a { + if v > max { + max = v + } + } + return int(max) + } + cnt := maxCount(hist[:maxSym]) + if cnt == len(data) { + // RLE + return 0 + } + enc.HistogramFinished(maxSym, cnt) + err := enc.normalizeCount(len(data)) + if err != nil { + return 0 + } + _, err = enc.writeCount(nil) + if err != nil { + panic(err) + } + return 1 +} + +// encode will encode the block and append the output in b.output. +// Previous offset codes must be pushed if more blocks are expected. +func (b *blockEnc) encode(org []byte, raw, rawAllLits bool) error { + if len(b.sequences) == 0 { + return b.encodeLits(b.literals, rawAllLits) + } + if len(b.sequences) == 1 && len(org) > 0 && len(b.literals) <= 1 { + // Check common RLE cases. + seq := b.sequences[0] + if seq.litLen == uint32(len(b.literals)) && seq.offset-3 == 1 { + // Offset == 1 and 0 or 1 literals. + b.encodeRLE(org[0], b.sequences[0].matchLen+zstdMinMatch+seq.litLen) + return nil + } + } + + // We want some difference to at least account for the headers. + saved := b.size - len(b.literals) - (b.size >> 6) + if saved < 16 { + if org == nil { + return errIncompressible + } + b.popOffsets() + return b.encodeLits(org, rawAllLits) + } + + var bh blockHeader + var lh literalsHeader + bh.setLast(b.last) + bh.setType(blockTypeCompressed) + // Store offset of the block header. Needed when we know the size. + bhOffset := len(b.output) + b.output = bh.appendTo(b.output) + + var ( + out []byte + reUsed, single bool + err error + ) + if b.dictLitEnc != nil { + b.litEnc.TransferCTable(b.dictLitEnc) + b.litEnc.Reuse = huff0.ReusePolicyAllow + b.dictLitEnc = nil + } + if len(b.literals) >= 1024 && !raw { + // Use 4 Streams. + out, reUsed, err = huff0.Compress4X(b.literals, b.litEnc) + } else if len(b.literals) > 16 && !raw { + // Use 1 stream + single = true + out, reUsed, err = huff0.Compress1X(b.literals, b.litEnc) + } else { + err = huff0.ErrIncompressible + } + + if err == nil && len(out)+5 > len(b.literals) { + // If we are close, we may still be worse or equal to raw. + var lh literalsHeader + lh.setSize(len(b.literals)) + szRaw := lh.size() + lh.setSizes(len(out), len(b.literals), single) + szComp := lh.size() + if len(out)+szComp >= len(b.literals)+szRaw { + err = huff0.ErrIncompressible + } + } + switch err { + case huff0.ErrIncompressible: + lh.setType(literalsBlockRaw) + lh.setSize(len(b.literals)) + b.output = lh.appendTo(b.output) + b.output = append(b.output, b.literals...) + if debugEncoder { + println("Adding literals RAW, length", len(b.literals)) + } + case huff0.ErrUseRLE: + lh.setType(literalsBlockRLE) + lh.setSize(len(b.literals)) + b.output = lh.appendTo(b.output) + b.output = append(b.output, b.literals[0]) + if debugEncoder { + println("Adding literals RLE") + } + case nil: + // Compressed litLen... + if reUsed { + if debugEncoder { + println("reused tree") + } + lh.setType(literalsBlockTreeless) + } else { + if debugEncoder { + println("new tree, size:", len(b.litEnc.OutTable)) + } + lh.setType(literalsBlockCompressed) + if debugEncoder { + _, _, err := huff0.ReadTable(out, nil) + if err != nil { + panic(err) + } + } + } + lh.setSizes(len(out), len(b.literals), single) + if debugEncoder { + printf("Compressed %d literals to %d bytes", len(b.literals), len(out)) + println("Adding literal header:", lh) + } + b.output = lh.appendTo(b.output) + b.output = append(b.output, out...) + b.litEnc.Reuse = huff0.ReusePolicyAllow + if debugEncoder { + println("Adding literals compressed") + } + default: + if debugEncoder { + println("Adding literals ERROR:", err) + } + return err + } + // Sequence compression + + // Write the number of sequences + switch { + case len(b.sequences) < 128: + b.output = append(b.output, uint8(len(b.sequences))) + case len(b.sequences) < 0x7f00: // TODO: this could be wrong + n := len(b.sequences) + b.output = append(b.output, 128+uint8(n>>8), uint8(n)) + default: + n := len(b.sequences) - 0x7f00 + b.output = append(b.output, 255, uint8(n), uint8(n>>8)) + } + if debugEncoder { + println("Encoding", len(b.sequences), "sequences") + } + b.genCodes() + llEnc := b.coders.llEnc + ofEnc := b.coders.ofEnc + mlEnc := b.coders.mlEnc + err = llEnc.normalizeCount(len(b.sequences)) + if err != nil { + return err + } + err = ofEnc.normalizeCount(len(b.sequences)) + if err != nil { + return err + } + err = mlEnc.normalizeCount(len(b.sequences)) + if err != nil { + return err + } + + // Choose the best compression mode for each type. + // Will evaluate the new vs predefined and previous. + chooseComp := func(cur, prev, preDef *fseEncoder) (*fseEncoder, seqCompMode) { + // See if predefined/previous is better + hist := cur.count[:cur.symbolLen] + nSize := cur.approxSize(hist) + cur.maxHeaderSize() + predefSize := preDef.approxSize(hist) + prevSize := prev.approxSize(hist) + + // Add a small penalty for new encoders. + // Don't bother with extremely small (<2 byte gains). + nSize = nSize + (nSize+2*8*16)>>4 + switch { + case predefSize <= prevSize && predefSize <= nSize || forcePreDef: + if debugEncoder { + println("Using predefined", predefSize>>3, "<=", nSize>>3) + } + return preDef, compModePredefined + case prevSize <= nSize: + if debugEncoder { + println("Using previous", prevSize>>3, "<=", nSize>>3) + } + return prev, compModeRepeat + default: + if debugEncoder { + println("Using new, predef", predefSize>>3, ". previous:", prevSize>>3, ">", nSize>>3, "header max:", cur.maxHeaderSize()>>3, "bytes") + println("tl:", cur.actualTableLog, "symbolLen:", cur.symbolLen, "norm:", cur.norm[:cur.symbolLen], "hist", cur.count[:cur.symbolLen]) + } + return cur, compModeFSE + } + } + + // Write compression mode + var mode uint8 + if llEnc.useRLE { + mode |= uint8(compModeRLE) << 6 + llEnc.setRLE(b.sequences[0].llCode) + if debugEncoder { + println("llEnc.useRLE") + } + } else { + var m seqCompMode + llEnc, m = chooseComp(llEnc, b.coders.llPrev, &fsePredefEnc[tableLiteralLengths]) + mode |= uint8(m) << 6 + } + if ofEnc.useRLE { + mode |= uint8(compModeRLE) << 4 + ofEnc.setRLE(b.sequences[0].ofCode) + if debugEncoder { + println("ofEnc.useRLE") + } + } else { + var m seqCompMode + ofEnc, m = chooseComp(ofEnc, b.coders.ofPrev, &fsePredefEnc[tableOffsets]) + mode |= uint8(m) << 4 + } + + if mlEnc.useRLE { + mode |= uint8(compModeRLE) << 2 + mlEnc.setRLE(b.sequences[0].mlCode) + if debugEncoder { + println("mlEnc.useRLE, code: ", b.sequences[0].mlCode, "value", b.sequences[0].matchLen) + } + } else { + var m seqCompMode + mlEnc, m = chooseComp(mlEnc, b.coders.mlPrev, &fsePredefEnc[tableMatchLengths]) + mode |= uint8(m) << 2 + } + b.output = append(b.output, mode) + if debugEncoder { + printf("Compression modes: 0b%b", mode) + } + b.output, err = llEnc.writeCount(b.output) + if err != nil { + return err + } + start := len(b.output) + b.output, err = ofEnc.writeCount(b.output) + if err != nil { + return err + } + if false { + println("block:", b.output[start:], "tablelog", ofEnc.actualTableLog, "maxcount:", ofEnc.maxCount) + fmt.Printf("selected TableLog: %d, Symbol length: %d\n", ofEnc.actualTableLog, ofEnc.symbolLen) + for i, v := range ofEnc.norm[:ofEnc.symbolLen] { + fmt.Printf("%3d: %5d -> %4d \n", i, ofEnc.count[i], v) + } + } + b.output, err = mlEnc.writeCount(b.output) + if err != nil { + return err + } + + // Maybe in block? + wr := &b.wr + wr.reset(b.output) + + var ll, of, ml cState + + // Current sequence + seq := len(b.sequences) - 1 + s := b.sequences[seq] + llEnc.setBits(llBitsTable[:]) + mlEnc.setBits(mlBitsTable[:]) + ofEnc.setBits(nil) + + llTT, ofTT, mlTT := llEnc.ct.symbolTT[:256], ofEnc.ct.symbolTT[:256], mlEnc.ct.symbolTT[:256] + + // We have 3 bounds checks here (and in the loop). + // Since we are iterating backwards it is kinda hard to avoid. + llB, ofB, mlB := llTT[s.llCode], ofTT[s.ofCode], mlTT[s.mlCode] + ll.init(wr, &llEnc.ct, llB) + of.init(wr, &ofEnc.ct, ofB) + wr.flush32() + ml.init(wr, &mlEnc.ct, mlB) + + // Each of these lookups also generates a bounds check. + wr.addBits32NC(s.litLen, llB.outBits) + wr.addBits32NC(s.matchLen, mlB.outBits) + wr.flush32() + wr.addBits32NC(s.offset, ofB.outBits) + if debugSequences { + println("Encoded seq", seq, s, "codes:", s.llCode, s.mlCode, s.ofCode, "states:", ll.state, ml.state, of.state, "bits:", llB, mlB, ofB) + } + seq-- + // Store sequences in reverse... + for seq >= 0 { + s = b.sequences[seq] + + ofB := ofTT[s.ofCode] + wr.flush32() // tablelog max is below 8 for each, so it will fill max 24 bits. + //of.encode(ofB) + nbBitsOut := (uint32(of.state) + ofB.deltaNbBits) >> 16 + dstState := int32(of.state>>(nbBitsOut&15)) + int32(ofB.deltaFindState) + wr.addBits16NC(of.state, uint8(nbBitsOut)) + of.state = of.stateTable[dstState] + + // Accumulate extra bits. + outBits := ofB.outBits & 31 + extraBits := uint64(s.offset & bitMask32[outBits]) + extraBitsN := outBits + + mlB := mlTT[s.mlCode] + //ml.encode(mlB) + nbBitsOut = (uint32(ml.state) + mlB.deltaNbBits) >> 16 + dstState = int32(ml.state>>(nbBitsOut&15)) + int32(mlB.deltaFindState) + wr.addBits16NC(ml.state, uint8(nbBitsOut)) + ml.state = ml.stateTable[dstState] + + outBits = mlB.outBits & 31 + extraBits = extraBits<> 16 + dstState = int32(ll.state>>(nbBitsOut&15)) + int32(llB.deltaFindState) + wr.addBits16NC(ll.state, uint8(nbBitsOut)) + ll.state = ll.stateTable[dstState] + + outBits = llB.outBits & 31 + extraBits = extraBits<= b.size { + // Discard and encode as raw block. + b.output = b.encodeRawTo(b.output[:bhOffset], org) + b.popOffsets() + b.litEnc.Reuse = huff0.ReusePolicyNone + return nil + } + + // Size is output minus block header. + bh.setSize(uint32(len(b.output)-bhOffset) - 3) + if debugEncoder { + println("Rewriting block header", bh) + } + _ = bh.appendTo(b.output[bhOffset:bhOffset]) + b.coders.setPrev(llEnc, mlEnc, ofEnc) + return nil +} + +var errIncompressible = errors.New("incompressible") + +func (b *blockEnc) genCodes() { + if len(b.sequences) == 0 { + // nothing to do + return + } + if len(b.sequences) > math.MaxUint16 { + panic("can only encode up to 64K sequences") + } + // No bounds checks after here: + llH := b.coders.llEnc.Histogram() + ofH := b.coders.ofEnc.Histogram() + mlH := b.coders.mlEnc.Histogram() + for i := range llH { + llH[i] = 0 + } + for i := range ofH { + ofH[i] = 0 + } + for i := range mlH { + mlH[i] = 0 + } + + var llMax, ofMax, mlMax uint8 + for i := range b.sequences { + seq := &b.sequences[i] + v := llCode(seq.litLen) + seq.llCode = v + llH[v]++ + if v > llMax { + llMax = v + } + + v = ofCode(seq.offset) + seq.ofCode = v + ofH[v]++ + if v > ofMax { + ofMax = v + } + + v = mlCode(seq.matchLen) + seq.mlCode = v + mlH[v]++ + if v > mlMax { + mlMax = v + if debugAsserts && mlMax > maxMatchLengthSymbol { + panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d), matchlen: %d", mlMax, seq.matchLen)) + } + } + } + maxCount := func(a []uint32) int { + var max uint32 + for _, v := range a { + if v > max { + max = v + } + } + return int(max) + } + if debugAsserts && mlMax > maxMatchLengthSymbol { + panic(fmt.Errorf("mlMax > maxMatchLengthSymbol (%d)", mlMax)) + } + if debugAsserts && ofMax > maxOffsetBits { + panic(fmt.Errorf("ofMax > maxOffsetBits (%d)", ofMax)) + } + if debugAsserts && llMax > maxLiteralLengthSymbol { + panic(fmt.Errorf("llMax > maxLiteralLengthSymbol (%d)", llMax)) + } + + b.coders.mlEnc.HistogramFinished(mlMax, maxCount(mlH[:mlMax+1])) + b.coders.ofEnc.HistogramFinished(ofMax, maxCount(ofH[:ofMax+1])) + b.coders.llEnc.HistogramFinished(llMax, maxCount(llH[:llMax+1])) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go b/examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go new file mode 100644 index 0000000..01a01e4 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/blocktype_string.go @@ -0,0 +1,85 @@ +// Code generated by "stringer -type=blockType,literalsBlockType,seqCompMode,tableIndex"; DO NOT EDIT. + +package zstd + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[blockTypeRaw-0] + _ = x[blockTypeRLE-1] + _ = x[blockTypeCompressed-2] + _ = x[blockTypeReserved-3] +} + +const _blockType_name = "blockTypeRawblockTypeRLEblockTypeCompressedblockTypeReserved" + +var _blockType_index = [...]uint8{0, 12, 24, 43, 60} + +func (i blockType) String() string { + if i >= blockType(len(_blockType_index)-1) { + return "blockType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _blockType_name[_blockType_index[i]:_blockType_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[literalsBlockRaw-0] + _ = x[literalsBlockRLE-1] + _ = x[literalsBlockCompressed-2] + _ = x[literalsBlockTreeless-3] +} + +const _literalsBlockType_name = "literalsBlockRawliteralsBlockRLEliteralsBlockCompressedliteralsBlockTreeless" + +var _literalsBlockType_index = [...]uint8{0, 16, 32, 55, 76} + +func (i literalsBlockType) String() string { + if i >= literalsBlockType(len(_literalsBlockType_index)-1) { + return "literalsBlockType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _literalsBlockType_name[_literalsBlockType_index[i]:_literalsBlockType_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[compModePredefined-0] + _ = x[compModeRLE-1] + _ = x[compModeFSE-2] + _ = x[compModeRepeat-3] +} + +const _seqCompMode_name = "compModePredefinedcompModeRLEcompModeFSEcompModeRepeat" + +var _seqCompMode_index = [...]uint8{0, 18, 29, 40, 54} + +func (i seqCompMode) String() string { + if i >= seqCompMode(len(_seqCompMode_index)-1) { + return "seqCompMode(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _seqCompMode_name[_seqCompMode_index[i]:_seqCompMode_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[tableLiteralLengths-0] + _ = x[tableOffsets-1] + _ = x[tableMatchLengths-2] +} + +const _tableIndex_name = "tableLiteralLengthstableOffsetstableMatchLengths" + +var _tableIndex_index = [...]uint8{0, 19, 31, 48} + +func (i tableIndex) String() string { + if i >= tableIndex(len(_tableIndex_index)-1) { + return "tableIndex(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _tableIndex_name[_tableIndex_index[i]:_tableIndex_index[i+1]] +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go new file mode 100644 index 0000000..55a3885 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bytebuf.go @@ -0,0 +1,131 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "fmt" + "io" +) + +type byteBuffer interface { + // Read up to 8 bytes. + // Returns io.ErrUnexpectedEOF if this cannot be satisfied. + readSmall(n int) ([]byte, error) + + // Read >8 bytes. + // MAY use the destination slice. + readBig(n int, dst []byte) ([]byte, error) + + // Read a single byte. + readByte() (byte, error) + + // Skip n bytes. + skipN(n int64) error +} + +// in-memory buffer +type byteBuf []byte + +func (b *byteBuf) readSmall(n int) ([]byte, error) { + if debugAsserts && n > 8 { + panic(fmt.Errorf("small read > 8 (%d). use readBig", n)) + } + bb := *b + if len(bb) < n { + return nil, io.ErrUnexpectedEOF + } + r := bb[:n] + *b = bb[n:] + return r, nil +} + +func (b *byteBuf) readBig(n int, dst []byte) ([]byte, error) { + bb := *b + if len(bb) < n { + return nil, io.ErrUnexpectedEOF + } + r := bb[:n] + *b = bb[n:] + return r, nil +} + +func (b *byteBuf) readByte() (byte, error) { + bb := *b + if len(bb) < 1 { + return 0, io.ErrUnexpectedEOF + } + r := bb[0] + *b = bb[1:] + return r, nil +} + +func (b *byteBuf) skipN(n int64) error { + bb := *b + if n < 0 { + return fmt.Errorf("negative skip (%d) requested", n) + } + if int64(len(bb)) < n { + return io.ErrUnexpectedEOF + } + *b = bb[n:] + return nil +} + +// wrapper around a reader. +type readerWrapper struct { + r io.Reader + tmp [8]byte +} + +func (r *readerWrapper) readSmall(n int) ([]byte, error) { + if debugAsserts && n > 8 { + panic(fmt.Errorf("small read > 8 (%d). use readBig", n)) + } + n2, err := io.ReadFull(r.r, r.tmp[:n]) + // We only really care about the actual bytes read. + if err != nil { + if err == io.EOF { + return nil, io.ErrUnexpectedEOF + } + if debugDecoder { + println("readSmall: got", n2, "want", n, "err", err) + } + return nil, err + } + return r.tmp[:n], nil +} + +func (r *readerWrapper) readBig(n int, dst []byte) ([]byte, error) { + if cap(dst) < n { + dst = make([]byte, n) + } + n2, err := io.ReadFull(r.r, dst[:n]) + if err == io.EOF && n > 0 { + err = io.ErrUnexpectedEOF + } + return dst[:n2], err +} + +func (r *readerWrapper) readByte() (byte, error) { + n2, err := io.ReadFull(r.r, r.tmp[:1]) + if err != nil { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + return 0, err + } + if n2 != 1 { + return 0, io.ErrUnexpectedEOF + } + return r.tmp[0], nil +} + +func (r *readerWrapper) skipN(n int64) error { + n2, err := io.CopyN(io.Discard, r.r, n) + if n2 != n { + err = io.ErrUnexpectedEOF + } + return err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go b/examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go new file mode 100644 index 0000000..0e59a24 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/bytereader.go @@ -0,0 +1,82 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +// byteReader provides a byte reader that reads +// little endian values from a byte stream. +// The input stream is manually advanced. +// The reader performs no bounds checks. +type byteReader struct { + b []byte + off int +} + +// advance the stream b n bytes. +func (b *byteReader) advance(n uint) { + b.off += int(n) +} + +// overread returns whether we have advanced too far. +func (b *byteReader) overread() bool { + return b.off > len(b.b) +} + +// Int32 returns a little endian int32 starting at current offset. +func (b byteReader) Int32() int32 { + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := int32(b2[3]) + v2 := int32(b2[2]) + v1 := int32(b2[1]) + v0 := int32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// Uint8 returns the next byte +func (b *byteReader) Uint8() uint8 { + v := b.b[b.off] + return v +} + +// Uint32 returns a little endian uint32 starting at current offset. +func (b byteReader) Uint32() uint32 { + if r := b.remain(); r < 4 { + // Very rare + v := uint32(0) + for i := 1; i <= r; i++ { + v = (v << 8) | uint32(b.b[len(b.b)-i]) + } + return v + } + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := uint32(b2[3]) + v2 := uint32(b2[2]) + v1 := uint32(b2[1]) + v0 := uint32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// Uint32NC returns a little endian uint32 starting at current offset. +// The caller must be sure if there are at least 4 bytes left. +func (b byteReader) Uint32NC() uint32 { + b2 := b.b[b.off:] + b2 = b2[:4] + v3 := uint32(b2[3]) + v2 := uint32(b2[2]) + v1 := uint32(b2[1]) + v0 := uint32(b2[0]) + return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) +} + +// unread returns the unread portion of the input. +func (b byteReader) unread() []byte { + return b.b[b.off:] +} + +// remain will return the number of bytes remaining. +func (b byteReader) remain() int { + return len(b.b) - b.off +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go b/examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go new file mode 100644 index 0000000..6a5a298 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/decodeheader.go @@ -0,0 +1,261 @@ +// Copyright 2020+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +import ( + "encoding/binary" + "errors" + "io" +) + +// HeaderMaxSize is the maximum size of a Frame and Block Header. +// If less is sent to Header.Decode it *may* still contain enough information. +const HeaderMaxSize = 14 + 3 + +// Header contains information about the first frame and block within that. +type Header struct { + // SingleSegment specifies whether the data is to be decompressed into a + // single contiguous memory segment. + // It implies that WindowSize is invalid and that FrameContentSize is valid. + SingleSegment bool + + // WindowSize is the window of data to keep while decoding. + // Will only be set if SingleSegment is false. + WindowSize uint64 + + // Dictionary ID. + // If 0, no dictionary. + DictionaryID uint32 + + // HasFCS specifies whether FrameContentSize has a valid value. + HasFCS bool + + // FrameContentSize is the expected uncompressed size of the entire frame. + FrameContentSize uint64 + + // Skippable will be true if the frame is meant to be skipped. + // This implies that FirstBlock.OK is false. + Skippable bool + + // SkippableID is the user-specific ID for the skippable frame. + // Valid values are between 0 to 15, inclusive. + SkippableID int + + // SkippableSize is the length of the user data to skip following + // the header. + SkippableSize uint32 + + // HeaderSize is the raw size of the frame header. + // + // For normal frames, it includes the size of the magic number and + // the size of the header (per section 3.1.1.1). + // It does not include the size for any data blocks (section 3.1.1.2) nor + // the size for the trailing content checksum. + // + // For skippable frames, this counts the size of the magic number + // along with the size of the size field of the payload. + // It does not include the size of the skippable payload itself. + // The total frame size is the HeaderSize plus the SkippableSize. + HeaderSize int + + // First block information. + FirstBlock struct { + // OK will be set if first block could be decoded. + OK bool + + // Is this the last block of a frame? + Last bool + + // Is the data compressed? + // If true CompressedSize will be populated. + // Unfortunately DecompressedSize cannot be determined + // without decoding the blocks. + Compressed bool + + // DecompressedSize is the expected decompressed size of the block. + // Will be 0 if it cannot be determined. + DecompressedSize int + + // CompressedSize of the data in the block. + // Does not include the block header. + // Will be equal to DecompressedSize if not Compressed. + CompressedSize int + } + + // If set there is a checksum present for the block content. + // The checksum field at the end is always 4 bytes long. + HasCheckSum bool +} + +// Decode the header from the beginning of the stream. +// This will decode the frame header and the first block header if enough bytes are provided. +// It is recommended to provide at least HeaderMaxSize bytes. +// If the frame header cannot be read an error will be returned. +// If there isn't enough input, io.ErrUnexpectedEOF is returned. +// The FirstBlock.OK will indicate if enough information was available to decode the first block header. +func (h *Header) Decode(in []byte) error { + _, err := h.DecodeAndStrip(in) + return err +} + +// DecodeAndStrip will decode the header from the beginning of the stream +// and on success return the remaining bytes. +// This will decode the frame header and the first block header if enough bytes are provided. +// It is recommended to provide at least HeaderMaxSize bytes. +// If the frame header cannot be read an error will be returned. +// If there isn't enough input, io.ErrUnexpectedEOF is returned. +// The FirstBlock.OK will indicate if enough information was available to decode the first block header. +func (h *Header) DecodeAndStrip(in []byte) (remain []byte, err error) { + *h = Header{} + if len(in) < 4 { + return nil, io.ErrUnexpectedEOF + } + h.HeaderSize += 4 + b, in := in[:4], in[4:] + if string(b) != frameMagic { + if string(b[1:4]) != skippableFrameMagic || b[0]&0xf0 != 0x50 { + return nil, ErrMagicMismatch + } + if len(in) < 4 { + return nil, io.ErrUnexpectedEOF + } + h.HeaderSize += 4 + h.Skippable = true + h.SkippableID = int(b[0] & 0xf) + h.SkippableSize = binary.LittleEndian.Uint32(in) + return in[4:], nil + } + + // Read Window_Descriptor + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#window_descriptor + if len(in) < 1 { + return nil, io.ErrUnexpectedEOF + } + fhd, in := in[0], in[1:] + h.HeaderSize++ + h.SingleSegment = fhd&(1<<5) != 0 + h.HasCheckSum = fhd&(1<<2) != 0 + if fhd&(1<<3) != 0 { + return nil, errors.New("reserved bit set on frame header") + } + + if !h.SingleSegment { + if len(in) < 1 { + return nil, io.ErrUnexpectedEOF + } + var wd byte + wd, in = in[0], in[1:] + h.HeaderSize++ + windowLog := 10 + (wd >> 3) + windowBase := uint64(1) << windowLog + windowAdd := (windowBase / 8) * uint64(wd&0x7) + h.WindowSize = windowBase + windowAdd + } + + // Read Dictionary_ID + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary_id + if size := fhd & 3; size != 0 { + if size == 3 { + size = 4 + } + if len(in) < int(size) { + return nil, io.ErrUnexpectedEOF + } + b, in = in[:size], in[size:] + h.HeaderSize += int(size) + switch len(b) { + case 1: + h.DictionaryID = uint32(b[0]) + case 2: + h.DictionaryID = uint32(b[0]) | (uint32(b[1]) << 8) + case 4: + h.DictionaryID = uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + } + } + + // Read Frame_Content_Size + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frame_content_size + var fcsSize int + v := fhd >> 6 + switch v { + case 0: + if h.SingleSegment { + fcsSize = 1 + } + default: + fcsSize = 1 << v + } + + if fcsSize > 0 { + h.HasFCS = true + if len(in) < fcsSize { + return nil, io.ErrUnexpectedEOF + } + b, in = in[:fcsSize], in[fcsSize:] + h.HeaderSize += int(fcsSize) + switch len(b) { + case 1: + h.FrameContentSize = uint64(b[0]) + case 2: + // When FCS_Field_Size is 2, the offset of 256 is added. + h.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) + 256 + case 4: + h.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) | (uint64(b[2]) << 16) | (uint64(b[3]) << 24) + case 8: + d1 := uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + d2 := uint32(b[4]) | (uint32(b[5]) << 8) | (uint32(b[6]) << 16) | (uint32(b[7]) << 24) + h.FrameContentSize = uint64(d1) | (uint64(d2) << 32) + } + } + + // Frame Header done, we will not fail from now on. + if len(in) < 3 { + return in, nil + } + tmp := in[:3] + bh := uint32(tmp[0]) | (uint32(tmp[1]) << 8) | (uint32(tmp[2]) << 16) + h.FirstBlock.Last = bh&1 != 0 + blockType := blockType((bh >> 1) & 3) + // find size. + cSize := int(bh >> 3) + switch blockType { + case blockTypeReserved: + return in, nil + case blockTypeRLE: + h.FirstBlock.Compressed = true + h.FirstBlock.DecompressedSize = cSize + h.FirstBlock.CompressedSize = 1 + case blockTypeCompressed: + h.FirstBlock.Compressed = true + h.FirstBlock.CompressedSize = cSize + case blockTypeRaw: + h.FirstBlock.DecompressedSize = cSize + h.FirstBlock.CompressedSize = cSize + default: + panic("Invalid block type") + } + + h.FirstBlock.OK = true + return in, nil +} + +// AppendTo will append the encoded header to the dst slice. +// There is no error checking performed on the header values. +func (h *Header) AppendTo(dst []byte) ([]byte, error) { + if h.Skippable { + magic := [4]byte{0x50, 0x2a, 0x4d, 0x18} + magic[0] |= byte(h.SkippableID & 0xf) + dst = append(dst, magic[:]...) + f := h.SkippableSize + return append(dst, uint8(f), uint8(f>>8), uint8(f>>16), uint8(f>>24)), nil + } + f := frameHeader{ + ContentSize: h.FrameContentSize, + WindowSize: uint32(h.WindowSize), + SingleSegment: h.SingleSegment, + Checksum: h.HasCheckSum, + DictID: h.DictionaryID, + } + return f.appendTo(dst), nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go new file mode 100644 index 0000000..bbca172 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder.go @@ -0,0 +1,948 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "context" + "encoding/binary" + "io" + "sync" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +// Decoder provides decoding of zstandard streams. +// The decoder has been designed to operate without allocations after a warmup. +// This means that you should store the decoder for best performance. +// To re-use a stream decoder, use the Reset(r io.Reader) error to switch to another stream. +// A decoder can safely be re-used even if the previous stream failed. +// To release the resources, you must call the Close() function on a decoder. +type Decoder struct { + o decoderOptions + + // Unreferenced decoders, ready for use. + decoders chan *blockDec + + // Current read position used for Reader functionality. + current decoderState + + // sync stream decoding + syncStream struct { + decodedFrame uint64 + br readerWrapper + enabled bool + inFrame bool + dstBuf []byte + } + + frame *frameDec + + // Custom dictionaries. + dicts map[uint32]*dict + + // streamWg is the waitgroup for all streams + streamWg sync.WaitGroup +} + +// decoderState is used for maintaining state when the decoder +// is used for streaming. +type decoderState struct { + // current block being written to stream. + decodeOutput + + // output in order to be written to stream. + output chan decodeOutput + + // cancel remaining output. + cancel context.CancelFunc + + // crc of current frame + crc *xxhash.Digest + + flushed bool +} + +var ( + // Check the interfaces we want to support. + _ = io.WriterTo(&Decoder{}) + _ = io.Reader(&Decoder{}) +) + +// NewReader creates a new decoder. +// A nil Reader can be provided in which case Reset can be used to start a decode. +// +// A Decoder can be used in two modes: +// +// 1) As a stream, or +// 2) For stateless decoding using DecodeAll. +// +// Only a single stream can be decoded concurrently, but the same decoder +// can run multiple concurrent stateless decodes. It is even possible to +// use stateless decodes while a stream is being decoded. +// +// The Reset function can be used to initiate a new stream, which will considerably +// reduce the allocations normally caused by NewReader. +func NewReader(r io.Reader, opts ...DOption) (*Decoder, error) { + initPredefined() + var d Decoder + d.o.setDefault() + for _, o := range opts { + err := o(&d.o) + if err != nil { + return nil, err + } + } + d.current.crc = xxhash.New() + d.current.flushed = true + + if r == nil { + d.current.err = ErrDecoderNilInput + } + + // Transfer option dicts. + d.dicts = make(map[uint32]*dict, len(d.o.dicts)) + for _, dc := range d.o.dicts { + d.dicts[dc.id] = dc + } + d.o.dicts = nil + + // Create decoders + d.decoders = make(chan *blockDec, d.o.concurrent) + for i := 0; i < d.o.concurrent; i++ { + dec := newBlockDec(d.o.lowMem) + dec.localFrame = newFrameDec(d.o) + d.decoders <- dec + } + + if r == nil { + return &d, nil + } + return &d, d.Reset(r) +} + +// Read bytes from the decompressed stream into p. +// Returns the number of bytes written and any error that occurred. +// When the stream is done, io.EOF will be returned. +func (d *Decoder) Read(p []byte) (int, error) { + var n int + for { + if len(d.current.b) > 0 { + filled := copy(p, d.current.b) + p = p[filled:] + d.current.b = d.current.b[filled:] + n += filled + } + if len(p) == 0 { + break + } + if len(d.current.b) == 0 { + // We have an error and no more data + if d.current.err != nil { + break + } + if !d.nextBlock(n == 0) { + return n, d.current.err + } + } + } + if len(d.current.b) > 0 { + if debugDecoder { + println("returning", n, "still bytes left:", len(d.current.b)) + } + // Only return error at end of block + return n, nil + } + if d.current.err != nil { + d.drainOutput() + } + if debugDecoder { + println("returning", n, d.current.err, len(d.decoders)) + } + return n, d.current.err +} + +// Reset will reset the decoder the supplied stream after the current has finished processing. +// Note that this functionality cannot be used after Close has been called. +// Reset can be called with a nil reader to release references to the previous reader. +// After being called with a nil reader, no other operations than Reset or DecodeAll or Close +// should be used. +func (d *Decoder) Reset(r io.Reader) error { + if d.current.err == ErrDecoderClosed { + return d.current.err + } + + d.drainOutput() + + d.syncStream.br.r = nil + if r == nil { + d.current.err = ErrDecoderNilInput + if len(d.current.b) > 0 { + d.current.b = d.current.b[:0] + } + d.current.flushed = true + return nil + } + + // If bytes buffer and < 5MB, do sync decoding anyway. + if bb, ok := r.(byter); ok && bb.Len() < d.o.decodeBufsBelow && !d.o.limitToCap { + bb2 := bb + if debugDecoder { + println("*bytes.Buffer detected, doing sync decode, len:", bb.Len()) + } + b := bb2.Bytes() + var dst []byte + if cap(d.syncStream.dstBuf) > 0 { + dst = d.syncStream.dstBuf[:0] + } + + dst, err := d.DecodeAll(b, dst) + if err == nil { + err = io.EOF + } + // Save output buffer + d.syncStream.dstBuf = dst + d.current.b = dst + d.current.err = err + d.current.flushed = true + if debugDecoder { + println("sync decode to", len(dst), "bytes, err:", err) + } + return nil + } + // Remove current block. + d.stashDecoder() + d.current.decodeOutput = decodeOutput{} + d.current.err = nil + d.current.flushed = false + d.current.d = nil + d.syncStream.dstBuf = nil + + // Ensure no-one else is still running... + d.streamWg.Wait() + if d.frame == nil { + d.frame = newFrameDec(d.o) + } + + if d.o.concurrent == 1 { + return d.startSyncDecoder(r) + } + + d.current.output = make(chan decodeOutput, d.o.concurrent) + ctx, cancel := context.WithCancel(context.Background()) + d.current.cancel = cancel + d.streamWg.Add(1) + go d.startStreamDecoder(ctx, r, d.current.output) + + return nil +} + +// drainOutput will drain the output until errEndOfStream is sent. +func (d *Decoder) drainOutput() { + if d.current.cancel != nil { + if debugDecoder { + println("cancelling current") + } + d.current.cancel() + d.current.cancel = nil + } + if d.current.d != nil { + if debugDecoder { + printf("re-adding current decoder %p, decoders: %d", d.current.d, len(d.decoders)) + } + d.decoders <- d.current.d + d.current.d = nil + d.current.b = nil + } + if d.current.output == nil || d.current.flushed { + println("current already flushed") + return + } + for v := range d.current.output { + if v.d != nil { + if debugDecoder { + printf("re-adding decoder %p", v.d) + } + d.decoders <- v.d + } + } + d.current.output = nil + d.current.flushed = true +} + +// WriteTo writes data to w until there's no more data to write or when an error occurs. +// The return value n is the number of bytes written. +// Any error encountered during the write is also returned. +func (d *Decoder) WriteTo(w io.Writer) (int64, error) { + var n int64 + for { + if len(d.current.b) > 0 { + n2, err2 := w.Write(d.current.b) + n += int64(n2) + if err2 != nil && (d.current.err == nil || d.current.err == io.EOF) { + d.current.err = err2 + } else if n2 != len(d.current.b) { + d.current.err = io.ErrShortWrite + } + } + if d.current.err != nil { + break + } + d.nextBlock(true) + } + err := d.current.err + if err != nil { + d.drainOutput() + } + if err == io.EOF { + err = nil + } + return n, err +} + +// DecodeAll allows stateless decoding of a blob of bytes. +// Output will be appended to dst, so if the destination size is known +// you can pre-allocate the destination slice to avoid allocations. +// DecodeAll can be used concurrently. +// The Decoder concurrency limits will be respected. +func (d *Decoder) DecodeAll(input, dst []byte) ([]byte, error) { + if d.decoders == nil { + return dst, ErrDecoderClosed + } + + // Grab a block decoder and frame decoder. + block := <-d.decoders + frame := block.localFrame + initialSize := len(dst) + defer func() { + if debugDecoder { + printf("re-adding decoder: %p", block) + } + frame.rawInput = nil + frame.bBuf = nil + if frame.history.decoders.br != nil { + frame.history.decoders.br.in = nil + } + d.decoders <- block + }() + frame.bBuf = input + + for { + frame.history.reset() + err := frame.reset(&frame.bBuf) + if err != nil { + if err == io.EOF { + if debugDecoder { + println("frame reset return EOF") + } + return dst, nil + } + return dst, err + } + if err = d.setDict(frame); err != nil { + return nil, err + } + if frame.WindowSize > d.o.maxWindowSize { + if debugDecoder { + println("window size exceeded:", frame.WindowSize, ">", d.o.maxWindowSize) + } + return dst, ErrWindowSizeExceeded + } + if frame.FrameContentSize != fcsUnknown { + if frame.FrameContentSize > d.o.maxDecodedSize-uint64(len(dst)-initialSize) { + if debugDecoder { + println("decoder size exceeded; fcs:", frame.FrameContentSize, "> mcs:", d.o.maxDecodedSize-uint64(len(dst)-initialSize), "len:", len(dst)) + } + return dst, ErrDecoderSizeExceeded + } + if d.o.limitToCap && frame.FrameContentSize > uint64(cap(dst)-len(dst)) { + if debugDecoder { + println("decoder size exceeded; fcs:", frame.FrameContentSize, "> (cap-len)", cap(dst)-len(dst)) + } + return dst, ErrDecoderSizeExceeded + } + if cap(dst)-len(dst) < int(frame.FrameContentSize) { + dst2 := make([]byte, len(dst), len(dst)+int(frame.FrameContentSize)+compressedBlockOverAlloc) + copy(dst2, dst) + dst = dst2 + } + } + + if cap(dst) == 0 && !d.o.limitToCap { + // Allocate len(input) * 2 by default if nothing is provided + // and we didn't get frame content size. + size := len(input) * 2 + // Cap to 1 MB. + if size > 1<<20 { + size = 1 << 20 + } + if uint64(size) > d.o.maxDecodedSize { + size = int(d.o.maxDecodedSize) + } + dst = make([]byte, 0, size) + } + + dst, err = frame.runDecoder(dst, block) + if err != nil { + return dst, err + } + if uint64(len(dst)-initialSize) > d.o.maxDecodedSize { + return dst, ErrDecoderSizeExceeded + } + if len(frame.bBuf) == 0 { + if debugDecoder { + println("frame dbuf empty") + } + break + } + } + return dst, nil +} + +// nextBlock returns the next block. +// If an error occurs d.err will be set. +// Optionally the function can block for new output. +// If non-blocking mode is used the returned boolean will be false +// if no data was available without blocking. +func (d *Decoder) nextBlock(blocking bool) (ok bool) { + if d.current.err != nil { + // Keep error state. + return false + } + d.current.b = d.current.b[:0] + + // SYNC: + if d.syncStream.enabled { + if !blocking { + return false + } + ok = d.nextBlockSync() + if !ok { + d.stashDecoder() + } + return ok + } + + //ASYNC: + d.stashDecoder() + if blocking { + d.current.decodeOutput, ok = <-d.current.output + } else { + select { + case d.current.decodeOutput, ok = <-d.current.output: + default: + return false + } + } + if !ok { + // This should not happen, so signal error state... + d.current.err = io.ErrUnexpectedEOF + return false + } + next := d.current.decodeOutput + if next.d != nil && next.d.async.newHist != nil { + d.current.crc.Reset() + } + if debugDecoder { + var tmp [4]byte + binary.LittleEndian.PutUint32(tmp[:], uint32(xxhash.Sum64(next.b))) + println("got", len(d.current.b), "bytes, error:", d.current.err, "data crc:", tmp) + } + + if d.o.ignoreChecksum { + return true + } + + if len(next.b) > 0 { + d.current.crc.Write(next.b) + } + if next.err == nil && next.d != nil && next.d.hasCRC { + got := uint32(d.current.crc.Sum64()) + if got != next.d.checkCRC { + if debugDecoder { + printf("CRC Check Failed: %08x (got) != %08x (on stream)\n", got, next.d.checkCRC) + } + d.current.err = ErrCRCMismatch + } else { + if debugDecoder { + printf("CRC ok %08x\n", got) + } + } + } + + return true +} + +func (d *Decoder) nextBlockSync() (ok bool) { + if d.current.d == nil { + d.current.d = <-d.decoders + } + for len(d.current.b) == 0 { + if !d.syncStream.inFrame { + d.frame.history.reset() + d.current.err = d.frame.reset(&d.syncStream.br) + if d.current.err == nil { + d.current.err = d.setDict(d.frame) + } + if d.current.err != nil { + return false + } + if d.frame.WindowSize > d.o.maxDecodedSize || d.frame.WindowSize > d.o.maxWindowSize { + d.current.err = ErrDecoderSizeExceeded + return false + } + + d.syncStream.decodedFrame = 0 + d.syncStream.inFrame = true + } + d.current.err = d.frame.next(d.current.d) + if d.current.err != nil { + return false + } + d.frame.history.ensureBlock() + if debugDecoder { + println("History trimmed:", len(d.frame.history.b), "decoded already:", d.syncStream.decodedFrame) + } + histBefore := len(d.frame.history.b) + d.current.err = d.current.d.decodeBuf(&d.frame.history) + + if d.current.err != nil { + println("error after:", d.current.err) + return false + } + d.current.b = d.frame.history.b[histBefore:] + if debugDecoder { + println("history after:", len(d.frame.history.b)) + } + + // Check frame size (before CRC) + d.syncStream.decodedFrame += uint64(len(d.current.b)) + if d.syncStream.decodedFrame > d.frame.FrameContentSize { + if debugDecoder { + printf("DecodedFrame (%d) > FrameContentSize (%d)\n", d.syncStream.decodedFrame, d.frame.FrameContentSize) + } + d.current.err = ErrFrameSizeExceeded + return false + } + + // Check FCS + if d.current.d.Last && d.frame.FrameContentSize != fcsUnknown && d.syncStream.decodedFrame != d.frame.FrameContentSize { + if debugDecoder { + printf("DecodedFrame (%d) != FrameContentSize (%d)\n", d.syncStream.decodedFrame, d.frame.FrameContentSize) + } + d.current.err = ErrFrameSizeMismatch + return false + } + + // Update/Check CRC + if d.frame.HasCheckSum { + if !d.o.ignoreChecksum { + d.frame.crc.Write(d.current.b) + } + if d.current.d.Last { + if !d.o.ignoreChecksum { + d.current.err = d.frame.checkCRC() + } else { + d.current.err = d.frame.consumeCRC() + } + if d.current.err != nil { + println("CRC error:", d.current.err) + return false + } + } + } + d.syncStream.inFrame = !d.current.d.Last + } + return true +} + +func (d *Decoder) stashDecoder() { + if d.current.d != nil { + if debugDecoder { + printf("re-adding current decoder %p", d.current.d) + } + d.decoders <- d.current.d + d.current.d = nil + } +} + +// Close will release all resources. +// It is NOT possible to reuse the decoder after this. +func (d *Decoder) Close() { + if d.current.err == ErrDecoderClosed { + return + } + d.drainOutput() + if d.current.cancel != nil { + d.current.cancel() + d.streamWg.Wait() + d.current.cancel = nil + } + if d.decoders != nil { + close(d.decoders) + for dec := range d.decoders { + dec.Close() + } + d.decoders = nil + } + if d.current.d != nil { + d.current.d.Close() + d.current.d = nil + } + d.current.err = ErrDecoderClosed +} + +// IOReadCloser returns the decoder as an io.ReadCloser for convenience. +// Any changes to the decoder will be reflected, so the returned ReadCloser +// can be reused along with the decoder. +// io.WriterTo is also supported by the returned ReadCloser. +func (d *Decoder) IOReadCloser() io.ReadCloser { + return closeWrapper{d: d} +} + +// closeWrapper wraps a function call as a closer. +type closeWrapper struct { + d *Decoder +} + +// WriteTo forwards WriteTo calls to the decoder. +func (c closeWrapper) WriteTo(w io.Writer) (n int64, err error) { + return c.d.WriteTo(w) +} + +// Read forwards read calls to the decoder. +func (c closeWrapper) Read(p []byte) (n int, err error) { + return c.d.Read(p) +} + +// Close closes the decoder. +func (c closeWrapper) Close() error { + c.d.Close() + return nil +} + +type decodeOutput struct { + d *blockDec + b []byte + err error +} + +func (d *Decoder) startSyncDecoder(r io.Reader) error { + d.frame.history.reset() + d.syncStream.br = readerWrapper{r: r} + d.syncStream.inFrame = false + d.syncStream.enabled = true + d.syncStream.decodedFrame = 0 + return nil +} + +// Create Decoder: +// ASYNC: +// Spawn 3 go routines. +// 0: Read frames and decode block literals. +// 1: Decode sequences. +// 2: Execute sequences, send to output. +func (d *Decoder) startStreamDecoder(ctx context.Context, r io.Reader, output chan decodeOutput) { + defer d.streamWg.Done() + br := readerWrapper{r: r} + + var seqDecode = make(chan *blockDec, d.o.concurrent) + var seqExecute = make(chan *blockDec, d.o.concurrent) + + // Async 1: Decode sequences... + go func() { + var hist history + var hasErr bool + + for block := range seqDecode { + if hasErr { + if block != nil { + seqExecute <- block + } + continue + } + if block.async.newHist != nil { + if debugDecoder { + println("Async 1: new history, recent:", block.async.newHist.recentOffsets) + } + hist.reset() + hist.decoders = block.async.newHist.decoders + hist.recentOffsets = block.async.newHist.recentOffsets + hist.windowSize = block.async.newHist.windowSize + if block.async.newHist.dict != nil { + hist.setDict(block.async.newHist.dict) + } + } + if block.err != nil || block.Type != blockTypeCompressed { + hasErr = block.err != nil + seqExecute <- block + continue + } + + hist.decoders.literals = block.async.literals + block.err = block.prepareSequences(block.async.seqData, &hist) + if debugDecoder && block.err != nil { + println("prepareSequences returned:", block.err) + } + hasErr = block.err != nil + if block.err == nil { + block.err = block.decodeSequences(&hist) + if debugDecoder && block.err != nil { + println("decodeSequences returned:", block.err) + } + hasErr = block.err != nil + // block.async.sequence = hist.decoders.seq[:hist.decoders.nSeqs] + block.async.seqSize = hist.decoders.seqSize + } + seqExecute <- block + } + close(seqExecute) + hist.reset() + }() + + var wg sync.WaitGroup + wg.Add(1) + + // Async 3: Execute sequences... + frameHistCache := d.frame.history.b + go func() { + var hist history + var decodedFrame uint64 + var fcs uint64 + var hasErr bool + for block := range seqExecute { + out := decodeOutput{err: block.err, d: block} + if block.err != nil || hasErr { + hasErr = true + output <- out + continue + } + if block.async.newHist != nil { + if debugDecoder { + println("Async 2: new history") + } + hist.reset() + hist.windowSize = block.async.newHist.windowSize + hist.allocFrameBuffer = block.async.newHist.allocFrameBuffer + if block.async.newHist.dict != nil { + hist.setDict(block.async.newHist.dict) + } + + if cap(hist.b) < hist.allocFrameBuffer { + if cap(frameHistCache) >= hist.allocFrameBuffer { + hist.b = frameHistCache + } else { + hist.b = make([]byte, 0, hist.allocFrameBuffer) + println("Alloc history sized", hist.allocFrameBuffer) + } + } + hist.b = hist.b[:0] + fcs = block.async.fcs + decodedFrame = 0 + } + do := decodeOutput{err: block.err, d: block} + switch block.Type { + case blockTypeRLE: + if debugDecoder { + println("add rle block length:", block.RLESize) + } + + if cap(block.dst) < int(block.RLESize) { + if block.lowMem { + block.dst = make([]byte, block.RLESize) + } else { + block.dst = make([]byte, maxCompressedBlockSize) + } + } + block.dst = block.dst[:block.RLESize] + v := block.data[0] + for i := range block.dst { + block.dst[i] = v + } + hist.append(block.dst) + do.b = block.dst + case blockTypeRaw: + if debugDecoder { + println("add raw block length:", len(block.data)) + } + hist.append(block.data) + do.b = block.data + case blockTypeCompressed: + if debugDecoder { + println("execute with history length:", len(hist.b), "window:", hist.windowSize) + } + hist.decoders.seqSize = block.async.seqSize + hist.decoders.literals = block.async.literals + do.err = block.executeSequences(&hist) + hasErr = do.err != nil + if debugDecoder && hasErr { + println("executeSequences returned:", do.err) + } + do.b = block.dst + } + if !hasErr { + decodedFrame += uint64(len(do.b)) + if decodedFrame > fcs { + println("fcs exceeded", block.Last, fcs, decodedFrame) + do.err = ErrFrameSizeExceeded + hasErr = true + } else if block.Last && fcs != fcsUnknown && decodedFrame != fcs { + do.err = ErrFrameSizeMismatch + hasErr = true + } else { + if debugDecoder { + println("fcs ok", block.Last, fcs, decodedFrame) + } + } + } + output <- do + } + close(output) + frameHistCache = hist.b + wg.Done() + if debugDecoder { + println("decoder goroutines finished") + } + hist.reset() + }() + + var hist history +decodeStream: + for { + var hasErr bool + hist.reset() + decodeBlock := func(block *blockDec) { + if hasErr { + if block != nil { + seqDecode <- block + } + return + } + if block.err != nil || block.Type != blockTypeCompressed { + hasErr = block.err != nil + seqDecode <- block + return + } + + remain, err := block.decodeLiterals(block.data, &hist) + block.err = err + hasErr = block.err != nil + if err == nil { + block.async.literals = hist.decoders.literals + block.async.seqData = remain + } else if debugDecoder { + println("decodeLiterals error:", err) + } + seqDecode <- block + } + frame := d.frame + if debugDecoder { + println("New frame...") + } + var historySent bool + frame.history.reset() + err := frame.reset(&br) + if debugDecoder && err != nil { + println("Frame decoder returned", err) + } + if err == nil { + err = d.setDict(frame) + } + if err == nil && d.frame.WindowSize > d.o.maxWindowSize { + if debugDecoder { + println("decoder size exceeded, fws:", d.frame.WindowSize, "> mws:", d.o.maxWindowSize) + } + + err = ErrDecoderSizeExceeded + } + if err != nil { + select { + case <-ctx.Done(): + case dec := <-d.decoders: + dec.sendErr(err) + decodeBlock(dec) + } + break decodeStream + } + + // Go through all blocks of the frame. + for { + var dec *blockDec + select { + case <-ctx.Done(): + break decodeStream + case dec = <-d.decoders: + // Once we have a decoder, we MUST return it. + } + err := frame.next(dec) + if !historySent { + h := frame.history + if debugDecoder { + println("Alloc History:", h.allocFrameBuffer) + } + hist.reset() + if h.dict != nil { + hist.setDict(h.dict) + } + dec.async.newHist = &h + dec.async.fcs = frame.FrameContentSize + historySent = true + } else { + dec.async.newHist = nil + } + if debugDecoder && err != nil { + println("next block returned error:", err) + } + dec.err = err + dec.hasCRC = false + if dec.Last && frame.HasCheckSum && err == nil { + crc, err := frame.rawInput.readSmall(4) + if len(crc) < 4 { + if err == nil { + err = io.ErrUnexpectedEOF + + } + println("CRC missing?", err) + dec.err = err + } else { + dec.checkCRC = binary.LittleEndian.Uint32(crc) + dec.hasCRC = true + if debugDecoder { + printf("found crc to check: %08x\n", dec.checkCRC) + } + } + } + err = dec.err + last := dec.Last + decodeBlock(dec) + if err != nil { + break decodeStream + } + if last { + break + } + } + } + close(seqDecode) + wg.Wait() + hist.reset() + d.frame.history.b = frameHistCache +} + +func (d *Decoder) setDict(frame *frameDec) (err error) { + dict, ok := d.dicts[frame.DictionaryID] + if ok { + if debugDecoder { + println("setting dict", frame.DictionaryID) + } + frame.history.setDict(dict) + } else if frame.DictionaryID != 0 { + // A zero or missing dictionary id is ambiguous: + // either dictionary zero, or no dictionary. In particular, + // zstd --patch-from uses this id for the source file, + // so only return an error if the dictionary id is not zero. + err = ErrUnknownDictionary + } + return err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go new file mode 100644 index 0000000..774c5f0 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/decoder_options.go @@ -0,0 +1,169 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "math/bits" + "runtime" +) + +// DOption is an option for creating a decoder. +type DOption func(*decoderOptions) error + +// options retains accumulated state of multiple options. +type decoderOptions struct { + lowMem bool + concurrent int + maxDecodedSize uint64 + maxWindowSize uint64 + dicts []*dict + ignoreChecksum bool + limitToCap bool + decodeBufsBelow int +} + +func (o *decoderOptions) setDefault() { + *o = decoderOptions{ + // use less ram: true for now, but may change. + lowMem: true, + concurrent: runtime.GOMAXPROCS(0), + maxWindowSize: MaxWindowSize, + decodeBufsBelow: 128 << 10, + } + if o.concurrent > 4 { + o.concurrent = 4 + } + o.maxDecodedSize = 64 << 30 +} + +// WithDecoderLowmem will set whether to use a lower amount of memory, +// but possibly have to allocate more while running. +func WithDecoderLowmem(b bool) DOption { + return func(o *decoderOptions) error { o.lowMem = b; return nil } +} + +// WithDecoderConcurrency sets the number of created decoders. +// When decoding block with DecodeAll, this will limit the number +// of possible concurrently running decodes. +// When decoding streams, this will limit the number of +// inflight blocks. +// When decoding streams and setting maximum to 1, +// no async decoding will be done. +// When a value of 0 is provided GOMAXPROCS will be used. +// By default this will be set to 4 or GOMAXPROCS, whatever is lower. +func WithDecoderConcurrency(n int) DOption { + return func(o *decoderOptions) error { + if n < 0 { + return errors.New("concurrency must be at least 1") + } + if n == 0 { + o.concurrent = runtime.GOMAXPROCS(0) + } else { + o.concurrent = n + } + return nil + } +} + +// WithDecoderMaxMemory allows to set a maximum decoded size for in-memory +// non-streaming operations or maximum window size for streaming operations. +// This can be used to control memory usage of potentially hostile content. +// Maximum is 1 << 63 bytes. Default is 64GiB. +func WithDecoderMaxMemory(n uint64) DOption { + return func(o *decoderOptions) error { + if n == 0 { + return errors.New("WithDecoderMaxMemory must be at least 1") + } + if n > 1<<63 { + return errors.New("WithDecoderMaxmemory must be less than 1 << 63") + } + o.maxDecodedSize = n + return nil + } +} + +// WithDecoderDicts allows to register one or more dictionaries for the decoder. +// +// Each slice in dict must be in the [dictionary format] produced by +// "zstd --train" from the Zstandard reference implementation. +// +// If several dictionaries with the same ID are provided, the last one will be used. +// +// [dictionary format]: https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format +func WithDecoderDicts(dicts ...[]byte) DOption { + return func(o *decoderOptions) error { + for _, b := range dicts { + d, err := loadDict(b) + if err != nil { + return err + } + o.dicts = append(o.dicts, d) + } + return nil + } +} + +// WithDecoderDictRaw registers a dictionary that may be used by the decoder. +// The slice content can be arbitrary data. +func WithDecoderDictRaw(id uint32, content []byte) DOption { + return func(o *decoderOptions) error { + if bits.UintSize > 32 && uint(len(content)) > dictMaxLength { + return fmt.Errorf("dictionary of size %d > 2GiB too large", len(content)) + } + o.dicts = append(o.dicts, &dict{id: id, content: content, offsets: [3]int{1, 4, 8}}) + return nil + } +} + +// WithDecoderMaxWindow allows to set a maximum window size for decodes. +// This allows rejecting packets that will cause big memory usage. +// The Decoder will likely allocate more memory based on the WithDecoderLowmem setting. +// If WithDecoderMaxMemory is set to a lower value, that will be used. +// Default is 512MB, Maximum is ~3.75 TB as per zstandard spec. +func WithDecoderMaxWindow(size uint64) DOption { + return func(o *decoderOptions) error { + if size < MinWindowSize { + return errors.New("WithMaxWindowSize must be at least 1KB, 1024 bytes") + } + if size > (1<<41)+7*(1<<38) { + return errors.New("WithMaxWindowSize must be less than (1<<41) + 7*(1<<38) ~ 3.75TB") + } + o.maxWindowSize = size + return nil + } +} + +// WithDecodeAllCapLimit will limit DecodeAll to decoding cap(dst)-len(dst) bytes, +// or any size set in WithDecoderMaxMemory. +// This can be used to limit decoding to a specific maximum output size. +// Disabled by default. +func WithDecodeAllCapLimit(b bool) DOption { + return func(o *decoderOptions) error { + o.limitToCap = b + return nil + } +} + +// WithDecodeBuffersBelow will fully decode readers that have a +// `Bytes() []byte` and `Len() int` interface similar to bytes.Buffer. +// This typically uses less allocations but will have the full decompressed object in memory. +// Note that DecodeAllCapLimit will disable this, as well as giving a size of 0 or less. +// Default is 128KiB. +func WithDecodeBuffersBelow(size int) DOption { + return func(o *decoderOptions) error { + o.decodeBufsBelow = size + return nil + } +} + +// IgnoreChecksum allows to forcibly ignore checksum checking. +func IgnoreChecksum(b bool) DOption { + return func(o *decoderOptions) error { + o.ignoreChecksum = b + return nil + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/dict.go b/examples/go/vendor/github.com/klauspost/compress/zstd/dict.go new file mode 100644 index 0000000..b7b8316 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/dict.go @@ -0,0 +1,565 @@ +package zstd + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "math" + "sort" + + "github.com/klauspost/compress/huff0" +) + +type dict struct { + id uint32 + + litEnc *huff0.Scratch + llDec, ofDec, mlDec sequenceDec + offsets [3]int + content []byte +} + +const dictMagic = "\x37\xa4\x30\xec" + +// Maximum dictionary size for the reference implementation (1.5.3) is 2 GiB. +const dictMaxLength = 1 << 31 + +// ID returns the dictionary id or 0 if d is nil. +func (d *dict) ID() uint32 { + if d == nil { + return 0 + } + return d.id +} + +// ContentSize returns the dictionary content size or 0 if d is nil. +func (d *dict) ContentSize() int { + if d == nil { + return 0 + } + return len(d.content) +} + +// Content returns the dictionary content. +func (d *dict) Content() []byte { + if d == nil { + return nil + } + return d.content +} + +// Offsets returns the initial offsets. +func (d *dict) Offsets() [3]int { + if d == nil { + return [3]int{} + } + return d.offsets +} + +// LitEncoder returns the literal encoder. +func (d *dict) LitEncoder() *huff0.Scratch { + if d == nil { + return nil + } + return d.litEnc +} + +// Load a dictionary as described in +// https://github.com/facebook/zstd/blob/master/doc/zstd_compression_format.md#dictionary-format +func loadDict(b []byte) (*dict, error) { + // Check static field size. + if len(b) <= 8+(3*4) { + return nil, io.ErrUnexpectedEOF + } + d := dict{ + llDec: sequenceDec{fse: &fseDecoder{}}, + ofDec: sequenceDec{fse: &fseDecoder{}}, + mlDec: sequenceDec{fse: &fseDecoder{}}, + } + if string(b[:4]) != dictMagic { + return nil, ErrMagicMismatch + } + d.id = binary.LittleEndian.Uint32(b[4:8]) + if d.id == 0 { + return nil, errors.New("dictionaries cannot have ID 0") + } + + // Read literal table + var err error + d.litEnc, b, err = huff0.ReadTable(b[8:], nil) + if err != nil { + return nil, fmt.Errorf("loading literal table: %w", err) + } + d.litEnc.Reuse = huff0.ReusePolicyMust + + br := byteReader{ + b: b, + off: 0, + } + readDec := func(i tableIndex, dec *fseDecoder) error { + if err := dec.readNCount(&br, uint16(maxTableSymbol[i])); err != nil { + return err + } + if br.overread() { + return io.ErrUnexpectedEOF + } + err = dec.transform(symbolTableX[i]) + if err != nil { + println("Transform table error:", err) + return err + } + if debugDecoder || debugEncoder { + println("Read table ok", "symbolLen:", dec.symbolLen) + } + // Set decoders as predefined so they aren't reused. + dec.preDefined = true + return nil + } + + if err := readDec(tableOffsets, d.ofDec.fse); err != nil { + return nil, err + } + if err := readDec(tableMatchLengths, d.mlDec.fse); err != nil { + return nil, err + } + if err := readDec(tableLiteralLengths, d.llDec.fse); err != nil { + return nil, err + } + if br.remain() < 12 { + return nil, io.ErrUnexpectedEOF + } + + d.offsets[0] = int(br.Uint32()) + br.advance(4) + d.offsets[1] = int(br.Uint32()) + br.advance(4) + d.offsets[2] = int(br.Uint32()) + br.advance(4) + if d.offsets[0] <= 0 || d.offsets[1] <= 0 || d.offsets[2] <= 0 { + return nil, errors.New("invalid offset in dictionary") + } + d.content = make([]byte, br.remain()) + copy(d.content, br.unread()) + if d.offsets[0] > len(d.content) || d.offsets[1] > len(d.content) || d.offsets[2] > len(d.content) { + return nil, fmt.Errorf("initial offset bigger than dictionary content size %d, offsets: %v", len(d.content), d.offsets) + } + + return &d, nil +} + +// InspectDictionary loads a zstd dictionary and provides functions to inspect the content. +func InspectDictionary(b []byte) (interface { + ID() uint32 + ContentSize() int + Content() []byte + Offsets() [3]int + LitEncoder() *huff0.Scratch +}, error) { + initPredefined() + d, err := loadDict(b) + return d, err +} + +type BuildDictOptions struct { + // Dictionary ID. + ID uint32 + + // Content to use to create dictionary tables. + Contents [][]byte + + // History to use for all blocks. + History []byte + + // Offsets to use. + Offsets [3]int + + // CompatV155 will make the dictionary compatible with Zstd v1.5.5 and earlier. + // See https://github.com/facebook/zstd/issues/3724 + CompatV155 bool + + // Use the specified encoder level. + // The dictionary will be built using the specified encoder level, + // which will reflect speed and make the dictionary tailored for that level. + // If not set SpeedBestCompression will be used. + Level EncoderLevel + + // DebugOut will write stats and other details here if set. + DebugOut io.Writer +} + +func BuildDict(o BuildDictOptions) ([]byte, error) { + initPredefined() + hist := o.History + contents := o.Contents + debug := o.DebugOut != nil + println := func(args ...interface{}) { + if o.DebugOut != nil { + fmt.Fprintln(o.DebugOut, args...) + } + } + printf := func(s string, args ...interface{}) { + if o.DebugOut != nil { + fmt.Fprintf(o.DebugOut, s, args...) + } + } + print := func(args ...interface{}) { + if o.DebugOut != nil { + fmt.Fprint(o.DebugOut, args...) + } + } + + if int64(len(hist)) > dictMaxLength { + return nil, fmt.Errorf("dictionary of size %d > %d", len(hist), int64(dictMaxLength)) + } + if len(hist) < 8 { + return nil, fmt.Errorf("dictionary of size %d < %d", len(hist), 8) + } + if len(contents) == 0 { + return nil, errors.New("no content provided") + } + d := dict{ + id: o.ID, + litEnc: nil, + llDec: sequenceDec{}, + ofDec: sequenceDec{}, + mlDec: sequenceDec{}, + offsets: o.Offsets, + content: hist, + } + block := blockEnc{lowMem: false} + block.init() + enc := encoder(&bestFastEncoder{fastBase: fastBase{maxMatchOff: int32(maxMatchLen), bufferReset: math.MaxInt32 - int32(maxMatchLen*2), lowMem: false}}) + if o.Level != 0 { + eOpts := encoderOptions{ + level: o.Level, + blockSize: maxMatchLen, + windowSize: maxMatchLen, + dict: &d, + lowMem: false, + } + enc = eOpts.encoder() + } else { + o.Level = SpeedBestCompression + } + var ( + remain [256]int + ll [256]int + ml [256]int + of [256]int + ) + addValues := func(dst *[256]int, src []byte) { + for _, v := range src { + dst[v]++ + } + } + addHist := func(dst *[256]int, src *[256]uint32) { + for i, v := range src { + dst[i] += int(v) + } + } + seqs := 0 + nUsed := 0 + litTotal := 0 + newOffsets := make(map[uint32]int, 1000) + for _, b := range contents { + block.reset(nil) + if len(b) < 8 { + continue + } + nUsed++ + enc.Reset(&d, true) + enc.Encode(&block, b) + addValues(&remain, block.literals) + litTotal += len(block.literals) + if len(block.sequences) == 0 { + continue + } + seqs += len(block.sequences) + block.genCodes() + addHist(&ll, block.coders.llEnc.Histogram()) + addHist(&ml, block.coders.mlEnc.Histogram()) + addHist(&of, block.coders.ofEnc.Histogram()) + for i, seq := range block.sequences { + if i > 3 { + break + } + offset := seq.offset + if offset == 0 { + continue + } + if int(offset) >= len(o.History) { + continue + } + if offset > 3 { + newOffsets[offset-3]++ + } else { + newOffsets[uint32(o.Offsets[offset-1])]++ + } + } + } + // Find most used offsets. + var sortedOffsets []uint32 + for k := range newOffsets { + sortedOffsets = append(sortedOffsets, k) + } + sort.Slice(sortedOffsets, func(i, j int) bool { + a, b := sortedOffsets[i], sortedOffsets[j] + if a == b { + // Prefer the longer offset + return sortedOffsets[i] > sortedOffsets[j] + } + return newOffsets[sortedOffsets[i]] > newOffsets[sortedOffsets[j]] + }) + if len(sortedOffsets) > 3 { + if debug { + print("Offsets:") + for i, v := range sortedOffsets { + if i > 20 { + break + } + printf("[%d: %d],", v, newOffsets[v]) + } + println("") + } + + sortedOffsets = sortedOffsets[:3] + } + for i, v := range sortedOffsets { + o.Offsets[i] = int(v) + } + if debug { + println("New repeat offsets", o.Offsets) + } + + if nUsed == 0 || seqs == 0 { + return nil, fmt.Errorf("%d blocks, %d sequences found", nUsed, seqs) + } + if debug { + println("Sequences:", seqs, "Blocks:", nUsed, "Literals:", litTotal) + } + if seqs/nUsed < 512 { + // Use 512 as minimum. + nUsed = seqs / 512 + if nUsed == 0 { + nUsed = 1 + } + } + copyHist := func(dst *fseEncoder, src *[256]int) ([]byte, error) { + hist := dst.Histogram() + var maxSym uint8 + var maxCount int + var fakeLength int + for i, v := range src { + if v > 0 { + v = v / nUsed + if v == 0 { + v = 1 + } + } + if v > maxCount { + maxCount = v + } + if v != 0 { + maxSym = uint8(i) + } + fakeLength += v + hist[i] = uint32(v) + } + + // Ensure we aren't trying to represent RLE. + if maxCount == fakeLength { + for i := range hist { + if uint8(i) == maxSym { + fakeLength++ + maxSym++ + hist[i+1] = 1 + if maxSym > 1 { + break + } + } + if hist[0] == 0 { + fakeLength++ + hist[i] = 1 + if maxSym > 1 { + break + } + } + } + } + + dst.HistogramFinished(maxSym, maxCount) + dst.reUsed = false + dst.useRLE = false + err := dst.normalizeCount(fakeLength) + if err != nil { + return nil, err + } + if debug { + println("RAW:", dst.count[:maxSym+1], "NORM:", dst.norm[:maxSym+1], "LEN:", fakeLength) + } + return dst.writeCount(nil) + } + if debug { + print("Literal lengths: ") + } + llTable, err := copyHist(block.coders.llEnc, &ll) + if err != nil { + return nil, err + } + if debug { + print("Match lengths: ") + } + mlTable, err := copyHist(block.coders.mlEnc, &ml) + if err != nil { + return nil, err + } + if debug { + print("Offsets: ") + } + ofTable, err := copyHist(block.coders.ofEnc, &of) + if err != nil { + return nil, err + } + + // Literal table + avgSize := litTotal + if avgSize > huff0.BlockSizeMax/2 { + avgSize = huff0.BlockSizeMax / 2 + } + huffBuff := make([]byte, 0, avgSize) + // Target size + div := litTotal / avgSize + if div < 1 { + div = 1 + } + if debug { + println("Huffman weights:") + } + for i, n := range remain[:] { + if n > 0 { + n = n / div + // Allow all entries to be represented. + if n == 0 { + n = 1 + } + huffBuff = append(huffBuff, bytes.Repeat([]byte{byte(i)}, n)...) + if debug { + printf("[%d: %d], ", i, n) + } + } + } + if o.CompatV155 && remain[255]/div == 0 { + huffBuff = append(huffBuff, 255) + } + scratch := &huff0.Scratch{TableLog: 11} + for tries := 0; tries < 255; tries++ { + scratch = &huff0.Scratch{TableLog: 11} + _, _, err = huff0.Compress1X(huffBuff, scratch) + if err == nil { + break + } + if debug { + printf("Try %d: Huffman error: %v\n", tries+1, err) + } + huffBuff = huffBuff[:0] + if tries == 250 { + if debug { + println("Huffman: Bailing out with predefined table") + } + + // Bail out.... Just generate something + huffBuff = append(huffBuff, bytes.Repeat([]byte{255}, 10000)...) + for i := 0; i < 128; i++ { + huffBuff = append(huffBuff, byte(i)) + } + continue + } + if errors.Is(err, huff0.ErrIncompressible) { + // Try truncating least common. + for i, n := range remain[:] { + if n > 0 { + n = n / (div * (i + 1)) + if n > 0 { + huffBuff = append(huffBuff, bytes.Repeat([]byte{byte(i)}, n)...) + } + } + } + if o.CompatV155 && len(huffBuff) > 0 && huffBuff[len(huffBuff)-1] != 255 { + huffBuff = append(huffBuff, 255) + } + if len(huffBuff) == 0 { + huffBuff = append(huffBuff, 0, 255) + } + } + if errors.Is(err, huff0.ErrUseRLE) { + for i, n := range remain[:] { + n = n / (div * (i + 1)) + // Allow all entries to be represented. + if n == 0 { + n = 1 + } + huffBuff = append(huffBuff, bytes.Repeat([]byte{byte(i)}, n)...) + } + } + } + + var out bytes.Buffer + out.Write([]byte(dictMagic)) + out.Write(binary.LittleEndian.AppendUint32(nil, o.ID)) + out.Write(scratch.OutTable) + if debug { + println("huff table:", len(scratch.OutTable), "bytes") + println("of table:", len(ofTable), "bytes") + println("ml table:", len(mlTable), "bytes") + println("ll table:", len(llTable), "bytes") + } + out.Write(ofTable) + out.Write(mlTable) + out.Write(llTable) + out.Write(binary.LittleEndian.AppendUint32(nil, uint32(o.Offsets[0]))) + out.Write(binary.LittleEndian.AppendUint32(nil, uint32(o.Offsets[1]))) + out.Write(binary.LittleEndian.AppendUint32(nil, uint32(o.Offsets[2]))) + out.Write(hist) + if debug { + _, err := loadDict(out.Bytes()) + if err != nil { + panic(err) + } + i, err := InspectDictionary(out.Bytes()) + if err != nil { + panic(err) + } + println("ID:", i.ID()) + println("Content size:", i.ContentSize()) + println("Encoder:", i.LitEncoder() != nil) + println("Offsets:", i.Offsets()) + var totalSize int + for _, b := range contents { + totalSize += len(b) + } + + encWith := func(opts ...EOption) int { + enc, err := NewWriter(nil, opts...) + if err != nil { + panic(err) + } + defer enc.Close() + var dst []byte + var totalSize int + for _, b := range contents { + dst = enc.EncodeAll(b, dst[:0]) + totalSize += len(dst) + } + return totalSize + } + plain := encWith(WithEncoderLevel(o.Level)) + withDict := encWith(WithEncoderLevel(o.Level), WithEncoderDict(out.Bytes())) + println("Input size:", totalSize) + println("Plain Compressed:", plain) + println("Dict Compressed:", withDict) + println("Saved:", plain-withDict, (plain-withDict)/len(contents), "bytes per input (rounded down)") + } + return out.Bytes(), nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go new file mode 100644 index 0000000..5ca4603 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_base.go @@ -0,0 +1,173 @@ +package zstd + +import ( + "fmt" + "math/bits" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +const ( + dictShardBits = 6 +) + +type fastBase struct { + // cur is the offset at the start of hist + cur int32 + // maximum offset. Should be at least 2x block size. + maxMatchOff int32 + bufferReset int32 + hist []byte + crc *xxhash.Digest + tmp [8]byte + blk *blockEnc + lastDictID uint32 + lowMem bool +} + +// CRC returns the underlying CRC writer. +func (e *fastBase) CRC() *xxhash.Digest { + return e.crc +} + +// AppendCRC will append the CRC to the destination slice and return it. +func (e *fastBase) AppendCRC(dst []byte) []byte { + crc := e.crc.Sum(e.tmp[:0]) + dst = append(dst, crc[7], crc[6], crc[5], crc[4]) + return dst +} + +// WindowSize returns the window size of the encoder, +// or a window size small enough to contain the input size, if > 0. +func (e *fastBase) WindowSize(size int64) int32 { + if size > 0 && size < int64(e.maxMatchOff) { + b := int32(1) << uint(bits.Len(uint(size))) + // Keep minimum window. + if b < 1024 { + b = 1024 + } + return b + } + return e.maxMatchOff +} + +// Block returns the current block. +func (e *fastBase) Block() *blockEnc { + return e.blk +} + +func (e *fastBase) addBlock(src []byte) int32 { + if debugAsserts && e.cur > e.bufferReset { + panic(fmt.Sprintf("ecur (%d) > buffer reset (%d)", e.cur, e.bufferReset)) + } + // check if we have space already + if len(e.hist)+len(src) > cap(e.hist) { + if cap(e.hist) == 0 { + e.ensureHist(len(src)) + } else { + if cap(e.hist) < int(e.maxMatchOff+maxCompressedBlockSize) { + panic(fmt.Errorf("unexpected buffer cap %d, want at least %d with window %d", cap(e.hist), e.maxMatchOff+maxCompressedBlockSize, e.maxMatchOff)) + } + // Move down + offset := int32(len(e.hist)) - e.maxMatchOff + copy(e.hist[0:e.maxMatchOff], e.hist[offset:]) + e.cur += offset + e.hist = e.hist[:e.maxMatchOff] + } + } + s := int32(len(e.hist)) + e.hist = append(e.hist, src...) + return s +} + +// ensureHist will ensure that history can keep at least this many bytes. +func (e *fastBase) ensureHist(n int) { + if cap(e.hist) >= n { + return + } + l := e.maxMatchOff + if (e.lowMem && e.maxMatchOff > maxCompressedBlockSize) || e.maxMatchOff <= maxCompressedBlockSize { + l += maxCompressedBlockSize + } else { + l += e.maxMatchOff + } + // Make it at least 1MB. + if l < 1<<20 && !e.lowMem { + l = 1 << 20 + } + // Make it at least the requested size. + if l < int32(n) { + l = int32(n) + } + e.hist = make([]byte, 0, l) +} + +// useBlock will replace the block with the provided one, +// but transfer recent offsets from the previous. +func (e *fastBase) UseBlock(enc *blockEnc) { + enc.reset(e.blk) + e.blk = enc +} + +func (e *fastBase) matchlen(s, t int32, src []byte) int32 { + if debugAsserts { + if s < 0 { + err := fmt.Sprintf("s (%d) < 0", s) + panic(err) + } + if t < 0 { + err := fmt.Sprintf("s (%d) < 0", s) + panic(err) + } + if s-t > e.maxMatchOff { + err := fmt.Sprintf("s (%d) - t (%d) > maxMatchOff (%d)", s, t, e.maxMatchOff) + panic(err) + } + if len(src)-int(s) > maxCompressedBlockSize { + panic(fmt.Sprintf("len(src)-s (%d) > maxCompressedBlockSize (%d)", len(src)-int(s), maxCompressedBlockSize)) + } + } + return int32(matchLen(src[s:], src[t:])) +} + +// Reset the encoding table. +func (e *fastBase) resetBase(d *dict, singleBlock bool) { + if e.blk == nil { + e.blk = &blockEnc{lowMem: e.lowMem} + e.blk.init() + } else { + e.blk.reset(nil) + } + e.blk.initNewEncode() + if e.crc == nil { + e.crc = xxhash.New() + } else { + e.crc.Reset() + } + e.blk.dictLitEnc = nil + if d != nil { + low := e.lowMem + if singleBlock { + e.lowMem = true + } + e.ensureHist(d.ContentSize() + maxCompressedBlockSize) + e.lowMem = low + } + + // We offset current position so everything will be out of reach. + // If above reset line, history will be purged. + if e.cur < e.bufferReset { + e.cur += e.maxMatchOff + int32(len(e.hist)) + } + e.hist = e.hist[:0] + if d != nil { + // Set offsets (currently not used) + for i, off := range d.offsets { + e.blk.recentOffsets[i] = uint32(off) + e.blk.prevRecentOffsets[i] = e.blk.recentOffsets[i] + } + // Transfer litenc. + e.blk.dictLitEnc = d.litEnc + e.hist = append(e.hist, d.content...) + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go new file mode 100644 index 0000000..4613724 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_best.go @@ -0,0 +1,560 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "bytes" + "fmt" + + "github.com/klauspost/compress" +) + +const ( + bestLongTableBits = 22 // Bits used in the long match table + bestLongTableSize = 1 << bestLongTableBits // Size of the table + bestLongLen = 8 // Bytes used for table hash + + // Note: Increasing the short table bits or making the hash shorter + // can actually lead to compression degradation since it will 'steal' more from the + // long match table and match offsets are quite big. + // This greatly depends on the type of input. + bestShortTableBits = 18 // Bits used in the short match table + bestShortTableSize = 1 << bestShortTableBits // Size of the table + bestShortLen = 4 // Bytes used for table hash + +) + +type match struct { + offset int32 + s int32 + length int32 + rep int32 + est int32 +} + +const highScore = maxMatchLen * 8 + +// estBits will estimate output bits from predefined tables. +func (m *match) estBits(bitsPerByte int32) { + mlc := mlCode(uint32(m.length - zstdMinMatch)) + var ofc uint8 + if m.rep < 0 { + ofc = ofCode(uint32(m.s-m.offset) + 3) + } else { + ofc = ofCode(uint32(m.rep) & 3) + } + // Cost, excluding + ofTT, mlTT := fsePredefEnc[tableOffsets].ct.symbolTT[ofc], fsePredefEnc[tableMatchLengths].ct.symbolTT[mlc] + + // Add cost of match encoding... + m.est = int32(ofTT.outBits + mlTT.outBits) + m.est += int32(ofTT.deltaNbBits>>16 + mlTT.deltaNbBits>>16) + // Subtract savings compared to literal encoding... + m.est -= (m.length * bitsPerByte) >> 10 + if m.est > 0 { + // Unlikely gain.. + m.length = 0 + m.est = highScore + } +} + +// bestFastEncoder uses 2 tables, one for short matches (5 bytes) and one for long matches. +// The long match table contains the previous entry with the same hash, +// effectively making it a "chain" of length 2. +// When we find a long match we choose between the two values and select the longest. +// When we find a short match, after checking the long, we check if we can find a long at n+1 +// and that it is longer (lazy matching). +type bestFastEncoder struct { + fastBase + table [bestShortTableSize]prevEntry + longTable [bestLongTableSize]prevEntry + dictTable []prevEntry + dictLongTable []prevEntry +} + +// Encode improves compression... +func (e *bestFastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 4 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [bestShortTableSize]prevEntry{} + e.longTable = [bestLongTableSize]prevEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + v2 := e.table[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.table[i] = prevEntry{ + offset: v, + prev: v2, + } + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + v2 := e.longTable[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.longTable[i] = prevEntry{ + offset: v, + prev: v2, + } + } + e.cur = e.maxMatchOff + break + } + + // Add block to history + s := e.addBlock(src) + blk.size = len(src) + + // Check RLE first + if len(src) > zstdMinMatch { + ml := matchLen(src[1:], src) + if ml == len(src)-1 { + blk.literals = append(blk.literals, src[0]) + blk.sequences = append(blk.sequences, seq{litLen: 1, matchLen: uint32(len(src)-1) - zstdMinMatch, offset: 1 + 3}) + return + } + } + + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Use this to estimate literal cost. + // Scaled by 10 bits. + bitsPerByte := int32((compress.ShannonEntropyBits(src) * 1024) / len(src)) + // Huffman can never go < 1 bit/byte + if bitsPerByte < 1024 { + bitsPerByte = 1024 + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + const kSearchStrength = 10 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + offset3 := int32(blk.recentOffsets[2]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + const goodEnough = 250 + + cv := load6432(src, s) + + nextHashL := hashLen(cv, bestLongTableBits, bestLongLen) + nextHashS := hashLen(cv, bestShortTableBits, bestShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + // Set m to a match at offset if it looks like that will improve compression. + improve := func(m *match, offset int32, s int32, first uint32, rep int32) { + delta := s - offset + if delta >= e.maxMatchOff || delta <= 0 || load3232(src, offset) != first { + return + } + // Try to quick reject if we already have a long match. + if m.length > 16 { + left := len(src) - int(m.s+m.length) + // If we are too close to the end, keep as is. + if left <= 0 { + return + } + checkLen := m.length - (s - m.s) - 8 + if left > 2 && checkLen > 4 { + // Check 4 bytes, 4 bytes from the end of the current match. + a := load3232(src, offset+checkLen) + b := load3232(src, s+checkLen) + if a != b { + return + } + } + } + l := 4 + e.matchlen(s+4, offset+4, src) + if m.rep <= 0 { + // Extend candidate match backwards as far as possible. + // Do not extend repeats as we can assume they are optimal + // and offsets change if s == nextEmit. + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for offset > tMin && s > nextEmit && src[offset-1] == src[s-1] && l < maxMatchLength { + s-- + offset-- + l++ + } + } + if debugAsserts { + if offset >= s { + panic(fmt.Sprintf("offset: %d - s:%d - rep: %d - cur :%d - max: %d", offset, s, rep, e.cur, e.maxMatchOff)) + } + if !bytes.Equal(src[s:s+l], src[offset:offset+l]) { + panic(fmt.Sprintf("second match mismatch: %v != %v, first: %08x", src[s:s+4], src[offset:offset+4], first)) + } + } + cand := match{offset: offset, s: s, length: l, rep: rep} + cand.estBits(bitsPerByte) + if m.est >= highScore || cand.est-m.est+(cand.s-m.s)*bitsPerByte>>10 < 0 { + *m = cand + } + } + + best := match{s: s, est: highScore} + improve(&best, candidateL.offset-e.cur, s, uint32(cv), -1) + improve(&best, candidateL.prev-e.cur, s, uint32(cv), -1) + improve(&best, candidateS.offset-e.cur, s, uint32(cv), -1) + improve(&best, candidateS.prev-e.cur, s, uint32(cv), -1) + + if canRepeat && best.length < goodEnough { + if s == nextEmit { + // Check repeats straight after a match. + improve(&best, s-offset2, s, uint32(cv), 1|4) + improve(&best, s-offset3, s, uint32(cv), 2|4) + if offset1 > 1 { + improve(&best, s-(offset1-1), s, uint32(cv), 3|4) + } + } + + // If either no match or a non-repeat match, check at + 1 + if best.rep <= 0 { + cv32 := uint32(cv >> 8) + spp := s + 1 + improve(&best, spp-offset1, spp, cv32, 1) + improve(&best, spp-offset2, spp, cv32, 2) + improve(&best, spp-offset3, spp, cv32, 3) + if best.rep < 0 { + cv32 = uint32(cv >> 24) + spp += 2 + improve(&best, spp-offset1, spp, cv32, 1) + improve(&best, spp-offset2, spp, cv32, 2) + improve(&best, spp-offset3, spp, cv32, 3) + } + } + } + // Load next and check... + e.longTable[nextHashL] = prevEntry{offset: s + e.cur, prev: candidateL.offset} + e.table[nextHashS] = prevEntry{offset: s + e.cur, prev: candidateS.offset} + index0 := s + 1 + + // Look far ahead, unless we have a really long match already... + if best.length < goodEnough { + // No match found, move forward on input, no need to check forward... + if best.length < 4 { + s += 1 + (s-nextEmit)>>(kSearchStrength-1) + if s >= sLimit { + break encodeLoop + } + continue + } + + candidateS = e.table[hashLen(cv>>8, bestShortTableBits, bestShortLen)] + cv = load6432(src, s+1) + cv2 := load6432(src, s+2) + candidateL = e.longTable[hashLen(cv, bestLongTableBits, bestLongLen)] + candidateL2 := e.longTable[hashLen(cv2, bestLongTableBits, bestLongLen)] + + // Short at s+1 + improve(&best, candidateS.offset-e.cur, s+1, uint32(cv), -1) + // Long at s+1, s+2 + improve(&best, candidateL.offset-e.cur, s+1, uint32(cv), -1) + improve(&best, candidateL.prev-e.cur, s+1, uint32(cv), -1) + improve(&best, candidateL2.offset-e.cur, s+2, uint32(cv2), -1) + improve(&best, candidateL2.prev-e.cur, s+2, uint32(cv2), -1) + if false { + // Short at s+3. + // Too often worse... + improve(&best, e.table[hashLen(cv2>>8, bestShortTableBits, bestShortLen)].offset-e.cur, s+3, uint32(cv2>>8), -1) + } + + // Start check at a fixed offset to allow for a few mismatches. + // For this compression level 2 yields the best results. + // We cannot do this if we have already indexed this position. + const skipBeginning = 2 + if best.s > s-skipBeginning { + // See if we can find a better match by checking where the current best ends. + // Use that offset to see if we can find a better full match. + if sAt := best.s + best.length; sAt < sLimit { + nextHashL := hashLen(load6432(src, sAt), bestLongTableBits, bestLongLen) + candidateEnd := e.longTable[nextHashL] + + if off := candidateEnd.offset - e.cur - best.length + skipBeginning; off >= 0 { + improve(&best, off, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1) + if off := candidateEnd.prev - e.cur - best.length + skipBeginning; off >= 0 { + improve(&best, off, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1) + } + } + } + } + } + + if debugAsserts { + if best.offset >= best.s { + panic(fmt.Sprintf("best.offset > s: %d >= %d", best.offset, best.s)) + } + if best.s < nextEmit { + panic(fmt.Sprintf("s %d < nextEmit %d", best.s, nextEmit)) + } + if best.offset < s-e.maxMatchOff { + panic(fmt.Sprintf("best.offset < s-e.maxMatchOff: %d < %d", best.offset, s-e.maxMatchOff)) + } + if !bytes.Equal(src[best.s:best.s+best.length], src[best.offset:best.offset+best.length]) { + panic(fmt.Sprintf("match mismatch: %v != %v", src[best.s:best.s+best.length], src[best.offset:best.offset+best.length])) + } + } + + // We have a match, we can store the forward value + s = best.s + if best.rep > 0 { + var seq seq + seq.matchLen = uint32(best.length - zstdMinMatch) + addLiterals(&seq, best.s) + + // Repeat. If bit 4 is set, this is a non-lit repeat. + seq.offset = uint32(best.rep & 3) + if debugSequences { + println("repeat sequence", seq, "next s:", best.s, "off:", best.s-best.offset) + } + blk.sequences = append(blk.sequences, seq) + + // Index old s + 1 -> s - 1 + s = best.s + best.length + nextEmit = s + + // Index skipped... + end := s + if s > sLimit+4 { + end = sLimit + 4 + } + off := index0 + e.cur + for index0 < end { + cv0 := load6432(src, index0) + h0 := hashLen(cv0, bestLongTableBits, bestLongLen) + h1 := hashLen(cv0, bestShortTableBits, bestShortLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[h1] = prevEntry{offset: off, prev: e.table[h1].offset} + off++ + index0++ + } + + switch best.rep { + case 2, 4 | 1: + offset1, offset2 = offset2, offset1 + case 3, 4 | 2: + offset1, offset2, offset3 = offset3, offset1, offset2 + case 4 | 3: + offset1, offset2, offset3 = offset1-1, offset1, offset2 + } + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, best.length) + } + break encodeLoop + } + continue + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + t := best.offset + offset1, offset2, offset3 = s-t, offset1, offset2 + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && int(offset1) > len(src) { + panic("invalid offset") + } + + // Write our sequence + var seq seq + l := best.length + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + + // Index old s + 1 -> s - 1 or sLimit + end := s + if s > sLimit-4 { + end = sLimit - 4 + } + + off := index0 + e.cur + for index0 < end { + cv0 := load6432(src, index0) + h0 := hashLen(cv0, bestLongTableBits, bestLongLen) + h1 := hashLen(cv0, bestShortTableBits, bestShortLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[h1] = prevEntry{offset: off, prev: e.table[h1].offset} + index0++ + off++ + } + if s >= sLimit { + break encodeLoop + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + blk.recentOffsets[2] = uint32(offset3) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *bestFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + e.ensureHist(len(src)) + e.Encode(blk, src) +} + +// Reset will reset and set a dictionary if not nil +func (e *bestFastEncoder) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d == nil { + return + } + // Init or copy dict table + if len(e.dictTable) != len(e.table) || d.id != e.lastDictID { + if len(e.dictTable) != len(e.table) { + e.dictTable = make([]prevEntry, len(e.table)) + } + end := int32(len(d.content)) - 8 + e.maxMatchOff + for i := e.maxMatchOff; i < end; i += 4 { + const hashLog = bestShortTableBits + + cv := load6432(d.content, i-e.maxMatchOff) + nextHash := hashLen(cv, hashLog, bestShortLen) // 0 -> 4 + nextHash1 := hashLen(cv>>8, hashLog, bestShortLen) // 1 -> 5 + nextHash2 := hashLen(cv>>16, hashLog, bestShortLen) // 2 -> 6 + nextHash3 := hashLen(cv>>24, hashLog, bestShortLen) // 3 -> 7 + e.dictTable[nextHash] = prevEntry{ + prev: e.dictTable[nextHash].offset, + offset: i, + } + e.dictTable[nextHash1] = prevEntry{ + prev: e.dictTable[nextHash1].offset, + offset: i + 1, + } + e.dictTable[nextHash2] = prevEntry{ + prev: e.dictTable[nextHash2].offset, + offset: i + 2, + } + e.dictTable[nextHash3] = prevEntry{ + prev: e.dictTable[nextHash3].offset, + offset: i + 3, + } + } + e.lastDictID = d.id + } + + // Init or copy dict table + if len(e.dictLongTable) != len(e.longTable) || d.id != e.lastDictID { + if len(e.dictLongTable) != len(e.longTable) { + e.dictLongTable = make([]prevEntry, len(e.longTable)) + } + if len(d.content) >= 8 { + cv := load6432(d.content, 0) + h := hashLen(cv, bestLongTableBits, bestLongLen) + e.dictLongTable[h] = prevEntry{ + offset: e.maxMatchOff, + prev: e.dictLongTable[h].offset, + } + + end := int32(len(d.content)) - 8 + e.maxMatchOff + off := 8 // First to read + for i := e.maxMatchOff + 1; i < end; i++ { + cv = cv>>8 | (uint64(d.content[off]) << 56) + h := hashLen(cv, bestLongTableBits, bestLongLen) + e.dictLongTable[h] = prevEntry{ + offset: i, + prev: e.dictLongTable[h].offset, + } + off++ + } + } + e.lastDictID = d.id + } + // Reset table to initial state + copy(e.longTable[:], e.dictLongTable) + + e.cur = e.maxMatchOff + // Reset table to initial state + copy(e.table[:], e.dictTable) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go new file mode 100644 index 0000000..a4f5bf9 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_better.go @@ -0,0 +1,1252 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import "fmt" + +const ( + betterLongTableBits = 19 // Bits used in the long match table + betterLongTableSize = 1 << betterLongTableBits // Size of the table + betterLongLen = 8 // Bytes used for table hash + + // Note: Increasing the short table bits or making the hash shorter + // can actually lead to compression degradation since it will 'steal' more from the + // long match table and match offsets are quite big. + // This greatly depends on the type of input. + betterShortTableBits = 13 // Bits used in the short match table + betterShortTableSize = 1 << betterShortTableBits // Size of the table + betterShortLen = 5 // Bytes used for table hash + + betterLongTableShardCnt = 1 << (betterLongTableBits - dictShardBits) // Number of shards in the table + betterLongTableShardSize = betterLongTableSize / betterLongTableShardCnt // Size of an individual shard + + betterShortTableShardCnt = 1 << (betterShortTableBits - dictShardBits) // Number of shards in the table + betterShortTableShardSize = betterShortTableSize / betterShortTableShardCnt // Size of an individual shard +) + +type prevEntry struct { + offset int32 + prev int32 +} + +// betterFastEncoder uses 2 tables, one for short matches (5 bytes) and one for long matches. +// The long match table contains the previous entry with the same hash, +// effectively making it a "chain" of length 2. +// When we find a long match we choose between the two values and select the longest. +// When we find a short match, after checking the long, we check if we can find a long at n+1 +// and that it is longer (lazy matching). +type betterFastEncoder struct { + fastBase + table [betterShortTableSize]tableEntry + longTable [betterLongTableSize]prevEntry +} + +type betterFastEncoderDict struct { + betterFastEncoder + dictTable []tableEntry + dictLongTable []prevEntry + shortTableShardDirty [betterShortTableShardCnt]bool + longTableShardDirty [betterLongTableShardCnt]bool + allDirty bool +} + +// Encode improves compression... +func (e *betterFastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [betterShortTableSize]tableEntry{} + e.longTable = [betterLongTableSize]prevEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + v2 := e.longTable[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.longTable[i] = prevEntry{ + offset: v, + prev: v2, + } + } + e.cur = e.maxMatchOff + break + } + // Add block to history + s := e.addBlock(src) + blk.size = len(src) + + // Check RLE first + if len(src) > zstdMinMatch { + ml := matchLen(src[1:], src) + if ml == len(src)-1 { + blk.literals = append(blk.literals, src[0]) + blk.sequences = append(blk.sequences, seq{litLen: 1, matchLen: uint32(len(src)-1) - zstdMinMatch, offset: 1 + 3}) + return + } + } + + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 9 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + var matched, index0 int32 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + off := s + e.cur + e.longTable[nextHashL] = prevEntry{offset: off, prev: candidateL.offset} + e.table[nextHashS] = tableEntry{offset: off, val: uint32(cv)} + index0 = s + 1 + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Index match start+1 (long) -> s - 1 + index0 := s + repOff + s += lenght + repOff + + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[hashLen(cv1, betterShortTableBits, betterShortLen)] = tableEntry{offset: off + 1, val: uint32(cv1)} + index0 += 2 + } + cv = load6432(src, s) + continue + } + const repOff2 = 1 + + // We deviate from the reference encoder and also check offset 2. + // Still slower and not much better, so disabled. + // repIndex = s - offset2 + repOff2 + if false && repIndex >= 0 && load6432(src, repIndex) == load6432(src, s+repOff) { + // Consider history as well. + var seq seq + lenght := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 2 + seq.offset = 2 + if debugSequences { + println("repeat sequence 2", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + s += lenght + repOff2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[hashLen(cv1, betterShortTableBits, betterShortLen)] = tableEntry{offset: off + 1, val: uint32(cv1)} + index0 += 2 + } + cv = load6432(src, s) + // Swap offsets + offset1, offset2 = offset2, offset1 + continue + } + } + // Find the offsets of our two matches. + coffsetL := candidateL.offset - e.cur + coffsetLP := candidateL.prev - e.cur + + // Check if we have a long match. + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetL+8, src) + 8 + t = coffsetL + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + prevMatch := e.matchlen(s+8, coffsetLP+8, src) + 8 + if prevMatch > matched { + matched = prevMatch + t = coffsetLP + } + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + } + break + } + + // Check if we have a long match on prev. + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetLP+8, src) + 8 + t = coffsetLP + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + coffsetS := candidateS.offset - e.cur + + // Check if we have a short match. + if s-coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + matched = e.matchlen(s+4, coffsetS+4, src) + 4 + + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, betterLongTableBits, betterLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = candidateL.offset - e.cur + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = prevEntry{offset: s + checkAt + e.cur, prev: candidateL.offset} + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("long match (after short)") + } + break + } + } + + // Check prev long... + coffsetL = candidateL.prev - e.cur + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("prev long match (after short)") + } + break + } + } + t = coffsetS + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // Try to find a better match by searching for a long match at the end of the current best match + if s+matched < sLimit { + // Allow some bytes at the beginning to mismatch. + // Sweet spot is around 3 bytes, but depends on input. + // The skipped bytes are tested in Extend backwards, + // and still picked up as part of the match if they do. + const skipBeginning = 3 + + nextHashL := hashLen(load6432(src, s+matched), betterLongTableBits, betterLongLen) + s2 := s + skipBeginning + cv := load3232(src, s2) + candidateL := e.longTable[nextHashL] + coffsetL := candidateL.offset - e.cur - matched + skipBeginning + if coffsetL >= 0 && coffsetL < s2 && s2-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s2+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + s = s2 + matched = matchedNext + if debugMatches { + println("long match at end-of-match") + } + } + } + + // Check prev long... + if true { + coffsetL = candidateL.prev - e.cur - matched + skipBeginning + if coffsetL >= 0 && coffsetL < s2 && s2-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s2+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + s = s2 + matched = matchedNext + if debugMatches { + println("prev long match at end-of-match") + } + } + } + } + } + // A match has been found. Update recent offsets. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the n-byte match as long as possible. + l := matched + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) -> s - 1 + off := index0 + e.cur + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.table[hashLen(cv1, betterShortTableBits, betterShortLen)] = tableEntry{offset: off + 1, val: uint32(cv1)} + index0 += 2 + off += 2 + } + + cv = load6432(src, s) + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + e.longTable[nextHashL] = prevEntry{offset: s + e.cur, prev: e.longTable[nextHashL].offset} + e.table[nextHashS] = tableEntry{offset: s + e.cur, val: uint32(cv)} + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *betterFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + e.ensureHist(len(src)) + e.Encode(blk, src) +} + +// Encode improves compression... +func (e *betterFastEncoderDict) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + for i := range e.longTable[:] { + e.longTable[i] = prevEntry{} + } + e.cur = e.maxMatchOff + e.allDirty = true + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + v2 := e.longTable[i].prev + if v < minOff { + v = 0 + v2 = 0 + } else { + v = v - e.cur + e.maxMatchOff + if v2 < minOff { + v2 = 0 + } else { + v2 = v2 - e.cur + e.maxMatchOff + } + } + e.longTable[i] = prevEntry{ + offset: v, + prev: v2, + } + } + e.allDirty = true + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 9 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + var matched, index0 int32 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + off := s + e.cur + e.longTable[nextHashL] = prevEntry{offset: off, prev: candidateL.offset} + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = tableEntry{offset: off, val: uint32(cv)} + e.markShortShardDirty(nextHashS) + index0 = s + 1 + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Index match start+1 (long) -> s - 1 + s += lenght + repOff + + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.markLongShardDirty(h0) + h1 := hashLen(cv1, betterShortTableBits, betterShortLen) + e.table[h1] = tableEntry{offset: off + 1, val: uint32(cv1)} + e.markShortShardDirty(h1) + index0 += 2 + } + cv = load6432(src, s) + continue + } + const repOff2 = 1 + + // We deviate from the reference encoder and also check offset 2. + // Still slower and not much better, so disabled. + // repIndex = s - offset2 + repOff2 + if false && repIndex >= 0 && load6432(src, repIndex) == load6432(src, s+repOff) { + // Consider history as well. + var seq seq + lenght := 8 + e.matchlen(s+8+repOff2, repIndex+8, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 2 + seq.offset = 2 + if debugSequences { + println("repeat sequence 2", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + s += lenght + repOff2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + + // Index skipped... + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + off := index0 + e.cur + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.markLongShardDirty(h0) + h1 := hashLen(cv1, betterShortTableBits, betterShortLen) + e.table[h1] = tableEntry{offset: off + 1, val: uint32(cv1)} + e.markShortShardDirty(h1) + index0 += 2 + } + cv = load6432(src, s) + // Swap offsets + offset1, offset2 = offset2, offset1 + continue + } + } + // Find the offsets of our two matches. + coffsetL := candidateL.offset - e.cur + coffsetLP := candidateL.prev - e.cur + + // Check if we have a long match. + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetL+8, src) + 8 + t = coffsetL + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + prevMatch := e.matchlen(s+8, coffsetLP+8, src) + 8 + if prevMatch > matched { + matched = prevMatch + t = coffsetLP + } + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + } + break + } + + // Check if we have a long match on prev. + if s-coffsetLP < e.maxMatchOff && cv == load6432(src, coffsetLP) { + // Found a long match, at least 8 bytes. + matched = e.matchlen(s+8, coffsetLP+8, src) + 8 + t = coffsetLP + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + coffsetS := candidateS.offset - e.cur + + // Check if we have a short match. + if s-coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + matched = e.matchlen(s+4, coffsetS+4, src) + 4 + + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, betterLongTableBits, betterLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = candidateL.offset - e.cur + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = prevEntry{offset: s + checkAt + e.cur, prev: candidateL.offset} + e.markLongShardDirty(nextHashL) + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("long match (after short)") + } + break + } + } + + // Check prev long... + coffsetL = candidateL.prev - e.cur + if s-coffsetL < e.maxMatchOff && cv == load6432(src, coffsetL) { + // Found a long match, at least 8 bytes. + matchedNext := e.matchlen(s+8+checkAt, coffsetL+8, src) + 8 + if matchedNext > matched { + t = coffsetL + s += checkAt + matched = matchedNext + if debugMatches { + println("prev long match (after short)") + } + break + } + } + t = coffsetS + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // Try to find a better match by searching for a long match at the end of the current best match + if s+matched < sLimit { + nextHashL := hashLen(load6432(src, s+matched), betterLongTableBits, betterLongLen) + cv := load3232(src, s) + candidateL := e.longTable[nextHashL] + coffsetL := candidateL.offset - e.cur - matched + if coffsetL >= 0 && coffsetL < s && s-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + matched = matchedNext + if debugMatches { + println("long match at end-of-match") + } + } + } + + // Check prev long... + if true { + coffsetL = candidateL.prev - e.cur - matched + if coffsetL >= 0 && coffsetL < s && s-coffsetL < e.maxMatchOff && cv == load3232(src, coffsetL) { + // Found a long match, at least 4 bytes. + matchedNext := e.matchlen(s+4, coffsetL+4, src) + 4 + if matchedNext > matched { + t = coffsetL + matched = matchedNext + if debugMatches { + println("prev long match at end-of-match") + } + } + } + } + } + // A match has been found. Update recent offsets. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the n-byte match as long as possible. + l := matched + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) -> s - 1 + off := index0 + e.cur + for index0 < s-1 { + cv0 := load6432(src, index0) + cv1 := cv0 >> 8 + h0 := hashLen(cv0, betterLongTableBits, betterLongLen) + e.longTable[h0] = prevEntry{offset: off, prev: e.longTable[h0].offset} + e.markLongShardDirty(h0) + h1 := hashLen(cv1, betterShortTableBits, betterShortLen) + e.table[h1] = tableEntry{offset: off + 1, val: uint32(cv1)} + e.markShortShardDirty(h1) + index0 += 2 + off += 2 + } + + cv = load6432(src, s) + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashL := hashLen(cv, betterLongTableBits, betterLongLen) + nextHashS := hashLen(cv, betterShortTableBits, betterShortLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + e.longTable[nextHashL] = prevEntry{offset: s + e.cur, prev: e.longTable[nextHashL].offset} + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.markShortShardDirty(nextHashS) + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *betterFastEncoder) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d != nil { + panic("betterFastEncoder: Reset with dict") + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *betterFastEncoderDict) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d == nil { + return + } + // Init or copy dict table + if len(e.dictTable) != len(e.table) || d.id != e.lastDictID { + if len(e.dictTable) != len(e.table) { + e.dictTable = make([]tableEntry, len(e.table)) + } + end := int32(len(d.content)) - 8 + e.maxMatchOff + for i := e.maxMatchOff; i < end; i += 4 { + const hashLog = betterShortTableBits + + cv := load6432(d.content, i-e.maxMatchOff) + nextHash := hashLen(cv, hashLog, betterShortLen) // 0 -> 4 + nextHash1 := hashLen(cv>>8, hashLog, betterShortLen) // 1 -> 5 + nextHash2 := hashLen(cv>>16, hashLog, betterShortLen) // 2 -> 6 + nextHash3 := hashLen(cv>>24, hashLog, betterShortLen) // 3 -> 7 + e.dictTable[nextHash] = tableEntry{ + val: uint32(cv), + offset: i, + } + e.dictTable[nextHash1] = tableEntry{ + val: uint32(cv >> 8), + offset: i + 1, + } + e.dictTable[nextHash2] = tableEntry{ + val: uint32(cv >> 16), + offset: i + 2, + } + e.dictTable[nextHash3] = tableEntry{ + val: uint32(cv >> 24), + offset: i + 3, + } + } + e.lastDictID = d.id + e.allDirty = true + } + + // Init or copy dict table + if len(e.dictLongTable) != len(e.longTable) || d.id != e.lastDictID { + if len(e.dictLongTable) != len(e.longTable) { + e.dictLongTable = make([]prevEntry, len(e.longTable)) + } + if len(d.content) >= 8 { + cv := load6432(d.content, 0) + h := hashLen(cv, betterLongTableBits, betterLongLen) + e.dictLongTable[h] = prevEntry{ + offset: e.maxMatchOff, + prev: e.dictLongTable[h].offset, + } + + end := int32(len(d.content)) - 8 + e.maxMatchOff + off := 8 // First to read + for i := e.maxMatchOff + 1; i < end; i++ { + cv = cv>>8 | (uint64(d.content[off]) << 56) + h := hashLen(cv, betterLongTableBits, betterLongLen) + e.dictLongTable[h] = prevEntry{ + offset: i, + prev: e.dictLongTable[h].offset, + } + off++ + } + } + e.lastDictID = d.id + e.allDirty = true + } + + // Reset table to initial state + { + dirtyShardCnt := 0 + if !e.allDirty { + for i := range e.shortTableShardDirty { + if e.shortTableShardDirty[i] { + dirtyShardCnt++ + } + } + } + const shardCnt = betterShortTableShardCnt + const shardSize = betterShortTableShardSize + if e.allDirty || dirtyShardCnt > shardCnt*4/6 { + copy(e.table[:], e.dictTable) + for i := range e.shortTableShardDirty { + e.shortTableShardDirty[i] = false + } + } else { + for i := range e.shortTableShardDirty { + if !e.shortTableShardDirty[i] { + continue + } + + copy(e.table[i*shardSize:(i+1)*shardSize], e.dictTable[i*shardSize:(i+1)*shardSize]) + e.shortTableShardDirty[i] = false + } + } + } + { + dirtyShardCnt := 0 + if !e.allDirty { + for i := range e.shortTableShardDirty { + if e.shortTableShardDirty[i] { + dirtyShardCnt++ + } + } + } + const shardCnt = betterLongTableShardCnt + const shardSize = betterLongTableShardSize + if e.allDirty || dirtyShardCnt > shardCnt*4/6 { + copy(e.longTable[:], e.dictLongTable) + for i := range e.longTableShardDirty { + e.longTableShardDirty[i] = false + } + } else { + for i := range e.longTableShardDirty { + if !e.longTableShardDirty[i] { + continue + } + + copy(e.longTable[i*shardSize:(i+1)*shardSize], e.dictLongTable[i*shardSize:(i+1)*shardSize]) + e.longTableShardDirty[i] = false + } + } + } + e.cur = e.maxMatchOff + e.allDirty = false +} + +func (e *betterFastEncoderDict) markLongShardDirty(entryNum uint32) { + e.longTableShardDirty[entryNum/betterLongTableShardSize] = true +} + +func (e *betterFastEncoderDict) markShortShardDirty(entryNum uint32) { + e.shortTableShardDirty[entryNum/betterShortTableShardSize] = true +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go new file mode 100644 index 0000000..a154c18 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_dfast.go @@ -0,0 +1,1123 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import "fmt" + +const ( + dFastLongTableBits = 17 // Bits used in the long match table + dFastLongTableSize = 1 << dFastLongTableBits // Size of the table + dFastLongTableMask = dFastLongTableSize - 1 // Mask for table indices. Redundant, but can eliminate bounds checks. + dFastLongLen = 8 // Bytes used for table hash + + dLongTableShardCnt = 1 << (dFastLongTableBits - dictShardBits) // Number of shards in the table + dLongTableShardSize = dFastLongTableSize / tableShardCnt // Size of an individual shard + + dFastShortTableBits = tableBits // Bits used in the short match table + dFastShortTableSize = 1 << dFastShortTableBits // Size of the table + dFastShortTableMask = dFastShortTableSize - 1 // Mask for table indices. Redundant, but can eliminate bounds checks. + dFastShortLen = 5 // Bytes used for table hash + +) + +type doubleFastEncoder struct { + fastEncoder + longTable [dFastLongTableSize]tableEntry +} + +type doubleFastEncoderDict struct { + fastEncoderDict + longTable [dFastLongTableSize]tableEntry + dictLongTable []tableEntry + longTableShardDirty [dLongTableShardCnt]bool +} + +// Encode mimmics functionality in zstd_dfast.c +func (e *doubleFastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [dFastShortTableSize]tableEntry{} + e.longTable = [dFastLongTableSize]tableEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.longTable[i].offset = v + } + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 8 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += lenght + repOff + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + } + // Find the offsets of our two matches. + coffsetL := s - (candidateL.offset - e.cur) + coffsetS := s - (candidateS.offset - e.cur) + + // Check if we have a long match. + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + // Check if we have a short match. + if coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, dFastLongTableBits, dFastLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = s - (candidateL.offset - e.cur) + checkAt + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = tableEntry{offset: s + checkAt + e.cur, val: uint32(cv)} + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + s += checkAt + if debugMatches { + println("long match (after short)") + } + break + } + + t = candidateS.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) and start+2 (short) + index0 := s - l + 1 + // Index match end-2 (long) and end-1 (short) + index1 := s - 2 + + cv0 := load6432(src, index0) + cv1 := load6432(src, index1) + te0 := tableEntry{offset: index0 + e.cur, val: uint32(cv0)} + te1 := tableEntry{offset: index1 + e.cur, val: uint32(cv1)} + e.longTable[hashLen(cv0, dFastLongTableBits, dFastLongLen)] = te0 + e.longTable[hashLen(cv1, dFastLongTableBits, dFastLongLen)] = te1 + cv0 >>= 8 + cv1 >>= 8 + te0.offset++ + te1.offset++ + te0.val = uint32(cv0) + te1.val = uint32(cv1) + e.table[hashLen(cv0, dFastShortTableBits, dFastShortLen)] = te0 + e.table[hashLen(cv1, dFastShortTableBits, dFastShortLen)] = te1 + + cv = load6432(src, s) + + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *doubleFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + if e.cur >= e.bufferReset { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + for i := range e.longTable[:] { + e.longTable[i] = tableEntry{} + } + e.cur = e.maxMatchOff + } + + s := int32(0) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 8 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + for { + + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + + if len(blk.sequences) > 2 { + if load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + //length := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + length := 4 + int32(matchLen(src[s+4+repOff:], src[repIndex+4:])) + + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + repOff + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + } + // Find the offsets of our two matches. + coffsetL := s - (candidateL.offset - e.cur) + coffsetS := s - (candidateS.offset - e.cur) + + // Check if we have a long match. + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d). cur: %d", s, t, e.cur)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + // Check if we have a short match. + if coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, dFastLongTableBits, dFastLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = s - (candidateL.offset - e.cur) + checkAt + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = tableEntry{offset: s + checkAt + e.cur, val: uint32(cv)} + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + s += checkAt + if debugMatches { + println("long match (after short)") + } + break + } + + t = candidateS.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + // Extend the 4-byte match as long as possible. + //l := e.matchlen(s+4, t+4, src) + 4 + l := int32(matchLen(src[s+4:], src[t+4:])) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) and start+2 (short) + index0 := s - l + 1 + // Index match end-2 (long) and end-1 (short) + index1 := s - 2 + + cv0 := load6432(src, index0) + cv1 := load6432(src, index1) + te0 := tableEntry{offset: index0 + e.cur, val: uint32(cv0)} + te1 := tableEntry{offset: index1 + e.cur, val: uint32(cv1)} + e.longTable[hashLen(cv0, dFastLongTableBits, dFastLongLen)] = te0 + e.longTable[hashLen(cv1, dFastLongTableBits, dFastLongLen)] = te1 + cv0 >>= 8 + cv1 >>= 8 + te0.offset++ + te1.offset++ + te0.val = uint32(cv0) + te1.val = uint32(cv1) + e.table[hashLen(cv0, dFastShortTableBits, dFastShortLen)] = te0 + e.table[hashLen(cv1, dFastShortTableBits, dFastShortLen)] = te1 + + cv = load6432(src, s) + + if len(blk.sequences) <= 2 { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashS := hashLen(cv1>>8, dFastShortTableBits, dFastShortLen) + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + //l := 4 + e.matchlen(s+4, o2+4, src) + l := 4 + int32(matchLen(src[s+4:], src[o2+4:])) + + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.table[nextHashS] = entry + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } + + // We do not store history, so we must offset e.cur to avoid false matches for next user. + if e.cur < e.bufferReset { + e.cur += int32(len(src)) + } +} + +// Encode will encode the content, with a dictionary if initialized for it. +func (e *doubleFastEncoderDict) Encode(blk *blockEnc, src []byte) { + const ( + // Input margin is the number of bytes we read (8) + // and the maximum we will read ahead (2) + inputMargin = 8 + 2 + minNonLiteralBlockSize = 16 + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + for i := range e.longTable[:] { + e.longTable[i] = tableEntry{} + } + e.markAllShardsDirty() + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + for i := range e.longTable[:] { + v := e.longTable[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.longTable[i].offset = v + } + e.markAllShardsDirty() + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 1. + const stepSize = 1 + + const kSearchStrength = 8 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + var t int32 + // We allow the encoder to optionally turn off repeat offsets across blocks + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + candidateL := e.longTable[nextHashL] + candidateS := e.table[nextHashS] + + const repOff = 1 + repIndex := s - offset1 + repOff + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = entry + e.markShardDirty(nextHashS) + + if canRepeat { + if repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>(repOff*8)) { + // Consider history as well. + var seq seq + lenght := 4 + e.matchlen(s+4+repOff, repIndex+4, src) + + seq.matchLen = uint32(lenght - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + repOff + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch-1 { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += lenght + repOff + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, lenght) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + } + // Find the offsets of our two matches. + coffsetL := s - (candidateL.offset - e.cur) + coffsetS := s - (candidateS.offset - e.cur) + + // Check if we have a long match. + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugMatches { + println("long match") + } + break + } + + // Check if we have a short match. + if coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val { + // found a regular match + // See if we can find a long match at s+1 + const checkAt = 1 + cv := load6432(src, s+checkAt) + nextHashL = hashLen(cv, dFastLongTableBits, dFastLongLen) + candidateL = e.longTable[nextHashL] + coffsetL = s - (candidateL.offset - e.cur) + checkAt + + // We can store it, since we have at least a 4 byte match. + e.longTable[nextHashL] = tableEntry{offset: s + checkAt + e.cur, val: uint32(cv)} + e.markLongShardDirty(nextHashL) + if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val { + // Found a long match, likely at least 8 bytes. + // Reference encoder checks all 8 bytes, we only check 4, + // but the likelihood of both the first 4 bytes and the hash matching should be enough. + t = candidateL.offset - e.cur + s += checkAt + if debugMatches { + println("long match (after short)") + } + break + } + + t = candidateS.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + if debugMatches { + println("short match") + } + break + } + + // No match found, move forward in input. + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + + // A 4-byte match has been found. Update recent offsets. + // We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + + // Index match start+1 (long) and start+2 (short) + index0 := s - l + 1 + // Index match end-2 (long) and end-1 (short) + index1 := s - 2 + + cv0 := load6432(src, index0) + cv1 := load6432(src, index1) + te0 := tableEntry{offset: index0 + e.cur, val: uint32(cv0)} + te1 := tableEntry{offset: index1 + e.cur, val: uint32(cv1)} + longHash1 := hashLen(cv0, dFastLongTableBits, dFastLongLen) + longHash2 := hashLen(cv1, dFastLongTableBits, dFastLongLen) + e.longTable[longHash1] = te0 + e.longTable[longHash2] = te1 + e.markLongShardDirty(longHash1) + e.markLongShardDirty(longHash2) + cv0 >>= 8 + cv1 >>= 8 + te0.offset++ + te1.offset++ + te0.val = uint32(cv0) + te1.val = uint32(cv1) + hashVal1 := hashLen(cv0, dFastShortTableBits, dFastShortLen) + hashVal2 := hashLen(cv1, dFastShortTableBits, dFastShortLen) + e.table[hashVal1] = te0 + e.markShardDirty(hashVal1) + e.table[hashVal2] = te1 + e.markShardDirty(hashVal2) + + cv = load6432(src, s) + + if !canRepeat { + continue + } + + // Check offset 2 + for { + o2 := s - offset2 + if load3232(src, o2) != uint32(cv) { + // Do regular search + break + } + + // Store this, since we have it. + nextHashL := hashLen(cv, dFastLongTableBits, dFastLongLen) + nextHashS := hashLen(cv, dFastShortTableBits, dFastShortLen) + + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + entry := tableEntry{offset: s + e.cur, val: uint32(cv)} + e.longTable[nextHashL] = entry + e.markLongShardDirty(nextHashL) + e.table[nextHashS] = entry + e.markShardDirty(nextHashS) + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + // Finished + break encodeLoop + } + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } + // If we encoded more than 64K mark all dirty. + if len(src) > 64<<10 { + e.markAllShardsDirty() + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *doubleFastEncoder) Reset(d *dict, singleBlock bool) { + e.fastEncoder.Reset(d, singleBlock) + if d != nil { + panic("doubleFastEncoder: Reset with dict not supported") + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *doubleFastEncoderDict) Reset(d *dict, singleBlock bool) { + allDirty := e.allDirty + e.fastEncoderDict.Reset(d, singleBlock) + if d == nil { + return + } + + // Init or copy dict table + if len(e.dictLongTable) != len(e.longTable) || d.id != e.lastDictID { + if len(e.dictLongTable) != len(e.longTable) { + e.dictLongTable = make([]tableEntry, len(e.longTable)) + } + if len(d.content) >= 8 { + cv := load6432(d.content, 0) + e.dictLongTable[hashLen(cv, dFastLongTableBits, dFastLongLen)] = tableEntry{ + val: uint32(cv), + offset: e.maxMatchOff, + } + end := int32(len(d.content)) - 8 + e.maxMatchOff + for i := e.maxMatchOff + 1; i < end; i++ { + cv = cv>>8 | (uint64(d.content[i-e.maxMatchOff+7]) << 56) + e.dictLongTable[hashLen(cv, dFastLongTableBits, dFastLongLen)] = tableEntry{ + val: uint32(cv), + offset: i, + } + } + } + e.lastDictID = d.id + allDirty = true + } + // Reset table to initial state + e.cur = e.maxMatchOff + + dirtyShardCnt := 0 + if !allDirty { + for i := range e.longTableShardDirty { + if e.longTableShardDirty[i] { + dirtyShardCnt++ + } + } + } + + if allDirty || dirtyShardCnt > dLongTableShardCnt/2 { + //copy(e.longTable[:], e.dictLongTable) + e.longTable = *(*[dFastLongTableSize]tableEntry)(e.dictLongTable) + for i := range e.longTableShardDirty { + e.longTableShardDirty[i] = false + } + return + } + for i := range e.longTableShardDirty { + if !e.longTableShardDirty[i] { + continue + } + + // copy(e.longTable[i*dLongTableShardSize:(i+1)*dLongTableShardSize], e.dictLongTable[i*dLongTableShardSize:(i+1)*dLongTableShardSize]) + *(*[dLongTableShardSize]tableEntry)(e.longTable[i*dLongTableShardSize:]) = *(*[dLongTableShardSize]tableEntry)(e.dictLongTable[i*dLongTableShardSize:]) + + e.longTableShardDirty[i] = false + } +} + +func (e *doubleFastEncoderDict) markLongShardDirty(entryNum uint32) { + e.longTableShardDirty[entryNum/dLongTableShardSize] = true +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go new file mode 100644 index 0000000..f45a3da --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/enc_fast.go @@ -0,0 +1,891 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "fmt" +) + +const ( + tableBits = 15 // Bits used in the table + tableSize = 1 << tableBits // Size of the table + tableShardCnt = 1 << (tableBits - dictShardBits) // Number of shards in the table + tableShardSize = tableSize / tableShardCnt // Size of an individual shard + tableFastHashLen = 6 + tableMask = tableSize - 1 // Mask for table indices. Redundant, but can eliminate bounds checks. + maxMatchLength = 131074 +) + +type tableEntry struct { + val uint32 + offset int32 +} + +type fastEncoder struct { + fastBase + table [tableSize]tableEntry +} + +type fastEncoderDict struct { + fastEncoder + dictTable []tableEntry + tableShardDirty [tableShardCnt]bool + allDirty bool +} + +// Encode mimmics functionality in zstd_fast.c +func (e *fastEncoder) Encode(blk *blockEnc, src []byte) { + const ( + inputMargin = 8 + minNonLiteralBlockSize = 1 + 1 + inputMargin + ) + + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 2. + const stepSize = 2 + + // TEMPLATE + const hashLog = tableBits + // seems global, but would be nice to tweak. + const kSearchStrength = 6 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // t will contain the match offset when we find one. + // When existing the search loop, we have already checked 4 bytes. + var t int32 + + // We will not use repeat offsets across blocks. + // By not using them for the first 3 matches + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHash := hashLen(cv, hashLog, tableFastHashLen) + nextHash2 := hashLen(cv>>8, hashLog, tableFastHashLen) + candidate := e.table[nextHash] + candidate2 := e.table[nextHash2] + repIndex := s - offset1 + 2 + + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.table[nextHash2] = tableEntry{offset: s + e.cur + 1, val: uint32(cv >> 8)} + + if canRepeat && repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>16) { + // Consider history as well. + var seq seq + length := 4 + e.matchlen(s+6, repIndex+4, src) + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + 2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + sMin := s - e.maxMatchOff + if sMin < 0 { + sMin = 0 + } + for repIndex > sMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + 2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + coffset0 := s - (candidate.offset - e.cur) + coffset1 := s - (candidate2.offset - e.cur) + 1 + if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val { + // found a regular match + t = candidate.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + break + } + + if coffset1 < e.maxMatchOff && uint32(cv>>8) == candidate2.val { + // found a regular match + t = candidate2.offset - e.cur + s++ + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + break + } + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // A 4-byte match has been found. We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence. + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + // Don't use repeat offsets + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + + // Check offset 2 + if o2 := s - offset2; canRepeat && load3232(src, o2) == uint32(cv) { + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + // Store this, since we have it. + nextHash := hashLen(cv, hashLog, tableFastHashLen) + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + break encodeLoop + } + // Prepare next loop. + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// EncodeNoHist will encode a block with no history and no following blocks. +// Most notable difference is that src will not be copied for history and +// we do not need to check for max match length. +func (e *fastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { + const ( + inputMargin = 8 + minNonLiteralBlockSize = 1 + 1 + inputMargin + ) + if debugEncoder { + if len(src) > maxCompressedBlockSize { + panic("src too big") + } + } + + // Protect against e.cur wraparound. + if e.cur >= e.bufferReset { + for i := range e.table[:] { + e.table[i] = tableEntry{} + } + e.cur = e.maxMatchOff + } + + s := int32(0) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 2. + const stepSize = 2 + + // TEMPLATE + const hashLog = tableBits + // seems global, but would be nice to tweak. + const kSearchStrength = 6 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // t will contain the match offset when we find one. + // When existing the search loop, we have already checked 4 bytes. + var t int32 + + // We will not use repeat offsets across blocks. + // By not using them for the first 3 matches + + for { + nextHash := hashLen(cv, hashLog, tableFastHashLen) + nextHash2 := hashLen(cv>>8, hashLog, tableFastHashLen) + candidate := e.table[nextHash] + candidate2 := e.table[nextHash2] + repIndex := s - offset1 + 2 + + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.table[nextHash2] = tableEntry{offset: s + e.cur + 1, val: uint32(cv >> 8)} + + if len(blk.sequences) > 2 && load3232(src, repIndex) == uint32(cv>>16) { + // Consider history as well. + var seq seq + length := 4 + e.matchlen(s+6, repIndex+4, src) + + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + 2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + sMin := s - e.maxMatchOff + if sMin < 0 { + sMin = 0 + } + for repIndex > sMin && start > startLimit && src[repIndex-1] == src[start-1] { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + 2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + coffset0 := s - (candidate.offset - e.cur) + coffset1 := s - (candidate2.offset - e.cur) + 1 + if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val { + // found a regular match + t = candidate.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic(fmt.Sprintf("t (%d) < 0, candidate.offset: %d, e.cur: %d, coffset0: %d, e.maxMatchOff: %d", t, candidate.offset, e.cur, coffset0, e.maxMatchOff)) + } + break + } + + if coffset1 < e.maxMatchOff && uint32(cv>>8) == candidate2.val { + // found a regular match + t = candidate2.offset - e.cur + s++ + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + break + } + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // A 4-byte match has been found. We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && t < 0 { + panic(fmt.Sprintf("t (%d) < 0 ", t)) + } + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] { + s-- + t-- + l++ + } + + // Write our sequence. + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + // Don't use repeat offsets + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + + // Check offset 2 + if o2 := s - offset2; len(blk.sequences) > 2 && load3232(src, o2) == uint32(cv) { + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + // Store this, since we have it. + nextHash := hashLen(cv, hashLog, tableFastHashLen) + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + break encodeLoop + } + // Prepare next loop. + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } + // We do not store history, so we must offset e.cur to avoid false matches for next user. + if e.cur < e.bufferReset { + e.cur += int32(len(src)) + } +} + +// Encode will encode the content, with a dictionary if initialized for it. +func (e *fastEncoderDict) Encode(blk *blockEnc, src []byte) { + const ( + inputMargin = 8 + minNonLiteralBlockSize = 1 + 1 + inputMargin + ) + if e.allDirty || len(src) > 32<<10 { + e.fastEncoder.Encode(blk, src) + e.allDirty = true + return + } + // Protect against e.cur wraparound. + for e.cur >= e.bufferReset-int32(len(e.hist)) { + if len(e.hist) == 0 { + e.table = [tableSize]tableEntry{} + e.cur = e.maxMatchOff + break + } + // Shift down everything in the table that isn't already too far away. + minOff := e.cur + int32(len(e.hist)) - e.maxMatchOff + for i := range e.table[:] { + v := e.table[i].offset + if v < minOff { + v = 0 + } else { + v = v - e.cur + e.maxMatchOff + } + e.table[i].offset = v + } + e.cur = e.maxMatchOff + break + } + + s := e.addBlock(src) + blk.size = len(src) + if len(src) < minNonLiteralBlockSize { + blk.extraLits = len(src) + blk.literals = blk.literals[:len(src)] + copy(blk.literals, src) + return + } + + // Override src + src = e.hist + sLimit := int32(len(src)) - inputMargin + // stepSize is the number of bytes to skip on every main loop iteration. + // It should be >= 2. + const stepSize = 2 + + // TEMPLATE + const hashLog = tableBits + // seems global, but would be nice to tweak. + const kSearchStrength = 7 + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := s + cv := load6432(src, s) + + // Relative offsets + offset1 := int32(blk.recentOffsets[0]) + offset2 := int32(blk.recentOffsets[1]) + + addLiterals := func(s *seq, until int32) { + if until == nextEmit { + return + } + blk.literals = append(blk.literals, src[nextEmit:until]...) + s.litLen = uint32(until - nextEmit) + } + if debugEncoder { + println("recent offsets:", blk.recentOffsets) + } + +encodeLoop: + for { + // t will contain the match offset when we find one. + // When existing the search loop, we have already checked 4 bytes. + var t int32 + + // We will not use repeat offsets across blocks. + // By not using them for the first 3 matches + canRepeat := len(blk.sequences) > 2 + + for { + if debugAsserts && canRepeat && offset1 == 0 { + panic("offset0 was 0") + } + + nextHash := hashLen(cv, hashLog, tableFastHashLen) + nextHash2 := hashLen(cv>>8, hashLog, tableFastHashLen) + candidate := e.table[nextHash] + candidate2 := e.table[nextHash2] + repIndex := s - offset1 + 2 + + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.markShardDirty(nextHash) + e.table[nextHash2] = tableEntry{offset: s + e.cur + 1, val: uint32(cv >> 8)} + e.markShardDirty(nextHash2) + + if canRepeat && repIndex >= 0 && load3232(src, repIndex) == uint32(cv>>16) { + // Consider history as well. + var seq seq + length := 4 + e.matchlen(s+6, repIndex+4, src) + + seq.matchLen = uint32(length - zstdMinMatch) + + // We might be able to match backwards. + // Extend as long as we can. + start := s + 2 + // We end the search early, so we don't risk 0 literals + // and have to do special offset treatment. + startLimit := nextEmit + 1 + + sMin := s - e.maxMatchOff + if sMin < 0 { + sMin = 0 + } + for repIndex > sMin && start > startLimit && src[repIndex-1] == src[start-1] && seq.matchLen < maxMatchLength-zstdMinMatch { + repIndex-- + start-- + seq.matchLen++ + } + addLiterals(&seq, start) + + // rep 0 + seq.offset = 1 + if debugSequences { + println("repeat sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + s += length + 2 + nextEmit = s + if s >= sLimit { + if debugEncoder { + println("repeat ended", s, length) + + } + break encodeLoop + } + cv = load6432(src, s) + continue + } + coffset0 := s - (candidate.offset - e.cur) + coffset1 := s - (candidate2.offset - e.cur) + 1 + if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val { + // found a regular match + t = candidate.offset - e.cur + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + break + } + + if coffset1 < e.maxMatchOff && uint32(cv>>8) == candidate2.val { + // found a regular match + t = candidate2.offset - e.cur + s++ + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + if debugAsserts && s-t > e.maxMatchOff { + panic("s - t >e.maxMatchOff") + } + if debugAsserts && t < 0 { + panic("t<0") + } + break + } + s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1)) + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + } + // A 4-byte match has been found. We'll later see if more than 4 bytes. + offset2 = offset1 + offset1 = s - t + + if debugAsserts && s <= t { + panic(fmt.Sprintf("s (%d) <= t (%d)", s, t)) + } + + if debugAsserts && canRepeat && int(offset1) > len(src) { + panic("invalid offset") + } + + // Extend the 4-byte match as long as possible. + l := e.matchlen(s+4, t+4, src) + 4 + + // Extend backwards + tMin := s - e.maxMatchOff + if tMin < 0 { + tMin = 0 + } + for t > tMin && s > nextEmit && src[t-1] == src[s-1] && l < maxMatchLength { + s-- + t-- + l++ + } + + // Write our sequence. + var seq seq + seq.litLen = uint32(s - nextEmit) + seq.matchLen = uint32(l - zstdMinMatch) + if seq.litLen > 0 { + blk.literals = append(blk.literals, src[nextEmit:s]...) + } + // Don't use repeat offsets + seq.offset = uint32(s-t) + 3 + s += l + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + nextEmit = s + if s >= sLimit { + break encodeLoop + } + cv = load6432(src, s) + + // Check offset 2 + if o2 := s - offset2; canRepeat && load3232(src, o2) == uint32(cv) { + // We have at least 4 byte match. + // No need to check backwards. We come straight from a match + l := 4 + e.matchlen(s+4, o2+4, src) + + // Store this, since we have it. + nextHash := hashLen(cv, hashLog, tableFastHashLen) + e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)} + e.markShardDirty(nextHash) + seq.matchLen = uint32(l) - zstdMinMatch + seq.litLen = 0 + // Since litlen is always 0, this is offset 1. + seq.offset = 1 + s += l + nextEmit = s + if debugSequences { + println("sequence", seq, "next s:", s) + } + blk.sequences = append(blk.sequences, seq) + + // Swap offset 1 and 2. + offset1, offset2 = offset2, offset1 + if s >= sLimit { + break encodeLoop + } + // Prepare next loop. + cv = load6432(src, s) + } + } + + if int(nextEmit) < len(src) { + blk.literals = append(blk.literals, src[nextEmit:]...) + blk.extraLits = len(src) - int(nextEmit) + } + blk.recentOffsets[0] = uint32(offset1) + blk.recentOffsets[1] = uint32(offset2) + if debugEncoder { + println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits) + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *fastEncoder) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d != nil { + panic("fastEncoder: Reset with dict") + } +} + +// ResetDict will reset and set a dictionary if not nil +func (e *fastEncoderDict) Reset(d *dict, singleBlock bool) { + e.resetBase(d, singleBlock) + if d == nil { + return + } + + // Init or copy dict table + if len(e.dictTable) != len(e.table) || d.id != e.lastDictID { + if len(e.dictTable) != len(e.table) { + e.dictTable = make([]tableEntry, len(e.table)) + } + if true { + end := e.maxMatchOff + int32(len(d.content)) - 8 + for i := e.maxMatchOff; i < end; i += 2 { + const hashLog = tableBits + + cv := load6432(d.content, i-e.maxMatchOff) + nextHash := hashLen(cv, hashLog, tableFastHashLen) // 0 -> 6 + nextHash1 := hashLen(cv>>8, hashLog, tableFastHashLen) // 1 -> 7 + e.dictTable[nextHash] = tableEntry{ + val: uint32(cv), + offset: i, + } + e.dictTable[nextHash1] = tableEntry{ + val: uint32(cv >> 8), + offset: i + 1, + } + } + } + e.lastDictID = d.id + e.allDirty = true + } + + e.cur = e.maxMatchOff + dirtyShardCnt := 0 + if !e.allDirty { + for i := range e.tableShardDirty { + if e.tableShardDirty[i] { + dirtyShardCnt++ + } + } + } + + const shardCnt = tableShardCnt + const shardSize = tableShardSize + if e.allDirty || dirtyShardCnt > shardCnt*4/6 { + //copy(e.table[:], e.dictTable) + e.table = *(*[tableSize]tableEntry)(e.dictTable) + for i := range e.tableShardDirty { + e.tableShardDirty[i] = false + } + e.allDirty = false + return + } + for i := range e.tableShardDirty { + if !e.tableShardDirty[i] { + continue + } + + //copy(e.table[i*shardSize:(i+1)*shardSize], e.dictTable[i*shardSize:(i+1)*shardSize]) + *(*[shardSize]tableEntry)(e.table[i*shardSize:]) = *(*[shardSize]tableEntry)(e.dictTable[i*shardSize:]) + e.tableShardDirty[i] = false + } + e.allDirty = false +} + +func (e *fastEncoderDict) markAllShardsDirty() { + e.allDirty = true +} + +func (e *fastEncoderDict) markShardDirty(entryNum uint32) { + e.tableShardDirty[entryNum/tableShardSize] = true +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go new file mode 100644 index 0000000..72af7ef --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder.go @@ -0,0 +1,619 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "crypto/rand" + "fmt" + "io" + "math" + rdebug "runtime/debug" + "sync" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +// Encoder provides encoding to Zstandard. +// An Encoder can be used for either compressing a stream via the +// io.WriteCloser interface supported by the Encoder or as multiple independent +// tasks via the EncodeAll function. +// Smaller encodes are encouraged to use the EncodeAll function. +// Use NewWriter to create a new instance. +type Encoder struct { + o encoderOptions + encoders chan encoder + state encoderState + init sync.Once +} + +type encoder interface { + Encode(blk *blockEnc, src []byte) + EncodeNoHist(blk *blockEnc, src []byte) + Block() *blockEnc + CRC() *xxhash.Digest + AppendCRC([]byte) []byte + WindowSize(size int64) int32 + UseBlock(*blockEnc) + Reset(d *dict, singleBlock bool) +} + +type encoderState struct { + w io.Writer + filling []byte + current []byte + previous []byte + encoder encoder + writing *blockEnc + err error + writeErr error + nWritten int64 + nInput int64 + frameContentSize int64 + headerWritten bool + eofWritten bool + fullFrameWritten bool + + // This waitgroup indicates an encode is running. + wg sync.WaitGroup + // This waitgroup indicates we have a block encoding/writing. + wWg sync.WaitGroup +} + +// NewWriter will create a new Zstandard encoder. +// If the encoder will be used for encoding blocks a nil writer can be used. +func NewWriter(w io.Writer, opts ...EOption) (*Encoder, error) { + initPredefined() + var e Encoder + e.o.setDefault() + for _, o := range opts { + err := o(&e.o) + if err != nil { + return nil, err + } + } + if w != nil { + e.Reset(w) + } + return &e, nil +} + +func (e *Encoder) initialize() { + if e.o.concurrent == 0 { + e.o.setDefault() + } + e.encoders = make(chan encoder, e.o.concurrent) + for i := 0; i < e.o.concurrent; i++ { + enc := e.o.encoder() + e.encoders <- enc + } +} + +// Reset will re-initialize the writer and new writes will encode to the supplied writer +// as a new, independent stream. +func (e *Encoder) Reset(w io.Writer) { + s := &e.state + s.wg.Wait() + s.wWg.Wait() + if cap(s.filling) == 0 { + s.filling = make([]byte, 0, e.o.blockSize) + } + if e.o.concurrent > 1 { + if cap(s.current) == 0 { + s.current = make([]byte, 0, e.o.blockSize) + } + if cap(s.previous) == 0 { + s.previous = make([]byte, 0, e.o.blockSize) + } + s.current = s.current[:0] + s.previous = s.previous[:0] + if s.writing == nil { + s.writing = &blockEnc{lowMem: e.o.lowMem} + s.writing.init() + } + s.writing.initNewEncode() + } + if s.encoder == nil { + s.encoder = e.o.encoder() + } + s.filling = s.filling[:0] + s.encoder.Reset(e.o.dict, false) + s.headerWritten = false + s.eofWritten = false + s.fullFrameWritten = false + s.w = w + s.err = nil + s.nWritten = 0 + s.nInput = 0 + s.writeErr = nil + s.frameContentSize = 0 +} + +// ResetContentSize will reset and set a content size for the next stream. +// If the bytes written does not match the size given an error will be returned +// when calling Close(). +// This is removed when Reset is called. +// Sizes <= 0 results in no content size set. +func (e *Encoder) ResetContentSize(w io.Writer, size int64) { + e.Reset(w) + if size >= 0 { + e.state.frameContentSize = size + } +} + +// Write data to the encoder. +// Input data will be buffered and as the buffer fills up +// content will be compressed and written to the output. +// When done writing, use Close to flush the remaining output +// and write CRC if requested. +func (e *Encoder) Write(p []byte) (n int, err error) { + s := &e.state + for len(p) > 0 { + if len(p)+len(s.filling) < e.o.blockSize { + if e.o.crc { + _, _ = s.encoder.CRC().Write(p) + } + s.filling = append(s.filling, p...) + return n + len(p), nil + } + add := p + if len(p)+len(s.filling) > e.o.blockSize { + add = add[:e.o.blockSize-len(s.filling)] + } + if e.o.crc { + _, _ = s.encoder.CRC().Write(add) + } + s.filling = append(s.filling, add...) + p = p[len(add):] + n += len(add) + if len(s.filling) < e.o.blockSize { + return n, nil + } + err := e.nextBlock(false) + if err != nil { + return n, err + } + if debugAsserts && len(s.filling) > 0 { + panic(len(s.filling)) + } + } + return n, nil +} + +// nextBlock will synchronize and start compressing input in e.state.filling. +// If an error has occurred during encoding it will be returned. +func (e *Encoder) nextBlock(final bool) error { + s := &e.state + // Wait for current block. + s.wg.Wait() + if s.err != nil { + return s.err + } + if len(s.filling) > e.o.blockSize { + return fmt.Errorf("block > maxStoreBlockSize") + } + if !s.headerWritten { + // If we have a single block encode, do a sync compression. + if final && len(s.filling) == 0 && !e.o.fullZero { + s.headerWritten = true + s.fullFrameWritten = true + s.eofWritten = true + return nil + } + if final && len(s.filling) > 0 { + s.current = e.EncodeAll(s.filling, s.current[:0]) + var n2 int + n2, s.err = s.w.Write(s.current) + if s.err != nil { + return s.err + } + s.nWritten += int64(n2) + s.nInput += int64(len(s.filling)) + s.current = s.current[:0] + s.filling = s.filling[:0] + s.headerWritten = true + s.fullFrameWritten = true + s.eofWritten = true + return nil + } + + var tmp [maxHeaderSize]byte + fh := frameHeader{ + ContentSize: uint64(s.frameContentSize), + WindowSize: uint32(s.encoder.WindowSize(s.frameContentSize)), + SingleSegment: false, + Checksum: e.o.crc, + DictID: e.o.dict.ID(), + } + + dst := fh.appendTo(tmp[:0]) + s.headerWritten = true + s.wWg.Wait() + var n2 int + n2, s.err = s.w.Write(dst) + if s.err != nil { + return s.err + } + s.nWritten += int64(n2) + } + if s.eofWritten { + // Ensure we only write it once. + final = false + } + + if len(s.filling) == 0 { + // Final block, but no data. + if final { + enc := s.encoder + blk := enc.Block() + blk.reset(nil) + blk.last = true + blk.encodeRaw(nil) + s.wWg.Wait() + _, s.err = s.w.Write(blk.output) + s.nWritten += int64(len(blk.output)) + s.eofWritten = true + } + return s.err + } + + // SYNC: + if e.o.concurrent == 1 { + src := s.filling + s.nInput += int64(len(s.filling)) + if debugEncoder { + println("Adding sync block,", len(src), "bytes, final:", final) + } + enc := s.encoder + blk := enc.Block() + blk.reset(nil) + enc.Encode(blk, src) + blk.last = final + if final { + s.eofWritten = true + } + + s.err = blk.encode(src, e.o.noEntropy, !e.o.allLitEntropy) + if s.err != nil { + return s.err + } + _, s.err = s.w.Write(blk.output) + s.nWritten += int64(len(blk.output)) + s.filling = s.filling[:0] + return s.err + } + + // Move blocks forward. + s.filling, s.current, s.previous = s.previous[:0], s.filling, s.current + s.nInput += int64(len(s.current)) + s.wg.Add(1) + go func(src []byte) { + if debugEncoder { + println("Adding block,", len(src), "bytes, final:", final) + } + defer func() { + if r := recover(); r != nil { + s.err = fmt.Errorf("panic while encoding: %v", r) + rdebug.PrintStack() + } + s.wg.Done() + }() + enc := s.encoder + blk := enc.Block() + enc.Encode(blk, src) + blk.last = final + if final { + s.eofWritten = true + } + // Wait for pending writes. + s.wWg.Wait() + if s.writeErr != nil { + s.err = s.writeErr + return + } + // Transfer encoders from previous write block. + blk.swapEncoders(s.writing) + // Transfer recent offsets to next. + enc.UseBlock(s.writing) + s.writing = blk + s.wWg.Add(1) + go func() { + defer func() { + if r := recover(); r != nil { + s.writeErr = fmt.Errorf("panic while encoding/writing: %v", r) + rdebug.PrintStack() + } + s.wWg.Done() + }() + s.writeErr = blk.encode(src, e.o.noEntropy, !e.o.allLitEntropy) + if s.writeErr != nil { + return + } + _, s.writeErr = s.w.Write(blk.output) + s.nWritten += int64(len(blk.output)) + }() + }(s.current) + return nil +} + +// ReadFrom reads data from r until EOF or error. +// The return value n is the number of bytes read. +// Any error except io.EOF encountered during the read is also returned. +// +// The Copy function uses ReaderFrom if available. +func (e *Encoder) ReadFrom(r io.Reader) (n int64, err error) { + if debugEncoder { + println("Using ReadFrom") + } + + // Flush any current writes. + if len(e.state.filling) > 0 { + if err := e.nextBlock(false); err != nil { + return 0, err + } + } + e.state.filling = e.state.filling[:e.o.blockSize] + src := e.state.filling + for { + n2, err := r.Read(src) + if e.o.crc { + _, _ = e.state.encoder.CRC().Write(src[:n2]) + } + // src is now the unfilled part... + src = src[n2:] + n += int64(n2) + switch err { + case io.EOF: + e.state.filling = e.state.filling[:len(e.state.filling)-len(src)] + if debugEncoder { + println("ReadFrom: got EOF final block:", len(e.state.filling)) + } + return n, nil + case nil: + default: + if debugEncoder { + println("ReadFrom: got error:", err) + } + e.state.err = err + return n, err + } + if len(src) > 0 { + if debugEncoder { + println("ReadFrom: got space left in source:", len(src)) + } + continue + } + err = e.nextBlock(false) + if err != nil { + return n, err + } + e.state.filling = e.state.filling[:e.o.blockSize] + src = e.state.filling + } +} + +// Flush will send the currently written data to output +// and block until everything has been written. +// This should only be used on rare occasions where pushing the currently queued data is critical. +func (e *Encoder) Flush() error { + s := &e.state + if len(s.filling) > 0 { + err := e.nextBlock(false) + if err != nil { + return err + } + } + s.wg.Wait() + s.wWg.Wait() + if s.err != nil { + return s.err + } + return s.writeErr +} + +// Close will flush the final output and close the stream. +// The function will block until everything has been written. +// The Encoder can still be re-used after calling this. +func (e *Encoder) Close() error { + s := &e.state + if s.encoder == nil { + return nil + } + err := e.nextBlock(true) + if err != nil { + return err + } + if s.frameContentSize > 0 { + if s.nInput != s.frameContentSize { + return fmt.Errorf("frame content size %d given, but %d bytes was written", s.frameContentSize, s.nInput) + } + } + if e.state.fullFrameWritten { + return s.err + } + s.wg.Wait() + s.wWg.Wait() + + if s.err != nil { + return s.err + } + if s.writeErr != nil { + return s.writeErr + } + + // Write CRC + if e.o.crc && s.err == nil { + // heap alloc. + var tmp [4]byte + _, s.err = s.w.Write(s.encoder.AppendCRC(tmp[:0])) + s.nWritten += 4 + } + + // Add padding with content from crypto/rand.Reader + if s.err == nil && e.o.pad > 0 { + add := calcSkippableFrame(s.nWritten, int64(e.o.pad)) + frame, err := skippableFrame(s.filling[:0], add, rand.Reader) + if err != nil { + return err + } + _, s.err = s.w.Write(frame) + } + return s.err +} + +// EncodeAll will encode all input in src and append it to dst. +// This function can be called concurrently, but each call will only run on a single goroutine. +// If empty input is given, nothing is returned, unless WithZeroFrames is specified. +// Encoded blocks can be concatenated and the result will be the combined input stream. +// Data compressed with EncodeAll can be decoded with the Decoder, +// using either a stream or DecodeAll. +func (e *Encoder) EncodeAll(src, dst []byte) []byte { + if len(src) == 0 { + if e.o.fullZero { + // Add frame header. + fh := frameHeader{ + ContentSize: 0, + WindowSize: MinWindowSize, + SingleSegment: true, + // Adding a checksum would be a waste of space. + Checksum: false, + DictID: 0, + } + dst = fh.appendTo(dst) + + // Write raw block as last one only. + var blk blockHeader + blk.setSize(0) + blk.setType(blockTypeRaw) + blk.setLast(true) + dst = blk.appendTo(dst) + } + return dst + } + e.init.Do(e.initialize) + enc := <-e.encoders + defer func() { + // Release encoder reference to last block. + // If a non-single block is needed the encoder will reset again. + e.encoders <- enc + }() + // Use single segments when above minimum window and below window size. + single := len(src) <= e.o.windowSize && len(src) > MinWindowSize + if e.o.single != nil { + single = *e.o.single + } + fh := frameHeader{ + ContentSize: uint64(len(src)), + WindowSize: uint32(enc.WindowSize(int64(len(src)))), + SingleSegment: single, + Checksum: e.o.crc, + DictID: e.o.dict.ID(), + } + + // If less than 1MB, allocate a buffer up front. + if len(dst) == 0 && cap(dst) == 0 && len(src) < 1<<20 && !e.o.lowMem { + dst = make([]byte, 0, len(src)) + } + dst = fh.appendTo(dst) + + // If we can do everything in one block, prefer that. + if len(src) <= e.o.blockSize { + enc.Reset(e.o.dict, true) + // Slightly faster with no history and everything in one block. + if e.o.crc { + _, _ = enc.CRC().Write(src) + } + blk := enc.Block() + blk.last = true + if e.o.dict == nil { + enc.EncodeNoHist(blk, src) + } else { + enc.Encode(blk, src) + } + + // If we got the exact same number of literals as input, + // assume the literals cannot be compressed. + oldout := blk.output + // Output directly to dst + blk.output = dst + + err := blk.encode(src, e.o.noEntropy, !e.o.allLitEntropy) + if err != nil { + panic(err) + } + dst = blk.output + blk.output = oldout + } else { + enc.Reset(e.o.dict, false) + blk := enc.Block() + for len(src) > 0 { + todo := src + if len(todo) > e.o.blockSize { + todo = todo[:e.o.blockSize] + } + src = src[len(todo):] + if e.o.crc { + _, _ = enc.CRC().Write(todo) + } + blk.pushOffsets() + enc.Encode(blk, todo) + if len(src) == 0 { + blk.last = true + } + err := blk.encode(todo, e.o.noEntropy, !e.o.allLitEntropy) + if err != nil { + panic(err) + } + dst = append(dst, blk.output...) + blk.reset(nil) + } + } + if e.o.crc { + dst = enc.AppendCRC(dst) + } + // Add padding with content from crypto/rand.Reader + if e.o.pad > 0 { + add := calcSkippableFrame(int64(len(dst)), int64(e.o.pad)) + var err error + dst, err = skippableFrame(dst, add, rand.Reader) + if err != nil { + panic(err) + } + } + return dst +} + +// MaxEncodedSize returns the expected maximum +// size of an encoded block or stream. +func (e *Encoder) MaxEncodedSize(size int) int { + frameHeader := 4 + 2 // magic + frame header & window descriptor + if e.o.dict != nil { + frameHeader += 4 + } + // Frame content size: + if size < 256 { + frameHeader++ + } else if size < 65536+256 { + frameHeader += 2 + } else if size < math.MaxInt32 { + frameHeader += 4 + } else { + frameHeader += 8 + } + // Final crc + if e.o.crc { + frameHeader += 4 + } + + // Max overhead is 3 bytes/block. + // There cannot be 0 blocks. + blocks := (size + e.o.blockSize) / e.o.blockSize + + // Combine, add padding. + maxSz := frameHeader + 3*blocks + size + if e.o.pad > 1 { + maxSz += calcSkippableFrame(int64(maxSz), int64(e.o.pad)) + } + return maxSz +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go new file mode 100644 index 0000000..20671dc --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/encoder_options.go @@ -0,0 +1,339 @@ +package zstd + +import ( + "errors" + "fmt" + "math" + "math/bits" + "runtime" + "strings" +) + +// EOption is an option for creating a encoder. +type EOption func(*encoderOptions) error + +// options retains accumulated state of multiple options. +type encoderOptions struct { + concurrent int + level EncoderLevel + single *bool + pad int + blockSize int + windowSize int + crc bool + fullZero bool + noEntropy bool + allLitEntropy bool + customWindow bool + customALEntropy bool + customBlockSize bool + lowMem bool + dict *dict +} + +func (o *encoderOptions) setDefault() { + *o = encoderOptions{ + concurrent: runtime.GOMAXPROCS(0), + crc: true, + single: nil, + blockSize: maxCompressedBlockSize, + windowSize: 8 << 20, + level: SpeedDefault, + allLitEntropy: false, + lowMem: false, + } +} + +// encoder returns an encoder with the selected options. +func (o encoderOptions) encoder() encoder { + switch o.level { + case SpeedFastest: + if o.dict != nil { + return &fastEncoderDict{fastEncoder: fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}} + } + return &fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}} + + case SpeedDefault: + if o.dict != nil { + return &doubleFastEncoderDict{fastEncoderDict: fastEncoderDict{fastEncoder: fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}}} + } + return &doubleFastEncoder{fastEncoder: fastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}} + case SpeedBetterCompression: + if o.dict != nil { + return &betterFastEncoderDict{betterFastEncoder: betterFastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}}} + } + return &betterFastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}} + case SpeedBestCompression: + return &bestFastEncoder{fastBase: fastBase{maxMatchOff: int32(o.windowSize), bufferReset: math.MaxInt32 - int32(o.windowSize*2), lowMem: o.lowMem}} + } + panic("unknown compression level") +} + +// WithEncoderCRC will add CRC value to output. +// Output will be 4 bytes larger. +func WithEncoderCRC(b bool) EOption { + return func(o *encoderOptions) error { o.crc = b; return nil } +} + +// WithEncoderConcurrency will set the concurrency, +// meaning the maximum number of encoders to run concurrently. +// The value supplied must be at least 1. +// For streams, setting a value of 1 will disable async compression. +// By default this will be set to GOMAXPROCS. +func WithEncoderConcurrency(n int) EOption { + return func(o *encoderOptions) error { + if n <= 0 { + return fmt.Errorf("concurrency must be at least 1") + } + o.concurrent = n + return nil + } +} + +// WithWindowSize will set the maximum allowed back-reference distance. +// The value must be a power of two between MinWindowSize and MaxWindowSize. +// A larger value will enable better compression but allocate more memory and, +// for above-default values, take considerably longer. +// The default value is determined by the compression level and max 8MB. +func WithWindowSize(n int) EOption { + return func(o *encoderOptions) error { + switch { + case n < MinWindowSize: + return fmt.Errorf("window size must be at least %d", MinWindowSize) + case n > MaxWindowSize: + return fmt.Errorf("window size must be at most %d", MaxWindowSize) + case (n & (n - 1)) != 0: + return errors.New("window size must be a power of 2") + } + + o.windowSize = n + o.customWindow = true + if o.blockSize > o.windowSize { + o.blockSize = o.windowSize + o.customBlockSize = true + } + return nil + } +} + +// WithEncoderPadding will add padding to all output so the size will be a multiple of n. +// This can be used to obfuscate the exact output size or make blocks of a certain size. +// The contents will be a skippable frame, so it will be invisible by the decoder. +// n must be > 0 and <= 1GB, 1<<30 bytes. +// The padded area will be filled with data from crypto/rand.Reader. +// If `EncodeAll` is used with data already in the destination, the total size will be multiple of this. +func WithEncoderPadding(n int) EOption { + return func(o *encoderOptions) error { + if n <= 0 { + return fmt.Errorf("padding must be at least 1") + } + // No need to waste our time. + if n == 1 { + n = 0 + } + if n > 1<<30 { + return fmt.Errorf("padding must less than 1GB (1<<30 bytes) ") + } + o.pad = n + return nil + } +} + +// EncoderLevel predefines encoder compression levels. +// Only use the constants made available, since the actual mapping +// of these values are very likely to change and your compression could change +// unpredictably when upgrading the library. +type EncoderLevel int + +const ( + speedNotSet EncoderLevel = iota + + // SpeedFastest will choose the fastest reasonable compression. + // This is roughly equivalent to the fastest Zstandard mode. + SpeedFastest + + // SpeedDefault is the default "pretty fast" compression option. + // This is roughly equivalent to the default Zstandard mode (level 3). + SpeedDefault + + // SpeedBetterCompression will yield better compression than the default. + // Currently it is about zstd level 7-8 with ~ 2x-3x the default CPU usage. + // By using this, notice that CPU usage may go up in the future. + SpeedBetterCompression + + // SpeedBestCompression will choose the best available compression option. + // This will offer the best compression no matter the CPU cost. + SpeedBestCompression + + // speedLast should be kept as the last actual compression option. + // The is not for external usage, but is used to keep track of the valid options. + speedLast +) + +// EncoderLevelFromString will convert a string representation of an encoding level back +// to a compression level. The compare is not case sensitive. +// If the string wasn't recognized, (false, SpeedDefault) will be returned. +func EncoderLevelFromString(s string) (bool, EncoderLevel) { + for l := speedNotSet + 1; l < speedLast; l++ { + if strings.EqualFold(s, l.String()) { + return true, l + } + } + return false, SpeedDefault +} + +// EncoderLevelFromZstd will return an encoder level that closest matches the compression +// ratio of a specific zstd compression level. +// Many input values will provide the same compression level. +func EncoderLevelFromZstd(level int) EncoderLevel { + switch { + case level < 3: + return SpeedFastest + case level >= 3 && level < 6: + return SpeedDefault + case level >= 6 && level < 10: + return SpeedBetterCompression + default: + return SpeedBestCompression + } +} + +// String provides a string representation of the compression level. +func (e EncoderLevel) String() string { + switch e { + case SpeedFastest: + return "fastest" + case SpeedDefault: + return "default" + case SpeedBetterCompression: + return "better" + case SpeedBestCompression: + return "best" + default: + return "invalid" + } +} + +// WithEncoderLevel specifies a predefined compression level. +func WithEncoderLevel(l EncoderLevel) EOption { + return func(o *encoderOptions) error { + switch { + case l <= speedNotSet || l >= speedLast: + return fmt.Errorf("unknown encoder level") + } + o.level = l + if !o.customWindow { + switch o.level { + case SpeedFastest: + o.windowSize = 4 << 20 + if !o.customBlockSize { + o.blockSize = 1 << 16 + } + case SpeedDefault: + o.windowSize = 8 << 20 + case SpeedBetterCompression: + o.windowSize = 8 << 20 + case SpeedBestCompression: + o.windowSize = 8 << 20 + } + } + if !o.customALEntropy { + o.allLitEntropy = l > SpeedDefault + } + + return nil + } +} + +// WithZeroFrames will encode 0 length input as full frames. +// This can be needed for compatibility with zstandard usage, +// but is not needed for this package. +func WithZeroFrames(b bool) EOption { + return func(o *encoderOptions) error { + o.fullZero = b + return nil + } +} + +// WithAllLitEntropyCompression will apply entropy compression if no matches are found. +// Disabling this will skip incompressible data faster, but in cases with no matches but +// skewed character distribution compression is lost. +// Default value depends on the compression level selected. +func WithAllLitEntropyCompression(b bool) EOption { + return func(o *encoderOptions) error { + o.customALEntropy = true + o.allLitEntropy = b + return nil + } +} + +// WithNoEntropyCompression will always skip entropy compression of literals. +// This can be useful if content has matches, but unlikely to benefit from entropy +// compression. Usually the slight speed improvement is not worth enabling this. +func WithNoEntropyCompression(b bool) EOption { + return func(o *encoderOptions) error { + o.noEntropy = b + return nil + } +} + +// WithSingleSegment will set the "single segment" flag when EncodeAll is used. +// If this flag is set, data must be regenerated within a single continuous memory segment. +// In this case, Window_Descriptor byte is skipped, but Frame_Content_Size is necessarily present. +// As a consequence, the decoder must allocate a memory segment of size equal or larger than size of your content. +// In order to preserve the decoder from unreasonable memory requirements, +// a decoder is allowed to reject a compressed frame which requests a memory size beyond decoder's authorized range. +// For broader compatibility, decoders are recommended to support memory sizes of at least 8 MB. +// This is only a recommendation, each decoder is free to support higher or lower limits, depending on local limitations. +// If this is not specified, block encodes will automatically choose this based on the input size and the window size. +// This setting has no effect on streamed encodes. +func WithSingleSegment(b bool) EOption { + return func(o *encoderOptions) error { + o.single = &b + return nil + } +} + +// WithLowerEncoderMem will trade in some memory cases trade less memory usage for +// slower encoding speed. +// This will not change the window size which is the primary function for reducing +// memory usage. See WithWindowSize. +func WithLowerEncoderMem(b bool) EOption { + return func(o *encoderOptions) error { + o.lowMem = b + return nil + } +} + +// WithEncoderDict allows to register a dictionary that will be used for the encode. +// +// The slice dict must be in the [dictionary format] produced by +// "zstd --train" from the Zstandard reference implementation. +// +// The encoder *may* choose to use no dictionary instead for certain payloads. +// +// [dictionary format]: https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format +func WithEncoderDict(dict []byte) EOption { + return func(o *encoderOptions) error { + d, err := loadDict(dict) + if err != nil { + return err + } + o.dict = d + return nil + } +} + +// WithEncoderDictRaw registers a dictionary that may be used by the encoder. +// +// The slice content may contain arbitrary data. It will be used as an initial +// history. +func WithEncoderDictRaw(id uint32, content []byte) EOption { + return func(o *encoderOptions) error { + if bits.UintSize > 32 && uint(len(content)) > dictMaxLength { + return fmt.Errorf("dictionary of size %d > 2GiB too large", len(content)) + } + o.dict = &dict{id: id, content: content, offsets: [3]int{1, 4, 8}} + return nil + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go b/examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go new file mode 100644 index 0000000..53e160f --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/framedec.go @@ -0,0 +1,413 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "encoding/hex" + "errors" + "io" + + "github.com/klauspost/compress/zstd/internal/xxhash" +) + +type frameDec struct { + o decoderOptions + crc *xxhash.Digest + + WindowSize uint64 + + // Frame history passed between blocks + history history + + rawInput byteBuffer + + // Byte buffer that can be reused for small input blocks. + bBuf byteBuf + + FrameContentSize uint64 + + DictionaryID uint32 + HasCheckSum bool + SingleSegment bool +} + +const ( + // MinWindowSize is the minimum Window Size, which is 1 KB. + MinWindowSize = 1 << 10 + + // MaxWindowSize is the maximum encoder window size + // and the default decoder maximum window size. + MaxWindowSize = 1 << 29 +) + +const ( + frameMagic = "\x28\xb5\x2f\xfd" + skippableFrameMagic = "\x2a\x4d\x18" +) + +func newFrameDec(o decoderOptions) *frameDec { + if o.maxWindowSize > o.maxDecodedSize { + o.maxWindowSize = o.maxDecodedSize + } + d := frameDec{ + o: o, + } + return &d +} + +// reset will read the frame header and prepare for block decoding. +// If nothing can be read from the input, io.EOF will be returned. +// Any other error indicated that the stream contained data, but +// there was a problem. +func (d *frameDec) reset(br byteBuffer) error { + d.HasCheckSum = false + d.WindowSize = 0 + var signature [4]byte + for { + var err error + // Check if we can read more... + b, err := br.readSmall(1) + switch err { + case io.EOF, io.ErrUnexpectedEOF: + return io.EOF + case nil: + signature[0] = b[0] + default: + return err + } + // Read the rest, don't allow io.ErrUnexpectedEOF + b, err = br.readSmall(3) + switch err { + case io.EOF: + return io.EOF + case nil: + copy(signature[1:], b) + default: + return err + } + + if string(signature[1:4]) != skippableFrameMagic || signature[0]&0xf0 != 0x50 { + if debugDecoder { + println("Not skippable", hex.EncodeToString(signature[:]), hex.EncodeToString([]byte(skippableFrameMagic))) + } + // Break if not skippable frame. + break + } + // Read size to skip + b, err = br.readSmall(4) + if err != nil { + if debugDecoder { + println("Reading Frame Size", err) + } + return err + } + n := uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + println("Skipping frame with", n, "bytes.") + err = br.skipN(int64(n)) + if err != nil { + if debugDecoder { + println("Reading discarded frame", err) + } + return err + } + } + if string(signature[:]) != frameMagic { + if debugDecoder { + println("Got magic numbers: ", signature, "want:", []byte(frameMagic)) + } + return ErrMagicMismatch + } + + // Read Frame_Header_Descriptor + fhd, err := br.readByte() + if err != nil { + if debugDecoder { + println("Reading Frame_Header_Descriptor", err) + } + return err + } + d.SingleSegment = fhd&(1<<5) != 0 + + if fhd&(1<<3) != 0 { + return errors.New("reserved bit set on frame header") + } + + // Read Window_Descriptor + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#window_descriptor + d.WindowSize = 0 + if !d.SingleSegment { + wd, err := br.readByte() + if err != nil { + if debugDecoder { + println("Reading Window_Descriptor", err) + } + return err + } + printf("raw: %x, mantissa: %d, exponent: %d\n", wd, wd&7, wd>>3) + windowLog := 10 + (wd >> 3) + windowBase := uint64(1) << windowLog + windowAdd := (windowBase / 8) * uint64(wd&0x7) + d.WindowSize = windowBase + windowAdd + } + + // Read Dictionary_ID + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary_id + d.DictionaryID = 0 + if size := fhd & 3; size != 0 { + if size == 3 { + size = 4 + } + + b, err := br.readSmall(int(size)) + if err != nil { + println("Reading Dictionary_ID", err) + return err + } + var id uint32 + switch len(b) { + case 1: + id = uint32(b[0]) + case 2: + id = uint32(b[0]) | (uint32(b[1]) << 8) + case 4: + id = uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + } + if debugDecoder { + println("Dict size", size, "ID:", id) + } + d.DictionaryID = id + } + + // Read Frame_Content_Size + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frame_content_size + var fcsSize int + v := fhd >> 6 + switch v { + case 0: + if d.SingleSegment { + fcsSize = 1 + } + default: + fcsSize = 1 << v + } + d.FrameContentSize = fcsUnknown + if fcsSize > 0 { + b, err := br.readSmall(fcsSize) + if err != nil { + println("Reading Frame content", err) + return err + } + switch len(b) { + case 1: + d.FrameContentSize = uint64(b[0]) + case 2: + // When FCS_Field_Size is 2, the offset of 256 is added. + d.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) + 256 + case 4: + d.FrameContentSize = uint64(b[0]) | (uint64(b[1]) << 8) | (uint64(b[2]) << 16) | (uint64(b[3]) << 24) + case 8: + d1 := uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) + d2 := uint32(b[4]) | (uint32(b[5]) << 8) | (uint32(b[6]) << 16) | (uint32(b[7]) << 24) + d.FrameContentSize = uint64(d1) | (uint64(d2) << 32) + } + if debugDecoder { + println("Read FCS:", d.FrameContentSize) + } + } + + // Move this to shared. + d.HasCheckSum = fhd&(1<<2) != 0 + if d.HasCheckSum { + if d.crc == nil { + d.crc = xxhash.New() + } + d.crc.Reset() + } + + if d.WindowSize > d.o.maxWindowSize { + if debugDecoder { + printf("window size %d > max %d\n", d.WindowSize, d.o.maxWindowSize) + } + return ErrWindowSizeExceeded + } + + if d.WindowSize == 0 && d.SingleSegment { + // We may not need window in this case. + d.WindowSize = d.FrameContentSize + if d.WindowSize < MinWindowSize { + d.WindowSize = MinWindowSize + } + if d.WindowSize > d.o.maxDecodedSize { + if debugDecoder { + printf("window size %d > max %d\n", d.WindowSize, d.o.maxWindowSize) + } + return ErrDecoderSizeExceeded + } + } + + // The minimum Window_Size is 1 KB. + if d.WindowSize < MinWindowSize { + if debugDecoder { + println("got window size: ", d.WindowSize) + } + return ErrWindowSizeTooSmall + } + d.history.windowSize = int(d.WindowSize) + if !d.o.lowMem || d.history.windowSize < maxBlockSize { + // Alloc 2x window size if not low-mem, or window size below 2MB. + d.history.allocFrameBuffer = d.history.windowSize * 2 + } else { + if d.o.lowMem { + // Alloc with 1MB extra. + d.history.allocFrameBuffer = d.history.windowSize + maxBlockSize/2 + } else { + // Alloc with 2MB extra. + d.history.allocFrameBuffer = d.history.windowSize + maxBlockSize + } + } + + if debugDecoder { + println("Frame: Dict:", d.DictionaryID, "FrameContentSize:", d.FrameContentSize, "singleseg:", d.SingleSegment, "window:", d.WindowSize, "crc:", d.HasCheckSum) + } + + // history contains input - maybe we do something + d.rawInput = br + return nil +} + +// next will start decoding the next block from stream. +func (d *frameDec) next(block *blockDec) error { + if debugDecoder { + println("decoding new block") + } + err := block.reset(d.rawInput, d.WindowSize) + if err != nil { + println("block error:", err) + // Signal the frame decoder we have a problem. + block.sendErr(err) + return err + } + return nil +} + +// checkCRC will check the checksum, assuming the frame has one. +// Will return ErrCRCMismatch if crc check failed, otherwise nil. +func (d *frameDec) checkCRC() error { + // We can overwrite upper tmp now + buf, err := d.rawInput.readSmall(4) + if err != nil { + println("CRC missing?", err) + return err + } + + want := binary.LittleEndian.Uint32(buf[:4]) + got := uint32(d.crc.Sum64()) + + if got != want { + if debugDecoder { + printf("CRC check failed: got %08x, want %08x\n", got, want) + } + return ErrCRCMismatch + } + if debugDecoder { + printf("CRC ok %08x\n", got) + } + return nil +} + +// consumeCRC skips over the checksum, assuming the frame has one. +func (d *frameDec) consumeCRC() error { + _, err := d.rawInput.readSmall(4) + if err != nil { + println("CRC missing?", err) + } + return err +} + +// runDecoder will run the decoder for the remainder of the frame. +func (d *frameDec) runDecoder(dst []byte, dec *blockDec) ([]byte, error) { + saved := d.history.b + + // We use the history for output to avoid copying it. + d.history.b = dst + d.history.ignoreBuffer = len(dst) + // Store input length, so we only check new data. + crcStart := len(dst) + d.history.decoders.maxSyncLen = 0 + if d.o.limitToCap { + d.history.decoders.maxSyncLen = uint64(cap(dst) - len(dst)) + } + if d.FrameContentSize != fcsUnknown { + if !d.o.limitToCap || d.FrameContentSize+uint64(len(dst)) < d.history.decoders.maxSyncLen { + d.history.decoders.maxSyncLen = d.FrameContentSize + uint64(len(dst)) + } + if d.history.decoders.maxSyncLen > d.o.maxDecodedSize { + if debugDecoder { + println("maxSyncLen:", d.history.decoders.maxSyncLen, "> maxDecodedSize:", d.o.maxDecodedSize) + } + return dst, ErrDecoderSizeExceeded + } + if debugDecoder { + println("maxSyncLen:", d.history.decoders.maxSyncLen) + } + if !d.o.limitToCap && uint64(cap(dst)) < d.history.decoders.maxSyncLen { + // Alloc for output + dst2 := make([]byte, len(dst), d.history.decoders.maxSyncLen+compressedBlockOverAlloc) + copy(dst2, dst) + dst = dst2 + } + } + var err error + for { + err = dec.reset(d.rawInput, d.WindowSize) + if err != nil { + break + } + if debugDecoder { + println("next block:", dec) + } + err = dec.decodeBuf(&d.history) + if err != nil { + break + } + if uint64(len(d.history.b)-crcStart) > d.o.maxDecodedSize { + println("runDecoder: maxDecodedSize exceeded", uint64(len(d.history.b)-crcStart), ">", d.o.maxDecodedSize) + err = ErrDecoderSizeExceeded + break + } + if d.o.limitToCap && len(d.history.b) > cap(dst) { + println("runDecoder: cap exceeded", uint64(len(d.history.b)), ">", cap(dst)) + err = ErrDecoderSizeExceeded + break + } + if uint64(len(d.history.b)-crcStart) > d.FrameContentSize { + println("runDecoder: FrameContentSize exceeded", uint64(len(d.history.b)-crcStart), ">", d.FrameContentSize) + err = ErrFrameSizeExceeded + break + } + if dec.Last { + break + } + if debugDecoder { + println("runDecoder: FrameContentSize", uint64(len(d.history.b)-crcStart), "<=", d.FrameContentSize) + } + } + dst = d.history.b + if err == nil { + if d.FrameContentSize != fcsUnknown && uint64(len(d.history.b)-crcStart) != d.FrameContentSize { + err = ErrFrameSizeMismatch + } else if d.HasCheckSum { + if d.o.ignoreChecksum { + err = d.consumeCRC() + } else { + d.crc.Write(dst[crcStart:]) + err = d.checkCRC() + } + } + } + d.history.b = saved + return dst, err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go b/examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go new file mode 100644 index 0000000..667ca06 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/frameenc.go @@ -0,0 +1,137 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "fmt" + "io" + "math" + "math/bits" +) + +type frameHeader struct { + ContentSize uint64 + WindowSize uint32 + SingleSegment bool + Checksum bool + DictID uint32 +} + +const maxHeaderSize = 14 + +func (f frameHeader) appendTo(dst []byte) []byte { + dst = append(dst, frameMagic...) + var fhd uint8 + if f.Checksum { + fhd |= 1 << 2 + } + if f.SingleSegment { + fhd |= 1 << 5 + } + + var dictIDContent []byte + if f.DictID > 0 { + var tmp [4]byte + if f.DictID < 256 { + fhd |= 1 + tmp[0] = uint8(f.DictID) + dictIDContent = tmp[:1] + } else if f.DictID < 1<<16 { + fhd |= 2 + binary.LittleEndian.PutUint16(tmp[:2], uint16(f.DictID)) + dictIDContent = tmp[:2] + } else { + fhd |= 3 + binary.LittleEndian.PutUint32(tmp[:4], f.DictID) + dictIDContent = tmp[:4] + } + } + var fcs uint8 + if f.ContentSize >= 256 { + fcs++ + } + if f.ContentSize >= 65536+256 { + fcs++ + } + if f.ContentSize >= 0xffffffff { + fcs++ + } + + fhd |= fcs << 6 + + dst = append(dst, fhd) + if !f.SingleSegment { + const winLogMin = 10 + windowLog := (bits.Len32(f.WindowSize-1) - winLogMin) << 3 + dst = append(dst, uint8(windowLog)) + } + if f.DictID > 0 { + dst = append(dst, dictIDContent...) + } + switch fcs { + case 0: + if f.SingleSegment { + dst = append(dst, uint8(f.ContentSize)) + } + // Unless SingleSegment is set, framessizes < 256 are not stored. + case 1: + f.ContentSize -= 256 + dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8)) + case 2: + dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8), uint8(f.ContentSize>>16), uint8(f.ContentSize>>24)) + case 3: + dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8), uint8(f.ContentSize>>16), uint8(f.ContentSize>>24), + uint8(f.ContentSize>>32), uint8(f.ContentSize>>40), uint8(f.ContentSize>>48), uint8(f.ContentSize>>56)) + default: + panic("invalid fcs") + } + return dst +} + +const skippableFrameHeader = 4 + 4 + +// calcSkippableFrame will return a total size to be added for written +// to be divisible by multiple. +// The value will always be > skippableFrameHeader. +// The function will panic if written < 0 or wantMultiple <= 0. +func calcSkippableFrame(written, wantMultiple int64) int { + if wantMultiple <= 0 { + panic("wantMultiple <= 0") + } + if written < 0 { + panic("written < 0") + } + leftOver := written % wantMultiple + if leftOver == 0 { + return 0 + } + toAdd := wantMultiple - leftOver + for toAdd < skippableFrameHeader { + toAdd += wantMultiple + } + return int(toAdd) +} + +// skippableFrame will add a skippable frame with a total size of bytes. +// total should be >= skippableFrameHeader and < math.MaxUint32. +func skippableFrame(dst []byte, total int, r io.Reader) ([]byte, error) { + if total == 0 { + return dst, nil + } + if total < skippableFrameHeader { + return dst, fmt.Errorf("requested skippable frame (%d) < 8", total) + } + if int64(total) > math.MaxUint32 { + return dst, fmt.Errorf("requested skippable frame (%d) > max uint32", total) + } + dst = append(dst, 0x50, 0x2a, 0x4d, 0x18) + f := uint32(total - skippableFrameHeader) + dst = append(dst, uint8(f), uint8(f>>8), uint8(f>>16), uint8(f>>24)) + start := len(dst) + dst = append(dst, make([]byte, f)...) + _, err := io.ReadFull(r, dst[start:]) + return dst, err +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go new file mode 100644 index 0000000..2f8860a --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder.go @@ -0,0 +1,307 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "errors" + "fmt" + "io" +) + +const ( + tablelogAbsoluteMax = 9 +) + +const ( + /*!MEMORY_USAGE : + * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) + * Increasing memory usage improves compression ratio + * Reduced memory usage can improve speed, due to cache effect + * Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */ + maxMemoryUsage = tablelogAbsoluteMax + 2 + + maxTableLog = maxMemoryUsage - 2 + maxTablesize = 1 << maxTableLog + maxTableMask = (1 << maxTableLog) - 1 + minTablelog = 5 + maxSymbolValue = 255 +) + +// fseDecoder provides temporary storage for compression and decompression. +type fseDecoder struct { + dt [maxTablesize]decSymbol // Decompression table. + symbolLen uint16 // Length of active part of the symbol table. + actualTableLog uint8 // Selected tablelog. + maxBits uint8 // Maximum number of additional bits + + // used for table creation to avoid allocations. + stateTable [256]uint16 + norm [maxSymbolValue + 1]int16 + preDefined bool +} + +// tableStep returns the next table index. +func tableStep(tableSize uint32) uint32 { + return (tableSize >> 1) + (tableSize >> 3) + 3 +} + +// readNCount will read the symbol distribution so decoding tables can be constructed. +func (s *fseDecoder) readNCount(b *byteReader, maxSymbol uint16) error { + var ( + charnum uint16 + previous0 bool + ) + if b.remain() < 4 { + return errors.New("input too small") + } + bitStream := b.Uint32NC() + nbBits := uint((bitStream & 0xF) + minTablelog) // extract tableLog + if nbBits > tablelogAbsoluteMax { + println("Invalid tablelog:", nbBits) + return errors.New("tableLog too large") + } + bitStream >>= 4 + bitCount := uint(4) + + s.actualTableLog = uint8(nbBits) + remaining := int32((1 << nbBits) + 1) + threshold := int32(1 << nbBits) + gotTotal := int32(0) + nbBits++ + + for remaining > 1 && charnum <= maxSymbol { + if previous0 { + //println("prev0") + n0 := charnum + for (bitStream & 0xFFFF) == 0xFFFF { + //println("24 x 0") + n0 += 24 + if r := b.remain(); r > 5 { + b.advance(2) + // The check above should make sure we can read 32 bits + bitStream = b.Uint32NC() >> bitCount + } else { + // end of bit stream + bitStream >>= 16 + bitCount += 16 + } + } + //printf("bitstream: %d, 0b%b", bitStream&3, bitStream) + for (bitStream & 3) == 3 { + n0 += 3 + bitStream >>= 2 + bitCount += 2 + } + n0 += uint16(bitStream & 3) + bitCount += 2 + + if n0 > maxSymbolValue { + return errors.New("maxSymbolValue too small") + } + //println("inserting ", n0-charnum, "zeroes from idx", charnum, "ending before", n0) + for charnum < n0 { + s.norm[uint8(charnum)] = 0 + charnum++ + } + + if r := b.remain(); r >= 7 || r-int(bitCount>>3) >= 4 { + b.advance(bitCount >> 3) + bitCount &= 7 + // The check above should make sure we can read 32 bits + bitStream = b.Uint32NC() >> bitCount + } else { + bitStream >>= 2 + } + } + + max := (2*threshold - 1) - remaining + var count int32 + + if int32(bitStream)&(threshold-1) < max { + count = int32(bitStream) & (threshold - 1) + if debugAsserts && nbBits < 1 { + panic("nbBits underflow") + } + bitCount += nbBits - 1 + } else { + count = int32(bitStream) & (2*threshold - 1) + if count >= threshold { + count -= max + } + bitCount += nbBits + } + + // extra accuracy + count-- + if count < 0 { + // -1 means +1 + remaining += count + gotTotal -= count + } else { + remaining -= count + gotTotal += count + } + s.norm[charnum&0xff] = int16(count) + charnum++ + previous0 = count == 0 + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + + if r := b.remain(); r >= 7 || r-int(bitCount>>3) >= 4 { + b.advance(bitCount >> 3) + bitCount &= 7 + // The check above should make sure we can read 32 bits + bitStream = b.Uint32NC() >> (bitCount & 31) + } else { + bitCount -= (uint)(8 * (len(b.b) - 4 - b.off)) + b.off = len(b.b) - 4 + bitStream = b.Uint32() >> (bitCount & 31) + } + } + s.symbolLen = charnum + if s.symbolLen <= 1 { + return fmt.Errorf("symbolLen (%d) too small", s.symbolLen) + } + if s.symbolLen > maxSymbolValue+1 { + return fmt.Errorf("symbolLen (%d) too big", s.symbolLen) + } + if remaining != 1 { + return fmt.Errorf("corruption detected (remaining %d != 1)", remaining) + } + if bitCount > 32 { + return fmt.Errorf("corruption detected (bitCount %d > 32)", bitCount) + } + if gotTotal != 1<> 3) + return s.buildDtable() +} + +func (s *fseDecoder) mustReadFrom(r io.Reader) { + fatalErr := func(err error) { + if err != nil { + panic(err) + } + } + // dt [maxTablesize]decSymbol // Decompression table. + // symbolLen uint16 // Length of active part of the symbol table. + // actualTableLog uint8 // Selected tablelog. + // maxBits uint8 // Maximum number of additional bits + // // used for table creation to avoid allocations. + // stateTable [256]uint16 + // norm [maxSymbolValue + 1]int16 + // preDefined bool + fatalErr(binary.Read(r, binary.LittleEndian, &s.dt)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.symbolLen)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.actualTableLog)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.maxBits)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.stateTable)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.norm)) + fatalErr(binary.Read(r, binary.LittleEndian, &s.preDefined)) +} + +// decSymbol contains information about a state entry, +// Including the state offset base, the output symbol and +// the number of bits to read for the low part of the destination state. +// Using a composite uint64 is faster than a struct with separate members. +type decSymbol uint64 + +func newDecSymbol(nbits, addBits uint8, newState uint16, baseline uint32) decSymbol { + return decSymbol(nbits) | (decSymbol(addBits) << 8) | (decSymbol(newState) << 16) | (decSymbol(baseline) << 32) +} + +func (d decSymbol) nbBits() uint8 { + return uint8(d) +} + +func (d decSymbol) addBits() uint8 { + return uint8(d >> 8) +} + +func (d decSymbol) newState() uint16 { + return uint16(d >> 16) +} + +func (d decSymbol) baselineInt() int { + return int(d >> 32) +} + +func (d *decSymbol) setNBits(nBits uint8) { + const mask = 0xffffffffffffff00 + *d = (*d & mask) | decSymbol(nBits) +} + +func (d *decSymbol) setAddBits(addBits uint8) { + const mask = 0xffffffffffff00ff + *d = (*d & mask) | (decSymbol(addBits) << 8) +} + +func (d *decSymbol) setNewState(state uint16) { + const mask = 0xffffffff0000ffff + *d = (*d & mask) | decSymbol(state)<<16 +} + +func (d *decSymbol) setExt(addBits uint8, baseline uint32) { + const mask = 0xffff00ff + *d = (*d & mask) | (decSymbol(addBits) << 8) | (decSymbol(baseline) << 32) +} + +// decSymbolValue returns the transformed decSymbol for the given symbol. +func decSymbolValue(symb uint8, t []baseOffset) (decSymbol, error) { + if int(symb) >= len(t) { + return 0, fmt.Errorf("rle symbol %d >= max %d", symb, len(t)) + } + lu := t[symb] + return newDecSymbol(0, lu.addBits, 0, lu.baseLine), nil +} + +// setRLE will set the decoder til RLE mode. +func (s *fseDecoder) setRLE(symbol decSymbol) { + s.actualTableLog = 0 + s.maxBits = symbol.addBits() + s.dt[0] = symbol +} + +// transform will transform the decoder table into a table usable for +// decoding without having to apply the transformation while decoding. +// The state will contain the base value and the number of bits to read. +func (s *fseDecoder) transform(t []baseOffset) error { + tableSize := uint16(1 << s.actualTableLog) + s.maxBits = 0 + for i, v := range s.dt[:tableSize] { + add := v.addBits() + if int(add) >= len(t) { + return fmt.Errorf("invalid decoding table entry %d, symbol %d >= max (%d)", i, v.addBits(), len(t)) + } + lu := t[add] + if lu.addBits > s.maxBits { + s.maxBits = lu.addBits + } + v.setExt(lu.addBits, lu.baseLine) + s.dt[i] = v + } + return nil +} + +type fseState struct { + dt []decSymbol + state decSymbol +} + +// Initialize and decodeAsync first state and symbol. +func (s *fseState) init(br *bitReader, tableLog uint8, dt []decSymbol) { + s.dt = dt + br.fill() + s.state = dt[br.getBits(tableLog)] +} + +// final returns the current state symbol without decoding the next. +func (s decSymbol) final() (int, uint8) { + return s.baselineInt(), s.addBits() +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go new file mode 100644 index 0000000..d04a829 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go @@ -0,0 +1,65 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +package zstd + +import ( + "fmt" +) + +type buildDtableAsmContext struct { + // inputs + stateTable *uint16 + norm *int16 + dt *uint64 + + // outputs --- set by the procedure in the case of error; + // for interpretation please see the error handling part below + errParam1 uint64 + errParam2 uint64 +} + +// buildDtable_asm is an x86 assembly implementation of fseDecoder.buildDtable. +// Function returns non-zero exit code on error. +// +//go:noescape +func buildDtable_asm(s *fseDecoder, ctx *buildDtableAsmContext) int + +// please keep in sync with _generate/gen_fse.go +const ( + errorCorruptedNormalizedCounter = 1 + errorNewStateTooBig = 2 + errorNewStateNoBits = 3 +) + +// buildDtable will build the decoding table. +func (s *fseDecoder) buildDtable() error { + ctx := buildDtableAsmContext{ + stateTable: &s.stateTable[0], + norm: &s.norm[0], + dt: (*uint64)(&s.dt[0]), + } + code := buildDtable_asm(s, &ctx) + + if code != 0 { + switch code { + case errorCorruptedNormalizedCounter: + position := ctx.errParam1 + return fmt.Errorf("corrupted input (position=%d, expected 0)", position) + + case errorNewStateTooBig: + newState := decSymbol(ctx.errParam1) + size := ctx.errParam2 + return fmt.Errorf("newState (%d) outside table size (%d)", newState, size) + + case errorNewStateNoBits: + newState := decSymbol(ctx.errParam1) + oldState := decSymbol(ctx.errParam2) + return fmt.Errorf("newState (%d) == oldState (%d) and no bits", newState, oldState) + + default: + return fmt.Errorf("buildDtable_asm returned unhandled nonzero code = %d", code) + } + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s new file mode 100644 index 0000000..bcde398 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.s @@ -0,0 +1,126 @@ +// Code generated by command: go run gen_fse.go -out ../fse_decoder_amd64.s -pkg=zstd. DO NOT EDIT. + +//go:build !appengine && !noasm && gc && !noasm + +// func buildDtable_asm(s *fseDecoder, ctx *buildDtableAsmContext) int +TEXT ·buildDtable_asm(SB), $0-24 + MOVQ ctx+8(FP), CX + MOVQ s+0(FP), DI + + // Load values + MOVBQZX 4098(DI), DX + XORQ AX, AX + BTSQ DX, AX + MOVQ (CX), BX + MOVQ 16(CX), SI + LEAQ -1(AX), R8 + MOVQ 8(CX), CX + MOVWQZX 4096(DI), DI + + // End load values + // Init, lay down lowprob symbols + XORQ R9, R9 + JMP init_main_loop_condition + +init_main_loop: + MOVWQSX (CX)(R9*2), R10 + CMPW R10, $-1 + JNE do_not_update_high_threshold + MOVB R9, 1(SI)(R8*8) + DECQ R8 + MOVQ $0x0000000000000001, R10 + +do_not_update_high_threshold: + MOVW R10, (BX)(R9*2) + INCQ R9 + +init_main_loop_condition: + CMPQ R9, DI + JL init_main_loop + + // Spread symbols + // Calculate table step + MOVQ AX, R9 + SHRQ $0x01, R9 + MOVQ AX, R10 + SHRQ $0x03, R10 + LEAQ 3(R9)(R10*1), R9 + + // Fill add bits values + LEAQ -1(AX), R10 + XORQ R11, R11 + XORQ R12, R12 + JMP spread_main_loop_condition + +spread_main_loop: + XORQ R13, R13 + MOVWQSX (CX)(R12*2), R14 + JMP spread_inner_loop_condition + +spread_inner_loop: + MOVB R12, 1(SI)(R11*8) + +adjust_position: + ADDQ R9, R11 + ANDQ R10, R11 + CMPQ R11, R8 + JG adjust_position + INCQ R13 + +spread_inner_loop_condition: + CMPQ R13, R14 + JL spread_inner_loop + INCQ R12 + +spread_main_loop_condition: + CMPQ R12, DI + JL spread_main_loop + TESTQ R11, R11 + JZ spread_check_ok + MOVQ ctx+8(FP), AX + MOVQ R11, 24(AX) + MOVQ $+1, ret+16(FP) + RET + +spread_check_ok: + // Build Decoding table + XORQ DI, DI + +build_table_main_table: + MOVBQZX 1(SI)(DI*8), CX + MOVWQZX (BX)(CX*2), R8 + LEAQ 1(R8), R9 + MOVW R9, (BX)(CX*2) + MOVQ R8, R9 + BSRQ R9, R9 + MOVQ DX, CX + SUBQ R9, CX + SHLQ CL, R8 + SUBQ AX, R8 + MOVB CL, (SI)(DI*8) + MOVW R8, 2(SI)(DI*8) + CMPQ R8, AX + JLE build_table_check1_ok + MOVQ ctx+8(FP), CX + MOVQ R8, 24(CX) + MOVQ AX, 32(CX) + MOVQ $+2, ret+16(FP) + RET + +build_table_check1_ok: + TESTB CL, CL + JNZ build_table_check2_ok + CMPW R8, DI + JNE build_table_check2_ok + MOVQ ctx+8(FP), AX + MOVQ R8, 24(AX) + MOVQ DI, 32(AX) + MOVQ $+3, ret+16(FP) + RET + +build_table_check2_ok: + INCQ DI + CMPQ DI, AX + JL build_table_main_table + MOVQ $+0, ret+16(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go new file mode 100644 index 0000000..8adfebb --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_decoder_generic.go @@ -0,0 +1,73 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +package zstd + +import ( + "errors" + "fmt" +) + +// buildDtable will build the decoding table. +func (s *fseDecoder) buildDtable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + symbolNext := s.stateTable[:256] + + // Init, lay down lowprob symbols + { + for i, v := range s.norm[:s.symbolLen] { + if v == -1 { + s.dt[highThreshold].setAddBits(uint8(i)) + highThreshold-- + v = 1 + } + symbolNext[i] = uint16(v) + } + } + + // Spread symbols + { + tableMask := tableSize - 1 + step := tableStep(tableSize) + position := uint32(0) + for ss, v := range s.norm[:s.symbolLen] { + for i := 0; i < int(v); i++ { + s.dt[position].setAddBits(uint8(ss)) + for { + // lowprob area + position = (position + step) & tableMask + if position <= highThreshold { + break + } + } + } + } + if position != 0 { + // position must reach all cells once, otherwise normalizedCounter is incorrect + return errors.New("corrupted input (position != 0)") + } + } + + // Build Decoding table + { + tableSize := uint16(1 << s.actualTableLog) + for u, v := range s.dt[:tableSize] { + symbol := v.addBits() + nextState := symbolNext[symbol] + symbolNext[symbol] = nextState + 1 + nBits := s.actualTableLog - byte(highBits(uint32(nextState))) + s.dt[u&maxTableMask].setNBits(nBits) + newState := (nextState << nBits) - tableSize + if newState > tableSize { + return fmt.Errorf("newState (%d) outside table size (%d)", newState, tableSize) + } + if newState == uint16(u) && nBits == 0 { + // Seems weird that this is possible with nbits > 0. + return fmt.Errorf("newState (%d) == oldState (%d) and no bits", newState, u) + } + s.dt[u&maxTableMask].setNewState(newState) + } + } + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go new file mode 100644 index 0000000..ab26326 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_encoder.go @@ -0,0 +1,701 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "math" +) + +const ( + // For encoding we only support up to + maxEncTableLog = 8 + maxEncTablesize = 1 << maxTableLog + maxEncTableMask = (1 << maxTableLog) - 1 + minEncTablelog = 5 + maxEncSymbolValue = maxMatchLengthSymbol +) + +// Scratch provides temporary storage for compression and decompression. +type fseEncoder struct { + symbolLen uint16 // Length of active part of the symbol table. + actualTableLog uint8 // Selected tablelog. + ct cTable // Compression tables. + maxCount int // count of the most probable symbol + zeroBits bool // no bits has prob > 50%. + clearCount bool // clear count + useRLE bool // This encoder is for RLE + preDefined bool // This encoder is predefined. + reUsed bool // Set to know when the encoder has been reused. + rleVal uint8 // RLE Symbol + maxBits uint8 // Maximum output bits after transform. + + // TODO: Technically zstd should be fine with 64 bytes. + count [256]uint32 + norm [256]int16 +} + +// cTable contains tables used for compression. +type cTable struct { + tableSymbol []byte + stateTable []uint16 + symbolTT []symbolTransform +} + +// symbolTransform contains the state transform for a symbol. +type symbolTransform struct { + deltaNbBits uint32 + deltaFindState int16 + outBits uint8 +} + +// String prints values as a human readable string. +func (s symbolTransform) String() string { + return fmt.Sprintf("{deltabits: %08x, findstate:%d outbits:%d}", s.deltaNbBits, s.deltaFindState, s.outBits) +} + +// Histogram allows to populate the histogram and skip that step in the compression, +// It otherwise allows to inspect the histogram when compression is done. +// To indicate that you have populated the histogram call HistogramFinished +// with the value of the highest populated symbol, as well as the number of entries +// in the most populated entry. These are accepted at face value. +func (s *fseEncoder) Histogram() *[256]uint32 { + return &s.count +} + +// HistogramFinished can be called to indicate that the histogram has been populated. +// maxSymbol is the index of the highest set symbol of the next data segment. +// maxCount is the number of entries in the most populated entry. +// These are accepted at face value. +func (s *fseEncoder) HistogramFinished(maxSymbol uint8, maxCount int) { + s.maxCount = maxCount + s.symbolLen = uint16(maxSymbol) + 1 + s.clearCount = maxCount != 0 +} + +// allocCtable will allocate tables needed for compression. +// If existing tables a re big enough, they are simply re-used. +func (s *fseEncoder) allocCtable() { + tableSize := 1 << s.actualTableLog + // get tableSymbol that is big enough. + if cap(s.ct.tableSymbol) < tableSize { + s.ct.tableSymbol = make([]byte, tableSize) + } + s.ct.tableSymbol = s.ct.tableSymbol[:tableSize] + + ctSize := tableSize + if cap(s.ct.stateTable) < ctSize { + s.ct.stateTable = make([]uint16, ctSize) + } + s.ct.stateTable = s.ct.stateTable[:ctSize] + + if cap(s.ct.symbolTT) < 256 { + s.ct.symbolTT = make([]symbolTransform, 256) + } + s.ct.symbolTT = s.ct.symbolTT[:256] +} + +// buildCTable will populate the compression table so it is ready to be used. +func (s *fseEncoder) buildCTable() error { + tableSize := uint32(1 << s.actualTableLog) + highThreshold := tableSize - 1 + var cumul [256]int16 + + s.allocCtable() + tableSymbol := s.ct.tableSymbol[:tableSize] + // symbol start positions + { + cumul[0] = 0 + for ui, v := range s.norm[:s.symbolLen-1] { + u := byte(ui) // one less than reference + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = u + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + } + // Encode last symbol separately to avoid overflowing u + u := int(s.symbolLen - 1) + v := s.norm[s.symbolLen-1] + if v == -1 { + // Low proba symbol + cumul[u+1] = cumul[u] + 1 + tableSymbol[highThreshold] = byte(u) + highThreshold-- + } else { + cumul[u+1] = cumul[u] + v + } + if uint32(cumul[s.symbolLen]) != tableSize { + return fmt.Errorf("internal error: expected cumul[s.symbolLen] (%d) == tableSize (%d)", cumul[s.symbolLen], tableSize) + } + cumul[s.symbolLen] = int16(tableSize) + 1 + } + // Spread symbols + s.zeroBits = false + { + step := tableStep(tableSize) + tableMask := tableSize - 1 + var position uint32 + // if any symbol > largeLimit, we may have 0 bits output. + largeLimit := int16(1 << (s.actualTableLog - 1)) + for ui, v := range s.norm[:s.symbolLen] { + symbol := byte(ui) + if v > largeLimit { + s.zeroBits = true + } + for nbOccurrences := int16(0); nbOccurrences < v; nbOccurrences++ { + tableSymbol[position] = symbol + position = (position + step) & tableMask + for position > highThreshold { + position = (position + step) & tableMask + } /* Low proba area */ + } + } + + // Check if we have gone through all positions + if position != 0 { + return errors.New("position!=0") + } + } + + // Build table + table := s.ct.stateTable + { + tsi := int(tableSize) + for u, v := range tableSymbol { + // TableU16 : sorted by symbol order; gives next state value + table[cumul[v]] = uint16(tsi + u) + cumul[v]++ + } + } + + // Build Symbol Transformation Table + { + total := int16(0) + symbolTT := s.ct.symbolTT[:s.symbolLen] + tableLog := s.actualTableLog + tl := (uint32(tableLog) << 16) - (1 << tableLog) + for i, v := range s.norm[:s.symbolLen] { + switch v { + case 0: + case -1, 1: + symbolTT[i].deltaNbBits = tl + symbolTT[i].deltaFindState = total - 1 + total++ + default: + maxBitsOut := uint32(tableLog) - highBit(uint32(v-1)) + minStatePlus := uint32(v) << maxBitsOut + symbolTT[i].deltaNbBits = (maxBitsOut << 16) - minStatePlus + symbolTT[i].deltaFindState = total - v + total += v + } + } + if total != int16(tableSize) { + return fmt.Errorf("total mismatch %d (got) != %d (want)", total, tableSize) + } + } + return nil +} + +var rtbTable = [...]uint32{0, 473195, 504333, 520860, 550000, 700000, 750000, 830000} + +func (s *fseEncoder) setRLE(val byte) { + s.allocCtable() + s.actualTableLog = 0 + s.ct.stateTable = s.ct.stateTable[:1] + s.ct.symbolTT[val] = symbolTransform{ + deltaFindState: 0, + deltaNbBits: 0, + } + if debugEncoder { + println("setRLE: val", val, "symbolTT", s.ct.symbolTT[val]) + } + s.rleVal = val + s.useRLE = true +} + +// setBits will set output bits for the transform. +// if nil is provided, the number of bits is equal to the index. +func (s *fseEncoder) setBits(transform []byte) { + if s.reUsed || s.preDefined { + return + } + if s.useRLE { + if transform == nil { + s.ct.symbolTT[s.rleVal].outBits = s.rleVal + s.maxBits = s.rleVal + return + } + s.maxBits = transform[s.rleVal] + s.ct.symbolTT[s.rleVal].outBits = s.maxBits + return + } + if transform == nil { + for i := range s.ct.symbolTT[:s.symbolLen] { + s.ct.symbolTT[i].outBits = uint8(i) + } + s.maxBits = uint8(s.symbolLen - 1) + return + } + s.maxBits = 0 + for i, v := range transform[:s.symbolLen] { + s.ct.symbolTT[i].outBits = v + if v > s.maxBits { + // We could assume bits always going up, but we play safe. + s.maxBits = v + } + } +} + +// normalizeCount will normalize the count of the symbols so +// the total is equal to the table size. +// If successful, compression tables will also be made ready. +func (s *fseEncoder) normalizeCount(length int) error { + if s.reUsed { + return nil + } + s.optimalTableLog(length) + var ( + tableLog = s.actualTableLog + scale = 62 - uint64(tableLog) + step = (1 << 62) / uint64(length) + vStep = uint64(1) << (scale - 20) + stillToDistribute = int16(1 << tableLog) + largest int + largestP int16 + lowThreshold = (uint32)(length >> tableLog) + ) + if s.maxCount == length { + s.useRLE = true + return nil + } + s.useRLE = false + for i, cnt := range s.count[:s.symbolLen] { + // already handled + // if (count[s] == s.length) return 0; /* rle special case */ + + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + stillToDistribute-- + } else { + proba := (int16)((uint64(cnt) * step) >> scale) + if proba < 8 { + restToBeat := vStep * uint64(rtbTable[proba]) + v := uint64(cnt)*step - (uint64(proba) << scale) + if v > restToBeat { + proba++ + } + } + if proba > largestP { + largestP = proba + largest = i + } + s.norm[i] = proba + stillToDistribute -= proba + } + } + + if -stillToDistribute >= (s.norm[largest] >> 1) { + // corner case, need another normalization method + err := s.normalizeCount2(length) + if err != nil { + return err + } + if debugAsserts { + err = s.validateNorm() + if err != nil { + return err + } + } + return s.buildCTable() + } + s.norm[largest] += stillToDistribute + if debugAsserts { + err := s.validateNorm() + if err != nil { + return err + } + } + return s.buildCTable() +} + +// Secondary normalization method. +// To be used when primary method fails. +func (s *fseEncoder) normalizeCount2(length int) error { + const notYetAssigned = -2 + var ( + distributed uint32 + total = uint32(length) + tableLog = s.actualTableLog + lowThreshold = total >> tableLog + lowOne = (total * 3) >> (tableLog + 1) + ) + for i, cnt := range s.count[:s.symbolLen] { + if cnt == 0 { + s.norm[i] = 0 + continue + } + if cnt <= lowThreshold { + s.norm[i] = -1 + distributed++ + total -= cnt + continue + } + if cnt <= lowOne { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + s.norm[i] = notYetAssigned + } + toDistribute := (1 << tableLog) - distributed + + if (total / toDistribute) > lowOne { + // risk of rounding to zero + lowOne = (total * 3) / (toDistribute * 2) + for i, cnt := range s.count[:s.symbolLen] { + if (s.norm[i] == notYetAssigned) && (cnt <= lowOne) { + s.norm[i] = 1 + distributed++ + total -= cnt + continue + } + } + toDistribute = (1 << tableLog) - distributed + } + if distributed == uint32(s.symbolLen)+1 { + // all values are pretty poor; + // probably incompressible data (should have already been detected); + // find max, then give all remaining points to max + var maxV int + var maxC uint32 + for i, cnt := range s.count[:s.symbolLen] { + if cnt > maxC { + maxV = i + maxC = cnt + } + } + s.norm[maxV] += int16(toDistribute) + return nil + } + + if total == 0 { + // all of the symbols were low enough for the lowOne or lowThreshold + for i := uint32(0); toDistribute > 0; i = (i + 1) % (uint32(s.symbolLen)) { + if s.norm[i] > 0 { + toDistribute-- + s.norm[i]++ + } + } + return nil + } + + var ( + vStepLog = 62 - uint64(tableLog) + mid = uint64((1 << (vStepLog - 1)) - 1) + rStep = (((1 << vStepLog) * uint64(toDistribute)) + mid) / uint64(total) // scale on remaining + tmpTotal = mid + ) + for i, cnt := range s.count[:s.symbolLen] { + if s.norm[i] == notYetAssigned { + var ( + end = tmpTotal + uint64(cnt)*rStep + sStart = uint32(tmpTotal >> vStepLog) + sEnd = uint32(end >> vStepLog) + weight = sEnd - sStart + ) + if weight < 1 { + return errors.New("weight < 1") + } + s.norm[i] = int16(weight) + tmpTotal = end + } + } + return nil +} + +// optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog +func (s *fseEncoder) optimalTableLog(length int) { + tableLog := uint8(maxEncTableLog) + minBitsSrc := highBit(uint32(length)) + 1 + minBitsSymbols := highBit(uint32(s.symbolLen-1)) + 2 + minBits := uint8(minBitsSymbols) + if minBitsSrc < minBitsSymbols { + minBits = uint8(minBitsSrc) + } + + maxBitsSrc := uint8(highBit(uint32(length-1))) - 2 + if maxBitsSrc < tableLog { + // Accuracy can be reduced + tableLog = maxBitsSrc + } + if minBits > tableLog { + tableLog = minBits + } + // Need a minimum to safely represent all symbol values + if tableLog < minEncTablelog { + tableLog = minEncTablelog + } + if tableLog > maxEncTableLog { + tableLog = maxEncTableLog + } + s.actualTableLog = tableLog +} + +// validateNorm validates the normalized histogram table. +func (s *fseEncoder) validateNorm() (err error) { + var total int + for _, v := range s.norm[:s.symbolLen] { + if v >= 0 { + total += int(v) + } else { + total -= int(v) + } + } + defer func() { + if err == nil { + return + } + fmt.Printf("selected TableLog: %d, Symbol length: %d\n", s.actualTableLog, s.symbolLen) + for i, v := range s.norm[:s.symbolLen] { + fmt.Printf("%3d: %5d -> %4d \n", i, s.count[i], v) + } + }() + if total != (1 << s.actualTableLog) { + return fmt.Errorf("warning: Total == %d != %d", total, 1<> 3) + 3 + 2 + + // Write Table Size + bitStream = uint32(tableLog - minEncTablelog) + bitCount = uint(4) + remaining = int16(tableSize + 1) /* +1 for extra accuracy */ + threshold = int16(tableSize) + nbBits = uint(tableLog + 1) + outP = len(out) + ) + if cap(out) < outP+maxHeaderSize { + out = append(out, make([]byte, maxHeaderSize*3)...) + out = out[:len(out)-maxHeaderSize*3] + } + out = out[:outP+maxHeaderSize] + + // stops at 1 + for remaining > 1 { + if previous0 { + start := charnum + for s.norm[charnum] == 0 { + charnum++ + } + for charnum >= start+24 { + start += 24 + bitStream += uint32(0xFFFF) << bitCount + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + } + for charnum >= start+3 { + start += 3 + bitStream += 3 << bitCount + bitCount += 2 + } + bitStream += uint32(charnum-start) << bitCount + bitCount += 2 + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + count := s.norm[charnum] + charnum++ + max := (2*threshold - 1) - remaining + if count < 0 { + remaining += count + } else { + remaining -= count + } + count++ // +1 for extra accuracy + if count >= threshold { + count += max // [0..max[ [max..threshold[ (...) [threshold+max 2*threshold[ + } + bitStream += uint32(count) << bitCount + bitCount += nbBits + if count < max { + bitCount-- + } + + previous0 = count == 1 + if remaining < 1 { + return nil, errors.New("internal error: remaining < 1") + } + for remaining < threshold { + nbBits-- + threshold >>= 1 + } + + if bitCount > 16 { + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += 2 + bitStream >>= 16 + bitCount -= 16 + } + } + + if outP+2 > len(out) { + return nil, fmt.Errorf("internal error: %d > %d, maxheader: %d, sl: %d, tl: %d, normcount: %v", outP+2, len(out), maxHeaderSize, s.symbolLen, int(tableLog), s.norm[:s.symbolLen]) + } + out[outP] = byte(bitStream) + out[outP+1] = byte(bitStream >> 8) + outP += int((bitCount + 7) / 8) + + if charnum > s.symbolLen { + return nil, errors.New("internal error: charnum > s.symbolLen") + } + return out[:outP], nil +} + +// Approximate symbol cost, as fractional value, using fixed-point format (accuracyLog fractional bits) +// note 1 : assume symbolValue is valid (<= maxSymbolValue) +// note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits * +func (s *fseEncoder) bitCost(symbolValue uint8, accuracyLog uint32) uint32 { + minNbBits := s.ct.symbolTT[symbolValue].deltaNbBits >> 16 + threshold := (minNbBits + 1) << 16 + if debugAsserts { + if !(s.actualTableLog < 16) { + panic("!s.actualTableLog < 16") + } + // ensure enough room for renormalization double shift + if !(uint8(accuracyLog) < 31-s.actualTableLog) { + panic("!uint8(accuracyLog) < 31-s.actualTableLog") + } + } + tableSize := uint32(1) << s.actualTableLog + deltaFromThreshold := threshold - (s.ct.symbolTT[symbolValue].deltaNbBits + tableSize) + // linear interpolation (very approximate) + normalizedDeltaFromThreshold := (deltaFromThreshold << accuracyLog) >> s.actualTableLog + bitMultiplier := uint32(1) << accuracyLog + if debugAsserts { + if s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold { + panic("s.ct.symbolTT[symbolValue].deltaNbBits+tableSize > threshold") + } + if normalizedDeltaFromThreshold > bitMultiplier { + panic("normalizedDeltaFromThreshold > bitMultiplier") + } + } + return (minNbBits+1)*bitMultiplier - normalizedDeltaFromThreshold +} + +// Returns the cost in bits of encoding the distribution in count using ctable. +// Histogram should only be up to the last non-zero symbol. +// Returns an -1 if ctable cannot represent all the symbols in count. +func (s *fseEncoder) approxSize(hist []uint32) uint32 { + if int(s.symbolLen) < len(hist) { + // More symbols than we have. + return math.MaxUint32 + } + if s.useRLE { + // We will never reuse RLE encoders. + return math.MaxUint32 + } + const kAccuracyLog = 8 + badCost := (uint32(s.actualTableLog) + 1) << kAccuracyLog + var cost uint32 + for i, v := range hist { + if v == 0 { + continue + } + if s.norm[i] == 0 { + return math.MaxUint32 + } + bitCost := s.bitCost(uint8(i), kAccuracyLog) + if bitCost > badCost { + return math.MaxUint32 + } + cost += v * bitCost + } + return cost >> kAccuracyLog +} + +// maxHeaderSize returns the maximum header size in bits. +// This is not exact size, but we want a penalty for new tables anyway. +func (s *fseEncoder) maxHeaderSize() uint32 { + if s.preDefined { + return 0 + } + if s.useRLE { + return 8 + } + return (((uint32(s.symbolLen) * uint32(s.actualTableLog)) >> 3) + 3) * 8 +} + +// cState contains the compression state of a stream. +type cState struct { + bw *bitWriter + stateTable []uint16 + state uint16 +} + +// init will initialize the compression state to the first symbol of the stream. +func (c *cState) init(bw *bitWriter, ct *cTable, first symbolTransform) { + c.bw = bw + c.stateTable = ct.stateTable + if len(c.stateTable) == 1 { + // RLE + c.stateTable[0] = uint16(0) + c.state = 0 + return + } + nbBitsOut := (first.deltaNbBits + (1 << 15)) >> 16 + im := int32((nbBitsOut << 16) - first.deltaNbBits) + lu := (im >> nbBitsOut) + int32(first.deltaFindState) + c.state = c.stateTable[lu] +} + +// flush will write the tablelog to the output and flush the remaining full bytes. +func (c *cState) flush(tableLog uint8) { + c.bw.flush32() + c.bw.addBits16NC(c.state, tableLog) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go new file mode 100644 index 0000000..474cb77 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/fse_predefined.go @@ -0,0 +1,158 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "fmt" + "math" + "sync" +) + +var ( + // fsePredef are the predefined fse tables as defined here: + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#default-distributions + // These values are already transformed. + fsePredef [3]fseDecoder + + // fsePredefEnc are the predefined encoder based on fse tables as defined here: + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#default-distributions + // These values are already transformed. + fsePredefEnc [3]fseEncoder + + // symbolTableX contain the transformations needed for each type as defined in + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#the-codes-for-literals-lengths-match-lengths-and-offsets + symbolTableX [3][]baseOffset + + // maxTableSymbol is the biggest supported symbol for each table type + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#the-codes-for-literals-lengths-match-lengths-and-offsets + maxTableSymbol = [3]uint8{tableLiteralLengths: maxLiteralLengthSymbol, tableOffsets: maxOffsetLengthSymbol, tableMatchLengths: maxMatchLengthSymbol} + + // bitTables is the bits table for each table. + bitTables = [3][]byte{tableLiteralLengths: llBitsTable[:], tableOffsets: nil, tableMatchLengths: mlBitsTable[:]} +) + +type tableIndex uint8 + +const ( + // indexes for fsePredef and symbolTableX + tableLiteralLengths tableIndex = 0 + tableOffsets tableIndex = 1 + tableMatchLengths tableIndex = 2 + + maxLiteralLengthSymbol = 35 + maxOffsetLengthSymbol = 30 + maxMatchLengthSymbol = 52 +) + +// baseOffset is used for calculating transformations. +type baseOffset struct { + baseLine uint32 + addBits uint8 +} + +// fillBase will precalculate base offsets with the given bit distributions. +func fillBase(dst []baseOffset, base uint32, bits ...uint8) { + if len(bits) != len(dst) { + panic(fmt.Sprintf("len(dst) (%d) != len(bits) (%d)", len(dst), len(bits))) + } + for i, bit := range bits { + if base > math.MaxInt32 { + panic("invalid decoding table, base overflows int32") + } + + dst[i] = baseOffset{ + baseLine: base, + addBits: bit, + } + base += 1 << bit + } +} + +var predef sync.Once + +func initPredefined() { + predef.Do(func() { + // Literals length codes + tmp := make([]baseOffset, 36) + for i := range tmp[:16] { + tmp[i] = baseOffset{ + baseLine: uint32(i), + addBits: 0, + } + } + fillBase(tmp[16:], 16, 1, 1, 1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + symbolTableX[tableLiteralLengths] = tmp + + // Match length codes + tmp = make([]baseOffset, 53) + for i := range tmp[:32] { + tmp[i] = baseOffset{ + // The transformation adds the 3 length. + baseLine: uint32(i) + 3, + addBits: 0, + } + } + fillBase(tmp[32:], 35, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + symbolTableX[tableMatchLengths] = tmp + + // Offset codes + tmp = make([]baseOffset, maxOffsetBits+1) + tmp[1] = baseOffset{ + baseLine: 1, + addBits: 1, + } + fillBase(tmp[2:], 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30) + symbolTableX[tableOffsets] = tmp + + // Fill predefined tables and transform them. + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#default-distributions + for i := range fsePredef[:] { + f := &fsePredef[i] + switch tableIndex(i) { + case tableLiteralLengths: + // https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L243 + f.actualTableLog = 6 + copy(f.norm[:], []int16{4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, + -1, -1, -1, -1}) + f.symbolLen = 36 + case tableOffsets: + // https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L281 + f.actualTableLog = 5 + copy(f.norm[:], []int16{ + 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1}) + f.symbolLen = 29 + case tableMatchLengths: + //https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L304 + f.actualTableLog = 6 + copy(f.norm[:], []int16{ + 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, + -1, -1, -1, -1, -1}) + f.symbolLen = 53 + } + if err := f.buildDtable(); err != nil { + panic(fmt.Errorf("building table %v: %v", tableIndex(i), err)) + } + if err := f.transform(symbolTableX[i]); err != nil { + panic(fmt.Errorf("building table %v: %v", tableIndex(i), err)) + } + f.preDefined = true + + // Create encoder as well + enc := &fsePredefEnc[i] + copy(enc.norm[:], f.norm[:]) + enc.symbolLen = f.symbolLen + enc.actualTableLog = f.actualTableLog + if err := enc.buildCTable(); err != nil { + panic(fmt.Errorf("building encoding table %v: %v", tableIndex(i), err)) + } + enc.setBits(bitTables[i]) + enc.preDefined = true + } + }) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/hash.go b/examples/go/vendor/github.com/klauspost/compress/zstd/hash.go new file mode 100644 index 0000000..5d73c21 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/hash.go @@ -0,0 +1,35 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +const ( + prime3bytes = 506832829 + prime4bytes = 2654435761 + prime5bytes = 889523592379 + prime6bytes = 227718039650203 + prime7bytes = 58295818150454627 + prime8bytes = 0xcf1bbcdcb7a56463 +) + +// hashLen returns a hash of the lowest mls bytes of with length output bits. +// mls must be >=3 and <=8. Any other value will return hash for 4 bytes. +// length should always be < 32. +// Preferably length and mls should be a constant for inlining. +func hashLen(u uint64, length, mls uint8) uint32 { + switch mls { + case 3: + return (uint32(u<<8) * prime3bytes) >> (32 - length) + case 5: + return uint32(((u << (64 - 40)) * prime5bytes) >> (64 - length)) + case 6: + return uint32(((u << (64 - 48)) * prime6bytes) >> (64 - length)) + case 7: + return uint32(((u << (64 - 56)) * prime7bytes) >> (64 - length)) + case 8: + return uint32((u * prime8bytes) >> (64 - length)) + default: + return (uint32(u) * prime4bytes) >> (32 - length) + } +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/history.go b/examples/go/vendor/github.com/klauspost/compress/zstd/history.go new file mode 100644 index 0000000..0916485 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/history.go @@ -0,0 +1,116 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "github.com/klauspost/compress/huff0" +) + +// history contains the information transferred between blocks. +type history struct { + // Literal decompression + huffTree *huff0.Scratch + + // Sequence decompression + decoders sequenceDecs + recentOffsets [3]int + + // History buffer... + b []byte + + // ignoreBuffer is meant to ignore a number of bytes + // when checking for matches in history + ignoreBuffer int + + windowSize int + allocFrameBuffer int // needed? + error bool + dict *dict +} + +// reset will reset the history to initial state of a frame. +// The history must already have been initialized to the desired size. +func (h *history) reset() { + h.b = h.b[:0] + h.ignoreBuffer = 0 + h.error = false + h.recentOffsets = [3]int{1, 4, 8} + h.decoders.freeDecoders() + h.decoders = sequenceDecs{br: h.decoders.br} + h.freeHuffDecoder() + h.huffTree = nil + h.dict = nil + //printf("history created: %+v (l: %d, c: %d)", *h, len(h.b), cap(h.b)) +} + +func (h *history) freeHuffDecoder() { + if h.huffTree != nil { + if h.dict == nil || h.dict.litEnc != h.huffTree { + huffDecoderPool.Put(h.huffTree) + h.huffTree = nil + } + } +} + +func (h *history) setDict(dict *dict) { + if dict == nil { + return + } + h.dict = dict + h.decoders.litLengths = dict.llDec + h.decoders.offsets = dict.ofDec + h.decoders.matchLengths = dict.mlDec + h.decoders.dict = dict.content + h.recentOffsets = dict.offsets + h.huffTree = dict.litEnc +} + +// append bytes to history. +// This function will make sure there is space for it, +// if the buffer has been allocated with enough extra space. +func (h *history) append(b []byte) { + if len(b) >= h.windowSize { + // Discard all history by simply overwriting + h.b = h.b[:h.windowSize] + copy(h.b, b[len(b)-h.windowSize:]) + return + } + + // If there is space, append it. + if len(b) < cap(h.b)-len(h.b) { + h.b = append(h.b, b...) + return + } + + // Move data down so we only have window size left. + // We know we have less than window size in b at this point. + discard := len(b) + len(h.b) - h.windowSize + copy(h.b, h.b[discard:]) + h.b = h.b[:h.windowSize] + copy(h.b[h.windowSize-len(b):], b) +} + +// ensureBlock will ensure there is space for at least one block... +func (h *history) ensureBlock() { + if cap(h.b) < h.allocFrameBuffer { + h.b = make([]byte, 0, h.allocFrameBuffer) + return + } + + avail := cap(h.b) - len(h.b) + if avail >= h.windowSize || avail > maxCompressedBlockSize { + return + } + // Move data down so we only have window size left. + // We know we have less than window size in b at this point. + discard := len(h.b) - h.windowSize + copy(h.b, h.b[discard:]) + h.b = h.b[:h.windowSize] +} + +// append bytes to history without ever discarding anything. +func (h *history) appendKeep(b []byte) { + h.b = append(h.b, b...) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt new file mode 100644 index 0000000..24b5306 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2016 Caleb Spare + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md new file mode 100644 index 0000000..777290d --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md @@ -0,0 +1,71 @@ +# xxhash + +VENDORED: Go to [github.com/cespare/xxhash](https://github.com/cespare/xxhash) for original package. + +xxhash is a Go implementation of the 64-bit [xxHash] algorithm, XXH64. This is a +high-quality hashing algorithm that is much faster than anything in the Go +standard library. + +This package provides a straightforward API: + +``` +func Sum64(b []byte) uint64 +func Sum64String(s string) uint64 +type Digest struct{ ... } + func New() *Digest +``` + +The `Digest` type implements hash.Hash64. Its key methods are: + +``` +func (*Digest) Write([]byte) (int, error) +func (*Digest) WriteString(string) (int, error) +func (*Digest) Sum64() uint64 +``` + +The package is written with optimized pure Go and also contains even faster +assembly implementations for amd64 and arm64. If desired, the `purego` build tag +opts into using the Go code even on those architectures. + +[xxHash]: http://cyan4973.github.io/xxHash/ + +## Compatibility + +This package is in a module and the latest code is in version 2 of the module. +You need a version of Go with at least "minimal module compatibility" to use +github.com/cespare/xxhash/v2: + +* 1.9.7+ for Go 1.9 +* 1.10.3+ for Go 1.10 +* Go 1.11 or later + +I recommend using the latest release of Go. + +## Benchmarks + +Here are some quick benchmarks comparing the pure-Go and assembly +implementations of Sum64. + +| input size | purego | asm | +| ---------- | --------- | --------- | +| 4 B | 1.3 GB/s | 1.2 GB/s | +| 16 B | 2.9 GB/s | 3.5 GB/s | +| 100 B | 6.9 GB/s | 8.1 GB/s | +| 4 KB | 11.7 GB/s | 16.7 GB/s | +| 10 MB | 12.0 GB/s | 17.3 GB/s | + +These numbers were generated on Ubuntu 20.04 with an Intel Xeon Platinum 8252C +CPU using the following commands under Go 1.19.2: + +``` +benchstat <(go test -tags purego -benchtime 500ms -count 15 -bench 'Sum64$') +benchstat <(go test -benchtime 500ms -count 15 -bench 'Sum64$') +``` + +## Projects using this package + +- [InfluxDB](https://github.com/influxdata/influxdb) +- [Prometheus](https://github.com/prometheus/prometheus) +- [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) +- [FreeCache](https://github.com/coocood/freecache) +- [FastCache](https://github.com/VictoriaMetrics/fastcache) diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go new file mode 100644 index 0000000..fc40c82 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash.go @@ -0,0 +1,230 @@ +// Package xxhash implements the 64-bit variant of xxHash (XXH64) as described +// at http://cyan4973.github.io/xxHash/. +// THIS IS VENDORED: Go to github.com/cespare/xxhash for original package. + +package xxhash + +import ( + "encoding/binary" + "errors" + "math/bits" +) + +const ( + prime1 uint64 = 11400714785074694791 + prime2 uint64 = 14029467366897019727 + prime3 uint64 = 1609587929392839161 + prime4 uint64 = 9650029242287828579 + prime5 uint64 = 2870177450012600261 +) + +// Store the primes in an array as well. +// +// The consts are used when possible in Go code to avoid MOVs but we need a +// contiguous array of the assembly code. +var primes = [...]uint64{prime1, prime2, prime3, prime4, prime5} + +// Digest implements hash.Hash64. +type Digest struct { + v1 uint64 + v2 uint64 + v3 uint64 + v4 uint64 + total uint64 + mem [32]byte + n int // how much of mem is used +} + +// New creates a new Digest that computes the 64-bit xxHash algorithm. +func New() *Digest { + var d Digest + d.Reset() + return &d +} + +// Reset clears the Digest's state so that it can be reused. +func (d *Digest) Reset() { + d.v1 = primes[0] + prime2 + d.v2 = prime2 + d.v3 = 0 + d.v4 = -primes[0] + d.total = 0 + d.n = 0 +} + +// Size always returns 8 bytes. +func (d *Digest) Size() int { return 8 } + +// BlockSize always returns 32 bytes. +func (d *Digest) BlockSize() int { return 32 } + +// Write adds more data to d. It always returns len(b), nil. +func (d *Digest) Write(b []byte) (n int, err error) { + n = len(b) + d.total += uint64(n) + + memleft := d.mem[d.n&(len(d.mem)-1):] + + if d.n+n < 32 { + // This new data doesn't even fill the current block. + copy(memleft, b) + d.n += n + return + } + + if d.n > 0 { + // Finish off the partial block. + c := copy(memleft, b) + d.v1 = round(d.v1, u64(d.mem[0:8])) + d.v2 = round(d.v2, u64(d.mem[8:16])) + d.v3 = round(d.v3, u64(d.mem[16:24])) + d.v4 = round(d.v4, u64(d.mem[24:32])) + b = b[c:] + d.n = 0 + } + + if len(b) >= 32 { + // One or more full blocks left. + nw := writeBlocks(d, b) + b = b[nw:] + } + + // Store any remaining partial block. + copy(d.mem[:], b) + d.n = len(b) + + return +} + +// Sum appends the current hash to b and returns the resulting slice. +func (d *Digest) Sum(b []byte) []byte { + s := d.Sum64() + return append( + b, + byte(s>>56), + byte(s>>48), + byte(s>>40), + byte(s>>32), + byte(s>>24), + byte(s>>16), + byte(s>>8), + byte(s), + ) +} + +// Sum64 returns the current hash. +func (d *Digest) Sum64() uint64 { + var h uint64 + + if d.total >= 32 { + v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 + h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + h = mergeRound(h, v1) + h = mergeRound(h, v2) + h = mergeRound(h, v3) + h = mergeRound(h, v4) + } else { + h = d.v3 + prime5 + } + + h += d.total + + b := d.mem[:d.n&(len(d.mem)-1)] + for ; len(b) >= 8; b = b[8:] { + k1 := round(0, u64(b[:8])) + h ^= k1 + h = rol27(h)*prime1 + prime4 + } + if len(b) >= 4 { + h ^= uint64(u32(b[:4])) * prime1 + h = rol23(h)*prime2 + prime3 + b = b[4:] + } + for ; len(b) > 0; b = b[1:] { + h ^= uint64(b[0]) * prime5 + h = rol11(h) * prime1 + } + + h ^= h >> 33 + h *= prime2 + h ^= h >> 29 + h *= prime3 + h ^= h >> 32 + + return h +} + +const ( + magic = "xxh\x06" + marshaledSize = len(magic) + 8*5 + 32 +) + +// MarshalBinary implements the encoding.BinaryMarshaler interface. +func (d *Digest) MarshalBinary() ([]byte, error) { + b := make([]byte, 0, marshaledSize) + b = append(b, magic...) + b = appendUint64(b, d.v1) + b = appendUint64(b, d.v2) + b = appendUint64(b, d.v3) + b = appendUint64(b, d.v4) + b = appendUint64(b, d.total) + b = append(b, d.mem[:d.n]...) + b = b[:len(b)+len(d.mem)-d.n] + return b, nil +} + +// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. +func (d *Digest) UnmarshalBinary(b []byte) error { + if len(b) < len(magic) || string(b[:len(magic)]) != magic { + return errors.New("xxhash: invalid hash state identifier") + } + if len(b) != marshaledSize { + return errors.New("xxhash: invalid hash state size") + } + b = b[len(magic):] + b, d.v1 = consumeUint64(b) + b, d.v2 = consumeUint64(b) + b, d.v3 = consumeUint64(b) + b, d.v4 = consumeUint64(b) + b, d.total = consumeUint64(b) + copy(d.mem[:], b) + d.n = int(d.total % uint64(len(d.mem))) + return nil +} + +func appendUint64(b []byte, x uint64) []byte { + var a [8]byte + binary.LittleEndian.PutUint64(a[:], x) + return append(b, a[:]...) +} + +func consumeUint64(b []byte) ([]byte, uint64) { + x := u64(b) + return b[8:], x +} + +func u64(b []byte) uint64 { return binary.LittleEndian.Uint64(b) } +func u32(b []byte) uint32 { return binary.LittleEndian.Uint32(b) } + +func round(acc, input uint64) uint64 { + acc += input * prime2 + acc = rol31(acc) + acc *= prime1 + return acc +} + +func mergeRound(acc, val uint64) uint64 { + val = round(0, val) + acc ^= val + acc = acc*prime1 + prime4 + return acc +} + +func rol1(x uint64) uint64 { return bits.RotateLeft64(x, 1) } +func rol7(x uint64) uint64 { return bits.RotateLeft64(x, 7) } +func rol11(x uint64) uint64 { return bits.RotateLeft64(x, 11) } +func rol12(x uint64) uint64 { return bits.RotateLeft64(x, 12) } +func rol18(x uint64) uint64 { return bits.RotateLeft64(x, 18) } +func rol23(x uint64) uint64 { return bits.RotateLeft64(x, 23) } +func rol27(x uint64) uint64 { return bits.RotateLeft64(x, 27) } +func rol31(x uint64) uint64 { return bits.RotateLeft64(x, 31) } diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s new file mode 100644 index 0000000..ddb63aa --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s @@ -0,0 +1,210 @@ +//go:build !appengine && gc && !purego && !noasm +// +build !appengine +// +build gc +// +build !purego +// +build !noasm + +#include "textflag.h" + +// Registers: +#define h AX +#define d AX +#define p SI // pointer to advance through b +#define n DX +#define end BX // loop end +#define v1 R8 +#define v2 R9 +#define v3 R10 +#define v4 R11 +#define x R12 +#define prime1 R13 +#define prime2 R14 +#define prime4 DI + +#define round(acc, x) \ + IMULQ prime2, x \ + ADDQ x, acc \ + ROLQ $31, acc \ + IMULQ prime1, acc + +// round0 performs the operation x = round(0, x). +#define round0(x) \ + IMULQ prime2, x \ + ROLQ $31, x \ + IMULQ prime1, x + +// mergeRound applies a merge round on the two registers acc and x. +// It assumes that prime1, prime2, and prime4 have been loaded. +#define mergeRound(acc, x) \ + round0(x) \ + XORQ x, acc \ + IMULQ prime1, acc \ + ADDQ prime4, acc + +// blockLoop processes as many 32-byte blocks as possible, +// updating v1, v2, v3, and v4. It assumes that there is at least one block +// to process. +#define blockLoop() \ +loop: \ + MOVQ +0(p), x \ + round(v1, x) \ + MOVQ +8(p), x \ + round(v2, x) \ + MOVQ +16(p), x \ + round(v3, x) \ + MOVQ +24(p), x \ + round(v4, x) \ + ADDQ $32, p \ + CMPQ p, end \ + JLE loop + +// func Sum64(b []byte) uint64 +TEXT ·Sum64(SB), NOSPLIT|NOFRAME, $0-32 + // Load fixed primes. + MOVQ ·primes+0(SB), prime1 + MOVQ ·primes+8(SB), prime2 + MOVQ ·primes+24(SB), prime4 + + // Load slice. + MOVQ b_base+0(FP), p + MOVQ b_len+8(FP), n + LEAQ (p)(n*1), end + + // The first loop limit will be len(b)-32. + SUBQ $32, end + + // Check whether we have at least one block. + CMPQ n, $32 + JLT noBlocks + + // Set up initial state (v1, v2, v3, v4). + MOVQ prime1, v1 + ADDQ prime2, v1 + MOVQ prime2, v2 + XORQ v3, v3 + XORQ v4, v4 + SUBQ prime1, v4 + + blockLoop() + + MOVQ v1, h + ROLQ $1, h + MOVQ v2, x + ROLQ $7, x + ADDQ x, h + MOVQ v3, x + ROLQ $12, x + ADDQ x, h + MOVQ v4, x + ROLQ $18, x + ADDQ x, h + + mergeRound(h, v1) + mergeRound(h, v2) + mergeRound(h, v3) + mergeRound(h, v4) + + JMP afterBlocks + +noBlocks: + MOVQ ·primes+32(SB), h + +afterBlocks: + ADDQ n, h + + ADDQ $24, end + CMPQ p, end + JG try4 + +loop8: + MOVQ (p), x + ADDQ $8, p + round0(x) + XORQ x, h + ROLQ $27, h + IMULQ prime1, h + ADDQ prime4, h + + CMPQ p, end + JLE loop8 + +try4: + ADDQ $4, end + CMPQ p, end + JG try1 + + MOVL (p), x + ADDQ $4, p + IMULQ prime1, x + XORQ x, h + + ROLQ $23, h + IMULQ prime2, h + ADDQ ·primes+16(SB), h + +try1: + ADDQ $4, end + CMPQ p, end + JGE finalize + +loop1: + MOVBQZX (p), x + ADDQ $1, p + IMULQ ·primes+32(SB), x + XORQ x, h + ROLQ $11, h + IMULQ prime1, h + + CMPQ p, end + JL loop1 + +finalize: + MOVQ h, x + SHRQ $33, x + XORQ x, h + IMULQ prime2, h + MOVQ h, x + SHRQ $29, x + XORQ x, h + IMULQ ·primes+16(SB), h + MOVQ h, x + SHRQ $32, x + XORQ x, h + + MOVQ h, ret+24(FP) + RET + +// func writeBlocks(d *Digest, b []byte) int +TEXT ·writeBlocks(SB), NOSPLIT|NOFRAME, $0-40 + // Load fixed primes needed for round. + MOVQ ·primes+0(SB), prime1 + MOVQ ·primes+8(SB), prime2 + + // Load slice. + MOVQ b_base+8(FP), p + MOVQ b_len+16(FP), n + LEAQ (p)(n*1), end + SUBQ $32, end + + // Load vN from d. + MOVQ s+0(FP), d + MOVQ 0(d), v1 + MOVQ 8(d), v2 + MOVQ 16(d), v3 + MOVQ 24(d), v4 + + // We don't need to check the loop condition here; this function is + // always called with at least one block of data to process. + blockLoop() + + // Copy vN back to d. + MOVQ v1, 0(d) + MOVQ v2, 8(d) + MOVQ v3, 16(d) + MOVQ v4, 24(d) + + // The number of bytes written is p minus the old base pointer. + SUBQ b_base+8(FP), p + MOVQ p, ret+32(FP) + + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s new file mode 100644 index 0000000..ae7d4d3 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_arm64.s @@ -0,0 +1,184 @@ +//go:build !appengine && gc && !purego && !noasm +// +build !appengine +// +build gc +// +build !purego +// +build !noasm + +#include "textflag.h" + +// Registers: +#define digest R1 +#define h R2 // return value +#define p R3 // input pointer +#define n R4 // input length +#define nblocks R5 // n / 32 +#define prime1 R7 +#define prime2 R8 +#define prime3 R9 +#define prime4 R10 +#define prime5 R11 +#define v1 R12 +#define v2 R13 +#define v3 R14 +#define v4 R15 +#define x1 R20 +#define x2 R21 +#define x3 R22 +#define x4 R23 + +#define round(acc, x) \ + MADD prime2, acc, x, acc \ + ROR $64-31, acc \ + MUL prime1, acc + +// round0 performs the operation x = round(0, x). +#define round0(x) \ + MUL prime2, x \ + ROR $64-31, x \ + MUL prime1, x + +#define mergeRound(acc, x) \ + round0(x) \ + EOR x, acc \ + MADD acc, prime4, prime1, acc + +// blockLoop processes as many 32-byte blocks as possible, +// updating v1, v2, v3, and v4. It assumes that n >= 32. +#define blockLoop() \ + LSR $5, n, nblocks \ + PCALIGN $16 \ + loop: \ + LDP.P 16(p), (x1, x2) \ + LDP.P 16(p), (x3, x4) \ + round(v1, x1) \ + round(v2, x2) \ + round(v3, x3) \ + round(v4, x4) \ + SUB $1, nblocks \ + CBNZ nblocks, loop + +// func Sum64(b []byte) uint64 +TEXT ·Sum64(SB), NOSPLIT|NOFRAME, $0-32 + LDP b_base+0(FP), (p, n) + + LDP ·primes+0(SB), (prime1, prime2) + LDP ·primes+16(SB), (prime3, prime4) + MOVD ·primes+32(SB), prime5 + + CMP $32, n + CSEL LT, prime5, ZR, h // if n < 32 { h = prime5 } else { h = 0 } + BLT afterLoop + + ADD prime1, prime2, v1 + MOVD prime2, v2 + MOVD $0, v3 + NEG prime1, v4 + + blockLoop() + + ROR $64-1, v1, x1 + ROR $64-7, v2, x2 + ADD x1, x2 + ROR $64-12, v3, x3 + ROR $64-18, v4, x4 + ADD x3, x4 + ADD x2, x4, h + + mergeRound(h, v1) + mergeRound(h, v2) + mergeRound(h, v3) + mergeRound(h, v4) + +afterLoop: + ADD n, h + + TBZ $4, n, try8 + LDP.P 16(p), (x1, x2) + + round0(x1) + + // NOTE: here and below, sequencing the EOR after the ROR (using a + // rotated register) is worth a small but measurable speedup for small + // inputs. + ROR $64-27, h + EOR x1 @> 64-27, h, h + MADD h, prime4, prime1, h + + round0(x2) + ROR $64-27, h + EOR x2 @> 64-27, h, h + MADD h, prime4, prime1, h + +try8: + TBZ $3, n, try4 + MOVD.P 8(p), x1 + + round0(x1) + ROR $64-27, h + EOR x1 @> 64-27, h, h + MADD h, prime4, prime1, h + +try4: + TBZ $2, n, try2 + MOVWU.P 4(p), x2 + + MUL prime1, x2 + ROR $64-23, h + EOR x2 @> 64-23, h, h + MADD h, prime3, prime2, h + +try2: + TBZ $1, n, try1 + MOVHU.P 2(p), x3 + AND $255, x3, x1 + LSR $8, x3, x2 + + MUL prime5, x1 + ROR $64-11, h + EOR x1 @> 64-11, h, h + MUL prime1, h + + MUL prime5, x2 + ROR $64-11, h + EOR x2 @> 64-11, h, h + MUL prime1, h + +try1: + TBZ $0, n, finalize + MOVBU (p), x4 + + MUL prime5, x4 + ROR $64-11, h + EOR x4 @> 64-11, h, h + MUL prime1, h + +finalize: + EOR h >> 33, h + MUL prime2, h + EOR h >> 29, h + MUL prime3, h + EOR h >> 32, h + + MOVD h, ret+24(FP) + RET + +// func writeBlocks(s *Digest, b []byte) int +TEXT ·writeBlocks(SB), NOSPLIT|NOFRAME, $0-40 + LDP ·primes+0(SB), (prime1, prime2) + + // Load state. Assume v[1-4] are stored contiguously. + MOVD s+0(FP), digest + LDP 0(digest), (v1, v2) + LDP 16(digest), (v3, v4) + + LDP b_base+8(FP), (p, n) + + blockLoop() + + // Store updated state. + STP (v1, v2), 0(digest) + STP (v3, v4), 16(digest) + + BIC $31, n + MOVD n, ret+32(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go new file mode 100644 index 0000000..d4221ed --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_asm.go @@ -0,0 +1,16 @@ +//go:build (amd64 || arm64) && !appengine && gc && !purego && !noasm +// +build amd64 arm64 +// +build !appengine +// +build gc +// +build !purego +// +build !noasm + +package xxhash + +// Sum64 computes the 64-bit xxHash digest of b. +// +//go:noescape +func Sum64(b []byte) uint64 + +//go:noescape +func writeBlocks(s *Digest, b []byte) int diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go new file mode 100644 index 0000000..0be16ce --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_other.go @@ -0,0 +1,76 @@ +//go:build (!amd64 && !arm64) || appengine || !gc || purego || noasm +// +build !amd64,!arm64 appengine !gc purego noasm + +package xxhash + +// Sum64 computes the 64-bit xxHash digest of b. +func Sum64(b []byte) uint64 { + // A simpler version would be + // d := New() + // d.Write(b) + // return d.Sum64() + // but this is faster, particularly for small inputs. + + n := len(b) + var h uint64 + + if n >= 32 { + v1 := primes[0] + prime2 + v2 := prime2 + v3 := uint64(0) + v4 := -primes[0] + for len(b) >= 32 { + v1 = round(v1, u64(b[0:8:len(b)])) + v2 = round(v2, u64(b[8:16:len(b)])) + v3 = round(v3, u64(b[16:24:len(b)])) + v4 = round(v4, u64(b[24:32:len(b)])) + b = b[32:len(b):len(b)] + } + h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + h = mergeRound(h, v1) + h = mergeRound(h, v2) + h = mergeRound(h, v3) + h = mergeRound(h, v4) + } else { + h = prime5 + } + + h += uint64(n) + + for ; len(b) >= 8; b = b[8:] { + k1 := round(0, u64(b[:8])) + h ^= k1 + h = rol27(h)*prime1 + prime4 + } + if len(b) >= 4 { + h ^= uint64(u32(b[:4])) * prime1 + h = rol23(h)*prime2 + prime3 + b = b[4:] + } + for ; len(b) > 0; b = b[1:] { + h ^= uint64(b[0]) * prime5 + h = rol11(h) * prime1 + } + + h ^= h >> 33 + h *= prime2 + h ^= h >> 29 + h *= prime3 + h ^= h >> 32 + + return h +} + +func writeBlocks(d *Digest, b []byte) int { + v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 + n := len(b) + for len(b) >= 32 { + v1 = round(v1, u64(b[0:8:len(b)])) + v2 = round(v2, u64(b[8:16:len(b)])) + v3 = round(v3, u64(b[16:24:len(b)])) + v4 = round(v4, u64(b[24:32:len(b)])) + b = b[32:len(b):len(b)] + } + d.v1, d.v2, d.v3, d.v4 = v1, v2, v3, v4 + return n - len(b) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go new file mode 100644 index 0000000..6f3b0cb --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_safe.go @@ -0,0 +1,11 @@ +package xxhash + +// Sum64String computes the 64-bit xxHash digest of s. +func Sum64String(s string) uint64 { + return Sum64([]byte(s)) +} + +// WriteString adds more data to d. It always returns len(s), nil. +func (d *Digest) WriteString(s string) (n int, err error) { + return d.Write([]byte(s)) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go new file mode 100644 index 0000000..f41932b --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.go @@ -0,0 +1,16 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +// matchLen returns how many bytes match in a and b +// +// It assumes that: +// +// len(a) <= len(b) and len(a) > 0 +// +//go:noescape +func matchLen(a []byte, b []byte) int diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s new file mode 100644 index 0000000..0782b86 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_amd64.s @@ -0,0 +1,66 @@ +// Copied from S2 implementation. + +//go:build !appengine && !noasm && gc && !noasm + +#include "textflag.h" + +// func matchLen(a []byte, b []byte) int +TEXT ·matchLen(SB), NOSPLIT, $0-56 + MOVQ a_base+0(FP), AX + MOVQ b_base+24(FP), CX + MOVQ a_len+8(FP), DX + + // matchLen + XORL SI, SI + CMPL DX, $0x08 + JB matchlen_match4_standalone + +matchlen_loopback_standalone: + MOVQ (AX)(SI*1), BX + XORQ (CX)(SI*1), BX + JZ matchlen_loop_standalone + +#ifdef GOAMD64_v3 + TZCNTQ BX, BX +#else + BSFQ BX, BX +#endif + SHRL $0x03, BX + LEAL (SI)(BX*1), SI + JMP gen_match_len_end + +matchlen_loop_standalone: + LEAL -8(DX), DX + LEAL 8(SI), SI + CMPL DX, $0x08 + JAE matchlen_loopback_standalone + +matchlen_match4_standalone: + CMPL DX, $0x04 + JB matchlen_match2_standalone + MOVL (AX)(SI*1), BX + CMPL (CX)(SI*1), BX + JNE matchlen_match2_standalone + LEAL -4(DX), DX + LEAL 4(SI), SI + +matchlen_match2_standalone: + CMPL DX, $0x02 + JB matchlen_match1_standalone + MOVW (AX)(SI*1), BX + CMPW (CX)(SI*1), BX + JNE matchlen_match1_standalone + LEAL -2(DX), DX + LEAL 2(SI), SI + +matchlen_match1_standalone: + CMPL DX, $0x01 + JB gen_match_len_end + MOVB (AX)(SI*1), BL + CMPB (CX)(SI*1), BL + JNE gen_match_len_end + INCL SI + +gen_match_len_end: + MOVQ SI, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go new file mode 100644 index 0000000..57b9c31 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/matchlen_generic.go @@ -0,0 +1,33 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +import ( + "encoding/binary" + "math/bits" +) + +// matchLen returns the maximum common prefix length of a and b. +// a must be the shortest of the two. +func matchLen(a, b []byte) (n int) { + for ; len(a) >= 8 && len(b) >= 8; a, b = a[8:], b[8:] { + diff := binary.LittleEndian.Uint64(a) ^ binary.LittleEndian.Uint64(b) + if diff != 0 { + return n + bits.TrailingZeros64(diff)>>3 + } + n += 8 + } + + for i := range a { + if a[i] != b[i] { + break + } + n++ + } + return n + +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go new file mode 100644 index 0000000..d7fe6d8 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec.go @@ -0,0 +1,503 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "errors" + "fmt" + "io" +) + +type seq struct { + litLen uint32 + matchLen uint32 + offset uint32 + + // Codes are stored here for the encoder + // so they only have to be looked up once. + llCode, mlCode, ofCode uint8 +} + +type seqVals struct { + ll, ml, mo int +} + +func (s seq) String() string { + if s.offset <= 3 { + if s.offset == 0 { + return fmt.Sprint("litLen:", s.litLen, ", matchLen:", s.matchLen+zstdMinMatch, ", offset: INVALID (0)") + } + return fmt.Sprint("litLen:", s.litLen, ", matchLen:", s.matchLen+zstdMinMatch, ", offset:", s.offset, " (repeat)") + } + return fmt.Sprint("litLen:", s.litLen, ", matchLen:", s.matchLen+zstdMinMatch, ", offset:", s.offset-3, " (new)") +} + +type seqCompMode uint8 + +const ( + compModePredefined seqCompMode = iota + compModeRLE + compModeFSE + compModeRepeat +) + +type sequenceDec struct { + // decoder keeps track of the current state and updates it from the bitstream. + fse *fseDecoder + state fseState + repeat bool +} + +// init the state of the decoder with input from stream. +func (s *sequenceDec) init(br *bitReader) error { + if s.fse == nil { + return errors.New("sequence decoder not defined") + } + s.state.init(br, s.fse.actualTableLog, s.fse.dt[:1< cap(s.out) { + addBytes := s.seqSize + len(s.out) + s.out = append(s.out, make([]byte, addBytes)...) + s.out = s.out[:len(s.out)-addBytes] + } + + if debugDecoder { + printf("Execute %d seqs with hist %d, dict %d, literals: %d into %d bytes\n", len(seqs), len(hist), len(s.dict), len(s.literals), s.seqSize) + } + + var t = len(s.out) + out := s.out[:t+s.seqSize] + + for _, seq := range seqs { + // Add literals + copy(out[t:], s.literals[:seq.ll]) + t += seq.ll + s.literals = s.literals[seq.ll:] + + // Copy from dictionary... + if seq.mo > t+len(hist) || seq.mo > s.windowSize { + if len(s.dict) == 0 { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", seq.mo, t+len(hist)) + } + + // we may be in dictionary. + dictO := len(s.dict) - (seq.mo - (t + len(hist))) + if dictO < 0 || dictO >= len(s.dict) { + return fmt.Errorf("match offset (%d) bigger than current history+dict (%d)", seq.mo, t+len(hist)+len(s.dict)) + } + end := dictO + seq.ml + if end > len(s.dict) { + n := len(s.dict) - dictO + copy(out[t:], s.dict[dictO:]) + t += n + seq.ml -= n + } else { + copy(out[t:], s.dict[dictO:end]) + t += end - dictO + continue + } + } + + // Copy from history. + if v := seq.mo - t; v > 0 { + // v is the start position in history from end. + start := len(hist) - v + if seq.ml > v { + // Some goes into current block. + // Copy remainder of history + copy(out[t:], hist[start:]) + t += v + seq.ml -= v + } else { + copy(out[t:], hist[start:start+seq.ml]) + t += seq.ml + continue + } + } + // We must be in current buffer now + if seq.ml > 0 { + start := t - seq.mo + if seq.ml <= t-start { + // No overlap + copy(out[t:], out[start:start+seq.ml]) + t += seq.ml + continue + } else { + // Overlapping copy + // Extend destination slice and copy one byte at the time. + src := out[start : start+seq.ml] + dst := out[t:] + dst = dst[:len(src)] + t += len(src) + // Destination is the space we just added. + for i := range src { + dst[i] = src[i] + } + } + } + } + + // Add final literals + copy(out[t:], s.literals) + if debugDecoder { + t += len(s.literals) + if t != len(out) { + panic(fmt.Errorf("length mismatch, want %d, got %d, ss: %d", len(out), t, s.seqSize)) + } + } + s.out = out + + return nil +} + +// decode sequences from the stream with the provided history. +func (s *sequenceDecs) decodeSync(hist []byte) error { + supported, err := s.decodeSyncSimple(hist) + if supported { + return err + } + + br := s.br + seqs := s.nSeqs + startSize := len(s.out) + // Grab full sizes tables, to avoid bounds checks. + llTable, mlTable, ofTable := s.litLengths.fse.dt[:maxTablesize], s.matchLengths.fse.dt[:maxTablesize], s.offsets.fse.dt[:maxTablesize] + llState, mlState, ofState := s.litLengths.state.state, s.matchLengths.state.state, s.offsets.state.state + out := s.out + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + + if debugDecoder { + println("decodeSync: decoding", seqs, "sequences", br.remain(), "bits remain on stream") + } + for i := seqs - 1; i >= 0; i-- { + if br.overread() { + printf("reading sequence %d, exceeded available data. Overread by %d\n", seqs-i, -br.remain()) + return io.ErrUnexpectedEOF + } + var ll, mo, ml int + if len(br.in) > 4+((maxOffsetBits+16+16)>>3) { + // inlined function: + // ll, mo, ml = s.nextFast(br, llState, mlState, ofState) + + // Final will not read from stream. + var llB, mlB, moB uint8 + ll, llB = llState.final() + ml, mlB = mlState.final() + mo, moB = ofState.final() + + // extra bits are stored in reverse order. + br.fillFast() + mo += br.getBits(moB) + if s.maxBits > 32 { + br.fillFast() + } + ml += br.getBits(mlB) + ll += br.getBits(llB) + + if moB > 1 { + s.prevOffset[2] = s.prevOffset[1] + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = mo + } else { + // mo = s.adjustOffset(mo, ll, moB) + // Inlined for rather big speedup + if ll == 0 { + // There is an exception though, when current sequence's literals_length = 0. + // In this case, repeated offsets are shifted by one, so an offset_value of 1 means Repeated_Offset2, + // an offset_value of 2 means Repeated_Offset3, and an offset_value of 3 means Repeated_Offset1 - 1_byte. + mo++ + } + + if mo == 0 { + mo = s.prevOffset[0] + } else { + var temp int + if mo == 3 { + temp = s.prevOffset[0] - 1 + } else { + temp = s.prevOffset[mo] + } + + if temp == 0 { + // 0 is not valid; input is corrupted; force offset to 1 + println("WARNING: temp was 0") + temp = 1 + } + + if mo != 1 { + s.prevOffset[2] = s.prevOffset[1] + } + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = temp + mo = temp + } + } + br.fillFast() + } else { + ll, mo, ml = s.next(br, llState, mlState, ofState) + br.fill() + } + + if debugSequences { + println("Seq", seqs-i-1, "Litlen:", ll, "mo:", mo, "(abs) ml:", ml) + } + + if ll > len(s.literals) { + return fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", ll, len(s.literals)) + } + size := ll + ml + len(out) + if size-startSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + if size > cap(out) { + // Not enough size, which can happen under high volume block streaming conditions + // but could be if destination slice is too small for sync operations. + // over-allocating here can create a large amount of GC pressure so we try to keep + // it as contained as possible + used := len(out) - startSize + addBytes := 256 + ll + ml + used>>2 + // Clamp to max block size. + if used+addBytes > maxBlockSize { + addBytes = maxBlockSize - used + } + out = append(out, make([]byte, addBytes)...) + out = out[:len(out)-addBytes] + } + if ml > maxMatchLen { + return fmt.Errorf("match len (%d) bigger than max allowed length", ml) + } + + // Add literals + out = append(out, s.literals[:ll]...) + s.literals = s.literals[ll:] + + if mo == 0 && ml > 0 { + return fmt.Errorf("zero matchoff and matchlen (%d) > 0", ml) + } + + if mo > len(out)+len(hist) || mo > s.windowSize { + if len(s.dict) == 0 { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", mo, len(out)+len(hist)-startSize) + } + + // we may be in dictionary. + dictO := len(s.dict) - (mo - (len(out) + len(hist))) + if dictO < 0 || dictO >= len(s.dict) { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", mo, len(out)+len(hist)-startSize) + } + end := dictO + ml + if end > len(s.dict) { + out = append(out, s.dict[dictO:]...) + ml -= len(s.dict) - dictO + } else { + out = append(out, s.dict[dictO:end]...) + mo = 0 + ml = 0 + } + } + + // Copy from history. + // TODO: Blocks without history could be made to ignore this completely. + if v := mo - len(out); v > 0 { + // v is the start position in history from end. + start := len(hist) - v + if ml > v { + // Some goes into current block. + // Copy remainder of history + out = append(out, hist[start:]...) + ml -= v + } else { + out = append(out, hist[start:start+ml]...) + ml = 0 + } + } + // We must be in current buffer now + if ml > 0 { + start := len(out) - mo + if ml <= len(out)-start { + // No overlap + out = append(out, out[start:start+ml]...) + } else { + // Overlapping copy + // Extend destination slice and copy one byte at the time. + out = out[:len(out)+ml] + src := out[start : start+ml] + // Destination is the space we just added. + dst := out[len(out)-ml:] + dst = dst[:len(src)] + for i := range src { + dst[i] = src[i] + } + } + } + if i == 0 { + // This is the last sequence, so we shouldn't update state. + break + } + + // Manually inlined, ~ 5-20% faster + // Update all 3 states at once. Approx 20% faster. + nBits := llState.nbBits() + mlState.nbBits() + ofState.nbBits() + if nBits == 0 { + llState = llTable[llState.newState()&maxTableMask] + mlState = mlTable[mlState.newState()&maxTableMask] + ofState = ofTable[ofState.newState()&maxTableMask] + } else { + bits := br.get32BitsFast(nBits) + + lowBits := uint16(bits >> ((ofState.nbBits() + mlState.nbBits()) & 31)) + llState = llTable[(llState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits >> (ofState.nbBits() & 31)) + lowBits &= bitMask[mlState.nbBits()&15] + mlState = mlTable[(mlState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits) & bitMask[ofState.nbBits()&15] + ofState = ofTable[(ofState.newState()+lowBits)&maxTableMask] + } + } + + if size := len(s.literals) + len(out) - startSize; size > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + + // Add final literals + s.out = append(out, s.literals...) + return br.close() +} + +var bitMask [16]uint16 + +func init() { + for i := range bitMask[:] { + bitMask[i] = uint16((1 << uint(i)) - 1) + } +} + +func (s *sequenceDecs) next(br *bitReader, llState, mlState, ofState decSymbol) (ll, mo, ml int) { + // Final will not read from stream. + ll, llB := llState.final() + ml, mlB := mlState.final() + mo, moB := ofState.final() + + // extra bits are stored in reverse order. + br.fill() + mo += br.getBits(moB) + if s.maxBits > 32 { + br.fill() + } + // matchlength+literal length, max 32 bits + ml += br.getBits(mlB) + ll += br.getBits(llB) + mo = s.adjustOffset(mo, ll, moB) + return +} + +func (s *sequenceDecs) adjustOffset(offset, litLen int, offsetB uint8) int { + if offsetB > 1 { + s.prevOffset[2] = s.prevOffset[1] + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = offset + return offset + } + + if litLen == 0 { + // There is an exception though, when current sequence's literals_length = 0. + // In this case, repeated offsets are shifted by one, so an offset_value of 1 means Repeated_Offset2, + // an offset_value of 2 means Repeated_Offset3, and an offset_value of 3 means Repeated_Offset1 - 1_byte. + offset++ + } + + if offset == 0 { + return s.prevOffset[0] + } + var temp int + if offset == 3 { + temp = s.prevOffset[0] - 1 + } else { + temp = s.prevOffset[offset] + } + + if temp == 0 { + // 0 is not valid; input is corrupted; force offset to 1 + println("temp was 0") + temp = 1 + } + + if offset != 1 { + s.prevOffset[2] = s.prevOffset[1] + } + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = temp + return temp +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go new file mode 100644 index 0000000..8adabd8 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go @@ -0,0 +1,394 @@ +//go:build amd64 && !appengine && !noasm && gc +// +build amd64,!appengine,!noasm,gc + +package zstd + +import ( + "fmt" + "io" + + "github.com/klauspost/compress/internal/cpuinfo" +) + +type decodeSyncAsmContext struct { + llTable []decSymbol + mlTable []decSymbol + ofTable []decSymbol + llState uint64 + mlState uint64 + ofState uint64 + iteration int + litRemain int + out []byte + outPosition int + literals []byte + litPosition int + history []byte + windowSize int + ll int // set on error (not for all errors, please refer to _generate/gen.go) + ml int // set on error (not for all errors, please refer to _generate/gen.go) + mo int // set on error (not for all errors, please refer to _generate/gen.go) +} + +// sequenceDecs_decodeSync_amd64 implements the main loop of sequenceDecs.decodeSync in x86 asm. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_decodeSync_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// sequenceDecs_decodeSync_bmi2 implements the main loop of sequenceDecs.decodeSync in x86 asm with BMI2 extensions. +// +//go:noescape +func sequenceDecs_decodeSync_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// sequenceDecs_decodeSync_safe_amd64 does the same as above, but does not write more than output buffer. +// +//go:noescape +func sequenceDecs_decodeSync_safe_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// sequenceDecs_decodeSync_safe_bmi2 does the same as above, but does not write more than output buffer. +// +//go:noescape +func sequenceDecs_decodeSync_safe_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int + +// decode sequences from the stream with the provided history but without a dictionary. +func (s *sequenceDecs) decodeSyncSimple(hist []byte) (bool, error) { + if len(s.dict) > 0 { + return false, nil + } + if s.maxSyncLen == 0 && cap(s.out)-len(s.out) < maxCompressedBlockSize { + return false, nil + } + + // FIXME: Using unsafe memory copies leads to rare, random crashes + // with fuzz testing. It is therefore disabled for now. + const useSafe = true + /* + useSafe := false + if s.maxSyncLen == 0 && cap(s.out)-len(s.out) < maxCompressedBlockSizeAlloc { + useSafe = true + } + if s.maxSyncLen > 0 && cap(s.out)-len(s.out)-compressedBlockOverAlloc < int(s.maxSyncLen) { + useSafe = true + } + if cap(s.literals) < len(s.literals)+compressedBlockOverAlloc { + useSafe = true + } + */ + + br := s.br + + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + + ctx := decodeSyncAsmContext{ + llTable: s.litLengths.fse.dt[:maxTablesize], + mlTable: s.matchLengths.fse.dt[:maxTablesize], + ofTable: s.offsets.fse.dt[:maxTablesize], + llState: uint64(s.litLengths.state.state), + mlState: uint64(s.matchLengths.state.state), + ofState: uint64(s.offsets.state.state), + iteration: s.nSeqs - 1, + litRemain: len(s.literals), + out: s.out, + outPosition: len(s.out), + literals: s.literals, + windowSize: s.windowSize, + history: hist, + } + + s.seqSize = 0 + startSize := len(s.out) + + var errCode int + if cpuinfo.HasBMI2() { + if useSafe { + errCode = sequenceDecs_decodeSync_safe_bmi2(s, br, &ctx) + } else { + errCode = sequenceDecs_decodeSync_bmi2(s, br, &ctx) + } + } else { + if useSafe { + errCode = sequenceDecs_decodeSync_safe_amd64(s, br, &ctx) + } else { + errCode = sequenceDecs_decodeSync_amd64(s, br, &ctx) + } + } + switch errCode { + case noError: + break + + case errorMatchLenOfsMismatch: + return true, fmt.Errorf("zero matchoff and matchlen (%d) > 0", ctx.ml) + + case errorMatchLenTooBig: + return true, fmt.Errorf("match len (%d) bigger than max allowed length", ctx.ml) + + case errorMatchOffTooBig: + return true, fmt.Errorf("match offset (%d) bigger than current history (%d)", + ctx.mo, ctx.outPosition+len(hist)-startSize) + + case errorNotEnoughLiterals: + return true, fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", + ctx.ll, ctx.litRemain+ctx.ll) + + case errorOverread: + return true, io.ErrUnexpectedEOF + + case errorNotEnoughSpace: + size := ctx.outPosition + ctx.ll + ctx.ml + if debugDecoder { + println("msl:", s.maxSyncLen, "cap", cap(s.out), "bef:", startSize, "sz:", size-startSize, "mbs:", maxBlockSize, "outsz:", cap(s.out)-startSize) + } + return true, fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + + default: + return true, fmt.Errorf("sequenceDecs_decode returned erronous code %d", errCode) + } + + s.seqSize += ctx.litRemain + if s.seqSize > maxBlockSize { + return true, fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + err := br.close() + if err != nil { + printf("Closing sequences: %v, %+v\n", err, *br) + return true, err + } + + s.literals = s.literals[ctx.litPosition:] + t := ctx.outPosition + s.out = s.out[:t] + + // Add final literals + s.out = append(s.out, s.literals...) + if debugDecoder { + t += len(s.literals) + if t != len(s.out) { + panic(fmt.Errorf("length mismatch, want %d, got %d", len(s.out), t)) + } + } + + return true, nil +} + +// -------------------------------------------------------------------------------- + +type decodeAsmContext struct { + llTable []decSymbol + mlTable []decSymbol + ofTable []decSymbol + llState uint64 + mlState uint64 + ofState uint64 + iteration int + seqs []seqVals + litRemain int +} + +const noError = 0 + +// error reported when mo == 0 && ml > 0 +const errorMatchLenOfsMismatch = 1 + +// error reported when ml > maxMatchLen +const errorMatchLenTooBig = 2 + +// error reported when mo > available history or mo > s.windowSize +const errorMatchOffTooBig = 3 + +// error reported when the sum of literal lengths exeeceds the literal buffer size +const errorNotEnoughLiterals = 4 + +// error reported when capacity of `out` is too small +const errorNotEnoughSpace = 5 + +// error reported when bits are overread. +const errorOverread = 6 + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_decode_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_decode_56_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm with BMI2 extensions. +// +//go:noescape +func sequenceDecs_decode_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// sequenceDecs_decode implements the main loop of sequenceDecs in x86 asm with BMI2 extensions. +// +//go:noescape +func sequenceDecs_decode_56_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int + +// decode sequences from the stream without the provided history. +func (s *sequenceDecs) decode(seqs []seqVals) error { + br := s.br + + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + + ctx := decodeAsmContext{ + llTable: s.litLengths.fse.dt[:maxTablesize], + mlTable: s.matchLengths.fse.dt[:maxTablesize], + ofTable: s.offsets.fse.dt[:maxTablesize], + llState: uint64(s.litLengths.state.state), + mlState: uint64(s.matchLengths.state.state), + ofState: uint64(s.offsets.state.state), + seqs: seqs, + iteration: len(seqs) - 1, + litRemain: len(s.literals), + } + + if debugDecoder { + println("decode: decoding", len(seqs), "sequences", br.remain(), "bits remain on stream") + } + + s.seqSize = 0 + lte56bits := s.maxBits+s.offsets.fse.actualTableLog+s.matchLengths.fse.actualTableLog+s.litLengths.fse.actualTableLog <= 56 + var errCode int + if cpuinfo.HasBMI2() { + if lte56bits { + errCode = sequenceDecs_decode_56_bmi2(s, br, &ctx) + } else { + errCode = sequenceDecs_decode_bmi2(s, br, &ctx) + } + } else { + if lte56bits { + errCode = sequenceDecs_decode_56_amd64(s, br, &ctx) + } else { + errCode = sequenceDecs_decode_amd64(s, br, &ctx) + } + } + if errCode != 0 { + i := len(seqs) - ctx.iteration - 1 + switch errCode { + case errorMatchLenOfsMismatch: + ml := ctx.seqs[i].ml + return fmt.Errorf("zero matchoff and matchlen (%d) > 0", ml) + + case errorMatchLenTooBig: + ml := ctx.seqs[i].ml + return fmt.Errorf("match len (%d) bigger than max allowed length", ml) + + case errorNotEnoughLiterals: + ll := ctx.seqs[i].ll + return fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", ll, ctx.litRemain+ll) + case errorOverread: + return io.ErrUnexpectedEOF + } + + return fmt.Errorf("sequenceDecs_decode_amd64 returned erronous code %d", errCode) + } + + if ctx.litRemain < 0 { + return fmt.Errorf("literal count is too big: total available %d, total requested %d", + len(s.literals), len(s.literals)-ctx.litRemain) + } + + s.seqSize += ctx.litRemain + if s.seqSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + if debugDecoder { + println("decode: ", br.remain(), "bits remain on stream. code:", errCode) + } + err := br.close() + if err != nil { + printf("Closing sequences: %v, %+v\n", err, *br) + } + return err +} + +// -------------------------------------------------------------------------------- + +type executeAsmContext struct { + seqs []seqVals + seqIndex int + out []byte + history []byte + literals []byte + outPosition int + litPosition int + windowSize int +} + +// sequenceDecs_executeSimple_amd64 implements the main loop of sequenceDecs.executeSimple in x86 asm. +// +// Returns false if a match offset is too big. +// +// Please refer to seqdec_generic.go for the reference implementation. +// +//go:noescape +func sequenceDecs_executeSimple_amd64(ctx *executeAsmContext) bool + +// Same as above, but with safe memcopies +// +//go:noescape +func sequenceDecs_executeSimple_safe_amd64(ctx *executeAsmContext) bool + +// executeSimple handles cases when dictionary is not used. +func (s *sequenceDecs) executeSimple(seqs []seqVals, hist []byte) error { + // Ensure we have enough output size... + if len(s.out)+s.seqSize+compressedBlockOverAlloc > cap(s.out) { + addBytes := s.seqSize + len(s.out) + compressedBlockOverAlloc + s.out = append(s.out, make([]byte, addBytes)...) + s.out = s.out[:len(s.out)-addBytes] + } + + if debugDecoder { + printf("Execute %d seqs with literals: %d into %d bytes\n", len(seqs), len(s.literals), s.seqSize) + } + + var t = len(s.out) + out := s.out[:t+s.seqSize] + + ctx := executeAsmContext{ + seqs: seqs, + seqIndex: 0, + out: out, + history: hist, + outPosition: t, + litPosition: 0, + literals: s.literals, + windowSize: s.windowSize, + } + var ok bool + if cap(s.literals) < len(s.literals)+compressedBlockOverAlloc { + ok = sequenceDecs_executeSimple_safe_amd64(&ctx) + } else { + ok = sequenceDecs_executeSimple_amd64(&ctx) + } + if !ok { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", + seqs[ctx.seqIndex].mo, ctx.outPosition+len(hist)) + } + s.literals = s.literals[ctx.litPosition:] + t = ctx.outPosition + + // Add final literals + copy(out[t:], s.literals) + if debugDecoder { + t += len(s.literals) + if t != len(out) { + panic(fmt.Errorf("length mismatch, want %d, got %d, ss: %d", len(out), t, s.seqSize)) + } + } + s.out = out + + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s new file mode 100644 index 0000000..5b06174 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s @@ -0,0 +1,4151 @@ +// Code generated by command: go run gen.go -out ../seqdec_amd64.s -pkg=zstd. DO NOT EDIT. + +//go:build !appengine && !noasm && gc && !noasm + +// func sequenceDecs_decode_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: CMOV +TEXT ·sequenceDecs_decode_amd64(SB), $8-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + MOVQ 104(AX), R10 + MOVQ s+0(FP), AX + MOVQ 144(AX), R11 + MOVQ 152(AX), R12 + MOVQ 160(AX), R13 + +sequenceDecs_decode_amd64_main_loop: + MOVQ (SP), R14 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decode_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R14 + MOVQ (R14), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decode_amd64_fill_end + +sequenceDecs_decode_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decode_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decode_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R14 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R14), AX + ORQ AX, DX + JMP sequenceDecs_decode_amd64_fill_byte_by_byte + +sequenceDecs_decode_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decode_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_of_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_of_update_zero: + MOVQ AX, 16(R10) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_ml_update_zero: + MOVQ AX, 8(R10) + + // Fill bitreader to have enough for the remaining + CMPQ SI, $0x08 + JL sequenceDecs_decode_amd64_fill_2_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R14 + MOVQ (R14), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decode_amd64_fill_2_end + +sequenceDecs_decode_amd64_fill_2_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decode_amd64_fill_2_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decode_amd64_fill_2_end + SHLQ $0x08, DX + SUBQ $0x01, R14 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R14), AX + ORQ AX, DX + JMP sequenceDecs_decode_amd64_fill_2_byte_by_byte + +sequenceDecs_decode_amd64_fill_2_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decode_amd64_fill_2_end: + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_ll_update_zero: + MOVQ AX, (R10) + + // Fill bitreader for state updates + MOVQ R14, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R14 + SHRL $0x10, DI + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R14 + SHRL $0x10, R8 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R14 + SHRL $0x10, R9 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decode_amd64_skip_update: + // Adjust offset + MOVQ 16(R10), CX + CMPQ AX, $0x01 + JBE sequenceDecs_decode_amd64_adjust_offsetB_1_or_0 + MOVQ R12, R13 + MOVQ R11, R12 + MOVQ CX, R11 + JMP sequenceDecs_decode_amd64_after_adjust + +sequenceDecs_decode_amd64_adjust_offsetB_1_or_0: + CMPQ (R10), $0x00000000 + JNE sequenceDecs_decode_amd64_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_amd64_adjust_offset_nonzero + +sequenceDecs_decode_amd64_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_amd64_adjust_offset_nonzero + MOVQ R11, CX + JMP sequenceDecs_decode_amd64_after_adjust + +sequenceDecs_decode_amd64_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_amd64_adjust_zero + JEQ sequenceDecs_decode_amd64_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_amd64_adjust_three + JMP sequenceDecs_decode_amd64_adjust_two + +sequenceDecs_decode_amd64_adjust_zero: + MOVQ R11, AX + JMP sequenceDecs_decode_amd64_adjust_test_temp_valid + +sequenceDecs_decode_amd64_adjust_one: + MOVQ R12, AX + JMP sequenceDecs_decode_amd64_adjust_test_temp_valid + +sequenceDecs_decode_amd64_adjust_two: + MOVQ R13, AX + JMP sequenceDecs_decode_amd64_adjust_test_temp_valid + +sequenceDecs_decode_amd64_adjust_three: + LEAQ -1(R11), AX + +sequenceDecs_decode_amd64_adjust_test_temp_valid: + TESTQ AX, AX + JNZ sequenceDecs_decode_amd64_adjust_temp_valid + MOVQ $0x00000001, AX + +sequenceDecs_decode_amd64_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R12, R13 + MOVQ R11, R12 + MOVQ AX, R11 + MOVQ AX, CX + +sequenceDecs_decode_amd64_after_adjust: + MOVQ CX, 16(R10) + + // Check values + MOVQ 8(R10), AX + MOVQ (R10), R14 + LEAQ (AX)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decode_amd64_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decode_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decode_amd64_match_len_ofs_ok: + ADDQ $0x18, R10 + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decode_amd64_main_loop + MOVQ s+0(FP), AX + MOVQ R11, 144(AX) + MOVQ R12, 152(AX) + MOVQ R13, 160(AX) + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_amd64_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_amd64_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_decode_56_amd64(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: CMOV +TEXT ·sequenceDecs_decode_56_amd64(SB), $8-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + MOVQ 104(AX), R10 + MOVQ s+0(FP), AX + MOVQ 144(AX), R11 + MOVQ 152(AX), R12 + MOVQ 160(AX), R13 + +sequenceDecs_decode_56_amd64_main_loop: + MOVQ (SP), R14 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decode_56_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R14 + MOVQ (R14), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decode_56_amd64_fill_end + +sequenceDecs_decode_56_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decode_56_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decode_56_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R14 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R14), AX + ORQ AX, DX + JMP sequenceDecs_decode_56_amd64_fill_byte_by_byte + +sequenceDecs_decode_56_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decode_56_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_of_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_of_update_zero: + MOVQ AX, 16(R10) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_ml_update_zero: + MOVQ AX, 8(R10) + + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_ll_update_zero: + MOVQ AX, (R10) + + // Fill bitreader for state updates + MOVQ R14, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_56_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R14 + SHRL $0x10, DI + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R14 + SHRL $0x10, R8 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R14 + SHRL $0x10, R9 + LEAQ (BX)(R14*1), CX + MOVQ DX, R15 + MOVQ CX, BX + ROLQ CL, R15 + MOVL $0x00000001, BP + MOVB R14, CL + SHLL CL, BP + DECL BP + ANDQ BP, R15 + ADDQ R15, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decode_56_amd64_skip_update: + // Adjust offset + MOVQ 16(R10), CX + CMPQ AX, $0x01 + JBE sequenceDecs_decode_56_amd64_adjust_offsetB_1_or_0 + MOVQ R12, R13 + MOVQ R11, R12 + MOVQ CX, R11 + JMP sequenceDecs_decode_56_amd64_after_adjust + +sequenceDecs_decode_56_amd64_adjust_offsetB_1_or_0: + CMPQ (R10), $0x00000000 + JNE sequenceDecs_decode_56_amd64_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_56_amd64_adjust_offset_nonzero + +sequenceDecs_decode_56_amd64_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_56_amd64_adjust_offset_nonzero + MOVQ R11, CX + JMP sequenceDecs_decode_56_amd64_after_adjust + +sequenceDecs_decode_56_amd64_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_56_amd64_adjust_zero + JEQ sequenceDecs_decode_56_amd64_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_56_amd64_adjust_three + JMP sequenceDecs_decode_56_amd64_adjust_two + +sequenceDecs_decode_56_amd64_adjust_zero: + MOVQ R11, AX + JMP sequenceDecs_decode_56_amd64_adjust_test_temp_valid + +sequenceDecs_decode_56_amd64_adjust_one: + MOVQ R12, AX + JMP sequenceDecs_decode_56_amd64_adjust_test_temp_valid + +sequenceDecs_decode_56_amd64_adjust_two: + MOVQ R13, AX + JMP sequenceDecs_decode_56_amd64_adjust_test_temp_valid + +sequenceDecs_decode_56_amd64_adjust_three: + LEAQ -1(R11), AX + +sequenceDecs_decode_56_amd64_adjust_test_temp_valid: + TESTQ AX, AX + JNZ sequenceDecs_decode_56_amd64_adjust_temp_valid + MOVQ $0x00000001, AX + +sequenceDecs_decode_56_amd64_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R12, R13 + MOVQ R11, R12 + MOVQ AX, R11 + MOVQ AX, CX + +sequenceDecs_decode_56_amd64_after_adjust: + MOVQ CX, 16(R10) + + // Check values + MOVQ 8(R10), AX + MOVQ (R10), R14 + LEAQ (AX)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decode_56_amd64_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_56_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decode_56_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decode_56_amd64_match_len_ofs_ok: + ADDQ $0x18, R10 + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decode_56_amd64_main_loop + MOVQ s+0(FP), AX + MOVQ R11, 144(AX) + MOVQ R12, 152(AX) + MOVQ R13, 160(AX) + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_56_amd64_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_56_amd64_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_decode_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: BMI, BMI2, CMOV +TEXT ·sequenceDecs_decode_bmi2(SB), $8-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + MOVQ 104(CX), R9 + MOVQ s+0(FP), CX + MOVQ 144(CX), R10 + MOVQ 152(CX), R11 + MOVQ 160(CX), R12 + +sequenceDecs_decode_bmi2_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decode_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R13 + MOVQ (R13), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decode_bmi2_fill_end + +sequenceDecs_decode_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decode_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decode_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R13 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R13), CX + ORQ CX, AX + JMP sequenceDecs_decode_bmi2_fill_byte_by_byte + +sequenceDecs_decode_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decode_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 16(R9) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 8(R9) + + // Fill bitreader to have enough for the remaining + CMPQ BX, $0x08 + JL sequenceDecs_decode_bmi2_fill_2_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R13 + MOVQ (R13), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decode_bmi2_fill_2_end + +sequenceDecs_decode_bmi2_fill_2_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decode_bmi2_fill_2_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decode_bmi2_fill_2_end + SHLQ $0x08, AX + SUBQ $0x01, R13 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R13), CX + ORQ CX, AX + JMP sequenceDecs_decode_bmi2_fill_2_byte_by_byte + +sequenceDecs_decode_bmi2_fill_2_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decode_bmi2_fill_2_end: + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, (R9) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_bmi2_skip_update + LEAQ (SI)(DI*1), R14 + ADDQ R8, R14 + MOVBQZX R14, R14 + LEAQ (DX)(R14*1), CX + MOVQ AX, R15 + MOVQ CX, DX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + + // Update Offset State + BZHIQ R8, R15, CX + SHRXQ R8, R15, R15 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R15, CX + SHRXQ DI, R15, R15 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R15, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decode_bmi2_skip_update: + // Adjust offset + MOVQ 16(R9), CX + CMPQ R13, $0x01 + JBE sequenceDecs_decode_bmi2_adjust_offsetB_1_or_0 + MOVQ R11, R12 + MOVQ R10, R11 + MOVQ CX, R10 + JMP sequenceDecs_decode_bmi2_after_adjust + +sequenceDecs_decode_bmi2_adjust_offsetB_1_or_0: + CMPQ (R9), $0x00000000 + JNE sequenceDecs_decode_bmi2_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_bmi2_adjust_offset_nonzero + +sequenceDecs_decode_bmi2_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_bmi2_adjust_offset_nonzero + MOVQ R10, CX + JMP sequenceDecs_decode_bmi2_after_adjust + +sequenceDecs_decode_bmi2_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_bmi2_adjust_zero + JEQ sequenceDecs_decode_bmi2_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_bmi2_adjust_three + JMP sequenceDecs_decode_bmi2_adjust_two + +sequenceDecs_decode_bmi2_adjust_zero: + MOVQ R10, R13 + JMP sequenceDecs_decode_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_bmi2_adjust_one: + MOVQ R11, R13 + JMP sequenceDecs_decode_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_bmi2_adjust_two: + MOVQ R12, R13 + JMP sequenceDecs_decode_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_bmi2_adjust_three: + LEAQ -1(R10), R13 + +sequenceDecs_decode_bmi2_adjust_test_temp_valid: + TESTQ R13, R13 + JNZ sequenceDecs_decode_bmi2_adjust_temp_valid + MOVQ $0x00000001, R13 + +sequenceDecs_decode_bmi2_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R11, R12 + MOVQ R10, R11 + MOVQ R13, R10 + MOVQ R13, CX + +sequenceDecs_decode_bmi2_after_adjust: + MOVQ CX, 16(R9) + + // Check values + MOVQ 8(R9), R13 + MOVQ (R9), R14 + LEAQ (R13)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ R13, $0x00020002 + JA sequenceDecs_decode_bmi2_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_bmi2_match_len_ofs_ok + TESTQ R13, R13 + JNZ sequenceDecs_decode_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decode_bmi2_match_len_ofs_ok: + ADDQ $0x18, R9 + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decode_bmi2_main_loop + MOVQ s+0(FP), CX + MOVQ R10, 144(CX) + MOVQ R11, 152(CX) + MOVQ R12, 160(CX) + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_bmi2_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_bmi2_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_decode_56_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeAsmContext) int +// Requires: BMI, BMI2, CMOV +TEXT ·sequenceDecs_decode_56_bmi2(SB), $8-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + MOVQ 104(CX), R9 + MOVQ s+0(FP), CX + MOVQ 144(CX), R10 + MOVQ 152(CX), R11 + MOVQ 160(CX), R12 + +sequenceDecs_decode_56_bmi2_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decode_56_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R13 + MOVQ (R13), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decode_56_bmi2_fill_end + +sequenceDecs_decode_56_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decode_56_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decode_56_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R13 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R13), CX + ORQ CX, AX + JMP sequenceDecs_decode_56_bmi2_fill_byte_by_byte + +sequenceDecs_decode_56_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decode_56_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 16(R9) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, 8(R9) + + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R14 + MOVQ AX, R15 + LEAQ (DX)(R14*1), CX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R15, CX + MOVQ CX, (R9) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decode_56_bmi2_skip_update + LEAQ (SI)(DI*1), R14 + ADDQ R8, R14 + MOVBQZX R14, R14 + LEAQ (DX)(R14*1), CX + MOVQ AX, R15 + MOVQ CX, DX + ROLQ CL, R15 + BZHIQ R14, R15, R15 + + // Update Offset State + BZHIQ R8, R15, CX + SHRXQ R8, R15, R15 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R15, CX + SHRXQ DI, R15, R15 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R15, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decode_56_bmi2_skip_update: + // Adjust offset + MOVQ 16(R9), CX + CMPQ R13, $0x01 + JBE sequenceDecs_decode_56_bmi2_adjust_offsetB_1_or_0 + MOVQ R11, R12 + MOVQ R10, R11 + MOVQ CX, R10 + JMP sequenceDecs_decode_56_bmi2_after_adjust + +sequenceDecs_decode_56_bmi2_adjust_offsetB_1_or_0: + CMPQ (R9), $0x00000000 + JNE sequenceDecs_decode_56_bmi2_adjust_offset_maybezero + INCQ CX + JMP sequenceDecs_decode_56_bmi2_adjust_offset_nonzero + +sequenceDecs_decode_56_bmi2_adjust_offset_maybezero: + TESTQ CX, CX + JNZ sequenceDecs_decode_56_bmi2_adjust_offset_nonzero + MOVQ R10, CX + JMP sequenceDecs_decode_56_bmi2_after_adjust + +sequenceDecs_decode_56_bmi2_adjust_offset_nonzero: + CMPQ CX, $0x01 + JB sequenceDecs_decode_56_bmi2_adjust_zero + JEQ sequenceDecs_decode_56_bmi2_adjust_one + CMPQ CX, $0x02 + JA sequenceDecs_decode_56_bmi2_adjust_three + JMP sequenceDecs_decode_56_bmi2_adjust_two + +sequenceDecs_decode_56_bmi2_adjust_zero: + MOVQ R10, R13 + JMP sequenceDecs_decode_56_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_56_bmi2_adjust_one: + MOVQ R11, R13 + JMP sequenceDecs_decode_56_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_56_bmi2_adjust_two: + MOVQ R12, R13 + JMP sequenceDecs_decode_56_bmi2_adjust_test_temp_valid + +sequenceDecs_decode_56_bmi2_adjust_three: + LEAQ -1(R10), R13 + +sequenceDecs_decode_56_bmi2_adjust_test_temp_valid: + TESTQ R13, R13 + JNZ sequenceDecs_decode_56_bmi2_adjust_temp_valid + MOVQ $0x00000001, R13 + +sequenceDecs_decode_56_bmi2_adjust_temp_valid: + CMPQ CX, $0x01 + CMOVQNE R11, R12 + MOVQ R10, R11 + MOVQ R13, R10 + MOVQ R13, CX + +sequenceDecs_decode_56_bmi2_after_adjust: + MOVQ CX, 16(R9) + + // Check values + MOVQ 8(R9), R13 + MOVQ (R9), R14 + LEAQ (R13)(R14*1), R15 + MOVQ s+0(FP), BP + ADDQ R15, 256(BP) + MOVQ ctx+16(FP), R15 + SUBQ R14, 128(R15) + JS error_not_enough_literals + CMPQ R13, $0x00020002 + JA sequenceDecs_decode_56_bmi2_error_match_len_too_big + TESTQ CX, CX + JNZ sequenceDecs_decode_56_bmi2_match_len_ofs_ok + TESTQ R13, R13 + JNZ sequenceDecs_decode_56_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decode_56_bmi2_match_len_ofs_ok: + ADDQ $0x18, R9 + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decode_56_bmi2_main_loop + MOVQ s+0(FP), CX + MOVQ R10, 144(CX) + MOVQ R11, 152(CX) + MOVQ R12, 160(CX) + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decode_56_bmi2_error_match_len_ofs_mismatch: + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decode_56_bmi2_error_match_len_too_big: + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + +// func sequenceDecs_executeSimple_amd64(ctx *executeAsmContext) bool +// Requires: SSE +TEXT ·sequenceDecs_executeSimple_amd64(SB), $8-9 + MOVQ ctx+0(FP), R10 + MOVQ 8(R10), CX + TESTQ CX, CX + JZ empty_seqs + MOVQ (R10), AX + MOVQ 24(R10), DX + MOVQ 32(R10), BX + MOVQ 80(R10), SI + MOVQ 104(R10), DI + MOVQ 120(R10), R8 + MOVQ 56(R10), R9 + MOVQ 64(R10), R10 + ADDQ R10, R9 + + // seqsBase += 24 * seqIndex + LEAQ (DX)(DX*2), R11 + SHLQ $0x03, R11 + ADDQ R11, AX + + // outBase += outPosition + ADDQ DI, BX + +main_loop: + MOVQ (AX), R11 + MOVQ 16(AX), R12 + MOVQ 8(AX), R13 + + // Copy literals + TESTQ R11, R11 + JZ check_offset + XORQ R14, R14 + +copy_1: + MOVUPS (SI)(R14*1), X0 + MOVUPS X0, (BX)(R14*1) + ADDQ $0x10, R14 + CMPQ R14, R11 + JB copy_1 + ADDQ R11, SI + ADDQ R11, BX + ADDQ R11, DI + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + LEAQ (DI)(R10*1), R11 + CMPQ R12, R11 + JG error_match_off_too_big + CMPQ R12, R8 + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, R11 + SUBQ DI, R11 + JLS copy_match + MOVQ R9, R14 + SUBQ R11, R14 + CMPQ R13, R11 + JG copy_all_from_history + MOVQ R13, R11 + SUBQ $0x10, R11 + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R11 + JAE copy_4_loop + LEAQ 16(R14)(R11*1), R14 + LEAQ 16(BX)(R11*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), R11 + MOVB 2(R14), R12 + MOVW R11, (BX) + MOVB R12, 2(BX) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), R11 + MOVL -4(R14)(R13*1), R12 + MOVL R11, (BX) + MOVL R12, -4(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), R11 + MOVQ -8(R14)(R13*1), R12 + MOVQ R11, (BX) + MOVQ R12, -8(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + +copy_4_end: + ADDQ R13, DI + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + JMP loop_finished + +copy_all_from_history: + MOVQ R11, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(BX)(R15*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_5_end + +copy_5_small: + CMPQ R11, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ R11, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(R11*1), BP + MOVB R15, (BX) + MOVB BP, -1(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (BX) + MOVB BP, 2(BX) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(R11*1), BP + MOVL R15, (BX) + MOVL BP, -4(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(R11*1), BP + MOVQ R15, (BX) + MOVQ BP, -8(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + +copy_5_end: + ADDQ R11, DI + SUBQ R11, R13 + + // Copy match from the current buffer +copy_match: + MOVQ BX, R11 + SUBQ R12, R11 + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, DI + MOVQ BX, R12 + ADDQ R13, BX + +copy_2: + MOVUPS (R11), X0 + MOVUPS X0, (R12) + ADDQ $0x10, R11 + ADDQ $0x10, R12 + SUBQ $0x10, R13 + JHI copy_2 + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, DI + +copy_slow_3: + MOVB (R11), R12 + MOVB R12, (BX) + INCQ R11 + INCQ BX + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + +loop_finished: + // Return value + MOVB $0x01, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +error_match_off_too_big: + // Return value + MOVB $0x00, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +empty_seqs: + // Return value + MOVB $0x01, ret+8(FP) + RET + +// func sequenceDecs_executeSimple_safe_amd64(ctx *executeAsmContext) bool +// Requires: SSE +TEXT ·sequenceDecs_executeSimple_safe_amd64(SB), $8-9 + MOVQ ctx+0(FP), R10 + MOVQ 8(R10), CX + TESTQ CX, CX + JZ empty_seqs + MOVQ (R10), AX + MOVQ 24(R10), DX + MOVQ 32(R10), BX + MOVQ 80(R10), SI + MOVQ 104(R10), DI + MOVQ 120(R10), R8 + MOVQ 56(R10), R9 + MOVQ 64(R10), R10 + ADDQ R10, R9 + + // seqsBase += 24 * seqIndex + LEAQ (DX)(DX*2), R11 + SHLQ $0x03, R11 + ADDQ R11, AX + + // outBase += outPosition + ADDQ DI, BX + +main_loop: + MOVQ (AX), R11 + MOVQ 16(AX), R12 + MOVQ 8(AX), R13 + + // Copy literals + TESTQ R11, R11 + JZ check_offset + MOVQ R11, R14 + SUBQ $0x10, R14 + JB copy_1_small + +copy_1_loop: + MOVUPS (SI), X0 + MOVUPS X0, (BX) + ADDQ $0x10, SI + ADDQ $0x10, BX + SUBQ $0x10, R14 + JAE copy_1_loop + LEAQ 16(SI)(R14*1), SI + LEAQ 16(BX)(R14*1), BX + MOVUPS -16(SI), X0 + MOVUPS X0, -16(BX) + JMP copy_1_end + +copy_1_small: + CMPQ R11, $0x03 + JE copy_1_move_3 + JB copy_1_move_1or2 + CMPQ R11, $0x08 + JB copy_1_move_4through7 + JMP copy_1_move_8through16 + +copy_1_move_1or2: + MOVB (SI), R14 + MOVB -1(SI)(R11*1), R15 + MOVB R14, (BX) + MOVB R15, -1(BX)(R11*1) + ADDQ R11, SI + ADDQ R11, BX + JMP copy_1_end + +copy_1_move_3: + MOVW (SI), R14 + MOVB 2(SI), R15 + MOVW R14, (BX) + MOVB R15, 2(BX) + ADDQ R11, SI + ADDQ R11, BX + JMP copy_1_end + +copy_1_move_4through7: + MOVL (SI), R14 + MOVL -4(SI)(R11*1), R15 + MOVL R14, (BX) + MOVL R15, -4(BX)(R11*1) + ADDQ R11, SI + ADDQ R11, BX + JMP copy_1_end + +copy_1_move_8through16: + MOVQ (SI), R14 + MOVQ -8(SI)(R11*1), R15 + MOVQ R14, (BX) + MOVQ R15, -8(BX)(R11*1) + ADDQ R11, SI + ADDQ R11, BX + +copy_1_end: + ADDQ R11, DI + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + LEAQ (DI)(R10*1), R11 + CMPQ R12, R11 + JG error_match_off_too_big + CMPQ R12, R8 + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, R11 + SUBQ DI, R11 + JLS copy_match + MOVQ R9, R14 + SUBQ R11, R14 + CMPQ R13, R11 + JG copy_all_from_history + MOVQ R13, R11 + SUBQ $0x10, R11 + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R11 + JAE copy_4_loop + LEAQ 16(R14)(R11*1), R14 + LEAQ 16(BX)(R11*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), R11 + MOVB 2(R14), R12 + MOVW R11, (BX) + MOVB R12, 2(BX) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), R11 + MOVL -4(R14)(R13*1), R12 + MOVL R11, (BX) + MOVL R12, -4(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), R11 + MOVQ -8(R14)(R13*1), R12 + MOVQ R11, (BX) + MOVQ R12, -8(BX)(R13*1) + ADDQ R13, R14 + ADDQ R13, BX + +copy_4_end: + ADDQ R13, DI + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + JMP loop_finished + +copy_all_from_history: + MOVQ R11, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R14 + ADDQ $0x10, BX + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(BX)(R15*1), BX + MOVUPS -16(R14), X0 + MOVUPS X0, -16(BX) + JMP copy_5_end + +copy_5_small: + CMPQ R11, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ R11, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(R11*1), BP + MOVB R15, (BX) + MOVB BP, -1(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (BX) + MOVB BP, 2(BX) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(R11*1), BP + MOVL R15, (BX) + MOVL BP, -4(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(R11*1), BP + MOVQ R15, (BX) + MOVQ BP, -8(BX)(R11*1) + ADDQ R11, R14 + ADDQ R11, BX + +copy_5_end: + ADDQ R11, DI + SUBQ R11, R13 + + // Copy match from the current buffer +copy_match: + MOVQ BX, R11 + SUBQ R12, R11 + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, DI + MOVQ R13, R12 + SUBQ $0x10, R12 + JB copy_2_small + +copy_2_loop: + MOVUPS (R11), X0 + MOVUPS X0, (BX) + ADDQ $0x10, R11 + ADDQ $0x10, BX + SUBQ $0x10, R12 + JAE copy_2_loop + LEAQ 16(R11)(R12*1), R11 + LEAQ 16(BX)(R12*1), BX + MOVUPS -16(R11), X0 + MOVUPS X0, -16(BX) + JMP copy_2_end + +copy_2_small: + CMPQ R13, $0x03 + JE copy_2_move_3 + JB copy_2_move_1or2 + CMPQ R13, $0x08 + JB copy_2_move_4through7 + JMP copy_2_move_8through16 + +copy_2_move_1or2: + MOVB (R11), R12 + MOVB -1(R11)(R13*1), R14 + MOVB R12, (BX) + MOVB R14, -1(BX)(R13*1) + ADDQ R13, R11 + ADDQ R13, BX + JMP copy_2_end + +copy_2_move_3: + MOVW (R11), R12 + MOVB 2(R11), R14 + MOVW R12, (BX) + MOVB R14, 2(BX) + ADDQ R13, R11 + ADDQ R13, BX + JMP copy_2_end + +copy_2_move_4through7: + MOVL (R11), R12 + MOVL -4(R11)(R13*1), R14 + MOVL R12, (BX) + MOVL R14, -4(BX)(R13*1) + ADDQ R13, R11 + ADDQ R13, BX + JMP copy_2_end + +copy_2_move_8through16: + MOVQ (R11), R12 + MOVQ -8(R11)(R13*1), R14 + MOVQ R12, (BX) + MOVQ R14, -8(BX)(R13*1) + ADDQ R13, R11 + ADDQ R13, BX + +copy_2_end: + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, DI + +copy_slow_3: + MOVB (R11), R12 + MOVB R12, (BX) + INCQ R11 + INCQ BX + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + ADDQ $0x18, AX + INCQ DX + CMPQ DX, CX + JB main_loop + +loop_finished: + // Return value + MOVB $0x01, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +error_match_off_too_big: + // Return value + MOVB $0x00, ret+8(FP) + + // Update the context + MOVQ ctx+0(FP), AX + MOVQ DX, 24(AX) + MOVQ DI, 104(AX) + SUBQ 80(AX), SI + MOVQ SI, 112(AX) + RET + +empty_seqs: + // Return value + MOVB $0x01, ret+8(FP) + RET + +// func sequenceDecs_decodeSync_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: CMOV, SSE +TEXT ·sequenceDecs_decodeSync_amd64(SB), $64-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + XORQ CX, CX + MOVQ CX, 8(SP) + MOVQ CX, 16(SP) + MOVQ CX, 24(SP) + MOVQ 112(AX), R10 + MOVQ 128(AX), CX + MOVQ CX, 32(SP) + MOVQ 144(AX), R11 + MOVQ 136(AX), R12 + MOVQ 200(AX), CX + MOVQ CX, 56(SP) + MOVQ 176(AX), CX + MOVQ CX, 48(SP) + MOVQ 184(AX), AX + MOVQ AX, 40(SP) + MOVQ 40(SP), AX + ADDQ AX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R10, 32(SP) + + // outBase += outPosition + ADDQ R12, R10 + +sequenceDecs_decodeSync_amd64_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_amd64_fill_end + +sequenceDecs_decodeSync_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_amd64_fill_byte_by_byte + +sequenceDecs_decodeSync_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_of_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_of_update_zero: + MOVQ AX, 8(SP) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_ml_update_zero: + MOVQ AX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_amd64_fill_2_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_amd64_fill_2_end + +sequenceDecs_decodeSync_amd64_fill_2_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_amd64_fill_2_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_amd64_fill_2_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_amd64_fill_2_byte_by_byte + +sequenceDecs_decodeSync_amd64_fill_2_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_amd64_fill_2_end: + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_ll_update_zero: + MOVQ AX, 24(SP) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R13 + SHRL $0x10, DI + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R13 + SHRL $0x10, R8 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R13 + SHRL $0x10, R9 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decodeSync_amd64_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ AX, $0x01 + JBE sequenceDecs_decodeSync_amd64_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_amd64_after_adjust + +sequenceDecs_decodeSync_amd64_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_amd64_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_amd64_adjust_offset_nonzero + +sequenceDecs_decodeSync_amd64_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_amd64_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_amd64_after_adjust + +sequenceDecs_decodeSync_amd64_adjust_offset_nonzero: + MOVQ R13, AX + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, AX + CMOVQEQ R15, R14 + ADDQ 144(CX)(AX*8), R14 + JNZ sequenceDecs_decodeSync_amd64_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_amd64_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_amd64_adjust_skip + MOVQ 152(CX), AX + MOVQ AX, 160(CX) + +sequenceDecs_decodeSync_amd64_adjust_skip: + MOVQ 144(CX), AX + MOVQ AX, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_amd64_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), AX + MOVQ 24(SP), CX + LEAQ (AX)(CX*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ CX, 104(R14) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decodeSync_amd64_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decodeSync_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_amd64_match_len_ofs_ok: + MOVQ 24(SP), AX + MOVQ 8(SP), CX + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (AX)(R13*1), R14 + ADDQ R10, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ AX, AX + JZ check_offset + XORQ R14, R14 + +copy_1: + MOVUPS (R11)(R14*1), X0 + MOVUPS X0, (R10)(R14*1) + ADDQ $0x10, R14 + CMPQ R14, AX + JB copy_1 + ADDQ AX, R11 + ADDQ AX, R10 + ADDQ AX, R12 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R12, AX + ADDQ 40(SP), AX + CMPQ CX, AX + JG error_match_off_too_big + CMPQ CX, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ CX, AX + SUBQ R12, AX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ AX, R14 + CMPQ R13, AX + JG copy_all_from_history + MOVQ R13, AX + SUBQ $0x10, AX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, AX + JAE copy_4_loop + LEAQ 16(R14)(AX*1), R14 + LEAQ 16(R10)(AX*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), AX + MOVB 2(R14), CL + MOVW AX, (R10) + MOVB CL, 2(R10) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), AX + MOVL -4(R14)(R13*1), CX + MOVL AX, (R10) + MOVL CX, -4(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), AX + MOVQ -8(R14)(R13*1), CX + MOVQ AX, (R10) + MOVQ CX, -8(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + +copy_4_end: + ADDQ R13, R12 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ AX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R10)(R15*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_5_end + +copy_5_small: + CMPQ AX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ AX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(AX*1), BP + MOVB R15, (R10) + MOVB BP, -1(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R10) + MOVB BP, 2(R10) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(AX*1), BP + MOVL R15, (R10) + MOVL BP, -4(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(AX*1), BP + MOVQ R15, (R10) + MOVQ BP, -8(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + +copy_5_end: + ADDQ AX, R12 + SUBQ AX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R10, AX + SUBQ CX, AX + + // ml <= mo + CMPQ R13, CX + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R12 + MOVQ R10, CX + ADDQ R13, R10 + +copy_2: + MOVUPS (AX), X0 + MOVUPS X0, (CX) + ADDQ $0x10, AX + ADDQ $0x10, CX + SUBQ $0x10, R13 + JHI copy_2 + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R12 + +copy_slow_3: + MOVB (AX), CL + MOVB CL, (R10) + INCQ AX + INCQ R10 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decodeSync_amd64_main_loop + +loop_finished: + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R12, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R11 + MOVQ R11, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_amd64_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_amd64_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET + +// func sequenceDecs_decodeSync_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: BMI, BMI2, CMOV, SSE +TEXT ·sequenceDecs_decodeSync_bmi2(SB), $64-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + XORQ R9, R9 + MOVQ R9, 8(SP) + MOVQ R9, 16(SP) + MOVQ R9, 24(SP) + MOVQ 112(CX), R9 + MOVQ 128(CX), R10 + MOVQ R10, 32(SP) + MOVQ 144(CX), R10 + MOVQ 136(CX), R11 + MOVQ 200(CX), R12 + MOVQ R12, 56(SP) + MOVQ 176(CX), R12 + MOVQ R12, 48(SP) + MOVQ 184(CX), CX + MOVQ CX, 40(SP) + MOVQ 40(SP), CX + ADDQ CX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R9, 32(SP) + + // outBase += outPosition + ADDQ R11, R9 + +sequenceDecs_decodeSync_bmi2_main_loop: + MOVQ (SP), R12 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_bmi2_fill_end + +sequenceDecs_decodeSync_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_bmi2_fill_byte_by_byte + +sequenceDecs_decodeSync_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 8(SP) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_bmi2_fill_2_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_bmi2_fill_2_end + +sequenceDecs_decodeSync_bmi2_fill_2_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_bmi2_fill_2_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_bmi2_fill_2_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_bmi2_fill_2_byte_by_byte + +sequenceDecs_decodeSync_bmi2_fill_2_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_bmi2_fill_2_end: + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 24(SP) + + // Fill bitreader for state updates + MOVQ R12, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R12 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_bmi2_skip_update + LEAQ (SI)(DI*1), R13 + ADDQ R8, R13 + MOVBQZX R13, R13 + LEAQ (DX)(R13*1), CX + MOVQ AX, R14 + MOVQ CX, DX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + + // Update Offset State + BZHIQ R8, R14, CX + SHRXQ R8, R14, R14 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R14, CX + SHRXQ DI, R14, R14 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R14, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decodeSync_bmi2_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ R12, $0x01 + JBE sequenceDecs_decodeSync_bmi2_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_bmi2_after_adjust + +sequenceDecs_decodeSync_bmi2_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_bmi2_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero + +sequenceDecs_decodeSync_bmi2_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_bmi2_after_adjust + +sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero: + MOVQ R13, R12 + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, R12 + CMOVQEQ R15, R14 + ADDQ 144(CX)(R12*8), R14 + JNZ sequenceDecs_decodeSync_bmi2_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_bmi2_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_bmi2_adjust_skip + MOVQ 152(CX), R12 + MOVQ R12, 160(CX) + +sequenceDecs_decodeSync_bmi2_adjust_skip: + MOVQ 144(CX), R12 + MOVQ R12, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_bmi2_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), CX + MOVQ 24(SP), R12 + LEAQ (CX)(R12*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ R12, 104(R14) + JS error_not_enough_literals + CMPQ CX, $0x00020002 + JA sequenceDecs_decodeSync_bmi2_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_bmi2_match_len_ofs_ok + TESTQ CX, CX + JNZ sequenceDecs_decodeSync_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_bmi2_match_len_ofs_ok: + MOVQ 24(SP), CX + MOVQ 8(SP), R12 + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (CX)(R13*1), R14 + ADDQ R9, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ CX, CX + JZ check_offset + XORQ R14, R14 + +copy_1: + MOVUPS (R10)(R14*1), X0 + MOVUPS X0, (R9)(R14*1) + ADDQ $0x10, R14 + CMPQ R14, CX + JB copy_1 + ADDQ CX, R10 + ADDQ CX, R9 + ADDQ CX, R11 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R11, CX + ADDQ 40(SP), CX + CMPQ R12, CX + JG error_match_off_too_big + CMPQ R12, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, CX + SUBQ R11, CX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ CX, R14 + CMPQ R13, CX + JG copy_all_from_history + MOVQ R13, CX + SUBQ $0x10, CX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, CX + JAE copy_4_loop + LEAQ 16(R14)(CX*1), R14 + LEAQ 16(R9)(CX*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), CX + MOVB 2(R14), R12 + MOVW CX, (R9) + MOVB R12, 2(R9) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), CX + MOVL -4(R14)(R13*1), R12 + MOVL CX, (R9) + MOVL R12, -4(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), CX + MOVQ -8(R14)(R13*1), R12 + MOVQ CX, (R9) + MOVQ R12, -8(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + +copy_4_end: + ADDQ R13, R11 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ CX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R9)(R15*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_5_end + +copy_5_small: + CMPQ CX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ CX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(CX*1), BP + MOVB R15, (R9) + MOVB BP, -1(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R9) + MOVB BP, 2(R9) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(CX*1), BP + MOVL R15, (R9) + MOVL BP, -4(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(CX*1), BP + MOVQ R15, (R9) + MOVQ BP, -8(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + +copy_5_end: + ADDQ CX, R11 + SUBQ CX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R9, CX + SUBQ R12, CX + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R11 + MOVQ R9, R12 + ADDQ R13, R9 + +copy_2: + MOVUPS (CX), X0 + MOVUPS X0, (R12) + ADDQ $0x10, CX + ADDQ $0x10, R12 + SUBQ $0x10, R13 + JHI copy_2 + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R11 + +copy_slow_3: + MOVB (CX), R12 + MOVB R12, (R9) + INCQ CX + INCQ R9 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decodeSync_bmi2_main_loop + +loop_finished: + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R11, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R10 + MOVQ R10, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_bmi2_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_bmi2_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET + +// func sequenceDecs_decodeSync_safe_amd64(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: CMOV, SSE +TEXT ·sequenceDecs_decodeSync_safe_amd64(SB), $64-32 + MOVQ br+8(FP), CX + MOVQ 24(CX), DX + MOVBQZX 32(CX), BX + MOVQ (CX), AX + MOVQ 8(CX), SI + ADDQ SI, AX + MOVQ AX, (SP) + MOVQ ctx+16(FP), AX + MOVQ 72(AX), DI + MOVQ 80(AX), R8 + MOVQ 88(AX), R9 + XORQ CX, CX + MOVQ CX, 8(SP) + MOVQ CX, 16(SP) + MOVQ CX, 24(SP) + MOVQ 112(AX), R10 + MOVQ 128(AX), CX + MOVQ CX, 32(SP) + MOVQ 144(AX), R11 + MOVQ 136(AX), R12 + MOVQ 200(AX), CX + MOVQ CX, 56(SP) + MOVQ 176(AX), CX + MOVQ CX, 48(SP) + MOVQ 184(AX), AX + MOVQ AX, 40(SP) + MOVQ 40(SP), AX + ADDQ AX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R10, 32(SP) + + // outBase += outPosition + ADDQ R12, R10 + +sequenceDecs_decodeSync_safe_amd64_main_loop: + MOVQ (SP), R13 + + // Fill bitreader to have enough for the offset and match length. + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_safe_amd64_fill_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_safe_amd64_fill_end + +sequenceDecs_decodeSync_safe_amd64_fill_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_safe_amd64_fill_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_safe_amd64_fill_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_safe_amd64_fill_byte_by_byte + +sequenceDecs_decodeSync_safe_amd64_fill_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_amd64_fill_end: + // Update offset + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_of_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_of_update_zero: + MOVQ AX, 8(SP) + + // Update match length + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_ml_update_zero: + MOVQ AX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ SI, $0x08 + JL sequenceDecs_decodeSync_safe_amd64_fill_2_byte_by_byte + MOVQ BX, AX + SHRQ $0x03, AX + SUBQ AX, R13 + MOVQ (R13), DX + SUBQ AX, SI + ANDQ $0x07, BX + JMP sequenceDecs_decodeSync_safe_amd64_fill_2_end + +sequenceDecs_decodeSync_safe_amd64_fill_2_byte_by_byte: + CMPQ SI, $0x00 + JLE sequenceDecs_decodeSync_safe_amd64_fill_2_check_overread + CMPQ BX, $0x07 + JLE sequenceDecs_decodeSync_safe_amd64_fill_2_end + SHLQ $0x08, DX + SUBQ $0x01, R13 + SUBQ $0x01, SI + SUBQ $0x08, BX + MOVBQZX (R13), AX + ORQ AX, DX + JMP sequenceDecs_decodeSync_safe_amd64_fill_2_byte_by_byte + +sequenceDecs_decodeSync_safe_amd64_fill_2_check_overread: + CMPQ BX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_amd64_fill_2_end: + // Update literal length + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_ll_update_zero: + MOVQ AX, 24(SP) + + // Fill bitreader for state updates + MOVQ R13, (SP) + MOVQ R9, AX + SHRQ $0x08, AX + MOVBQZX AL, AX + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_safe_amd64_skip_update + + // Update Literal Length State + MOVBQZX DI, R13 + SHRL $0x10, DI + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, DI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(DI*8), DI + + // Update Match Length State + MOVBQZX R8, R13 + SHRL $0x10, R8 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R8 + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Offset State + MOVBQZX R9, R13 + SHRL $0x10, R9 + LEAQ (BX)(R13*1), CX + MOVQ DX, R14 + MOVQ CX, BX + ROLQ CL, R14 + MOVL $0x00000001, R15 + MOVB R13, CL + SHLL CL, R15 + DECL R15 + ANDQ R15, R14 + ADDQ R14, R9 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R9*8), R9 + +sequenceDecs_decodeSync_safe_amd64_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ AX, $0x01 + JBE sequenceDecs_decodeSync_safe_amd64_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_safe_amd64_after_adjust + +sequenceDecs_decodeSync_safe_amd64_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_safe_amd64_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero + +sequenceDecs_decodeSync_safe_amd64_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_safe_amd64_after_adjust + +sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero: + MOVQ R13, AX + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, AX + CMOVQEQ R15, R14 + ADDQ 144(CX)(AX*8), R14 + JNZ sequenceDecs_decodeSync_safe_amd64_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_safe_amd64_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_safe_amd64_adjust_skip + MOVQ 152(CX), AX + MOVQ AX, 160(CX) + +sequenceDecs_decodeSync_safe_amd64_adjust_skip: + MOVQ 144(CX), AX + MOVQ AX, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_safe_amd64_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), AX + MOVQ 24(SP), CX + LEAQ (AX)(CX*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ CX, 104(R14) + JS error_not_enough_literals + CMPQ AX, $0x00020002 + JA sequenceDecs_decodeSync_safe_amd64_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_amd64_match_len_ofs_ok + TESTQ AX, AX + JNZ sequenceDecs_decodeSync_safe_amd64_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_safe_amd64_match_len_ofs_ok: + MOVQ 24(SP), AX + MOVQ 8(SP), CX + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (AX)(R13*1), R14 + ADDQ R10, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ AX, AX + JZ check_offset + MOVQ AX, R14 + SUBQ $0x10, R14 + JB copy_1_small + +copy_1_loop: + MOVUPS (R11), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R11 + ADDQ $0x10, R10 + SUBQ $0x10, R14 + JAE copy_1_loop + LEAQ 16(R11)(R14*1), R11 + LEAQ 16(R10)(R14*1), R10 + MOVUPS -16(R11), X0 + MOVUPS X0, -16(R10) + JMP copy_1_end + +copy_1_small: + CMPQ AX, $0x03 + JE copy_1_move_3 + JB copy_1_move_1or2 + CMPQ AX, $0x08 + JB copy_1_move_4through7 + JMP copy_1_move_8through16 + +copy_1_move_1or2: + MOVB (R11), R14 + MOVB -1(R11)(AX*1), R15 + MOVB R14, (R10) + MOVB R15, -1(R10)(AX*1) + ADDQ AX, R11 + ADDQ AX, R10 + JMP copy_1_end + +copy_1_move_3: + MOVW (R11), R14 + MOVB 2(R11), R15 + MOVW R14, (R10) + MOVB R15, 2(R10) + ADDQ AX, R11 + ADDQ AX, R10 + JMP copy_1_end + +copy_1_move_4through7: + MOVL (R11), R14 + MOVL -4(R11)(AX*1), R15 + MOVL R14, (R10) + MOVL R15, -4(R10)(AX*1) + ADDQ AX, R11 + ADDQ AX, R10 + JMP copy_1_end + +copy_1_move_8through16: + MOVQ (R11), R14 + MOVQ -8(R11)(AX*1), R15 + MOVQ R14, (R10) + MOVQ R15, -8(R10)(AX*1) + ADDQ AX, R11 + ADDQ AX, R10 + +copy_1_end: + ADDQ AX, R12 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R12, AX + ADDQ 40(SP), AX + CMPQ CX, AX + JG error_match_off_too_big + CMPQ CX, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ CX, AX + SUBQ R12, AX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ AX, R14 + CMPQ R13, AX + JG copy_all_from_history + MOVQ R13, AX + SUBQ $0x10, AX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, AX + JAE copy_4_loop + LEAQ 16(R14)(AX*1), R14 + LEAQ 16(R10)(AX*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), AX + MOVB 2(R14), CL + MOVW AX, (R10) + MOVB CL, 2(R10) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), AX + MOVL -4(R14)(R13*1), CX + MOVL AX, (R10) + MOVL CX, -4(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), AX + MOVQ -8(R14)(R13*1), CX + MOVQ AX, (R10) + MOVQ CX, -8(R10)(R13*1) + ADDQ R13, R14 + ADDQ R13, R10 + +copy_4_end: + ADDQ R13, R12 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ AX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R10) + ADDQ $0x10, R14 + ADDQ $0x10, R10 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R10)(R15*1), R10 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R10) + JMP copy_5_end + +copy_5_small: + CMPQ AX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ AX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(AX*1), BP + MOVB R15, (R10) + MOVB BP, -1(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R10) + MOVB BP, 2(R10) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(AX*1), BP + MOVL R15, (R10) + MOVL BP, -4(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(AX*1), BP + MOVQ R15, (R10) + MOVQ BP, -8(R10)(AX*1) + ADDQ AX, R14 + ADDQ AX, R10 + +copy_5_end: + ADDQ AX, R12 + SUBQ AX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R10, AX + SUBQ CX, AX + + // ml <= mo + CMPQ R13, CX + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R12 + MOVQ R13, CX + SUBQ $0x10, CX + JB copy_2_small + +copy_2_loop: + MOVUPS (AX), X0 + MOVUPS X0, (R10) + ADDQ $0x10, AX + ADDQ $0x10, R10 + SUBQ $0x10, CX + JAE copy_2_loop + LEAQ 16(AX)(CX*1), AX + LEAQ 16(R10)(CX*1), R10 + MOVUPS -16(AX), X0 + MOVUPS X0, -16(R10) + JMP copy_2_end + +copy_2_small: + CMPQ R13, $0x03 + JE copy_2_move_3 + JB copy_2_move_1or2 + CMPQ R13, $0x08 + JB copy_2_move_4through7 + JMP copy_2_move_8through16 + +copy_2_move_1or2: + MOVB (AX), CL + MOVB -1(AX)(R13*1), R14 + MOVB CL, (R10) + MOVB R14, -1(R10)(R13*1) + ADDQ R13, AX + ADDQ R13, R10 + JMP copy_2_end + +copy_2_move_3: + MOVW (AX), CX + MOVB 2(AX), R14 + MOVW CX, (R10) + MOVB R14, 2(R10) + ADDQ R13, AX + ADDQ R13, R10 + JMP copy_2_end + +copy_2_move_4through7: + MOVL (AX), CX + MOVL -4(AX)(R13*1), R14 + MOVL CX, (R10) + MOVL R14, -4(R10)(R13*1) + ADDQ R13, AX + ADDQ R13, R10 + JMP copy_2_end + +copy_2_move_8through16: + MOVQ (AX), CX + MOVQ -8(AX)(R13*1), R14 + MOVQ CX, (R10) + MOVQ R14, -8(R10)(R13*1) + ADDQ R13, AX + ADDQ R13, R10 + +copy_2_end: + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R12 + +copy_slow_3: + MOVB (AX), CL + MOVB CL, (R10) + INCQ AX + INCQ R10 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), AX + DECQ 96(AX) + JNS sequenceDecs_decodeSync_safe_amd64_main_loop + +loop_finished: + MOVQ br+8(FP), AX + MOVQ DX, 24(AX) + MOVB BL, 32(AX) + MOVQ SI, 8(AX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R12, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R11 + MOVQ R11, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_safe_amd64_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_safe_amd64_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R12, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET + +// func sequenceDecs_decodeSync_safe_bmi2(s *sequenceDecs, br *bitReader, ctx *decodeSyncAsmContext) int +// Requires: BMI, BMI2, CMOV, SSE +TEXT ·sequenceDecs_decodeSync_safe_bmi2(SB), $64-32 + MOVQ br+8(FP), BX + MOVQ 24(BX), AX + MOVBQZX 32(BX), DX + MOVQ (BX), CX + MOVQ 8(BX), BX + ADDQ BX, CX + MOVQ CX, (SP) + MOVQ ctx+16(FP), CX + MOVQ 72(CX), SI + MOVQ 80(CX), DI + MOVQ 88(CX), R8 + XORQ R9, R9 + MOVQ R9, 8(SP) + MOVQ R9, 16(SP) + MOVQ R9, 24(SP) + MOVQ 112(CX), R9 + MOVQ 128(CX), R10 + MOVQ R10, 32(SP) + MOVQ 144(CX), R10 + MOVQ 136(CX), R11 + MOVQ 200(CX), R12 + MOVQ R12, 56(SP) + MOVQ 176(CX), R12 + MOVQ R12, 48(SP) + MOVQ 184(CX), CX + MOVQ CX, 40(SP) + MOVQ 40(SP), CX + ADDQ CX, 48(SP) + + // Calculate poiter to s.out[cap(s.out)] (a past-end pointer) + ADDQ R9, 32(SP) + + // outBase += outPosition + ADDQ R11, R9 + +sequenceDecs_decodeSync_safe_bmi2_main_loop: + MOVQ (SP), R12 + + // Fill bitreader to have enough for the offset and match length. + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_safe_bmi2_fill_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_end + +sequenceDecs_decodeSync_safe_bmi2_fill_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_byte_by_byte + +sequenceDecs_decodeSync_safe_bmi2_fill_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_bmi2_fill_end: + // Update offset + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ R8, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 8(SP) + + // Update match length + MOVQ $0x00000808, CX + BEXTRQ CX, DI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ DI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 16(SP) + + // Fill bitreader to have enough for the remaining + CMPQ BX, $0x08 + JL sequenceDecs_decodeSync_safe_bmi2_fill_2_byte_by_byte + MOVQ DX, CX + SHRQ $0x03, CX + SUBQ CX, R12 + MOVQ (R12), AX + SUBQ CX, BX + ANDQ $0x07, DX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_2_end + +sequenceDecs_decodeSync_safe_bmi2_fill_2_byte_by_byte: + CMPQ BX, $0x00 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_2_check_overread + CMPQ DX, $0x07 + JLE sequenceDecs_decodeSync_safe_bmi2_fill_2_end + SHLQ $0x08, AX + SUBQ $0x01, R12 + SUBQ $0x01, BX + SUBQ $0x08, DX + MOVBQZX (R12), CX + ORQ CX, AX + JMP sequenceDecs_decodeSync_safe_bmi2_fill_2_byte_by_byte + +sequenceDecs_decodeSync_safe_bmi2_fill_2_check_overread: + CMPQ DX, $0x40 + JA error_overread + +sequenceDecs_decodeSync_safe_bmi2_fill_2_end: + // Update literal length + MOVQ $0x00000808, CX + BEXTRQ CX, SI, R13 + MOVQ AX, R14 + LEAQ (DX)(R13*1), CX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + MOVQ CX, DX + MOVQ SI, CX + SHRQ $0x20, CX + ADDQ R14, CX + MOVQ CX, 24(SP) + + // Fill bitreader for state updates + MOVQ R12, (SP) + MOVQ $0x00000808, CX + BEXTRQ CX, R8, R12 + MOVQ ctx+16(FP), CX + CMPQ 96(CX), $0x00 + JZ sequenceDecs_decodeSync_safe_bmi2_skip_update + LEAQ (SI)(DI*1), R13 + ADDQ R8, R13 + MOVBQZX R13, R13 + LEAQ (DX)(R13*1), CX + MOVQ AX, R14 + MOVQ CX, DX + ROLQ CL, R14 + BZHIQ R13, R14, R14 + + // Update Offset State + BZHIQ R8, R14, CX + SHRXQ R8, R14, R14 + SHRL $0x10, R8 + ADDQ CX, R8 + + // Load ctx.ofTable + MOVQ ctx+16(FP), CX + MOVQ 48(CX), CX + MOVQ (CX)(R8*8), R8 + + // Update Match Length State + BZHIQ DI, R14, CX + SHRXQ DI, R14, R14 + SHRL $0x10, DI + ADDQ CX, DI + + // Load ctx.mlTable + MOVQ ctx+16(FP), CX + MOVQ 24(CX), CX + MOVQ (CX)(DI*8), DI + + // Update Literal Length State + BZHIQ SI, R14, CX + SHRL $0x10, SI + ADDQ CX, SI + + // Load ctx.llTable + MOVQ ctx+16(FP), CX + MOVQ (CX), CX + MOVQ (CX)(SI*8), SI + +sequenceDecs_decodeSync_safe_bmi2_skip_update: + // Adjust offset + MOVQ s+0(FP), CX + MOVQ 8(SP), R13 + CMPQ R12, $0x01 + JBE sequenceDecs_decodeSync_safe_bmi2_adjust_offsetB_1_or_0 + MOVUPS 144(CX), X0 + MOVQ R13, 144(CX) + MOVUPS X0, 152(CX) + JMP sequenceDecs_decodeSync_safe_bmi2_after_adjust + +sequenceDecs_decodeSync_safe_bmi2_adjust_offsetB_1_or_0: + CMPQ 24(SP), $0x00000000 + JNE sequenceDecs_decodeSync_safe_bmi2_adjust_offset_maybezero + INCQ R13 + JMP sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero + +sequenceDecs_decodeSync_safe_bmi2_adjust_offset_maybezero: + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero + MOVQ 144(CX), R13 + JMP sequenceDecs_decodeSync_safe_bmi2_after_adjust + +sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero: + MOVQ R13, R12 + XORQ R14, R14 + MOVQ $-1, R15 + CMPQ R13, $0x03 + CMOVQEQ R14, R12 + CMOVQEQ R15, R14 + ADDQ 144(CX)(R12*8), R14 + JNZ sequenceDecs_decodeSync_safe_bmi2_adjust_temp_valid + MOVQ $0x00000001, R14 + +sequenceDecs_decodeSync_safe_bmi2_adjust_temp_valid: + CMPQ R13, $0x01 + JZ sequenceDecs_decodeSync_safe_bmi2_adjust_skip + MOVQ 152(CX), R12 + MOVQ R12, 160(CX) + +sequenceDecs_decodeSync_safe_bmi2_adjust_skip: + MOVQ 144(CX), R12 + MOVQ R12, 152(CX) + MOVQ R14, 144(CX) + MOVQ R14, R13 + +sequenceDecs_decodeSync_safe_bmi2_after_adjust: + MOVQ R13, 8(SP) + + // Check values + MOVQ 16(SP), CX + MOVQ 24(SP), R12 + LEAQ (CX)(R12*1), R14 + MOVQ s+0(FP), R15 + ADDQ R14, 256(R15) + MOVQ ctx+16(FP), R14 + SUBQ R12, 104(R14) + JS error_not_enough_literals + CMPQ CX, $0x00020002 + JA sequenceDecs_decodeSync_safe_bmi2_error_match_len_too_big + TESTQ R13, R13 + JNZ sequenceDecs_decodeSync_safe_bmi2_match_len_ofs_ok + TESTQ CX, CX + JNZ sequenceDecs_decodeSync_safe_bmi2_error_match_len_ofs_mismatch + +sequenceDecs_decodeSync_safe_bmi2_match_len_ofs_ok: + MOVQ 24(SP), CX + MOVQ 8(SP), R12 + MOVQ 16(SP), R13 + + // Check if we have enough space in s.out + LEAQ (CX)(R13*1), R14 + ADDQ R9, R14 + CMPQ R14, 32(SP) + JA error_not_enough_space + + // Copy literals + TESTQ CX, CX + JZ check_offset + MOVQ CX, R14 + SUBQ $0x10, R14 + JB copy_1_small + +copy_1_loop: + MOVUPS (R10), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R10 + ADDQ $0x10, R9 + SUBQ $0x10, R14 + JAE copy_1_loop + LEAQ 16(R10)(R14*1), R10 + LEAQ 16(R9)(R14*1), R9 + MOVUPS -16(R10), X0 + MOVUPS X0, -16(R9) + JMP copy_1_end + +copy_1_small: + CMPQ CX, $0x03 + JE copy_1_move_3 + JB copy_1_move_1or2 + CMPQ CX, $0x08 + JB copy_1_move_4through7 + JMP copy_1_move_8through16 + +copy_1_move_1or2: + MOVB (R10), R14 + MOVB -1(R10)(CX*1), R15 + MOVB R14, (R9) + MOVB R15, -1(R9)(CX*1) + ADDQ CX, R10 + ADDQ CX, R9 + JMP copy_1_end + +copy_1_move_3: + MOVW (R10), R14 + MOVB 2(R10), R15 + MOVW R14, (R9) + MOVB R15, 2(R9) + ADDQ CX, R10 + ADDQ CX, R9 + JMP copy_1_end + +copy_1_move_4through7: + MOVL (R10), R14 + MOVL -4(R10)(CX*1), R15 + MOVL R14, (R9) + MOVL R15, -4(R9)(CX*1) + ADDQ CX, R10 + ADDQ CX, R9 + JMP copy_1_end + +copy_1_move_8through16: + MOVQ (R10), R14 + MOVQ -8(R10)(CX*1), R15 + MOVQ R14, (R9) + MOVQ R15, -8(R9)(CX*1) + ADDQ CX, R10 + ADDQ CX, R9 + +copy_1_end: + ADDQ CX, R11 + + // Malformed input if seq.mo > t+len(hist) || seq.mo > s.windowSize) +check_offset: + MOVQ R11, CX + ADDQ 40(SP), CX + CMPQ R12, CX + JG error_match_off_too_big + CMPQ R12, 56(SP) + JG error_match_off_too_big + + // Copy match from history + MOVQ R12, CX + SUBQ R11, CX + JLS copy_match + MOVQ 48(SP), R14 + SUBQ CX, R14 + CMPQ R13, CX + JG copy_all_from_history + MOVQ R13, CX + SUBQ $0x10, CX + JB copy_4_small + +copy_4_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, CX + JAE copy_4_loop + LEAQ 16(R14)(CX*1), R14 + LEAQ 16(R9)(CX*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_4_end + +copy_4_small: + CMPQ R13, $0x03 + JE copy_4_move_3 + CMPQ R13, $0x08 + JB copy_4_move_4through7 + JMP copy_4_move_8through16 + +copy_4_move_3: + MOVW (R14), CX + MOVB 2(R14), R12 + MOVW CX, (R9) + MOVB R12, 2(R9) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_4through7: + MOVL (R14), CX + MOVL -4(R14)(R13*1), R12 + MOVL CX, (R9) + MOVL R12, -4(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + JMP copy_4_end + +copy_4_move_8through16: + MOVQ (R14), CX + MOVQ -8(R14)(R13*1), R12 + MOVQ CX, (R9) + MOVQ R12, -8(R9)(R13*1) + ADDQ R13, R14 + ADDQ R13, R9 + +copy_4_end: + ADDQ R13, R11 + JMP handle_loop + JMP loop_finished + +copy_all_from_history: + MOVQ CX, R15 + SUBQ $0x10, R15 + JB copy_5_small + +copy_5_loop: + MOVUPS (R14), X0 + MOVUPS X0, (R9) + ADDQ $0x10, R14 + ADDQ $0x10, R9 + SUBQ $0x10, R15 + JAE copy_5_loop + LEAQ 16(R14)(R15*1), R14 + LEAQ 16(R9)(R15*1), R9 + MOVUPS -16(R14), X0 + MOVUPS X0, -16(R9) + JMP copy_5_end + +copy_5_small: + CMPQ CX, $0x03 + JE copy_5_move_3 + JB copy_5_move_1or2 + CMPQ CX, $0x08 + JB copy_5_move_4through7 + JMP copy_5_move_8through16 + +copy_5_move_1or2: + MOVB (R14), R15 + MOVB -1(R14)(CX*1), BP + MOVB R15, (R9) + MOVB BP, -1(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_3: + MOVW (R14), R15 + MOVB 2(R14), BP + MOVW R15, (R9) + MOVB BP, 2(R9) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_4through7: + MOVL (R14), R15 + MOVL -4(R14)(CX*1), BP + MOVL R15, (R9) + MOVL BP, -4(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + JMP copy_5_end + +copy_5_move_8through16: + MOVQ (R14), R15 + MOVQ -8(R14)(CX*1), BP + MOVQ R15, (R9) + MOVQ BP, -8(R9)(CX*1) + ADDQ CX, R14 + ADDQ CX, R9 + +copy_5_end: + ADDQ CX, R11 + SUBQ CX, R13 + + // Copy match from the current buffer +copy_match: + MOVQ R9, CX + SUBQ R12, CX + + // ml <= mo + CMPQ R13, R12 + JA copy_overlapping_match + + // Copy non-overlapping match + ADDQ R13, R11 + MOVQ R13, R12 + SUBQ $0x10, R12 + JB copy_2_small + +copy_2_loop: + MOVUPS (CX), X0 + MOVUPS X0, (R9) + ADDQ $0x10, CX + ADDQ $0x10, R9 + SUBQ $0x10, R12 + JAE copy_2_loop + LEAQ 16(CX)(R12*1), CX + LEAQ 16(R9)(R12*1), R9 + MOVUPS -16(CX), X0 + MOVUPS X0, -16(R9) + JMP copy_2_end + +copy_2_small: + CMPQ R13, $0x03 + JE copy_2_move_3 + JB copy_2_move_1or2 + CMPQ R13, $0x08 + JB copy_2_move_4through7 + JMP copy_2_move_8through16 + +copy_2_move_1or2: + MOVB (CX), R12 + MOVB -1(CX)(R13*1), R14 + MOVB R12, (R9) + MOVB R14, -1(R9)(R13*1) + ADDQ R13, CX + ADDQ R13, R9 + JMP copy_2_end + +copy_2_move_3: + MOVW (CX), R12 + MOVB 2(CX), R14 + MOVW R12, (R9) + MOVB R14, 2(R9) + ADDQ R13, CX + ADDQ R13, R9 + JMP copy_2_end + +copy_2_move_4through7: + MOVL (CX), R12 + MOVL -4(CX)(R13*1), R14 + MOVL R12, (R9) + MOVL R14, -4(R9)(R13*1) + ADDQ R13, CX + ADDQ R13, R9 + JMP copy_2_end + +copy_2_move_8through16: + MOVQ (CX), R12 + MOVQ -8(CX)(R13*1), R14 + MOVQ R12, (R9) + MOVQ R14, -8(R9)(R13*1) + ADDQ R13, CX + ADDQ R13, R9 + +copy_2_end: + JMP handle_loop + + // Copy overlapping match +copy_overlapping_match: + ADDQ R13, R11 + +copy_slow_3: + MOVB (CX), R12 + MOVB R12, (R9) + INCQ CX + INCQ R9 + DECQ R13 + JNZ copy_slow_3 + +handle_loop: + MOVQ ctx+16(FP), CX + DECQ 96(CX) + JNS sequenceDecs_decodeSync_safe_bmi2_main_loop + +loop_finished: + MOVQ br+8(FP), CX + MOVQ AX, 24(CX) + MOVB DL, 32(CX) + MOVQ BX, 8(CX) + + // Update the context + MOVQ ctx+16(FP), AX + MOVQ R11, 136(AX) + MOVQ 144(AX), CX + SUBQ CX, R10 + MOVQ R10, 168(AX) + + // Return success + MOVQ $0x00000000, ret+24(FP) + RET + + // Return with match length error +sequenceDecs_decodeSync_safe_bmi2_error_match_len_ofs_mismatch: + MOVQ 16(SP), AX + MOVQ ctx+16(FP), CX + MOVQ AX, 216(CX) + MOVQ $0x00000001, ret+24(FP) + RET + + // Return with match too long error +sequenceDecs_decodeSync_safe_bmi2_error_match_len_too_big: + MOVQ ctx+16(FP), AX + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ $0x00000002, ret+24(FP) + RET + + // Return with match offset too long error +error_match_off_too_big: + MOVQ ctx+16(FP), AX + MOVQ 8(SP), CX + MOVQ CX, 224(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000003, ret+24(FP) + RET + + // Return with not enough literals error +error_not_enough_literals: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ $0x00000004, ret+24(FP) + RET + + // Return with overread error +error_overread: + MOVQ $0x00000006, ret+24(FP) + RET + + // Return with not enough output space error +error_not_enough_space: + MOVQ ctx+16(FP), AX + MOVQ 24(SP), CX + MOVQ CX, 208(AX) + MOVQ 16(SP), CX + MOVQ CX, 216(AX) + MOVQ R11, 136(AX) + MOVQ $0x00000005, ret+24(FP) + RET diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go new file mode 100644 index 0000000..2fb35b7 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqdec_generic.go @@ -0,0 +1,237 @@ +//go:build !amd64 || appengine || !gc || noasm +// +build !amd64 appengine !gc noasm + +package zstd + +import ( + "fmt" + "io" +) + +// decode sequences from the stream with the provided history but without dictionary. +func (s *sequenceDecs) decodeSyncSimple(hist []byte) (bool, error) { + return false, nil +} + +// decode sequences from the stream without the provided history. +func (s *sequenceDecs) decode(seqs []seqVals) error { + br := s.br + + // Grab full sizes tables, to avoid bounds checks. + llTable, mlTable, ofTable := s.litLengths.fse.dt[:maxTablesize], s.matchLengths.fse.dt[:maxTablesize], s.offsets.fse.dt[:maxTablesize] + llState, mlState, ofState := s.litLengths.state.state, s.matchLengths.state.state, s.offsets.state.state + s.seqSize = 0 + litRemain := len(s.literals) + + maxBlockSize := maxCompressedBlockSize + if s.windowSize < maxBlockSize { + maxBlockSize = s.windowSize + } + for i := range seqs { + var ll, mo, ml int + if len(br.in) > 4+((maxOffsetBits+16+16)>>3) { + // inlined function: + // ll, mo, ml = s.nextFast(br, llState, mlState, ofState) + + // Final will not read from stream. + var llB, mlB, moB uint8 + ll, llB = llState.final() + ml, mlB = mlState.final() + mo, moB = ofState.final() + + // extra bits are stored in reverse order. + br.fillFast() + mo += br.getBits(moB) + if s.maxBits > 32 { + br.fillFast() + } + ml += br.getBits(mlB) + ll += br.getBits(llB) + + if moB > 1 { + s.prevOffset[2] = s.prevOffset[1] + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = mo + } else { + // mo = s.adjustOffset(mo, ll, moB) + // Inlined for rather big speedup + if ll == 0 { + // There is an exception though, when current sequence's literals_length = 0. + // In this case, repeated offsets are shifted by one, so an offset_value of 1 means Repeated_Offset2, + // an offset_value of 2 means Repeated_Offset3, and an offset_value of 3 means Repeated_Offset1 - 1_byte. + mo++ + } + + if mo == 0 { + mo = s.prevOffset[0] + } else { + var temp int + if mo == 3 { + temp = s.prevOffset[0] - 1 + } else { + temp = s.prevOffset[mo] + } + + if temp == 0 { + // 0 is not valid; input is corrupted; force offset to 1 + println("WARNING: temp was 0") + temp = 1 + } + + if mo != 1 { + s.prevOffset[2] = s.prevOffset[1] + } + s.prevOffset[1] = s.prevOffset[0] + s.prevOffset[0] = temp + mo = temp + } + } + br.fillFast() + } else { + if br.overread() { + if debugDecoder { + printf("reading sequence %d, exceeded available data\n", i) + } + return io.ErrUnexpectedEOF + } + ll, mo, ml = s.next(br, llState, mlState, ofState) + br.fill() + } + + if debugSequences { + println("Seq", i, "Litlen:", ll, "mo:", mo, "(abs) ml:", ml) + } + // Evaluate. + // We might be doing this async, so do it early. + if mo == 0 && ml > 0 { + return fmt.Errorf("zero matchoff and matchlen (%d) > 0", ml) + } + if ml > maxMatchLen { + return fmt.Errorf("match len (%d) bigger than max allowed length", ml) + } + s.seqSize += ll + ml + if s.seqSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + litRemain -= ll + if litRemain < 0 { + return fmt.Errorf("unexpected literal count, want %d bytes, but only %d is available", ll, litRemain+ll) + } + seqs[i] = seqVals{ + ll: ll, + ml: ml, + mo: mo, + } + if i == len(seqs)-1 { + // This is the last sequence, so we shouldn't update state. + break + } + + // Manually inlined, ~ 5-20% faster + // Update all 3 states at once. Approx 20% faster. + nBits := llState.nbBits() + mlState.nbBits() + ofState.nbBits() + if nBits == 0 { + llState = llTable[llState.newState()&maxTableMask] + mlState = mlTable[mlState.newState()&maxTableMask] + ofState = ofTable[ofState.newState()&maxTableMask] + } else { + bits := br.get32BitsFast(nBits) + lowBits := uint16(bits >> ((ofState.nbBits() + mlState.nbBits()) & 31)) + llState = llTable[(llState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits >> (ofState.nbBits() & 31)) + lowBits &= bitMask[mlState.nbBits()&15] + mlState = mlTable[(mlState.newState()+lowBits)&maxTableMask] + + lowBits = uint16(bits) & bitMask[ofState.nbBits()&15] + ofState = ofTable[(ofState.newState()+lowBits)&maxTableMask] + } + } + s.seqSize += litRemain + if s.seqSize > maxBlockSize { + return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize) + } + err := br.close() + if err != nil { + printf("Closing sequences: %v, %+v\n", err, *br) + } + return err +} + +// executeSimple handles cases when a dictionary is not used. +func (s *sequenceDecs) executeSimple(seqs []seqVals, hist []byte) error { + // Ensure we have enough output size... + if len(s.out)+s.seqSize > cap(s.out) { + addBytes := s.seqSize + len(s.out) + s.out = append(s.out, make([]byte, addBytes)...) + s.out = s.out[:len(s.out)-addBytes] + } + + if debugDecoder { + printf("Execute %d seqs with literals: %d into %d bytes\n", len(seqs), len(s.literals), s.seqSize) + } + + var t = len(s.out) + out := s.out[:t+s.seqSize] + + for _, seq := range seqs { + // Add literals + copy(out[t:], s.literals[:seq.ll]) + t += seq.ll + s.literals = s.literals[seq.ll:] + + // Malformed input + if seq.mo > t+len(hist) || seq.mo > s.windowSize { + return fmt.Errorf("match offset (%d) bigger than current history (%d)", seq.mo, t+len(hist)) + } + + // Copy from history. + if v := seq.mo - t; v > 0 { + // v is the start position in history from end. + start := len(hist) - v + if seq.ml > v { + // Some goes into the current block. + // Copy remainder of history + copy(out[t:], hist[start:]) + t += v + seq.ml -= v + } else { + copy(out[t:], hist[start:start+seq.ml]) + t += seq.ml + continue + } + } + + // We must be in the current buffer now + if seq.ml > 0 { + start := t - seq.mo + if seq.ml <= t-start { + // No overlap + copy(out[t:], out[start:start+seq.ml]) + t += seq.ml + } else { + // Overlapping copy + // Extend destination slice and copy one byte at the time. + src := out[start : start+seq.ml] + dst := out[t:] + dst = dst[:len(src)] + t += len(src) + // Destination is the space we just added. + for i := range src { + dst[i] = src[i] + } + } + } + } + // Add final literals + copy(out[t:], s.literals) + if debugDecoder { + t += len(s.literals) + if t != len(out) { + panic(fmt.Errorf("length mismatch, want %d, got %d, ss: %d", len(out), t, s.seqSize)) + } + } + s.out = out + + return nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go b/examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go new file mode 100644 index 0000000..8014174 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/seqenc.go @@ -0,0 +1,114 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import "math/bits" + +type seqCoders struct { + llEnc, ofEnc, mlEnc *fseEncoder + llPrev, ofPrev, mlPrev *fseEncoder +} + +// swap coders with another (block). +func (s *seqCoders) swap(other *seqCoders) { + *s, *other = *other, *s +} + +// setPrev will update the previous encoders to the actually used ones +// and make sure a fresh one is in the main slot. +func (s *seqCoders) setPrev(ll, ml, of *fseEncoder) { + compareSwap := func(used *fseEncoder, current, prev **fseEncoder) { + // We used the new one, more current to history and reuse the previous history + if *current == used { + *prev, *current = *current, *prev + c := *current + p := *prev + c.reUsed = false + p.reUsed = true + return + } + if used == *prev { + return + } + // Ensure we cannot reuse by accident + prevEnc := *prev + prevEnc.symbolLen = 0 + } + compareSwap(ll, &s.llEnc, &s.llPrev) + compareSwap(ml, &s.mlEnc, &s.mlPrev) + compareSwap(of, &s.ofEnc, &s.ofPrev) +} + +func highBit(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} + +var llCodeTable = [64]byte{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 17, 18, 18, 19, 19, + 20, 20, 20, 20, 21, 21, 21, 21, + 22, 22, 22, 22, 22, 22, 22, 22, + 23, 23, 23, 23, 23, 23, 23, 23, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24} + +// Up to 6 bits +const maxLLCode = 35 + +// llBitsTable translates from ll code to number of bits. +var llBitsTable = [maxLLCode + 1]byte{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, + 4, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16} + +// llCode returns the code that represents the literal length requested. +func llCode(litLength uint32) uint8 { + const llDeltaCode = 19 + if litLength <= 63 { + // Compiler insists on bounds check (Go 1.12) + return llCodeTable[litLength&63] + } + return uint8(highBit(litLength)) + llDeltaCode +} + +var mlCodeTable = [128]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, + 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42} + +// Up to 6 bits +const maxMLCode = 52 + +// mlBitsTable translates from ml code to number of bits. +var mlBitsTable = [maxMLCode + 1]byte{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, + 4, 4, 5, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16} + +// note : mlBase = matchLength - MINMATCH; +// because it's the format it's stored in seqStore->sequences +func mlCode(mlBase uint32) uint8 { + const mlDeltaCode = 36 + if mlBase <= 127 { + // Compiler insists on bounds check (Go 1.12) + return mlCodeTable[mlBase&127] + } + return uint8(highBit(mlBase)) + mlDeltaCode +} + +func ofCode(offset uint32) uint8 { + // A valid offset will always be > 0. + return uint8(bits.Len32(offset) - 1) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go b/examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go new file mode 100644 index 0000000..ec13594 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/snappy.go @@ -0,0 +1,434 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. +// Based on work by Yann Collet, released under BSD License. + +package zstd + +import ( + "encoding/binary" + "errors" + "hash/crc32" + "io" + + "github.com/klauspost/compress/huff0" + snappy "github.com/klauspost/compress/internal/snapref" +) + +const ( + snappyTagLiteral = 0x00 + snappyTagCopy1 = 0x01 + snappyTagCopy2 = 0x02 + snappyTagCopy4 = 0x03 +) + +const ( + snappyChecksumSize = 4 + snappyMagicBody = "sNaPpY" + + // snappyMaxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + snappyMaxBlockSize = 65536 + + // snappyMaxEncodedLenOfMaxBlockSize equals MaxEncodedLen(snappyMaxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + snappyMaxEncodedLenOfMaxBlockSize = 76490 +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var ( + // ErrSnappyCorrupt reports that the input is invalid. + ErrSnappyCorrupt = errors.New("snappy: corrupt input") + // ErrSnappyTooLarge reports that the uncompressed length is too large. + ErrSnappyTooLarge = errors.New("snappy: decoded block is too large") + // ErrSnappyUnsupported reports that the input isn't supported. + ErrSnappyUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// SnappyConverter can read SnappyConverter-compressed streams and convert them to zstd. +// Conversion is done by converting the stream directly from Snappy without intermediate +// full decoding. +// Therefore the compression ratio is much less than what can be done by a full decompression +// and compression, and a faulty Snappy stream may lead to a faulty Zstandard stream without +// any errors being generated. +// No CRC value is being generated and not all CRC values of the Snappy stream are checked. +// However, it provides really fast recompression of Snappy streams. +// The converter can be reused to avoid allocations, even after errors. +type SnappyConverter struct { + r io.Reader + err error + buf []byte + block *blockEnc +} + +// Convert the Snappy stream supplied in 'in' and write the zStandard stream to 'w'. +// If any error is detected on the Snappy stream it is returned. +// The number of bytes written is returned. +func (r *SnappyConverter) Convert(in io.Reader, w io.Writer) (int64, error) { + initPredefined() + r.err = nil + r.r = in + if r.block == nil { + r.block = &blockEnc{} + r.block.init() + } + r.block.initNewEncode() + if len(r.buf) != snappyMaxEncodedLenOfMaxBlockSize+snappyChecksumSize { + r.buf = make([]byte, snappyMaxEncodedLenOfMaxBlockSize+snappyChecksumSize) + } + r.block.litEnc.Reuse = huff0.ReusePolicyNone + var written int64 + var readHeader bool + { + header := frameHeader{WindowSize: snappyMaxBlockSize}.appendTo(r.buf[:0]) + + var n int + n, r.err = w.Write(header) + if r.err != nil { + return written, r.err + } + written += int64(n) + } + + for { + if !r.readFull(r.buf[:4], true) { + // Add empty last block + r.block.reset(nil) + r.block.last = true + err := r.block.encodeLits(r.block.literals, false) + if err != nil { + return written, err + } + n, err := w.Write(r.block.output) + if err != nil { + return written, err + } + written += int64(n) + + return written, r.err + } + chunkType := r.buf[0] + if !readHeader { + if chunkType != chunkTypeStreamIdentifier { + println("chunkType != chunkTypeStreamIdentifier", chunkType) + r.err = ErrSnappyCorrupt + return written, r.err + } + readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + println("chunkLen > len(r.buf)", chunkType) + r.err = ErrSnappyUnsupported + return written, r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < snappyChecksumSize { + println("chunkLen < snappyChecksumSize", chunkLen, snappyChecksumSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return written, r.err + } + //checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[snappyChecksumSize:] + + n, hdr, err := snappyDecodedLen(buf) + if err != nil { + r.err = err + return written, r.err + } + buf = buf[hdr:] + if n > snappyMaxBlockSize { + println("n > snappyMaxBlockSize", n, snappyMaxBlockSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + r.block.reset(nil) + r.block.pushOffsets() + if err := decodeSnappy(r.block, buf); err != nil { + r.err = err + return written, r.err + } + if r.block.size+r.block.extraLits != n { + printf("invalid size, want %d, got %d\n", n, r.block.size+r.block.extraLits) + r.err = ErrSnappyCorrupt + return written, r.err + } + err = r.block.encode(nil, false, false) + switch err { + case errIncompressible: + r.block.popOffsets() + r.block.reset(nil) + r.block.literals, err = snappy.Decode(r.block.literals[:n], r.buf[snappyChecksumSize:chunkLen]) + if err != nil { + return written, err + } + err = r.block.encodeLits(r.block.literals, false) + if err != nil { + return written, err + } + case nil: + default: + return written, err + } + + n, r.err = w.Write(r.block.output) + if r.err != nil { + return written, err + } + written += int64(n) + continue + case chunkTypeUncompressedData: + if debugEncoder { + println("Uncompressed, chunklen", chunkLen) + } + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < snappyChecksumSize { + println("chunkLen < snappyChecksumSize", chunkLen, snappyChecksumSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + r.block.reset(nil) + buf := r.buf[:snappyChecksumSize] + if !r.readFull(buf, false) { + return written, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - snappyChecksumSize + if n > snappyMaxBlockSize { + println("n > snappyMaxBlockSize", n, snappyMaxBlockSize) + r.err = ErrSnappyCorrupt + return written, r.err + } + r.block.literals = r.block.literals[:n] + if !r.readFull(r.block.literals, false) { + return written, r.err + } + if snappyCRC(r.block.literals) != checksum { + println("literals crc mismatch") + r.err = ErrSnappyCorrupt + return written, r.err + } + err := r.block.encodeLits(r.block.literals, false) + if err != nil { + return written, err + } + n, r.err = w.Write(r.block.output) + if r.err != nil { + return written, err + } + written += int64(n) + continue + + case chunkTypeStreamIdentifier: + if debugEncoder { + println("stream id", chunkLen, len(snappyMagicBody)) + } + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(snappyMagicBody) { + println("chunkLen != len(snappyMagicBody)", chunkLen, len(snappyMagicBody)) + r.err = ErrSnappyCorrupt + return written, r.err + } + if !r.readFull(r.buf[:len(snappyMagicBody)], false) { + return written, r.err + } + for i := 0; i < len(snappyMagicBody); i++ { + if r.buf[i] != snappyMagicBody[i] { + println("r.buf[i] != snappyMagicBody[i]", r.buf[i], snappyMagicBody[i], i) + r.err = ErrSnappyCorrupt + return written, r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + println("chunkType <= 0x7f") + r.err = ErrSnappyUnsupported + return written, r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return written, r.err + } + } +} + +// decodeSnappy writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read. +func decodeSnappy(blk *blockEnc, src []byte) error { + //decodeRef(make([]byte, snappyMaxBlockSize), src) + var s, length int + lits := blk.extraLits + var offset uint32 + for s < len(src) { + switch src[s] & 0x03 { + case snappyTagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, src) + return ErrSnappyCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + if x > snappyMaxBlockSize { + println("x > snappyMaxBlockSize", x, snappyMaxBlockSize) + return ErrSnappyCorrupt + } + length = int(x) + 1 + if length <= 0 { + println("length <= 0 ", length) + + return errUnsupportedLiteralLength + } + //if length > snappyMaxBlockSize-d || uint32(length) > len(src)-s { + // return ErrSnappyCorrupt + //} + + blk.literals = append(blk.literals, src[s:s+length]...) + //println(length, "litLen") + lits += length + s += length + continue + + case snappyTagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, len(src)) + return ErrSnappyCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]) + + case snappyTagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, len(src)) + return ErrSnappyCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = uint32(src[s-2]) | uint32(src[s-1])<<8 + + case snappyTagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + println("uint(s) > uint(len(src)", s, len(src)) + return ErrSnappyCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + + if offset <= 0 || blk.size+lits < int(offset) /*|| length > len(blk)-d */ { + println("offset <= 0 || blk.size+lits < int(offset)", offset, blk.size+lits, int(offset), blk.size, lits) + + return ErrSnappyCorrupt + } + + // Check if offset is one of the recent offsets. + // Adjusts the output offset accordingly. + // Gives a tiny bit of compression, typically around 1%. + if false { + offset = blk.matchOffset(offset, uint32(lits)) + } else { + offset += 3 + } + + blk.sequences = append(blk.sequences, seq{ + litLen: uint32(lits), + offset: offset, + matchLen: uint32(length) - zstdMinMatch, + }) + blk.size += length + lits + lits = 0 + } + blk.extraLits = lits + return nil +} + +func (r *SnappyConverter) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrSnappyCorrupt + } + return false + } + return true +} + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func snappyCRC(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return c>>15 | c<<17 + 0xa282ead8 +} + +// snappyDecodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func snappyDecodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrSnappyCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrSnappyTooLarge + } + return int(v), n, nil +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/zip.go b/examples/go/vendor/github.com/klauspost/compress/zstd/zip.go new file mode 100644 index 0000000..29c15c8 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/zip.go @@ -0,0 +1,141 @@ +// Copyright 2019+ Klaus Post. All rights reserved. +// License information can be found in the LICENSE file. + +package zstd + +import ( + "errors" + "io" + "sync" +) + +// ZipMethodWinZip is the method for Zstandard compressed data inside Zip files for WinZip. +// See https://www.winzip.com/win/en/comp_info.html +const ZipMethodWinZip = 93 + +// ZipMethodPKWare is the original method number used by PKWARE to indicate Zstandard compression. +// Deprecated: This has been deprecated by PKWARE, use ZipMethodWinZip instead for compression. +// See https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.9.TXT +const ZipMethodPKWare = 20 + +// zipReaderPool is the default reader pool. +var zipReaderPool = sync.Pool{New: func() interface{} { + z, err := NewReader(nil, WithDecoderLowmem(true), WithDecoderMaxWindow(128<<20), WithDecoderConcurrency(1)) + if err != nil { + panic(err) + } + return z +}} + +// newZipReader creates a pooled zip decompressor. +func newZipReader(opts ...DOption) func(r io.Reader) io.ReadCloser { + pool := &zipReaderPool + if len(opts) > 0 { + opts = append([]DOption{WithDecoderLowmem(true), WithDecoderMaxWindow(128 << 20)}, opts...) + // Force concurrency 1 + opts = append(opts, WithDecoderConcurrency(1)) + // Create our own pool + pool = &sync.Pool{} + } + return func(r io.Reader) io.ReadCloser { + dec, ok := pool.Get().(*Decoder) + if ok { + dec.Reset(r) + } else { + d, err := NewReader(r, opts...) + if err != nil { + panic(err) + } + dec = d + } + return &pooledZipReader{dec: dec, pool: pool} + } +} + +type pooledZipReader struct { + mu sync.Mutex // guards Close and Read + pool *sync.Pool + dec *Decoder +} + +func (r *pooledZipReader) Read(p []byte) (n int, err error) { + r.mu.Lock() + defer r.mu.Unlock() + if r.dec == nil { + return 0, errors.New("read after close or EOF") + } + dec, err := r.dec.Read(p) + if err == io.EOF { + r.dec.Reset(nil) + r.pool.Put(r.dec) + r.dec = nil + } + return dec, err +} + +func (r *pooledZipReader) Close() error { + r.mu.Lock() + defer r.mu.Unlock() + var err error + if r.dec != nil { + err = r.dec.Reset(nil) + r.pool.Put(r.dec) + r.dec = nil + } + return err +} + +type pooledZipWriter struct { + mu sync.Mutex // guards Close and Read + enc *Encoder + pool *sync.Pool +} + +func (w *pooledZipWriter) Write(p []byte) (n int, err error) { + w.mu.Lock() + defer w.mu.Unlock() + if w.enc == nil { + return 0, errors.New("Write after Close") + } + return w.enc.Write(p) +} + +func (w *pooledZipWriter) Close() error { + w.mu.Lock() + defer w.mu.Unlock() + var err error + if w.enc != nil { + err = w.enc.Close() + w.pool.Put(w.enc) + w.enc = nil + } + return err +} + +// ZipCompressor returns a compressor that can be registered with zip libraries. +// The provided encoder options will be used on all encodes. +func ZipCompressor(opts ...EOption) func(w io.Writer) (io.WriteCloser, error) { + var pool sync.Pool + return func(w io.Writer) (io.WriteCloser, error) { + enc, ok := pool.Get().(*Encoder) + if ok { + enc.Reset(w) + } else { + var err error + enc, err = NewWriter(w, opts...) + if err != nil { + return nil, err + } + } + return &pooledZipWriter{enc: enc, pool: &pool}, nil + } +} + +// ZipDecompressor returns a decompressor that can be registered with zip libraries. +// See ZipCompressor for example. +// Options can be specified. WithDecoderConcurrency(1) is forced, +// and by default a 128MB maximum decompression window is specified. +// The window size can be overridden if required. +func ZipDecompressor(opts ...DOption) func(r io.Reader) io.ReadCloser { + return newZipReader(opts...) +} diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go b/examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go new file mode 100644 index 0000000..4be7cc7 --- /dev/null +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/zstd.go @@ -0,0 +1,121 @@ +// Package zstd provides decompression of zstandard files. +// +// For advanced usage and examples, go to the README: https://github.com/klauspost/compress/tree/master/zstd#zstd +package zstd + +import ( + "bytes" + "encoding/binary" + "errors" + "log" + "math" +) + +// enable debug printing +const debug = false + +// enable encoding debug printing +const debugEncoder = debug + +// enable decoding debug printing +const debugDecoder = debug + +// Enable extra assertions. +const debugAsserts = debug || false + +// print sequence details +const debugSequences = false + +// print detailed matching information +const debugMatches = false + +// force encoder to use predefined tables. +const forcePreDef = false + +// zstdMinMatch is the minimum zstd match length. +const zstdMinMatch = 3 + +// fcsUnknown is used for unknown frame content size. +const fcsUnknown = math.MaxUint64 + +var ( + // ErrReservedBlockType is returned when a reserved block type is found. + // Typically this indicates wrong or corrupted input. + ErrReservedBlockType = errors.New("invalid input: reserved block type encountered") + + // ErrCompressedSizeTooBig is returned when a block is bigger than allowed. + // Typically this indicates wrong or corrupted input. + ErrCompressedSizeTooBig = errors.New("invalid input: compressed size too big") + + // ErrBlockTooSmall is returned when a block is too small to be decoded. + // Typically returned on invalid input. + ErrBlockTooSmall = errors.New("block too small") + + // ErrUnexpectedBlockSize is returned when a block has unexpected size. + // Typically returned on invalid input. + ErrUnexpectedBlockSize = errors.New("unexpected block size") + + // ErrMagicMismatch is returned when a "magic" number isn't what is expected. + // Typically this indicates wrong or corrupted input. + ErrMagicMismatch = errors.New("invalid input: magic number mismatch") + + // ErrWindowSizeExceeded is returned when a reference exceeds the valid window size. + // Typically this indicates wrong or corrupted input. + ErrWindowSizeExceeded = errors.New("window size exceeded") + + // ErrWindowSizeTooSmall is returned when no window size is specified. + // Typically this indicates wrong or corrupted input. + ErrWindowSizeTooSmall = errors.New("invalid input: window size was too small") + + // ErrDecoderSizeExceeded is returned if decompressed size exceeds the configured limit. + ErrDecoderSizeExceeded = errors.New("decompressed size exceeds configured limit") + + // ErrUnknownDictionary is returned if the dictionary ID is unknown. + ErrUnknownDictionary = errors.New("unknown dictionary") + + // ErrFrameSizeExceeded is returned if the stated frame size is exceeded. + // This is only returned if SingleSegment is specified on the frame. + ErrFrameSizeExceeded = errors.New("frame size exceeded") + + // ErrFrameSizeMismatch is returned if the stated frame size does not match the expected size. + // This is only returned if SingleSegment is specified on the frame. + ErrFrameSizeMismatch = errors.New("frame size does not match size on stream") + + // ErrCRCMismatch is returned if CRC mismatches. + ErrCRCMismatch = errors.New("CRC check failed") + + // ErrDecoderClosed will be returned if the Decoder was used after + // Close has been called. + ErrDecoderClosed = errors.New("decoder used after Close") + + // ErrDecoderNilInput is returned when a nil Reader was provided + // and an operation other than Reset/DecodeAll/Close was attempted. + ErrDecoderNilInput = errors.New("nil input provided as reader") +) + +func println(a ...interface{}) { + if debug || debugDecoder || debugEncoder { + log.Println(a...) + } +} + +func printf(format string, a ...interface{}) { + if debug || debugDecoder || debugEncoder { + log.Printf(format, a...) + } +} + +func load3232(b []byte, i int32) uint32 { + return binary.LittleEndian.Uint32(b[:len(b):len(b)][i:]) +} + +func load6432(b []byte, i int32) uint64 { + return binary.LittleEndian.Uint64(b[:len(b):len(b)][i:]) +} + +type byter interface { + Bytes() []byte + Len() int +} + +var _ byter = &bytes.Buffer{} diff --git a/examples/go/vendor/github.com/pierrec/lz4/.gitignore b/examples/go/vendor/github.com/pierrec/lz4/.gitignore new file mode 100644 index 0000000..5e98735 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/.gitignore @@ -0,0 +1,34 @@ +# Created by https://www.gitignore.io/api/macos + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# End of https://www.gitignore.io/api/macos + +cmd/*/*exe +.idea \ No newline at end of file diff --git a/examples/go/vendor/github.com/pierrec/lz4/.travis.yml b/examples/go/vendor/github.com/pierrec/lz4/.travis.yml new file mode 100644 index 0000000..fd6c6db --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/.travis.yml @@ -0,0 +1,24 @@ +language: go + +env: + - GO111MODULE=off + +go: + - 1.9.x + - 1.10.x + - 1.11.x + - 1.12.x + - master + +matrix: + fast_finish: true + allow_failures: + - go: master + +sudo: false + +script: + - go test -v -cpu=2 + - go test -v -cpu=2 -race + - go test -v -cpu=2 -tags noasm + - go test -v -cpu=2 -race -tags noasm diff --git a/examples/go/vendor/github.com/pierrec/lz4/LICENSE b/examples/go/vendor/github.com/pierrec/lz4/LICENSE new file mode 100644 index 0000000..bd899d8 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2015, Pierre Curto +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of xxHash nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/examples/go/vendor/github.com/pierrec/lz4/README.md b/examples/go/vendor/github.com/pierrec/lz4/README.md new file mode 100644 index 0000000..4ee388e --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/README.md @@ -0,0 +1,90 @@ +# lz4 : LZ4 compression in pure Go + +[![GoDoc](https://godoc.org/github.com/pierrec/lz4?status.svg)](https://godoc.org/github.com/pierrec/lz4) +[![Build Status](https://travis-ci.org/pierrec/lz4.svg?branch=master)](https://travis-ci.org/pierrec/lz4) +[![Go Report Card](https://goreportcard.com/badge/github.com/pierrec/lz4)](https://goreportcard.com/report/github.com/pierrec/lz4) +[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/pierrec/lz4.svg?style=social)](https://github.com/pierrec/lz4/tags) + +## Overview + +This package provides a streaming interface to [LZ4 data streams](http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html) as well as low level compress and uncompress functions for LZ4 data blocks. +The implementation is based on the reference C [one](https://github.com/lz4/lz4). + +## Install + +Assuming you have the go toolchain installed: + +``` +go get github.com/pierrec/lz4 +``` + +There is a command line interface tool to compress and decompress LZ4 files. + +``` +go install github.com/pierrec/lz4/cmd/lz4c +``` + +Usage + +``` +Usage of lz4c: + -version + print the program version + +Subcommands: +Compress the given files or from stdin to stdout. +compress [arguments] [ ...] + -bc + enable block checksum + -l int + compression level (0=fastest) + -sc + disable stream checksum + -size string + block max size [64K,256K,1M,4M] (default "4M") + +Uncompress the given files or from stdin to stdout. +uncompress [arguments] [ ...] + +``` + + +## Example + +``` +// Compress and uncompress an input string. +s := "hello world" +r := strings.NewReader(s) + +// The pipe will uncompress the data from the writer. +pr, pw := io.Pipe() +zw := lz4.NewWriter(pw) +zr := lz4.NewReader(pr) + +go func() { + // Compress the input string. + _, _ = io.Copy(zw, r) + _ = zw.Close() // Make sure the writer is closed + _ = pw.Close() // Terminate the pipe +}() + +_, _ = io.Copy(os.Stdout, zr) + +// Output: +// hello world +``` + +## Contributing + +Contributions are very welcome for bug fixing, performance improvements...! + +- Open an issue with a proper description +- Send a pull request with appropriate test case(s) + +## Contributors + +Thanks to all [contributors](https://github.com/pierrec/lz4/graphs/contributors) so far! + +Special thanks to [@Zariel](https://github.com/Zariel) for his asm implementation of the decoder. + +Special thanks to [@klauspost](https://github.com/klauspost) for his work on optimizing the code. diff --git a/examples/go/vendor/github.com/pierrec/lz4/block.go b/examples/go/vendor/github.com/pierrec/lz4/block.go new file mode 100644 index 0000000..664d9be --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/block.go @@ -0,0 +1,413 @@ +package lz4 + +import ( + "encoding/binary" + "math/bits" + "sync" +) + +// blockHash hashes the lower 6 bytes into a value < htSize. +func blockHash(x uint64) uint32 { + const prime6bytes = 227718039650203 + return uint32(((x << (64 - 48)) * prime6bytes) >> (64 - hashLog)) +} + +// CompressBlockBound returns the maximum size of a given buffer of size n, when not compressible. +func CompressBlockBound(n int) int { + return n + n/255 + 16 +} + +// UncompressBlock uncompresses the source buffer into the destination one, +// and returns the uncompressed size. +// +// The destination buffer must be sized appropriately. +// +// An error is returned if the source data is invalid or the destination buffer is too small. +func UncompressBlock(src, dst []byte) (int, error) { + if len(src) == 0 { + return 0, nil + } + if di := decodeBlock(dst, src); di >= 0 { + return di, nil + } + return 0, ErrInvalidSourceShortBuffer +} + +// CompressBlock compresses the source buffer into the destination one. +// This is the fast version of LZ4 compression and also the default one. +// +// The argument hashTable is scratch space for a hash table used by the +// compressor. If provided, it should have length at least 1<<16. If it is +// shorter (or nil), CompressBlock allocates its own hash table. +// +// The size of the compressed data is returned. +// +// If the destination buffer size is lower than CompressBlockBound and +// the compressed size is 0 and no error, then the data is incompressible. +// +// An error is returned if the destination buffer is too small. +func CompressBlock(src, dst []byte, hashTable []int) (_ int, err error) { + defer recoverBlock(&err) + + // Return 0, nil only if the destination buffer size is < CompressBlockBound. + isNotCompressible := len(dst) < CompressBlockBound(len(src)) + + // adaptSkipLog sets how quickly the compressor begins skipping blocks when data is incompressible. + // This significantly speeds up incompressible data and usually has very small impact on compression. + // bytes to skip = 1 + (bytes since last match >> adaptSkipLog) + const adaptSkipLog = 7 + if len(hashTable) < htSize { + htIface := htPool.Get() + defer htPool.Put(htIface) + hashTable = (*(htIface).(*[htSize]int))[:] + } + // Prove to the compiler the table has at least htSize elements. + // The compiler can see that "uint32() >> hashShift" cannot be out of bounds. + hashTable = hashTable[:htSize] + + // si: Current position of the search. + // anchor: Position of the current literals. + var si, di, anchor int + sn := len(src) - mfLimit + if sn <= 0 { + goto lastLiterals + } + + // Fast scan strategy: the hash table only stores the last 4 bytes sequences. + for si < sn { + // Hash the next 6 bytes (sequence)... + match := binary.LittleEndian.Uint64(src[si:]) + h := blockHash(match) + h2 := blockHash(match >> 8) + + // We check a match at s, s+1 and s+2 and pick the first one we get. + // Checking 3 only requires us to load the source one. + ref := hashTable[h] + ref2 := hashTable[h2] + hashTable[h] = si + hashTable[h2] = si + 1 + offset := si - ref + + // If offset <= 0 we got an old entry in the hash table. + if offset <= 0 || offset >= winSize || // Out of window. + uint32(match) != binary.LittleEndian.Uint32(src[ref:]) { // Hash collision on different matches. + // No match. Start calculating another hash. + // The processor can usually do this out-of-order. + h = blockHash(match >> 16) + ref = hashTable[h] + + // Check the second match at si+1 + si += 1 + offset = si - ref2 + + if offset <= 0 || offset >= winSize || + uint32(match>>8) != binary.LittleEndian.Uint32(src[ref2:]) { + // No match. Check the third match at si+2 + si += 1 + offset = si - ref + hashTable[h] = si + + if offset <= 0 || offset >= winSize || + uint32(match>>16) != binary.LittleEndian.Uint32(src[ref:]) { + // Skip one extra byte (at si+3) before we check 3 matches again. + si += 2 + (si-anchor)>>adaptSkipLog + continue + } + } + } + + // Match found. + lLen := si - anchor // Literal length. + // We already matched 4 bytes. + mLen := 4 + + // Extend backwards if we can, reducing literals. + tOff := si - offset - 1 + for lLen > 0 && tOff >= 0 && src[si-1] == src[tOff] { + si-- + tOff-- + lLen-- + mLen++ + } + + // Add the match length, so we continue search at the end. + // Use mLen to store the offset base. + si, mLen = si+mLen, si+minMatch + + // Find the longest match by looking by batches of 8 bytes. + for si+8 < sn { + x := binary.LittleEndian.Uint64(src[si:]) ^ binary.LittleEndian.Uint64(src[si-offset:]) + if x == 0 { + si += 8 + } else { + // Stop is first non-zero byte. + si += bits.TrailingZeros64(x) >> 3 + break + } + } + + mLen = si - mLen + if mLen < 0xF { + dst[di] = byte(mLen) + } else { + dst[di] = 0xF + } + + // Encode literals length. + if lLen < 0xF { + dst[di] |= byte(lLen << 4) + } else { + dst[di] |= 0xF0 + di++ + l := lLen - 0xF + for ; l >= 0xFF; l -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(l) + } + di++ + + // Literals. + copy(dst[di:di+lLen], src[anchor:anchor+lLen]) + di += lLen + 2 + anchor = si + + // Encode offset. + _ = dst[di] // Bound check elimination. + dst[di-2], dst[di-1] = byte(offset), byte(offset>>8) + + // Encode match length part 2. + if mLen >= 0xF { + for mLen -= 0xF; mLen >= 0xFF; mLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(mLen) + di++ + } + // Check if we can load next values. + if si >= sn { + break + } + // Hash match end-2 + h = blockHash(binary.LittleEndian.Uint64(src[si-2:])) + hashTable[h] = si - 2 + } + +lastLiterals: + if isNotCompressible && anchor == 0 { + // Incompressible. + return 0, nil + } + + // Last literals. + lLen := len(src) - anchor + if lLen < 0xF { + dst[di] = byte(lLen << 4) + } else { + dst[di] = 0xF0 + di++ + for lLen -= 0xF; lLen >= 0xFF; lLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(lLen) + } + di++ + + // Write the last literals. + if isNotCompressible && di >= anchor { + // Incompressible. + return 0, nil + } + di += copy(dst[di:di+len(src)-anchor], src[anchor:]) + return di, nil +} + +// Pool of hash tables for CompressBlock. +var htPool = sync.Pool{ + New: func() interface{} { + return new([htSize]int) + }, +} + +// blockHash hashes 4 bytes into a value < winSize. +func blockHashHC(x uint32) uint32 { + const hasher uint32 = 2654435761 // Knuth multiplicative hash. + return x * hasher >> (32 - winSizeLog) +} + +// CompressBlockHC compresses the source buffer src into the destination dst +// with max search depth (use 0 or negative value for no max). +// +// CompressBlockHC compression ratio is better than CompressBlock but it is also slower. +// +// The size of the compressed data is returned. +// +// If the destination buffer size is lower than CompressBlockBound and +// the compressed size is 0 and no error, then the data is incompressible. +// +// An error is returned if the destination buffer is too small. +func CompressBlockHC(src, dst []byte, depth int) (_ int, err error) { + defer recoverBlock(&err) + + // Return 0, nil only if the destination buffer size is < CompressBlockBound. + isNotCompressible := len(dst) < CompressBlockBound(len(src)) + + // adaptSkipLog sets how quickly the compressor begins skipping blocks when data is incompressible. + // This significantly speeds up incompressible data and usually has very small impact on compression. + // bytes to skip = 1 + (bytes since last match >> adaptSkipLog) + const adaptSkipLog = 7 + + var si, di, anchor int + + // hashTable: stores the last position found for a given hash + // chainTable: stores previous positions for a given hash + var hashTable, chainTable [winSize]int + + if depth <= 0 { + depth = winSize + } + + sn := len(src) - mfLimit + if sn <= 0 { + goto lastLiterals + } + + for si < sn { + // Hash the next 4 bytes (sequence). + match := binary.LittleEndian.Uint32(src[si:]) + h := blockHashHC(match) + + // Follow the chain until out of window and give the longest match. + mLen := 0 + offset := 0 + for next, try := hashTable[h], depth; try > 0 && next > 0 && si-next < winSize; next = chainTable[next&winMask] { + // The first (mLen==0) or next byte (mLen>=minMatch) at current match length + // must match to improve on the match length. + if src[next+mLen] != src[si+mLen] { + continue + } + ml := 0 + // Compare the current position with a previous with the same hash. + for ml < sn-si { + x := binary.LittleEndian.Uint64(src[next+ml:]) ^ binary.LittleEndian.Uint64(src[si+ml:]) + if x == 0 { + ml += 8 + } else { + // Stop is first non-zero byte. + ml += bits.TrailingZeros64(x) >> 3 + break + } + } + if ml < minMatch || ml <= mLen { + // Match too small (>adaptSkipLog + continue + } + + // Match found. + // Update hash/chain tables with overlapping bytes: + // si already hashed, add everything from si+1 up to the match length. + winStart := si + 1 + if ws := si + mLen - winSize; ws > winStart { + winStart = ws + } + for si, ml := winStart, si+mLen; si < ml; { + match >>= 8 + match |= uint32(src[si+3]) << 24 + h := blockHashHC(match) + chainTable[si&winMask] = hashTable[h] + hashTable[h] = si + si++ + } + + lLen := si - anchor + si += mLen + mLen -= minMatch // Match length does not include minMatch. + + if mLen < 0xF { + dst[di] = byte(mLen) + } else { + dst[di] = 0xF + } + + // Encode literals length. + if lLen < 0xF { + dst[di] |= byte(lLen << 4) + } else { + dst[di] |= 0xF0 + di++ + l := lLen - 0xF + for ; l >= 0xFF; l -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(l) + } + di++ + + // Literals. + copy(dst[di:di+lLen], src[anchor:anchor+lLen]) + di += lLen + anchor = si + + // Encode offset. + di += 2 + dst[di-2], dst[di-1] = byte(offset), byte(offset>>8) + + // Encode match length part 2. + if mLen >= 0xF { + for mLen -= 0xF; mLen >= 0xFF; mLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(mLen) + di++ + } + } + + if isNotCompressible && anchor == 0 { + // Incompressible. + return 0, nil + } + + // Last literals. +lastLiterals: + lLen := len(src) - anchor + if lLen < 0xF { + dst[di] = byte(lLen << 4) + } else { + dst[di] = 0xF0 + di++ + lLen -= 0xF + for ; lLen >= 0xFF; lLen -= 0xFF { + dst[di] = 0xFF + di++ + } + dst[di] = byte(lLen) + } + di++ + + // Write the last literals. + if isNotCompressible && di >= anchor { + // Incompressible. + return 0, nil + } + di += copy(dst[di:di+len(src)-anchor], src[anchor:]) + return di, nil +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/debug.go b/examples/go/vendor/github.com/pierrec/lz4/debug.go new file mode 100644 index 0000000..bc5e78d --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/debug.go @@ -0,0 +1,23 @@ +// +build lz4debug + +package lz4 + +import ( + "fmt" + "os" + "path/filepath" + "runtime" +) + +const debugFlag = true + +func debug(args ...interface{}) { + _, file, line, _ := runtime.Caller(1) + file = filepath.Base(file) + + f := fmt.Sprintf("LZ4: %s:%d %s", file, line, args[0]) + if f[len(f)-1] != '\n' { + f += "\n" + } + fmt.Fprintf(os.Stderr, f, args[1:]...) +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/debug_stub.go b/examples/go/vendor/github.com/pierrec/lz4/debug_stub.go new file mode 100644 index 0000000..44211ad --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/debug_stub.go @@ -0,0 +1,7 @@ +// +build !lz4debug + +package lz4 + +const debugFlag = false + +func debug(args ...interface{}) {} diff --git a/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go new file mode 100644 index 0000000..43cc14f --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.go @@ -0,0 +1,8 @@ +// +build !appengine +// +build gc +// +build !noasm + +package lz4 + +//go:noescape +func decodeBlock(dst, src []byte) int diff --git a/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s new file mode 100644 index 0000000..20fef39 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/decode_amd64.s @@ -0,0 +1,375 @@ +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// AX scratch +// BX scratch +// CX scratch +// DX token +// +// DI &dst +// SI &src +// R8 &dst + len(dst) +// R9 &src + len(src) +// R11 &dst +// R12 short output end +// R13 short input end +// func decodeBlock(dst, src []byte) int +// using 50 bytes of stack currently +TEXT ·decodeBlock(SB), NOSPLIT, $64-56 + MOVQ dst_base+0(FP), DI + MOVQ DI, R11 + MOVQ dst_len+8(FP), R8 + ADDQ DI, R8 + + MOVQ src_base+24(FP), SI + MOVQ src_len+32(FP), R9 + ADDQ SI, R9 + + // shortcut ends + // short output end + MOVQ R8, R12 + SUBQ $32, R12 + // short input end + MOVQ R9, R13 + SUBQ $16, R13 + +loop: + // for si < len(src) + CMPQ SI, R9 + JGE end + + // token := uint32(src[si]) + MOVBQZX (SI), DX + INCQ SI + + // lit_len = token >> 4 + // if lit_len > 0 + // CX = lit_len + MOVQ DX, CX + SHRQ $4, CX + + // if lit_len != 0xF + CMPQ CX, $0xF + JEQ lit_len_loop_pre + CMPQ DI, R12 + JGE lit_len_loop_pre + CMPQ SI, R13 + JGE lit_len_loop_pre + + // copy shortcut + + // A two-stage shortcut for the most common case: + // 1) If the literal length is 0..14, and there is enough space, + // enter the shortcut and copy 16 bytes on behalf of the literals + // (in the fast mode, only 8 bytes can be safely copied this way). + // 2) Further if the match length is 4..18, copy 18 bytes in a similar + // manner; but we ensure that there's enough space in the output for + // those 18 bytes earlier, upon entering the shortcut (in other words, + // there is a combined check for both stages). + + // copy literal + MOVOU (SI), X0 + MOVOU X0, (DI) + ADDQ CX, DI + ADDQ CX, SI + + MOVQ DX, CX + ANDQ $0xF, CX + + // The second stage: prepare for match copying, decode full info. + // If it doesn't work out, the info won't be wasted. + // offset := uint16(data[:2]) + MOVWQZX (SI), DX + ADDQ $2, SI + + MOVQ DI, AX + SUBQ DX, AX + CMPQ AX, DI + JGT err_short_buf + + // if we can't do the second stage then jump straight to read the + // match length, we already have the offset. + CMPQ CX, $0xF + JEQ match_len_loop_pre + CMPQ DX, $8 + JLT match_len_loop_pre + CMPQ AX, R11 + JLT err_short_buf + + // memcpy(op + 0, match + 0, 8); + MOVQ (AX), BX + MOVQ BX, (DI) + // memcpy(op + 8, match + 8, 8); + MOVQ 8(AX), BX + MOVQ BX, 8(DI) + // memcpy(op +16, match +16, 2); + MOVW 16(AX), BX + MOVW BX, 16(DI) + + ADDQ $4, DI // minmatch + ADDQ CX, DI + + // shortcut complete, load next token + JMP loop + +lit_len_loop_pre: + // if lit_len > 0 + CMPQ CX, $0 + JEQ offset + CMPQ CX, $0xF + JNE copy_literal + +lit_len_loop: + // for src[si] == 0xFF + CMPB (SI), $0xFF + JNE lit_len_finalise + + // bounds check src[si+1] + MOVQ SI, AX + ADDQ $1, AX + CMPQ AX, R9 + JGT err_short_buf + + // lit_len += 0xFF + ADDQ $0xFF, CX + INCQ SI + JMP lit_len_loop + +lit_len_finalise: + // lit_len += int(src[si]) + // si++ + MOVBQZX (SI), AX + ADDQ AX, CX + INCQ SI + +copy_literal: + // bounds check src and dst + MOVQ SI, AX + ADDQ CX, AX + CMPQ AX, R9 + JGT err_short_buf + + MOVQ DI, AX + ADDQ CX, AX + CMPQ AX, R8 + JGT err_short_buf + + // whats a good cut off to call memmove? + CMPQ CX, $16 + JGT memmove_lit + + // if len(dst[di:]) < 16 + MOVQ R8, AX + SUBQ DI, AX + CMPQ AX, $16 + JLT memmove_lit + + // if len(src[si:]) < 16 + MOVQ R9, AX + SUBQ SI, AX + CMPQ AX, $16 + JLT memmove_lit + + MOVOU (SI), X0 + MOVOU X0, (DI) + + JMP finish_lit_copy + +memmove_lit: + // memmove(to, from, len) + MOVQ DI, 0(SP) + MOVQ SI, 8(SP) + MOVQ CX, 16(SP) + // spill + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) // need len to inc SI, DI after + MOVB DX, 48(SP) + CALL runtime·memmove(SB) + + // restore registers + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + MOVB 48(SP), DX + + // recalc initial values + MOVQ dst_base+0(FP), R8 + MOVQ R8, R11 + ADDQ dst_len+8(FP), R8 + MOVQ src_base+24(FP), R9 + ADDQ src_len+32(FP), R9 + MOVQ R8, R12 + SUBQ $32, R12 + MOVQ R9, R13 + SUBQ $16, R13 + +finish_lit_copy: + ADDQ CX, SI + ADDQ CX, DI + + CMPQ SI, R9 + JGE end + +offset: + // CX := mLen + // free up DX to use for offset + MOVQ DX, CX + + MOVQ SI, AX + ADDQ $2, AX + CMPQ AX, R9 + JGT err_short_buf + + // offset + // DX := int(src[si]) | int(src[si+1])<<8 + MOVWQZX (SI), DX + ADDQ $2, SI + + // 0 offset is invalid + CMPQ DX, $0 + JEQ err_corrupt + + ANDB $0xF, CX + +match_len_loop_pre: + // if mlen != 0xF + CMPB CX, $0xF + JNE copy_match + +match_len_loop: + // for src[si] == 0xFF + // lit_len += 0xFF + CMPB (SI), $0xFF + JNE match_len_finalise + + // bounds check src[si+1] + MOVQ SI, AX + ADDQ $1, AX + CMPQ AX, R9 + JGT err_short_buf + + ADDQ $0xFF, CX + INCQ SI + JMP match_len_loop + +match_len_finalise: + // lit_len += int(src[si]) + // si++ + MOVBQZX (SI), AX + ADDQ AX, CX + INCQ SI + +copy_match: + // mLen += minMatch + ADDQ $4, CX + + // check we have match_len bytes left in dst + // di+match_len < len(dst) + MOVQ DI, AX + ADDQ CX, AX + CMPQ AX, R8 + JGT err_short_buf + + // DX = offset + // CX = match_len + // BX = &dst + (di - offset) + MOVQ DI, BX + SUBQ DX, BX + + // check BX is within dst + // if BX < &dst + CMPQ BX, R11 + JLT err_short_buf + + // if offset + match_len < di + MOVQ BX, AX + ADDQ CX, AX + CMPQ DI, AX + JGT copy_interior_match + + // AX := len(dst[:di]) + // MOVQ DI, AX + // SUBQ R11, AX + + // copy 16 bytes at a time + // if di-offset < 16 copy 16-(di-offset) bytes to di + // then do the remaining + +copy_match_loop: + // for match_len >= 0 + // dst[di] = dst[i] + // di++ + // i++ + MOVB (BX), AX + MOVB AX, (DI) + INCQ DI + INCQ BX + DECQ CX + + CMPQ CX, $0 + JGT copy_match_loop + + JMP loop + +copy_interior_match: + CMPQ CX, $16 + JGT memmove_match + + // if len(dst[di:]) < 16 + MOVQ R8, AX + SUBQ DI, AX + CMPQ AX, $16 + JLT memmove_match + + MOVOU (BX), X0 + MOVOU X0, (DI) + + ADDQ CX, DI + JMP loop + +memmove_match: + // memmove(to, from, len) + MOVQ DI, 0(SP) + MOVQ BX, 8(SP) + MOVQ CX, 16(SP) + // spill + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) // need len to inc SI, DI after + CALL runtime·memmove(SB) + + // restore registers + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + + // recalc initial values + MOVQ dst_base+0(FP), R8 + MOVQ R8, R11 // TODO: make these sensible numbers + ADDQ dst_len+8(FP), R8 + MOVQ src_base+24(FP), R9 + ADDQ src_len+32(FP), R9 + MOVQ R8, R12 + SUBQ $32, R12 + MOVQ R9, R13 + SUBQ $16, R13 + + ADDQ CX, DI + JMP loop + +err_corrupt: + MOVQ $-1, ret+48(FP) + RET + +err_short_buf: + MOVQ $-2, ret+48(FP) + RET + +end: + SUBQ R11, DI + MOVQ DI, ret+48(FP) + RET diff --git a/examples/go/vendor/github.com/pierrec/lz4/decode_other.go b/examples/go/vendor/github.com/pierrec/lz4/decode_other.go new file mode 100644 index 0000000..919888e --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/decode_other.go @@ -0,0 +1,98 @@ +// +build !amd64 appengine !gc noasm + +package lz4 + +func decodeBlock(dst, src []byte) (ret int) { + const hasError = -2 + defer func() { + if recover() != nil { + ret = hasError + } + }() + + var si, di int + for { + // Literals and match lengths (token). + b := int(src[si]) + si++ + + // Literals. + if lLen := b >> 4; lLen > 0 { + switch { + case lLen < 0xF && si+16 < len(src): + // Shortcut 1 + // if we have enough room in src and dst, and the literals length + // is small enough (0..14) then copy all 16 bytes, even if not all + // are part of the literals. + copy(dst[di:], src[si:si+16]) + si += lLen + di += lLen + if mLen := b & 0xF; mLen < 0xF { + // Shortcut 2 + // if the match length (4..18) fits within the literals, then copy + // all 18 bytes, even if not all are part of the literals. + mLen += 4 + if offset := int(src[si]) | int(src[si+1])<<8; mLen <= offset { + i := di - offset + end := i + 18 + if end > len(dst) { + // The remaining buffer may not hold 18 bytes. + // See https://github.com/pierrec/lz4/issues/51. + end = len(dst) + } + copy(dst[di:], dst[i:end]) + si += 2 + di += mLen + continue + } + } + case lLen == 0xF: + for src[si] == 0xFF { + lLen += 0xFF + si++ + } + lLen += int(src[si]) + si++ + fallthrough + default: + copy(dst[di:di+lLen], src[si:si+lLen]) + si += lLen + di += lLen + } + } + if si >= len(src) { + return di + } + + offset := int(src[si]) | int(src[si+1])<<8 + if offset == 0 { + return hasError + } + si += 2 + + // Match. + mLen := b & 0xF + if mLen == 0xF { + for src[si] == 0xFF { + mLen += 0xFF + si++ + } + mLen += int(src[si]) + si++ + } + mLen += minMatch + + // Copy the match. + expanded := dst[di-offset:] + if mLen > offset { + // Efficiently copy the match dst[di-offset:di] into the dst slice. + bytesToCopy := offset * (mLen / offset) + for n := offset; n <= bytesToCopy+offset; n *= 2 { + copy(expanded[n:], expanded[:n]) + } + di += bytesToCopy + mLen -= bytesToCopy + } + di += copy(dst[di:di+mLen], expanded[:mLen]) + } +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/errors.go b/examples/go/vendor/github.com/pierrec/lz4/errors.go new file mode 100644 index 0000000..1c45d18 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/errors.go @@ -0,0 +1,30 @@ +package lz4 + +import ( + "errors" + "fmt" + "os" + rdebug "runtime/debug" +) + +var ( + // ErrInvalidSourceShortBuffer is returned by UncompressBlock or CompressBLock when a compressed + // block is corrupted or the destination buffer is not large enough for the uncompressed data. + ErrInvalidSourceShortBuffer = errors.New("lz4: invalid source or destination buffer too short") + // ErrInvalid is returned when reading an invalid LZ4 archive. + ErrInvalid = errors.New("lz4: bad magic number") + // ErrBlockDependency is returned when attempting to decompress an archive created with block dependency. + ErrBlockDependency = errors.New("lz4: block dependency not supported") + // ErrUnsupportedSeek is returned when attempting to Seek any way but forward from the current position. + ErrUnsupportedSeek = errors.New("lz4: can only seek forward from io.SeekCurrent") +) + +func recoverBlock(e *error) { + if r := recover(); r != nil && *e == nil { + if debugFlag { + fmt.Fprintln(os.Stderr, r) + rdebug.PrintStack() + } + *e = ErrInvalidSourceShortBuffer + } +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go b/examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go new file mode 100644 index 0000000..7a76a6b --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go @@ -0,0 +1,223 @@ +// Package xxh32 implements the very fast XXH hashing algorithm (32 bits version). +// (https://github.com/Cyan4973/XXH/) +package xxh32 + +import ( + "encoding/binary" +) + +const ( + prime1 uint32 = 2654435761 + prime2 uint32 = 2246822519 + prime3 uint32 = 3266489917 + prime4 uint32 = 668265263 + prime5 uint32 = 374761393 + + primeMask = 0xFFFFFFFF + prime1plus2 = uint32((uint64(prime1) + uint64(prime2)) & primeMask) // 606290984 + prime1minus = uint32((-int64(prime1)) & primeMask) // 1640531535 +) + +// XXHZero represents an xxhash32 object with seed 0. +type XXHZero struct { + v1 uint32 + v2 uint32 + v3 uint32 + v4 uint32 + totalLen uint64 + buf [16]byte + bufused int +} + +// Sum appends the current hash to b and returns the resulting slice. +// It does not change the underlying hash state. +func (xxh XXHZero) Sum(b []byte) []byte { + h32 := xxh.Sum32() + return append(b, byte(h32), byte(h32>>8), byte(h32>>16), byte(h32>>24)) +} + +// Reset resets the Hash to its initial state. +func (xxh *XXHZero) Reset() { + xxh.v1 = prime1plus2 + xxh.v2 = prime2 + xxh.v3 = 0 + xxh.v4 = prime1minus + xxh.totalLen = 0 + xxh.bufused = 0 +} + +// Size returns the number of bytes returned by Sum(). +func (xxh *XXHZero) Size() int { + return 4 +} + +// BlockSize gives the minimum number of bytes accepted by Write(). +func (xxh *XXHZero) BlockSize() int { + return 1 +} + +// Write adds input bytes to the Hash. +// It never returns an error. +func (xxh *XXHZero) Write(input []byte) (int, error) { + if xxh.totalLen == 0 { + xxh.Reset() + } + n := len(input) + m := xxh.bufused + + xxh.totalLen += uint64(n) + + r := len(xxh.buf) - m + if n < r { + copy(xxh.buf[m:], input) + xxh.bufused += len(input) + return n, nil + } + + p := 0 + // Causes compiler to work directly from registers instead of stack: + v1, v2, v3, v4 := xxh.v1, xxh.v2, xxh.v3, xxh.v4 + if m > 0 { + // some data left from previous update + copy(xxh.buf[xxh.bufused:], input[:r]) + xxh.bufused += len(input) - r + + // fast rotl(13) + buf := xxh.buf[:16] // BCE hint. + v1 = rol13(v1+binary.LittleEndian.Uint32(buf[:])*prime2) * prime1 + v2 = rol13(v2+binary.LittleEndian.Uint32(buf[4:])*prime2) * prime1 + v3 = rol13(v3+binary.LittleEndian.Uint32(buf[8:])*prime2) * prime1 + v4 = rol13(v4+binary.LittleEndian.Uint32(buf[12:])*prime2) * prime1 + p = r + xxh.bufused = 0 + } + + for n := n - 16; p <= n; p += 16 { + sub := input[p:][:16] //BCE hint for compiler + v1 = rol13(v1+binary.LittleEndian.Uint32(sub[:])*prime2) * prime1 + v2 = rol13(v2+binary.LittleEndian.Uint32(sub[4:])*prime2) * prime1 + v3 = rol13(v3+binary.LittleEndian.Uint32(sub[8:])*prime2) * prime1 + v4 = rol13(v4+binary.LittleEndian.Uint32(sub[12:])*prime2) * prime1 + } + xxh.v1, xxh.v2, xxh.v3, xxh.v4 = v1, v2, v3, v4 + + copy(xxh.buf[xxh.bufused:], input[p:]) + xxh.bufused += len(input) - p + + return n, nil +} + +// Sum32 returns the 32 bits Hash value. +func (xxh *XXHZero) Sum32() uint32 { + h32 := uint32(xxh.totalLen) + if h32 >= 16 { + h32 += rol1(xxh.v1) + rol7(xxh.v2) + rol12(xxh.v3) + rol18(xxh.v4) + } else { + h32 += prime5 + } + + p := 0 + n := xxh.bufused + buf := xxh.buf + for n := n - 4; p <= n; p += 4 { + h32 += binary.LittleEndian.Uint32(buf[p:p+4]) * prime3 + h32 = rol17(h32) * prime4 + } + for ; p < n; p++ { + h32 += uint32(buf[p]) * prime5 + h32 = rol11(h32) * prime1 + } + + h32 ^= h32 >> 15 + h32 *= prime2 + h32 ^= h32 >> 13 + h32 *= prime3 + h32 ^= h32 >> 16 + + return h32 +} + +// ChecksumZero returns the 32bits Hash value. +func ChecksumZero(input []byte) uint32 { + n := len(input) + h32 := uint32(n) + + if n < 16 { + h32 += prime5 + } else { + v1 := prime1plus2 + v2 := prime2 + v3 := uint32(0) + v4 := prime1minus + p := 0 + for n := n - 16; p <= n; p += 16 { + sub := input[p:][:16] //BCE hint for compiler + v1 = rol13(v1+binary.LittleEndian.Uint32(sub[:])*prime2) * prime1 + v2 = rol13(v2+binary.LittleEndian.Uint32(sub[4:])*prime2) * prime1 + v3 = rol13(v3+binary.LittleEndian.Uint32(sub[8:])*prime2) * prime1 + v4 = rol13(v4+binary.LittleEndian.Uint32(sub[12:])*prime2) * prime1 + } + input = input[p:] + n -= p + h32 += rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + } + + p := 0 + for n := n - 4; p <= n; p += 4 { + h32 += binary.LittleEndian.Uint32(input[p:p+4]) * prime3 + h32 = rol17(h32) * prime4 + } + for p < n { + h32 += uint32(input[p]) * prime5 + h32 = rol11(h32) * prime1 + p++ + } + + h32 ^= h32 >> 15 + h32 *= prime2 + h32 ^= h32 >> 13 + h32 *= prime3 + h32 ^= h32 >> 16 + + return h32 +} + +// Uint32Zero hashes x with seed 0. +func Uint32Zero(x uint32) uint32 { + h := prime5 + 4 + x*prime3 + h = rol17(h) * prime4 + h ^= h >> 15 + h *= prime2 + h ^= h >> 13 + h *= prime3 + h ^= h >> 16 + return h +} + +func rol1(u uint32) uint32 { + return u<<1 | u>>31 +} + +func rol7(u uint32) uint32 { + return u<<7 | u>>25 +} + +func rol11(u uint32) uint32 { + return u<<11 | u>>21 +} + +func rol12(u uint32) uint32 { + return u<<12 | u>>20 +} + +func rol13(u uint32) uint32 { + return u<<13 | u>>19 +} + +func rol17(u uint32) uint32 { + return u<<17 | u>>15 +} + +func rol18(u uint32) uint32 { + return u<<18 | u>>14 +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/lz4.go b/examples/go/vendor/github.com/pierrec/lz4/lz4.go new file mode 100644 index 0000000..a3284bd --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/lz4.go @@ -0,0 +1,116 @@ +// Package lz4 implements reading and writing lz4 compressed data (a frame), +// as specified in http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html. +// +// Although the block level compression and decompression functions are exposed and are fully compatible +// with the lz4 block format definition, they are low level and should not be used directly. +// For a complete description of an lz4 compressed block, see: +// http://fastcompression.blogspot.fr/2011/05/lz4-explained.html +// +// See https://github.com/Cyan4973/lz4 for the reference C implementation. +// +package lz4 + +import ( + "math/bits" + "sync" +) + +const ( + // Extension is the LZ4 frame file name extension + Extension = ".lz4" + // Version is the LZ4 frame format version + Version = 1 + + frameMagic uint32 = 0x184D2204 + frameSkipMagic uint32 = 0x184D2A50 + frameMagicLegacy uint32 = 0x184C2102 + + // The following constants are used to setup the compression algorithm. + minMatch = 4 // the minimum size of the match sequence size (4 bytes) + winSizeLog = 16 // LZ4 64Kb window size limit + winSize = 1 << winSizeLog + winMask = winSize - 1 // 64Kb window of previous data for dependent blocks + compressedBlockFlag = 1 << 31 + compressedBlockMask = compressedBlockFlag - 1 + + // hashLog determines the size of the hash table used to quickly find a previous match position. + // Its value influences the compression speed and memory usage, the lower the faster, + // but at the expense of the compression ratio. + // 16 seems to be the best compromise for fast compression. + hashLog = 16 + htSize = 1 << hashLog + + mfLimit = 10 + minMatch // The last match cannot start within the last 14 bytes. +) + +// map the block max size id with its value in bytes: 64Kb, 256Kb, 1Mb and 4Mb. +const ( + blockSize64K = 1 << (16 + 2*iota) + blockSize256K + blockSize1M + blockSize4M +) + +var ( + // Keep a pool of buffers for each valid block sizes. + bsMapValue = [...]*sync.Pool{ + newBufferPool(2 * blockSize64K), + newBufferPool(2 * blockSize256K), + newBufferPool(2 * blockSize1M), + newBufferPool(2 * blockSize4M), + } +) + +// newBufferPool returns a pool for buffers of the given size. +func newBufferPool(size int) *sync.Pool { + return &sync.Pool{ + New: func() interface{} { + return make([]byte, size) + }, + } +} + +// getBuffer returns a buffer to its pool. +func getBuffer(size int) []byte { + idx := blockSizeValueToIndex(size) - 4 + return bsMapValue[idx].Get().([]byte) +} + +// putBuffer returns a buffer to its pool. +func putBuffer(size int, buf []byte) { + if cap(buf) > 0 { + idx := blockSizeValueToIndex(size) - 4 + bsMapValue[idx].Put(buf[:cap(buf)]) + } +} +func blockSizeIndexToValue(i byte) int { + return 1 << (16 + 2*uint(i)) +} +func isValidBlockSize(size int) bool { + const blockSizeMask = blockSize64K | blockSize256K | blockSize1M | blockSize4M + + return size&blockSizeMask > 0 && bits.OnesCount(uint(size)) == 1 +} +func blockSizeValueToIndex(size int) byte { + return 4 + byte(bits.TrailingZeros(uint(size)>>16)/2) +} + +// Header describes the various flags that can be set on a Writer or obtained from a Reader. +// The default values match those of the LZ4 frame format definition +// (http://fastcompression.blogspot.com/2013/04/lz4-streaming-format-final.html). +// +// NB. in a Reader, in case of concatenated frames, the Header values may change between Read() calls. +// It is the caller's responsibility to check them if necessary. +type Header struct { + BlockChecksum bool // Compressed blocks checksum flag. + NoChecksum bool // Frame checksum flag. + BlockMaxSize int // Size of the uncompressed data block (one of [64KB, 256KB, 1MB, 4MB]). Default=4MB. + Size uint64 // Frame total size. It is _not_ computed by the Writer. + CompressionLevel int // Compression level (higher is better, use 0 for fastest compression). + done bool // Header processed flag (Read or Write and checked). +} + +// Reset reset internal status +func (h *Header) Reset() { + h.done = false +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go b/examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go new file mode 100644 index 0000000..9a0fb00 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/lz4_go1.10.go @@ -0,0 +1,29 @@ +//+build go1.10 + +package lz4 + +import ( + "fmt" + "strings" +) + +func (h Header) String() string { + var s strings.Builder + + s.WriteString(fmt.Sprintf("%T{", h)) + if h.BlockChecksum { + s.WriteString("BlockChecksum: true ") + } + if h.NoChecksum { + s.WriteString("NoChecksum: true ") + } + if bs := h.BlockMaxSize; bs != 0 && bs != 4<<20 { + s.WriteString(fmt.Sprintf("BlockMaxSize: %d ", bs)) + } + if l := h.CompressionLevel; l != 0 { + s.WriteString(fmt.Sprintf("CompressionLevel: %d ", l)) + } + s.WriteByte('}') + + return s.String() +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go b/examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go new file mode 100644 index 0000000..12c761a --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go @@ -0,0 +1,29 @@ +//+build !go1.10 + +package lz4 + +import ( + "bytes" + "fmt" +) + +func (h Header) String() string { + var s bytes.Buffer + + s.WriteString(fmt.Sprintf("%T{", h)) + if h.BlockChecksum { + s.WriteString("BlockChecksum: true ") + } + if h.NoChecksum { + s.WriteString("NoChecksum: true ") + } + if bs := h.BlockMaxSize; bs != 0 && bs != 4<<20 { + s.WriteString(fmt.Sprintf("BlockMaxSize: %d ", bs)) + } + if l := h.CompressionLevel; l != 0 { + s.WriteString(fmt.Sprintf("CompressionLevel: %d ", l)) + } + s.WriteByte('}') + + return s.String() +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/reader.go b/examples/go/vendor/github.com/pierrec/lz4/reader.go new file mode 100644 index 0000000..87dd72b --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/reader.go @@ -0,0 +1,335 @@ +package lz4 + +import ( + "encoding/binary" + "fmt" + "io" + "io/ioutil" + + "github.com/pierrec/lz4/internal/xxh32" +) + +// Reader implements the LZ4 frame decoder. +// The Header is set after the first call to Read(). +// The Header may change between Read() calls in case of concatenated frames. +type Reader struct { + Header + // Handler called when a block has been successfully read. + // It provides the number of bytes read. + OnBlockDone func(size int) + + buf [8]byte // Scrap buffer. + pos int64 // Current position in src. + src io.Reader // Source. + zdata []byte // Compressed data. + data []byte // Uncompressed data. + idx int // Index of unread bytes into data. + checksum xxh32.XXHZero // Frame hash. + skip int64 // Bytes to skip before next read. + dpos int64 // Position in dest +} + +// NewReader returns a new LZ4 frame decoder. +// No access to the underlying io.Reader is performed. +func NewReader(src io.Reader) *Reader { + r := &Reader{src: src} + return r +} + +// readHeader checks the frame magic number and parses the frame descriptoz. +// Skippable frames are supported even as a first frame although the LZ4 +// specifications recommends skippable frames not to be used as first frames. +func (z *Reader) readHeader(first bool) error { + defer z.checksum.Reset() + + buf := z.buf[:] + for { + magic, err := z.readUint32() + if err != nil { + z.pos += 4 + if !first && err == io.ErrUnexpectedEOF { + return io.EOF + } + return err + } + if magic == frameMagic { + break + } + if magic>>8 != frameSkipMagic>>8 { + return ErrInvalid + } + skipSize, err := z.readUint32() + if err != nil { + return err + } + z.pos += 4 + m, err := io.CopyN(ioutil.Discard, z.src, int64(skipSize)) + if err != nil { + return err + } + z.pos += m + } + + // Header. + if _, err := io.ReadFull(z.src, buf[:2]); err != nil { + return err + } + z.pos += 8 + + b := buf[0] + if v := b >> 6; v != Version { + return fmt.Errorf("lz4: invalid version: got %d; expected %d", v, Version) + } + if b>>5&1 == 0 { + return ErrBlockDependency + } + z.BlockChecksum = b>>4&1 > 0 + frameSize := b>>3&1 > 0 + z.NoChecksum = b>>2&1 == 0 + + bmsID := buf[1] >> 4 & 0x7 + if bmsID < 4 || bmsID > 7 { + return fmt.Errorf("lz4: invalid block max size ID: %d", bmsID) + } + bSize := blockSizeIndexToValue(bmsID - 4) + z.BlockMaxSize = bSize + + // Allocate the compressed/uncompressed buffers. + // The compressed buffer cannot exceed the uncompressed one. + if n := 2 * bSize; cap(z.zdata) < n { + z.zdata = make([]byte, n, n) + } + if debugFlag { + debug("header block max size id=%d size=%d", bmsID, bSize) + } + z.zdata = z.zdata[:bSize] + z.data = z.zdata[:cap(z.zdata)][bSize:] + z.idx = len(z.data) + + _, _ = z.checksum.Write(buf[0:2]) + + if frameSize { + buf := buf[:8] + if _, err := io.ReadFull(z.src, buf); err != nil { + return err + } + z.Size = binary.LittleEndian.Uint64(buf) + z.pos += 8 + _, _ = z.checksum.Write(buf) + } + + // Header checksum. + if _, err := io.ReadFull(z.src, buf[:1]); err != nil { + return err + } + z.pos++ + if h := byte(z.checksum.Sum32() >> 8 & 0xFF); h != buf[0] { + return fmt.Errorf("lz4: invalid header checksum: got %x; expected %x", buf[0], h) + } + + z.Header.done = true + if debugFlag { + debug("header read: %v", z.Header) + } + + return nil +} + +// Read decompresses data from the underlying source into the supplied buffer. +// +// Since there can be multiple streams concatenated, Header values may +// change between calls to Read(). If that is the case, no data is actually read from +// the underlying io.Reader, to allow for potential input buffer resizing. +func (z *Reader) Read(buf []byte) (int, error) { + if debugFlag { + debug("Read buf len=%d", len(buf)) + } + if !z.Header.done { + if err := z.readHeader(true); err != nil { + return 0, err + } + if debugFlag { + debug("header read OK compressed buffer %d / %d uncompressed buffer %d : %d index=%d", + len(z.zdata), cap(z.zdata), len(z.data), cap(z.data), z.idx) + } + } + + if len(buf) == 0 { + return 0, nil + } + + if z.idx == len(z.data) { + // No data ready for reading, process the next block. + if debugFlag { + debug("reading block from writer") + } + // Reset uncompressed buffer + z.data = z.zdata[:cap(z.zdata)][len(z.zdata):] + + // Block length: 0 = end of frame, highest bit set: uncompressed. + bLen, err := z.readUint32() + if err != nil { + return 0, err + } + z.pos += 4 + + if bLen == 0 { + // End of frame reached. + if !z.NoChecksum { + // Validate the frame checksum. + checksum, err := z.readUint32() + if err != nil { + return 0, err + } + if debugFlag { + debug("frame checksum got=%x / want=%x", z.checksum.Sum32(), checksum) + } + z.pos += 4 + if h := z.checksum.Sum32(); checksum != h { + return 0, fmt.Errorf("lz4: invalid frame checksum: got %x; expected %x", h, checksum) + } + } + + // Get ready for the next concatenated frame and keep the position. + pos := z.pos + z.Reset(z.src) + z.pos = pos + + // Since multiple frames can be concatenated, check for more. + return 0, z.readHeader(false) + } + + if debugFlag { + debug("raw block size %d", bLen) + } + if bLen&compressedBlockFlag > 0 { + // Uncompressed block. + bLen &= compressedBlockMask + if debugFlag { + debug("uncompressed block size %d", bLen) + } + if int(bLen) > cap(z.data) { + return 0, fmt.Errorf("lz4: invalid block size: %d", bLen) + } + z.data = z.data[:bLen] + if _, err := io.ReadFull(z.src, z.data); err != nil { + return 0, err + } + z.pos += int64(bLen) + if z.OnBlockDone != nil { + z.OnBlockDone(int(bLen)) + } + + if z.BlockChecksum { + checksum, err := z.readUint32() + if err != nil { + return 0, err + } + z.pos += 4 + + if h := xxh32.ChecksumZero(z.data); h != checksum { + return 0, fmt.Errorf("lz4: invalid block checksum: got %x; expected %x", h, checksum) + } + } + + } else { + // Compressed block. + if debugFlag { + debug("compressed block size %d", bLen) + } + if int(bLen) > cap(z.data) { + return 0, fmt.Errorf("lz4: invalid block size: %d", bLen) + } + zdata := z.zdata[:bLen] + if _, err := io.ReadFull(z.src, zdata); err != nil { + return 0, err + } + z.pos += int64(bLen) + + if z.BlockChecksum { + checksum, err := z.readUint32() + if err != nil { + return 0, err + } + z.pos += 4 + + if h := xxh32.ChecksumZero(zdata); h != checksum { + return 0, fmt.Errorf("lz4: invalid block checksum: got %x; expected %x", h, checksum) + } + } + + n, err := UncompressBlock(zdata, z.data) + if err != nil { + return 0, err + } + z.data = z.data[:n] + if z.OnBlockDone != nil { + z.OnBlockDone(n) + } + } + + if !z.NoChecksum { + _, _ = z.checksum.Write(z.data) + if debugFlag { + debug("current frame checksum %x", z.checksum.Sum32()) + } + } + z.idx = 0 + } + + if z.skip > int64(len(z.data[z.idx:])) { + z.skip -= int64(len(z.data[z.idx:])) + z.dpos += int64(len(z.data[z.idx:])) + z.idx = len(z.data) + return 0, nil + } + + z.idx += int(z.skip) + z.dpos += z.skip + z.skip = 0 + + n := copy(buf, z.data[z.idx:]) + z.idx += n + z.dpos += int64(n) + if debugFlag { + debug("copied %d bytes to input", n) + } + + return n, nil +} + +// Seek implements io.Seeker, but supports seeking forward from the current +// position only. Any other seek will return an error. Allows skipping output +// bytes which aren't needed, which in some scenarios is faster than reading +// and discarding them. +// Note this may cause future calls to Read() to read 0 bytes if all of the +// data they would have returned is skipped. +func (z *Reader) Seek(offset int64, whence int) (int64, error) { + if offset < 0 || whence != io.SeekCurrent { + return z.dpos + z.skip, ErrUnsupportedSeek + } + z.skip += offset + return z.dpos + z.skip, nil +} + +// Reset discards the Reader's state and makes it equivalent to the +// result of its original state from NewReader, but reading from r instead. +// This permits reusing a Reader rather than allocating a new one. +func (z *Reader) Reset(r io.Reader) { + z.Header = Header{} + z.pos = 0 + z.src = r + z.zdata = z.zdata[:0] + z.data = z.data[:0] + z.idx = 0 + z.checksum.Reset() +} + +// readUint32 reads an uint32 into the supplied buffer. +// The idea is to make use of the already allocated buffers avoiding additional allocations. +func (z *Reader) readUint32() (uint32, error) { + buf := z.buf[:4] + _, err := io.ReadFull(z.src, buf) + x := binary.LittleEndian.Uint32(buf) + return x, err +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go b/examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go new file mode 100644 index 0000000..1670a77 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/reader_legacy.go @@ -0,0 +1,207 @@ +package lz4 + +import ( + "encoding/binary" + "fmt" + "io" +) + +// ReaderLegacy implements the LZ4Demo frame decoder. +// The Header is set after the first call to Read(). +type ReaderLegacy struct { + Header + // Handler called when a block has been successfully read. + // It provides the number of bytes read. + OnBlockDone func(size int) + + lastBlock bool + buf [8]byte // Scrap buffer. + pos int64 // Current position in src. + src io.Reader // Source. + zdata []byte // Compressed data. + data []byte // Uncompressed data. + idx int // Index of unread bytes into data. + skip int64 // Bytes to skip before next read. + dpos int64 // Position in dest +} + +// NewReaderLegacy returns a new LZ4Demo frame decoder. +// No access to the underlying io.Reader is performed. +func NewReaderLegacy(src io.Reader) *ReaderLegacy { + r := &ReaderLegacy{src: src} + return r +} + +// readHeader checks the frame magic number and parses the frame descriptoz. +// Skippable frames are supported even as a first frame although the LZ4 +// specifications recommends skippable frames not to be used as first frames. +func (z *ReaderLegacy) readLegacyHeader() error { + z.lastBlock = false + magic, err := z.readUint32() + if err != nil { + z.pos += 4 + if err == io.ErrUnexpectedEOF { + return io.EOF + } + return err + } + if magic != frameMagicLegacy { + return ErrInvalid + } + z.pos += 4 + + // Legacy has fixed 8MB blocksizes + // https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md#legacy-frame + bSize := blockSize4M * 2 + + // Allocate the compressed/uncompressed buffers. + // The compressed buffer cannot exceed the uncompressed one. + if n := 2 * bSize; cap(z.zdata) < n { + z.zdata = make([]byte, n, n) + } + if debugFlag { + debug("header block max size size=%d", bSize) + } + z.zdata = z.zdata[:bSize] + z.data = z.zdata[:cap(z.zdata)][bSize:] + z.idx = len(z.data) + + z.Header.done = true + if debugFlag { + debug("header read: %v", z.Header) + } + + return nil +} + +// Read decompresses data from the underlying source into the supplied buffer. +// +// Since there can be multiple streams concatenated, Header values may +// change between calls to Read(). If that is the case, no data is actually read from +// the underlying io.Reader, to allow for potential input buffer resizing. +func (z *ReaderLegacy) Read(buf []byte) (int, error) { + if debugFlag { + debug("Read buf len=%d", len(buf)) + } + if !z.Header.done { + if err := z.readLegacyHeader(); err != nil { + return 0, err + } + if debugFlag { + debug("header read OK compressed buffer %d / %d uncompressed buffer %d : %d index=%d", + len(z.zdata), cap(z.zdata), len(z.data), cap(z.data), z.idx) + } + } + + if len(buf) == 0 { + return 0, nil + } + + if z.idx == len(z.data) { + // No data ready for reading, process the next block. + if debugFlag { + debug(" reading block from writer %d %d", z.idx, blockSize4M*2) + } + + // Reset uncompressed buffer + z.data = z.zdata[:cap(z.zdata)][len(z.zdata):] + + bLen, err := z.readUint32() + if err != nil { + return 0, err + } + if debugFlag { + debug(" bLen %d (0x%x) offset = %d (0x%x)", bLen, bLen, z.pos, z.pos) + } + z.pos += 4 + + // Legacy blocks are always compressed, even when detrimental + if debugFlag { + debug(" compressed block size %d", bLen) + } + + if int(bLen) > cap(z.data) { + return 0, fmt.Errorf("lz4: invalid block size: %d", bLen) + } + zdata := z.zdata[:bLen] + if _, err := io.ReadFull(z.src, zdata); err != nil { + return 0, err + } + z.pos += int64(bLen) + + n, err := UncompressBlock(zdata, z.data) + if err != nil { + return 0, err + } + + z.data = z.data[:n] + if z.OnBlockDone != nil { + z.OnBlockDone(n) + } + + z.idx = 0 + + // Legacy blocks are fixed to 8MB, if we read a decompressed block smaller than this + // it means we've reached the end... + if n < blockSize4M*2 { + z.lastBlock = true + } + } + + if z.skip > int64(len(z.data[z.idx:])) { + z.skip -= int64(len(z.data[z.idx:])) + z.dpos += int64(len(z.data[z.idx:])) + z.idx = len(z.data) + return 0, nil + } + + z.idx += int(z.skip) + z.dpos += z.skip + z.skip = 0 + + n := copy(buf, z.data[z.idx:]) + z.idx += n + z.dpos += int64(n) + if debugFlag { + debug("%v] copied %d bytes to input (%d:%d)", z.lastBlock, n, z.idx, len(z.data)) + } + if z.lastBlock && len(z.data) == z.idx { + return n, io.EOF + } + return n, nil +} + +// Seek implements io.Seeker, but supports seeking forward from the current +// position only. Any other seek will return an error. Allows skipping output +// bytes which aren't needed, which in some scenarios is faster than reading +// and discarding them. +// Note this may cause future calls to Read() to read 0 bytes if all of the +// data they would have returned is skipped. +func (z *ReaderLegacy) Seek(offset int64, whence int) (int64, error) { + if offset < 0 || whence != io.SeekCurrent { + return z.dpos + z.skip, ErrUnsupportedSeek + } + z.skip += offset + return z.dpos + z.skip, nil +} + +// Reset discards the Reader's state and makes it equivalent to the +// result of its original state from NewReader, but reading from r instead. +// This permits reusing a Reader rather than allocating a new one. +func (z *ReaderLegacy) Reset(r io.Reader) { + z.Header = Header{} + z.pos = 0 + z.src = r + z.zdata = z.zdata[:0] + z.data = z.data[:0] + z.idx = 0 +} + +// readUint32 reads an uint32 into the supplied buffer. +// The idea is to make use of the already allocated buffers avoiding additional allocations. +func (z *ReaderLegacy) readUint32() (uint32, error) { + buf := z.buf[:4] + _, err := io.ReadFull(z.src, buf) + x := binary.LittleEndian.Uint32(buf) + return x, err +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/writer.go b/examples/go/vendor/github.com/pierrec/lz4/writer.go new file mode 100644 index 0000000..f066d56 --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/writer.go @@ -0,0 +1,422 @@ +package lz4 + +import ( + "encoding/binary" + "fmt" + "io" + "runtime" + + "github.com/pierrec/lz4/internal/xxh32" +) + +// zResult contains the results of compressing a block. +type zResult struct { + size uint32 // Block header + data []byte // Compressed data + checksum uint32 // Data checksum +} + +// Writer implements the LZ4 frame encoder. +type Writer struct { + Header + // Handler called when a block has been successfully written out. + // It provides the number of bytes written. + OnBlockDone func(size int) + + buf [19]byte // magic number(4) + header(flags(2)+[Size(8)+DictID(4)]+checksum(1)) does not exceed 19 bytes + dst io.Writer // Destination. + checksum xxh32.XXHZero // Frame checksum. + data []byte // Data to be compressed + buffer for compressed data. + idx int // Index into data. + hashtable [winSize]int // Hash table used in CompressBlock(). + + // For concurrency. + c chan chan zResult // Channel for block compression goroutines and writer goroutine. + err error // Any error encountered while writing to the underlying destination. +} + +// NewWriter returns a new LZ4 frame encoder. +// No access to the underlying io.Writer is performed. +// The supplied Header is checked at the first Write. +// It is ok to change it before the first Write but then not until a Reset() is performed. +func NewWriter(dst io.Writer) *Writer { + z := new(Writer) + z.Reset(dst) + return z +} + +// WithConcurrency sets the number of concurrent go routines used for compression. +// A negative value sets the concurrency to GOMAXPROCS. +func (z *Writer) WithConcurrency(n int) *Writer { + switch { + case n == 0 || n == 1: + z.c = nil + return z + case n < 0: + n = runtime.GOMAXPROCS(0) + } + z.c = make(chan chan zResult, n) + // Writer goroutine managing concurrent block compression goroutines. + go func() { + // Process next block compression item. + for c := range z.c { + // Read the next compressed block result. + // Waiting here ensures that the blocks are output in the order they were sent. + // The incoming channel is always closed as it indicates to the caller that + // the block has been processed. + res := <-c + n := len(res.data) + if n == 0 { + // Notify the block compression routine that we are done with its result. + // This is used when a sentinel block is sent to terminate the compression. + close(c) + return + } + // Write the block. + if err := z.writeUint32(res.size); err != nil && z.err == nil { + z.err = err + } + if _, err := z.dst.Write(res.data); err != nil && z.err == nil { + z.err = err + } + if z.BlockChecksum { + if err := z.writeUint32(res.checksum); err != nil && z.err == nil { + z.err = err + } + } + // It is now safe to release the buffer as no longer in use by any goroutine. + putBuffer(cap(res.data), res.data) + if h := z.OnBlockDone; h != nil { + h(n) + } + close(c) + } + }() + return z +} + +// newBuffers instantiates new buffers which size matches the one in Header. +// The returned buffers are for decompression and compression respectively. +func (z *Writer) newBuffers() { + bSize := z.Header.BlockMaxSize + buf := getBuffer(bSize) + z.data = buf[:bSize] // Uncompressed buffer is the first half. +} + +// freeBuffers puts the writer's buffers back to the pool. +func (z *Writer) freeBuffers() { + // Put the buffer back into the pool, if any. + putBuffer(z.Header.BlockMaxSize, z.data) + z.data = nil +} + +// writeHeader builds and writes the header (magic+header) to the underlying io.Writer. +func (z *Writer) writeHeader() error { + // Default to 4Mb if BlockMaxSize is not set. + if z.Header.BlockMaxSize == 0 { + z.Header.BlockMaxSize = blockSize4M + } + // The only option that needs to be validated. + bSize := z.Header.BlockMaxSize + if !isValidBlockSize(z.Header.BlockMaxSize) { + return fmt.Errorf("lz4: invalid block max size: %d", bSize) + } + // Allocate the compressed/uncompressed buffers. + // The compressed buffer cannot exceed the uncompressed one. + z.newBuffers() + z.idx = 0 + + // Size is optional. + buf := z.buf[:] + + // Set the fixed size data: magic number, block max size and flags. + binary.LittleEndian.PutUint32(buf[0:], frameMagic) + flg := byte(Version << 6) + flg |= 1 << 5 // No block dependency. + if z.Header.BlockChecksum { + flg |= 1 << 4 + } + if z.Header.Size > 0 { + flg |= 1 << 3 + } + if !z.Header.NoChecksum { + flg |= 1 << 2 + } + buf[4] = flg + buf[5] = blockSizeValueToIndex(z.Header.BlockMaxSize) << 4 + + // Current buffer size: magic(4) + flags(1) + block max size (1). + n := 6 + // Optional items. + if z.Header.Size > 0 { + binary.LittleEndian.PutUint64(buf[n:], z.Header.Size) + n += 8 + } + + // The header checksum includes the flags, block max size and optional Size. + buf[n] = byte(xxh32.ChecksumZero(buf[4:n]) >> 8 & 0xFF) + z.checksum.Reset() + + // Header ready, write it out. + if _, err := z.dst.Write(buf[0 : n+1]); err != nil { + return err + } + z.Header.done = true + if debugFlag { + debug("wrote header %v", z.Header) + } + + return nil +} + +// Write compresses data from the supplied buffer into the underlying io.Writer. +// Write does not return until the data has been written. +func (z *Writer) Write(buf []byte) (int, error) { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return 0, err + } + } + if debugFlag { + debug("input buffer len=%d index=%d", len(buf), z.idx) + } + + zn := len(z.data) + var n int + for len(buf) > 0 { + if z.idx == 0 && len(buf) >= zn { + // Avoid a copy as there is enough data for a block. + if err := z.compressBlock(buf[:zn]); err != nil { + return n, err + } + n += zn + buf = buf[zn:] + continue + } + // Accumulate the data to be compressed. + m := copy(z.data[z.idx:], buf) + n += m + z.idx += m + buf = buf[m:] + if debugFlag { + debug("%d bytes copied to buf, current index %d", n, z.idx) + } + + if z.idx < len(z.data) { + // Buffer not filled. + if debugFlag { + debug("need more data for compression") + } + return n, nil + } + + // Buffer full. + if err := z.compressBlock(z.data); err != nil { + return n, err + } + z.idx = 0 + } + + return n, nil +} + +// compressBlock compresses a block. +func (z *Writer) compressBlock(data []byte) error { + if !z.NoChecksum { + _, _ = z.checksum.Write(data) + } + + if z.c != nil { + c := make(chan zResult) + z.c <- c // Send now to guarantee order + + // get a buffer from the pool and copy the data over + block := getBuffer(z.Header.BlockMaxSize)[:len(data)] + copy(block, data) + + go writerCompressBlock(c, z.Header, block) + return nil + } + + zdata := z.data[z.Header.BlockMaxSize:cap(z.data)] + // The compressed block size cannot exceed the input's. + var zn int + + if level := z.Header.CompressionLevel; level != 0 { + zn, _ = CompressBlockHC(data, zdata, level) + } else { + zn, _ = CompressBlock(data, zdata, z.hashtable[:]) + } + + var bLen uint32 + if debugFlag { + debug("block compression %d => %d", len(data), zn) + } + if zn > 0 && zn < len(data) { + // Compressible and compressed size smaller than uncompressed: ok! + bLen = uint32(zn) + zdata = zdata[:zn] + } else { + // Uncompressed block. + bLen = uint32(len(data)) | compressedBlockFlag + zdata = data + } + if debugFlag { + debug("block compression to be written len=%d data len=%d", bLen, len(zdata)) + } + + // Write the block. + if err := z.writeUint32(bLen); err != nil { + return err + } + written, err := z.dst.Write(zdata) + if err != nil { + return err + } + if h := z.OnBlockDone; h != nil { + h(written) + } + + if !z.BlockChecksum { + if debugFlag { + debug("current frame checksum %x", z.checksum.Sum32()) + } + return nil + } + checksum := xxh32.ChecksumZero(zdata) + if debugFlag { + debug("block checksum %x", checksum) + defer func() { debug("current frame checksum %x", z.checksum.Sum32()) }() + } + return z.writeUint32(checksum) +} + +// Flush flushes any pending compressed data to the underlying writer. +// Flush does not return until the data has been written. +// If the underlying writer returns an error, Flush returns that error. +func (z *Writer) Flush() error { + if debugFlag { + debug("flush with index %d", z.idx) + } + if z.idx == 0 { + return nil + } + + data := getBuffer(z.Header.BlockMaxSize)[:len(z.data[:z.idx])] + copy(data, z.data[:z.idx]) + + z.idx = 0 + if z.c == nil { + return z.compressBlock(data) + } + if !z.NoChecksum { + _, _ = z.checksum.Write(data) + } + c := make(chan zResult) + z.c <- c + writerCompressBlock(c, z.Header, data) + return nil +} + +func (z *Writer) close() error { + if z.c == nil { + return nil + } + // Send a sentinel block (no data to compress) to terminate the writer main goroutine. + c := make(chan zResult) + z.c <- c + c <- zResult{} + // Wait for the main goroutine to complete. + <-c + // At this point the main goroutine has shut down or is about to return. + z.c = nil + return z.err +} + +// Close closes the Writer, flushing any unwritten data to the underlying io.Writer, but does not close the underlying io.Writer. +func (z *Writer) Close() error { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return err + } + } + if err := z.Flush(); err != nil { + return err + } + if err := z.close(); err != nil { + return err + } + z.freeBuffers() + + if debugFlag { + debug("writing last empty block") + } + if err := z.writeUint32(0); err != nil { + return err + } + if z.NoChecksum { + return nil + } + checksum := z.checksum.Sum32() + if debugFlag { + debug("stream checksum %x", checksum) + } + return z.writeUint32(checksum) +} + +// Reset clears the state of the Writer z such that it is equivalent to its +// initial state from NewWriter, but instead writing to w. +// No access to the underlying io.Writer is performed. +func (z *Writer) Reset(w io.Writer) { + n := cap(z.c) + _ = z.close() + z.freeBuffers() + z.Header.Reset() + z.dst = w + z.checksum.Reset() + z.idx = 0 + z.err = nil + // reset hashtable to ensure deterministic output. + for i := range z.hashtable { + z.hashtable[i] = 0 + } + z.WithConcurrency(n) +} + +// writeUint32 writes a uint32 to the underlying writer. +func (z *Writer) writeUint32(x uint32) error { + buf := z.buf[:4] + binary.LittleEndian.PutUint32(buf, x) + _, err := z.dst.Write(buf) + return err +} + +// writerCompressBlock compresses data into a pooled buffer and writes its result +// out to the input channel. +func writerCompressBlock(c chan zResult, header Header, data []byte) { + zdata := getBuffer(header.BlockMaxSize) + // The compressed block size cannot exceed the input's. + var zn int + if level := header.CompressionLevel; level != 0 { + zn, _ = CompressBlockHC(data, zdata, level) + } else { + var hashTable [winSize]int + zn, _ = CompressBlock(data, zdata, hashTable[:]) + } + var res zResult + if zn > 0 && zn < len(data) { + res.size = uint32(zn) + res.data = zdata[:zn] + // release the uncompressed block since it is not used anymore + putBuffer(header.BlockMaxSize, data) + } else { + res.size = uint32(len(data)) | compressedBlockFlag + res.data = data + // release the compressed block since it was not used + putBuffer(header.BlockMaxSize, zdata) + } + if header.BlockChecksum { + res.checksum = xxh32.ChecksumZero(res.data) + } + c <- res +} diff --git a/examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go b/examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go new file mode 100644 index 0000000..ca8dc8c --- /dev/null +++ b/examples/go/vendor/github.com/pierrec/lz4/writer_legacy.go @@ -0,0 +1,182 @@ +package lz4 + +import ( + "encoding/binary" + "io" +) + +// WriterLegacy implements the LZ4Demo frame decoder. +type WriterLegacy struct { + Header + // Handler called when a block has been successfully read. + // It provides the number of bytes read. + OnBlockDone func(size int) + + dst io.Writer // Destination. + data []byte // Data to be compressed + buffer for compressed data. + idx int // Index into data. + hashtable [winSize]int // Hash table used in CompressBlock(). +} + +// NewWriterLegacy returns a new LZ4 encoder for the legacy frame format. +// No access to the underlying io.Writer is performed. +// The supplied Header is checked at the first Write. +// It is ok to change it before the first Write but then not until a Reset() is performed. +func NewWriterLegacy(dst io.Writer) *WriterLegacy { + z := new(WriterLegacy) + z.Reset(dst) + return z +} + +// Write compresses data from the supplied buffer into the underlying io.Writer. +// Write does not return until the data has been written. +func (z *WriterLegacy) Write(buf []byte) (int, error) { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return 0, err + } + } + if debugFlag { + debug("input buffer len=%d index=%d", len(buf), z.idx) + } + + zn := len(z.data) + var n int + for len(buf) > 0 { + if z.idx == 0 && len(buf) >= zn { + // Avoid a copy as there is enough data for a block. + if err := z.compressBlock(buf[:zn]); err != nil { + return n, err + } + n += zn + buf = buf[zn:] + continue + } + // Accumulate the data to be compressed. + m := copy(z.data[z.idx:], buf) + n += m + z.idx += m + buf = buf[m:] + if debugFlag { + debug("%d bytes copied to buf, current index %d", n, z.idx) + } + + if z.idx < len(z.data) { + // Buffer not filled. + if debugFlag { + debug("need more data for compression") + } + return n, nil + } + + // Buffer full. + if err := z.compressBlock(z.data); err != nil { + return n, err + } + z.idx = 0 + } + + return n, nil +} + +// writeHeader builds and writes the header to the underlying io.Writer. +func (z *WriterLegacy) writeHeader() error { + // Legacy has fixed 8MB blocksizes + // https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md#legacy-frame + bSize := 2 * blockSize4M + + buf := make([]byte, 2*bSize, 2*bSize) + z.data = buf[:bSize] // Uncompressed buffer is the first half. + + z.idx = 0 + + // Header consists of one mageic number, write it out. + if err := binary.Write(z.dst, binary.LittleEndian, frameMagicLegacy); err != nil { + return err + } + z.Header.done = true + if debugFlag { + debug("wrote header %v", z.Header) + } + + return nil +} + +// compressBlock compresses a block. +func (z *WriterLegacy) compressBlock(data []byte) error { + bSize := 2 * blockSize4M + zdata := z.data[bSize:cap(z.data)] + // The compressed block size cannot exceed the input's. + var zn int + + if level := z.Header.CompressionLevel; level != 0 { + zn, _ = CompressBlockHC(data, zdata, level) + } else { + zn, _ = CompressBlock(data, zdata, z.hashtable[:]) + } + + if debugFlag { + debug("block compression %d => %d", len(data), zn) + } + zdata = zdata[:zn] + + // Write the block. + if err := binary.Write(z.dst, binary.LittleEndian, uint32(zn)); err != nil { + return err + } + written, err := z.dst.Write(zdata) + if err != nil { + return err + } + if h := z.OnBlockDone; h != nil { + h(written) + } + return nil +} + +// Flush flushes any pending compressed data to the underlying writer. +// Flush does not return until the data has been written. +// If the underlying writer returns an error, Flush returns that error. +func (z *WriterLegacy) Flush() error { + if debugFlag { + debug("flush with index %d", z.idx) + } + if z.idx == 0 { + return nil + } + + data := z.data[:z.idx] + z.idx = 0 + return z.compressBlock(data) +} + +// Close closes the WriterLegacy, flushing any unwritten data to the underlying io.Writer, but does not close the underlying io.Writer. +func (z *WriterLegacy) Close() error { + if !z.Header.done { + if err := z.writeHeader(); err != nil { + return err + } + } + if err := z.Flush(); err != nil { + return err + } + + if debugFlag { + debug("writing last empty block") + } + + return nil +} + +// Reset clears the state of the WriterLegacy z such that it is equivalent to its +// initial state from NewWriterLegacy, but instead writing to w. +// No access to the underlying io.Writer is performed. +func (z *WriterLegacy) Reset(w io.Writer) { + z.Header.Reset() + z.dst = w + z.idx = 0 + // reset hashtable to ensure deterministic output. + for i := range z.hashtable { + z.hashtable[i] = 0 + } +} diff --git a/examples/go/vendor/github.com/pkg/errors/.gitignore b/examples/go/vendor/github.com/pkg/errors/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/examples/go/vendor/github.com/pkg/errors/.travis.yml b/examples/go/vendor/github.com/pkg/errors/.travis.yml new file mode 100644 index 0000000..9159de0 --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/.travis.yml @@ -0,0 +1,10 @@ +language: go +go_import_path: github.com/pkg/errors +go: + - 1.11.x + - 1.12.x + - 1.13.x + - tip + +script: + - make check diff --git a/examples/go/vendor/github.com/pkg/errors/LICENSE b/examples/go/vendor/github.com/pkg/errors/LICENSE new file mode 100644 index 0000000..835ba3e --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Dave Cheney +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/pkg/errors/Makefile b/examples/go/vendor/github.com/pkg/errors/Makefile new file mode 100644 index 0000000..ce9d7cd --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/Makefile @@ -0,0 +1,44 @@ +PKGS := github.com/pkg/errors +SRCDIRS := $(shell go list -f '{{.Dir}}' $(PKGS)) +GO := go + +check: test vet gofmt misspell unconvert staticcheck ineffassign unparam + +test: + $(GO) test $(PKGS) + +vet: | test + $(GO) vet $(PKGS) + +staticcheck: + $(GO) get honnef.co/go/tools/cmd/staticcheck + staticcheck -checks all $(PKGS) + +misspell: + $(GO) get github.com/client9/misspell/cmd/misspell + misspell \ + -locale GB \ + -error \ + *.md *.go + +unconvert: + $(GO) get github.com/mdempsky/unconvert + unconvert -v $(PKGS) + +ineffassign: + $(GO) get github.com/gordonklaus/ineffassign + find $(SRCDIRS) -name '*.go' | xargs ineffassign + +pedantic: check errcheck + +unparam: + $(GO) get mvdan.cc/unparam + unparam ./... + +errcheck: + $(GO) get github.com/kisielk/errcheck + errcheck $(PKGS) + +gofmt: + @echo Checking code is gofmted + @test -z "$(shell gofmt -s -l -d -e $(SRCDIRS) | tee /dev/stderr)" diff --git a/examples/go/vendor/github.com/pkg/errors/README.md b/examples/go/vendor/github.com/pkg/errors/README.md new file mode 100644 index 0000000..54dfdcb --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/README.md @@ -0,0 +1,59 @@ +# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) + +Package errors provides simple error handling primitives. + +`go get github.com/pkg/errors` + +The traditional error handling idiom in Go is roughly akin to +```go +if err != nil { + return err +} +``` +which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. + +## Adding context to an error + +The errors.Wrap function returns a new error that adds context to the original error. For example +```go +_, err := ioutil.ReadAll(r) +if err != nil { + return errors.Wrap(err, "read failed") +} +``` +## Retrieving the cause of an error + +Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. +```go +type causer interface { + Cause() error +} +``` +`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: +```go +switch err := errors.Cause(err).(type) { +case *MyError: + // handle specifically +default: + // unknown error +} +``` + +[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). + +## Roadmap + +With the upcoming [Go2 error proposals](https://go.googlesource.com/proposal/+/master/design/go2draft.md) this package is moving into maintenance mode. The roadmap for a 1.0 release is as follows: + +- 0.9. Remove pre Go 1.9 and Go 1.10 support, address outstanding pull requests (if possible) +- 1.0. Final release. + +## Contributing + +Because of the Go2 errors changes, this package is not accepting proposals for new functionality. With that said, we welcome pull requests, bug fixes and issue reports. + +Before sending a PR, please discuss your change by raising an issue. + +## License + +BSD-2-Clause diff --git a/examples/go/vendor/github.com/pkg/errors/appveyor.yml b/examples/go/vendor/github.com/pkg/errors/appveyor.yml new file mode 100644 index 0000000..a932ead --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/appveyor.yml @@ -0,0 +1,32 @@ +version: build-{build}.{branch} + +clone_folder: C:\gopath\src\github.com\pkg\errors +shallow_clone: true # for startup speed + +environment: + GOPATH: C:\gopath + +platform: + - x64 + +# http://www.appveyor.com/docs/installed-software +install: + # some helpful output for debugging builds + - go version + - go env + # pre-installed MinGW at C:\MinGW is 32bit only + # but MSYS2 at C:\msys64 has mingw64 + - set PATH=C:\msys64\mingw64\bin;%PATH% + - gcc --version + - g++ --version + +build_script: + - go install -v ./... + +test_script: + - set PATH=C:\gopath\bin;%PATH% + - go test -v ./... + +#artifacts: +# - path: '%GOPATH%\bin\*.exe' +deploy: off diff --git a/examples/go/vendor/github.com/pkg/errors/errors.go b/examples/go/vendor/github.com/pkg/errors/errors.go new file mode 100644 index 0000000..161aea2 --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/errors.go @@ -0,0 +1,288 @@ +// Package errors provides simple error handling primitives. +// +// The traditional error handling idiom in Go is roughly akin to +// +// if err != nil { +// return err +// } +// +// which when applied recursively up the call stack results in error reports +// without context or debugging information. The errors package allows +// programmers to add context to the failure path in their code in a way +// that does not destroy the original value of the error. +// +// Adding context to an error +// +// The errors.Wrap function returns a new error that adds context to the +// original error by recording a stack trace at the point Wrap is called, +// together with the supplied message. For example +// +// _, err := ioutil.ReadAll(r) +// if err != nil { +// return errors.Wrap(err, "read failed") +// } +// +// If additional control is required, the errors.WithStack and +// errors.WithMessage functions destructure errors.Wrap into its component +// operations: annotating an error with a stack trace and with a message, +// respectively. +// +// Retrieving the cause of an error +// +// Using errors.Wrap constructs a stack of errors, adding context to the +// preceding error. Depending on the nature of the error it may be necessary +// to reverse the operation of errors.Wrap to retrieve the original error +// for inspection. Any error value which implements this interface +// +// type causer interface { +// Cause() error +// } +// +// can be inspected by errors.Cause. errors.Cause will recursively retrieve +// the topmost error that does not implement causer, which is assumed to be +// the original cause. For example: +// +// switch err := errors.Cause(err).(type) { +// case *MyError: +// // handle specifically +// default: +// // unknown error +// } +// +// Although the causer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// Formatted printing of errors +// +// All error values returned from this package implement fmt.Formatter and can +// be formatted by the fmt package. The following verbs are supported: +// +// %s print the error. If the error has a Cause it will be +// printed recursively. +// %v see %s +// %+v extended format. Each Frame of the error's StackTrace will +// be printed in detail. +// +// Retrieving the stack trace of an error or wrapper +// +// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are +// invoked. This information can be retrieved with the following interface: +// +// type stackTracer interface { +// StackTrace() errors.StackTrace +// } +// +// The returned errors.StackTrace type is defined as +// +// type StackTrace []Frame +// +// The Frame type represents a call site in the stack trace. Frame supports +// the fmt.Formatter interface that can be used for printing information about +// the stack trace of this error. For example: +// +// if err, ok := err.(stackTracer); ok { +// for _, f := range err.StackTrace() { +// fmt.Printf("%+s:%d\n", f, f) +// } +// } +// +// Although the stackTracer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// See the documentation for Frame.Format for more details. +package errors + +import ( + "fmt" + "io" +) + +// New returns an error with the supplied message. +// New also records the stack trace at the point it was called. +func New(message string) error { + return &fundamental{ + msg: message, + stack: callers(), + } +} + +// Errorf formats according to a format specifier and returns the string +// as a value that satisfies error. +// Errorf also records the stack trace at the point it was called. +func Errorf(format string, args ...interface{}) error { + return &fundamental{ + msg: fmt.Sprintf(format, args...), + stack: callers(), + } +} + +// fundamental is an error that has a message and a stack, but no caller. +type fundamental struct { + msg string + *stack +} + +func (f *fundamental) Error() string { return f.msg } + +func (f *fundamental) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + io.WriteString(s, f.msg) + f.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, f.msg) + case 'q': + fmt.Fprintf(s, "%q", f.msg) + } +} + +// WithStack annotates err with a stack trace at the point WithStack was called. +// If err is nil, WithStack returns nil. +func WithStack(err error) error { + if err == nil { + return nil + } + return &withStack{ + err, + callers(), + } +} + +type withStack struct { + error + *stack +} + +func (w *withStack) Cause() error { return w.error } + +// Unwrap provides compatibility for Go 1.13 error chains. +func (w *withStack) Unwrap() error { return w.error } + +func (w *withStack) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v", w.Cause()) + w.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, w.Error()) + case 'q': + fmt.Fprintf(s, "%q", w.Error()) + } +} + +// Wrap returns an error annotating err with a stack trace +// at the point Wrap is called, and the supplied message. +// If err is nil, Wrap returns nil. +func Wrap(err error, message string) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: message, + } + return &withStack{ + err, + callers(), + } +} + +// Wrapf returns an error annotating err with a stack trace +// at the point Wrapf is called, and the format specifier. +// If err is nil, Wrapf returns nil. +func Wrapf(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } + return &withStack{ + err, + callers(), + } +} + +// WithMessage annotates err with a new message. +// If err is nil, WithMessage returns nil. +func WithMessage(err error, message string) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: message, + } +} + +// WithMessagef annotates err with the format specifier. +// If err is nil, WithMessagef returns nil. +func WithMessagef(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } +} + +type withMessage struct { + cause error + msg string +} + +func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } +func (w *withMessage) Cause() error { return w.cause } + +// Unwrap provides compatibility for Go 1.13 error chains. +func (w *withMessage) Unwrap() error { return w.cause } + +func (w *withMessage) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v\n", w.Cause()) + io.WriteString(s, w.msg) + return + } + fallthrough + case 's', 'q': + io.WriteString(s, w.Error()) + } +} + +// Cause returns the underlying cause of the error, if possible. +// An error value has a cause if it implements the following +// interface: +// +// type causer interface { +// Cause() error +// } +// +// If the error does not implement Cause, the original error will +// be returned. If the error is nil, nil will be returned without further +// investigation. +func Cause(err error) error { + type causer interface { + Cause() error + } + + for err != nil { + cause, ok := err.(causer) + if !ok { + break + } + err = cause.Cause() + } + return err +} diff --git a/examples/go/vendor/github.com/pkg/errors/go113.go b/examples/go/vendor/github.com/pkg/errors/go113.go new file mode 100644 index 0000000..be0d10d --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/go113.go @@ -0,0 +1,38 @@ +// +build go1.13 + +package errors + +import ( + stderrors "errors" +) + +// Is reports whether any error in err's chain matches target. +// +// The chain consists of err itself followed by the sequence of errors obtained by +// repeatedly calling Unwrap. +// +// An error is considered to match a target if it is equal to that target or if +// it implements a method Is(error) bool such that Is(target) returns true. +func Is(err, target error) bool { return stderrors.Is(err, target) } + +// As finds the first error in err's chain that matches target, and if so, sets +// target to that error value and returns true. +// +// The chain consists of err itself followed by the sequence of errors obtained by +// repeatedly calling Unwrap. +// +// An error matches target if the error's concrete value is assignable to the value +// pointed to by target, or if the error has a method As(interface{}) bool such that +// As(target) returns true. In the latter case, the As method is responsible for +// setting target. +// +// As will panic if target is not a non-nil pointer to either a type that implements +// error, or to any interface type. As returns false if err is nil. +func As(err error, target interface{}) bool { return stderrors.As(err, target) } + +// Unwrap returns the result of calling the Unwrap method on err, if err's +// type contains an Unwrap method returning error. +// Otherwise, Unwrap returns nil. +func Unwrap(err error) error { + return stderrors.Unwrap(err) +} diff --git a/examples/go/vendor/github.com/pkg/errors/stack.go b/examples/go/vendor/github.com/pkg/errors/stack.go new file mode 100644 index 0000000..779a834 --- /dev/null +++ b/examples/go/vendor/github.com/pkg/errors/stack.go @@ -0,0 +1,177 @@ +package errors + +import ( + "fmt" + "io" + "path" + "runtime" + "strconv" + "strings" +) + +// Frame represents a program counter inside a stack frame. +// For historical reasons if Frame is interpreted as a uintptr +// its value represents the program counter + 1. +type Frame uintptr + +// pc returns the program counter for this frame; +// multiple frames may have the same PC value. +func (f Frame) pc() uintptr { return uintptr(f) - 1 } + +// file returns the full path to the file that contains the +// function for this Frame's pc. +func (f Frame) file() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + file, _ := fn.FileLine(f.pc()) + return file +} + +// line returns the line number of source code of the +// function for this Frame's pc. +func (f Frame) line() int { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return 0 + } + _, line := fn.FileLine(f.pc()) + return line +} + +// name returns the name of this function, if known. +func (f Frame) name() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + return fn.Name() +} + +// Format formats the frame according to the fmt.Formatter interface. +// +// %s source file +// %d source line +// %n function name +// %v equivalent to %s:%d +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+s function name and path of source file relative to the compile time +// GOPATH separated by \n\t (\n\t) +// %+v equivalent to %+s:%d +func (f Frame) Format(s fmt.State, verb rune) { + switch verb { + case 's': + switch { + case s.Flag('+'): + io.WriteString(s, f.name()) + io.WriteString(s, "\n\t") + io.WriteString(s, f.file()) + default: + io.WriteString(s, path.Base(f.file())) + } + case 'd': + io.WriteString(s, strconv.Itoa(f.line())) + case 'n': + io.WriteString(s, funcname(f.name())) + case 'v': + f.Format(s, 's') + io.WriteString(s, ":") + f.Format(s, 'd') + } +} + +// MarshalText formats a stacktrace Frame as a text string. The output is the +// same as that of fmt.Sprintf("%+v", f), but without newlines or tabs. +func (f Frame) MarshalText() ([]byte, error) { + name := f.name() + if name == "unknown" { + return []byte(name), nil + } + return []byte(fmt.Sprintf("%s %s:%d", name, f.file(), f.line())), nil +} + +// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). +type StackTrace []Frame + +// Format formats the stack of Frames according to the fmt.Formatter interface. +// +// %s lists source files for each Frame in the stack +// %v lists the source file and line number for each Frame in the stack +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+v Prints filename, function, and line number for each Frame in the stack. +func (st StackTrace) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case s.Flag('+'): + for _, f := range st { + io.WriteString(s, "\n") + f.Format(s, verb) + } + case s.Flag('#'): + fmt.Fprintf(s, "%#v", []Frame(st)) + default: + st.formatSlice(s, verb) + } + case 's': + st.formatSlice(s, verb) + } +} + +// formatSlice will format this StackTrace into the given buffer as a slice of +// Frame, only valid when called with '%s' or '%v'. +func (st StackTrace) formatSlice(s fmt.State, verb rune) { + io.WriteString(s, "[") + for i, f := range st { + if i > 0 { + io.WriteString(s, " ") + } + f.Format(s, verb) + } + io.WriteString(s, "]") +} + +// stack represents a stack of program counters. +type stack []uintptr + +func (s *stack) Format(st fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case st.Flag('+'): + for _, pc := range *s { + f := Frame(pc) + fmt.Fprintf(st, "\n%+v", f) + } + } + } +} + +func (s *stack) StackTrace() StackTrace { + f := make([]Frame, len(*s)) + for i := 0; i < len(f); i++ { + f[i] = Frame((*s)[i]) + } + return f +} + +func callers() *stack { + const depth = 32 + var pcs [depth]uintptr + n := runtime.Callers(3, pcs[:]) + var st stack = pcs[0:n] + return &st +} + +// funcname removes the path prefix component of a function's name reported by func.Name(). +func funcname(name string) string { + i := strings.LastIndex(name, "/") + name = name[i+1:] + i = strings.Index(name, ".") + return name[i+1:] +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore new file mode 100644 index 0000000..a93cced --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.gitignore @@ -0,0 +1,6 @@ +certs/* +spec/spec +examples/simple-consumer/simple-consumer +examples/simple-producer/simple-producer + +.idea/ diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml new file mode 100644 index 0000000..4341bcf --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/.golangci.yml @@ -0,0 +1,3 @@ +run: + build-tags: + - integration diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md new file mode 100644 index 0000000..fd03c1f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md @@ -0,0 +1,363 @@ +# Changelog + +## [v1.10.0](https://github.com/rabbitmq/amqp091-go/tree/v1.10.0) (2024-05-08) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.9.0...v1.10.0) + +**Implemented enhancements:** + +- Undeprecate non-context publish functions [\#259](https://github.com/rabbitmq/amqp091-go/pull/259) ([Zerpet](https://github.com/Zerpet)) +- Update Go directive [\#257](https://github.com/rabbitmq/amqp091-go/pull/257) ([Zerpet](https://github.com/Zerpet)) + +**Fixed bugs:** + +- republishing on reconnect bug in the example [\#249](https://github.com/rabbitmq/amqp091-go/issues/249) +- Channel Notify Close not receive event when connection is closed by RMQ server. [\#241](https://github.com/rabbitmq/amqp091-go/issues/241) +- Inconsistent documentation [\#231](https://github.com/rabbitmq/amqp091-go/issues/231) +- Data race in the client example [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) +- Fix string function of URI [\#258](https://github.com/rabbitmq/amqp091-go/pull/258) ([Zerpet](https://github.com/Zerpet)) + +**Closed issues:** + +- Documentation needed \(`PublishWithContext` does not use context\) [\#195](https://github.com/rabbitmq/amqp091-go/issues/195) +- concurrent dispatch data race [\#226](https://github.com/rabbitmq/amqp091-go/issues/226) + +**Merged pull requests:** + +- Fix data race in example [\#260](https://github.com/rabbitmq/amqp091-go/pull/260) ([Zerpet](https://github.com/Zerpet)) +- Address CodeQL warning [\#252](https://github.com/rabbitmq/amqp091-go/pull/252) ([lukebakken](https://github.com/lukebakken)) +- Add support for additional AMQP URI query parameters [\#251](https://github.com/rabbitmq/amqp091-go/pull/251) ([vilius-g](https://github.com/vilius-g)) +- Example fix [\#250](https://github.com/rabbitmq/amqp091-go/pull/250) ([Boris-Plato](https://github.com/Boris-Plato)) +- Increasing the code coverage [\#248](https://github.com/rabbitmq/amqp091-go/pull/248) ([edercarloscosta](https://github.com/edercarloscosta)) +- Use correct mutex to guard confirms.published [\#240](https://github.com/rabbitmq/amqp091-go/pull/240) ([hjr265](https://github.com/hjr265)) +- Documenting Publishing.Expiration usage [\#232](https://github.com/rabbitmq/amqp091-go/pull/232) ([niksteff](https://github.com/niksteff)) +- fix comment typo in example\_client\_test.go [\#228](https://github.com/rabbitmq/amqp091-go/pull/228) ([wisaTong](https://github.com/wisaTong)) +- Bump go.uber.org/goleak from 1.2.1 to 1.3.0 [\#227](https://github.com/rabbitmq/amqp091-go/pull/227) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.9.0](https://github.com/rabbitmq/amqp091-go/tree/v1.9.0) (2023-10-02) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.8.1...v1.9.0) + +**Implemented enhancements:** + +- Use of buffered delivery channels when prefetch\_count is not null [\#200](https://github.com/rabbitmq/amqp091-go/issues/200) + +**Fixed bugs:** + +- connection block when write connection reset by peer [\#222](https://github.com/rabbitmq/amqp091-go/issues/222) +- Test failure on 32bit architectures [\#202](https://github.com/rabbitmq/amqp091-go/issues/202) + +**Closed issues:** + +- Add a constant to set consumer timeout as queue argument [\#201](https://github.com/rabbitmq/amqp091-go/issues/201) +- Add a constant for CQ version [\#199](https://github.com/rabbitmq/amqp091-go/issues/199) +- Examples may need to be updated after \#140 [\#153](https://github.com/rabbitmq/amqp091-go/issues/153) + +**Merged pull requests:** + +- Update spec091.go [\#224](https://github.com/rabbitmq/amqp091-go/pull/224) ([pinkfish](https://github.com/pinkfish)) +- Closes 222 [\#223](https://github.com/rabbitmq/amqp091-go/pull/223) ([yywing](https://github.com/yywing)) +- Update write.go [\#221](https://github.com/rabbitmq/amqp091-go/pull/221) ([pinkfish](https://github.com/pinkfish)) +- Bump versions [\#219](https://github.com/rabbitmq/amqp091-go/pull/219) ([lukebakken](https://github.com/lukebakken)) +- remove extra word 'accept' from ExchangeDeclare description [\#217](https://github.com/rabbitmq/amqp091-go/pull/217) ([a-sabzian](https://github.com/a-sabzian)) +- Misc Windows CI updates [\#216](https://github.com/rabbitmq/amqp091-go/pull/216) ([lukebakken](https://github.com/lukebakken)) +- Stop using deprecated Publish function [\#207](https://github.com/rabbitmq/amqp091-go/pull/207) ([Zerpet](https://github.com/Zerpet)) +- Constant for consumer timeout queue argument [\#206](https://github.com/rabbitmq/amqp091-go/pull/206) ([Zerpet](https://github.com/Zerpet)) +- Add a constant for CQ v2 queue argument [\#205](https://github.com/rabbitmq/amqp091-go/pull/205) ([Zerpet](https://github.com/Zerpet)) +- Fix example for 32-bit compatibility [\#204](https://github.com/rabbitmq/amqp091-go/pull/204) ([Zerpet](https://github.com/Zerpet)) +- Fix to increase timeout milliseconds since it's too tight [\#203](https://github.com/rabbitmq/amqp091-go/pull/203) ([t2y](https://github.com/t2y)) +- Add Channel.ConsumeWithContext to be able to cancel delivering [\#192](https://github.com/rabbitmq/amqp091-go/pull/192) ([t2y](https://github.com/t2y)) + +## [v1.8.1](https://github.com/rabbitmq/amqp091-go/tree/v1.8.1) (2023-05-04) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.8.0...v1.8.1) + +**Fixed bugs:** + +- Fixed incorrect version reported in client properties [52ce2efd03c53dcf77d5496977da46840e9abd24](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) + +**Merged pull requests:** + +- Fix Example Client not reconnecting [\#186](https://github.com/rabbitmq/amqp091-go/pull/186) ([frankfil](https://github.com/frankfil)) + +## [v1.8.0](https://github.com/rabbitmq/amqp091-go/tree/v1.8.0) (2023-03-21) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.7.0...v1.8.0) + +**Closed issues:** + +- memory leak [\#179](https://github.com/rabbitmq/amqp091-go/issues/179) +- the publishWithContext interface will not return when it times out [\#178](https://github.com/rabbitmq/amqp091-go/issues/178) + +**Merged pull requests:** + +- Fix race condition on confirms [\#183](https://github.com/rabbitmq/amqp091-go/pull/183) ([calloway-jacob](https://github.com/calloway-jacob)) +- Add a CloseDeadline function to Connection [\#181](https://github.com/rabbitmq/amqp091-go/pull/181) ([Zerpet](https://github.com/Zerpet)) +- Fix memory leaks [\#180](https://github.com/rabbitmq/amqp091-go/pull/180) ([GXKe](https://github.com/GXKe)) +- Bump go.uber.org/goleak from 1.2.0 to 1.2.1 [\#177](https://github.com/rabbitmq/amqp091-go/pull/177) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.7.0](https://github.com/rabbitmq/amqp091-go/tree/v1.7.0) (2023-02-09) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.1...v1.7.0) + +**Closed issues:** + +- \#31 resurfacing \(?\) [\#170](https://github.com/rabbitmq/amqp091-go/issues/170) +- Deprecate QueueInspect [\#167](https://github.com/rabbitmq/amqp091-go/issues/167) +- v1.6.0 causing rabbit connection errors [\#160](https://github.com/rabbitmq/amqp091-go/issues/160) + +**Merged pull requests:** + +- Set channels and allocator to nil in shutdown [\#172](https://github.com/rabbitmq/amqp091-go/pull/172) ([lukebakken](https://github.com/lukebakken)) +- Fix racing in Open [\#171](https://github.com/rabbitmq/amqp091-go/pull/171) ([Zerpet](https://github.com/Zerpet)) +- adding go 1.20 to tests [\#169](https://github.com/rabbitmq/amqp091-go/pull/169) ([halilylm](https://github.com/halilylm)) +- Deprecate the QueueInspect function [\#168](https://github.com/rabbitmq/amqp091-go/pull/168) ([lukebakken](https://github.com/lukebakken)) +- Check if channel is nil before updating it [\#150](https://github.com/rabbitmq/amqp091-go/pull/150) ([julienschmidt](https://github.com/julienschmidt)) + +## [v1.6.1](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1) (2023-02-01) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.1-rc.2...v1.6.1) + +**Merged pull requests:** + +- Update Makefile targets related to RabbitMQ [\#163](https://github.com/rabbitmq/amqp091-go/pull/163) ([Zerpet](https://github.com/Zerpet)) + +## [v1.6.1-rc.2](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1-rc.2) (2023-01-31) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.1-rc.1...v1.6.1-rc.2) + +**Merged pull requests:** + +- Do not overly protect writes [\#162](https://github.com/rabbitmq/amqp091-go/pull/162) ([lukebakken](https://github.com/lukebakken)) + +## [v1.6.1-rc.1](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1-rc.1) (2023-01-31) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.6.0...v1.6.1-rc.1) + +**Closed issues:** + +- Calling Channel\(\) on an empty connection panics [\#148](https://github.com/rabbitmq/amqp091-go/issues/148) + +**Merged pull requests:** + +- Ensure flush happens and correctly lock connection for a series of unflushed writes [\#161](https://github.com/rabbitmq/amqp091-go/pull/161) ([lukebakken](https://github.com/lukebakken)) + +## [v1.6.0](https://github.com/rabbitmq/amqp091-go/tree/v1.6.0) (2023-01-20) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.5.0...v1.6.0) + +**Implemented enhancements:** + +- Add constants for Queue arguments [\#145](https://github.com/rabbitmq/amqp091-go/pull/145) ([Zerpet](https://github.com/Zerpet)) + +**Closed issues:** + +- README not up to date [\#154](https://github.com/rabbitmq/amqp091-go/issues/154) +- Allow re-using default connection config \(custom properties\) [\#152](https://github.com/rabbitmq/amqp091-go/issues/152) +- Rename package name to amqp in V2 [\#151](https://github.com/rabbitmq/amqp091-go/issues/151) +- Helper types to declare quorum queues [\#144](https://github.com/rabbitmq/amqp091-go/issues/144) +- Inefficient use of buffers reduces potential throughput for basicPublish with small messages. [\#141](https://github.com/rabbitmq/amqp091-go/issues/141) +- bug, close cause panic [\#130](https://github.com/rabbitmq/amqp091-go/issues/130) +- Publishing Headers are unable to store Table with slice values [\#125](https://github.com/rabbitmq/amqp091-go/issues/125) +- Example client can deadlock in Close due to unconsumed confirmations [\#122](https://github.com/rabbitmq/amqp091-go/issues/122) +- SAC not working properly [\#106](https://github.com/rabbitmq/amqp091-go/issues/106) + +**Merged pull requests:** + +- Add automatic CHANGELOG.md generation [\#158](https://github.com/rabbitmq/amqp091-go/pull/158) ([lukebakken](https://github.com/lukebakken)) +- Supply library-defined props with NewConnectionProperties [\#157](https://github.com/rabbitmq/amqp091-go/pull/157) ([slagiewka](https://github.com/slagiewka)) +- Fix linter warnings [\#156](https://github.com/rabbitmq/amqp091-go/pull/156) ([Zerpet](https://github.com/Zerpet)) +- Remove outdated information from README [\#155](https://github.com/rabbitmq/amqp091-go/pull/155) ([scriptcoded](https://github.com/scriptcoded)) +- Add example producer using DeferredConfirm [\#149](https://github.com/rabbitmq/amqp091-go/pull/149) ([Zerpet](https://github.com/Zerpet)) +- Ensure code is formatted [\#147](https://github.com/rabbitmq/amqp091-go/pull/147) ([lukebakken](https://github.com/lukebakken)) +- Fix inefficient use of buffers that reduces the potential throughput of basicPublish [\#142](https://github.com/rabbitmq/amqp091-go/pull/142) ([fadams](https://github.com/fadams)) +- Do not embed context in DeferredConfirmation [\#140](https://github.com/rabbitmq/amqp091-go/pull/140) ([tie](https://github.com/tie)) +- Add constant for default exchange [\#139](https://github.com/rabbitmq/amqp091-go/pull/139) ([marlongerson](https://github.com/marlongerson)) +- Fix indentation and remove unnecessary instructions [\#138](https://github.com/rabbitmq/amqp091-go/pull/138) ([alraujo](https://github.com/alraujo)) +- Remove unnecessary instruction [\#135](https://github.com/rabbitmq/amqp091-go/pull/135) ([alraujo](https://github.com/alraujo)) +- Fix example client to avoid deadlock in Close [\#123](https://github.com/rabbitmq/amqp091-go/pull/123) ([Zerpet](https://github.com/Zerpet)) +- Bump go.uber.org/goleak from 1.1.12 to 1.2.0 [\#116](https://github.com/rabbitmq/amqp091-go/pull/116) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.5.0](https://github.com/rabbitmq/amqp091-go/tree/v1.5.0) (2022-09-07) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.4.0...v1.5.0) + +**Implemented enhancements:** + +- Provide a friendly way to set connection name [\#105](https://github.com/rabbitmq/amqp091-go/issues/105) + +**Closed issues:** + +- Support connection.update-secret [\#107](https://github.com/rabbitmq/amqp091-go/issues/107) +- Example Client: Implementation of a Consumer with reconnection support [\#40](https://github.com/rabbitmq/amqp091-go/issues/40) + +**Merged pull requests:** + +- use PublishWithContext instead of Publish [\#115](https://github.com/rabbitmq/amqp091-go/pull/115) ([Gsantomaggio](https://github.com/Gsantomaggio)) +- Add support for connection.update-secret [\#114](https://github.com/rabbitmq/amqp091-go/pull/114) ([Zerpet](https://github.com/Zerpet)) +- Remove warning on RabbitMQ tutorials in go [\#113](https://github.com/rabbitmq/amqp091-go/pull/113) ([ChunyiLyu](https://github.com/ChunyiLyu)) +- Update AMQP Spec [\#110](https://github.com/rabbitmq/amqp091-go/pull/110) ([Zerpet](https://github.com/Zerpet)) +- Add an example of reliable consumer [\#109](https://github.com/rabbitmq/amqp091-go/pull/109) ([Zerpet](https://github.com/Zerpet)) +- Add convenience function to set connection name [\#108](https://github.com/rabbitmq/amqp091-go/pull/108) ([Zerpet](https://github.com/Zerpet)) + +## [v1.4.0](https://github.com/rabbitmq/amqp091-go/tree/v1.4.0) (2022-07-19) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.4...v1.4.0) + +**Closed issues:** + +- target machine actively refused connection [\#99](https://github.com/rabbitmq/amqp091-go/issues/99) +- 504 channel/connection is not open error occurred in multiple connection with same rabbitmq service [\#97](https://github.com/rabbitmq/amqp091-go/issues/97) +- Add possible cancel of DeferredConfirmation [\#92](https://github.com/rabbitmq/amqp091-go/issues/92) +- Documentation [\#89](https://github.com/rabbitmq/amqp091-go/issues/89) +- Channel Close gets stuck after closing a connection \(via management UI\) [\#88](https://github.com/rabbitmq/amqp091-go/issues/88) +- this library has same issue [\#83](https://github.com/rabbitmq/amqp091-go/issues/83) +- Provide a logging interface [\#81](https://github.com/rabbitmq/amqp091-go/issues/81) +- 1.4.0 release checklist [\#77](https://github.com/rabbitmq/amqp091-go/issues/77) +- Data race in the client example [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) +- reader go routine hangs and leaks when Connection.Close\(\) is called multiple times [\#69](https://github.com/rabbitmq/amqp091-go/issues/69) +- Support auto-reconnect and cluster [\#65](https://github.com/rabbitmq/amqp091-go/issues/65) +- Connection/Channel Deadlock [\#32](https://github.com/rabbitmq/amqp091-go/issues/32) +- Closing connection and/or channel hangs NotifyPublish is used [\#21](https://github.com/rabbitmq/amqp091-go/issues/21) +- Consumer channel isn't closed in the event of unexpected disconnection [\#18](https://github.com/rabbitmq/amqp091-go/issues/18) + +**Merged pull requests:** + +- fix race condition with context close and confirm at the same time on DeferredConfirmation. [\#101](https://github.com/rabbitmq/amqp091-go/pull/101) ([sapk](https://github.com/sapk)) +- Add build TLS config from URI [\#98](https://github.com/rabbitmq/amqp091-go/pull/98) ([reddec](https://github.com/reddec)) +- Use context for Publish methods [\#96](https://github.com/rabbitmq/amqp091-go/pull/96) ([sapk](https://github.com/sapk)) +- Added function to get the remote peer's IP address \(conn.RemoteAddr\(\)\) [\#95](https://github.com/rabbitmq/amqp091-go/pull/95) ([rabb1t](https://github.com/rabb1t)) +- Update connection documentation [\#90](https://github.com/rabbitmq/amqp091-go/pull/90) ([Zerpet](https://github.com/Zerpet)) +- Revert test to demonstrate actual bug [\#87](https://github.com/rabbitmq/amqp091-go/pull/87) ([lukebakken](https://github.com/lukebakken)) +- Minor improvements to examples [\#86](https://github.com/rabbitmq/amqp091-go/pull/86) ([lukebakken](https://github.com/lukebakken)) +- Do not skip flaky test in CI [\#85](https://github.com/rabbitmq/amqp091-go/pull/85) ([lukebakken](https://github.com/lukebakken)) +- Add logging [\#84](https://github.com/rabbitmq/amqp091-go/pull/84) ([lukebakken](https://github.com/lukebakken)) +- Add a win32 build [\#82](https://github.com/rabbitmq/amqp091-go/pull/82) ([lukebakken](https://github.com/lukebakken)) +- channel: return nothing instead of always a nil-error in receive methods [\#80](https://github.com/rabbitmq/amqp091-go/pull/80) ([fho](https://github.com/fho)) +- update the contributing & readme files, improve makefile [\#79](https://github.com/rabbitmq/amqp091-go/pull/79) ([fho](https://github.com/fho)) +- Fix lint errors [\#78](https://github.com/rabbitmq/amqp091-go/pull/78) ([lukebakken](https://github.com/lukebakken)) +- ci: run golangci-lint [\#76](https://github.com/rabbitmq/amqp091-go/pull/76) ([fho](https://github.com/fho)) +- ci: run test via make & remove travis CI config [\#75](https://github.com/rabbitmq/amqp091-go/pull/75) ([fho](https://github.com/fho)) +- ci: run tests with race detector [\#74](https://github.com/rabbitmq/amqp091-go/pull/74) ([fho](https://github.com/fho)) +- Detect go routine leaks in integration testcases [\#73](https://github.com/rabbitmq/amqp091-go/pull/73) ([fho](https://github.com/fho)) +- connection: fix: reader go-routine is leaked on connection close [\#70](https://github.com/rabbitmq/amqp091-go/pull/70) ([fho](https://github.com/fho)) +- adding best practises for NotifyPublish for issue\_21 scenario [\#68](https://github.com/rabbitmq/amqp091-go/pull/68) ([DanielePalaia](https://github.com/DanielePalaia)) +- Update Go version [\#67](https://github.com/rabbitmq/amqp091-go/pull/67) ([Zerpet](https://github.com/Zerpet)) +- Regenerate certs with SHA256 to fix test with Go 1.18+ [\#66](https://github.com/rabbitmq/amqp091-go/pull/66) ([anthonyfok](https://github.com/anthonyfok)) + +## [v1.3.4](https://github.com/rabbitmq/amqp091-go/tree/v1.3.4) (2022-04-01) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.3...v1.3.4) + +**Merged pull requests:** + +- bump version to 1.3.4 [\#63](https://github.com/rabbitmq/amqp091-go/pull/63) ([DanielePalaia](https://github.com/DanielePalaia)) +- updating doc [\#62](https://github.com/rabbitmq/amqp091-go/pull/62) ([DanielePalaia](https://github.com/DanielePalaia)) + +## [v1.3.3](https://github.com/rabbitmq/amqp091-go/tree/v1.3.3) (2022-04-01) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.2...v1.3.3) + +**Closed issues:** + +- Add Client Version [\#49](https://github.com/rabbitmq/amqp091-go/issues/49) +- OpenTelemetry Propagation [\#22](https://github.com/rabbitmq/amqp091-go/issues/22) + +**Merged pull requests:** + +- bump buildVersion for release [\#61](https://github.com/rabbitmq/amqp091-go/pull/61) ([DanielePalaia](https://github.com/DanielePalaia)) +- adding documentation for notifyClose best pratices [\#60](https://github.com/rabbitmq/amqp091-go/pull/60) ([DanielePalaia](https://github.com/DanielePalaia)) +- adding documentation on NotifyClose of connection and channel to enfo… [\#59](https://github.com/rabbitmq/amqp091-go/pull/59) ([DanielePalaia](https://github.com/DanielePalaia)) + +## [v1.3.2](https://github.com/rabbitmq/amqp091-go/tree/v1.3.2) (2022-03-28) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.1...v1.3.2) + +**Closed issues:** + +- Potential race condition in Connection module [\#31](https://github.com/rabbitmq/amqp091-go/issues/31) + +**Merged pull requests:** + +- bump versioning to 1.3.2 [\#58](https://github.com/rabbitmq/amqp091-go/pull/58) ([DanielePalaia](https://github.com/DanielePalaia)) + +## [v1.3.1](https://github.com/rabbitmq/amqp091-go/tree/v1.3.1) (2022-03-25) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.3.0...v1.3.1) + +**Closed issues:** + +- Possible deadlock on DeferredConfirmation.Wait\(\) [\#46](https://github.com/rabbitmq/amqp091-go/issues/46) +- Call to Delivery.Ack blocks indefinitely in case of disconnection [\#19](https://github.com/rabbitmq/amqp091-go/issues/19) +- Unexpacted behavor of channel.IsClosed\(\) [\#14](https://github.com/rabbitmq/amqp091-go/issues/14) +- A possible dead lock in connection close notification Go channel [\#11](https://github.com/rabbitmq/amqp091-go/issues/11) + +**Merged pull requests:** + +- These ones were the ones testing Open scenarios. The issue is that Op… [\#57](https://github.com/rabbitmq/amqp091-go/pull/57) ([DanielePalaia](https://github.com/DanielePalaia)) +- changing defaultVersion to buildVersion and create a simple change\_ve… [\#54](https://github.com/rabbitmq/amqp091-go/pull/54) ([DanielePalaia](https://github.com/DanielePalaia)) +- adding integration test for issue 11 [\#50](https://github.com/rabbitmq/amqp091-go/pull/50) ([DanielePalaia](https://github.com/DanielePalaia)) +- Remove the old link product [\#48](https://github.com/rabbitmq/amqp091-go/pull/48) ([Gsantomaggio](https://github.com/Gsantomaggio)) +- Fix deadlock on DeferredConfirmations [\#47](https://github.com/rabbitmq/amqp091-go/pull/47) ([SpencerTorres](https://github.com/SpencerTorres)) +- Example client: Rename Stream\(\) to Consume\(\) to avoid confusion with RabbitMQ streams [\#39](https://github.com/rabbitmq/amqp091-go/pull/39) ([andygrunwald](https://github.com/andygrunwald)) +- Example client: Rename `name` to `queueName` to make the usage clear and explicit [\#38](https://github.com/rabbitmq/amqp091-go/pull/38) ([andygrunwald](https://github.com/andygrunwald)) +- Client example: Renamed concept "Session" to "Client" [\#37](https://github.com/rabbitmq/amqp091-go/pull/37) ([andygrunwald](https://github.com/andygrunwald)) +- delete unuseful code [\#36](https://github.com/rabbitmq/amqp091-go/pull/36) ([liutaot](https://github.com/liutaot)) +- Client Example: Fix closing order [\#35](https://github.com/rabbitmq/amqp091-go/pull/35) ([andygrunwald](https://github.com/andygrunwald)) +- Client example: Use instance logger instead of global logger [\#34](https://github.com/rabbitmq/amqp091-go/pull/34) ([andygrunwald](https://github.com/andygrunwald)) + +## [v1.3.0](https://github.com/rabbitmq/amqp091-go/tree/v1.3.0) (2022-01-13) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.2.0...v1.3.0) + +**Closed issues:** + +- documentation of changes triggering version updates [\#29](https://github.com/rabbitmq/amqp091-go/issues/29) +- Persistent messages folder [\#27](https://github.com/rabbitmq/amqp091-go/issues/27) + +**Merged pull requests:** + +- Expose a method to enable out-of-order Publisher Confirms [\#33](https://github.com/rabbitmq/amqp091-go/pull/33) ([benmoss](https://github.com/benmoss)) +- Fix Signed 8-bit headers being treated as unsigned [\#26](https://github.com/rabbitmq/amqp091-go/pull/26) ([alex-goodisman](https://github.com/alex-goodisman)) + +## [v1.2.0](https://github.com/rabbitmq/amqp091-go/tree/v1.2.0) (2021-11-17) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/v1.1.0...v1.2.0) + +**Closed issues:** + +- No access to this vhost [\#24](https://github.com/rabbitmq/amqp091-go/issues/24) +- copyright issue? [\#12](https://github.com/rabbitmq/amqp091-go/issues/12) +- A possible dead lock when publishing message with confirmation [\#10](https://github.com/rabbitmq/amqp091-go/issues/10) +- Semver release [\#7](https://github.com/rabbitmq/amqp091-go/issues/7) + +**Merged pull requests:** + +- Fix deadlock between publishing and receiving confirms [\#25](https://github.com/rabbitmq/amqp091-go/pull/25) ([benmoss](https://github.com/benmoss)) +- Add GetNextPublishSeqNo for channel in confirm mode [\#23](https://github.com/rabbitmq/amqp091-go/pull/23) ([kamal-github](https://github.com/kamal-github)) +- Added support for cert-only login without user and password [\#20](https://github.com/rabbitmq/amqp091-go/pull/20) ([mihaitodor](https://github.com/mihaitodor)) + +## [v1.1.0](https://github.com/rabbitmq/amqp091-go/tree/v1.1.0) (2021-09-21) + +[Full Changelog](https://github.com/rabbitmq/amqp091-go/compare/ebd83429aa8cb06fa569473f623e87675f96d3a9...v1.1.0) + +**Closed issues:** + +- AMQPLAIN authentication does not work [\#15](https://github.com/rabbitmq/amqp091-go/issues/15) + +**Merged pull requests:** + +- Fix AMQPLAIN authentication mechanism [\#16](https://github.com/rabbitmq/amqp091-go/pull/16) ([hodbn](https://github.com/hodbn)) +- connection: clarify documented behavior of NotifyClose [\#13](https://github.com/rabbitmq/amqp091-go/pull/13) ([pabigot](https://github.com/pabigot)) +- Add a link to pkg.go.dev API docs [\#9](https://github.com/rabbitmq/amqp091-go/pull/9) ([benmoss](https://github.com/benmoss)) +- add test go version 1.16.x and 1.17.x [\#8](https://github.com/rabbitmq/amqp091-go/pull/8) ([k4n4ry](https://github.com/k4n4ry)) +- fix typos [\#6](https://github.com/rabbitmq/amqp091-go/pull/6) ([h44z](https://github.com/h44z)) +- Heartbeat interval should be timeout/2 [\#5](https://github.com/rabbitmq/amqp091-go/pull/5) ([ifo20](https://github.com/ifo20)) +- Exporting Channel State [\#4](https://github.com/rabbitmq/amqp091-go/pull/4) ([eibrunorodrigues](https://github.com/eibrunorodrigues)) +- Add codeql analysis [\#3](https://github.com/rabbitmq/amqp091-go/pull/3) ([MirahImage](https://github.com/MirahImage)) +- Add PR github action. [\#2](https://github.com/rabbitmq/amqp091-go/pull/2) ([MirahImage](https://github.com/MirahImage)) +- Update Copyright Statement [\#1](https://github.com/rabbitmq/amqp091-go/pull/1) ([rlewis24](https://github.com/rlewis24)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..24b5675 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md @@ -0,0 +1,77 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in RabbitMQ Operator project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at oss-coc@vmware.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq + diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md new file mode 100644 index 0000000..ec86fe5 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md @@ -0,0 +1,62 @@ +# Contributing + +## Workflow + +Here is the recommended workflow: + +1. Fork this repository, **github.com/rabbitmq/amqp091-go** +1. Create your feature branch (`git checkout -b my-new-feature`) +1. Run Static Checks +1. Run integration tests (see below) +1. **Implement tests** +1. Implement fixes +1. Commit your changes. Use a [good, descriptive, commit message][good-commit]. +1. Push to a branch (`git push -u origin my-new-feature`) +1. Submit a pull request + +[good-commit]: https://cbea.ms/git-commit/ + +## Running Static Checks + +golangci-lint must be installed to run the static checks. See [installation +docs](https://golangci-lint.run/usage/install/) for more information. + +The static checks can be run via: + +```shell +make checks +``` + +## Running Tests + +### Integration Tests + +Running the Integration tests require: + +* A running RabbitMQ node with all defaults: + [https://www.rabbitmq.com/download.html](https://www.rabbitmq.com/download.html) +* That the server is either reachable via `amqp://guest:guest@127.0.0.1:5672/` + or the environment variable `AMQP_URL` set to it's URL + (e.g.: `export AMQP_URL="amqp://guest:verysecretpasswd@rabbitmq-host:5772/`) + +The integration tests can be run via: + +```shell +make tests +``` + +Some tests require access to `rabbitmqctl` CLI. Use the environment variable +`RABBITMQ_RABBITMQCTL_PATH=/some/path/to/rabbitmqctl` to run those tests. + +If you have Docker available in your machine, you can run: + +```shell +make tests-docker +``` + +This target will start a RabbitMQ container, run the test suite with the environment +variable setup, and stop RabbitMQ container after a successful run. + +All integration tests should use the `integrationConnection(...)` test +helpers defined in `integration_test.go` to setup the integration environment +and logging. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE b/examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE new file mode 100644 index 0000000..72fa55e --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/LICENSE @@ -0,0 +1,25 @@ +AMQP 0-9-1 Go Client +Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. + +Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile b/examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile new file mode 100644 index 0000000..7dc71bc --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/Makefile @@ -0,0 +1,57 @@ +.DEFAULT_GOAL := list + +# Insert a comment starting with '##' after a target, and it will be printed by 'make' and 'make list' +.PHONY: list +list: ## list Makefile targets + @echo "The most used targets: \n" + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' + +.PHONY: check-fmt +check-fmt: ## Ensure code is formatted + gofmt -l -d . # For the sake of debugging + test -z "$$(gofmt -l .)" + +.PHONY: fmt +fmt: ## Run go fmt against code + go fmt ./... + +.PHONY: tests +tests: ## Run all tests and requires a running rabbitmq-server. Use GO_TEST_FLAGS to add extra flags to go test + go test -race -v -tags integration $(GO_TEST_FLAGS) + +.PHONY: tests-docker +tests-docker: rabbitmq-server + RABBITMQ_RABBITMQCTL_PATH="DOCKER:$(CONTAINER_NAME)" go test -race -v -tags integration $(GO_TEST_FLAGS) + $(MAKE) stop-rabbitmq-server + +.PHONY: check +check: + golangci-lint run ./... + +CONTAINER_NAME ?= amqp091-go-rabbitmq + +.PHONY: rabbitmq-server +rabbitmq-server: ## Start a RabbitMQ server using Docker. Container name can be customised with CONTAINER_NAME=some-rabbit + docker run --detach --rm --name $(CONTAINER_NAME) \ + --publish 5672:5672 --publish 15672:15672 \ + --pull always rabbitmq:3-management + +.PHONY: stop-rabbitmq-server +stop-rabbitmq-server: ## Stop a RabbitMQ server using Docker. Container name can be customised with CONTAINER_NAME=some-rabbit + docker stop $(CONTAINER_NAME) + +certs: + ./certs.sh + +.PHONY: certs-rm +certs-rm: + rm -r ./certs/ + +.PHONY: rabbitmq-server-tls +rabbitmq-server-tls: | certs ## Start a RabbitMQ server using Docker. Container name can be customised with CONTAINER_NAME=some-rabbit + docker run --detach --rm --name $(CONTAINER_NAME) \ + --publish 5672:5672 --publish 5671:5671 --publish 15672:15672 \ + --mount type=bind,src=./certs/server,dst=/certs \ + --mount type=bind,src=./certs/ca/cacert.pem,dst=/certs/cacert.pem,readonly \ + --mount type=bind,src=./rabbitmq-confs/tls/90-tls.conf,dst=/etc/rabbitmq/conf.d/90-tls.conf \ + --pull always rabbitmq:3-management diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md new file mode 100644 index 0000000..6d3143f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md @@ -0,0 +1,105 @@ +# Go RabbitMQ Client Library + +[![amqp091-go](https://github.com/rabbitmq/amqp091-go/actions/workflows/tests.yml/badge.svg)](https://github.com/rabbitmq/amqp091-go/actions/workflows/tests.yml) +[![Go Reference](https://pkg.go.dev/badge/github.com/rabbitmq/amqp091-go.svg)](https://pkg.go.dev/github.com/rabbitmq/amqp091-go) +[![Go Report Card](https://goreportcard.com/badge/github.com/rabbitmq/amqp091-go)](https://goreportcard.com/report/github.com/rabbitmq/amqp091-go) + +This is a Go AMQP 0.9.1 client maintained by the [RabbitMQ core team](https://github.com/rabbitmq). +It was [originally developed by Sean Treadway](https://github.com/streadway/amqp). + +## Differences from streadway/amqp + +Some things are different compared to the original client, +others haven't changed. + +### Package Name + +This library uses a different package name. If moving from `streadway/amqp`, +using an alias may reduce the number of changes needed: + +``` go +amqp "github.com/rabbitmq/amqp091-go" +``` + +### License + +This client uses the same 2-clause BSD license as the original project. + +### Public API Evolution + + This client retains key API elements as practically possible. + It is, however, open to reasonable breaking public API changes suggested by the community. + We don't have the "no breaking public API changes ever" rule and fully recognize + that a good client API evolves over time. + + +## Project Maturity + +This project is based on a mature Go client that's been around for over a decade. + + +## Supported Go Versions + +This client supports two most recent Go release series. + + +## Supported RabbitMQ Versions + +This project supports RabbitMQ versions starting with `2.0` but primarily tested +against [currently supported RabbitMQ release series](https://www.rabbitmq.com/versions.html). + +Some features and behaviours may be server version-specific. + +## Goals + +Provide a functional interface that closely represents the AMQP 0.9.1 model +targeted to RabbitMQ as a server. This includes the minimum necessary to +interact the semantics of the protocol. + +## Non-goals + +Things not intended to be supported. + + * Auto reconnect and re-synchronization of client and server topologies. + * Reconnection would require understanding the error paths when the + topology cannot be declared on reconnect. This would require a new set + of types and code paths that are best suited at the call-site of this + package. AMQP has a dynamic topology that needs all peers to agree. If + this doesn't happen, the behavior is undefined. Instead of producing a + possible interface with undefined behavior, this package is designed to + be simple for the caller to implement the necessary connection-time + topology declaration so that reconnection is trivial and encapsulated in + the caller's application code. + * AMQP Protocol negotiation for forward or backward compatibility. + * 0.9.1 is stable and widely deployed. AMQP 1.0 is a divergent + specification (a different protocol) and belongs to a different library. + * Anything other than PLAIN and EXTERNAL authentication mechanisms. + * Keeping the mechanisms interface modular makes it possible to extend + outside of this package. If other mechanisms prove to be popular, then + we would accept patches to include them in this package. + * Support for [`basic.return` and `basic.ack` frame ordering](https://www.rabbitmq.com/confirms.html#when-publishes-are-confirmed). + This client uses Go channels for certain protocol events and ordering between + events sent to two different channels generally cannot be guaranteed. + +## Usage + +See the [_examples](_examples) subdirectory for simple producers and consumers executables. +If you have a use-case in mind which isn't well-represented by the examples, +please file an issue. + +## Documentation + + * [Godoc API reference](http://godoc.org/github.com/rabbitmq/amqp091-go) + * [RabbitMQ tutorials in Go](https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/go) + +## Contributing + +Pull requests are very much welcomed. Create your pull request on a non-main +branch, make sure a test or example is included that covers your change, and +your commits represent coherent changes that include a reason for the change. + +See [CONTRIBUTING.md](CONTRIBUTING.md) for more information. + +## License + +BSD 2 clause, see LICENSE for more details. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md new file mode 100644 index 0000000..1378d68 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md @@ -0,0 +1,16 @@ +# Guide to release a new version + +1. Update the `buildVersion` constant in [connection.go](https://github.com/rabbitmq/amqp091-go/blob/4886c35d10b273bd374e3ed2356144ad41d27940/connection.go#L31) +2. Commit and push. Include the version in the commit message e.g. [this commit](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) +3. Create a new [GitHub Release](https://github.com/rabbitmq/amqp091-go/releases). Create a new tag as `v..` + 1. Use auto-generate release notes feature in GitHub +4. Generate the change log, see [Changelog Generation](#changelog-generation) +5. Review the changelog. Watch out for issues closed as "not-fixed" or without a PR +6. Commit and Push. Pro-tip: include `[skip ci]` in the commit message to skip the CI run, since it's only documentation +7. Send an announcement to the mailing list. Take inspiration from [this message](https://groups.google.com/g/rabbitmq-users/c/EBGYGOWiSgs/m/0sSFuAGICwAJ) + +## Changelog Generation + +``` +github_changelog_generator --token GITHUB-TOKEN -u rabbitmq -p amqp091-go --no-unreleased --release-branch main +``` diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go new file mode 100644 index 0000000..f2925e7 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/allocator.go @@ -0,0 +1,119 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bytes" + "fmt" + "math/big" +) + +const ( + free = 0 + allocated = 1 +) + +// allocator maintains a bitset of allocated numbers. +type allocator struct { + pool *big.Int + follow int + low int + high int +} + +// NewAllocator reserves and frees integers out of a range between low and +// high. +// +// O(N) worst case space used, where N is maximum allocated, divided by +// sizeof(big.Word) +func newAllocator(low, high int) *allocator { + return &allocator{ + pool: big.NewInt(0), + follow: low, + low: low, + high: high, + } +} + +// String returns a string describing the contents of the allocator like +// "allocator[low..high] reserved..until" +// +// O(N) where N is high-low +func (a allocator) String() string { + b := &bytes.Buffer{} + fmt.Fprintf(b, "allocator[%d..%d]", a.low, a.high) + + for low := a.low; low <= a.high; low++ { + high := low + for a.reserved(high) && high <= a.high { + high++ + } + + if high > low+1 { + fmt.Fprintf(b, " %d..%d", low, high-1) + } else if high > low { + fmt.Fprintf(b, " %d", high-1) + } + + low = high + } + return b.String() +} + +// Next reserves and returns the next available number out of the range between +// low and high. If no number is available, false is returned. +// +// O(N) worst case runtime where N is allocated, but usually O(1) due to a +// rolling index into the oldest allocation. +func (a *allocator) next() (int, bool) { + wrapped := a.follow + defer func() { + // make a.follow point to next value + if a.follow == a.high { + a.follow = a.low + } else { + a.follow += 1 + } + }() + + // Find trailing bit + for ; a.follow <= a.high; a.follow++ { + if a.reserve(a.follow) { + return a.follow, true + } + } + + // Find preceding free'd pool + a.follow = a.low + + for ; a.follow < wrapped; a.follow++ { + if a.reserve(a.follow) { + return a.follow, true + } + } + + return 0, false +} + +// reserve claims the bit if it is not already claimed, returning true if +// successfully claimed. +func (a *allocator) reserve(n int) bool { + if a.reserved(n) { + return false + } + a.pool.SetBit(a.pool, n-a.low, allocated) + return true +} + +// reserved returns true if the integer has been allocated +func (a *allocator) reserved(n int) bool { + return a.pool.Bit(n-a.low) == allocated +} + +// release frees the use of the number for another allocation +func (a *allocator) release(n int) { + a.pool.SetBit(a.pool, n-a.low, free) +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go new file mode 100644 index 0000000..0c07bb3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/auth.go @@ -0,0 +1,83 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bytes" + "fmt" +) + +// Authentication interface provides a means for different SASL authentication +// mechanisms to be used during connection tuning. +type Authentication interface { + Mechanism() string + Response() string +} + +// PlainAuth is a similar to Basic Auth in HTTP. +type PlainAuth struct { + Username string + Password string +} + +// Mechanism returns "PLAIN" +func (auth *PlainAuth) Mechanism() string { + return "PLAIN" +} + +// Response returns the null character delimited encoding for the SASL PLAIN Mechanism. +func (auth *PlainAuth) Response() string { + return fmt.Sprintf("\000%s\000%s", auth.Username, auth.Password) +} + +// AMQPlainAuth is similar to PlainAuth +type AMQPlainAuth struct { + Username string + Password string +} + +// Mechanism returns "AMQPLAIN" +func (auth *AMQPlainAuth) Mechanism() string { + return "AMQPLAIN" +} + +// Response returns an AMQP encoded credentials table, without the field table size. +func (auth *AMQPlainAuth) Response() string { + var buf bytes.Buffer + table := Table{"LOGIN": auth.Username, "PASSWORD": auth.Password} + if err := writeTable(&buf, table); err != nil { + return "" + } + return buf.String()[4:] +} + +// ExternalAuth for RabbitMQ-auth-mechanism-ssl. +type ExternalAuth struct { +} + +// Mechanism returns "EXTERNAL" +func (*ExternalAuth) Mechanism() string { + return "EXTERNAL" +} + +// Response returns an AMQP encoded credentials table, without the field table size. +func (*ExternalAuth) Response() string { + return "\000*\000*" +} + +// Finds the first mechanism preferred by the client that the server supports. +func pickSASLMechanism(client []Authentication, serverMechanisms []string) (auth Authentication, ok bool) { + + for _, auth = range client { + for _, mech := range serverMechanisms { + if auth.Mechanism() == mech { + return auth, true + } + } + } + + return +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh b/examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh new file mode 100644 index 0000000..0bbb1c6 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/certs.sh @@ -0,0 +1,159 @@ +#!/bin/sh +# +# Creates the CA, server and client certs to be used by tls_test.go +# http://www.rabbitmq.com/ssl.html +# +# Copy stdout into the const section of tls_test.go or use for RabbitMQ +# +root=$PWD/certs + +if [ -f $root/ca/serial ]; then + echo >&2 "Previous installation found" + echo >&2 "Remove $root/ca and rerun to overwrite" + exit 1 +fi + +mkdir -p $root/ca/private +mkdir -p $root/ca/certs +mkdir -p $root/server +mkdir -p $root/client + +cd $root/ca + +chmod 700 private +touch index.txt +echo 'unique_subject = no' > index.txt.attr +echo '01' > serial +echo >openssl.cnf ' +[ ca ] +default_ca = testca + +[ testca ] +dir = . +certificate = $dir/cacert.pem +database = $dir/index.txt +new_certs_dir = $dir/certs +private_key = $dir/private/cakey.pem +serial = $dir/serial + +default_crl_days = 7 +default_days = 3650 +default_md = sha256 + +policy = testca_policy +x509_extensions = certificate_extensions + +[ testca_policy ] +commonName = supplied +stateOrProvinceName = optional +countryName = optional +emailAddress = optional +organizationName = optional +organizationalUnitName = optional + +[ certificate_extensions ] +basicConstraints = CA:false + +[ req ] +default_bits = 2048 +default_keyfile = ./private/cakey.pem +default_md = sha256 +prompt = yes +distinguished_name = root_ca_distinguished_name +x509_extensions = root_ca_extensions + +[ root_ca_distinguished_name ] +commonName = hostname + +[ root_ca_extensions ] +basicConstraints = CA:true +keyUsage = keyCertSign, cRLSign + +[ client_ca_extensions ] +basicConstraints = CA:false +keyUsage = keyEncipherment,digitalSignature +extendedKeyUsage = 1.3.6.1.5.5.7.3.2 + +[ server_ca_extensions ] +basicConstraints = CA:false +keyUsage = keyEncipherment,digitalSignature +extendedKeyUsage = 1.3.6.1.5.5.7.3.1 +subjectAltName = @alt_names + +[ alt_names ] +IP.1 = 127.0.0.1 +' + +openssl req \ + -x509 \ + -nodes \ + -config openssl.cnf \ + -newkey rsa:2048 \ + -days 3650 \ + -subj "/CN=MyTestCA/" \ + -out cacert.pem \ + -outform PEM + +openssl x509 \ + -in cacert.pem \ + -out cacert.cer \ + -outform DER + +openssl genrsa -out $root/server/key.pem 2048 +openssl genrsa -out $root/client/key.pem 2048 + +openssl req \ + -new \ + -nodes \ + -config openssl.cnf \ + -subj "/CN=localhost/O=server/" \ + -key $root/server/key.pem \ + -out $root/server/req.pem \ + -outform PEM + +openssl req \ + -new \ + -nodes \ + -config openssl.cnf \ + -subj "/CN=localhost/O=client/" \ + -key $root/client/key.pem \ + -out $root/client/req.pem \ + -outform PEM + +openssl ca \ + -config openssl.cnf \ + -in $root/server/req.pem \ + -out $root/server/cert.pem \ + -notext \ + -batch \ + -extensions server_ca_extensions + +openssl ca \ + -config openssl.cnf \ + -in $root/client/req.pem \ + -out $root/client/cert.pem \ + -notext \ + -batch \ + -extensions client_ca_extensions + +cat <<-END +const caCert = \` +`cat $root/ca/cacert.pem` +\` + +const serverCert = \` +`cat $root/server/cert.pem` +\` + +const serverKey = \` +`cat $root/server/key.pem` +\` + +const clientCert = \` +`cat $root/client/cert.pem` +\` + +const clientKey = \` +`cat $root/client/key.pem` +\` +END diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh b/examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh new file mode 100644 index 0000000..ff8e369 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/change_version.sh @@ -0,0 +1,4 @@ +#!/bin/bash +echo $1 > VERSION +sed -i -e "s/.*buildVersion = \"*.*/buildVersion = \"$1\"/" ./connection.go +go fmt ./... diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go new file mode 100644 index 0000000..3dfd7fa --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/channel.go @@ -0,0 +1,1828 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "context" + "reflect" + "sync" + "sync/atomic" +) + +// 0 1 3 7 size+7 size+8 +// +------+---------+-------------+ +------------+ +-----------+ +// | type | channel | size | | payload | | frame-end | +// +------+---------+-------------+ +------------+ +-----------+ +// +// octet short long size octets octet +const frameHeaderSize = 1 + 2 + 4 + 1 + +/* +Channel represents an AMQP channel. Used as a context for valid message +exchange. Errors on methods with this Channel as a receiver means this channel +should be discarded and a new channel established. +*/ +type Channel struct { + destructor sync.Once + m sync.Mutex // struct field mutex + confirmM sync.Mutex // publisher confirms state mutex + notifyM sync.RWMutex + + connection *Connection + + rpc chan message + consumers *consumers + + id uint16 + + // closed is set to 1 when the channel has been closed - see Channel.send() + closed int32 + close chan struct{} + + // true when we will never notify again + noNotify bool + + // Channel and Connection exceptions will be broadcast on these listeners. + closes []chan *Error + + // Listeners for active=true flow control. When true is sent to a listener, + // publishing should pause until false is sent to listeners. + flows []chan bool + + // Listeners for returned publishings for unroutable messages on mandatory + // publishings or undeliverable messages on immediate publishings. + returns []chan Return + + // Listeners for when the server notifies the client that + // a consumer has been cancelled. + cancels []chan string + + // Allocated when in confirm mode in order to track publish counter and order confirms + confirms *confirms + confirming bool + + // Selects on any errors from shutdown during RPC + errors chan *Error + + // State machine that manages frame order, must only be mutated by the connection + recv func(*Channel, frame) + + // Current state for frame re-assembly, only mutated from recv + message messageWithContent + header *headerFrame + body []byte +} + +// Constructs a new channel with the given framing rules +func newChannel(c *Connection, id uint16) *Channel { + return &Channel{ + connection: c, + id: id, + rpc: make(chan message), + consumers: makeConsumers(), + confirms: newConfirms(), + recv: (*Channel).recvMethod, + errors: make(chan *Error, 1), + close: make(chan struct{}), + } +} + +// Signal that from now on, Channel.send() should call Channel.sendClosed() +func (ch *Channel) setClosed() { + atomic.StoreInt32(&ch.closed, 1) +} + +// shutdown is called by Connection after the channel has been removed from the +// connection registry. +func (ch *Channel) shutdown(e *Error) { + ch.setClosed() + + ch.destructor.Do(func() { + ch.m.Lock() + defer ch.m.Unlock() + + // Grab an exclusive lock for the notify channels + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + // Broadcast abnormal shutdown + if e != nil { + for _, c := range ch.closes { + c <- e + } + // Notify RPC if we're selecting + ch.errors <- e + } + + ch.consumers.close() + + for _, c := range ch.closes { + close(c) + } + + for _, c := range ch.flows { + close(c) + } + + for _, c := range ch.returns { + close(c) + } + + for _, c := range ch.cancels { + close(c) + } + + // Set the slices to nil to prevent the dispatch() range from sending on + // the now closed channels after we release the notifyM mutex + ch.flows = nil + ch.closes = nil + ch.returns = nil + ch.cancels = nil + + if ch.confirms != nil { + ch.confirms.Close() + } + + close(ch.errors) + close(ch.close) + ch.noNotify = true + }) +} + +// send calls Channel.sendOpen() during normal operation. +// +// After the channel has been closed, send calls Channel.sendClosed(), ensuring +// only 'channel.close' is sent to the server. +func (ch *Channel) send(msg message) (err error) { + // If the channel is closed, use Channel.sendClosed() + if ch.IsClosed() { + return ch.sendClosed(msg) + } + + return ch.sendOpen(msg) +} + +func (ch *Channel) open() error { + return ch.call(&channelOpen{}, &channelOpenOk{}) +} + +// Performs a request/response call for when the message is not NoWait and is +// specified as Synchronous. +func (ch *Channel) call(req message, res ...message) error { + if err := ch.send(req); err != nil { + return err + } + + if req.wait() { + select { + case e, ok := <-ch.errors: + if ok { + return e + } + return ErrClosed + + case msg := <-ch.rpc: + if msg != nil { + for _, try := range res { + if reflect.TypeOf(msg) == reflect.TypeOf(try) { + // *res = *msg + vres := reflect.ValueOf(try).Elem() + vmsg := reflect.ValueOf(msg).Elem() + vres.Set(vmsg) + return nil + } + } + return ErrCommandInvalid + } + // RPC channel has been closed without an error, likely due to a hard + // error on the Connection. This indicates we have already been + // shutdown and if were waiting, will have returned from the errors chan. + return ErrClosed + } + } + + return nil +} + +func (ch *Channel) sendClosed(msg message) (err error) { + // After a 'channel.close' is sent or received the only valid response is + // channel.close-ok + if _, ok := msg.(*channelCloseOk); ok { + return ch.connection.send(&methodFrame{ + ChannelId: ch.id, + Method: msg, + }) + } + + return ErrClosed +} + +func (ch *Channel) sendOpen(msg message) (err error) { + if content, ok := msg.(messageWithContent); ok { + props, body := content.getContent() + class, _ := content.id() + + // catch client max frame size==0 and server max frame size==0 + // set size to length of what we're trying to publish + var size int + if ch.connection.Config.FrameSize > 0 { + size = ch.connection.Config.FrameSize - frameHeaderSize + } else { + size = len(body) + } + + // If the channel is closed, use Channel.sendClosed() + if ch.IsClosed() { + return ch.sendClosed(msg) + } + + // Flush the buffer only after all the Frames that comprise the Message + // have been written to maximise benefits of using a buffered writer. + defer func() { + if endError := ch.connection.endSendUnflushed(); endError != nil { + if err == nil { + err = endError + } + } + }() + + // We use sendUnflushed() in this method as sending the message requires + // sending multiple Frames (methodFrame, headerFrame, N x bodyFrame). + // Flushing after each Frame is inefficient, as it negates much of the + // benefit of using a buffered writer and results in more syscalls than + // necessary. Flushing buffers after every frame can have a significant + // performance impact when sending (e.g. basicPublish) small messages, + // so sendUnflushed() performs an *Unflushed* write, but is otherwise + // equivalent to the send() method. We later use the separate flush + // method to explicitly flush the buffer after all Frames are written. + if err = ch.connection.sendUnflushed(&methodFrame{ + ChannelId: ch.id, + Method: content, + }); err != nil { + return + } + + if err = ch.connection.sendUnflushed(&headerFrame{ + ChannelId: ch.id, + ClassId: class, + Size: uint64(len(body)), + Properties: props, + }); err != nil { + return + } + + // chunk body into size (max frame size - frame header size) + for i, j := 0, size; i < len(body); i, j = j, j+size { + if j > len(body) { + j = len(body) + } + + if err = ch.connection.sendUnflushed(&bodyFrame{ + ChannelId: ch.id, + Body: body[i:j], + }); err != nil { + return + } + } + } else { + // If the channel is closed, use Channel.sendClosed() + if ch.IsClosed() { + return ch.sendClosed(msg) + } + + err = ch.connection.send(&methodFrame{ + ChannelId: ch.id, + Method: msg, + }) + } + + return +} + +// Eventually called via the state machine from the connection's reader +// goroutine, so assumes serialized access. +func (ch *Channel) dispatch(msg message) { + switch m := msg.(type) { + case *channelClose: + // Note: channel state is set to closed immedately after the message is + // decoded by the Connection + + // lock before sending connection.close-ok + // to avoid unexpected interleaving with basic.publish frames if + // publishing is happening concurrently + ch.m.Lock() + if err := ch.send(&channelCloseOk{}); err != nil { + Logger.Printf("error sending channelCloseOk, channel id: %d error: %+v", ch.id, err) + } + ch.m.Unlock() + ch.connection.closeChannel(ch, newError(m.ReplyCode, m.ReplyText)) + + case *channelFlow: + ch.notifyM.RLock() + for _, c := range ch.flows { + c <- m.Active + } + ch.notifyM.RUnlock() + if err := ch.send(&channelFlowOk{Active: m.Active}); err != nil { + Logger.Printf("error sending channelFlowOk, channel id: %d error: %+v", ch.id, err) + } + + case *basicCancel: + ch.notifyM.RLock() + for _, c := range ch.cancels { + c <- m.ConsumerTag + } + ch.notifyM.RUnlock() + ch.consumers.cancel(m.ConsumerTag) + + case *basicReturn: + ret := newReturn(*m) + ch.notifyM.RLock() + for _, c := range ch.returns { + c <- *ret + } + ch.notifyM.RUnlock() + + case *basicAck: + if ch.confirming { + if m.Multiple { + ch.confirms.Multiple(Confirmation{m.DeliveryTag, true}) + } else { + ch.confirms.One(Confirmation{m.DeliveryTag, true}) + } + } + + case *basicNack: + if ch.confirming { + if m.Multiple { + ch.confirms.Multiple(Confirmation{m.DeliveryTag, false}) + } else { + ch.confirms.One(Confirmation{m.DeliveryTag, false}) + } + } + + case *basicDeliver: + ch.consumers.send(m.ConsumerTag, newDelivery(ch, m)) + // TODO log failed consumer and close channel, this can happen when + // deliveries are in flight and a no-wait cancel has happened + + default: + select { + case <-ch.close: + return + case ch.rpc <- msg: + } + } +} + +func (ch *Channel) transition(f func(*Channel, frame)) { + ch.recv = f +} + +func (ch *Channel) recvMethod(f frame) { + switch frame := f.(type) { + case *methodFrame: + if msg, ok := frame.Method.(messageWithContent); ok { + ch.body = make([]byte, 0) + ch.message = msg + ch.transition((*Channel).recvHeader) + return + } + + ch.dispatch(frame.Method) // termination state + ch.transition((*Channel).recvMethod) + + case *headerFrame: + // drop + ch.transition((*Channel).recvMethod) + + case *bodyFrame: + // drop + ch.transition((*Channel).recvMethod) + + default: + panic("unexpected frame type") + } +} + +func (ch *Channel) recvHeader(f frame) { + switch frame := f.(type) { + case *methodFrame: + // interrupt content and handle method + ch.recvMethod(f) + + case *headerFrame: + // start collecting if we expect body frames + ch.header = frame + + if frame.Size == 0 { + ch.message.setContent(ch.header.Properties, ch.body) + ch.dispatch(ch.message) // termination state + ch.transition((*Channel).recvMethod) + return + } + ch.transition((*Channel).recvContent) + + case *bodyFrame: + // drop and reset + ch.transition((*Channel).recvMethod) + + default: + panic("unexpected frame type") + } +} + +// state after method + header and before the length +// defined by the header has been reached +func (ch *Channel) recvContent(f frame) { + switch frame := f.(type) { + case *methodFrame: + // interrupt content and handle method + ch.recvMethod(f) + + case *headerFrame: + // drop and reset + ch.transition((*Channel).recvMethod) + + case *bodyFrame: + if cap(ch.body) == 0 { + ch.body = make([]byte, 0, ch.header.Size) + } + ch.body = append(ch.body, frame.Body...) + + if uint64(len(ch.body)) >= ch.header.Size { + ch.message.setContent(ch.header.Properties, ch.body) + ch.dispatch(ch.message) // termination state + ch.transition((*Channel).recvMethod) + return + } + + ch.transition((*Channel).recvContent) + + default: + panic("unexpected frame type") + } +} + +/* +Close initiate a clean channel closure by sending a close message with the error +code set to '200'. + +It is safe to call this method multiple times. +*/ +func (ch *Channel) Close() error { + if ch.IsClosed() { + return nil + } + + defer ch.connection.closeChannel(ch, nil) + return ch.call( + &channelClose{ReplyCode: replySuccess}, + &channelCloseOk{}, + ) +} + +// IsClosed returns true if the channel is marked as closed, otherwise false +// is returned. +func (ch *Channel) IsClosed() bool { + return atomic.LoadInt32(&ch.closed) == 1 +} + +/* +NotifyClose registers a listener for when the server sends a channel or +connection exception in the form of a Connection.Close or Channel.Close method. +Connection exceptions will be broadcast to all open channels and all channels +will be closed, where channel exceptions will only be broadcast to listeners to +this channel. + +The chan provided will be closed when the Channel is closed and on a +graceful close, no error will be sent. + +In case of a non graceful close the error will be notified synchronously by the library +so that it will be necessary to consume the Channel from the caller in order to avoid deadlocks +*/ +func (ch *Channel) NotifyClose(c chan *Error) chan *Error { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.closes = append(ch.closes, c) + } + + return c +} + +/* +NotifyFlow registers a listener for basic.flow methods sent by the server. +When `false` is sent on one of the listener channels, all publishers should +pause until a `true` is sent. + +The server may ask the producer to pause or restart the flow of Publishings +sent by on a channel. This is a simple flow-control mechanism that a server can +use to avoid overflowing its queues or otherwise finding itself receiving more +messages than it can process. Note that this method is not intended for window +control. It does not affect contents returned by basic.get-ok methods. + +When a new channel is opened, it is active (flow is active). Some +applications assume that channels are inactive until started. To emulate +this behavior a client MAY open the channel, then pause it. + +Publishers should respond to a flow messages as rapidly as possible and the +server may disconnect over producing channels that do not respect these +messages. + +basic.flow-ok methods will always be returned to the server regardless of +the number of listeners there are. + +To control the flow of deliveries from the server, use the Channel.Flow() +method instead. + +Note: RabbitMQ will rather use TCP pushback on the network connection instead +of sending basic.flow. This means that if a single channel is producing too +much on the same connection, all channels using that connection will suffer, +including acknowledgments from deliveries. Use different Connections if you +desire to interleave consumers and producers in the same process to avoid your +basic.ack messages from getting rate limited with your basic.publish messages. +*/ +func (ch *Channel) NotifyFlow(c chan bool) chan bool { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.flows = append(ch.flows, c) + } + + return c +} + +/* +NotifyReturn registers a listener for basic.return methods. These can be sent +from the server when a publish is undeliverable either from the mandatory or +immediate flags. + +A return struct has a copy of the Publishing along with some error +information about why the publishing failed. +*/ +func (ch *Channel) NotifyReturn(c chan Return) chan Return { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.returns = append(ch.returns, c) + } + + return c +} + +/* +NotifyCancel registers a listener for basic.cancel methods. These can be sent +from the server when a queue is deleted or when consuming from a mirrored queue +where the master has just failed (and was moved to another node). + +The subscription tag is returned to the listener. +*/ +func (ch *Channel) NotifyCancel(c chan string) chan string { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(c) + } else { + ch.cancels = append(ch.cancels, c) + } + + return c +} + +/* +NotifyConfirm calls NotifyPublish and starts a goroutine sending +ordered Ack and Nack DeliveryTag to the respective channels. + +For strict ordering, use NotifyPublish instead. +*/ +func (ch *Channel) NotifyConfirm(ack, nack chan uint64) (chan uint64, chan uint64) { + confirms := ch.NotifyPublish(make(chan Confirmation, cap(ack)+cap(nack))) + + go func() { + for c := range confirms { + if c.Ack { + ack <- c.DeliveryTag + } else { + nack <- c.DeliveryTag + } + } + close(ack) + if nack != ack { + close(nack) + } + }() + + return ack, nack +} + +/* +NotifyPublish registers a listener for reliable publishing. Receives from this +chan for every publish after Channel.Confirm will be in order starting with +DeliveryTag 1. + +There will be one and only one Confirmation Publishing starting with the +delivery tag of 1 and progressing sequentially until the total number of +Publishings have been seen by the server. + +Acknowledgments will be received in the order of delivery from the +NotifyPublish channels even if the server acknowledges them out of order. + +The listener chan will be closed when the Channel is closed. + +The capacity of the chan Confirmation must be at least as large as the +number of outstanding publishings. Not having enough buffered chans will +create a deadlock if you attempt to perform other operations on the Connection +or Channel while confirms are in-flight. + +It's advisable to wait for all Confirmations to arrive before calling +Channel.Close() or Connection.Close(). + +It is also advisable for the caller to consume from the channel returned till it is closed +to avoid possible deadlocks +*/ +func (ch *Channel) NotifyPublish(confirm chan Confirmation) chan Confirmation { + ch.notifyM.Lock() + defer ch.notifyM.Unlock() + + if ch.noNotify { + close(confirm) + } else { + ch.confirms.Listen(confirm) + } + + return confirm +} + +/* +Qos controls how many messages or how many bytes the server will try to keep on +the network for consumers before receiving delivery acks. The intent of Qos is +to make sure the network buffers stay full between the server and client. + +With a prefetch count greater than zero, the server will deliver that many +messages to consumers before acknowledgments are received. The server ignores +this option when consumers are started with noAck because no acknowledgments +are expected or sent. + +With a prefetch size greater than zero, the server will try to keep at least +that many bytes of deliveries flushed to the network before receiving +acknowledgments from the consumers. This option is ignored when consumers are +started with noAck. + +When global is true, these Qos settings apply to all existing and future +consumers on all channels on the same connection. When false, the Channel.Qos +settings will apply to all existing and future consumers on this channel. + +Please see the RabbitMQ Consumer Prefetch documentation for an explanation of +how the global flag is implemented in RabbitMQ, as it differs from the +AMQP 0.9.1 specification in that global Qos settings are limited in scope to +channels, not connections (https://www.rabbitmq.com/consumer-prefetch.html). + +To get round-robin behavior between consumers consuming from the same queue on +different connections, set the prefetch count to 1, and the next available +message on the server will be delivered to the next available consumer. + +If your consumer work time is reasonably consistent and not much greater +than two times your network round trip time, you will see significant +throughput improvements starting with a prefetch count of 2 or slightly +greater as described by benchmarks on RabbitMQ. + +http://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/ +*/ +func (ch *Channel) Qos(prefetchCount, prefetchSize int, global bool) error { + return ch.call( + &basicQos{ + PrefetchCount: uint16(prefetchCount), + PrefetchSize: uint32(prefetchSize), + Global: global, + }, + &basicQosOk{}, + ) +} + +/* +Cancel stops deliveries to the consumer chan established in Channel.Consume and +identified by consumer. + +Only use this method to cleanly stop receiving deliveries from the server and +cleanly shut down the consumer chan identified by this tag. Using this method +and waiting for remaining messages to flush from the consumer chan will ensure +all messages received on the network will be delivered to the receiver of your +consumer chan. + +Continue consuming from the chan Delivery provided by Channel.Consume until the +chan closes. + +When noWait is true, do not wait for the server to acknowledge the cancel. +Only use this when you are certain there are no deliveries in flight that +require an acknowledgment, otherwise they will arrive and be dropped in the +client without an ack, and will not be redelivered to other consumers. +*/ +func (ch *Channel) Cancel(consumer string, noWait bool) error { + req := &basicCancel{ + ConsumerTag: consumer, + NoWait: noWait, + } + res := &basicCancelOk{} + + if err := ch.call(req, res); err != nil { + return err + } + + if req.wait() { + ch.consumers.cancel(res.ConsumerTag) + } else { + // Potentially could drop deliveries in flight + ch.consumers.cancel(consumer) + } + + return nil +} + +/* +QueueDeclare declares a queue to hold messages and deliver to consumers. +Declaring creates a queue if it doesn't already exist, or ensures that an +existing queue matches the same parameters. + +Every queue declared gets a default binding to the empty exchange "" which has +the type "direct" with the routing key matching the queue's name. With this +default binding, it is possible to publish messages that route directly to +this queue by publishing to "" with the routing key of the queue name. + + QueueDeclare("alerts", true, false, false, false, nil) + Publish("", "alerts", false, false, Publishing{Body: []byte("...")}) + + Delivery Exchange Key Queue + ----------------------------------------------- + key: alerts -> "" -> alerts -> alerts + +The queue name may be empty, in which case the server will generate a unique name +which will be returned in the Name field of Queue struct. + +Durable and Non-Auto-Deleted queues will survive server restarts and remain +when there are no remaining consumers or bindings. Persistent publishings will +be restored in this queue on server restart. These queues are only able to be +bound to durable exchanges. + +Non-Durable and Auto-Deleted queues will not be redeclared on server restart +and will be deleted by the server after a short time when the last consumer is +canceled or the last consumer's channel is closed. Queues with this lifetime +can also be deleted normally with QueueDelete. These durable queues can only +be bound to non-durable exchanges. + +Non-Durable and Non-Auto-Deleted queues will remain declared as long as the +server is running regardless of how many consumers. This lifetime is useful +for temporary topologies that may have long delays between consumer activity. +These queues can only be bound to non-durable exchanges. + +Durable and Auto-Deleted queues will be restored on server restart, but without +active consumers will not survive and be removed. This Lifetime is unlikely +to be useful. + +Exclusive queues are only accessible by the connection that declares them and +will be deleted when the connection closes. Channels on other connections +will receive an error when attempting to declare, bind, consume, purge or +delete a queue with the same name. + +When noWait is true, the queue will assume to be declared on the server. A +channel exception will arrive if the conditions are met for existing queues +or attempting to modify an existing queue from a different connection. + +When the error return value is not nil, you can assume the queue could not be +declared with these parameters, and the channel will be closed. +*/ +func (ch *Channel) QueueDeclare(name string, durable, autoDelete, exclusive, noWait bool, args Table) (Queue, error) { + if err := args.Validate(); err != nil { + return Queue{}, err + } + + req := &queueDeclare{ + Queue: name, + Passive: false, + Durable: durable, + AutoDelete: autoDelete, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &queueDeclareOk{} + + if err := ch.call(req, res); err != nil { + return Queue{}, err + } + + if req.wait() { + return Queue{ + Name: res.Queue, + Messages: int(res.MessageCount), + Consumers: int(res.ConsumerCount), + }, nil + } + + return Queue{Name: name}, nil +} + +/* +QueueDeclarePassive is functionally and parametrically equivalent to +QueueDeclare, except that it sets the "passive" attribute to true. A passive +queue is assumed by RabbitMQ to already exist, and attempting to connect to a +non-existent queue will cause RabbitMQ to throw an exception. This function +can be used to test for the existence of a queue. +*/ +func (ch *Channel) QueueDeclarePassive(name string, durable, autoDelete, exclusive, noWait bool, args Table) (Queue, error) { + if err := args.Validate(); err != nil { + return Queue{}, err + } + + req := &queueDeclare{ + Queue: name, + Passive: true, + Durable: durable, + AutoDelete: autoDelete, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &queueDeclareOk{} + + if err := ch.call(req, res); err != nil { + return Queue{}, err + } + + if req.wait() { + return Queue{ + Name: res.Queue, + Messages: int(res.MessageCount), + Consumers: int(res.ConsumerCount), + }, nil + } + + return Queue{Name: name}, nil +} + +/* +QueueInspect passively declares a queue by name to inspect the current message +count and consumer count. + +Use this method to check how many messages ready for delivery reside in the queue, +how many consumers are receiving deliveries, and whether a queue by this +name already exists. + +If the queue by this name exists, use Channel.QueueDeclare check if it is +declared with specific parameters. + +If a queue by this name does not exist, an error will be returned and the +channel will be closed. + +Deprecated: Use QueueDeclare with "Passive: true" instead. +*/ +func (ch *Channel) QueueInspect(name string) (Queue, error) { + req := &queueDeclare{ + Queue: name, + Passive: true, + } + res := &queueDeclareOk{} + + err := ch.call(req, res) + + state := Queue{ + Name: name, + Messages: int(res.MessageCount), + Consumers: int(res.ConsumerCount), + } + + return state, err +} + +/* +QueueBind binds an exchange to a queue so that publishings to the exchange will +be routed to the queue when the publishing routing key matches the binding +routing key. + + QueueBind("pagers", "alert", "log", false, nil) + QueueBind("emails", "info", "log", false, nil) + + Delivery Exchange Key Queue + ----------------------------------------------- + key: alert --> log ----> alert --> pagers + key: info ---> log ----> info ---> emails + key: debug --> log (none) (dropped) + +If a binding with the same key and arguments already exists between the +exchange and queue, the attempt to rebind will be ignored and the existing +binding will be retained. + +In the case that multiple bindings may cause the message to be routed to the +same queue, the server will only route the publishing once. This is possible +with topic exchanges. + + QueueBind("pagers", "alert", "amq.topic", false, nil) + QueueBind("emails", "info", "amq.topic", false, nil) + QueueBind("emails", "#", "amq.topic", false, nil) // match everything + + Delivery Exchange Key Queue + ----------------------------------------------- + key: alert --> amq.topic ----> alert --> pagers + key: info ---> amq.topic ----> # ------> emails + \---> info ---/ + key: debug --> amq.topic ----> # ------> emails + +It is only possible to bind a durable queue to a durable exchange regardless of +whether the queue or exchange is auto-deleted. Bindings between durable queues +and exchanges will also be restored on server restart. + +If the binding could not complete, an error will be returned and the channel +will be closed. + +When noWait is false and the queue could not be bound, the channel will be +closed with an error. +*/ +func (ch *Channel) QueueBind(name, key, exchange string, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &queueBind{ + Queue: name, + Exchange: exchange, + RoutingKey: key, + NoWait: noWait, + Arguments: args, + }, + &queueBindOk{}, + ) +} + +/* +QueueUnbind removes a binding between an exchange and queue matching the key and +arguments. +*/ +func (ch *Channel) QueueUnbind(name, key, exchange string, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &queueUnbind{ + Queue: name, + Exchange: exchange, + RoutingKey: key, + Arguments: args, + }, + &queueUnbindOk{}, + ) +} + +/* +QueuePurge removes all messages from the named queue which are not waiting to +be acknowledged. Messages that have been delivered but have not yet been +acknowledged will not be removed. + +When successful, returns the number of messages purged. + +If noWait is true, do not wait for the server response and the number of +messages purged will not be meaningful. +*/ +func (ch *Channel) QueuePurge(name string, noWait bool) (int, error) { + req := &queuePurge{ + Queue: name, + NoWait: noWait, + } + res := &queuePurgeOk{} + + err := ch.call(req, res) + + return int(res.MessageCount), err +} + +/* +QueueDelete removes the queue from the server including all bindings then +purges the messages based on server configuration, returning the number of +messages purged. + +When ifUnused is true, the queue will not be deleted if there are any +consumers on the queue. If there are consumers, an error will be returned and +the channel will be closed. + +When ifEmpty is true, the queue will not be deleted if there are any messages +remaining on the queue. If there are messages, an error will be returned and +the channel will be closed. + +When noWait is true, the queue will be deleted without waiting for a response +from the server. The purged message count will not be meaningful. If the queue +could not be deleted, a channel exception will be raised and the channel will +be closed. +*/ +func (ch *Channel) QueueDelete(name string, ifUnused, ifEmpty, noWait bool) (int, error) { + req := &queueDelete{ + Queue: name, + IfUnused: ifUnused, + IfEmpty: ifEmpty, + NoWait: noWait, + } + res := &queueDeleteOk{} + + err := ch.call(req, res) + + return int(res.MessageCount), err +} + +/* +Consume immediately starts delivering queued messages. + +Begin receiving on the returned chan Delivery before any other operation on the +Connection or Channel. + +Continues deliveries to the returned chan Delivery until Channel.Cancel, +Connection.Close, Channel.Close, or an AMQP exception occurs. Consumers must +range over the chan to ensure all deliveries are received. Unreceived +deliveries will block all methods on the same connection. + +All deliveries in AMQP must be acknowledged. It is expected of the consumer to +call Delivery.Ack after it has successfully processed the delivery. If the +consumer is cancelled or the channel or connection is closed any unacknowledged +deliveries will be requeued at the end of the same queue. + +The consumer is identified by a string that is unique and scoped for all +consumers on this channel. If you wish to eventually cancel the consumer, use +the same non-empty identifier in Channel.Cancel. An empty string will cause +the library to generate a unique identity. The consumer identity will be +included in every Delivery in the ConsumerTag field + +When autoAck (also known as noAck) is true, the server will acknowledge +deliveries to this consumer prior to writing the delivery to the network. When +autoAck is true, the consumer should not call Delivery.Ack. Automatically +acknowledging deliveries means that some deliveries may get lost if the +consumer is unable to process them after the server delivers them. +See http://www.rabbitmq.com/confirms.html for more details. + +When exclusive is true, the server will ensure that this is the sole consumer +from this queue. When exclusive is false, the server will fairly distribute +deliveries across multiple consumers. + +The noLocal flag is not supported by RabbitMQ. + +It's advisable to use separate connections for +Channel.Publish and Channel.Consume so not to have TCP pushback on publishing +affect the ability to consume messages, so this parameter is here mostly for +completeness. + +When noWait is true, do not wait for the server to confirm the request and +immediately begin deliveries. If it is not possible to consume, a channel +exception will be raised and the channel will be closed. + +Optional arguments can be provided that have specific semantics for the queue +or server. + +Inflight messages, limited by Channel.Qos will be buffered until received from +the returned chan. + +When the Channel or Connection is closed, all buffered and inflight messages will +be dropped. RabbitMQ will requeue messages not acknowledged. In other words, dropped +messages in this way won't be lost. + +When the consumer tag is cancelled, all inflight messages will be delivered until +the returned chan is closed. +*/ +func (ch *Channel) Consume(queue, consumer string, autoAck, exclusive, noLocal, noWait bool, args Table) (<-chan Delivery, error) { + // When we return from ch.call, there may be a delivery already for the + // consumer that hasn't been added to the consumer hash yet. Because of + // this, we never rely on the server picking a consumer tag for us. + + if err := args.Validate(); err != nil { + return nil, err + } + + if consumer == "" { + consumer = uniqueConsumerTag() + } + + req := &basicConsume{ + Queue: queue, + ConsumerTag: consumer, + NoLocal: noLocal, + NoAck: autoAck, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &basicConsumeOk{} + + deliveries := make(chan Delivery) + + ch.consumers.add(consumer, deliveries) + + if err := ch.call(req, res); err != nil { + ch.consumers.cancel(consumer) + return nil, err + } + + return deliveries, nil +} + +/* +ConsumeWithContext immediately starts delivering queued messages. + +This function is similar to Channel.Consume, and accepts a context to control +consumer lifecycle. When the context passed to this function is canceled, the +consumer associated with the deliveries channel will be canceled too. When the +context passed to this function is cancelled, the deliveries channel will be closed. + +An application is advised to keep on receiving messages from the delivery channel +until the channel is empty. This is specially important to avoid memory leaks from +unconsumed messages from the delivery channel. + +Begin receiving on the returned chan Delivery before any other operation on the +Connection or Channel. + +Continues deliveries to the returned chan Delivery until Channel.Cancel, +Connection.Close, Channel.Close, context is cancelled, or an AMQP exception +occurs. Consumers must range over the chan to ensure all deliveries are +received. Unreceived deliveries will block all methods on the same connection. + +All deliveries in AMQP must be acknowledged. It is expected of the consumer to +call Delivery.Ack after it has successfully processed the delivery. If the +consumer is cancelled or the channel or connection is closed any unacknowledged +deliveries will be requeued at the end of the same queue. + +The consumer is identified by a string that is unique and scoped for all +consumers on this channel. If you wish to eventually cancel the consumer, use +the same non-empty identifier in Channel.Cancel. An empty string will cause +the library to generate a unique identity. The consumer identity will be +included in every Delivery in the ConsumerTag field + +When autoAck (also known as noAck) is true, the server will acknowledge +deliveries to this consumer prior to writing the delivery to the network. When +autoAck is true, the consumer should not call Delivery.Ack. Automatically +acknowledging deliveries means that some deliveries may get lost if the +consumer is unable to process them after the server delivers them. +See http://www.rabbitmq.com/confirms.html for more details. + +When exclusive is true, the server will ensure that this is the sole consumer +from this queue. When exclusive is false, the server will fairly distribute +deliveries across multiple consumers. + +The noLocal flag is not supported by RabbitMQ. + +It's advisable to use separate connections for Channel.Publish and +Channel.Consume so not to have TCP pushback on publishing affect the ability to +consume messages, so this parameter is here mostly for completeness. + +When noWait is true, do not wait for the server to confirm the request and +immediately begin deliveries. If it is not possible to consume, a channel +exception will be raised and the channel will be closed. + +Optional arguments can be provided that have specific semantics for the queue +or server. + +Inflight messages, limited by Channel.Qos will be buffered until received from +the returned chan. + +When the Channel or Connection is closed, all buffered and inflight messages will +be dropped. RabbitMQ will requeue messages not acknowledged. In other words, dropped +messages in this way won't be lost. +*/ +func (ch *Channel) ConsumeWithContext(ctx context.Context, queue, consumer string, autoAck, exclusive, noLocal, noWait bool, args Table) (<-chan Delivery, error) { + // When we return from ch.call, there may be a delivery already for the + // consumer that hasn't been added to the consumer hash yet. Because of + // this, we never rely on the server picking a consumer tag for us. + + if err := args.Validate(); err != nil { + return nil, err + } + + if consumer == "" { + consumer = uniqueConsumerTag() + } + + req := &basicConsume{ + Queue: queue, + ConsumerTag: consumer, + NoLocal: noLocal, + NoAck: autoAck, + Exclusive: exclusive, + NoWait: noWait, + Arguments: args, + } + res := &basicConsumeOk{} + + select { + default: + case <-ctx.Done(): + return nil, ctx.Err() + } + + deliveries := make(chan Delivery) + + ch.consumers.add(consumer, deliveries) + + if err := ch.call(req, res); err != nil { + ch.consumers.cancel(consumer) + return nil, err + } + + go func() { + select { + case <-ch.consumers.closed: + return + case <-ctx.Done(): + if ch != nil { + _ = ch.Cancel(consumer, false) + } + } + }() + + return deliveries, nil +} + +/* +ExchangeDeclare declares an exchange on the server. If the exchange does not +already exist, the server will create it. If the exchange exists, the server +verifies that it is of the provided type, durability and auto-delete flags. + +Errors returned from this method will close the channel. + +Exchange names starting with "amq." are reserved for pre-declared and +standardized exchanges. The client MAY declare an exchange starting with +"amq." if the passive option is set, or the exchange already exists. Names can +consist of a non-empty sequence of letters, digits, hyphen, underscore, +period, or colon. + +Each exchange belongs to one of a set of exchange kinds/types implemented by +the server. The exchange types define the functionality of the exchange - i.e. +how messages are routed through it. Once an exchange is declared, its type +cannot be changed. The common types are "direct", "fanout", "topic" and +"headers". + +Durable and Non-Auto-Deleted exchanges will survive server restarts and remain +declared when there are no remaining bindings. This is the best lifetime for +long-lived exchange configurations like stable routes and default exchanges. + +Non-Durable and Auto-Deleted exchanges will be deleted when there are no +remaining bindings and not restored on server restart. This lifetime is +useful for temporary topologies that should not pollute the virtual host on +failure or after the consumers have completed. + +Non-Durable and Non-Auto-deleted exchanges will remain as long as the server is +running including when there are no remaining bindings. This is useful for +temporary topologies that may have long delays between bindings. + +Durable and Auto-Deleted exchanges will survive server restarts and will be +removed before and after server restarts when there are no remaining bindings. +These exchanges are useful for robust temporary topologies or when you require +binding durable queues to auto-deleted exchanges. + +Note: RabbitMQ declares the default exchange types like 'amq.fanout' as +durable, so queues that bind to these pre-declared exchanges must also be +durable. + +Exchanges declared as `internal` do not accept publishings. Internal +exchanges are useful when you wish to implement inter-exchange topologies +that should not be exposed to users of the broker. + +When noWait is true, declare without waiting for a confirmation from the server. +The channel may be closed as a result of an error. Add a NotifyClose listener +to respond to any exceptions. + +Optional amqp.Table of arguments that are specific to the server's implementation of +the exchange can be sent for exchange types that require extra parameters. +*/ +func (ch *Channel) ExchangeDeclare(name, kind string, durable, autoDelete, internal, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeDeclare{ + Exchange: name, + Type: kind, + Passive: false, + Durable: durable, + AutoDelete: autoDelete, + Internal: internal, + NoWait: noWait, + Arguments: args, + }, + &exchangeDeclareOk{}, + ) +} + +/* +ExchangeDeclarePassive is functionally and parametrically equivalent to +ExchangeDeclare, except that it sets the "passive" attribute to true. A passive +exchange is assumed by RabbitMQ to already exist, and attempting to connect to a +non-existent exchange will cause RabbitMQ to throw an exception. This function +can be used to detect the existence of an exchange. +*/ +func (ch *Channel) ExchangeDeclarePassive(name, kind string, durable, autoDelete, internal, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeDeclare{ + Exchange: name, + Type: kind, + Passive: true, + Durable: durable, + AutoDelete: autoDelete, + Internal: internal, + NoWait: noWait, + Arguments: args, + }, + &exchangeDeclareOk{}, + ) +} + +/* +ExchangeDelete removes the named exchange from the server. When an exchange is +deleted all queue bindings on the exchange are also deleted. If this exchange +does not exist, the channel will be closed with an error. + +When ifUnused is true, the server will only delete the exchange if it has no queue +bindings. If the exchange has queue bindings the server does not delete it +but close the channel with an exception instead. Set this to true if you are +not the sole owner of the exchange. + +When noWait is true, do not wait for a server confirmation that the exchange has +been deleted. Failing to delete the channel could close the channel. Add a +NotifyClose listener to respond to these channel exceptions. +*/ +func (ch *Channel) ExchangeDelete(name string, ifUnused, noWait bool) error { + return ch.call( + &exchangeDelete{ + Exchange: name, + IfUnused: ifUnused, + NoWait: noWait, + }, + &exchangeDeleteOk{}, + ) +} + +/* +ExchangeBind binds an exchange to another exchange to create inter-exchange +routing topologies on the server. This can decouple the private topology and +routing exchanges from exchanges intended solely for publishing endpoints. + +Binding two exchanges with identical arguments will not create duplicate +bindings. + +Binding one exchange to another with multiple bindings will only deliver a +message once. For example if you bind your exchange to `amq.fanout` with two +different binding keys, only a single message will be delivered to your +exchange even though multiple bindings will match. + +Given a message delivered to the source exchange, the message will be forwarded +to the destination exchange when the routing key is matched. + + ExchangeBind("sell", "MSFT", "trade", false, nil) + ExchangeBind("buy", "AAPL", "trade", false, nil) + + Delivery Source Key Destination + example exchange exchange + ----------------------------------------------- + key: AAPL --> trade ----> MSFT sell + \---> AAPL --> buy + +When noWait is true, do not wait for the server to confirm the binding. If any +error occurs the channel will be closed. Add a listener to NotifyClose to +handle these errors. + +Optional arguments specific to the exchanges bound can also be specified. +*/ +func (ch *Channel) ExchangeBind(destination, key, source string, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeBind{ + Destination: destination, + Source: source, + RoutingKey: key, + NoWait: noWait, + Arguments: args, + }, + &exchangeBindOk{}, + ) +} + +/* +ExchangeUnbind unbinds the destination exchange from the source exchange on the +server by removing the routing key between them. This is the inverse of +ExchangeBind. If the binding does not currently exist, an error will be +returned. + +When noWait is true, do not wait for the server to confirm the deletion of the +binding. If any error occurs the channel will be closed. Add a listener to +NotifyClose to handle these errors. + +Optional arguments that are specific to the type of exchanges bound can also be +provided. These must match the same arguments specified in ExchangeBind to +identify the binding. +*/ +func (ch *Channel) ExchangeUnbind(destination, key, source string, noWait bool, args Table) error { + if err := args.Validate(); err != nil { + return err + } + + return ch.call( + &exchangeUnbind{ + Destination: destination, + Source: source, + RoutingKey: key, + NoWait: noWait, + Arguments: args, + }, + &exchangeUnbindOk{}, + ) +} + +/* +Publish sends a Publishing from the client to an exchange on the server. + +When you want a single message to be delivered to a single queue, you can +publish to the default exchange with the routingKey of the queue name. This is +because every declared queue gets an implicit route to the default exchange. + +Since publishings are asynchronous, any undeliverable message will get returned +by the server. Add a listener with Channel.NotifyReturn to handle any +undeliverable message when calling publish with either the mandatory or +immediate parameters as true. + +Publishings can be undeliverable when the mandatory flag is true and no queue is +bound that matches the routing key, or when the immediate flag is true and no +consumer on the matched queue is ready to accept the delivery. + +This can return an error when the channel, connection or socket is closed. The +error or lack of an error does not indicate whether the server has received this +publishing. + +It is possible for publishing to not reach the broker if the underlying socket +is shut down without pending publishing packets being flushed from the kernel +buffers. The easy way of making it probable that all publishings reach the +server is to always call Connection.Close before terminating your publishing +application. The way to ensure that all publishings reach the server is to add +a listener to Channel.NotifyPublish and put the channel in confirm mode with +Channel.Confirm. Publishing delivery tags and their corresponding +confirmations start at 1. Exit when all publishings are confirmed. + +When Publish does not return an error and the channel is in confirm mode, the +internal counter for DeliveryTags with the first confirmation starts at 1. +*/ +func (ch *Channel) Publish(exchange, key string, mandatory, immediate bool, msg Publishing) error { + _, err := ch.PublishWithDeferredConfirm(exchange, key, mandatory, immediate, msg) + return err +} + +/* +PublishWithContext sends a Publishing from the client to an exchange on the server. + +NOTE: this function is equivalent to [Channel.Publish]. Context is not honoured. + +When you want a single message to be delivered to a single queue, you can +publish to the default exchange with the routingKey of the queue name. This is +because every declared queue gets an implicit route to the default exchange. + +Since publishings are asynchronous, any undeliverable message will get returned +by the server. Add a listener with Channel.NotifyReturn to handle any +undeliverable message when calling publish with either the mandatory or +immediate parameters as true. + +Publishings can be undeliverable when the mandatory flag is true and no queue is +bound that matches the routing key, or when the immediate flag is true and no +consumer on the matched queue is ready to accept the delivery. + +This can return an error when the channel, connection or socket is closed. The +error or lack of an error does not indicate whether the server has received this +publishing. + +It is possible for publishing to not reach the broker if the underlying socket +is shut down without pending publishing packets being flushed from the kernel +buffers. The easy way of making it probable that all publishings reach the +server is to always call Connection.Close before terminating your publishing +application. The way to ensure that all publishings reach the server is to add +a listener to Channel.NotifyPublish and put the channel in confirm mode with +Channel.Confirm. Publishing delivery tags and their corresponding +confirmations start at 1. Exit when all publishings are confirmed. + +When Publish does not return an error and the channel is in confirm mode, the +internal counter for DeliveryTags with the first confirmation starts at 1. +*/ +func (ch *Channel) PublishWithContext(_ context.Context, exchange, key string, mandatory, immediate bool, msg Publishing) error { + return ch.Publish(exchange, key, mandatory, immediate, msg) +} + +/* +PublishWithDeferredConfirm behaves identically to Publish, but additionally +returns a DeferredConfirmation, allowing the caller to wait on the publisher +confirmation for this message. If the channel has not been put into confirm +mode, the DeferredConfirmation will be nil. +*/ +func (ch *Channel) PublishWithDeferredConfirm(exchange, key string, mandatory, immediate bool, msg Publishing) (*DeferredConfirmation, error) { + if err := msg.Headers.Validate(); err != nil { + return nil, err + } + + ch.m.Lock() + defer ch.m.Unlock() + + var dc *DeferredConfirmation + if ch.confirming { + dc = ch.confirms.publish() + } + + if err := ch.send(&basicPublish{ + Exchange: exchange, + RoutingKey: key, + Mandatory: mandatory, + Immediate: immediate, + Body: msg.Body, + Properties: properties{ + Headers: msg.Headers, + ContentType: msg.ContentType, + ContentEncoding: msg.ContentEncoding, + DeliveryMode: msg.DeliveryMode, + Priority: msg.Priority, + CorrelationId: msg.CorrelationId, + ReplyTo: msg.ReplyTo, + Expiration: msg.Expiration, + MessageId: msg.MessageId, + Timestamp: msg.Timestamp, + Type: msg.Type, + UserId: msg.UserId, + AppId: msg.AppId, + }, + }); err != nil { + if ch.confirming { + ch.confirms.unpublish() + } + return nil, err + } + + return dc, nil +} + +/* +PublishWithDeferredConfirmWithContext behaves identically to Publish but additionally returns a +DeferredConfirmation, allowing the caller to wait on the publisher confirmation +for this message. If the channel has not been put into confirm mode, +the DeferredConfirmation will be nil. + +NOTE: PublishWithDeferredConfirmWithContext is equivalent to its non-context variant. The context passed +to this function is not honoured. +*/ +func (ch *Channel) PublishWithDeferredConfirmWithContext(_ context.Context, exchange, key string, mandatory, immediate bool, msg Publishing) (*DeferredConfirmation, error) { + return ch.PublishWithDeferredConfirm(exchange, key, mandatory, immediate, msg) +} + +/* +Get synchronously receives a single Delivery from the head of a queue from the +server to the client. In almost all cases, using Channel.Consume will be +preferred. + +If there was a delivery waiting on the queue and that delivery was received, the +second return value will be true. If there was no delivery waiting or an error +occurred, the ok bool will be false. + +All deliveries must be acknowledged including those from Channel.Get. Call +Delivery.Ack on the returned delivery when you have fully processed this +delivery. + +When autoAck is true, the server will automatically acknowledge this message so +you don't have to. But if you are unable to fully process this message before +the channel or connection is closed, the message will not get requeued. +*/ +func (ch *Channel) Get(queue string, autoAck bool) (msg Delivery, ok bool, err error) { + req := &basicGet{Queue: queue, NoAck: autoAck} + res := &basicGetOk{} + empty := &basicGetEmpty{} + + if err := ch.call(req, res, empty); err != nil { + return Delivery{}, false, err + } + + if res.DeliveryTag > 0 { + return *(newDelivery(ch, res)), true, nil + } + + return Delivery{}, false, nil +} + +/* +Tx puts the channel into transaction mode on the server. All publishings and +acknowledgments following this method will be atomically committed or rolled +back for a single queue. Call either Channel.TxCommit or Channel.TxRollback to +leave a this transaction and immediately start a new transaction. + +The atomicity across multiple queues is not defined as queue declarations and +bindings are not included in the transaction. + +The behavior of publishings that are delivered as mandatory or immediate while +the channel is in a transaction is not defined. + +Once a channel has been put into transaction mode, it cannot be taken out of +transaction mode. Use a different channel for non-transactional semantics. +*/ +func (ch *Channel) Tx() error { + return ch.call( + &txSelect{}, + &txSelectOk{}, + ) +} + +/* +TxCommit atomically commits all publishings and acknowledgments for a single +queue and immediately start a new transaction. + +Calling this method without having called Channel.Tx is an error. +*/ +func (ch *Channel) TxCommit() error { + return ch.call( + &txCommit{}, + &txCommitOk{}, + ) +} + +/* +TxRollback atomically rolls back all publishings and acknowledgments for a +single queue and immediately start a new transaction. + +Calling this method without having called Channel.Tx is an error. +*/ +func (ch *Channel) TxRollback() error { + return ch.call( + &txRollback{}, + &txRollbackOk{}, + ) +} + +/* +Flow pauses the delivery of messages to consumers on this channel. Channels +are opened with flow control active, to open a channel with paused +deliveries immediately call this method with `false` after calling +Connection.Channel. + +When active is `false`, this method asks the server to temporarily pause deliveries +until called again with active as `true`. + +Channel.Get methods will not be affected by flow control. + +This method is not intended to act as window control. Use Channel.Qos to limit +the number of unacknowledged messages or bytes in flight instead. + +The server may also send us flow methods to throttle our publishings. A well +behaving publishing client should add a listener with Channel.NotifyFlow and +pause its publishings when `false` is sent on that channel. + +Note: RabbitMQ prefers to use TCP push back to control flow for all channels on +a connection, so under high volume scenarios, it's wise to open separate +Connections for publishings and deliveries. +*/ +func (ch *Channel) Flow(active bool) error { + return ch.call( + &channelFlow{Active: active}, + &channelFlowOk{}, + ) +} + +/* +Confirm puts this channel into confirm mode so that the client can ensure all +publishings have successfully been received by the server. After entering this +mode, the server will send a basic.ack or basic.nack message with the deliver +tag set to a 1 based incremental index corresponding to every publishing +received after the this method returns. + +Add a listener to Channel.NotifyPublish to respond to the Confirmations. If +Channel.NotifyPublish is not called, the Confirmations will be silently +ignored. + +The order of acknowledgments is not bound to the order of deliveries. + +Ack and Nack confirmations will arrive at some point in the future. + +Unroutable mandatory or immediate messages are acknowledged immediately after +any Channel.NotifyReturn listeners have been notified. Other messages are +acknowledged when all queues that should have the message routed to them have +either received acknowledgment of delivery or have enqueued the message, +persisting the message if necessary. + +When noWait is true, the client will not wait for a response. A channel +exception could occur if the server does not support this method. +*/ +func (ch *Channel) Confirm(noWait bool) error { + if err := ch.call( + &confirmSelect{Nowait: noWait}, + &confirmSelectOk{}, + ); err != nil { + return err + } + + ch.confirmM.Lock() + ch.confirming = true + ch.confirmM.Unlock() + + return nil +} + +/* +Recover redelivers all unacknowledged deliveries on this channel. + +When requeue is false, messages will be redelivered to the original consumer. + +When requeue is true, messages will be redelivered to any available consumer, +potentially including the original. + +If the deliveries cannot be recovered, an error will be returned and the channel +will be closed. + +Note: this method is not implemented on RabbitMQ, use Delivery.Nack instead + +Deprecated: This method is deprecated in RabbitMQ. RabbitMQ used Recover(true) +as a mechanism for consumers to tell the broker that they were ready for more +deliveries, back in 2008-2009. Support for this will be removed from RabbitMQ in +a future release. Use Nack() with requeue=true instead. +*/ +func (ch *Channel) Recover(requeue bool) error { + return ch.call( + &basicRecover{Requeue: requeue}, + &basicRecoverOk{}, + ) +} + +/* +Ack acknowledges a delivery by its delivery tag when having been consumed with +Channel.Consume or Channel.Get. + +Ack acknowledges all message received prior to the delivery tag when multiple +is true. + +See also Delivery.Ack +*/ +func (ch *Channel) Ack(tag uint64, multiple bool) error { + ch.m.Lock() + defer ch.m.Unlock() + + return ch.send(&basicAck{ + DeliveryTag: tag, + Multiple: multiple, + }) +} + +/* +Nack negatively acknowledges a delivery by its delivery tag. Prefer this +method to notify the server that you were not able to process this delivery and +it must be redelivered or dropped. + +See also Delivery.Nack +*/ +func (ch *Channel) Nack(tag uint64, multiple bool, requeue bool) error { + ch.m.Lock() + defer ch.m.Unlock() + + return ch.send(&basicNack{ + DeliveryTag: tag, + Multiple: multiple, + Requeue: requeue, + }) +} + +/* +Reject negatively acknowledges a delivery by its delivery tag. Prefer Nack +over Reject when communicating with a RabbitMQ server because you can Nack +multiple messages, reducing the amount of protocol messages to exchange. + +See also Delivery.Reject +*/ +func (ch *Channel) Reject(tag uint64, requeue bool) error { + ch.m.Lock() + defer ch.m.Unlock() + + return ch.send(&basicReject{ + DeliveryTag: tag, + Requeue: requeue, + }) +} + +// GetNextPublishSeqNo returns the sequence number of the next message to be +// published, when in confirm mode. +func (ch *Channel) GetNextPublishSeqNo() uint64 { + ch.confirms.publishedMut.Lock() + defer ch.confirms.publishedMut.Unlock() + + return ch.confirms.published + 1 +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go new file mode 100644 index 0000000..577e042 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/confirms.go @@ -0,0 +1,238 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "context" + "sync" +) + +// confirms resequences and notifies one or multiple publisher confirmation listeners +type confirms struct { + m sync.Mutex + listeners []chan Confirmation + sequencer map[uint64]Confirmation + deferredConfirmations *deferredConfirmations + published uint64 + publishedMut sync.Mutex + expecting uint64 +} + +// newConfirms allocates a confirms +func newConfirms() *confirms { + return &confirms{ + sequencer: map[uint64]Confirmation{}, + deferredConfirmations: newDeferredConfirmations(), + published: 0, + expecting: 1, + } +} + +func (c *confirms) Listen(l chan Confirmation) { + c.m.Lock() + defer c.m.Unlock() + + c.listeners = append(c.listeners, l) +} + +// Publish increments the publishing counter +func (c *confirms) publish() *DeferredConfirmation { + c.publishedMut.Lock() + defer c.publishedMut.Unlock() + + c.published++ + return c.deferredConfirmations.Add(c.published) +} + +// unpublish decrements the publishing counter and removes the +// DeferredConfirmation. It must be called immediately after a publish fails. +func (c *confirms) unpublish() { + c.publishedMut.Lock() + defer c.publishedMut.Unlock() + c.deferredConfirmations.remove(c.published) + c.published-- +} + +// confirm confirms one publishing, increments the expecting delivery tag, and +// removes bookkeeping for that delivery tag. +func (c *confirms) confirm(confirmation Confirmation) { + delete(c.sequencer, c.expecting) + c.expecting++ + for _, l := range c.listeners { + l <- confirmation + } +} + +// resequence confirms any out of order delivered confirmations +func (c *confirms) resequence() { + c.publishedMut.Lock() + defer c.publishedMut.Unlock() + + for c.expecting <= c.published { + sequenced, found := c.sequencer[c.expecting] + if !found { + return + } + c.confirm(sequenced) + } +} + +// One confirms one publishing and all following in the publishing sequence +func (c *confirms) One(confirmed Confirmation) { + c.m.Lock() + defer c.m.Unlock() + + c.deferredConfirmations.Confirm(confirmed) + + if c.expecting == confirmed.DeliveryTag { + c.confirm(confirmed) + } else { + c.sequencer[confirmed.DeliveryTag] = confirmed + } + c.resequence() +} + +// Multiple confirms all publishings up until the delivery tag +func (c *confirms) Multiple(confirmed Confirmation) { + c.m.Lock() + defer c.m.Unlock() + + c.deferredConfirmations.ConfirmMultiple(confirmed) + + for c.expecting <= confirmed.DeliveryTag { + c.confirm(Confirmation{c.expecting, confirmed.Ack}) + } + c.resequence() +} + +// Cleans up the confirms struct and its dependencies. +// Closes all listeners, discarding any out of sequence confirmations +func (c *confirms) Close() error { + c.m.Lock() + defer c.m.Unlock() + + c.deferredConfirmations.Close() + + for _, l := range c.listeners { + close(l) + } + c.listeners = nil + return nil +} + +type deferredConfirmations struct { + m sync.Mutex + confirmations map[uint64]*DeferredConfirmation +} + +func newDeferredConfirmations() *deferredConfirmations { + return &deferredConfirmations{ + confirmations: map[uint64]*DeferredConfirmation{}, + } +} + +func (d *deferredConfirmations) Add(tag uint64) *DeferredConfirmation { + d.m.Lock() + defer d.m.Unlock() + + dc := &DeferredConfirmation{DeliveryTag: tag} + dc.done = make(chan struct{}) + d.confirmations[tag] = dc + return dc +} + +// remove is only used to drop a tag whose publish failed +func (d *deferredConfirmations) remove(tag uint64) { + d.m.Lock() + defer d.m.Unlock() + dc, found := d.confirmations[tag] + if !found { + return + } + close(dc.done) + delete(d.confirmations, tag) +} + +func (d *deferredConfirmations) Confirm(confirmation Confirmation) { + d.m.Lock() + defer d.m.Unlock() + + dc, found := d.confirmations[confirmation.DeliveryTag] + if !found { + // We should never receive a confirmation for a tag that hasn't + // been published, but a test causes this to happen. + return + } + dc.setAck(confirmation.Ack) + delete(d.confirmations, confirmation.DeliveryTag) +} + +func (d *deferredConfirmations) ConfirmMultiple(confirmation Confirmation) { + d.m.Lock() + defer d.m.Unlock() + + for k, v := range d.confirmations { + if k <= confirmation.DeliveryTag { + v.setAck(confirmation.Ack) + delete(d.confirmations, k) + } + } +} + +// Close nacks all pending DeferredConfirmations being blocked by dc.Wait(). +func (d *deferredConfirmations) Close() { + d.m.Lock() + defer d.m.Unlock() + + for k, v := range d.confirmations { + v.setAck(false) + delete(d.confirmations, k) + } +} + +// setAck sets the acknowledgement status of the confirmation. Note that it must +// not be called more than once. +func (d *DeferredConfirmation) setAck(ack bool) { + d.ack = ack + close(d.done) +} + +// Done returns the channel that can be used to wait for the publisher +// confirmation. +func (d *DeferredConfirmation) Done() <-chan struct{} { + return d.done +} + +// Acked returns the publisher confirmation in a non-blocking manner. It returns +// false if the confirmation was not acknowledged yet or received negative +// acknowledgement. +func (d *DeferredConfirmation) Acked() bool { + select { + case <-d.done: + default: + return false + } + return d.ack +} + +// Wait blocks until the publisher confirmation. It returns true if the server +// successfully received the publishing. +func (d *DeferredConfirmation) Wait() bool { + <-d.done + return d.ack +} + +// WaitContext waits until the publisher confirmation. It returns true if the +// server successfully received the publishing. If the context expires before +// that, ctx.Err() is returned. +func (d *DeferredConfirmation) WaitContext(ctx context.Context) (bool, error) { + select { + case <-ctx.Done(): + return false, ctx.Err() + case <-d.done: + } + return d.ack, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go new file mode 100644 index 0000000..e167a23 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/connection.go @@ -0,0 +1,1172 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bufio" + "crypto/tls" + "crypto/x509" + "errors" + "fmt" + "io" + "net" + "os" + "reflect" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" +) + +const ( + maxChannelMax = (2 << 15) - 1 + + defaultHeartbeat = 10 * time.Second + defaultConnectionTimeout = 30 * time.Second + defaultProduct = "AMQP 0.9.1 Client" + buildVersion = "1.10.0" + platform = "golang" + // Safer default that makes channel leaks a lot easier to spot + // before they create operational headaches. See https://github.com/rabbitmq/rabbitmq-server/issues/1593. + defaultChannelMax = uint16((2 << 10) - 1) + defaultLocale = "en_US" +) + +// Config is used in DialConfig and Open to specify the desired tuning +// parameters used during a connection open handshake. The negotiated tuning +// will be stored in the returned connection's Config field. +type Config struct { + // The SASL mechanisms to try in the client request, and the successful + // mechanism used on the Connection object. + // If SASL is nil, PlainAuth from the URL is used. + SASL []Authentication + + // Vhost specifies the namespace of permissions, exchanges, queues and + // bindings on the server. Dial sets this to the path parsed from the URL. + Vhost string + + ChannelMax uint16 // 0 max channels means 2^16 - 1 + FrameSize int // 0 max bytes means unlimited + Heartbeat time.Duration // less than 1s uses the server's interval + + // TLSClientConfig specifies the client configuration of the TLS connection + // when establishing a tls transport. + // If the URL uses an amqps scheme, then an empty tls.Config with the + // ServerName from the URL is used. + TLSClientConfig *tls.Config + + // Properties is table of properties that the client advertises to the server. + // This is an optional setting - if the application does not set this, + // the underlying library will use a generic set of client properties. + Properties Table + + // Connection locale that we expect to always be en_US + // Even though servers must return it as per the AMQP 0-9-1 spec, + // we are not aware of it being used other than to satisfy the spec requirements + Locale string + + // Dial returns a net.Conn prepared for a TLS handshake with TSLClientConfig, + // then an AMQP connection handshake. + // If Dial is nil, net.DialTimeout with a 30s connection and 30s deadline is + // used during TLS and AMQP handshaking. + Dial func(network, addr string) (net.Conn, error) +} + +// NewConnectionProperties creates an amqp.Table to be used as amqp.Config.Properties. +// +// Defaults to library-defined values. For empty properties, use make(amqp.Table) instead. +func NewConnectionProperties() Table { + return Table{ + "product": defaultProduct, + "version": buildVersion, + "platform": platform, + } +} + +// Connection manages the serialization and deserialization of frames from IO +// and dispatches the frames to the appropriate channel. All RPC methods and +// asynchronous Publishing, Delivery, Ack, Nack and Return messages are +// multiplexed on this channel. There must always be active receivers for +// every asynchronous message on this connection. +type Connection struct { + destructor sync.Once // shutdown once + sendM sync.Mutex // conn writer mutex + m sync.Mutex // struct field mutex + + conn io.ReadWriteCloser + + rpc chan message + writer *writer + sends chan time.Time // timestamps of each frame sent + deadlines chan readDeadliner // heartbeater updates read deadlines + + allocator *allocator // id generator valid after openTune + channels map[uint16]*Channel + + noNotify bool // true when we will never notify again + closes []chan *Error + blocks []chan Blocking + + errors chan *Error + // if connection is closed should close this chan + close chan struct{} + + Config Config // The negotiated Config after connection.open + + Major int // Server's major version + Minor int // Server's minor version + Properties Table // Server properties + Locales []string // Server locales + + closed int32 // Will be 1 if the connection is closed, 0 otherwise. Should only be accessed as atomic +} + +type readDeadliner interface { + SetReadDeadline(time.Time) error +} + +// DefaultDial establishes a connection when config.Dial is not provided +func DefaultDial(connectionTimeout time.Duration) func(network, addr string) (net.Conn, error) { + return func(network, addr string) (net.Conn, error) { + conn, err := net.DialTimeout(network, addr, connectionTimeout) + if err != nil { + return nil, err + } + + // Heartbeating hasn't started yet, don't stall forever on a dead server. + // A deadline is set for TLS and AMQP handshaking. After AMQP is established, + // the deadline is cleared in openComplete. + if err := conn.SetDeadline(time.Now().Add(connectionTimeout)); err != nil { + return nil, err + } + + return conn, nil + } +} + +// Dial accepts a string in the AMQP URI format and returns a new Connection +// over TCP using PlainAuth. Defaults to a server heartbeat interval of 10 +// seconds and sets the handshake deadline to 30 seconds. After handshake, +// deadlines are cleared. +// +// Dial uses the zero value of tls.Config when it encounters an amqps:// +// scheme. It is equivalent to calling DialTLS(amqp, nil). +func Dial(url string) (*Connection, error) { + return DialConfig(url, Config{ + Locale: defaultLocale, + }) +} + +// DialTLS accepts a string in the AMQP URI format and returns a new Connection +// over TCP using PlainAuth. Defaults to a server heartbeat interval of 10 +// seconds and sets the initial read deadline to 30 seconds. +// +// DialTLS uses the provided tls.Config when encountering an amqps:// scheme. +func DialTLS(url string, amqps *tls.Config) (*Connection, error) { + return DialConfig(url, Config{ + TLSClientConfig: amqps, + Locale: defaultLocale, + }) +} + +// DialTLS_ExternalAuth accepts a string in the AMQP URI format and returns a +// new Connection over TCP using EXTERNAL auth. Defaults to a server heartbeat +// interval of 10 seconds and sets the initial read deadline to 30 seconds. +// +// This mechanism is used, when RabbitMQ is configured for EXTERNAL auth with +// ssl_cert_login plugin for userless/passwordless logons +// +// DialTLS_ExternalAuth uses the provided tls.Config when encountering an +// amqps:// scheme. +func DialTLS_ExternalAuth(url string, amqps *tls.Config) (*Connection, error) { + return DialConfig(url, Config{ + TLSClientConfig: amqps, + SASL: []Authentication{&ExternalAuth{}}, + }) +} + +// DialConfig accepts a string in the AMQP URI format and a configuration for +// the transport and connection setup, returning a new Connection. Defaults to +// a server heartbeat interval of 10 seconds and sets the initial read deadline +// to 30 seconds. The heartbeat interval specified in the AMQP URI takes precedence +// over the value specified in the config. To disable heartbeats, you must use +// the AMQP URI and set heartbeat=0 there. +func DialConfig(url string, config Config) (*Connection, error) { + var err error + var conn net.Conn + + uri, err := ParseURI(url) + if err != nil { + return nil, err + } + + if config.SASL == nil { + if uri.AuthMechanism != nil { + for _, identifier := range uri.AuthMechanism { + switch strings.ToUpper(identifier) { + case "PLAIN": + config.SASL = append(config.SASL, uri.PlainAuth()) + case "AMQPLAIN": + config.SASL = append(config.SASL, uri.AMQPlainAuth()) + case "EXTERNAL": + config.SASL = append(config.SASL, &ExternalAuth{}) + default: + return nil, fmt.Errorf("unsupported auth_mechanism: %v", identifier) + } + } + } else { + config.SASL = []Authentication{uri.PlainAuth()} + } + } + + if config.Vhost == "" { + config.Vhost = uri.Vhost + } + + if uri.Heartbeat.hasValue { + config.Heartbeat = uri.Heartbeat.value + } else { + if config.Heartbeat == 0 { + config.Heartbeat = defaultHeartbeat + } + } + + if config.ChannelMax == 0 { + config.ChannelMax = uri.ChannelMax + } + + connectionTimeout := defaultConnectionTimeout + if uri.ConnectionTimeout != 0 { + connectionTimeout = time.Duration(uri.ConnectionTimeout) * time.Millisecond + } + + addr := net.JoinHostPort(uri.Host, strconv.FormatInt(int64(uri.Port), 10)) + + dialer := config.Dial + if dialer == nil { + dialer = DefaultDial(connectionTimeout) + } + + conn, err = dialer("tcp", addr) + if err != nil { + return nil, err + } + + if uri.Scheme == "amqps" { + if config.TLSClientConfig == nil { + tlsConfig, err := tlsConfigFromURI(uri) + if err != nil { + return nil, fmt.Errorf("create TLS config from URI: %w", err) + } + config.TLSClientConfig = tlsConfig + } + + // If ServerName has not been specified in TLSClientConfig, + // set it to the URI host used for this connection. + if config.TLSClientConfig.ServerName == "" { + config.TLSClientConfig.ServerName = uri.Host + } + + client := tls.Client(conn, config.TLSClientConfig) + if err := client.Handshake(); err != nil { + conn.Close() + return nil, err + } + + conn = client + } + + return Open(conn, config) +} + +/* +Open accepts an already established connection, or other io.ReadWriteCloser as +a transport. Use this method if you have established a TLS connection or wish +to use your own custom transport. +*/ +func Open(conn io.ReadWriteCloser, config Config) (*Connection, error) { + c := &Connection{ + conn: conn, + writer: &writer{bufio.NewWriter(conn)}, + channels: make(map[uint16]*Channel), + rpc: make(chan message), + sends: make(chan time.Time), + errors: make(chan *Error, 1), + close: make(chan struct{}), + deadlines: make(chan readDeadliner, 1), + } + go c.reader(conn) + return c, c.open(config) +} + +/* +UpdateSecret updates the secret used to authenticate this connection. It is used when +secrets have an expiration date and need to be renewed, like OAuth 2 tokens. + +It returns an error if the operation is not successful, or if the connection is closed. +*/ +func (c *Connection) UpdateSecret(newSecret, reason string) error { + if c.IsClosed() { + return ErrClosed + } + return c.call(&connectionUpdateSecret{ + NewSecret: newSecret, + Reason: reason, + }, &connectionUpdateSecretOk{}) +} + +/* +LocalAddr returns the local TCP peer address, or ":0" (the zero value of net.TCPAddr) +as a fallback default value if the underlying transport does not support LocalAddr(). +*/ +func (c *Connection) LocalAddr() net.Addr { + if conn, ok := c.conn.(interface { + LocalAddr() net.Addr + }); ok { + return conn.LocalAddr() + } + return &net.TCPAddr{} +} + +/* +RemoteAddr returns the remote TCP peer address, if known. +*/ +func (c *Connection) RemoteAddr() net.Addr { + if conn, ok := c.conn.(interface { + RemoteAddr() net.Addr + }); ok { + return conn.RemoteAddr() + } + return &net.TCPAddr{} +} + +// ConnectionState returns basic TLS details of the underlying transport. +// Returns a zero value when the underlying connection does not implement +// ConnectionState() tls.ConnectionState. +func (c *Connection) ConnectionState() tls.ConnectionState { + if conn, ok := c.conn.(interface { + ConnectionState() tls.ConnectionState + }); ok { + return conn.ConnectionState() + } + return tls.ConnectionState{} +} + +/* +NotifyClose registers a listener for close events either initiated by an error +accompanying a connection.close method or by a normal shutdown. + +The chan provided will be closed when the Connection is closed and on a +graceful close, no error will be sent. + +In case of a non graceful close the error will be notified synchronously by the library +so that it will be necessary to consume the Channel from the caller in order to avoid deadlocks + +To reconnect after a transport or protocol error, register a listener here and +re-run your setup process. +*/ +func (c *Connection) NotifyClose(receiver chan *Error) chan *Error { + c.m.Lock() + defer c.m.Unlock() + + if c.noNotify { + close(receiver) + } else { + c.closes = append(c.closes, receiver) + } + + return receiver +} + +/* +NotifyBlocked registers a listener for RabbitMQ specific TCP flow control +method extensions connection.blocked and connection.unblocked. Flow control is +active with a reason when Blocking.Blocked is true. When a Connection is +blocked, all methods will block across all connections until server resources +become free again. + +This optional extension is supported by the server when the +"connection.blocked" server capability key is true. +*/ +func (c *Connection) NotifyBlocked(receiver chan Blocking) chan Blocking { + c.m.Lock() + defer c.m.Unlock() + + if c.noNotify { + close(receiver) + } else { + c.blocks = append(c.blocks, receiver) + } + + return receiver +} + +/* +Close requests and waits for the response to close the AMQP connection. + +It's advisable to use this message when publishing to ensure all kernel buffers +have been flushed on the server and client before exiting. + +An error indicates that server may not have received this request to close but +the connection should be treated as closed regardless. + +After returning from this call, all resources associated with this connection, +including the underlying io, Channels, Notify listeners and Channel consumers +will also be closed. +*/ +func (c *Connection) Close() error { + if c.IsClosed() { + return ErrClosed + } + + defer c.shutdown(nil) + return c.call( + &connectionClose{ + ReplyCode: replySuccess, + ReplyText: "kthxbai", + }, + &connectionCloseOk{}, + ) +} + +// CloseDeadline requests and waits for the response to close this AMQP connection. +// +// Accepts a deadline for waiting the server response. The deadline is passed +// to the low-level connection i.e. network socket. +// +// Regardless of the error returned, the connection is considered closed, and it +// should not be used after calling this function. +// +// In the event of an I/O timeout, connection-closed listeners are NOT informed. +// +// After returning from this call, all resources associated with this connection, +// including the underlying io, Channels, Notify listeners and Channel consumers +// will also be closed. +func (c *Connection) CloseDeadline(deadline time.Time) error { + if c.IsClosed() { + return ErrClosed + } + + defer c.shutdown(nil) + + err := c.setDeadline(deadline) + if err != nil { + return err + } + + return c.call( + &connectionClose{ + ReplyCode: replySuccess, + ReplyText: "kthxbai", + }, + &connectionCloseOk{}, + ) +} + +func (c *Connection) closeWith(err *Error) error { + if c.IsClosed() { + return ErrClosed + } + + defer c.shutdown(err) + + return c.call( + &connectionClose{ + ReplyCode: uint16(err.Code), + ReplyText: err.Reason, + }, + &connectionCloseOk{}, + ) +} + +// IsClosed returns true if the connection is marked as closed, otherwise false +// is returned. +func (c *Connection) IsClosed() bool { + return atomic.LoadInt32(&c.closed) == 1 +} + +// setDeadline is a wrapper to type assert Connection.conn and set an I/O +// deadline in the underlying TCP connection socket, by calling +// net.Conn.SetDeadline(). It returns an error, in case the type assertion fails, +// although this should never happen. +func (c *Connection) setDeadline(t time.Time) error { + con, ok := c.conn.(net.Conn) + if !ok { + return errInvalidTypeAssertion + } + return con.SetDeadline(t) +} + +func (c *Connection) send(f frame) error { + if c.IsClosed() { + return ErrClosed + } + + c.sendM.Lock() + err := c.writer.WriteFrame(f) + c.sendM.Unlock() + + if err != nil { + // shutdown could be re-entrant from signaling notify chans + go c.shutdown(&Error{ + Code: FrameError, + Reason: err.Error(), + }) + } else { + // Broadcast we sent a frame, reducing heartbeats, only + // if there is something that can receive - like a non-reentrant + // call or if the heartbeater isn't running + select { + case c.sends <- time.Now(): + default: + } + } + + return err +} + +// This method is intended to be used with sendUnflushed() to end a sequence +// of sendUnflushed() calls and flush the connection +func (c *Connection) endSendUnflushed() error { + c.sendM.Lock() + defer c.sendM.Unlock() + return c.flush() +} + +// sendUnflushed performs an *Unflushed* write. It is otherwise equivalent to +// send(), and we provide a separate flush() function to explicitly flush the +// buffer after all Frames are written. +// +// Why is this a thing? +// +// send() method uses writer.WriteFrame(), which will write the Frame then +// flush the buffer. For cases like the sendOpen() method on Channel, which +// sends multiple Frames (methodFrame, headerFrame, N x bodyFrame), flushing +// after each Frame is inefficient as it negates much of the benefit of using a +// buffered writer, and results in more syscalls than necessary. Flushing buffers +// after every frame can have a significant performance impact when sending +// (basicPublish) small messages, so this method performs an *Unflushed* write +// but is otherwise equivalent to send() method, and we provide a separate +// flush method to explicitly flush the buffer after all Frames are written. +func (c *Connection) sendUnflushed(f frame) error { + if c.IsClosed() { + return ErrClosed + } + + c.sendM.Lock() + err := c.writer.WriteFrameNoFlush(f) + c.sendM.Unlock() + + if err != nil { + // shutdown could be re-entrant from signaling notify chans + go c.shutdown(&Error{ + Code: FrameError, + Reason: err.Error(), + }) + } + + return err +} + +// This method is intended to be used with sendUnflushed() to explicitly flush +// the buffer after all required Frames have been written to the buffer. +func (c *Connection) flush() (err error) { + if buf, ok := c.writer.w.(*bufio.Writer); ok { + err = buf.Flush() + + // Moving send notifier to flush increases basicPublish for the small message + // case. As sendUnflushed + flush is used for the case of sending semantically + // related Frames (e.g. a Message like basicPublish) there is no real advantage + // to sending per Frame vice per "group of related Frames" and for the case of + // small messages time.Now() is (relatively) expensive. + if err == nil { + // Broadcast we sent a frame, reducing heartbeats, only + // if there is something that can receive - like a non-reentrant + // call or if the heartbeater isn't running + select { + case c.sends <- time.Now(): + default: + } + } + } + + return +} + +func (c *Connection) shutdown(err *Error) { + atomic.StoreInt32(&c.closed, 1) + + c.destructor.Do(func() { + c.m.Lock() + defer c.m.Unlock() + + if err != nil { + for _, c := range c.closes { + c <- err + } + c.errors <- err + } + // Shutdown handler goroutine can still receive the result. + close(c.errors) + + for _, c := range c.closes { + close(c) + } + + for _, c := range c.blocks { + close(c) + } + + // Shutdown the channel, but do not use closeChannel() as it calls + // releaseChannel() which requires the connection lock. + // + // Ranging over c.channels and calling releaseChannel() that mutates + // c.channels is racy - see commit 6063341 for an example. + for _, ch := range c.channels { + ch.shutdown(err) + } + + c.conn.Close() + // reader exit + close(c.close) + + c.channels = nil + c.allocator = nil + c.noNotify = true + }) +} + +// All methods sent to the connection channel should be synchronous so we +// can handle them directly without a framing component +func (c *Connection) demux(f frame) { + if f.channel() == 0 { + c.dispatch0(f) + } else { + c.dispatchN(f) + } +} + +func (c *Connection) dispatch0(f frame) { + switch mf := f.(type) { + case *methodFrame: + switch m := mf.Method.(type) { + case *connectionClose: + // Send immediately as shutdown will close our side of the writer. + f := &methodFrame{ChannelId: 0, Method: &connectionCloseOk{}} + if err := c.send(f); err != nil { + Logger.Printf("error sending connectionCloseOk, error: %+v", err) + } + c.shutdown(newError(m.ReplyCode, m.ReplyText)) + case *connectionBlocked: + for _, c := range c.blocks { + c <- Blocking{Active: true, Reason: m.Reason} + } + case *connectionUnblocked: + for _, c := range c.blocks { + c <- Blocking{Active: false} + } + default: + select { + case <-c.close: + return + case c.rpc <- m: + } + + } + case *heartbeatFrame: + // kthx - all reads reset our deadline. so we can drop this + default: + // lolwat - channel0 only responds to methods and heartbeats + // closeWith use call don't block reader + go func() { + if err := c.closeWith(ErrUnexpectedFrame); err != nil { + Logger.Printf("error sending connectionCloseOk with ErrUnexpectedFrame, error: %+v", err) + } + }() + } +} + +func (c *Connection) dispatchN(f frame) { + c.m.Lock() + channel, ok := c.channels[f.channel()] + if ok { + updateChannel(f, channel) + } else { + Logger.Printf("[debug] dropping frame, channel %d does not exist", f.channel()) + } + c.m.Unlock() + + // Note: this could result in concurrent dispatch depending on + // how channels are managed in an application + if ok { + channel.recv(channel, f) + } else { + c.dispatchClosed(f) + } +} + +// section 2.3.7: "When a peer decides to close a channel or connection, it +// sends a Close method. The receiving peer MUST respond to a Close with a +// Close-Ok, and then both parties can close their channel or connection. Note +// that if peers ignore Close, deadlock can happen when both peers send Close +// at the same time." +// +// When we don't have a channel, so we must respond with close-ok on a close +// method. This can happen between a channel exception on an asynchronous +// method like basic.publish and a synchronous close with channel.close. +// In that case, we'll get both a channel.close and channel.close-ok in any +// order. +func (c *Connection) dispatchClosed(f frame) { + // Only consider method frames, drop content/header frames + if mf, ok := f.(*methodFrame); ok { + switch mf.Method.(type) { + case *channelClose: + f := &methodFrame{ChannelId: f.channel(), Method: &channelCloseOk{}} + if err := c.send(f); err != nil { + Logger.Printf("error sending channelCloseOk, channel id: %d error: %+v", f.channel(), err) + } + case *channelCloseOk: + // we are already closed, so do nothing + default: + // unexpected method on closed channel + // closeWith use call don't block reader + go func() { + if err := c.closeWith(ErrClosed); err != nil { + Logger.Printf("error sending connectionCloseOk with ErrClosed, error: %+v", err) + } + }() + } + } +} + +// Reads each frame off the IO and hand off to the connection object that +// will demux the streams and dispatch to one of the opened channels or +// handle on channel 0 (the connection channel). +func (c *Connection) reader(r io.Reader) { + buf := bufio.NewReader(r) + frames := &reader{buf} + conn, haveDeadliner := r.(readDeadliner) + + defer close(c.rpc) + + for { + frame, err := frames.ReadFrame() + + if err != nil { + c.shutdown(&Error{Code: FrameError, Reason: err.Error()}) + return + } + + c.demux(frame) + + if haveDeadliner { + select { + case c.deadlines <- conn: + default: + // On c.Close() c.heartbeater() might exit just before c.deadlines <- conn is called. + // Which results in this goroutine being stuck forever. + } + } + } +} + +// Ensures that at least one frame is being sent at the tuned interval with a +// jitter tolerance of 1s +func (c *Connection) heartbeater(interval time.Duration, done chan *Error) { + const maxServerHeartbeatsInFlight = 3 + + var sendTicks <-chan time.Time + if interval > 0 { + ticker := time.NewTicker(interval) + defer ticker.Stop() + sendTicks = ticker.C + } + + lastSent := time.Now() + + for { + select { + case at, stillSending := <-c.sends: + // When actively sending, depend on sent frames to reset server timer + if stillSending { + lastSent = at + } else { + return + } + + case at := <-sendTicks: + // When idle, fill the space with a heartbeat frame + if at.Sub(lastSent) > interval-time.Second { + if err := c.send(&heartbeatFrame{}); err != nil { + // send heartbeats even after close/closeOk so we + // tick until the connection starts erroring + return + } + } + + case conn := <-c.deadlines: + // When reading, reset our side of the deadline, if we've negotiated one with + // a deadline that covers at least 2 server heartbeats + if interval > 0 { + if err := conn.SetReadDeadline(time.Now().Add(maxServerHeartbeatsInFlight * interval)); err != nil { + var opErr *net.OpError + if !errors.As(err, &opErr) { + Logger.Printf("error setting read deadline in heartbeater: %+v", err) + return + } + } + } + + case <-done: + return + } + } +} + +// Convenience method to inspect the Connection.Properties["capabilities"] +// Table for server identified capabilities like "basic.ack" or +// "confirm.select". +func (c *Connection) isCapable(featureName string) bool { + capabilities, _ := c.Properties["capabilities"].(Table) + hasFeature, _ := capabilities[featureName].(bool) + return hasFeature +} + +// allocateChannel records but does not open a new channel with a unique id. +// This method is the initial part of the channel lifecycle and paired with +// releaseChannel +func (c *Connection) allocateChannel() (*Channel, error) { + c.m.Lock() + defer c.m.Unlock() + + if c.IsClosed() { + return nil, ErrClosed + } + + id, ok := c.allocator.next() + if !ok { + return nil, ErrChannelMax + } + + ch := newChannel(c, uint16(id)) + c.channels[uint16(id)] = ch + + return ch, nil +} + +// releaseChannel removes a channel from the registry as the final part of the +// channel lifecycle +func (c *Connection) releaseChannel(ch *Channel) { + c.m.Lock() + defer c.m.Unlock() + + if !c.IsClosed() { + got, ok := c.channels[ch.id] + if ok && got == ch { + delete(c.channels, ch.id) + c.allocator.release(int(ch.id)) + } + } +} + +// openChannel allocates and opens a channel, must be paired with closeChannel +func (c *Connection) openChannel() (*Channel, error) { + ch, err := c.allocateChannel() + if err != nil { + return nil, err + } + + if err := ch.open(); err != nil { + c.releaseChannel(ch) + return nil, err + } + return ch, nil +} + +// closeChannel releases and initiates a shutdown of the channel. All channel +// closures should be initiated here for proper channel lifecycle management on +// this connection. +func (c *Connection) closeChannel(ch *Channel, e *Error) { + ch.shutdown(e) + c.releaseChannel(ch) +} + +/* +Channel opens a unique, concurrent server channel to process the bulk of AMQP +messages. Any error from methods on this receiver will render the receiver +invalid and a new Channel should be opened. +*/ +func (c *Connection) Channel() (*Channel, error) { + return c.openChannel() +} + +func (c *Connection) call(req message, res ...message) error { + // Special case for when the protocol header frame is sent insted of a + // request method + if req != nil { + if err := c.send(&methodFrame{ChannelId: 0, Method: req}); err != nil { + return err + } + } + + var msg message + select { + case e, ok := <-c.errors: + if ok { + return e + } + return ErrClosed + case msg = <-c.rpc: + } + + // Try to match one of the result types + for _, try := range res { + if reflect.TypeOf(msg) == reflect.TypeOf(try) { + // *res = *msg + vres := reflect.ValueOf(try).Elem() + vmsg := reflect.ValueOf(msg).Elem() + vres.Set(vmsg) + return nil + } + } + return ErrCommandInvalid +} + +// Communication flow to open, use and close a connection. 'C:' are +// frames sent by the Client. 'S:' are frames sent by the Server. +// +// Connection = open-Connection *use-Connection close-Connection +// +// open-Connection = C:protocol-header +// S:START C:START-OK +// *challenge +// S:TUNE C:TUNE-OK +// C:OPEN S:OPEN-OK +// +// challenge = S:SECURE C:SECURE-OK +// +// use-Connection = *channel +// +// close-Connection = C:CLOSE S:CLOSE-OK +// S:CLOSE C:CLOSE-OK +func (c *Connection) open(config Config) error { + if err := c.send(&protocolHeader{}); err != nil { + return err + } + + return c.openStart(config) +} + +func (c *Connection) openStart(config Config) error { + start := &connectionStart{} + + if err := c.call(nil, start); err != nil { + return err + } + + c.Major = int(start.VersionMajor) + c.Minor = int(start.VersionMinor) + c.Properties = start.ServerProperties + c.Locales = strings.Split(start.Locales, " ") + + // eventually support challenge/response here by also responding to + // connectionSecure. + auth, ok := pickSASLMechanism(config.SASL, strings.Split(start.Mechanisms, " ")) + if !ok { + return ErrSASL + } + + // Save this mechanism off as the one we chose + c.Config.SASL = []Authentication{auth} + + // Set the connection locale to client locale + c.Config.Locale = config.Locale + + return c.openTune(config, auth) +} + +func (c *Connection) openTune(config Config, auth Authentication) error { + if len(config.Properties) == 0 { + config.Properties = NewConnectionProperties() + } + + config.Properties["capabilities"] = Table{ + "connection.blocked": true, + "consumer_cancel_notify": true, + "basic.nack": true, + "publisher_confirms": true, + } + + ok := &connectionStartOk{ + ClientProperties: config.Properties, + Mechanism: auth.Mechanism(), + Response: auth.Response(), + Locale: config.Locale, + } + tune := &connectionTune{} + + if err := c.call(ok, tune); err != nil { + // per spec, a connection can only be closed when it has been opened + // so at this point, we know it's an auth error, but the socket + // was closed instead. Return a meaningful error. + return ErrCredentials + } + + // Edge case that may race with c.shutdown() + // https://github.com/rabbitmq/amqp091-go/issues/170 + c.m.Lock() + + // When the server and client both use default 0, then the max channel is + // only limited by uint16. + c.Config.ChannelMax = pickUInt16(config.ChannelMax, tune.ChannelMax) + if c.Config.ChannelMax == 0 { + c.Config.ChannelMax = defaultChannelMax + } + c.Config.ChannelMax = minUInt16(c.Config.ChannelMax, maxChannelMax) + + c.allocator = newAllocator(1, int(c.Config.ChannelMax)) + + c.m.Unlock() + + // Frame size includes headers and end byte (len(payload)+8), even if + // this is less than FrameMinSize, use what the server sends because the + // alternative is to stop the handshake here. + c.Config.FrameSize = pick(config.FrameSize, int(tune.FrameMax)) + + // Save this off for resetDeadline() + c.Config.Heartbeat = time.Second * time.Duration(pick( + int(config.Heartbeat/time.Second), + int(tune.Heartbeat))) + + // "The client should start sending heartbeats after receiving a + // Connection.Tune method" + go c.heartbeater(c.Config.Heartbeat/2, c.NotifyClose(make(chan *Error, 1))) + + if err := c.send(&methodFrame{ + ChannelId: 0, + Method: &connectionTuneOk{ + ChannelMax: uint16(c.Config.ChannelMax), + FrameMax: uint32(c.Config.FrameSize), + Heartbeat: uint16(c.Config.Heartbeat / time.Second), + }, + }); err != nil { + return err + } + + return c.openVhost(config) +} + +func (c *Connection) openVhost(config Config) error { + req := &connectionOpen{VirtualHost: config.Vhost} + res := &connectionOpenOk{} + + if err := c.call(req, res); err != nil { + // Cannot be closed yet, but we know it's a vhost problem + return ErrVhost + } + + c.Config.Vhost = config.Vhost + + return c.openComplete() +} + +// openComplete performs any final Connection initialization dependent on the +// connection handshake and clears any state needed for TLS and AMQP handshaking. +func (c *Connection) openComplete() error { + // We clear the deadlines and let the heartbeater reset the read deadline if requested. + // RabbitMQ uses TCP flow control at this point for pushback so Writes can + // intentionally block. + if deadliner, ok := c.conn.(interface { + SetDeadline(time.Time) error + }); ok { + _ = deadliner.SetDeadline(time.Time{}) + } + + return nil +} + +// tlsConfigFromURI tries to create TLS configuration based on query parameters. +// Returns default (empty) config in case no suitable client cert and/or client key not provided. +// Returns error in case certificates can not be parsed. +func tlsConfigFromURI(uri URI) (*tls.Config, error) { + var certPool *x509.CertPool + if uri.CACertFile != "" { + data, err := os.ReadFile(uri.CACertFile) + if err != nil { + return nil, fmt.Errorf("read CA certificate: %w", err) + } + + certPool = x509.NewCertPool() + certPool.AppendCertsFromPEM(data) + } else if sysPool, err := x509.SystemCertPool(); err != nil { + return nil, fmt.Errorf("load system certificates: %w", err) + } else { + certPool = sysPool + } + + if uri.CertFile == "" || uri.KeyFile == "" { + // no client auth (mTLS), just server auth + return &tls.Config{ + RootCAs: certPool, + ServerName: uri.ServerName, + }, nil + } + + certificate, err := tls.LoadX509KeyPair(uri.CertFile, uri.KeyFile) + if err != nil { + return nil, fmt.Errorf("load client certificate: %w", err) + } + + return &tls.Config{ + Certificates: []tls.Certificate{certificate}, + RootCAs: certPool, + ServerName: uri.ServerName, + }, nil +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func maxUInt16(a, b uint16) uint16 { + if a > b { + return a + } + return b +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func minUInt16(a, b uint16) uint16 { + if a < b { + return a + } + return b +} + +func pickUInt16(client, server uint16) uint16 { + if client == 0 || server == 0 { + return maxUInt16(client, server) + } else { + return minUInt16(client, server) + } +} + +func pick(client, server int) int { + if client == 0 || server == 0 { + return max(client, server) + } + return min(client, server) +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go new file mode 100644 index 0000000..c352fec --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/consumers.go @@ -0,0 +1,169 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "os" + "strconv" + "sync" + "sync/atomic" +) + +var consumerSeq uint64 + +const consumerTagLengthMax = 0xFF // see writeShortstr + +func uniqueConsumerTag() string { + return commandNameBasedUniqueConsumerTag(os.Args[0]) +} + +func commandNameBasedUniqueConsumerTag(commandName string) string { + tagPrefix := "ctag-" + tagInfix := commandName + tagSuffix := "-" + strconv.FormatUint(atomic.AddUint64(&consumerSeq, 1), 10) + + if len(tagPrefix)+len(tagInfix)+len(tagSuffix) > consumerTagLengthMax { + tagInfix = "streadway/amqp" + } + + return tagPrefix + tagInfix + tagSuffix +} + +type consumerBuffers map[string]chan *Delivery + +// Concurrent type that manages the consumerTag -> +// ingress consumerBuffer mapping +type consumers struct { + sync.WaitGroup // one for buffer + closed chan struct{} // signal buffer + + sync.Mutex // protects below + chans consumerBuffers +} + +func makeConsumers() *consumers { + return &consumers{ + closed: make(chan struct{}), + chans: make(consumerBuffers), + } +} + +func (subs *consumers) buffer(in chan *Delivery, out chan Delivery) { + defer close(out) + defer subs.Done() + + var inflight = in + var queue []*Delivery + + for delivery := range in { + queue = append(queue, delivery) + + for len(queue) > 0 { + select { + case <-subs.closed: + // closed before drained, drop in-flight + return + + case delivery, consuming := <-inflight: + if consuming { + queue = append(queue, delivery) + } else { + inflight = nil + } + + case out <- *queue[0]: + /* + * https://github.com/rabbitmq/amqp091-go/issues/179 + * https://github.com/rabbitmq/amqp091-go/pull/180 + * + * Comment from @lars-t-hansen: + * + * Given Go's slice semantics, and barring any information + * available to the compiler that proves that queue is the only + * pointer to the memory it references, the only meaning that + * queue = queue[1:] can have is basically queue += sizeof(queue + * element), ie, it bumps a pointer. Looking at the generated + * code for a simple example (on ARM64 in this case) bears this + * out. So what we're left with is an array that we have a + * pointer into the middle of. When the GC traces this pointer, + * it too does not know whether the array has multiple + * referents, and so its only sensible choice is to find the + * beginning of the array, and if the array is not already + * visited, mark every element in it, including the "dead" + * pointer. + * + * (Depending on the program dynamics, an element may eventually + * be appended to the queue when the queue is at capacity, and + * in this case the live elements are copied into a new array + * and the old array is left to be GC'd eventually, along with + * the dead object. But that can take time.) + */ + queue[0] = nil + queue = queue[1:] + } + } + } +} + +// On key conflict, close the previous channel. +func (subs *consumers) add(tag string, consumer chan Delivery) { + subs.Lock() + defer subs.Unlock() + + if prev, found := subs.chans[tag]; found { + close(prev) + } + + in := make(chan *Delivery) + subs.chans[tag] = in + + subs.Add(1) + go subs.buffer(in, consumer) +} + +func (subs *consumers) cancel(tag string) (found bool) { + subs.Lock() + defer subs.Unlock() + + ch, found := subs.chans[tag] + + if found { + delete(subs.chans, tag) + close(ch) + } + + return found +} + +func (subs *consumers) close() { + subs.Lock() + defer subs.Unlock() + + close(subs.closed) + + for tag, ch := range subs.chans { + delete(subs.chans, tag) + close(ch) + } + + subs.Wait() +} + +// Sends a delivery to a the consumer identified by `tag`. +// If unbuffered channels are used for Consume this method +// could block all deliveries until the consumer +// receives on the other end of the channel. +func (subs *consumers) send(tag string, msg *Delivery) bool { + subs.Lock() + defer subs.Unlock() + + buffer, found := subs.chans[tag] + if found { + buffer <- msg + } + + return found +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go new file mode 100644 index 0000000..e94cf34 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/delivery.go @@ -0,0 +1,173 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "errors" + "time" +) + +var errDeliveryNotInitialized = errors.New("delivery not initialized") + +// Acknowledger notifies the server of successful or failed consumption of +// deliveries via identifier found in the Delivery.DeliveryTag field. +// +// Applications can provide mock implementations in tests of Delivery handlers. +type Acknowledger interface { + Ack(tag uint64, multiple bool) error + Nack(tag uint64, multiple bool, requeue bool) error + Reject(tag uint64, requeue bool) error +} + +// Delivery captures the fields for a previously delivered message resident in +// a queue to be delivered by the server to a consumer from Channel.Consume or +// Channel.Get. +type Delivery struct { + Acknowledger Acknowledger // the channel from which this delivery arrived + + Headers Table // Application or header exchange table + + // Properties + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + DeliveryMode uint8 // queue implementation use - non-persistent (1) or persistent (2) + Priority uint8 // queue implementation use - 0 to 9 + CorrelationId string // application use - correlation identifier + ReplyTo string // application use - address to reply to (ex: RPC) + Expiration string // implementation use - message expiration spec + MessageId string // application use - message identifier + Timestamp time.Time // application use - message timestamp + Type string // application use - message type name + UserId string // application use - creating user - should be authenticated user + AppId string // application use - creating application id + + // Valid only with Channel.Consume + ConsumerTag string + + // Valid only with Channel.Get + MessageCount uint32 + + DeliveryTag uint64 + Redelivered bool + Exchange string // basic.publish exchange + RoutingKey string // basic.publish routing key + + Body []byte +} + +func newDelivery(channel *Channel, msg messageWithContent) *Delivery { + props, body := msg.getContent() + + delivery := Delivery{ + Acknowledger: channel, + + Headers: props.Headers, + ContentType: props.ContentType, + ContentEncoding: props.ContentEncoding, + DeliveryMode: props.DeliveryMode, + Priority: props.Priority, + CorrelationId: props.CorrelationId, + ReplyTo: props.ReplyTo, + Expiration: props.Expiration, + MessageId: props.MessageId, + Timestamp: props.Timestamp, + Type: props.Type, + UserId: props.UserId, + AppId: props.AppId, + + Body: body, + } + + // Properties for the delivery types + switch m := msg.(type) { + case *basicDeliver: + delivery.ConsumerTag = m.ConsumerTag + delivery.DeliveryTag = m.DeliveryTag + delivery.Redelivered = m.Redelivered + delivery.Exchange = m.Exchange + delivery.RoutingKey = m.RoutingKey + + case *basicGetOk: + delivery.MessageCount = m.MessageCount + delivery.DeliveryTag = m.DeliveryTag + delivery.Redelivered = m.Redelivered + delivery.Exchange = m.Exchange + delivery.RoutingKey = m.RoutingKey + } + + return &delivery +} + +/* +Ack delegates an acknowledgement through the Acknowledger interface that the +client or server has finished work on a delivery. + +All deliveries in AMQP must be acknowledged. If you called Channel.Consume +with autoAck true then the server will be automatically ack each message and +this method should not be called. Otherwise, you must call Delivery.Ack after +you have successfully processed this delivery. + +When multiple is true, this delivery and all prior unacknowledged deliveries +on the same channel will be acknowledged. This is useful for batch processing +of deliveries. + +An error will indicate that the acknowledge could not be delivered to the +channel it was sent from. + +Either Delivery.Ack, Delivery.Reject or Delivery.Nack must be called for every +delivery that is not automatically acknowledged. +*/ +func (d Delivery) Ack(multiple bool) error { + if d.Acknowledger == nil { + return errDeliveryNotInitialized + } + return d.Acknowledger.Ack(d.DeliveryTag, multiple) +} + +/* +Reject delegates a negatively acknowledgement through the Acknowledger interface. + +When requeue is true, queue this message to be delivered to a consumer on a +different channel. When requeue is false or the server is unable to queue this +message, it will be dropped. + +If you are batch processing deliveries, and your server supports it, prefer +Delivery.Nack. + +Either Delivery.Ack, Delivery.Reject or Delivery.Nack must be called for every +delivery that is not automatically acknowledged. +*/ +func (d Delivery) Reject(requeue bool) error { + if d.Acknowledger == nil { + return errDeliveryNotInitialized + } + return d.Acknowledger.Reject(d.DeliveryTag, requeue) +} + +/* +Nack negatively acknowledge the delivery of message(s) identified by the +delivery tag from either the client or server. + +When multiple is true, nack messages up to and including delivered messages up +until the delivery tag delivered on the same channel. + +When requeue is true, request the server to deliver this message to a different +consumer. If it is not possible or requeue is false, the message will be +dropped or delivered to a server configured dead-letter queue. + +This method must not be used to select or requeue messages the client wishes +not to handle, rather it is to inform the server that the client is incapable +of handling this message at this time. + +Either Delivery.Ack, Delivery.Reject or Delivery.Nack must be called for every +delivery that is not automatically acknowledged. +*/ +func (d Delivery) Nack(multiple, requeue bool) error { + if d.Acknowledger == nil { + return errDeliveryNotInitialized + } + return d.Acknowledger.Nack(d.DeliveryTag, multiple, requeue) +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go new file mode 100644 index 0000000..461173f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/doc.go @@ -0,0 +1,160 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package amqp091 is an AMQP 0.9.1 client with RabbitMQ extensions + +Understand the AMQP 0.9.1 messaging model by reviewing these links first. Much +of the terminology in this library directly relates to AMQP concepts. + + Resources + + http://www.rabbitmq.com/tutorials/amqp-concepts.html + http://www.rabbitmq.com/getstarted.html + http://www.rabbitmq.com/amqp-0-9-1-reference.html + +# Design + +Most other broker clients publish to queues, but in AMQP, clients publish +Exchanges instead. AMQP is programmable, meaning that both the producers and +consumers agree on the configuration of the broker, instead of requiring an +operator or system configuration that declares the logical topology in the +broker. The routing between producers and consumer queues is via Bindings. +These bindings form the logical topology of the broker. + +In this library, a message sent from publisher is called a "Publishing" and a +message received to a consumer is called a "Delivery". The fields of +Publishings and Deliveries are close but not exact mappings to the underlying +wire format to maintain stronger types. Many other libraries will combine +message properties with message headers. In this library, the message well +known properties are strongly typed fields on the Publishings and Deliveries, +whereas the user defined headers are in the Headers field. + +The method naming closely matches the protocol's method name with positional +parameters mapping to named protocol message fields. The motivation here is to +present a comprehensive view over all possible interactions with the server. + +Generally, methods that map to protocol methods of the "basic" class will be +elided in this interface, and "select" methods of various channel mode selectors +will be elided for example Channel.Confirm and Channel.Tx. + +The library is intentionally designed to be synchronous, where responses for +each protocol message are required to be received in an RPC manner. Some +methods have a noWait parameter like Channel.QueueDeclare, and some methods are +asynchronous like Channel.Publish. The error values should still be checked for +these methods as they will indicate IO failures like when the underlying +connection closes. + +# Asynchronous Events + +Clients of this library may be interested in receiving some of the protocol +messages other than Deliveries like basic.ack methods while a channel is in +confirm mode. + +The Notify* methods with Connection and Channel receivers model the pattern of +asynchronous events like closes due to exceptions, or messages that are sent out +of band from an RPC call like basic.ack or basic.flow. + +Any asynchronous events, including Deliveries and Publishings must always have +a receiver until the corresponding chans are closed. Without asynchronous +receivers, the synchronous methods will block. + +# Use Case + +It's important as a client to an AMQP topology to ensure the state of the +broker matches your expectations. For both publish and consume use cases, +make sure you declare the queues, exchanges and bindings you expect to exist +prior to calling [Channel.PublishWithContext] or [Channel.Consume]. + + // Connections start with amqp.Dial() typically from a command line argument + // or environment variable. + connection, err := amqp.Dial(os.Getenv("AMQP_URL")) + + // To cleanly shutdown by flushing kernel buffers, make sure to close and + // wait for the response. + defer connection.Close() + + // Most operations happen on a channel. If any error is returned on a + // channel, the channel will no longer be valid, throw it away and try with + // a different channel. If you use many channels, it's useful for the + // server to + channel, err := connection.Channel() + + // Declare your topology here, if it doesn't exist, it will be created, if + // it existed already and is not what you expect, then that's considered an + // error. + + // Use your connection on this topology with either Publish or Consume, or + // inspect your queues with QueueInspect. It's unwise to mix Publish and + // Consume to let TCP do its job well. + +# SSL/TLS - Secure connections + +When Dial encounters an amqps:// scheme, it will use the zero value of a +tls.Config. This will only perform server certificate and host verification. + +Use DialTLS when you wish to provide a client certificate (recommended), include +a private certificate authority's certificate in the cert chain for server +validity, or run insecure by not verifying the server certificate. DialTLS will +use the provided tls.Config when it encounters an amqps:// scheme and will dial +a plain connection when it encounters an amqp:// scheme. + +SSL/TLS in RabbitMQ is documented here: http://www.rabbitmq.com/ssl.html + +# Best practises for Connection and Channel notifications: + +In order to be notified when a connection or channel gets closed, both +structures offer the possibility to register channels using +[Channel.NotifyClose] and [Connection.NotifyClose] functions: + + notifyConnCloseCh := conn.NotifyClose(make(chan *amqp.Error, 1)) + +No errors will be sent in case of a graceful connection close. In case of a +non-graceful closure due to e.g. network issue, or forced connection closure +from the Management UI, the error will be notified synchronously by the library. + +The library sends to notification channels just once. After sending a +notification to all channels, the library closes all registered notification +channels. After receiving a notification, the application should create and +register a new channel. To avoid deadlocks in the library, it is necessary to +consume from the channels. This could be done inside a different goroutine with +a select listening on the two channels inside a for loop like: + + go func() { + for notifyConnClose != nil || notifyChanClose != nil { + select { + case err, ok := <-notifyConnClose: + if !ok { + notifyConnClose = nil + } else { + fmt.Printf("connection closed, error %s", err) + } + case err, ok := <-notifyChanClose: + if !ok { + notifyChanClose = nil + } else { + fmt.Printf("channel closed, error %s", err) + } + } + } + }() + +It is strongly recommended to use buffered channels to avoid deadlocks inside +the library. + +# Best practises for NotifyPublish notifications: + +Using [Channel.NotifyPublish] allows the caller of the library to be notified, +through a go channel, when a message has been received and confirmed by the +broker. It's advisable to wait for all Confirmations to arrive before calling +[Channel.Close] or [Connection.Close]. It is also necessary to consume from this +channel until it gets closed. The library sends synchronously to the registered channel. +It is advisable to use a buffered channel, with capacity set to the maximum acceptable +number of unconfirmed messages. + +It is important to consume from the confirmation channel at all times, in order to avoid +deadlocks in the library. +*/ +package amqp091 diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go new file mode 100644 index 0000000..c9f03ea --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/fuzz.go @@ -0,0 +1,23 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gofuzz +// +build gofuzz + +package amqp091 + +import "bytes" + +func Fuzz(data []byte) int { + r := reader{bytes.NewReader(data)} + frame, err := r.ReadFrame() + if err != nil { + if frame != nil { + panic("frame is not nil") + } + return 0 + } + return 1 +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 new file mode 100644 index 0000000..c933543 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.ps1 @@ -0,0 +1,14 @@ +$DebugPreference = 'Continue' +$ErrorActionPreference = 'Stop' + +Set-PSDebug -Off +Set-StrictMode -Version 'Latest' -ErrorAction 'Stop' -Verbose + +New-Variable -Name curdir -Option Constant -Value $PSScriptRoot + +$specDir = Resolve-Path -LiteralPath (Join-Path -Path $curdir -ChildPath 'spec') +$amqpSpecXml = Resolve-Path -LiteralPath (Join-Path -Path $specDir -ChildPath 'amqp0-9-1.stripped.extended.xml') +$gen = Resolve-Path -LiteralPath (Join-Path -Path $specDir -ChildPath 'gen.go') +$spec091 = Resolve-Path -LiteralPath (Join-Path -Path $curdir -ChildPath 'spec091.go') + +Get-Content -LiteralPath $amqpSpecXml | go run $gen | gofmt | Set-Content -Force -Path $spec091 diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh new file mode 100644 index 0000000..d46e19b --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/gen.sh @@ -0,0 +1,2 @@ +#!/bin/sh +go run spec/gen.go < spec/amqp0-9-1.stripped.extended.xml | gofmt > spec091.go diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go new file mode 100644 index 0000000..7540f13 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/log.go @@ -0,0 +1,23 @@ +// Copyright (c) 2022 VMware, Inc. or its affiliates. All Rights Reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +type Logging interface { + Printf(format string, v ...interface{}) +} + +var Logger Logging = NullLogger{} + +// Enables logging using a custom Logging instance. Note that this is +// not thread safe and should be called at application start +func SetLogger(logger Logging) { + Logger = logger +} + +type NullLogger struct { +} + +func (l NullLogger) Printf(format string, v ...interface{}) { +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go new file mode 100644 index 0000000..a8bed13 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/read.go @@ -0,0 +1,450 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bytes" + "encoding/binary" + "errors" + "io" + "time" +) + +/* +ReadFrame reads a frame from an input stream and returns an interface that can be cast into +one of the following: + + methodFrame + PropertiesFrame + bodyFrame + heartbeatFrame + +2.3.5 frame Details + +All frames consist of a header (7 octets), a payload of arbitrary size, and a +'frame-end' octet that detects malformed frames: + + 0 1 3 7 size+7 size+8 + +------+---------+-------------+ +------------+ +-----------+ + | type | channel | size | | payload | | frame-end | + +------+---------+-------------+ +------------+ +-----------+ + octet short long size octets octet + +To read a frame, we: + 1. Read the header and check the frame type and channel. + 2. Depending on the frame type, we read the payload and process it. + 3. Read the frame end octet. + +In realistic implementations where performance is a concern, we would use +“read-ahead buffering” or + +“gathering reads” to avoid doing three separate system calls to read a frame. +*/ +func (r *reader) ReadFrame() (frame frame, err error) { + var scratch [7]byte + + if _, err = io.ReadFull(r.r, scratch[:7]); err != nil { + return + } + + typ := scratch[0] + channel := binary.BigEndian.Uint16(scratch[1:3]) + size := binary.BigEndian.Uint32(scratch[3:7]) + + switch typ { + case frameMethod: + if frame, err = r.parseMethodFrame(channel, size); err != nil { + return + } + + case frameHeader: + if frame, err = r.parseHeaderFrame(channel, size); err != nil { + return + } + + case frameBody: + if frame, err = r.parseBodyFrame(channel, size); err != nil { + return nil, err + } + + case frameHeartbeat: + if frame, err = r.parseHeartbeatFrame(channel, size); err != nil { + return + } + + default: + return nil, ErrFrame + } + + if _, err = io.ReadFull(r.r, scratch[:1]); err != nil { + return nil, err + } + + if scratch[0] != frameEnd { + return nil, ErrFrame + } + + return +} + +func readShortstr(r io.Reader) (v string, err error) { + var length uint8 + if err = binary.Read(r, binary.BigEndian, &length); err != nil { + return + } + + bytes := make([]byte, length) + if _, err = io.ReadFull(r, bytes); err != nil { + return + } + return string(bytes), nil +} + +func readLongstr(r io.Reader) (v string, err error) { + var length uint32 + if err = binary.Read(r, binary.BigEndian, &length); err != nil { + return + } + + // slices can't be longer than max int32 value + if length > (^uint32(0) >> 1) { + return + } + + bytes := make([]byte, length) + if _, err = io.ReadFull(r, bytes); err != nil { + return + } + return string(bytes), nil +} + +func readDecimal(r io.Reader) (v Decimal, err error) { + if err = binary.Read(r, binary.BigEndian, &v.Scale); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &v.Value); err != nil { + return + } + return +} + +func readTimestamp(r io.Reader) (v time.Time, err error) { + var sec int64 + if err = binary.Read(r, binary.BigEndian, &sec); err != nil { + return + } + return time.Unix(sec, 0), nil +} + +/* +'A': []interface{} +'D': Decimal +'F': Table +'I': int32 +'S': string +'T': time.Time +'V': nil +'b': int8 +'B': byte +'d': float64 +'f': float32 +'l': int64 +'s': int16 +'t': bool +'x': []byte +*/ +func readField(r io.Reader) (v interface{}, err error) { + var typ byte + if err = binary.Read(r, binary.BigEndian, &typ); err != nil { + return + } + + switch typ { + case 't': + var value uint8 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value != 0, nil + + case 'B': + var value [1]byte + if _, err = io.ReadFull(r, value[0:1]); err != nil { + return + } + return value[0], nil + + case 'b': + var value int8 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 's': + var value int16 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'I': + var value int32 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'l': + var value int64 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'f': + var value float32 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'd': + var value float64 + if err = binary.Read(r, binary.BigEndian, &value); err != nil { + return + } + return value, nil + + case 'D': + return readDecimal(r) + + case 'S': + return readLongstr(r) + + case 'A': + return readArray(r) + + case 'T': + return readTimestamp(r) + + case 'F': + return readTable(r) + + case 'x': + var len int32 + if err = binary.Read(r, binary.BigEndian, &len); err != nil { + return nil, err + } + + value := make([]byte, len) + if _, err = io.ReadFull(r, value); err != nil { + return nil, err + } + return value, err + + case 'V': + return nil, nil + } + + return nil, ErrSyntax +} + +/* +Field tables are long strings that contain packed name-value pairs. The +name-value pairs are encoded as short string defining the name, and octet +defining the values type and then the value itself. The valid field types for +tables are an extension of the native integer, bit, string, and timestamp +types, and are shown in the grammar. Multi-octet integer fields are always +held in network byte order. +*/ +func readTable(r io.Reader) (table Table, err error) { + var nested bytes.Buffer + var str string + + if str, err = readLongstr(r); err != nil { + return + } + + nested.Write([]byte(str)) + + table = make(Table) + + for nested.Len() > 0 { + var key string + var value interface{} + + if key, err = readShortstr(&nested); err != nil { + return + } + + if value, err = readField(&nested); err != nil { + return + } + + table[key] = value + } + + return +} + +func readArray(r io.Reader) ([]interface{}, error) { + var ( + size uint32 + err error + ) + + if err = binary.Read(r, binary.BigEndian, &size); err != nil { + return nil, err + } + + var ( + lim = &io.LimitedReader{R: r, N: int64(size)} + arr []interface{} + field interface{} + ) + + for { + if field, err = readField(lim); err != nil { + if err == io.EOF { + break + } + return nil, err + } + arr = append(arr, field) + } + + return arr, nil +} + +// Checks if this bit mask matches the flags bitset +func hasProperty(mask uint16, prop int) bool { + return int(mask)&prop > 0 +} + +func (r *reader) parseHeaderFrame(channel uint16, size uint32) (frame frame, err error) { + hf := &headerFrame{ + ChannelId: channel, + } + + if err = binary.Read(r.r, binary.BigEndian, &hf.ClassId); err != nil { + return + } + + if err = binary.Read(r.r, binary.BigEndian, &hf.weight); err != nil { + return + } + + if err = binary.Read(r.r, binary.BigEndian, &hf.Size); err != nil { + return + } + + var flags uint16 + + if err = binary.Read(r.r, binary.BigEndian, &flags); err != nil { + return + } + + if hasProperty(flags, flagContentType) { + if hf.Properties.ContentType, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagContentEncoding) { + if hf.Properties.ContentEncoding, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagHeaders) { + if hf.Properties.Headers, err = readTable(r.r); err != nil { + return + } + } + if hasProperty(flags, flagDeliveryMode) { + if err = binary.Read(r.r, binary.BigEndian, &hf.Properties.DeliveryMode); err != nil { + return + } + } + if hasProperty(flags, flagPriority) { + if err = binary.Read(r.r, binary.BigEndian, &hf.Properties.Priority); err != nil { + return + } + } + if hasProperty(flags, flagCorrelationId) { + if hf.Properties.CorrelationId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagReplyTo) { + if hf.Properties.ReplyTo, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagExpiration) { + if hf.Properties.Expiration, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagMessageId) { + if hf.Properties.MessageId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagTimestamp) { + if hf.Properties.Timestamp, err = readTimestamp(r.r); err != nil { + return + } + } + if hasProperty(flags, flagType) { + if hf.Properties.Type, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagUserId) { + if hf.Properties.UserId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagAppId) { + if hf.Properties.AppId, err = readShortstr(r.r); err != nil { + return + } + } + if hasProperty(flags, flagReserved1) { + if hf.Properties.reserved1, err = readShortstr(r.r); err != nil { + return + } + } + + return hf, nil +} + +func (r *reader) parseBodyFrame(channel uint16, size uint32) (frame frame, err error) { + bf := &bodyFrame{ + ChannelId: channel, + Body: make([]byte, size), + } + + if _, err = io.ReadFull(r.r, bf.Body); err != nil { + return nil, err + } + + return bf, nil +} + +var errHeartbeatPayload = errors.New("Heartbeats should not have a payload") + +func (r *reader) parseHeartbeatFrame(channel uint16, size uint32) (frame frame, err error) { + hf := &heartbeatFrame{ + ChannelId: channel, + } + + if size > 0 { + return nil, errHeartbeatPayload + } + + return hf, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go new file mode 100644 index 0000000..cdc3875 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/return.go @@ -0,0 +1,64 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "time" +) + +// Return captures a flattened struct of fields returned by the server when a +// Publishing is unable to be delivered either due to the `mandatory` flag set +// and no route found, or `immediate` flag set and no free consumer. +type Return struct { + ReplyCode uint16 // reason + ReplyText string // description + Exchange string // basic.publish exchange + RoutingKey string // basic.publish routing key + + // Properties + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + Headers Table // Application or header exchange table + DeliveryMode uint8 // queue implementation use - non-persistent (1) or persistent (2) + Priority uint8 // queue implementation use - 0 to 9 + CorrelationId string // application use - correlation identifier + ReplyTo string // application use - address to to reply to (ex: RPC) + Expiration string // implementation use - message expiration spec + MessageId string // application use - message identifier + Timestamp time.Time // application use - message timestamp + Type string // application use - message type name + UserId string // application use - creating user id + AppId string // application use - creating application + + Body []byte +} + +func newReturn(msg basicReturn) *Return { + props, body := msg.getContent() + + return &Return{ + ReplyCode: msg.ReplyCode, + ReplyText: msg.ReplyText, + Exchange: msg.Exchange, + RoutingKey: msg.RoutingKey, + + Headers: props.Headers, + ContentType: props.ContentType, + ContentEncoding: props.ContentEncoding, + DeliveryMode: props.DeliveryMode, + Priority: props.Priority, + CorrelationId: props.CorrelationId, + ReplyTo: props.ReplyTo, + Expiration: props.Expiration, + MessageId: props.MessageId, + Timestamp: props.Timestamp, + Type: props.Type, + UserId: props.UserId, + AppId: props.AppId, + + Body: body, + } +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go new file mode 100644 index 0000000..6e02ba9 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/spec091.go @@ -0,0 +1,3382 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* GENERATED FILE - DO NOT EDIT */ +/* Rebuild from the spec/gen.go tool */ + +package amqp091 + +import ( + "encoding/binary" + "fmt" + "io" +) + +// Error codes that can be sent from the server during a connection or +// channel exception or used by the client to indicate a class of error like +// ErrCredentials. The text of the error is likely more interesting than +// these constants. +const ( + frameMethod = 1 + frameHeader = 2 + frameBody = 3 + frameHeartbeat = 8 + frameMinSize = 4096 + frameEnd = 206 + replySuccess = 200 + ContentTooLarge = 311 + NoRoute = 312 + NoConsumers = 313 + ConnectionForced = 320 + InvalidPath = 402 + AccessRefused = 403 + NotFound = 404 + ResourceLocked = 405 + PreconditionFailed = 406 + FrameError = 501 + SyntaxError = 502 + CommandInvalid = 503 + ChannelError = 504 + UnexpectedFrame = 505 + ResourceError = 506 + NotAllowed = 530 + NotImplemented = 540 + InternalError = 541 +) + +func isSoftExceptionCode(code int) bool { + switch code { + case 311: + return true + case 312: + return true + case 313: + return true + case 403: + return true + case 404: + return true + case 405: + return true + case 406: + return true + + } + return false +} + +type connectionStart struct { + VersionMajor byte + VersionMinor byte + ServerProperties Table + Mechanisms string + Locales string +} + +func (msg *connectionStart) id() (uint16, uint16) { + return 10, 10 +} + +func (msg *connectionStart) wait() bool { + return true +} + +func (msg *connectionStart) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.VersionMajor); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.VersionMinor); err != nil { + return + } + + if err = writeTable(w, msg.ServerProperties); err != nil { + return + } + + if err = writeLongstr(w, msg.Mechanisms); err != nil { + return + } + if err = writeLongstr(w, msg.Locales); err != nil { + return + } + + return +} + +func (msg *connectionStart) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.VersionMajor); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.VersionMinor); err != nil { + return + } + + if msg.ServerProperties, err = readTable(r); err != nil { + return + } + + if msg.Mechanisms, err = readLongstr(r); err != nil { + return + } + if msg.Locales, err = readLongstr(r); err != nil { + return + } + + return +} + +type connectionStartOk struct { + ClientProperties Table + Mechanism string + Response string + Locale string +} + +func (msg *connectionStartOk) id() (uint16, uint16) { + return 10, 11 +} + +func (msg *connectionStartOk) wait() bool { + return true +} + +func (msg *connectionStartOk) write(w io.Writer) (err error) { + + if err = writeTable(w, msg.ClientProperties); err != nil { + return + } + + if err = writeShortstr(w, msg.Mechanism); err != nil { + return + } + + if err = writeLongstr(w, msg.Response); err != nil { + return + } + + if err = writeShortstr(w, msg.Locale); err != nil { + return + } + + return +} + +func (msg *connectionStartOk) read(r io.Reader) (err error) { + + if msg.ClientProperties, err = readTable(r); err != nil { + return + } + + if msg.Mechanism, err = readShortstr(r); err != nil { + return + } + + if msg.Response, err = readLongstr(r); err != nil { + return + } + + if msg.Locale, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionSecure struct { + Challenge string +} + +func (msg *connectionSecure) id() (uint16, uint16) { + return 10, 20 +} + +func (msg *connectionSecure) wait() bool { + return true +} + +func (msg *connectionSecure) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.Challenge); err != nil { + return + } + + return +} + +func (msg *connectionSecure) read(r io.Reader) (err error) { + + if msg.Challenge, err = readLongstr(r); err != nil { + return + } + + return +} + +type connectionSecureOk struct { + Response string +} + +func (msg *connectionSecureOk) id() (uint16, uint16) { + return 10, 21 +} + +func (msg *connectionSecureOk) wait() bool { + return true +} + +func (msg *connectionSecureOk) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.Response); err != nil { + return + } + + return +} + +func (msg *connectionSecureOk) read(r io.Reader) (err error) { + + if msg.Response, err = readLongstr(r); err != nil { + return + } + + return +} + +type connectionTune struct { + ChannelMax uint16 + FrameMax uint32 + Heartbeat uint16 +} + +func (msg *connectionTune) id() (uint16, uint16) { + return 10, 30 +} + +func (msg *connectionTune) wait() bool { + return true +} + +func (msg *connectionTune) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ChannelMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.FrameMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.Heartbeat); err != nil { + return + } + + return +} + +func (msg *connectionTune) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ChannelMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.FrameMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.Heartbeat); err != nil { + return + } + + return +} + +type connectionTuneOk struct { + ChannelMax uint16 + FrameMax uint32 + Heartbeat uint16 +} + +func (msg *connectionTuneOk) id() (uint16, uint16) { + return 10, 31 +} + +func (msg *connectionTuneOk) wait() bool { + return true +} + +func (msg *connectionTuneOk) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ChannelMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.FrameMax); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.Heartbeat); err != nil { + return + } + + return +} + +func (msg *connectionTuneOk) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ChannelMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.FrameMax); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.Heartbeat); err != nil { + return + } + + return +} + +type connectionOpen struct { + VirtualHost string + reserved1 string + reserved2 bool +} + +func (msg *connectionOpen) id() (uint16, uint16) { + return 10, 40 +} + +func (msg *connectionOpen) wait() bool { + return true +} + +func (msg *connectionOpen) write(w io.Writer) (err error) { + var bits byte + + if err = writeShortstr(w, msg.VirtualHost); err != nil { + return + } + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + if msg.reserved2 { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *connectionOpen) read(r io.Reader) (err error) { + var bits byte + + if msg.VirtualHost, err = readShortstr(r); err != nil { + return + } + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.reserved2 = (bits&(1<<0) > 0) + + return +} + +type connectionOpenOk struct { + reserved1 string +} + +func (msg *connectionOpenOk) id() (uint16, uint16) { + return 10, 41 +} + +func (msg *connectionOpenOk) wait() bool { + return true +} + +func (msg *connectionOpenOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *connectionOpenOk) read(r io.Reader) (err error) { + + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionClose struct { + ReplyCode uint16 + ReplyText string + ClassId uint16 + MethodId uint16 +} + +func (msg *connectionClose) id() (uint16, uint16) { + return 10, 50 +} + +func (msg *connectionClose) wait() bool { + return true +} + +func (msg *connectionClose) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ReplyCode); err != nil { + return + } + + if err = writeShortstr(w, msg.ReplyText); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.ClassId); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.MethodId); err != nil { + return + } + + return +} + +func (msg *connectionClose) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ReplyCode); err != nil { + return + } + + if msg.ReplyText, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.ClassId); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.MethodId); err != nil { + return + } + + return +} + +type connectionCloseOk struct { +} + +func (msg *connectionCloseOk) id() (uint16, uint16) { + return 10, 51 +} + +func (msg *connectionCloseOk) wait() bool { + return true +} + +func (msg *connectionCloseOk) write(w io.Writer) (err error) { + + return +} + +func (msg *connectionCloseOk) read(r io.Reader) (err error) { + + return +} + +type connectionBlocked struct { + Reason string +} + +func (msg *connectionBlocked) id() (uint16, uint16) { + return 10, 60 +} + +func (msg *connectionBlocked) wait() bool { + return false +} + +func (msg *connectionBlocked) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.Reason); err != nil { + return + } + + return +} + +func (msg *connectionBlocked) read(r io.Reader) (err error) { + + if msg.Reason, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionUnblocked struct { +} + +func (msg *connectionUnblocked) id() (uint16, uint16) { + return 10, 61 +} + +func (msg *connectionUnblocked) wait() bool { + return false +} + +func (msg *connectionUnblocked) write(w io.Writer) (err error) { + + return +} + +func (msg *connectionUnblocked) read(r io.Reader) (err error) { + + return +} + +type connectionUpdateSecret struct { + NewSecret string + Reason string +} + +func (msg *connectionUpdateSecret) id() (uint16, uint16) { + return 10, 70 +} + +func (msg *connectionUpdateSecret) wait() bool { + return true +} + +func (msg *connectionUpdateSecret) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.NewSecret); err != nil { + return + } + + if err = writeShortstr(w, msg.Reason); err != nil { + return + } + + return +} + +func (msg *connectionUpdateSecret) read(r io.Reader) (err error) { + + if msg.NewSecret, err = readLongstr(r); err != nil { + return + } + + if msg.Reason, err = readShortstr(r); err != nil { + return + } + + return +} + +type connectionUpdateSecretOk struct { +} + +func (msg *connectionUpdateSecretOk) id() (uint16, uint16) { + return 10, 71 +} + +func (msg *connectionUpdateSecretOk) wait() bool { + return true +} + +func (msg *connectionUpdateSecretOk) write(w io.Writer) (err error) { + + return +} + +func (msg *connectionUpdateSecretOk) read(r io.Reader) (err error) { + + return +} + +type channelOpen struct { + reserved1 string +} + +func (msg *channelOpen) id() (uint16, uint16) { + return 20, 10 +} + +func (msg *channelOpen) wait() bool { + return true +} + +func (msg *channelOpen) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *channelOpen) read(r io.Reader) (err error) { + + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + return +} + +type channelOpenOk struct { + reserved1 string +} + +func (msg *channelOpenOk) id() (uint16, uint16) { + return 20, 11 +} + +func (msg *channelOpenOk) wait() bool { + return true +} + +func (msg *channelOpenOk) write(w io.Writer) (err error) { + + if err = writeLongstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *channelOpenOk) read(r io.Reader) (err error) { + + if msg.reserved1, err = readLongstr(r); err != nil { + return + } + + return +} + +type channelFlow struct { + Active bool +} + +func (msg *channelFlow) id() (uint16, uint16) { + return 20, 20 +} + +func (msg *channelFlow) wait() bool { + return true +} + +func (msg *channelFlow) write(w io.Writer) (err error) { + var bits byte + + if msg.Active { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *channelFlow) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Active = (bits&(1<<0) > 0) + + return +} + +type channelFlowOk struct { + Active bool +} + +func (msg *channelFlowOk) id() (uint16, uint16) { + return 20, 21 +} + +func (msg *channelFlowOk) wait() bool { + return false +} + +func (msg *channelFlowOk) write(w io.Writer) (err error) { + var bits byte + + if msg.Active { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *channelFlowOk) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Active = (bits&(1<<0) > 0) + + return +} + +type channelClose struct { + ReplyCode uint16 + ReplyText string + ClassId uint16 + MethodId uint16 +} + +func (msg *channelClose) id() (uint16, uint16) { + return 20, 40 +} + +func (msg *channelClose) wait() bool { + return true +} + +func (msg *channelClose) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ReplyCode); err != nil { + return + } + + if err = writeShortstr(w, msg.ReplyText); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.ClassId); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.MethodId); err != nil { + return + } + + return +} + +func (msg *channelClose) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ReplyCode); err != nil { + return + } + + if msg.ReplyText, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.ClassId); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.MethodId); err != nil { + return + } + + return +} + +type channelCloseOk struct { +} + +func (msg *channelCloseOk) id() (uint16, uint16) { + return 20, 41 +} + +func (msg *channelCloseOk) wait() bool { + return true +} + +func (msg *channelCloseOk) write(w io.Writer) (err error) { + + return +} + +func (msg *channelCloseOk) read(r io.Reader) (err error) { + + return +} + +type exchangeDeclare struct { + reserved1 uint16 + Exchange string + Type string + Passive bool + Durable bool + AutoDelete bool + Internal bool + NoWait bool + Arguments Table +} + +func (msg *exchangeDeclare) id() (uint16, uint16) { + return 40, 10 +} + +func (msg *exchangeDeclare) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeDeclare) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.Type); err != nil { + return + } + + if msg.Passive { + bits |= 1 << 0 + } + + if msg.Durable { + bits |= 1 << 1 + } + + if msg.AutoDelete { + bits |= 1 << 2 + } + + if msg.Internal { + bits |= 1 << 3 + } + + if msg.NoWait { + bits |= 1 << 4 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *exchangeDeclare) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.Type, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Passive = (bits&(1<<0) > 0) + msg.Durable = (bits&(1<<1) > 0) + msg.AutoDelete = (bits&(1<<2) > 0) + msg.Internal = (bits&(1<<3) > 0) + msg.NoWait = (bits&(1<<4) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type exchangeDeclareOk struct { +} + +func (msg *exchangeDeclareOk) id() (uint16, uint16) { + return 40, 11 +} + +func (msg *exchangeDeclareOk) wait() bool { + return true +} + +func (msg *exchangeDeclareOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeDeclareOk) read(r io.Reader) (err error) { + + return +} + +type exchangeDelete struct { + reserved1 uint16 + Exchange string + IfUnused bool + NoWait bool +} + +func (msg *exchangeDelete) id() (uint16, uint16) { + return 40, 20 +} + +func (msg *exchangeDelete) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeDelete) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + + if msg.IfUnused { + bits |= 1 << 0 + } + + if msg.NoWait { + bits |= 1 << 1 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *exchangeDelete) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.IfUnused = (bits&(1<<0) > 0) + msg.NoWait = (bits&(1<<1) > 0) + + return +} + +type exchangeDeleteOk struct { +} + +func (msg *exchangeDeleteOk) id() (uint16, uint16) { + return 40, 21 +} + +func (msg *exchangeDeleteOk) wait() bool { + return true +} + +func (msg *exchangeDeleteOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeDeleteOk) read(r io.Reader) (err error) { + + return +} + +type exchangeBind struct { + reserved1 uint16 + Destination string + Source string + RoutingKey string + NoWait bool + Arguments Table +} + +func (msg *exchangeBind) id() (uint16, uint16) { + return 40, 30 +} + +func (msg *exchangeBind) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeBind) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Destination); err != nil { + return + } + if err = writeShortstr(w, msg.Source); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *exchangeBind) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Destination, err = readShortstr(r); err != nil { + return + } + if msg.Source, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type exchangeBindOk struct { +} + +func (msg *exchangeBindOk) id() (uint16, uint16) { + return 40, 31 +} + +func (msg *exchangeBindOk) wait() bool { + return true +} + +func (msg *exchangeBindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeBindOk) read(r io.Reader) (err error) { + + return +} + +type exchangeUnbind struct { + reserved1 uint16 + Destination string + Source string + RoutingKey string + NoWait bool + Arguments Table +} + +func (msg *exchangeUnbind) id() (uint16, uint16) { + return 40, 40 +} + +func (msg *exchangeUnbind) wait() bool { + return true && !msg.NoWait +} + +func (msg *exchangeUnbind) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Destination); err != nil { + return + } + if err = writeShortstr(w, msg.Source); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *exchangeUnbind) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Destination, err = readShortstr(r); err != nil { + return + } + if msg.Source, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type exchangeUnbindOk struct { +} + +func (msg *exchangeUnbindOk) id() (uint16, uint16) { + return 40, 51 +} + +func (msg *exchangeUnbindOk) wait() bool { + return true +} + +func (msg *exchangeUnbindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *exchangeUnbindOk) read(r io.Reader) (err error) { + + return +} + +type queueDeclare struct { + reserved1 uint16 + Queue string + Passive bool + Durable bool + Exclusive bool + AutoDelete bool + NoWait bool + Arguments Table +} + +func (msg *queueDeclare) id() (uint16, uint16) { + return 50, 10 +} + +func (msg *queueDeclare) wait() bool { + return true && !msg.NoWait +} + +func (msg *queueDeclare) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.Passive { + bits |= 1 << 0 + } + + if msg.Durable { + bits |= 1 << 1 + } + + if msg.Exclusive { + bits |= 1 << 2 + } + + if msg.AutoDelete { + bits |= 1 << 3 + } + + if msg.NoWait { + bits |= 1 << 4 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *queueDeclare) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Passive = (bits&(1<<0) > 0) + msg.Durable = (bits&(1<<1) > 0) + msg.Exclusive = (bits&(1<<2) > 0) + msg.AutoDelete = (bits&(1<<3) > 0) + msg.NoWait = (bits&(1<<4) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type queueDeclareOk struct { + Queue string + MessageCount uint32 + ConsumerCount uint32 +} + +func (msg *queueDeclareOk) id() (uint16, uint16) { + return 50, 11 +} + +func (msg *queueDeclareOk) wait() bool { + return true +} + +func (msg *queueDeclareOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + if err = binary.Write(w, binary.BigEndian, msg.ConsumerCount); err != nil { + return + } + + return +} + +func (msg *queueDeclareOk) read(r io.Reader) (err error) { + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + if err = binary.Read(r, binary.BigEndian, &msg.ConsumerCount); err != nil { + return + } + + return +} + +type queueBind struct { + reserved1 uint16 + Queue string + Exchange string + RoutingKey string + NoWait bool + Arguments Table +} + +func (msg *queueBind) id() (uint16, uint16) { + return 50, 20 +} + +func (msg *queueBind) wait() bool { + return true && !msg.NoWait +} + +func (msg *queueBind) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *queueBind) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type queueBindOk struct { +} + +func (msg *queueBindOk) id() (uint16, uint16) { + return 50, 21 +} + +func (msg *queueBindOk) wait() bool { + return true +} + +func (msg *queueBindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *queueBindOk) read(r io.Reader) (err error) { + + return +} + +type queueUnbind struct { + reserved1 uint16 + Queue string + Exchange string + RoutingKey string + Arguments Table +} + +func (msg *queueUnbind) id() (uint16, uint16) { + return 50, 50 +} + +func (msg *queueUnbind) wait() bool { + return true +} + +func (msg *queueUnbind) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *queueUnbind) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type queueUnbindOk struct { +} + +func (msg *queueUnbindOk) id() (uint16, uint16) { + return 50, 51 +} + +func (msg *queueUnbindOk) wait() bool { + return true +} + +func (msg *queueUnbindOk) write(w io.Writer) (err error) { + + return +} + +func (msg *queueUnbindOk) read(r io.Reader) (err error) { + + return +} + +type queuePurge struct { + reserved1 uint16 + Queue string + NoWait bool +} + +func (msg *queuePurge) id() (uint16, uint16) { + return 50, 30 +} + +func (msg *queuePurge) wait() bool { + return true && !msg.NoWait +} + +func (msg *queuePurge) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *queuePurge) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + return +} + +type queuePurgeOk struct { + MessageCount uint32 +} + +func (msg *queuePurgeOk) id() (uint16, uint16) { + return 50, 31 +} + +func (msg *queuePurgeOk) wait() bool { + return true +} + +func (msg *queuePurgeOk) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + + return +} + +func (msg *queuePurgeOk) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + + return +} + +type queueDelete struct { + reserved1 uint16 + Queue string + IfUnused bool + IfEmpty bool + NoWait bool +} + +func (msg *queueDelete) id() (uint16, uint16) { + return 50, 40 +} + +func (msg *queueDelete) wait() bool { + return true && !msg.NoWait +} + +func (msg *queueDelete) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.IfUnused { + bits |= 1 << 0 + } + + if msg.IfEmpty { + bits |= 1 << 1 + } + + if msg.NoWait { + bits |= 1 << 2 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *queueDelete) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.IfUnused = (bits&(1<<0) > 0) + msg.IfEmpty = (bits&(1<<1) > 0) + msg.NoWait = (bits&(1<<2) > 0) + + return +} + +type queueDeleteOk struct { + MessageCount uint32 +} + +func (msg *queueDeleteOk) id() (uint16, uint16) { + return 50, 41 +} + +func (msg *queueDeleteOk) wait() bool { + return true +} + +func (msg *queueDeleteOk) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + + return +} + +func (msg *queueDeleteOk) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + + return +} + +type basicQos struct { + PrefetchSize uint32 + PrefetchCount uint16 + Global bool +} + +func (msg *basicQos) id() (uint16, uint16) { + return 60, 10 +} + +func (msg *basicQos) wait() bool { + return true +} + +func (msg *basicQos) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.PrefetchSize); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.PrefetchCount); err != nil { + return + } + + if msg.Global { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicQos) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.PrefetchSize); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.PrefetchCount); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Global = (bits&(1<<0) > 0) + + return +} + +type basicQosOk struct { +} + +func (msg *basicQosOk) id() (uint16, uint16) { + return 60, 11 +} + +func (msg *basicQosOk) wait() bool { + return true +} + +func (msg *basicQosOk) write(w io.Writer) (err error) { + + return +} + +func (msg *basicQosOk) read(r io.Reader) (err error) { + + return +} + +type basicConsume struct { + reserved1 uint16 + Queue string + ConsumerTag string + NoLocal bool + NoAck bool + Exclusive bool + NoWait bool + Arguments Table +} + +func (msg *basicConsume) id() (uint16, uint16) { + return 60, 20 +} + +func (msg *basicConsume) wait() bool { + return true && !msg.NoWait +} + +func (msg *basicConsume) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + if msg.NoLocal { + bits |= 1 << 0 + } + + if msg.NoAck { + bits |= 1 << 1 + } + + if msg.Exclusive { + bits |= 1 << 2 + } + + if msg.NoWait { + bits |= 1 << 3 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeTable(w, msg.Arguments); err != nil { + return + } + + return +} + +func (msg *basicConsume) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoLocal = (bits&(1<<0) > 0) + msg.NoAck = (bits&(1<<1) > 0) + msg.Exclusive = (bits&(1<<2) > 0) + msg.NoWait = (bits&(1<<3) > 0) + + if msg.Arguments, err = readTable(r); err != nil { + return + } + + return +} + +type basicConsumeOk struct { + ConsumerTag string +} + +func (msg *basicConsumeOk) id() (uint16, uint16) { + return 60, 21 +} + +func (msg *basicConsumeOk) wait() bool { + return true +} + +func (msg *basicConsumeOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + return +} + +func (msg *basicConsumeOk) read(r io.Reader) (err error) { + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicCancel struct { + ConsumerTag string + NoWait bool +} + +func (msg *basicCancel) id() (uint16, uint16) { + return 60, 30 +} + +func (msg *basicCancel) wait() bool { + return true && !msg.NoWait +} + +func (msg *basicCancel) write(w io.Writer) (err error) { + var bits byte + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + if msg.NoWait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicCancel) read(r io.Reader) (err error) { + var bits byte + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoWait = (bits&(1<<0) > 0) + + return +} + +type basicCancelOk struct { + ConsumerTag string +} + +func (msg *basicCancelOk) id() (uint16, uint16) { + return 60, 31 +} + +func (msg *basicCancelOk) wait() bool { + return true +} + +func (msg *basicCancelOk) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + return +} + +func (msg *basicCancelOk) read(r io.Reader) (err error) { + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicPublish struct { + reserved1 uint16 + Exchange string + RoutingKey string + Mandatory bool + Immediate bool + Properties properties + Body []byte +} + +func (msg *basicPublish) id() (uint16, uint16) { + return 60, 40 +} + +func (msg *basicPublish) wait() bool { + return false +} + +func (msg *basicPublish) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicPublish) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicPublish) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if msg.Mandatory { + bits |= 1 << 0 + } + + if msg.Immediate { + bits |= 1 << 1 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicPublish) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Mandatory = (bits&(1<<0) > 0) + msg.Immediate = (bits&(1<<1) > 0) + + return +} + +type basicReturn struct { + ReplyCode uint16 + ReplyText string + Exchange string + RoutingKey string + Properties properties + Body []byte +} + +func (msg *basicReturn) id() (uint16, uint16) { + return 60, 50 +} + +func (msg *basicReturn) wait() bool { + return false +} + +func (msg *basicReturn) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicReturn) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicReturn) write(w io.Writer) (err error) { + + if err = binary.Write(w, binary.BigEndian, msg.ReplyCode); err != nil { + return + } + + if err = writeShortstr(w, msg.ReplyText); err != nil { + return + } + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + return +} + +func (msg *basicReturn) read(r io.Reader) (err error) { + + if err = binary.Read(r, binary.BigEndian, &msg.ReplyCode); err != nil { + return + } + + if msg.ReplyText, err = readShortstr(r); err != nil { + return + } + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicDeliver struct { + ConsumerTag string + DeliveryTag uint64 + Redelivered bool + Exchange string + RoutingKey string + Properties properties + Body []byte +} + +func (msg *basicDeliver) id() (uint16, uint16) { + return 60, 60 +} + +func (msg *basicDeliver) wait() bool { + return false +} + +func (msg *basicDeliver) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicDeliver) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicDeliver) write(w io.Writer) (err error) { + var bits byte + + if err = writeShortstr(w, msg.ConsumerTag); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Redelivered { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + return +} + +func (msg *basicDeliver) read(r io.Reader) (err error) { + var bits byte + + if msg.ConsumerTag, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Redelivered = (bits&(1<<0) > 0) + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicGet struct { + reserved1 uint16 + Queue string + NoAck bool +} + +func (msg *basicGet) id() (uint16, uint16) { + return 60, 70 +} + +func (msg *basicGet) wait() bool { + return true +} + +func (msg *basicGet) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.reserved1); err != nil { + return + } + + if err = writeShortstr(w, msg.Queue); err != nil { + return + } + + if msg.NoAck { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicGet) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.reserved1); err != nil { + return + } + + if msg.Queue, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.NoAck = (bits&(1<<0) > 0) + + return +} + +type basicGetOk struct { + DeliveryTag uint64 + Redelivered bool + Exchange string + RoutingKey string + MessageCount uint32 + Properties properties + Body []byte +} + +func (msg *basicGetOk) id() (uint16, uint16) { + return 60, 71 +} + +func (msg *basicGetOk) wait() bool { + return true +} + +func (msg *basicGetOk) getContent() (properties, []byte) { + return msg.Properties, msg.Body +} + +func (msg *basicGetOk) setContent(props properties, body []byte) { + msg.Properties, msg.Body = props, body +} + +func (msg *basicGetOk) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Redelivered { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + if err = writeShortstr(w, msg.Exchange); err != nil { + return + } + if err = writeShortstr(w, msg.RoutingKey); err != nil { + return + } + + if err = binary.Write(w, binary.BigEndian, msg.MessageCount); err != nil { + return + } + + return +} + +func (msg *basicGetOk) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Redelivered = (bits&(1<<0) > 0) + + if msg.Exchange, err = readShortstr(r); err != nil { + return + } + if msg.RoutingKey, err = readShortstr(r); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &msg.MessageCount); err != nil { + return + } + + return +} + +type basicGetEmpty struct { + reserved1 string +} + +func (msg *basicGetEmpty) id() (uint16, uint16) { + return 60, 72 +} + +func (msg *basicGetEmpty) wait() bool { + return true +} + +func (msg *basicGetEmpty) write(w io.Writer) (err error) { + + if err = writeShortstr(w, msg.reserved1); err != nil { + return + } + + return +} + +func (msg *basicGetEmpty) read(r io.Reader) (err error) { + + if msg.reserved1, err = readShortstr(r); err != nil { + return + } + + return +} + +type basicAck struct { + DeliveryTag uint64 + Multiple bool +} + +func (msg *basicAck) id() (uint16, uint16) { + return 60, 80 +} + +func (msg *basicAck) wait() bool { + return false +} + +func (msg *basicAck) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Multiple { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicAck) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Multiple = (bits&(1<<0) > 0) + + return +} + +type basicReject struct { + DeliveryTag uint64 + Requeue bool +} + +func (msg *basicReject) id() (uint16, uint16) { + return 60, 90 +} + +func (msg *basicReject) wait() bool { + return false +} + +func (msg *basicReject) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Requeue { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicReject) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Requeue = (bits&(1<<0) > 0) + + return +} + +type basicRecoverAsync struct { + Requeue bool +} + +func (msg *basicRecoverAsync) id() (uint16, uint16) { + return 60, 100 +} + +func (msg *basicRecoverAsync) wait() bool { + return false +} + +func (msg *basicRecoverAsync) write(w io.Writer) (err error) { + var bits byte + + if msg.Requeue { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicRecoverAsync) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Requeue = (bits&(1<<0) > 0) + + return +} + +type basicRecover struct { + Requeue bool +} + +func (msg *basicRecover) id() (uint16, uint16) { + return 60, 110 +} + +func (msg *basicRecover) wait() bool { + return true +} + +func (msg *basicRecover) write(w io.Writer) (err error) { + var bits byte + + if msg.Requeue { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicRecover) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Requeue = (bits&(1<<0) > 0) + + return +} + +type basicRecoverOk struct { +} + +func (msg *basicRecoverOk) id() (uint16, uint16) { + return 60, 111 +} + +func (msg *basicRecoverOk) wait() bool { + return true +} + +func (msg *basicRecoverOk) write(w io.Writer) (err error) { + + return +} + +func (msg *basicRecoverOk) read(r io.Reader) (err error) { + + return +} + +type basicNack struct { + DeliveryTag uint64 + Multiple bool + Requeue bool +} + +func (msg *basicNack) id() (uint16, uint16) { + return 60, 120 +} + +func (msg *basicNack) wait() bool { + return false +} + +func (msg *basicNack) write(w io.Writer) (err error) { + var bits byte + + if err = binary.Write(w, binary.BigEndian, msg.DeliveryTag); err != nil { + return + } + + if msg.Multiple { + bits |= 1 << 0 + } + + if msg.Requeue { + bits |= 1 << 1 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *basicNack) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &msg.DeliveryTag); err != nil { + return + } + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Multiple = (bits&(1<<0) > 0) + msg.Requeue = (bits&(1<<1) > 0) + + return +} + +type txSelect struct { +} + +func (msg *txSelect) id() (uint16, uint16) { + return 90, 10 +} + +func (msg *txSelect) wait() bool { + return true +} + +func (msg *txSelect) write(w io.Writer) (err error) { + + return +} + +func (msg *txSelect) read(r io.Reader) (err error) { + + return +} + +type txSelectOk struct { +} + +func (msg *txSelectOk) id() (uint16, uint16) { + return 90, 11 +} + +func (msg *txSelectOk) wait() bool { + return true +} + +func (msg *txSelectOk) write(w io.Writer) (err error) { + + return +} + +func (msg *txSelectOk) read(r io.Reader) (err error) { + + return +} + +type txCommit struct { +} + +func (msg *txCommit) id() (uint16, uint16) { + return 90, 20 +} + +func (msg *txCommit) wait() bool { + return true +} + +func (msg *txCommit) write(w io.Writer) (err error) { + + return +} + +func (msg *txCommit) read(r io.Reader) (err error) { + + return +} + +type txCommitOk struct { +} + +func (msg *txCommitOk) id() (uint16, uint16) { + return 90, 21 +} + +func (msg *txCommitOk) wait() bool { + return true +} + +func (msg *txCommitOk) write(w io.Writer) (err error) { + + return +} + +func (msg *txCommitOk) read(r io.Reader) (err error) { + + return +} + +type txRollback struct { +} + +func (msg *txRollback) id() (uint16, uint16) { + return 90, 30 +} + +func (msg *txRollback) wait() bool { + return true +} + +func (msg *txRollback) write(w io.Writer) (err error) { + + return +} + +func (msg *txRollback) read(r io.Reader) (err error) { + + return +} + +type txRollbackOk struct { +} + +func (msg *txRollbackOk) id() (uint16, uint16) { + return 90, 31 +} + +func (msg *txRollbackOk) wait() bool { + return true +} + +func (msg *txRollbackOk) write(w io.Writer) (err error) { + + return +} + +func (msg *txRollbackOk) read(r io.Reader) (err error) { + + return +} + +type confirmSelect struct { + Nowait bool +} + +func (msg *confirmSelect) id() (uint16, uint16) { + return 85, 10 +} + +func (msg *confirmSelect) wait() bool { + return true +} + +func (msg *confirmSelect) write(w io.Writer) (err error) { + var bits byte + + if msg.Nowait { + bits |= 1 << 0 + } + + if err = binary.Write(w, binary.BigEndian, bits); err != nil { + return + } + + return +} + +func (msg *confirmSelect) read(r io.Reader) (err error) { + var bits byte + + if err = binary.Read(r, binary.BigEndian, &bits); err != nil { + return + } + msg.Nowait = (bits&(1<<0) > 0) + + return +} + +type confirmSelectOk struct { +} + +func (msg *confirmSelectOk) id() (uint16, uint16) { + return 85, 11 +} + +func (msg *confirmSelectOk) wait() bool { + return true +} + +func (msg *confirmSelectOk) write(w io.Writer) (err error) { + + return +} + +func (msg *confirmSelectOk) read(r io.Reader) (err error) { + + return +} + +func (r *reader) parseMethodFrame(channel uint16, size uint32) (f frame, err error) { + mf := &methodFrame{ + ChannelId: channel, + } + + if err = binary.Read(r.r, binary.BigEndian, &mf.ClassId); err != nil { + return + } + + if err = binary.Read(r.r, binary.BigEndian, &mf.MethodId); err != nil { + return + } + + switch mf.ClassId { + + case 10: // connection + switch mf.MethodId { + + case 10: // connection start + // fmt.Println("NextMethod: class:10 method:10") + method := &connectionStart{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // connection start-ok + // fmt.Println("NextMethod: class:10 method:11") + method := &connectionStartOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // connection secure + // fmt.Println("NextMethod: class:10 method:20") + method := &connectionSecure{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // connection secure-ok + // fmt.Println("NextMethod: class:10 method:21") + method := &connectionSecureOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // connection tune + // fmt.Println("NextMethod: class:10 method:30") + method := &connectionTune{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // connection tune-ok + // fmt.Println("NextMethod: class:10 method:31") + method := &connectionTuneOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // connection open + // fmt.Println("NextMethod: class:10 method:40") + method := &connectionOpen{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 41: // connection open-ok + // fmt.Println("NextMethod: class:10 method:41") + method := &connectionOpenOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 50: // connection close + // fmt.Println("NextMethod: class:10 method:50") + method := &connectionClose{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 51: // connection close-ok + // fmt.Println("NextMethod: class:10 method:51") + method := &connectionCloseOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 60: // connection blocked + // fmt.Println("NextMethod: class:10 method:60") + method := &connectionBlocked{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 61: // connection unblocked + // fmt.Println("NextMethod: class:10 method:61") + method := &connectionUnblocked{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 70: // connection update-secret + // fmt.Println("NextMethod: class:10 method:70") + method := &connectionUpdateSecret{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 71: // connection update-secret-ok + // fmt.Println("NextMethod: class:10 method:71") + method := &connectionUpdateSecretOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 20: // channel + switch mf.MethodId { + + case 10: // channel open + // fmt.Println("NextMethod: class:20 method:10") + method := &channelOpen{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // channel open-ok + // fmt.Println("NextMethod: class:20 method:11") + method := &channelOpenOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // channel flow + // fmt.Println("NextMethod: class:20 method:20") + method := &channelFlow{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // channel flow-ok + // fmt.Println("NextMethod: class:20 method:21") + method := &channelFlowOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // channel close + // fmt.Println("NextMethod: class:20 method:40") + method := &channelClose{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 41: // channel close-ok + // fmt.Println("NextMethod: class:20 method:41") + method := &channelCloseOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 40: // exchange + switch mf.MethodId { + + case 10: // exchange declare + // fmt.Println("NextMethod: class:40 method:10") + method := &exchangeDeclare{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // exchange declare-ok + // fmt.Println("NextMethod: class:40 method:11") + method := &exchangeDeclareOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // exchange delete + // fmt.Println("NextMethod: class:40 method:20") + method := &exchangeDelete{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // exchange delete-ok + // fmt.Println("NextMethod: class:40 method:21") + method := &exchangeDeleteOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // exchange bind + // fmt.Println("NextMethod: class:40 method:30") + method := &exchangeBind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // exchange bind-ok + // fmt.Println("NextMethod: class:40 method:31") + method := &exchangeBindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // exchange unbind + // fmt.Println("NextMethod: class:40 method:40") + method := &exchangeUnbind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 51: // exchange unbind-ok + // fmt.Println("NextMethod: class:40 method:51") + method := &exchangeUnbindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 50: // queue + switch mf.MethodId { + + case 10: // queue declare + // fmt.Println("NextMethod: class:50 method:10") + method := &queueDeclare{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // queue declare-ok + // fmt.Println("NextMethod: class:50 method:11") + method := &queueDeclareOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // queue bind + // fmt.Println("NextMethod: class:50 method:20") + method := &queueBind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // queue bind-ok + // fmt.Println("NextMethod: class:50 method:21") + method := &queueBindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 50: // queue unbind + // fmt.Println("NextMethod: class:50 method:50") + method := &queueUnbind{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 51: // queue unbind-ok + // fmt.Println("NextMethod: class:50 method:51") + method := &queueUnbindOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // queue purge + // fmt.Println("NextMethod: class:50 method:30") + method := &queuePurge{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // queue purge-ok + // fmt.Println("NextMethod: class:50 method:31") + method := &queuePurgeOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // queue delete + // fmt.Println("NextMethod: class:50 method:40") + method := &queueDelete{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 41: // queue delete-ok + // fmt.Println("NextMethod: class:50 method:41") + method := &queueDeleteOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 60: // basic + switch mf.MethodId { + + case 10: // basic qos + // fmt.Println("NextMethod: class:60 method:10") + method := &basicQos{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // basic qos-ok + // fmt.Println("NextMethod: class:60 method:11") + method := &basicQosOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // basic consume + // fmt.Println("NextMethod: class:60 method:20") + method := &basicConsume{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // basic consume-ok + // fmt.Println("NextMethod: class:60 method:21") + method := &basicConsumeOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // basic cancel + // fmt.Println("NextMethod: class:60 method:30") + method := &basicCancel{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // basic cancel-ok + // fmt.Println("NextMethod: class:60 method:31") + method := &basicCancelOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 40: // basic publish + // fmt.Println("NextMethod: class:60 method:40") + method := &basicPublish{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 50: // basic return + // fmt.Println("NextMethod: class:60 method:50") + method := &basicReturn{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 60: // basic deliver + // fmt.Println("NextMethod: class:60 method:60") + method := &basicDeliver{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 70: // basic get + // fmt.Println("NextMethod: class:60 method:70") + method := &basicGet{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 71: // basic get-ok + // fmt.Println("NextMethod: class:60 method:71") + method := &basicGetOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 72: // basic get-empty + // fmt.Println("NextMethod: class:60 method:72") + method := &basicGetEmpty{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 80: // basic ack + // fmt.Println("NextMethod: class:60 method:80") + method := &basicAck{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 90: // basic reject + // fmt.Println("NextMethod: class:60 method:90") + method := &basicReject{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 100: // basic recover-async + // fmt.Println("NextMethod: class:60 method:100") + method := &basicRecoverAsync{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 110: // basic recover + // fmt.Println("NextMethod: class:60 method:110") + method := &basicRecover{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 111: // basic recover-ok + // fmt.Println("NextMethod: class:60 method:111") + method := &basicRecoverOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 120: // basic nack + // fmt.Println("NextMethod: class:60 method:120") + method := &basicNack{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 90: // tx + switch mf.MethodId { + + case 10: // tx select + // fmt.Println("NextMethod: class:90 method:10") + method := &txSelect{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // tx select-ok + // fmt.Println("NextMethod: class:90 method:11") + method := &txSelectOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 20: // tx commit + // fmt.Println("NextMethod: class:90 method:20") + method := &txCommit{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 21: // tx commit-ok + // fmt.Println("NextMethod: class:90 method:21") + method := &txCommitOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 30: // tx rollback + // fmt.Println("NextMethod: class:90 method:30") + method := &txRollback{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 31: // tx rollback-ok + // fmt.Println("NextMethod: class:90 method:31") + method := &txRollbackOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + case 85: // confirm + switch mf.MethodId { + + case 10: // confirm select + // fmt.Println("NextMethod: class:85 method:10") + method := &confirmSelect{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + case 11: // confirm select-ok + // fmt.Println("NextMethod: class:85 method:11") + method := &confirmSelectOk{} + if err = method.read(r.r); err != nil { + return + } + mf.Method = method + + default: + return nil, fmt.Errorf("Bad method frame, unknown method %d for class %d", mf.MethodId, mf.ClassId) + } + + default: + return nil, fmt.Errorf("Bad method frame, unknown class %d", mf.ClassId) + } + + return mf, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go new file mode 100644 index 0000000..1e15ed0 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/types.go @@ -0,0 +1,568 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "fmt" + "io" + "time" +) + +// DefaultExchange is the default direct exchange that binds every queue by its +// name. Applications can route to a queue using the queue name as routing key. +const DefaultExchange = "" + +// Constants for standard AMQP 0-9-1 exchange types. +const ( + ExchangeDirect = "direct" + ExchangeFanout = "fanout" + ExchangeTopic = "topic" + ExchangeHeaders = "headers" +) + +var ( + // ErrClosed is returned when the channel or connection is not open + ErrClosed = &Error{Code: ChannelError, Reason: "channel/connection is not open"} + + // ErrChannelMax is returned when Connection.Channel has been called enough + // times that all channel IDs have been exhausted in the client or the + // server. + ErrChannelMax = &Error{Code: ChannelError, Reason: "channel id space exhausted"} + + // ErrSASL is returned from Dial when the authentication mechanism could not + // be negotiated. + ErrSASL = &Error{Code: AccessRefused, Reason: "SASL could not negotiate a shared mechanism"} + + // ErrCredentials is returned when the authenticated client is not authorized + // to any vhost. + ErrCredentials = &Error{Code: AccessRefused, Reason: "username or password not allowed"} + + // ErrVhost is returned when the authenticated user is not permitted to + // access the requested Vhost. + ErrVhost = &Error{Code: AccessRefused, Reason: "no access to this vhost"} + + // ErrSyntax is hard protocol error, indicating an unsupported protocol, + // implementation or encoding. + ErrSyntax = &Error{Code: SyntaxError, Reason: "invalid field or value inside of a frame"} + + // ErrFrame is returned when the protocol frame cannot be read from the + // server, indicating an unsupported protocol or unsupported frame type. + ErrFrame = &Error{Code: FrameError, Reason: "frame could not be parsed"} + + // ErrCommandInvalid is returned when the server sends an unexpected response + // to this requested message type. This indicates a bug in this client. + ErrCommandInvalid = &Error{Code: CommandInvalid, Reason: "unexpected command received"} + + // ErrUnexpectedFrame is returned when something other than a method or + // heartbeat frame is delivered to the Connection, indicating a bug in the + // client. + ErrUnexpectedFrame = &Error{Code: UnexpectedFrame, Reason: "unexpected frame received"} + + // ErrFieldType is returned when writing a message containing a Go type unsupported by AMQP. + ErrFieldType = &Error{Code: SyntaxError, Reason: "unsupported table field type"} +) + +// internal errors used inside the library +var ( + errInvalidTypeAssertion = &Error{Code: InternalError, Reason: "type assertion unsuccessful", Server: false, Recover: true} +) + +// Error captures the code and reason a channel or connection has been closed +// by the server. +type Error struct { + Code int // constant code from the specification + Reason string // description of the error + Server bool // true when initiated from the server, false when from this library + Recover bool // true when this error can be recovered by retrying later or with different parameters +} + +func newError(code uint16, text string) *Error { + return &Error{ + Code: int(code), + Reason: text, + Recover: isSoftExceptionCode(int(code)), + Server: true, + } +} + +func (e Error) Error() string { + return fmt.Sprintf("Exception (%d) Reason: %q", e.Code, e.Reason) +} + +// Used by header frames to capture routing and header information +type properties struct { + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + Headers Table // Application or header exchange table + DeliveryMode uint8 // queue implementation use - Transient (1) or Persistent (2) + Priority uint8 // queue implementation use - 0 to 9 + CorrelationId string // application use - correlation identifier + ReplyTo string // application use - address to to reply to (ex: RPC) + Expiration string // implementation use - message expiration spec + MessageId string // application use - message identifier + Timestamp time.Time // application use - message timestamp + Type string // application use - message type name + UserId string // application use - creating user id + AppId string // application use - creating application + reserved1 string // was cluster-id - process for buffer consumption +} + +// DeliveryMode. Transient means higher throughput but messages will not be +// restored on broker restart. The delivery mode of publishings is unrelated +// to the durability of the queues they reside on. Transient messages will +// not be restored to durable queues, persistent messages will be restored to +// durable queues and lost on non-durable queues during server restart. +// +// This remains typed as uint8 to match Publishing.DeliveryMode. Other +// delivery modes specific to custom queue implementations are not enumerated +// here. +const ( + Transient uint8 = 1 + Persistent uint8 = 2 +) + +// The property flags are an array of bits that indicate the presence or +// absence of each property value in sequence. The bits are ordered from most +// high to low - bit 15 indicates the first property. +const ( + flagContentType = 0x8000 + flagContentEncoding = 0x4000 + flagHeaders = 0x2000 + flagDeliveryMode = 0x1000 + flagPriority = 0x0800 + flagCorrelationId = 0x0400 + flagReplyTo = 0x0200 + flagExpiration = 0x0100 + flagMessageId = 0x0080 + flagTimestamp = 0x0040 + flagType = 0x0020 + flagUserId = 0x0010 + flagAppId = 0x0008 + flagReserved1 = 0x0004 +) + +// Expiration. These constants can be used to set a messages expiration TTL. +// They should be viewed as a clarification of the expiration functionality in +// messages and their usage is not enforced by this pkg. +// +// The server requires a string value that is interpreted by the server as +// milliseconds. If no value is set, which translates to the nil value of +// string, the message will never expire by itself. This does not influence queue +// configured TTL configurations. +const ( + NeverExpire string = "" // empty value means never expire + ImmediatelyExpire string = "0" // 0 means immediately expire +) + +// Queue captures the current server state of the queue on the server returned +// from Channel.QueueDeclare or Channel.QueueInspect. +type Queue struct { + Name string // server confirmed or generated name + Messages int // count of messages not awaiting acknowledgment + Consumers int // number of consumers receiving deliveries +} + +// Publishing captures the client message sent to the server. The fields +// outside of the Headers table included in this struct mirror the underlying +// fields in the content frame. They use native types for convenience and +// efficiency. +type Publishing struct { + // Application or exchange specific fields, + // the headers exchange will inspect this field. + Headers Table + + // Properties + ContentType string // MIME content type + ContentEncoding string // MIME content encoding + DeliveryMode uint8 // Transient (0 or 1) or Persistent (2) + Priority uint8 // 0 to 9 + CorrelationId string // correlation identifier + ReplyTo string // address to to reply to (ex: RPC) + // Expiration represents the message TTL in milliseconds. A value of "0" + // indicates that the message will immediately expire if the message arrives + // at its destination and the message is not directly handled by a consumer + // that currently has the capacatity to do so. If you wish the message to + // not expire on its own, set this value to any ttl value, empty string or + // use the corresponding constants NeverExpire and ImmediatelyExpire. This + // does not influence queue configured TTL values. + Expiration string + MessageId string // message identifier + Timestamp time.Time // message timestamp + Type string // message type name + UserId string // creating user id - ex: "guest" + AppId string // creating application id + + // The application specific payload of the message + Body []byte +} + +// Blocking notifies the server's TCP flow control of the Connection. When a +// server hits a memory or disk alarm it will block all connections until the +// resources are reclaimed. Use NotifyBlock on the Connection to receive these +// events. +type Blocking struct { + Active bool // TCP pushback active/inactive on server + Reason string // Server reason for activation +} + +// DeferredConfirmation represents a future publisher confirm for a message. It +// allows users to directly correlate a publishing to a confirmation. These are +// returned from PublishWithDeferredConfirm on Channels. +type DeferredConfirmation struct { + DeliveryTag uint64 + + done chan struct{} + ack bool +} + +// Confirmation notifies the acknowledgment or negative acknowledgement of a +// publishing identified by its delivery tag. Use NotifyPublish on the Channel +// to consume these events. +type Confirmation struct { + DeliveryTag uint64 // A 1 based counter of publishings from when the channel was put in Confirm mode + Ack bool // True when the server successfully received the publishing +} + +// Decimal matches the AMQP decimal type. Scale is the number of decimal +// digits Scale == 2, Value == 12345, Decimal == 123.45 +type Decimal struct { + Scale uint8 + Value int32 +} + +// Most common queue argument keys in queue declaration. For a comprehensive list +// of queue arguments, visit [RabbitMQ Queue docs]. +// +// [QueueTypeArg] queue argument is used to declare quorum and stream queues. +// Accepted values are [QueueTypeClassic] (default), [QueueTypeQuorum] and +// [QueueTypeStream]. [Quorum Queues] accept (almost) all queue arguments as their +// Classic Queues counterparts. Check [feature comparison] docs for more +// information. +// +// Queues can define their [max length] using [QueueMaxLenArg] and +// [QueueMaxLenBytesArg] queue arguments. Overflow behaviour is set using +// [QueueOverflowArg]. Accepted values are [QueueOverflowDropHead] (default), +// [QueueOverflowRejectPublish] and [QueueOverflowRejectPublishDLX]. +// +// [Queue TTL] can be defined using [QueueTTLArg]. That is, the time-to-live for an +// unused queue. [Queue Message TTL] can be defined using [QueueMessageTTLArg]. +// This will set a time-to-live for messages in the queue. +// +// [Stream retention] can be configured using [StreamMaxLenBytesArg], to set the +// maximum size of the stream. Please note that stream queues always keep, at +// least, one segment. [Stream retention] can also be set using [StreamMaxAgeArg], +// to set time-based retention. Values are string with unit suffix. Valid +// suffixes are Y, M, D, h, m, s. E.g. "7D" for one week. The maximum segment +// size can be set using [StreamMaxSegmentSizeBytesArg]. The default value is +// 500_000_000 bytes ~= 500 megabytes +// +// Starting with RabbitMQ 3.12, consumer timeout can be configured as a queue +// argument. This is the timeout for a consumer to acknowledge a message. The +// value is the time in milliseconds. The timeout is evaluated periodically, +// at one minute intervals. Values lower than one minute are not supported. +// See the [consumer timeout] guide for more information. +// +// [Single Active Consumer] on quorum and classic queues can be configured +// using [SingleActiveConsumerArg]. This argument expects a boolean value. It is +// false by default. +// +// [RabbitMQ Queue docs]: https://rabbitmq.com/queues.html +// [Stream retention]: https://rabbitmq.com/streams.html#retention +// [max length]: https://rabbitmq.com/maxlength.html +// [Queue TTL]: https://rabbitmq.com/ttl.html#queue-ttl +// [Queue Message TTL]: https://rabbitmq.com/ttl.html#per-queue-message-ttl +// [Quorum Queues]: https://rabbitmq.com/quorum-queues.html +// [feature comparison]: https://rabbitmq.com/quorum-queues.html#feature-comparison +// [consumer timeout]: https://rabbitmq.com/consumers.html#acknowledgement-timeout +// [Single Active Consumer]: https://rabbitmq.com/consumers.html#single-active-consumer +const ( + QueueTypeArg = "x-queue-type" + QueueMaxLenArg = "x-max-length" + QueueMaxLenBytesArg = "x-max-length-bytes" + StreamMaxLenBytesArg = "x-max-length-bytes" + QueueOverflowArg = "x-overflow" + QueueMessageTTLArg = "x-message-ttl" + QueueTTLArg = "x-expires" + StreamMaxAgeArg = "x-max-age" + StreamMaxSegmentSizeBytesArg = "x-stream-max-segment-size-bytes" + // QueueVersionArg declares the Classic Queue version to use. Expects an integer, either 1 or 2. + QueueVersionArg = "x-queue-version" + // ConsumerTimeoutArg is available in RabbitMQ 3.12+ as a queue argument. + ConsumerTimeoutArg = "x-consumer-timeout" + SingleActiveConsumerArg = "x-single-active-consumer" +) + +// Values for queue arguments. Use as values for queue arguments during queue declaration. +// The following argument table will create a classic queue, with max length set to 100 messages, +// and a queue TTL of 30 minutes. +// +// args := amqp.Table{ +// amqp.QueueTypeArg: QueueTypeClassic, +// amqp.QueueMaxLenArg: 100, +// amqp.QueueTTLArg: 1800000, +// } +// +// Refer to [Channel.QueueDeclare] for more examples. +const ( + QueueTypeClassic = "classic" + QueueTypeQuorum = "quorum" + QueueTypeStream = "stream" + QueueOverflowDropHead = "drop-head" + QueueOverflowRejectPublish = "reject-publish" + QueueOverflowRejectPublishDLX = "reject-publish-dlx" +) + +// Table stores user supplied fields of the following types: +// +// bool +// byte +// int8 +// float32 +// float64 +// int +// int16 +// int32 +// int64 +// nil +// string +// time.Time +// amqp.Decimal +// amqp.Table +// []byte +// []interface{} - containing above types +// +// Functions taking a table will immediately fail when the table contains a +// value of an unsupported type. +// +// The caller must be specific in which precision of integer it wishes to +// encode. +// +// Use a type assertion when reading values from a table for type conversion. +// +// RabbitMQ expects int32 for integer values. +type Table map[string]interface{} + +func validateField(f interface{}) error { + switch fv := f.(type) { + case nil, bool, byte, int8, int, int16, int32, int64, float32, float64, string, []byte, Decimal, time.Time: + return nil + + case []interface{}: + for _, v := range fv { + if err := validateField(v); err != nil { + return fmt.Errorf("in array %s", err) + } + } + return nil + + case Table: + for k, v := range fv { + if err := validateField(v); err != nil { + return fmt.Errorf("table field %q %s", k, err) + } + } + return nil + } + + return fmt.Errorf("value %T not supported", f) +} + +// Validate returns and error if any Go types in the table are incompatible with AMQP types. +func (t Table) Validate() error { + return validateField(t) +} + +// Sets the connection name property. This property can be used in +// amqp.Config to set a custom connection name during amqp.DialConfig(). This +// can be helpful to identify specific connections in RabbitMQ, for debugging or +// tracing purposes. +func (t Table) SetClientConnectionName(connName string) { + t["connection_name"] = connName +} + +type message interface { + id() (uint16, uint16) + wait() bool + read(io.Reader) error + write(io.Writer) error +} + +type messageWithContent interface { + message + getContent() (properties, []byte) + setContent(properties, []byte) +} + +/* +The base interface implemented as: + +2.3.5 frame Details + +All frames consist of a header (7 octets), a payload of arbitrary size, and a 'frame-end' octet that detects +malformed frames: + + 0 1 3 7 size+7 size+8 + +------+---------+-------------+ +------------+ +-----------+ + | type | channel | size | | payload | | frame-end | + +------+---------+-------------+ +------------+ +-----------+ + octet short long size octets octet + +To read a frame, we: + + 1. Read the header and check the frame type and channel. + 2. Depending on the frame type, we read the payload and process it. + 3. Read the frame end octet. + +In realistic implementations where performance is a concern, we would use +“read-ahead buffering” or “gathering reads” to avoid doing three separate +system calls to read a frame. +*/ +type frame interface { + write(io.Writer) error + channel() uint16 +} + +/* +Perform any updates on the channel immediately after the frame is decoded while the +connection mutex is held. +*/ +func updateChannel(f frame, channel *Channel) { + if mf, isMethodFrame := f.(*methodFrame); isMethodFrame { + if _, isChannelClose := mf.Method.(*channelClose); isChannelClose { + channel.setClosed() + } + } +} + +type reader struct { + r io.Reader +} + +type writer struct { + w io.Writer +} + +// Implements the frame interface for Connection RPC +type protocolHeader struct{} + +func (protocolHeader) write(w io.Writer) error { + _, err := w.Write([]byte{'A', 'M', 'Q', 'P', 0, 0, 9, 1}) + return err +} + +func (protocolHeader) channel() uint16 { + panic("only valid as initial handshake") +} + +/* +Method frames carry the high-level protocol commands (which we call "methods"). +One method frame carries one command. The method frame payload has this format: + + 0 2 4 + +----------+-----------+-------------- - - + | class-id | method-id | arguments... + +----------+-----------+-------------- - - + short short ... + +To process a method frame, we: + 1. Read the method frame payload. + 2. Unpack it into a structure. A given method always has the same structure, + so we can unpack the method rapidly. 3. Check that the method is allowed in + the current context. + 4. Check that the method arguments are valid. + 5. Execute the method. + +Method frame bodies are constructed as a list of AMQP data fields (bits, +integers, strings and string tables). The marshalling code is trivially +generated directly from the protocol specifications, and can be very rapid. +*/ +type methodFrame struct { + ChannelId uint16 + ClassId uint16 + MethodId uint16 + Method message +} + +func (f *methodFrame) channel() uint16 { return f.ChannelId } + +/* +Heartbeating is a technique designed to undo one of TCP/IP's features, namely +its ability to recover from a broken physical connection by closing only after +a quite long time-out. In some scenarios we need to know very rapidly if a +peer is disconnected or not responding for other reasons (e.g. it is looping). +Since heartbeating can be done at a low level, we implement this as a special +type of frame that peers exchange at the transport level, rather than as a +class method. +*/ +type heartbeatFrame struct { + ChannelId uint16 +} + +func (f *heartbeatFrame) channel() uint16 { return f.ChannelId } + +/* +Certain methods (such as Basic.Publish, Basic.Deliver, etc.) are formally +defined as carrying content. When a peer sends such a method frame, it always +follows it with a content header and zero or more content body frames. + +A content header frame has this format: + + 0 2 4 12 14 + +----------+--------+-----------+----------------+------------- - - + | class-id | weight | body size | property flags | property list... + +----------+--------+-----------+----------------+------------- - - + short short long long short remainder... + +We place content body in distinct frames (rather than including it in the +method) so that AMQP may support "zero copy" techniques in which content is +never marshalled or encoded. We place the content properties in their own +frame so that recipients can selectively discard contents they do not want to +process +*/ +type headerFrame struct { + ChannelId uint16 + ClassId uint16 + weight uint16 + Size uint64 + Properties properties +} + +func (f *headerFrame) channel() uint16 { return f.ChannelId } + +/* +Content is the application data we carry from client-to-client via the AMQP +server. Content is, roughly speaking, a set of properties plus a binary data +part. The set of allowed properties are defined by the Basic class, and these +form the "content header frame". The data can be any size, and MAY be broken +into several (or many) chunks, each forming a "content body frame". + +Looking at the frames for a specific channel, as they pass on the wire, we +might see something like this: + + [method] + [method] [header] [body] [body] + [method] + ... +*/ +type bodyFrame struct { + ChannelId uint16 + Body []byte +} + +func (f *bodyFrame) channel() uint16 { return f.ChannelId } + +type heartbeatDuration struct { + value time.Duration + hasValue bool +} + +func newHeartbeatDurationFromSeconds(s int) heartbeatDuration { + v := time.Duration(s) * time.Second + return heartbeatDuration{ + value: v, + hasValue: true, + } +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go new file mode 100644 index 0000000..ddc4b1a --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/uri.go @@ -0,0 +1,254 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "errors" + "fmt" + "net" + "net/url" + "strconv" + "strings" +) + +var errURIScheme = errors.New("AMQP scheme must be either 'amqp://' or 'amqps://'") +var errURIWhitespace = errors.New("URI must not contain whitespace") + +var schemePorts = map[string]int{ + "amqp": 5672, + "amqps": 5671, +} + +var defaultURI = URI{ + Scheme: "amqp", + Host: "localhost", + Port: 5672, + Username: "guest", + Password: "guest", + Vhost: "/", +} + +// URI represents a parsed AMQP URI string. +type URI struct { + Scheme string + Host string + Port int + Username string + Password string + Vhost string + CertFile string // client TLS auth - path to certificate (PEM) + CACertFile string // client TLS auth - path to CA certificate (PEM) + KeyFile string // client TLS auth - path to private key (PEM) + ServerName string // client TLS auth - server name + AuthMechanism []string + Heartbeat heartbeatDuration + ConnectionTimeout int + ChannelMax uint16 +} + +// ParseURI attempts to parse the given AMQP URI according to the spec. +// See http://www.rabbitmq.com/uri-spec.html. +// +// Default values for the fields are: +// +// Scheme: amqp +// Host: localhost +// Port: 5672 +// Username: guest +// Password: guest +// Vhost: / +// +// Supports TLS query parameters. See https://www.rabbitmq.com/uri-query-parameters.html +// +// certfile: +// keyfile: +// cacertfile: +// server_name_indication: +// auth_mechanism: +// heartbeat: +// connection_timeout: +// channel_max: +// +// If cacertfile is not provided, system CA certificates will be used. +// Mutual TLS (client auth) will be enabled only in case keyfile AND certfile provided. +// +// If Config.TLSClientConfig is set, TLS parameters from URI will be ignored. +func ParseURI(uri string) (URI, error) { + builder := defaultURI + + if strings.Contains(uri, " ") { + return builder, errURIWhitespace + } + + u, err := url.Parse(uri) + if err != nil { + return builder, err + } + + defaultPort, okScheme := schemePorts[u.Scheme] + + if okScheme { + builder.Scheme = u.Scheme + } else { + return builder, errURIScheme + } + + host := u.Hostname() + port := u.Port() + + if host != "" { + builder.Host = host + } + + if port != "" { + port32, err := strconv.ParseInt(port, 10, 32) + if err != nil { + return builder, err + } + builder.Port = int(port32) + } else { + builder.Port = defaultPort + } + + if u.User != nil { + builder.Username = u.User.Username() + if password, ok := u.User.Password(); ok { + builder.Password = password + } + } + + if u.Path != "" { + if strings.HasPrefix(u.Path, "/") { + if u.Host == "" && strings.HasPrefix(u.Path, "///") { + // net/url doesn't handle local context authorities and leaves that up + // to the scheme handler. In our case, we translate amqp:/// into the + // default host and whatever the vhost should be + if len(u.Path) > 3 { + builder.Vhost = u.Path[3:] + } + } else if len(u.Path) > 1 { + builder.Vhost = u.Path[1:] + } + } else { + builder.Vhost = u.Path + } + } + + // see https://www.rabbitmq.com/uri-query-parameters.html + params := u.Query() + builder.CertFile = params.Get("certfile") + builder.KeyFile = params.Get("keyfile") + builder.CACertFile = params.Get("cacertfile") + builder.ServerName = params.Get("server_name_indication") + builder.AuthMechanism = params["auth_mechanism"] + + if params.Has("heartbeat") { + value, err := strconv.Atoi(params.Get("heartbeat")) + if err != nil { + return builder, fmt.Errorf("heartbeat is not an integer: %v", err) + } + builder.Heartbeat = newHeartbeatDurationFromSeconds(value) + } + + if params.Has("connection_timeout") { + value, err := strconv.Atoi(params.Get("connection_timeout")) + if err != nil { + return builder, fmt.Errorf("connection_timeout is not an integer: %v", err) + } + builder.ConnectionTimeout = value + } + + if params.Has("channel_max") { + value, err := strconv.ParseUint(params.Get("channel_max"), 10, 16) + if err != nil { + return builder, fmt.Errorf("connection_timeout is not an integer: %v", err) + } + builder.ChannelMax = uint16(value) + } + + return builder, nil +} + +// PlainAuth returns a PlainAuth structure based on the parsed URI's +// Username and Password fields. +func (uri URI) PlainAuth() *PlainAuth { + return &PlainAuth{ + Username: uri.Username, + Password: uri.Password, + } +} + +// AMQPlainAuth returns a PlainAuth structure based on the parsed URI's +// Username and Password fields. +func (uri URI) AMQPlainAuth() *AMQPlainAuth { + return &AMQPlainAuth{ + Username: uri.Username, + Password: uri.Password, + } +} + +func (uri URI) String() string { + authority, err := url.Parse("") + if err != nil { + return err.Error() + } + + authority.Scheme = uri.Scheme + + if uri.Username != defaultURI.Username || uri.Password != defaultURI.Password { + authority.User = url.User(uri.Username) + + if uri.Password != defaultURI.Password { + authority.User = url.UserPassword(uri.Username, uri.Password) + } + } + + if defaultPort, found := schemePorts[uri.Scheme]; !found || defaultPort != uri.Port { + authority.Host = net.JoinHostPort(uri.Host, strconv.Itoa(uri.Port)) + } else { + // JoinHostPort() automatically add brackets to the host if it's + // an IPv6 address. + // + // If not port is specified, JoinHostPort() return an IP address in the + // form of "[::1]:", so we use TrimSuffix() to remove the extra ":". + authority.Host = strings.TrimSuffix(net.JoinHostPort(uri.Host, ""), ":") + } + + if uri.Vhost != defaultURI.Vhost { + // Make sure net/url does not double escape, e.g. + // "%2F" does not become "%252F". + authority.Path = uri.Vhost + authority.RawPath = url.QueryEscape(uri.Vhost) + } else { + authority.Path = "/" + } + + if uri.CertFile != "" || uri.KeyFile != "" || uri.CACertFile != "" || uri.ServerName != "" { + rawQuery := strings.Builder{} + if uri.CertFile != "" { + rawQuery.WriteString("certfile=") + rawQuery.WriteString(uri.CertFile) + rawQuery.WriteRune('&') + } + if uri.KeyFile != "" { + rawQuery.WriteString("keyfile=") + rawQuery.WriteString(uri.KeyFile) + rawQuery.WriteRune('&') + } + if uri.CACertFile != "" { + rawQuery.WriteString("cacertfile=") + rawQuery.WriteString(uri.CACertFile) + rawQuery.WriteRune('&') + } + if uri.ServerName != "" { + rawQuery.WriteString("server_name_indication=") + rawQuery.WriteString(uri.ServerName) + } + authority.RawQuery = rawQuery.String() + } + + return authority.String() +} diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go b/examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go new file mode 100644 index 0000000..dcec314 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/write.go @@ -0,0 +1,426 @@ +// Copyright (c) 2021 VMware, Inc. or its affiliates. All Rights Reserved. +// Copyright (c) 2012-2021, Sean Treadway, SoundCloud Ltd. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package amqp091 + +import ( + "bufio" + "bytes" + "encoding/binary" + "errors" + "io" + "math" + "time" +) + +func (w *writer) WriteFrameNoFlush(frame frame) (err error) { + err = frame.write(w.w) + return +} + +func (w *writer) WriteFrame(frame frame) (err error) { + if err = frame.write(w.w); err != nil { + return + } + + if buf, ok := w.w.(*bufio.Writer); ok { + err = buf.Flush() + } + + return +} + +func (f *methodFrame) write(w io.Writer) (err error) { + var payload bytes.Buffer + + if f.Method == nil { + return errors.New("malformed frame: missing method") + } + + class, method := f.Method.id() + + if err = binary.Write(&payload, binary.BigEndian, class); err != nil { + return + } + + if err = binary.Write(&payload, binary.BigEndian, method); err != nil { + return + } + + if err = f.Method.write(&payload); err != nil { + return + } + + return writeFrame(w, frameMethod, f.ChannelId, payload.Bytes()) +} + +// Heartbeat +// +// Payload is empty +func (f *heartbeatFrame) write(w io.Writer) (err error) { + return writeFrame(w, frameHeartbeat, f.ChannelId, []byte{}) +} + +// CONTENT HEADER +// 0 2 4 12 14 +// +----------+--------+-----------+----------------+------------- - - +// | class-id | weight | body size | property flags | property list... +// +----------+--------+-----------+----------------+------------- - - +// +// short short long long short remainder... +func (f *headerFrame) write(w io.Writer) (err error) { + var payload bytes.Buffer + + if err = binary.Write(&payload, binary.BigEndian, f.ClassId); err != nil { + return + } + + if err = binary.Write(&payload, binary.BigEndian, f.weight); err != nil { + return + } + + if err = binary.Write(&payload, binary.BigEndian, f.Size); err != nil { + return + } + + // First pass will build the mask to be serialized, second pass will serialize + // each of the fields that appear in the mask. + + var mask uint16 + + if len(f.Properties.ContentType) > 0 { + mask = mask | flagContentType + } + if len(f.Properties.ContentEncoding) > 0 { + mask = mask | flagContentEncoding + } + if f.Properties.Headers != nil && len(f.Properties.Headers) > 0 { + mask = mask | flagHeaders + } + if f.Properties.DeliveryMode > 0 { + mask = mask | flagDeliveryMode + } + if f.Properties.Priority > 0 { + mask = mask | flagPriority + } + if len(f.Properties.CorrelationId) > 0 { + mask = mask | flagCorrelationId + } + if len(f.Properties.ReplyTo) > 0 { + mask = mask | flagReplyTo + } + if len(f.Properties.Expiration) > 0 { + mask = mask | flagExpiration + } + if len(f.Properties.MessageId) > 0 { + mask = mask | flagMessageId + } + if !f.Properties.Timestamp.IsZero() { + mask = mask | flagTimestamp + } + if len(f.Properties.Type) > 0 { + mask = mask | flagType + } + if len(f.Properties.UserId) > 0 { + mask = mask | flagUserId + } + if len(f.Properties.AppId) > 0 { + mask = mask | flagAppId + } + + if err = binary.Write(&payload, binary.BigEndian, mask); err != nil { + return + } + + if hasProperty(mask, flagContentType) { + if err = writeShortstr(&payload, f.Properties.ContentType); err != nil { + return + } + } + if hasProperty(mask, flagContentEncoding) { + if err = writeShortstr(&payload, f.Properties.ContentEncoding); err != nil { + return + } + } + if hasProperty(mask, flagHeaders) { + if err = writeTable(&payload, f.Properties.Headers); err != nil { + return + } + } + if hasProperty(mask, flagDeliveryMode) { + if err = binary.Write(&payload, binary.BigEndian, f.Properties.DeliveryMode); err != nil { + return + } + } + if hasProperty(mask, flagPriority) { + if err = binary.Write(&payload, binary.BigEndian, f.Properties.Priority); err != nil { + return + } + } + if hasProperty(mask, flagCorrelationId) { + if err = writeShortstr(&payload, f.Properties.CorrelationId); err != nil { + return + } + } + if hasProperty(mask, flagReplyTo) { + if err = writeShortstr(&payload, f.Properties.ReplyTo); err != nil { + return + } + } + if hasProperty(mask, flagExpiration) { + if err = writeShortstr(&payload, f.Properties.Expiration); err != nil { + return + } + } + if hasProperty(mask, flagMessageId) { + if err = writeShortstr(&payload, f.Properties.MessageId); err != nil { + return + } + } + if hasProperty(mask, flagTimestamp) { + if err = binary.Write(&payload, binary.BigEndian, uint64(f.Properties.Timestamp.Unix())); err != nil { + return + } + } + if hasProperty(mask, flagType) { + if err = writeShortstr(&payload, f.Properties.Type); err != nil { + return + } + } + if hasProperty(mask, flagUserId) { + if err = writeShortstr(&payload, f.Properties.UserId); err != nil { + return + } + } + if hasProperty(mask, flagAppId) { + if err = writeShortstr(&payload, f.Properties.AppId); err != nil { + return + } + } + + return writeFrame(w, frameHeader, f.ChannelId, payload.Bytes()) +} + +// Body +// +// Payload is one byterange from the full body who's size is declared in the +// Header frame +func (f *bodyFrame) write(w io.Writer) (err error) { + return writeFrame(w, frameBody, f.ChannelId, f.Body) +} + +func writeFrame(w io.Writer, typ uint8, channel uint16, payload []byte) (err error) { + end := []byte{frameEnd} + size := uint(len(payload)) + + _, err = w.Write([]byte{ + typ, + byte((channel & 0xff00) >> 8), + byte((channel & 0x00ff) >> 0), + byte((size & 0xff000000) >> 24), + byte((size & 0x00ff0000) >> 16), + byte((size & 0x0000ff00) >> 8), + byte((size & 0x000000ff) >> 0), + }) + + if err != nil { + return + } + + if _, err = w.Write(payload); err != nil { + return + } + + if _, err = w.Write(end); err != nil { + return + } + + return +} + +func writeShortstr(w io.Writer, s string) (err error) { + b := []byte(s) + + var length = uint8(len(b)) + + if err = binary.Write(w, binary.BigEndian, length); err != nil { + return + } + + if _, err = w.Write(b[:length]); err != nil { + return + } + + return +} + +func writeLongstr(w io.Writer, s string) (err error) { + b := []byte(s) + + var length = uint32(len(b)) + + if err = binary.Write(w, binary.BigEndian, length); err != nil { + return + } + + if _, err = w.Write(b[:length]); err != nil { + return + } + + return +} + +/* +'A': []interface{} +'D': Decimal +'F': Table +'I': int32 +'S': string +'T': time.Time +'V': nil +'b': int8 +'B': byte +'d': float64 +'f': float32 +'l': int64 +'s': int16 +'t': bool +'x': []byte +*/ +func writeField(w io.Writer, value interface{}) (err error) { + var buf [9]byte + var enc []byte + + switch v := value.(type) { + case bool: + buf[0] = 't' + if v { + buf[1] = byte(1) + } else { + buf[1] = byte(0) + } + enc = buf[:2] + + case byte: + buf[0] = 'B' + buf[1] = v + enc = buf[:2] + + case int8: + buf[0] = 'b' + buf[1] = uint8(v) + enc = buf[:2] + + case int16: + buf[0] = 's' + binary.BigEndian.PutUint16(buf[1:3], uint16(v)) + enc = buf[:3] + + case int: + buf[0] = 'I' + binary.BigEndian.PutUint32(buf[1:5], uint32(v)) + enc = buf[:5] + + case int32: + buf[0] = 'I' + binary.BigEndian.PutUint32(buf[1:5], uint32(v)) + enc = buf[:5] + + case int64: + buf[0] = 'l' + binary.BigEndian.PutUint64(buf[1:9], uint64(v)) + enc = buf[:9] + + case float32: + buf[0] = 'f' + binary.BigEndian.PutUint32(buf[1:5], math.Float32bits(v)) + enc = buf[:5] + + case float64: + buf[0] = 'd' + binary.BigEndian.PutUint64(buf[1:9], math.Float64bits(v)) + enc = buf[:9] + + case Decimal: + buf[0] = 'D' + buf[1] = v.Scale + binary.BigEndian.PutUint32(buf[2:6], uint32(v.Value)) + enc = buf[:6] + + case string: + buf[0] = 'S' + binary.BigEndian.PutUint32(buf[1:5], uint32(len(v))) + enc = append(buf[:5], []byte(v)...) + + case []interface{}: // field-array + buf[0] = 'A' + + sec := new(bytes.Buffer) + for _, val := range v { + if err = writeField(sec, val); err != nil { + return + } + } + + binary.BigEndian.PutUint32(buf[1:5], uint32(sec.Len())) + if _, err = w.Write(buf[:5]); err != nil { + return + } + + if _, err = w.Write(sec.Bytes()); err != nil { + return + } + + return + + case time.Time: + buf[0] = 'T' + binary.BigEndian.PutUint64(buf[1:9], uint64(v.Unix())) + enc = buf[:9] + + case Table: + if _, err = w.Write([]byte{'F'}); err != nil { + return + } + return writeTable(w, v) + + case []byte: + buf[0] = 'x' + binary.BigEndian.PutUint32(buf[1:5], uint32(len(v))) + if _, err = w.Write(buf[0:5]); err != nil { + return + } + if _, err = w.Write(v); err != nil { + return + } + return + + case nil: + buf[0] = 'V' + enc = buf[:1] + + default: + return ErrFieldType + } + + _, err = w.Write(enc) + + return +} + +func writeTable(w io.Writer, table Table) (err error) { + var buf bytes.Buffer + + for key, val := range table { + if err = writeShortstr(&buf, key); err != nil { + return + } + if err = writeField(&buf, val); err != nil { + return + } + } + + return writeLongstr(w, buf.String()) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE new file mode 100644 index 0000000..81fb4ea --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/LICENSE @@ -0,0 +1,25 @@ +MIT License + +Copyright (C) 2021 Gabriele Santomaggio +Portions Copyright (C) vmware + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go new file mode 100644 index 0000000..448f7db --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/buffer.go @@ -0,0 +1,157 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "io" +) + +// buffer is similar to bytes.Buffer but specialized for this package +type buffer struct { + b []byte + i int +} + +func (b *buffer) next(n int64) ([]byte, bool) { + if b.readCheck(n) { + buf := b.b[b.i:len(b.b)] + b.i = len(b.b) + return buf, false + } + + buf := b.b[b.i : b.i+int(n)] + b.i += int(n) + return buf, true +} + +func (b *buffer) skip(n int) { + b.i += n +} + +func (b *buffer) readCheck(n int64) bool { + return int64(b.i)+n > int64(len(b.b)) +} + +func (b *buffer) readByte() (byte, error) { + if b.readCheck(1) { + return 0, io.EOF + } + + byte_ := b.b[b.i] + b.i++ + return byte_, nil +} + +func (b *buffer) readType() (amqpType, error) { + n, err := b.readByte() + return amqpType(n), err +} + +func (b *buffer) peekType() (amqpType, error) { + if b.readCheck(1) { + return 0, io.EOF + } + + return amqpType(b.b[b.i]), nil +} + +func (b *buffer) readUint16() (uint16, error) { + if b.readCheck(2) { + return 0, io.EOF + } + + n := binary.BigEndian.Uint16(b.b[b.i:]) + b.i += 2 + return n, nil +} + +func (b *buffer) readUint32() (uint32, error) { + if b.readCheck(4) { + return 0, io.EOF + } + + n := binary.BigEndian.Uint32(b.b[b.i:]) + b.i += 4 + return n, nil +} + +func (b *buffer) readUint64() (uint64, error) { + if b.readCheck(8) { + return 0, io.EOF + } + + n := binary.BigEndian.Uint64(b.b[b.i : b.i+8]) + b.i += 8 + return n, nil +} + +func (b *buffer) write(p []byte) { + b.b = append(b.b, p...) +} + +func (b *buffer) writeByte(byte_ byte) { + b.b = append(b.b, byte_) +} + +func (b *buffer) writeString(s string) { + b.b = append(b.b, s...) +} + +func (b *buffer) len() int { + return len(b.b) - b.i +} + +func (b *buffer) bytes() []byte { + return b.b[b.i:] +} + +func (b *buffer) writeUint16(n uint16) { + b.b = append(b.b, + byte(n>>8), + byte(n), + ) +} + +func (b *buffer) writeUint32(n uint32) { + b.b = append(b.b, + byte(n>>24), + byte(n>>16), + byte(n>>8), + byte(n), + ) +} + +func (b *buffer) writeUint64(n uint64) { + b.b = append(b.b, + byte(n>>56), + byte(n>>48), + byte(n>>40), + byte(n>>32), + byte(n>>24), + byte(n>>16), + byte(n>>8), + byte(n), + ) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go new file mode 100644 index 0000000..ebebcf1 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/decode.go @@ -0,0 +1,1156 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "math" + "reflect" + "time" +) + +// unmarshaler is fulfilled by types that can unmarshal +// themselves from AMQP data. +type unmarshaler interface { + unmarshal(r *buffer) error +} + +// unmarshal decodes AMQP encoded data into i. +// +// The decoding method is based on the type of i. +// +// If i implements unmarshaler, i.unmarshal() will be called. +// +// Pointers to primitive types will be decoded via the appropriate read[type] function. +// +// If it is a pointer to a pointer (**Type), it will be dereferenced and a new instance +// of (*Type) is allocated via reflection. +// +// Common map types (map[string]string, map[Symbol]interface{}, and +// map[interface{}]interface{}), will be decoded via conversion to the mapStringAny, +// mapSymbolAny, and mapAnyAny types. +func unmarshal(r *buffer, i interface{}) error { + if tryReadNull(r) { + return nil + } + + switch t := i.(type) { + case *int: + val, err := readInt(r) + if err != nil { + return err + } + *t = val + case *int8: + val, err := readSbyte(r) + if err != nil { + return err + } + *t = val + case *int16: + val, err := readShort(r) + if err != nil { + return err + } + *t = val + case *int32: + val, err := readInt32(r) + if err != nil { + return err + } + *t = val + case *int64: + val, err := readLong(r) + if err != nil { + return err + } + *t = val + case *uint64: + val, err := readUlong(r) + if err != nil { + return err + } + *t = val + case *uint32: + val, err := readUint32(r) + if err != nil { + return err + } + *t = val + case **uint32: // fastpath for uint32 pointer fields + val, err := readUint32(r) + if err != nil { + return err + } + *t = &val + case *uint16: + val, err := readUshort(r) + if err != nil { + return err + } + *t = val + case *uint8: + val, err := readUbyte(r) + if err != nil { + return err + } + *t = val + case *float32: + val, err := readFloat(r) + if err != nil { + return err + } + *t = val + case *float64: + val, err := readDouble(r) + if err != nil { + return err + } + *t = val + case *string: + val, err := readString(r) + if err != nil { + return err + } + *t = val + case *symbol: + s, err := readString(r) + if err != nil { + return err + } + *t = symbol(s) + case *[]byte: + val, err := readBinary(r) + if err != nil { + return err + } + *t = val + case *bool: + b, err := readBool(r) + if err != nil { + return err + } + *t = b + case *time.Time: + ts, err := readTimestamp(r) + if err != nil { + return err + } + *t = ts + case *[]int8: + return (*arrayInt8)(t).unmarshal(r) + case *[]uint16: + return (*arrayUint16)(t).unmarshal(r) + case *[]int16: + return (*arrayInt16)(t).unmarshal(r) + case *[]uint32: + return (*arrayUint32)(t).unmarshal(r) + case *[]int32: + return (*arrayInt32)(t).unmarshal(r) + case *[]uint64: + return (*arrayUint64)(t).unmarshal(r) + case *[]int64: + return (*arrayInt64)(t).unmarshal(r) + case *[]float32: + return (*arrayFloat)(t).unmarshal(r) + case *[]float64: + return (*arrayDouble)(t).unmarshal(r) + case *[]bool: + return (*arrayBool)(t).unmarshal(r) + case *[]string: + return (*arrayString)(t).unmarshal(r) + case *[]symbol: + return (*arraySymbol)(t).unmarshal(r) + case *[][]byte: + return (*arrayBinary)(t).unmarshal(r) + case *[]time.Time: + return (*arrayTimestamp)(t).unmarshal(r) + case *[]UUID: + return (*arrayUUID)(t).unmarshal(r) + case *[]interface{}: + return (*list)(t).unmarshal(r) + case *map[interface{}]interface{}: + return (*mapAnyAny)(t).unmarshal(r) + case *map[string]interface{}: + return (*mapStringAny)(t).unmarshal(r) + case *map[symbol]interface{}: + return (*mapSymbolAny)(t).unmarshal(r) + case *deliveryState: + type_, err := peekMessageType(r.bytes()) + if err != nil { + return err + } + + switch amqpType(type_) { + case typeCodeStateAccepted: + *t = new(stateAccepted) + case typeCodeStateModified: + *t = new(stateModified) + case typeCodeStateReceived: + *t = new(stateReceived) + case typeCodeStateRejected: + *t = new(stateRejected) + case typeCodeStateReleased: + *t = new(stateReleased) + default: + return errorErrorf("unexpected type %d for deliveryState", type_) + } + return unmarshal(r, *t) + + case *interface{}: + v, err := readAny(r) + if err != nil { + return err + } + *t = v + + case unmarshaler: + return t.unmarshal(r) + default: + // handle **T + v := reflect.Indirect(reflect.ValueOf(i)) + + // can't unmarshal into a non-pointer + if v.Kind() != reflect.Ptr { + return errorErrorf("unable to unmarshal %T", i) + } + + // if nil pointer, allocate a new value to + // unmarshal into + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + + return unmarshal(r, v.Interface()) + } + return nil +} + +// unmarshalComposite is a helper for use in a composite's unmarshal() function. +// +// The composite from r will be unmarshaled into zero or more fields. An error +// will be returned if typ does not match the decoded type. +func unmarshalComposite(r *buffer, type_ amqpType, fields ...unmarshalField) error { + cType, numFields, err := readCompositeHeader(r) + if err != nil { + return err + } + + // check type matches expectation + if cType != type_ { + return errorErrorf("invalid header %#0x for %#0x", cType, type_) + } + + // Validate the field count is less than or equal to the number of fields + // provided. Fields may be omitted by the sender if they are not set. + if numFields > int64(len(fields)) { + return errorErrorf("invalid field count %d for %#0x", numFields, type_) + } + + for i, field := range fields[:numFields] { + // If the field is null and handleNull is set, call it. + if tryReadNull(r) { + if field.handleNull != nil { + err = field.handleNull() + if err != nil { + return err + } + } + continue + } + + // Unmarshal each of the received fields. + err = unmarshal(r, field.field) + if err != nil { + return errorWrapf(err, "unmarshaling field %d", i) + } + } + + // check and call handleNull for the remaining fields + for _, field := range fields[numFields:] { + if field.handleNull != nil { + err = field.handleNull() + if err != nil { + return err + } + } + } + + return nil +} + +// unmarshalField is a struct that contains a field to be unmarshaled into. +// +// An optional nullHandler can be set. If the composite field being unmarshaled +// is null and handleNull is not nil, nullHandler will be called. +type unmarshalField struct { + field interface{} + handleNull nullHandler +} + +// nullHandler is a function to be called when a composite's field +// is null. +type nullHandler func() error + +// readCompositeHeader reads and consumes the composite header from r. +func readCompositeHeader(r *buffer) (_ amqpType, fields int64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, 0, err + } + + // compsites always start with 0x0 + if type_ != 0 { + return 0, 0, errorErrorf("invalid composite header %#02x", type_) + } + + // next, the composite type is encoded as an AMQP uint8 + v, err := readUlong(r) + if err != nil { + return 0, 0, err + } + + // fields are represented as a list + fields, err = readListHeader(r) + + return amqpType(v), fields, err +} + +func readListHeader(r *buffer) (length int64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + listLength := r.len() + + switch type_ { + case typeCodeList0: + return 0, nil + case typeCodeList8: + buf, ok := r.next(2) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[1] + + size := int(buf[0]) + if size > listLength-1 { + return 0, errorNew("invalid length") + } + length = int64(buf[1]) + case typeCodeList32: + buf, ok := r.next(8) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[7] + + size := int(binary.BigEndian.Uint32(buf[:4])) + if size > listLength-4 { + return 0, errorNew("invalid length") + } + length = int64(binary.BigEndian.Uint32(buf[4:8])) + default: + return 0, errorErrorf("type code %#02x is not a recognized list type", type_) + } + + return length, nil +} + +func readArrayHeader(r *buffer) (length int64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + arrayLength := r.len() + + switch type_ { + case typeCodeArray8: + buf, ok := r.next(2) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[1] + + size := int(buf[0]) + if size > arrayLength-1 { + return 0, errorNew("invalid length") + } + length = int64(buf[1]) + case typeCodeArray32: + buf, ok := r.next(8) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[7] + + size := binary.BigEndian.Uint32(buf[:4]) + if int(size) > arrayLength-4 { + return 0, errorErrorf("invalid length for type %02x", type_) + } + length = int64(binary.BigEndian.Uint32(buf[4:8])) + default: + return 0, errorErrorf("type code %#02x is not a recognized array type", type_) + } + return length, nil +} + +func readString(r *buffer) (string, error) { + type_, err := r.readType() + if err != nil { + return "", err + } + + var length int64 + switch type_ { + case typeCodeStr8, typeCodeSym8: + n, err := r.readByte() + if err != nil { + return "", err + } + length = int64(n) + case typeCodeStr32, typeCodeSym32: + buf, ok := r.next(4) + if !ok { + return "", errorErrorf("invalid length for type %#02x", type_) + } + length = int64(binary.BigEndian.Uint32(buf)) + default: + return "", errorErrorf("type code %#02x is not a recognized string type", type_) + } + + buf, ok := r.next(length) + if !ok { + return "", errorNew("invalid length") + } + return string(buf), nil +} + +func readBinary(r *buffer) ([]byte, error) { + type_, err := r.readType() + if err != nil { + return nil, err + } + + var length int64 + switch type_ { + case typeCodeVbin8: + n, err := r.readByte() + if err != nil { + return nil, err + } + length = int64(n) + case typeCodeVbin32: + buf, ok := r.next(4) + if !ok { + return nil, errorErrorf("invalid length for type %#02x", type_) + } + length = int64(binary.BigEndian.Uint32(buf)) + default: + return nil, errorErrorf("type code %#02x is not a recognized binary type", type_) + } + + if length == 0 { + // An empty value and a nil value are distinct, + // ensure that the returned value is not nil in this case. + return make([]byte, 0), nil + } + + buf, ok := r.next(length) + if !ok { + return nil, errorNew("invalid length") + } + return append([]byte(nil), buf...), nil +} + +func readAny(r *buffer) (interface{}, error) { + if tryReadNull(r) { + return nil, nil + } + + type_, err := r.peekType() + if err != nil { + return nil, errorNew("invalid length") + } + + switch type_ { + // composite + case 0x0: + return readComposite(r) + + // bool + case typeCodeBool, typeCodeBoolTrue, typeCodeBoolFalse: + return readBool(r) + + // uint + case typeCodeUbyte: + return readUbyte(r) + case typeCodeUshort: + return readUshort(r) + case typeCodeUint, + typeCodeSmallUint, + typeCodeUint0: + return readUint32(r) + case typeCodeUlong, + typeCodeSmallUlong, + typeCodeUlong0: + return readUlong(r) + + // int + case typeCodeByte: + return readSbyte(r) + case typeCodeShort: + return readShort(r) + case typeCodeInt, + typeCodeSmallint: + return readInt32(r) + case typeCodeLong, + typeCodeSmalllong: + return readLong(r) + + // floating point + case typeCodeFloat: + return readFloat(r) + case typeCodeDouble: + return readDouble(r) + + // binary + case typeCodeVbin8, typeCodeVbin32: + return readBinary(r) + + // strings + case typeCodeStr8, typeCodeStr32: + return readString(r) + case typeCodeSym8, typeCodeSym32: + // symbols currently decoded as string to avoid + // exposing symbol type in message, this may need + // to change if users need to distinguish strings + // from symbols + return readString(r) + + // timestamp + case typeCodeTimestamp: + return readTimestamp(r) + + // UUID + case typeCodeUUID: + return readUUID(r) + + // arrays + case typeCodeArray8, typeCodeArray32: + return readAnyArray(r) + + // lists + case typeCodeList0, typeCodeList8, typeCodeList32: + return readAnyList(r) + + // maps + case typeCodeMap8: + return readAnyMap(r) + case typeCodeMap32: + return readAnyMap(r) + + // TODO: implement + case typeCodeDecimal32: + return nil, errorNew("decimal32 not implemented") + case typeCodeDecimal64: + return nil, errorNew("decimal64 not implemented") + case typeCodeDecimal128: + return nil, errorNew("decimal128 not implemented") + case typeCodeChar: + return nil, errorNew("char not implemented") + default: + return nil, errorErrorf("unknown type %#02x", type_) + } +} + +func readAnyMap(r *buffer) (interface{}, error) { + var m map[interface{}]interface{} + err := (*mapAnyAny)(&m).unmarshal(r) + if err != nil { + return nil, err + } + + if len(m) == 0 { + return m, nil + } + + stringKeys := true +Loop: + for key := range m { + switch key.(type) { + case string: + case symbol: + default: + stringKeys = false + break Loop + } + } + + if stringKeys { + mm := make(map[string]interface{}, len(m)) + for key, value := range m { + switch key := key.(type) { + case string: + mm[key] = value + case symbol: + mm[string(key)] = value + } + } + return mm, nil + } + + return m, nil +} + +func readAnyList(r *buffer) (interface{}, error) { + var a []interface{} + err := (*list)(&a).unmarshal(r) + return a, err +} + +func readAnyArray(r *buffer) (interface{}, error) { + // get the array type + buf := r.bytes() + if len(buf) < 1 { + return nil, errorNew("invalid length") + } + + var typeIdx int + switch amqpType(buf[0]) { + case typeCodeArray8: + typeIdx = 3 + case typeCodeArray32: + typeIdx = 9 + default: + return nil, errorErrorf("invalid array type %02x", buf[0]) + } + if len(buf) < typeIdx+1 { + return nil, errorNew("invalid length") + } + + switch amqpType(buf[typeIdx]) { + case typeCodeByte: + var a []int8 + err := (*arrayInt8)(&a).unmarshal(r) + return a, err + case typeCodeUbyte: + var a ArrayUByte + err := a.unmarshal(r) + return a, err + case typeCodeUshort: + var a []uint16 + err := (*arrayUint16)(&a).unmarshal(r) + return a, err + case typeCodeShort: + var a []int16 + err := (*arrayInt16)(&a).unmarshal(r) + return a, err + case typeCodeUint0, typeCodeSmallUint, typeCodeUint: + var a []uint32 + err := (*arrayUint32)(&a).unmarshal(r) + return a, err + case typeCodeSmallint, typeCodeInt: + var a []int32 + err := (*arrayInt32)(&a).unmarshal(r) + return a, err + case typeCodeUlong0, typeCodeSmallUlong, typeCodeUlong: + var a []uint64 + err := (*arrayUint64)(&a).unmarshal(r) + return a, err + case typeCodeSmalllong, typeCodeLong: + var a []int64 + err := (*arrayInt64)(&a).unmarshal(r) + return a, err + case typeCodeFloat: + var a []float32 + err := (*arrayFloat)(&a).unmarshal(r) + return a, err + case typeCodeDouble: + var a []float64 + err := (*arrayDouble)(&a).unmarshal(r) + return a, err + case typeCodeBool, typeCodeBoolTrue, typeCodeBoolFalse: + var a []bool + err := (*arrayBool)(&a).unmarshal(r) + return a, err + case typeCodeStr8, typeCodeStr32: + var a []string + err := (*arrayString)(&a).unmarshal(r) + return a, err + case typeCodeSym8, typeCodeSym32: + var a []symbol + err := (*arraySymbol)(&a).unmarshal(r) + return a, err + case typeCodeVbin8, typeCodeVbin32: + var a [][]byte + err := (*arrayBinary)(&a).unmarshal(r) + return a, err + case typeCodeTimestamp: + var a []time.Time + err := (*arrayTimestamp)(&a).unmarshal(r) + return a, err + case typeCodeUUID: + var a []UUID + err := (*arrayUUID)(&a).unmarshal(r) + return a, err + default: + return nil, errorErrorf("array decoding not implemented for %#02x", buf[typeIdx]) + } +} + +func readComposite(r *buffer) (interface{}, error) { + buf := r.bytes() + + if len(buf) < 2 { + return nil, errorNew("invalid length for composite") + } + + // compsites start with 0x0 + if amqpType(buf[0]) != 0x0 { + return nil, errorErrorf("invalid composite header %#02x", buf[0]) + } + + var compositeType uint64 + switch amqpType(buf[1]) { + case typeCodeSmallUlong: + if len(buf) < 3 { + return nil, errorNew("invalid length for smallulong") + } + compositeType = uint64(buf[2]) + case typeCodeUlong: + if len(buf) < 10 { + return nil, errorNew("invalid length for ulong") + } + compositeType = binary.BigEndian.Uint64(buf[2:]) + } + + if compositeType > math.MaxUint8 { + // try as described type + var dt describedType + err := dt.unmarshal(r) + return dt, err + } + + switch amqpType(compositeType) { + // Error + case typeCodeError: + t := new(Error) + err := t.unmarshal(r) + return t, err + + // Lifetime Policies + case typeCodeDeleteOnClose: + t := deleteOnClose + err := t.unmarshal(r) + return t, err + case typeCodeDeleteOnNoMessages: + t := deleteOnNoMessages + err := t.unmarshal(r) + return t, err + case typeCodeDeleteOnNoLinks: + t := deleteOnNoLinks + err := t.unmarshal(r) + return t, err + case typeCodeDeleteOnNoLinksOrMessages: + t := deleteOnNoLinksOrMessages + err := t.unmarshal(r) + return t, err + + // Delivery States + case typeCodeStateAccepted: + t := new(stateAccepted) + err := t.unmarshal(r) + return t, err + case typeCodeStateModified: + t := new(stateModified) + err := t.unmarshal(r) + return t, err + case typeCodeStateReceived: + t := new(stateReceived) + err := t.unmarshal(r) + return t, err + case typeCodeStateRejected: + t := new(stateRejected) + err := t.unmarshal(r) + return t, err + case typeCodeStateReleased: + t := new(stateReleased) + err := t.unmarshal(r) + return t, err + + case typeCodeOpen, + typeCodeBegin, + typeCodeAttach, + typeCodeFlow, + typeCodeTransfer, + typeCodeDisposition, + typeCodeDetach, + typeCodeEnd, + typeCodeClose, + typeCodeSource, + typeCodeTarget, + typeCodeMessageHeader, + typeCodeDeliveryAnnotations, + typeCodeMessageAnnotations, + typeCodeMessageProperties, + typeCodeApplicationProperties, + typeCodeApplicationData, + typeCodeAMQPSequence, + typeCodeAMQPValue, + typeCodeFooter, + typeCodeSASLMechanism, + typeCodeSASLInit, + typeCodeSASLChallenge, + typeCodeSASLResponse, + typeCodeSASLOutcome: + return nil, errorErrorf("readComposite unmarshal not implemented for %#02x", compositeType) + + default: + // try as described type + var dt describedType + err := dt.unmarshal(r) + return dt, err + } +} + +func readTimestamp(r *buffer) (time.Time, error) { + type_, err := r.readType() + if err != nil { + return time.Time{}, err + } + + if type_ != typeCodeTimestamp { + return time.Time{}, errorErrorf("invalid type for timestamp %02x", type_) + } + + n, err := r.readUint64() + ms := int64(n) + return time.Unix(ms/1000, (ms%1000)*1000000).UTC(), err +} + +func readInt(r *buffer) (int, error) { + type_, err := r.peekType() + if err != nil { + return 0, err + } + + switch type_ { + // Unsigned + case typeCodeUbyte: + n, err := readUbyte(r) + return int(n), err + case typeCodeUshort: + n, err := readUshort(r) + return int(n), err + case typeCodeUint0, typeCodeSmallUint, typeCodeUint: + n, err := readUint32(r) + return int(n), err + case typeCodeUlong0, typeCodeSmallUlong, typeCodeUlong: + n, err := readUlong(r) + return int(n), err + + // Signed + case typeCodeByte: + n, err := readSbyte(r) + return int(n), err + case typeCodeShort: + n, err := readShort(r) + return int(n), err + case typeCodeSmallint, typeCodeInt: + n, err := readInt32(r) + return int(n), err + case typeCodeSmalllong, typeCodeLong: + n, err := readLong(r) + return int(n), err + default: + return 0, errorErrorf("type code %#02x is not a recognized number type", type_) + } +} + +func readLong(r *buffer) (int64, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeSmalllong: + n, err := r.readByte() + return int64(n), err + case typeCodeLong: + n, err := r.readUint64() + return int64(n), err + default: + return 0, errorErrorf("invalid type for uint32 %02x", type_) + } +} + +func readInt32(r *buffer) (int32, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeSmallint: + n, err := r.readByte() + return int32(n), err + case typeCodeInt: + n, err := r.readUint32() + return int32(n), err + default: + return 0, errorErrorf("invalid type for int32 %02x", type_) + } +} + +func readShort(r *buffer) (int16, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeShort { + return 0, errorErrorf("invalid type for short %02x", type_) + } + + n, err := r.readUint16() + return int16(n), err +} + +func readSbyte(r *buffer) (int8, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeByte { + return 0, errorErrorf("invalid type for int8 %02x", type_) + } + + n, err := r.readByte() + return int8(n), err +} + +func readUbyte(r *buffer) (uint8, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeUbyte { + return 0, errorErrorf("invalid type for ubyte %02x", type_) + } + + return r.readByte() +} + +func readUshort(r *buffer) (uint16, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeUshort { + return 0, errorErrorf("invalid type for ushort %02x", type_) + } + + return r.readUint16() +} + +func readUint32(r *buffer) (uint32, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeUint0: + return 0, nil + case typeCodeSmallUint: + n, err := r.readByte() + return uint32(n), err + case typeCodeUint: + return r.readUint32() + default: + return 0, errorErrorf("invalid type for uint32 %02x", type_) + } +} + +func readUlong(r *buffer) (uint64, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeUlong0: + return 0, nil + case typeCodeSmallUlong: + n, err := r.readByte() + return uint64(n), err + case typeCodeUlong: + return r.readUint64() + default: + return 0, errorErrorf("invalid type for uint32 %02x", type_) + } +} + +func readFloat(r *buffer) (float32, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeFloat { + return 0, errorErrorf("invalid type for float32 %02x", type_) + } + + bits, err := r.readUint32() + return math.Float32frombits(bits), err +} + +func readDouble(r *buffer) (float64, error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + if type_ != typeCodeDouble { + return 0, errorErrorf("invalid type for float64 %02x", type_) + } + + bits, err := r.readUint64() + return math.Float64frombits(bits), err +} + +func readBool(r *buffer) (bool, error) { + type_, err := r.readType() + if err != nil { + return false, err + } + + switch type_ { + case typeCodeBool: + b, err := r.readByte() + return b != 0, err + case typeCodeBoolTrue: + return true, nil + case typeCodeBoolFalse: + return false, nil + default: + return false, errorErrorf("type code %#02x is not a recognized bool type", type_) + } +} + +func readUint(r *buffer) (value uint64, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + switch type_ { + case typeCodeUint0, typeCodeUlong0: + return 0, nil + case typeCodeUbyte, typeCodeSmallUint, typeCodeSmallUlong: + n, err := r.readByte() + return uint64(n), err + case typeCodeUshort: + n, err := r.readUint16() + return uint64(n), err + case typeCodeUint: + n, err := r.readUint32() + return uint64(n), err + case typeCodeUlong: + return r.readUint64() + default: + return 0, errorErrorf("type code %#02x is not a recognized number type", type_) + } +} + +func readUUID(r *buffer) (UUID, error) { + var uuid UUID + + type_, err := r.readType() + if err != nil { + return uuid, err + } + + if type_ != typeCodeUUID { + return uuid, errorErrorf("type code %#00x is not a UUID", type_) + } + + buf, ok := r.next(16) + if !ok { + return uuid, errorNew("invalid length") + } + copy(uuid[:], buf) + + return uuid, nil +} + +func readMapHeader(r *buffer) (count uint32, _ error) { + type_, err := r.readType() + if err != nil { + return 0, err + } + + length := r.len() + + switch type_ { + case typeCodeMap8: + buf, ok := r.next(2) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[1] + + size := int(buf[0]) + if size > length-1 { + return 0, errorNew("invalid length") + } + count = uint32(buf[1]) + case typeCodeMap32: + buf, ok := r.next(8) + if !ok { + return 0, errorNew("invalid length") + } + _ = buf[7] + + size := int(binary.BigEndian.Uint32(buf[:4])) + if size > length-4 { + return 0, errorNew("invalid length") + } + count = binary.BigEndian.Uint32(buf[4:8]) + default: + return 0, errorErrorf("invalid map type %#02x", type_) + } + + if int(count) > r.len() { + return 0, errorNew("invalid length") + } + return count, nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go new file mode 100644 index 0000000..30cc186 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/encode.go @@ -0,0 +1,589 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "math" + "time" + "unicode/utf8" +) + +type marshaler interface { + marshal(*buffer) error +} + +func marshal(wr *buffer, i interface{}) error { + switch t := i.(type) { + case nil: + wr.writeByte(byte(typeCodeNull)) + case bool: + if t { + wr.writeByte(byte(typeCodeBoolTrue)) + } else { + wr.writeByte(byte(typeCodeBoolFalse)) + } + case *bool: + if *t { + wr.writeByte(byte(typeCodeBoolTrue)) + } else { + wr.writeByte(byte(typeCodeBoolFalse)) + } + case uint: + writeUint64(wr, uint64(t)) + case *uint: + writeUint64(wr, uint64(*t)) + case uint64: + writeUint64(wr, t) + case *uint64: + writeUint64(wr, *t) + case uint32: + writeUint32(wr, t) + case *uint32: + writeUint32(wr, *t) + case uint16: + wr.writeByte(byte(typeCodeUshort)) + wr.writeUint16(t) + case *uint16: + wr.writeByte(byte(typeCodeUshort)) + wr.writeUint16(*t) + case uint8: + wr.write([]byte{ + byte(typeCodeUbyte), + t, + }) + case *uint8: + wr.write([]byte{ + byte(typeCodeUbyte), + *t, + }) + case int: + writeInt64(wr, int64(t)) + case *int: + writeInt64(wr, int64(*t)) + case int8: + wr.write([]byte{ + byte(typeCodeByte), + uint8(t), + }) + case *int8: + wr.write([]byte{ + byte(typeCodeByte), + uint8(*t), + }) + case int16: + wr.writeByte(byte(typeCodeShort)) + wr.writeUint16(uint16(t)) + case *int16: + wr.writeByte(byte(typeCodeShort)) + wr.writeUint16(uint16(*t)) + case int32: + writeInt32(wr, t) + case *int32: + writeInt32(wr, *t) + case int64: + writeInt64(wr, t) + case *int64: + writeInt64(wr, *t) + case float32: + writeFloat(wr, t) + case *float32: + writeFloat(wr, *t) + case float64: + writeDouble(wr, t) + case *float64: + writeDouble(wr, *t) + case string: + return writeString(wr, t) + case *string: + return writeString(wr, *t) + case []byte: + return writeBinary(wr, t) + case *[]byte: + return writeBinary(wr, *t) + case map[interface{}]interface{}: + return writeMap(wr, t) + case *map[interface{}]interface{}: + return writeMap(wr, *t) + case map[string]interface{}: + return writeMap(wr, t) + case *map[string]interface{}: + return writeMap(wr, *t) + case map[symbol]interface{}: + return writeMap(wr, t) + case *map[symbol]interface{}: + return writeMap(wr, *t) + case unsettled: + return writeMap(wr, t) + case *unsettled: + return writeMap(wr, *t) + case time.Time: + writeTimestamp(wr, t) + case *time.Time: + writeTimestamp(wr, *t) + case []int8: + return arrayInt8(t).marshal(wr) + case *[]int8: + return arrayInt8(*t).marshal(wr) + case []uint16: + return arrayUint16(t).marshal(wr) + case *[]uint16: + return arrayUint16(*t).marshal(wr) + case []int16: + return arrayInt16(t).marshal(wr) + case *[]int16: + return arrayInt16(*t).marshal(wr) + case []uint32: + return arrayUint32(t).marshal(wr) + case *[]uint32: + return arrayUint32(*t).marshal(wr) + case []int32: + return arrayInt32(t).marshal(wr) + case *[]int32: + return arrayInt32(*t).marshal(wr) + case []uint64: + return arrayUint64(t).marshal(wr) + case *[]uint64: + return arrayUint64(*t).marshal(wr) + case []int64: + return arrayInt64(t).marshal(wr) + case *[]int64: + return arrayInt64(*t).marshal(wr) + case []float32: + return arrayFloat(t).marshal(wr) + case *[]float32: + return arrayFloat(*t).marshal(wr) + case []float64: + return arrayDouble(t).marshal(wr) + case *[]float64: + return arrayDouble(*t).marshal(wr) + case []bool: + return arrayBool(t).marshal(wr) + case *[]bool: + return arrayBool(*t).marshal(wr) + case []string: + return arrayString(t).marshal(wr) + case *[]string: + return arrayString(*t).marshal(wr) + case []symbol: + return arraySymbol(t).marshal(wr) + case *[]symbol: + return arraySymbol(*t).marshal(wr) + case [][]byte: + return arrayBinary(t).marshal(wr) + case *[][]byte: + return arrayBinary(*t).marshal(wr) + case []time.Time: + return arrayTimestamp(t).marshal(wr) + case *[]time.Time: + return arrayTimestamp(*t).marshal(wr) + case []UUID: + return arrayUUID(t).marshal(wr) + case *[]UUID: + return arrayUUID(*t).marshal(wr) + case []interface{}: + return list(t).marshal(wr) + case *[]interface{}: + return list(*t).marshal(wr) + case marshaler: + return t.marshal(wr) + default: + return errorErrorf("marshal not implemented for %T", i) + } + return nil +} + +func writeInt32(wr *buffer, n int32) { + if n < 128 && n >= -128 { + wr.write([]byte{ + byte(typeCodeSmallint), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeInt)) + wr.writeUint32(uint32(n)) +} + +func writeInt64(wr *buffer, n int64) { + if n < 128 && n >= -128 { + wr.write([]byte{ + byte(typeCodeSmalllong), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeLong)) + wr.writeUint64(uint64(n)) +} + +func writeUint32(wr *buffer, n uint32) { + if n == 0 { + wr.writeByte(byte(typeCodeUint0)) + return + } + + if n < 256 { + wr.write([]byte{ + byte(typeCodeSmallUint), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeUint)) + wr.writeUint32(n) +} + +func writeUint64(wr *buffer, n uint64) { + if n == 0 { + wr.writeByte(byte(typeCodeUlong0)) + return + } + + if n < 256 { + wr.write([]byte{ + byte(typeCodeSmallUlong), + byte(n), + }) + return + } + + wr.writeByte(byte(typeCodeUlong)) + wr.writeUint64(n) +} + +func writeFloat(wr *buffer, f float32) { + wr.writeByte(byte(typeCodeFloat)) + wr.writeUint32(math.Float32bits(f)) +} + +func writeDouble(wr *buffer, f float64) { + wr.writeByte(byte(typeCodeDouble)) + wr.writeUint64(math.Float64bits(f)) +} + +func writeTimestamp(wr *buffer, t time.Time) { + wr.writeByte(byte(typeCodeTimestamp)) + ms := t.UnixNano() / int64(time.Millisecond) + wr.writeUint64(uint64(ms)) +} + +// marshalField is a field to be marshaled +type marshalField struct { + value interface{} // value to be marshaled, use pointers to avoid interface conversion overhead + omit bool // indicates that this field should be omitted (set to null) +} + +// marshalComposite is a helper for us in a composite's marshal() function. +// +// The returned bytes include the composite header and fields. Fields with +// omit set to true will be encoded as null or omitted altogether if there are +// no non-null fields after them. +func marshalComposite(wr *buffer, code amqpType, fields []marshalField) error { + // lastSetIdx is the last index to have a non-omitted field. + // start at -1 as it's possible to have no fields in a composite + lastSetIdx := -1 + + // marshal each field into it's index in rawFields, + // null fields are skipped, leaving the index nil. + for i, f := range fields { + if f.omit { + continue + } + lastSetIdx = i + } + + // write header only + if lastSetIdx == -1 { + wr.write([]byte{ + 0x0, + byte(typeCodeSmallUlong), + byte(code), + byte(typeCodeList0), + }) + return nil + } + + // write header + writeDescriptor(wr, code) + + // write fields + wr.writeByte(byte(typeCodeList32)) + + // write temp size, replace later + sizeIdx := wr.len() + wr.write([]byte{0, 0, 0, 0}) + preFieldLen := wr.len() + + // field count + wr.writeUint32(uint32(lastSetIdx + 1)) + + // write null to each index up to lastSetIdx + for _, f := range fields[:lastSetIdx+1] { + if f.omit { + wr.writeByte(byte(typeCodeNull)) + continue + } + err := marshal(wr, f.value) + if err != nil { + return err + } + } + + // fix size + size := uint32(wr.len() - preFieldLen) + buf := wr.bytes() + binary.BigEndian.PutUint32(buf[sizeIdx:], size) + + return nil +} + +func writeDescriptor(wr *buffer, code amqpType) { + wr.write([]byte{ + 0x0, + byte(typeCodeSmallUlong), + byte(code), + }) +} + +func writeString(wr *buffer, str string) error { + if !utf8.ValidString(str) { + return errorNew("not a valid UTF-8 string") + } + l := len(str) + + switch { + // Str8 + case l < 256: + wr.write([]byte{ + byte(typeCodeStr8), + byte(l), + }) + wr.writeString(str) + return nil + + // Str32 + case uint(l) < math.MaxUint32: + wr.writeByte(byte(typeCodeStr32)) + wr.writeUint32(uint32(l)) + wr.writeString(str) + return nil + + default: + return errorNew("too long") + } +} + +func writeBinary(wr *buffer, bin []byte) error { + l := len(bin) + + switch { + // List8 + case l < 256: + wr.write([]byte{ + byte(typeCodeVbin8), + byte(l), + }) + wr.write(bin) + return nil + + // List32 + case uint(l) < math.MaxUint32: + wr.writeByte(byte(typeCodeVbin32)) + wr.writeUint32(uint32(l)) + wr.write(bin) + return nil + + default: + return errorNew("too long") + } +} + +func writeMap(wr *buffer, m interface{}) error { + startIdx := wr.len() + wr.write([]byte{ + byte(typeCodeMap32), // type + 0, 0, 0, 0, // size placeholder + 0, 0, 0, 0, // length placeholder + }) + + var pairs int + switch m := m.(type) { + case map[interface{}]interface{}: + pairs = len(m) * 2 + for key, val := range m { + err := marshal(wr, key) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case map[string]interface{}: + pairs = len(m) * 2 + for key, val := range m { + err := writeString(wr, key) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case map[symbol]interface{}: + pairs = len(m) * 2 + for key, val := range m { + err := key.marshal(wr) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case unsettled: + pairs = len(m) * 2 + for key, val := range m { + err := writeString(wr, key) + if err != nil { + return err + } + err = marshal(wr, val) + if err != nil { + return err + } + } + case filter: + pairs = len(m) * 2 + for key, val := range m { + err := key.marshal(wr) + if err != nil { + return err + } + err = val.marshal(wr) + if err != nil { + return err + } + } + case Annotations: + pairs = len(m) * 2 + for key, val := range m { + switch key := key.(type) { + case string: + err := symbol(key).marshal(wr) + if err != nil { + return err + } + case symbol: + err := key.marshal(wr) + if err != nil { + return err + } + case int64: + writeInt64(wr, key) + case int: + writeInt64(wr, int64(key)) + default: + return errorErrorf("unsupported Annotations key type %T", key) + } + + err := marshal(wr, val) + if err != nil { + return err + } + } + default: + return errorErrorf("unsupported map type %T", m) + } + + if uint(pairs) > math.MaxUint32-4 { + return errorNew("map contains too many elements") + } + + // overwrite placeholder size and length + bytes := wr.bytes()[startIdx+1 : startIdx+9] + _ = bytes[7] // bounds check hint + + length := wr.len() - startIdx - 1 - 4 // -1 for type, -4 for length + binary.BigEndian.PutUint32(bytes[:4], uint32(length)) + binary.BigEndian.PutUint32(bytes[4:8], uint32(pairs)) + + return nil +} + +// type length sizes +const ( + array8TLSize = 2 + array32TLSize = 5 +) + +func writeArrayHeader(wr *buffer, length, typeSize int, type_ amqpType) { + size := length * typeSize + + // array type + if size+array8TLSize <= math.MaxUint8 { + wr.write([]byte{ + byte(typeCodeArray8), // type + byte(size + array8TLSize), // size + byte(length), // length + byte(type_), // element type + }) + } else { + wr.writeByte(byte(typeCodeArray32)) //type + wr.writeUint32(uint32(size + array32TLSize)) // size + wr.writeUint32(uint32(length)) // length + wr.writeByte(byte(type_)) // element type + } +} + +func writeVariableArrayHeader(wr *buffer, length, elementsSizeTotal int, type_ amqpType) { + // 0xA_ == 1, 0xB_ == 4 + // http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#doc-idp82960 + elementTypeSize := 1 + if type_&0xf0 == 0xb0 { + elementTypeSize = 4 + } + + size := elementsSizeTotal + (length * elementTypeSize) // size excluding array length + if size+array8TLSize <= math.MaxUint8 { + wr.write([]byte{ + byte(typeCodeArray8), // type + byte(size + array8TLSize), // size + byte(length), // length + byte(type_), // element type + }) + } else { + wr.writeByte(byte(typeCodeArray32)) // type + wr.writeUint32(uint32(size + array32TLSize)) // size + wr.writeUint32(uint32(length)) // length + wr.writeByte(byte(type_)) // element type + } +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go new file mode 100644 index 0000000..5bb2867 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/error_stdlib.go @@ -0,0 +1,39 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +//go:build !pkgerrors +// +build !pkgerrors + +package amqp + +import ( + "errors" + "fmt" +) + +// Default stdlib-based error functions. +var ( + errorNew = errors.New + errorErrorf = fmt.Errorf + errorWrapf = func(err error, _ string, _ ...interface{}) error { return err } +) diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go new file mode 100644 index 0000000..23067f3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp/types.go @@ -0,0 +1,2676 @@ +//MIT License +// +//Copyright (C) 2017 Kale Blankenship +//Portions Copyright (C) Microsoft Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE + +package amqp + +import ( + "encoding/binary" + "encoding/hex" + "fmt" + "math" + "reflect" + "time" + "unicode/utf8" +) + +type amqpType uint8 +type ProtoID uint8 + +// Type codes +const ( + typeCodeNull amqpType = 0x40 + + // Bool + typeCodeBool amqpType = 0x56 // boolean with the octet 0x00 being false and octet 0x01 being true + typeCodeBoolTrue amqpType = 0x41 + typeCodeBoolFalse amqpType = 0x42 + + // Unsigned + typeCodeUbyte amqpType = 0x50 // 8-bit unsigned integer (1) + typeCodeUshort amqpType = 0x60 // 16-bit unsigned integer in network byte order (2) + typeCodeUint amqpType = 0x70 // 32-bit unsigned integer in network byte order (4) + typeCodeSmallUint amqpType = 0x52 // unsigned integer value in the range 0 to 255 inclusive (1) + typeCodeUint0 amqpType = 0x43 // the uint value 0 (0) + typeCodeUlong amqpType = 0x80 // 64-bit unsigned integer in network byte order (8) + typeCodeSmallUlong amqpType = 0x53 // unsigned long value in the range 0 to 255 inclusive (1) + typeCodeUlong0 amqpType = 0x44 // the ulong value 0 (0) + + // Signed + typeCodeByte amqpType = 0x51 // 8-bit two's-complement integer (1) + typeCodeShort amqpType = 0x61 // 16-bit two's-complement integer in network byte order (2) + typeCodeInt amqpType = 0x71 // 32-bit two's-complement integer in network byte order (4) + typeCodeSmallint amqpType = 0x54 // 8-bit two's-complement integer (1) + typeCodeLong amqpType = 0x81 // 64-bit two's-complement integer in network byte order (8) + typeCodeSmalllong amqpType = 0x55 // 8-bit two's-complement integer + + // Decimal + typeCodeFloat amqpType = 0x72 // IEEE 754-2008 binary32 (4) + typeCodeDouble amqpType = 0x82 // IEEE 754-2008 binary64 (8) + typeCodeDecimal32 amqpType = 0x74 // IEEE 754-2008 decimal32 using the Binary Integer Decimal encoding (4) + typeCodeDecimal64 amqpType = 0x84 // IEEE 754-2008 decimal64 using the Binary Integer Decimal encoding (8) + typeCodeDecimal128 amqpType = 0x94 // IEEE 754-2008 decimal128 using the Binary Integer Decimal encoding (16) + + // Other + typeCodeChar amqpType = 0x73 // a UTF-32BE encoded Unicode character (4) + typeCodeTimestamp amqpType = 0x83 // 64-bit two's-complement integer representing milliseconds since the unix epoch + typeCodeUUID amqpType = 0x98 // UUID as defined in section 4.1.2 of RFC-4122 + + // Variable Length + typeCodeVbin8 amqpType = 0xa0 // up to 2^8 - 1 octets of binary data (1 + variable) + typeCodeVbin32 amqpType = 0xb0 // up to 2^32 - 1 octets of binary data (4 + variable) + typeCodeStr8 amqpType = 0xa1 // up to 2^8 - 1 octets worth of UTF-8 Unicode (with no byte order mark) (1 + variable) + typeCodeStr32 amqpType = 0xb1 // up to 2^32 - 1 octets worth of UTF-8 Unicode (with no byte order mark) (4 +variable) + typeCodeSym8 amqpType = 0xa3 // up to 2^8 - 1 seven bit ASCII characters representing a symbolic value (1 + variable) + typeCodeSym32 amqpType = 0xb3 // up to 2^32 - 1 seven bit ASCII characters representing a symbolic value (4 + variable) + + // Compound + typeCodeList0 amqpType = 0x45 // the empty list (i.e. the list with no elements) (0) + typeCodeList8 amqpType = 0xc0 // up to 2^8 - 1 list elements with total size less than 2^8 octets (1 + compound) + typeCodeList32 amqpType = 0xd0 // up to 2^32 - 1 list elements with total size less than 2^32 octets (4 + compound) + typeCodeMap8 amqpType = 0xc1 // up to 2^8 - 1 octets of encoded map data (1 + compound) + typeCodeMap32 amqpType = 0xd1 // up to 2^32 - 1 octets of encoded map data (4 + compound) + typeCodeArray8 amqpType = 0xe0 // up to 2^8 - 1 array elements with total size less than 2^8 octets (1 + array) + typeCodeArray32 amqpType = 0xf0 // up to 2^32 - 1 array elements with total size less than 2^32 octets (4 + array) + + // Composites + typeCodeOpen amqpType = 0x10 + typeCodeBegin amqpType = 0x11 + typeCodeAttach amqpType = 0x12 + typeCodeFlow amqpType = 0x13 + typeCodeTransfer amqpType = 0x14 + typeCodeDisposition amqpType = 0x15 + typeCodeDetach amqpType = 0x16 + typeCodeEnd amqpType = 0x17 + typeCodeClose amqpType = 0x18 + + typeCodeSource amqpType = 0x28 + typeCodeTarget amqpType = 0x29 + typeCodeError amqpType = 0x1d + + typeCodeMessageHeader amqpType = 0x70 + typeCodeDeliveryAnnotations amqpType = 0x71 + typeCodeMessageAnnotations amqpType = 0x72 + typeCodeMessageProperties amqpType = 0x73 + typeCodeApplicationProperties amqpType = 0x74 + typeCodeApplicationData amqpType = 0x75 + typeCodeAMQPSequence amqpType = 0x76 + typeCodeAMQPValue amqpType = 0x77 + typeCodeFooter amqpType = 0x78 + + typeCodeStateReceived amqpType = 0x23 + typeCodeStateAccepted amqpType = 0x24 + typeCodeStateRejected amqpType = 0x25 + typeCodeStateReleased amqpType = 0x26 + typeCodeStateModified amqpType = 0x27 + + typeCodeSASLMechanism amqpType = 0x40 + typeCodeSASLInit amqpType = 0x41 + typeCodeSASLChallenge amqpType = 0x42 + typeCodeSASLResponse amqpType = 0x43 + typeCodeSASLOutcome amqpType = 0x44 + + typeCodeDeleteOnClose amqpType = 0x2b + typeCodeDeleteOnNoLinks amqpType = 0x2c + typeCodeDeleteOnNoMessages amqpType = 0x2d + typeCodeDeleteOnNoLinksOrMessages amqpType = 0x2e +) + +// Frame structure: +// +// header (8 bytes) +// 0-3: SIZE (total size, at least 8 bytes for header, uint32) +// 4: DOFF (data offset,at least 2, count of 4 bytes words, uint8) +// 5: TYPE (frame type) +// 0x0: AMQP +// 0x1: SASL +// 6-7: type dependent (channel for AMQP) +// extended header (opt) +// body (opt) + +type deliveryState interface{} // TODO: http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transactions-v1.0-os.html#type-declared + +type unsettled map[string]deliveryState + +func (u unsettled) marshal(wr *buffer) error { + return writeMap(wr, u) +} + +func (u *unsettled) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + m := make(unsettled, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + var value deliveryState + err = unmarshal(r, &value) + if err != nil { + return err + } + m[key] = value + } + *u = m + return nil +} + +type filter map[symbol]*describedType + +func (f filter) marshal(wr *buffer) error { + return writeMap(wr, f) +} + +func (f *filter) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + m := make(filter, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + var value describedType + err = unmarshal(r, &value) + if err != nil { + return err + } + m[symbol(key)] = &value + } + *f = m + return nil +} + +// ErrorCondition is one of the error conditions defined in the AMQP spec. +type ErrorCondition string + +func (ec ErrorCondition) marshal(wr *buffer) error { + return (symbol)(ec).marshal(wr) +} + +func (ec *ErrorCondition) unmarshal(r *buffer) error { + s, err := readString(r) + *ec = ErrorCondition(s) + return err +} + +// Error Conditions +const ( + // AMQP Errors + ErrorInternalError ErrorCondition = "amqp:internal-error" + ErrorNotFound ErrorCondition = "amqp:not-found" + ErrorUnauthorizedAccess ErrorCondition = "amqp:unauthorized-access" + ErrorDecodeError ErrorCondition = "amqp:decode-error" + ErrorResourceLimitExceeded ErrorCondition = "amqp:resource-limit-exceeded" + ErrorNotAllowed ErrorCondition = "amqp:not-allowed" + ErrorInvalidField ErrorCondition = "amqp:invalid-field" + ErrorNotImplemented ErrorCondition = "amqp:not-implemented" + ErrorResourceLocked ErrorCondition = "amqp:resource-locked" + ErrorPreconditionFailed ErrorCondition = "amqp:precondition-failed" + ErrorResourceDeleted ErrorCondition = "amqp:resource-deleted" + ErrorIllegalState ErrorCondition = "amqp:illegal-state" + ErrorFrameSizeTooSmall ErrorCondition = "amqp:frame-size-too-small" + + // Connection Errors + ErrorConnectionForced ErrorCondition = "amqp:connection:forced" + ErrorFramingError ErrorCondition = "amqp:connection:framing-error" + ErrorConnectionRedirect ErrorCondition = "amqp:connection:redirect" + + // Session Errors + ErrorWindowViolation ErrorCondition = "amqp:session:window-violation" + ErrorErrantLink ErrorCondition = "amqp:session:errant-link" + ErrorHandleInUse ErrorCondition = "amqp:session:handle-in-use" + ErrorUnattachedHandle ErrorCondition = "amqp:session:unattached-handle" + + // Link Errors + ErrorDetachForced ErrorCondition = "amqp:link:detach-forced" + ErrorTransferLimitExceeded ErrorCondition = "amqp:link:transfer-limit-exceeded" + ErrorMessageSizeExceeded ErrorCondition = "amqp:link:message-size-exceeded" + ErrorLinkRedirect ErrorCondition = "amqp:link:redirect" + ErrorStolen ErrorCondition = "amqp:link:stolen" +) + +/* + + + + + + +*/ + +// Error is an AMQP error. +type Error struct { + // A symbolic value indicating the error condition. + Condition ErrorCondition + + // descriptive text about the error condition + // + // This text supplies any supplementary details not indicated by the condition field. + // This text can be logged as an aid to resolving issues. + Description string + + // map carrying information about the error condition + Info map[string]interface{} +} + +func (e *Error) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeError, []marshalField{ + {value: &e.Condition, omit: false}, + {value: &e.Description, omit: e.Description == ""}, + {value: e.Info, omit: len(e.Info) == 0}, + }) +} + +func (e *Error) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeError, []unmarshalField{ + {field: &e.Condition, handleNull: func() error { return errorNew("Error.Condition is required") }}, + {field: &e.Description}, + {field: &e.Info}, + }...) +} + +func (e *Error) String() string { + if e == nil { + return "*Error(nil)" + } + return fmt.Sprintf("*Error{Condition: %s, Description: %s, Info: %v}", + e.Condition, + e.Description, + e.Info, + ) +} + +func (e *Error) Error() string { + return e.String() +} + +// Message is an AMQP message. +type Message struct { + // Message format code. + // + // The upper three octets of a message format code identify a particular message + // format. The lowest octet indicates the version of said message format. Any + // given version of a format is forwards compatible with all higher versions. + Format uint32 + + // The DeliveryTag can be up to 32 octets of binary data. + // Note that when mode one is enabled there will be no delivery tag. + DeliveryTag []byte + + // The header section carries standard delivery details about the transfer + // of a message through the AMQP network. + Header *MessageHeader + // If the header section is omitted the receiver MUST assume the appropriate + // default values (or the meaning implied by no value being set) for the + // fields within the header unless other target or node specific defaults + // have otherwise been set. + + // The delivery-annotations section is used for delivery-specific non-standard + // properties at the head of the message. Delivery annotations convey information + // from the sending peer to the receiving peer. + DeliveryAnnotations Annotations + // If the recipient does not understand the annotation it cannot be acted upon + // and its effects (such as any implied propagation) cannot be acted upon. + // Annotations might be specific to one implementation, or common to multiple + // implementations. The capabilities negotiated on link attach and on the source + // and target SHOULD be used to establish which annotations a peer supports. A + // registry of defined annotations and their meanings is maintained [AMQPDELANN]. + // The symbolic key "rejected" is reserved for the use of communicating error + // information regarding rejected messages. Any values associated with the + // "rejected" key MUST be of type error. + // + // If the delivery-annotations section is omitted, it is equivalent to a + // delivery-annotations section containing an empty map of annotations. + + // The message-annotations section is used for properties of the message which + // are aimed at the infrastructure. + Annotations Annotations + // The message-annotations section is used for properties of the message which + // are aimed at the infrastructure and SHOULD be propagated across every + // delivery step. UnConfirmedMessage annotations convey information about the message. + // Intermediaries MUST propagate the annotations unless the annotations are + // explicitly augmented or modified (e.g., by the use of the modified outcome). + // + // The capabilities negotiated on link attach and on the source and target can + // be used to establish which annotations a peer understands; however, in a + // network of AMQP intermediaries it might not be possible to know if every + // intermediary will understand the annotation. Note that for some annotations + // it might not be necessary for the intermediary to understand their purpose, + // i.e., they could be used purely as an attribute which can be filtered on. + // + // A registry of defined annotations and their meanings is maintained [AMQPMESSANN]. + // + // If the message-annotations section is omitted, it is equivalent to a + // message-annotations section containing an empty map of annotations. + + // The properties section is used for a defined set of standard properties of + // the message. + Properties *MessageProperties + // The properties section is part of the bare message; therefore, + // if retransmitted by an intermediary, it MUST remain unaltered. + + // The application-properties section is a part of the bare message used for + // structured application data. Intermediaries can use the data within this + // structure for the purposes of filtering or routing. + ApplicationProperties map[string]interface{} + // The keys of this map are restricted to be of type string (which excludes + // the possibility of a null key) and the values are restricted to be of + // simple types only, that is, excluding map, list, and array types. + + // Data payloads. + Data [][]byte + // A data section contains opaque binary data. + // TODO: this could be data(s), amqp-sequence(s), amqp-value rather than single data: + // "The body consists of one of the following three choices: one or more data + // sections, one or more amqp-sequence sections, or a single amqp-value section." + + // Value payload. + Value interface{} + // An amqp-value section contains a single AMQP value. + + // The footer section is used for details about the message or delivery which + // can only be calculated or evaluated once the whole bare message has been + // constructed or seen (for example message hashes, HMACs, signatures and + // encryption details). + Footer Annotations + + // Mark the message as settled when LinkSenderSettle is ModeMixed. + // + // This field is ignored when LinkSenderSettle is not ModeMixed. + SendSettled bool + + //receiver *Receiver // Receiver the message was received from + settled bool // whether transfer was settled by sender + + // doneSignal is a channel that indicate when a message is considered acted upon by downstream handler + doneSignal chan struct{} +} + +type AMQP10 struct { + publishingId int64 + hasPublishingId bool + message *Message + Properties *MessageProperties + Annotations Annotations + header *MessageHeader + amqpData interface{} + ApplicationProperties map[string]interface{} +} + +func NewMessage(data []byte) *AMQP10 { + return &AMQP10{ + message: newMessage(data), + publishingId: 0, + hasPublishingId: false, + } +} + +func (amqp *AMQP10) SetPublishingId(id int64) { + amqp.hasPublishingId = true + amqp.publishingId = id +} + +func (amqp *AMQP10) HasPublishingId() bool { + return amqp.hasPublishingId +} + +func (amqp *AMQP10) GetPublishingId() int64 { + return amqp.publishingId +} + +func (amqp *AMQP10) MarshalBinary() ([]byte, error) { + amqp.message.Properties = amqp.Properties + amqp.message.ApplicationProperties = amqp.ApplicationProperties + amqp.message.Annotations = amqp.Annotations + return amqp.message.MarshalBinary() +} + +func (amqp *AMQP10) UnmarshalBinary(data []byte) error { + return amqp.message.UnmarshalBinary(data) +} + +func (amqp *AMQP10) GetData() [][]byte { + return amqp.message.Data +} + +func (amqp *AMQP10) GetMessageProperties() *MessageProperties { + return amqp.message.Properties +} + +func (amqp *AMQP10) GetMessageAnnotations() Annotations { + return amqp.message.Annotations +} + +func (amqp *AMQP10) GetApplicationProperties() map[string]interface{} { + return amqp.message.ApplicationProperties +} + +func (amqp *AMQP10) GetMessageHeader() *MessageHeader { + return amqp.message.Header +} + +func (amqp *AMQP10) GetAMQPValue() interface{} { + return amqp.message.Value +} + +// NewMessage returns a *Message with data as the payload. +// +// This constructor is intended as a helper for basic Messages with a +// single data payload. It is valid to construct a Message directly for +// more complex usages. +func newMessage(data []byte) *Message { + return &Message{ + Data: [][]byte{data}, + doneSignal: make(chan struct{}), + } +} + +// done closes the internal doneSignal channel to let the receiver know that this message has been acted upon +func (m *Message) done() { + // TODO: move initialization in ctor and use ctor everywhere? + if m.doneSignal != nil { + close(m.doneSignal) + } +} + +// GetData returns the first []byte from the Data field +// or nil if Data is empty. +func (m *Message) GetData() []byte { + if len(m.Data) < 1 { + return nil + } + return m.Data[0] +} + +// Ignore notifies the amqp message pump that the message has been handled +// without any disposition. It frees the amqp receiver to get the next message +// this is implicitly done after calling message dispositions (Accept/Release/Reject/Modify) +func (m *Message) Ignore() { + if m.shouldSendDisposition() { + m.done() + } +} + +// MarshalBinary encodes the message into binary form. +func (m *Message) MarshalBinary() ([]byte, error) { + buf := new(buffer) + err := m.marshal(buf) + return buf.b, err +} + +func (m *Message) shouldSendDisposition() bool { + return !m.settled +} + +func (m *Message) marshal(wr *buffer) error { + if m.Header != nil { + err := m.Header.marshal(wr) + if err != nil { + return err + } + } + + if m.DeliveryAnnotations != nil { + writeDescriptor(wr, typeCodeDeliveryAnnotations) + err := marshal(wr, m.DeliveryAnnotations) + if err != nil { + return err + } + } + + if m.Annotations != nil { + writeDescriptor(wr, typeCodeMessageAnnotations) + err := marshal(wr, m.Annotations) + if err != nil { + return err + } + } + + if m.Properties != nil { + err := marshal(wr, m.Properties) + if err != nil { + return err + } + } + + if m.ApplicationProperties != nil { + writeDescriptor(wr, typeCodeApplicationProperties) + err := marshal(wr, m.ApplicationProperties) + if err != nil { + return err + } + } + + for _, data := range m.Data { + writeDescriptor(wr, typeCodeApplicationData) + err := writeBinary(wr, data) + if err != nil { + return err + } + } + + if m.Value != nil { + writeDescriptor(wr, typeCodeAMQPValue) + err := marshal(wr, m.Value) + if err != nil { + return err + } + } + + if m.Footer != nil { + writeDescriptor(wr, typeCodeFooter) + err := marshal(wr, m.Footer) + if err != nil { + return err + } + } + + return nil +} + +// UnmarshalBinary decodes the message from binary form. +func (m *Message) UnmarshalBinary(data []byte) error { + buf := &buffer{ + b: data, + } + return m.unmarshal(buf) +} + +func (m *Message) unmarshal(r *buffer) error { + // loop, decoding sections until bytes have been consumed + for r.len() > 0 { + // determine type + type_, err := peekMessageType(r.bytes()) + if err != nil { + return err + } + + var ( + section interface{} + // section header is read from r before + // unmarshaling section is set to true + discardHeader = true + ) + switch amqpType(type_) { + + case typeCodeMessageHeader: + discardHeader = false + section = &m.Header + + case typeCodeDeliveryAnnotations: + section = &m.DeliveryAnnotations + + case typeCodeMessageAnnotations: + section = &m.Annotations + + case typeCodeMessageProperties: + discardHeader = false + section = &m.Properties + + case typeCodeApplicationProperties: + section = &m.ApplicationProperties + + case typeCodeApplicationData: + r.skip(3) + + var data []byte + err = unmarshal(r, &data) + if err != nil { + return err + } + + m.Data = append(m.Data, data) + continue + + case typeCodeFooter: + section = &m.Footer + + case typeCodeAMQPValue: + section = &m.Value + + default: + return errorErrorf("unknown message section %#02x", type_) + } + + if discardHeader { + r.skip(3) + } + + err = unmarshal(r, section) + if err != nil { + return err + } + } + return nil +} + +// peekMessageType reads the message type without +// modifying any data. +func peekMessageType(buf []byte) (uint8, error) { + if len(buf) < 3 { + return 0, errorNew("invalid message") + } + + if buf[0] != 0 { + return 0, errorErrorf("invalid composite header %02x", buf[0]) + } + + // copied from readUlong to avoid allocations + t := amqpType(buf[1]) + if t == typeCodeUlong0 { + return 0, nil + } + + if t == typeCodeSmallUlong { + if len(buf[2:]) == 0 { + return 0, errorNew("invalid ulong") + } + return buf[2], nil + } + + if t != typeCodeUlong { + return 0, errorErrorf("invalid type for uint32 %02x", t) + } + + if len(buf[2:]) < 8 { + return 0, errorNew("invalid ulong") + } + v := binary.BigEndian.Uint64(buf[2:10]) + + return uint8(v), nil +} + +func tryReadNull(r *buffer) bool { + if r.len() > 0 && amqpType(r.bytes()[0]) == typeCodeNull { + r.skip(1) + return true + } + return false +} + +// Annotations keys must be of type string, int, or int64. +// +// String keys are encoded as AMQP Symbols. +type Annotations map[interface{}]interface{} + +func (a Annotations) marshal(wr *buffer) error { + return writeMap(wr, a) +} + +func (a *Annotations) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + m := make(Annotations, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readAny(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + m[key] = value + } + *a = m + return nil +} + +/* + + + + + + + + +*/ + +// MessageHeader carries standard delivery details about the transfer +// of a message. +type MessageHeader struct { + Durable bool + Priority uint8 + TTL time.Duration // from milliseconds + FirstAcquirer bool + DeliveryCount uint32 +} + +func (h *MessageHeader) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeMessageHeader, []marshalField{ + {value: &h.Durable, omit: !h.Durable}, + {value: &h.Priority, omit: h.Priority == 4}, + {value: (*milliseconds)(&h.TTL), omit: h.TTL == 0}, + {value: &h.FirstAcquirer, omit: !h.FirstAcquirer}, + {value: &h.DeliveryCount, omit: h.DeliveryCount == 0}, + }) +} + +func (h *MessageHeader) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeMessageHeader, []unmarshalField{ + {field: &h.Durable}, + {field: &h.Priority, handleNull: func() error { h.Priority = 4; return nil }}, + {field: (*milliseconds)(&h.TTL)}, + {field: &h.FirstAcquirer}, + {field: &h.DeliveryCount}, + }...) +} + +/* + + + + + + + + + + + + + + + + +*/ + +// MessageProperties is the defined set of properties for AMQP messages. +type MessageProperties struct { + // Message-id, if set, uniquely identifies a message within the message system. + // The message producer is usually responsible for setting the message-id in + // such a way that it is assured to be globally unique. A broker MAY discard a + // message as a duplicate if the value of the message-id matches that of a + // previously received message sent to the same node. + MessageID interface{} // uint64, UUID, []byte, or string + + // The identity of the user responsible for producing the message. + // The client sets this value, and it MAY be authenticated by intermediaries. + UserID []byte + + // The to field identifies the node that is the intended destination of the message. + // On any given transfer this might not be the node at the receiving end of the link. + To string + + // A common field for summary information about the message content and purpose. + Subject string + + // The address of the node to send replies to. + ReplyTo string + + // This is a client-specific id that can be used to mark or identify messages + // between clients. + CorrelationID interface{} // uint64, UUID, []byte, or string + + // The RFC-2046 [RFC2046] MIME type for the message's application-data section + // (body). As per RFC-2046 [RFC2046] this can contain a charset parameter defining + // the character encoding used: e.g., 'text/plain; charset="utf-8"'. + // + // For clarity, as per section 7.2.1 of RFC-2616 [RFC2616], where the content type + // is unknown the content-type SHOULD NOT be set. This allows the recipient the + // opportunity to determine the actual type. Where the section is known to be truly + // opaque binary data, the content-type SHOULD be set to application/octet-stream. + // + // When using an application-data section with a section code other than data, + // content-type SHOULD NOT be set. + ContentType string + + // The content-encoding property is used as a modifier to the content-type. + // When present, its value indicates what additional content encodings have been + // applied to the application-data, and thus what decoding mechanisms need to be + // applied in order to obtain the media-type referenced by the content-type header + // field. + // + // Content-encoding is primarily used to allow a document to be compressed without + // losing the identity of its underlying content type. + // + // Content-encodings are to be interpreted as per section 3.5 of RFC 2616 [RFC2616]. + // Valid content-encodings are registered at IANA [IANAHTTPPARAMS]. + // + // The content-encoding MUST NOT be set when the application-data section is other + // than data. The binary representation of all other application-data section types + // is defined completely in terms of the AMQP type system. + // + // Implementations MUST NOT use the identity encoding. Instead, implementations + // SHOULD NOT set this property. Implementations SHOULD NOT use the compress encoding, + // except as to remain compatible with messages originally sent with other protocols, + // e.g. HTTP or SMTP. + // + // Implementations SHOULD NOT specify multiple content-encoding values except as to + // be compatible with messages originally sent with other protocols, e.g. HTTP or SMTP. + ContentEncoding string + + // An absolute time when this message is considered to be expired. + AbsoluteExpiryTime time.Time + + // An absolute time when this message was created. + CreationTime time.Time + + // Identifies the group the message belongs to. + GroupID string + + // The relative position of this message within its group. + GroupSequence uint32 // RFC-1982 sequence number + + // This is a client-specific id that is used so that client can send replies to this + // message to a specific group. + ReplyToGroupID string +} + +func (p *MessageProperties) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeMessageProperties, []marshalField{ + {value: p.MessageID, omit: p.MessageID == nil}, + {value: &p.UserID, omit: len(p.UserID) == 0}, + {value: &p.To, omit: p.To == ""}, + {value: &p.Subject, omit: p.Subject == ""}, + {value: &p.ReplyTo, omit: p.ReplyTo == ""}, + {value: p.CorrelationID, omit: p.CorrelationID == nil}, + {value: (*symbol)(&p.ContentType), omit: p.ContentType == ""}, + {value: (*symbol)(&p.ContentEncoding), omit: p.ContentEncoding == ""}, + {value: &p.AbsoluteExpiryTime, omit: p.AbsoluteExpiryTime.IsZero()}, + {value: &p.CreationTime, omit: p.CreationTime.IsZero()}, + {value: &p.GroupID, omit: p.GroupID == ""}, + {value: &p.GroupSequence}, + {value: &p.ReplyToGroupID, omit: p.ReplyToGroupID == ""}, + }) +} + +func (p *MessageProperties) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeMessageProperties, []unmarshalField{ + {field: &p.MessageID}, + {field: &p.UserID}, + {field: &p.To}, + {field: &p.Subject}, + {field: &p.ReplyTo}, + {field: &p.CorrelationID}, + {field: &p.ContentType}, + {field: &p.ContentEncoding}, + {field: &p.AbsoluteExpiryTime}, + {field: &p.CreationTime}, + {field: &p.GroupID}, + {field: &p.GroupSequence}, + {field: &p.ReplyToGroupID}, + }...) +} + +/* + + + + + +*/ + +type stateReceived struct { + // When sent by the sender this indicates the first section of the message + // (with section-number 0 being the first section) for which data can be resent. + // Data from sections prior to the given section cannot be retransmitted for + // this delivery. + // + // When sent by the receiver this indicates the first section of the message + // for which all data might not yet have been received. + SectionNumber uint32 + + // When sent by the sender this indicates the first byte of the encoded section + // data of the section given by section-number for which data can be resent + // (with section-offset 0 being the first byte). Bytes from the same section + // prior to the given offset section cannot be retransmitted for this delivery. + // + // When sent by the receiver this indicates the first byte of the given section + // which has not yet been received. Note that if a receiver has received all of + // section number X (which contains N bytes of data), but none of section number + // X + 1, then it can indicate this by sending either Received(section-number=X, + // section-offset=N) or Received(section-number=X+1, section-offset=0). The state + // Received(section-number=0, section-offset=0) indicates that no message data + // at all has been transferred. + SectionOffset uint64 +} + +func (sr *stateReceived) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateReceived, []marshalField{ + {value: &sr.SectionNumber, omit: false}, + {value: &sr.SectionOffset, omit: false}, + }) +} + +func (sr *stateReceived) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateReceived, []unmarshalField{ + {field: &sr.SectionNumber, handleNull: func() error { return errorNew("StateReceiver.SectionNumber is required") }}, + {field: &sr.SectionOffset, handleNull: func() error { return errorNew("StateReceiver.SectionOffset is required") }}, + }...) +} + +/* + + + +*/ + +type stateAccepted struct{} + +func (sa *stateAccepted) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateAccepted, nil) +} + +func (sa *stateAccepted) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateAccepted) +} + +func (sa *stateAccepted) String() string { + return "Accepted" +} + +/* + + + + +*/ + +type stateRejected struct { + Error *Error +} + +func (sr *stateRejected) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateRejected, []marshalField{ + {value: sr.Error, omit: sr.Error == nil}, + }) +} + +func (sr *stateRejected) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateRejected, + unmarshalField{field: &sr.Error}, + ) +} + +func (sr *stateRejected) String() string { + return fmt.Sprintf("Rejected{Error: %v}", sr.Error) +} + +/* + + + +*/ + +type stateReleased struct{} + +func (sr *stateReleased) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateReleased, nil) +} + +func (sr *stateReleased) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateReleased) +} + +func (sr *stateReleased) String() string { + return "Released" +} + +/* + + + + + + +*/ + +type stateModified struct { + // count the transfer as an unsuccessful delivery attempt + // + // If the delivery-failed flag is set, any messages modified + // MUST have their delivery-count incremented. + DeliveryFailed bool + + // prevent redelivery + // + // If the undeliverable-here is set, then any messages released MUST NOT + // be redelivered to the modifying link endpoint. + UndeliverableHere bool + + // message attributes + // Map containing attributes to combine with the existing message-annotations + // held in the message's header section. Where the existing message-annotations + // of the message contain an entry with the same key as an entry in this field, + // the value in this field associated with that key replaces the one in the + // existing headers; where the existing message-annotations has no such value, + // the value in this map is added. + MessageAnnotations Annotations +} + +func (sm *stateModified) marshal(wr *buffer) error { + return marshalComposite(wr, typeCodeStateModified, []marshalField{ + {value: &sm.DeliveryFailed, omit: !sm.DeliveryFailed}, + {value: &sm.UndeliverableHere, omit: !sm.UndeliverableHere}, + {value: sm.MessageAnnotations, omit: sm.MessageAnnotations == nil}, + }) +} + +func (sm *stateModified) unmarshal(r *buffer) error { + return unmarshalComposite(r, typeCodeStateModified, []unmarshalField{ + {field: &sm.DeliveryFailed}, + {field: &sm.UndeliverableHere}, + {field: &sm.MessageAnnotations}, + }...) +} + +func (sm *stateModified) String() string { + return fmt.Sprintf("Modified{DeliveryFailed: %t, UndeliverableHere: %t, MessageAnnotations: %v}", sm.DeliveryFailed, sm.UndeliverableHere, sm.MessageAnnotations) +} + +/* + + + + + + +*/ + +// symbol is an AMQP symbolic string. +type symbol string + +func (s symbol) marshal(wr *buffer) error { + l := len(s) + switch { + // Sym8 + case l < 256: + wr.write([]byte{ + byte(typeCodeSym8), + byte(l), + }) + wr.writeString(string(s)) + + // Sym32 + case uint(l) < math.MaxUint32: + wr.writeByte(uint8(typeCodeSym32)) + wr.writeUint32(uint32(l)) + wr.writeString(string(s)) + default: + return errorNew("too long") + } + return nil +} + +type milliseconds time.Duration + +func (m milliseconds) marshal(wr *buffer) error { + writeUint32(wr, uint32(m/milliseconds(time.Millisecond))) + return nil +} + +func (m *milliseconds) unmarshal(r *buffer) error { + n, err := readUint(r) + *m = milliseconds(time.Duration(n) * time.Millisecond) + return err +} + +// mapAnyAny is used to decode AMQP maps who's keys are undefined or +// inconsistently typed. +type mapAnyAny map[interface{}]interface{} + +func (m mapAnyAny) marshal(wr *buffer) error { + return writeMap(wr, map[interface{}]interface{}(m)) +} + +func (m *mapAnyAny) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + mm := make(mapAnyAny, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readAny(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + + // https://golang.org/ref/spec#Map_types: + // The comparison operators == and != must be fully defined + // for operands of the key type; thus the key type must not + // be a function, map, or slice. + switch reflect.ValueOf(key).Kind() { + case reflect.Slice, reflect.Func, reflect.Map: + return errorNew("invalid map key") + } + + mm[key] = value + } + *m = mm + return nil +} + +// mapStringAny is used to decode AMQP maps that have string keys +type mapStringAny map[string]interface{} + +func (m mapStringAny) marshal(wr *buffer) error { + return writeMap(wr, map[string]interface{}(m)) +} + +func (m *mapStringAny) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + mm := make(mapStringAny, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + mm[key] = value + } + *m = mm + + return nil +} + +// mapStringAny is used to decode AMQP maps that have Symbol keys +type mapSymbolAny map[symbol]interface{} + +func (m mapSymbolAny) marshal(wr *buffer) error { + return writeMap(wr, map[symbol]interface{}(m)) +} + +func (m *mapSymbolAny) unmarshal(r *buffer) error { + count, err := readMapHeader(r) + if err != nil { + return err + } + + mm := make(mapSymbolAny, count/2) + for i := uint32(0); i < count; i += 2 { + key, err := readString(r) + if err != nil { + return err + } + value, err := readAny(r) + if err != nil { + return err + } + mm[symbol(key)] = value + } + *m = mm + return nil +} + +// UUID is a 128 bit identifier as defined in RFC 4122. +type UUID [16]byte + +// String returns the hex encoded representation described in RFC 4122, Section 3. +func (u UUID) String() string { + var buf [36]byte + hex.Encode(buf[:8], u[:4]) + buf[8] = '-' + hex.Encode(buf[9:13], u[4:6]) + buf[13] = '-' + hex.Encode(buf[14:18], u[6:8]) + buf[18] = '-' + hex.Encode(buf[19:23], u[8:10]) + buf[23] = '-' + hex.Encode(buf[24:], u[10:]) + return string(buf[:]) +} + +func (u UUID) marshal(wr *buffer) error { + wr.writeByte(byte(typeCodeUUID)) + wr.write(u[:]) + return nil +} + +func (u *UUID) unmarshal(r *buffer) error { + un, err := readUUID(r) + *u = un + return err +} + +type lifetimePolicy uint8 + +const ( + deleteOnClose = lifetimePolicy(typeCodeDeleteOnClose) + deleteOnNoLinks = lifetimePolicy(typeCodeDeleteOnNoLinks) + deleteOnNoMessages = lifetimePolicy(typeCodeDeleteOnNoMessages) + deleteOnNoLinksOrMessages = lifetimePolicy(typeCodeDeleteOnNoLinksOrMessages) +) + +func (p lifetimePolicy) marshal(wr *buffer) error { + wr.write([]byte{ + 0x0, + byte(typeCodeSmallUlong), + byte(p), + byte(typeCodeList0), + }) + return nil +} + +func (p *lifetimePolicy) unmarshal(r *buffer) error { + typ, fields, err := readCompositeHeader(r) + if err != nil { + return err + } + if fields != 0 { + return errorErrorf("invalid size %d for lifetime-policy") + } + *p = lifetimePolicy(typ) + return nil +} + +// Sender Settlement Modes +const ( + // Sender will send all deliveries initially unsettled to the receiver. + ModeUnsettled SenderSettleMode = 0 + + // Sender will send all deliveries settled to the receiver. + ModeSettled SenderSettleMode = 1 + + // Sender MAY send a mixture of settled and unsettled deliveries to the receiver. + ModeMixed SenderSettleMode = 2 +) + +// SenderSettleMode specifies how the sender will settle messages. +type SenderSettleMode uint8 + +func (m *SenderSettleMode) String() string { + if m == nil { + return "" + } + + switch *m { + case ModeUnsettled: + return "unsettled" + + case ModeSettled: + return "settled" + + case ModeMixed: + return "mixed" + + default: + return fmt.Sprintf("unknown sender mode %d", uint8(*m)) + } +} + +func (m SenderSettleMode) marshal(wr *buffer) error { + return marshal(wr, uint8(m)) +} + +func (m *SenderSettleMode) unmarshal(r *buffer) error { + n, err := readUbyte(r) + *m = SenderSettleMode(n) + return err +} + +// Receiver Settlement Modes +const ( + // Receiver will spontaneously settle all incoming transfers. + ModeFirst ReceiverSettleMode = 0 + + // Receiver will only settle after sending the disposition to the + // sender and receiving a disposition indicating settlement of + // the delivery from the sender. + ModeSecond ReceiverSettleMode = 1 +) + +// ReceiverSettleMode specifies how the receiver will settle messages. +type ReceiverSettleMode uint8 + +func (m *ReceiverSettleMode) String() string { + if m == nil { + return "" + } + + switch *m { + case ModeFirst: + return "first" + + case ModeSecond: + return "second" + + default: + return fmt.Sprintf("unknown receiver mode %d", uint8(*m)) + } +} + +func (m ReceiverSettleMode) marshal(wr *buffer) error { + return marshal(wr, uint8(m)) +} + +func (m *ReceiverSettleMode) unmarshal(r *buffer) error { + n, err := readUbyte(r) + *m = ReceiverSettleMode(n) + return err +} + +// Durability Policies +const ( + // No terminus state is retained durably. + DurabilityNone Durability = 0 + + // Only the existence and configuration of the terminus is + // retained durably. + DurabilityConfiguration Durability = 1 + + // In addition to the existence and configuration of the + // terminus, the unsettled state for durable messages is + // retained durably. + DurabilityUnsettledState Durability = 2 +) + +// Durability specifies the durability of a link. +type Durability uint32 + +func (d *Durability) String() string { + if d == nil { + return "" + } + + switch *d { + case DurabilityNone: + return "none" + case DurabilityConfiguration: + return "configuration" + case DurabilityUnsettledState: + return "unsettled-state" + default: + return fmt.Sprintf("unknown durability %d", *d) + } +} + +func (d Durability) marshal(wr *buffer) error { + return marshal(wr, uint32(d)) +} + +func (d *Durability) unmarshal(r *buffer) error { + return unmarshal(r, (*uint32)(d)) +} + +// Expiry Policies +const ( + // The expiry timer starts when terminus is detached. + ExpiryLinkDetach ExpiryPolicy = "link-detach" + + // The expiry timer starts when the most recently + // associated session is ended. + ExpirySessionEnd ExpiryPolicy = "session-end" + + // The expiry timer starts when most recently associated + // connection is closed. + ExpiryConnectionClose ExpiryPolicy = "connection-close" + + // The terminus never expires. + ExpiryNever ExpiryPolicy = "never" +) + +// ExpiryPolicy specifies when the expiry timer of a terminus +// starts counting down from the timeout value. +// +// If the link is subsequently re-attached before the terminus is expired, +// then the count down is aborted. If the conditions for the +// terminus-expiry-policy are subsequently re-met, the expiry timer restarts +// from its originally configured timeout value. +type ExpiryPolicy symbol + +func (e ExpiryPolicy) validate() error { + switch e { + case ExpiryLinkDetach, + ExpirySessionEnd, + ExpiryConnectionClose, + ExpiryNever: + return nil + default: + return errorErrorf("unknown expiry-policy %q", e) + } +} + +func (e ExpiryPolicy) marshal(wr *buffer) error { + return symbol(e).marshal(wr) +} + +func (e *ExpiryPolicy) unmarshal(r *buffer) error { + err := unmarshal(r, (*symbol)(e)) + if err != nil { + return err + } + return e.validate() +} + +func (e *ExpiryPolicy) String() string { + if e == nil { + return "" + } + return string(*e) +} + +type describedType struct { + descriptor interface{} + value interface{} +} + +func (t describedType) marshal(wr *buffer) error { + wr.writeByte(0x0) // descriptor constructor + err := marshal(wr, t.descriptor) + if err != nil { + return err + } + return marshal(wr, t.value) +} + +func (t *describedType) unmarshal(r *buffer) error { + b, err := r.readByte() + if err != nil { + return err + } + + if b != 0x0 { + return errorErrorf("invalid described type header %02x", b) + } + + err = unmarshal(r, &t.descriptor) + if err != nil { + return err + } + return unmarshal(r, &t.value) +} + +func (t describedType) String() string { + return fmt.Sprintf("describedType{descriptor: %v, value: %v}", + t.descriptor, + t.value, + ) +} + +// SLICES + +// ArrayUByte allows encoding []uint8/[]byte as an array +// rather than binary data. +type ArrayUByte []uint8 + +func (a ArrayUByte) marshal(wr *buffer) error { + const typeSize = 1 + + writeArrayHeader(wr, len(a), typeSize, typeCodeUbyte) + wr.write(a) + + return nil +} + +func (a *ArrayUByte) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeUbyte { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + buf, ok := r.next(length) + if !ok { + return errorErrorf("invalid length %d", length) + } + *a = append([]byte(nil), buf...) + + return nil +} + +type arrayInt8 []int8 + +func (a arrayInt8) marshal(wr *buffer) error { + const typeSize = 1 + + writeArrayHeader(wr, len(a), typeSize, typeCodeByte) + + for _, value := range a { + wr.writeByte(uint8(value)) + } + + return nil +} + +func (a *arrayInt8) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeByte { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + buf, ok := r.next(length) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]int8, length) + } else { + aa = aa[:length] + } + + for i, value := range buf { + aa[i] = int8(value) + } + + *a = aa + return nil +} + +type arrayUint16 []uint16 + +func (a arrayUint16) marshal(wr *buffer) error { + const typeSize = 2 + + writeArrayHeader(wr, len(a), typeSize, typeCodeUshort) + + for _, element := range a { + wr.writeUint16(element) + } + + return nil +} + +func (a *arrayUint16) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeUshort { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + const typeSize = 2 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]uint16, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = binary.BigEndian.Uint16(buf[bufIdx:]) + bufIdx += 2 + } + + *a = aa + return nil +} + +type arrayInt16 []int16 + +func (a arrayInt16) marshal(wr *buffer) error { + const typeSize = 2 + + writeArrayHeader(wr, len(a), typeSize, typeCodeShort) + + for _, element := range a { + wr.writeUint16(uint16(element)) + } + + return nil +} + +func (a *arrayInt16) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeShort { + return errorErrorf("invalid type for []uint16 %02x", type_) + } + + const typeSize = 2 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]int16, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = int16(binary.BigEndian.Uint16(buf[bufIdx : bufIdx+2])) + bufIdx += 2 + } + + *a = aa + return nil +} + +type arrayUint32 []uint32 + +func (a arrayUint32) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmallUint + ) + for _, n := range a { + if n > math.MaxUint8 { + typeSize = 4 + typeCode = typeCodeUint + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeUint { + for _, element := range a { + wr.writeUint32(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayUint32) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeUint0: + if int64(cap(aa)) < length { + aa = make([]uint32, length) + } else { + aa = aa[:length] + for i := range aa { + aa[i] = 0 + } + } + case typeCodeSmallUint: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]uint32, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = uint32(n) + } + case typeCodeUint: + const typeSize = 4 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + if int64(cap(aa)) < length { + aa = make([]uint32, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = binary.BigEndian.Uint32(buf[bufIdx : bufIdx+4]) + bufIdx += 4 + } + default: + return errorErrorf("invalid type for []uint32 %02x", type_) + } + + *a = aa + return nil +} + +type arrayInt32 []int32 + +func (a arrayInt32) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmallint + ) + for _, n := range a { + if n > math.MaxInt8 { + typeSize = 4 + typeCode = typeCodeInt + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeInt { + for _, element := range a { + wr.writeUint32(uint32(element)) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayInt32) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeSmallint: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]int32, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = int32(int8(n)) + } + case typeCodeInt: + const typeSize = 4 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + if int64(cap(aa)) < length { + aa = make([]int32, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = int32(binary.BigEndian.Uint32(buf[bufIdx:])) + bufIdx += 4 + } + default: + return errorErrorf("invalid type for []int32 %02x", type_) + } + + *a = aa + return nil +} + +type arrayUint64 []uint64 + +func (a arrayUint64) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmallUlong + ) + for _, n := range a { + if n > math.MaxUint8 { + typeSize = 8 + typeCode = typeCodeUlong + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeUlong { + for _, element := range a { + wr.writeUint64(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayUint64) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeUlong0: + if int64(cap(aa)) < length { + aa = make([]uint64, length) + } else { + aa = aa[:length] + for i := range aa { + aa[i] = 0 + } + } + case typeCodeSmallUlong: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]uint64, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = uint64(n) + } + case typeCodeUlong: + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]uint64, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = binary.BigEndian.Uint64(buf[bufIdx : bufIdx+8]) + bufIdx += 8 + } + default: + return errorErrorf("invalid type for []uint64 %02x", type_) + } + + *a = aa + return nil +} + +type arrayInt64 []int64 + +func (a arrayInt64) marshal(wr *buffer) error { + var ( + typeSize = 1 + typeCode = typeCodeSmalllong + ) + for _, n := range a { + if n > math.MaxUint8 { + typeSize = 8 + typeCode = typeCodeLong + break + } + } + + writeArrayHeader(wr, len(a), typeSize, typeCode) + + if typeCode == typeCodeLong { + for _, element := range a { + wr.writeUint64(uint64(element)) + } + } else { + for _, element := range a { + wr.writeByte(byte(element)) + } + } + + return nil +} + +func (a *arrayInt64) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeSmalllong: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]int64, length) + } else { + aa = aa[:length] + } + + for i, n := range buf { + aa[i] = int64(int8(n)) + } + case typeCodeLong: + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorNew("invalid length") + } + + if int64(cap(aa)) < length { + aa = make([]int64, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + aa[i] = int64(binary.BigEndian.Uint64(buf[bufIdx:])) + bufIdx += 8 + } + default: + return errorErrorf("invalid type for []uint64 %02x", type_) + } + + *a = aa + return nil +} + +type arrayFloat []float32 + +func (a arrayFloat) marshal(wr *buffer) error { + const typeSize = 4 + + writeArrayHeader(wr, len(a), typeSize, typeCodeFloat) + + for _, element := range a { + wr.writeUint32(math.Float32bits(element)) + } + + return nil +} + +func (a *arrayFloat) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeFloat { + return errorErrorf("invalid type for []float32 %02x", type_) + } + + const typeSize = 4 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]float32, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + bits := binary.BigEndian.Uint32(buf[bufIdx:]) + aa[i] = math.Float32frombits(bits) + bufIdx += typeSize + } + + *a = aa + return nil +} + +type arrayDouble []float64 + +func (a arrayDouble) marshal(wr *buffer) error { + const typeSize = 8 + + writeArrayHeader(wr, len(a), typeSize, typeCodeDouble) + + for _, element := range a { + wr.writeUint64(math.Float64bits(element)) + } + + return nil +} + +func (a *arrayDouble) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeDouble { + return errorErrorf("invalid type for []float64 %02x", type_) + } + + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]float64, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + bits := binary.BigEndian.Uint64(buf[bufIdx:]) + aa[i] = math.Float64frombits(bits) + bufIdx += typeSize + } + + *a = aa + return nil +} + +type arrayBool []bool + +func (a arrayBool) marshal(wr *buffer) error { + const typeSize = 1 + + writeArrayHeader(wr, len(a), typeSize, typeCodeBool) + + for _, element := range a { + value := byte(0) + if element { + value = 1 + } + wr.writeByte(value) + } + + return nil +} + +func (a *arrayBool) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]bool, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeBool: + buf, ok := r.next(length) + if !ok { + return errorNew("invalid length") + } + + for i, value := range buf { + if value == 0 { + aa[i] = false + } else { + aa[i] = true + } + } + + case typeCodeBoolTrue: + for i := range aa { + aa[i] = true + } + case typeCodeBoolFalse: + for i := range aa { + aa[i] = false + } + default: + return errorErrorf("invalid type for []bool %02x", type_) + } + + *a = aa + return nil +} + +type arrayString []string + +func (a arrayString) marshal(wr *buffer) error { + var ( + elementType = typeCodeStr8 + elementsSizeTotal int + ) + for _, element := range a { + if !utf8.ValidString(element) { + return errorNew("not a valid UTF-8 string") + } + + elementsSizeTotal += len(element) + + if len(element) > math.MaxUint8 { + elementType = typeCodeStr32 + } + } + + writeVariableArrayHeader(wr, len(a), elementsSizeTotal, elementType) + + if elementType == typeCodeStr32 { + for _, element := range a { + wr.writeUint32(uint32(len(element))) + wr.writeString(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(len(element))) + wr.writeString(element) + } + } + + return nil +} + +func (a *arrayString) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + const typeSize = 2 // assume all strings are at least 2 bytes + if length*typeSize > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]string, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeStr8: + for i := range aa { + size, err := r.readByte() + if err != nil { + return err + } + + buf, ok := r.next(int64(size)) + if !ok { + return errorNew("invalid length") + } + + aa[i] = string(buf) + } + case typeCodeStr32: + for i := range aa { + buf, ok := r.next(4) + if !ok { + return errorNew("invalid length") + } + size := int64(binary.BigEndian.Uint32(buf)) + + buf, ok = r.next(size) + if !ok { + return errorNew("invalid length") + } + aa[i] = string(buf) + } + default: + return errorErrorf("invalid type for []string %02x", type_) + } + + *a = aa + return nil +} + +type arraySymbol []symbol + +func (a arraySymbol) marshal(wr *buffer) error { + var ( + elementType = typeCodeSym8 + elementsSizeTotal int + ) + for _, element := range a { + elementsSizeTotal += len(element) + + if len(element) > math.MaxUint8 { + elementType = typeCodeSym32 + } + } + + writeVariableArrayHeader(wr, len(a), elementsSizeTotal, elementType) + + if elementType == typeCodeSym32 { + for _, element := range a { + wr.writeUint32(uint32(len(element))) + wr.writeString(string(element)) + } + } else { + for _, element := range a { + wr.writeByte(byte(len(element))) + wr.writeString(string(element)) + } + } + + return nil +} + +func (a *arraySymbol) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + const typeSize = 2 // assume all symbols are at least 2 bytes + if length*typeSize > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]symbol, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeSym8: + for i := range aa { + size, err := r.readByte() + if err != nil { + return err + } + + buf, ok := r.next(int64(size)) + if !ok { + return errorNew("invalid length") + } + aa[i] = symbol(buf) + } + case typeCodeSym32: + for i := range aa { + buf, ok := r.next(4) + if !ok { + return errorNew("invalid length") + } + size := int64(binary.BigEndian.Uint32(buf)) + + buf, ok = r.next(size) + if !ok { + return errorNew("invalid length") + } + aa[i] = symbol(buf) + } + default: + return errorErrorf("invalid type for []symbol %02x", type_) + } + + *a = aa + return nil +} + +type arrayBinary [][]byte + +func (a arrayBinary) marshal(wr *buffer) error { + var ( + elementType = typeCodeVbin8 + elementsSizeTotal int + ) + for _, element := range a { + elementsSizeTotal += len(element) + + if len(element) > math.MaxUint8 { + elementType = typeCodeVbin32 + } + } + + writeVariableArrayHeader(wr, len(a), elementsSizeTotal, elementType) + + if elementType == typeCodeVbin32 { + for _, element := range a { + wr.writeUint32(uint32(len(element))) + wr.write(element) + } + } else { + for _, element := range a { + wr.writeByte(byte(len(element))) + wr.write(element) + } + } + + return nil +} + +func (a *arrayBinary) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + const typeSize = 2 // assume all binary is at least 2 bytes + if length*typeSize > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([][]byte, length) + } else { + aa = aa[:length] + } + + type_, err := r.readType() + if err != nil { + return err + } + switch type_ { + case typeCodeVbin8: + for i := range aa { + size, err := r.readByte() + if err != nil { + return err + } + + buf, ok := r.next(int64(size)) + if !ok { + return errorErrorf("invalid length %d", length) + } + aa[i] = append([]byte(nil), buf...) + } + case typeCodeVbin32: + for i := range aa { + buf, ok := r.next(4) + if !ok { + return errorNew("invalid length") + } + size := binary.BigEndian.Uint32(buf) + + buf, ok = r.next(int64(size)) + if !ok { + return errorNew("invalid length") + } + aa[i] = append([]byte(nil), buf...) + } + default: + return errorErrorf("invalid type for [][]byte %02x", type_) + } + + *a = aa + return nil +} + +type arrayTimestamp []time.Time + +func (a arrayTimestamp) marshal(wr *buffer) error { + const typeSize = 8 + + writeArrayHeader(wr, len(a), typeSize, typeCodeTimestamp) + + for _, element := range a { + ms := element.UnixNano() / int64(time.Millisecond) + wr.writeUint64(uint64(ms)) + } + + return nil +} + +func (a *arrayTimestamp) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeTimestamp { + return errorErrorf("invalid type for []time.Time %02x", type_) + } + + const typeSize = 8 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]time.Time, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + ms := int64(binary.BigEndian.Uint64(buf[bufIdx:])) + bufIdx += typeSize + aa[i] = time.Unix(ms/1000, (ms%1000)*1000000).UTC() + } + + *a = aa + return nil +} + +type arrayUUID []UUID + +func (a arrayUUID) marshal(wr *buffer) error { + const typeSize = 16 + + writeArrayHeader(wr, len(a), typeSize, typeCodeUUID) + + for _, element := range a { + wr.write(element[:]) + } + + return nil +} + +func (a *arrayUUID) unmarshal(r *buffer) error { + length, err := readArrayHeader(r) + if err != nil { + return err + } + + type_, err := r.readType() + if err != nil { + return err + } + if type_ != typeCodeUUID { + return errorErrorf("invalid type for []UUID %#02x", type_) + } + + const typeSize = 16 + buf, ok := r.next(length * typeSize) + if !ok { + return errorErrorf("invalid length %d", length) + } + + aa := (*a)[:0] + if int64(cap(aa)) < length { + aa = make([]UUID, length) + } else { + aa = aa[:length] + } + + var bufIdx int + for i := range aa { + copy(aa[i][:], buf[bufIdx:bufIdx+16]) + bufIdx += 16 + } + + *a = aa + return nil +} + +// LIST + +type list []interface{} + +func (l list) marshal(wr *buffer) error { + length := len(l) + + // type + if length == 0 { + wr.writeByte(byte(typeCodeList0)) + return nil + } + wr.writeByte(byte(typeCodeList32)) + + // size + sizeIdx := wr.len() + wr.write([]byte{0, 0, 0, 0}) + + // length + wr.writeUint32(uint32(length)) + + for _, element := range l { + err := marshal(wr, element) + if err != nil { + return err + } + } + + // overwrite size + binary.BigEndian.PutUint32(wr.bytes()[sizeIdx:], uint32(wr.len()-(sizeIdx+4))) + + return nil +} + +func (l *list) unmarshal(r *buffer) error { + length, err := readListHeader(r) + if err != nil { + return err + } + + // assume that all types are at least 1 byte + if length > int64(r.len()) { + return errorErrorf("invalid length %d", length) + } + + ll := *l + if int64(cap(ll)) < length { + ll = make([]interface{}, length) + } else { + ll = ll[:length] + } + + for i := range ll { + ll[i], err = readAny(r) + if err != nil { + return err + } + } + + *l = ll + return nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go new file mode 100644 index 0000000..0d261b1 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs/log.go @@ -0,0 +1,31 @@ +package logs + +import ( + "fmt" + "log" +) + +const ( + INFO = 0 + DEBUG = 1 +) + +var LogLevel int8 + +func LogInfo(message string, v ...interface{}) { + log.Printf(fmt.Sprintf("[info] - %s", message), v...) +} + +func LogError(message string, v ...interface{}) { + log.Printf(fmt.Sprintf("[error] - %s", message), v...) +} + +func LogDebug(message string, v ...interface{}) { + if LogLevel > INFO { + log.Printf(fmt.Sprintf("[debug] - %s", message), v...) + } +} + +func LogWarn(message string, v ...interface{}) { + log.Printf(fmt.Sprintf("[warn] - %s", message), v...) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go new file mode 100644 index 0000000..23314d3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message/interface.go @@ -0,0 +1,19 @@ +package message + +import "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + +type StreamMessage interface { + MarshalBinary() ([]byte, error) + UnmarshalBinary(data []byte) error + SetPublishingId(id int64) + GetPublishingId() int64 + HasPublishingId() bool + GetData() [][]byte + GetMessageProperties() *amqp.MessageProperties + GetMessageAnnotations() amqp.Annotations + GetApplicationProperties() map[string]interface{} + + // GetMessageHeader GetAMQPValue read only values see: rabbitmq-stream-go-client/issues/128 + GetMessageHeader() *amqp.MessageHeader + GetAMQPValue() interface{} +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go new file mode 100644 index 0000000..29eaa38 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/aggregation.go @@ -0,0 +1,360 @@ +package stream + +import ( + "bufio" + "bytes" + "compress/gzip" + "fmt" + "github.com/golang/snappy" + "github.com/klauspost/compress/zstd" + "github.com/pierrec/lz4" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "io" + "io/ioutil" +) + +const ( + None = byte(0) + GZIP = byte(1) + SNAPPY = byte(2) + LZ4 = byte(3) + ZSTD = byte(4) +) + +type Compression struct { + enabled bool + value byte +} + +func (compression Compression) String() string { + return fmt.Sprintf("value %d (enable: %t)", compression.value, + compression.enabled) +} + +func (compression Compression) None() Compression { + return Compression{value: None, enabled: true} +} + +func (compression Compression) Gzip() Compression { + return Compression{value: GZIP, enabled: true} +} + +func (compression Compression) Snappy() Compression { + return Compression{value: SNAPPY, enabled: true} +} + +func (compression Compression) Zstd() Compression { + return Compression{value: ZSTD, enabled: true} +} + +func (compression Compression) Lz4() Compression { + return Compression{value: LZ4, enabled: true} +} + +type subEntry struct { + messages []messageSequence + publishingId int64 // need to store the publishingId useful in case of aggregation + + unCompressedSize int + sizeInBytes int + dataInBytes []byte +} +type subEntries struct { + items []*subEntry + totalSizeInBytes int +} + +type iCompress interface { + Compress(subEntries *subEntries) + UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader +} + +func compressByValue(value byte) iCompress { + + switch value { + case GZIP: + return compressGZIP{} + case SNAPPY: + return compressSnappy{} + case LZ4: + return compressLZ4{} + case ZSTD: + return compressZSTD{} + } + + return compressNONE{} +} + +type compressNONE struct { +} + +func (es compressNONE) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + for _, msg := range entry.messages { + writeInt(&tmp, len(msg.messageBytes)) + tmp.Write(msg.messageBytes) + } + entry.dataInBytes = tmp.Bytes() + entry.sizeInBytes += len(entry.dataInBytes) + subEntries.totalSizeInBytes += len(entry.dataInBytes) + } +} + +func (es compressNONE) UnCompress(source *bufio.Reader, _, _ uint32) *bufio.Reader { + return source +} + +type compressGZIP struct { +} + +func (es compressGZIP) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w := gzip.NewWriter(&tmp) + for _, msg := range entry.messages { + size := len(msg.messageBytes) + //w.Write(bytesFromInt((uint32(size) >> 24) & 0xFF)) + //w.Write(bytesFromInt((uint32(size) >> 16) & 0xFF)) + //w.Write(bytesFromInt((uint32(size) >> 8) & 0xFF)) + //w.Write(bytesFromInt((uint32(size) >> 0) & 0xFF)) + w.Write(bytesFromInt(uint32(size))) + w.Write(msg.messageBytes) + } + w.Flush() + w.Close() + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressGZIP) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("GZIP Error during reading buffer %s", err) + } + + reader, err := gzip.NewReader(bytes.NewBuffer(zipperBuffer)) + + if err != nil { + logs.LogError("Error creating GZIP NewReader %s", err) + } + defer reader.Close() + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) +} + +type compressSnappy struct { +} + +func (es compressSnappy) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w := snappy.NewBufferedWriter(&tmp) + for _, msg := range entry.messages { + size := len(msg.messageBytes) + if _, err := w.Write(bytesFromInt(uint32(size))); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + if _, err := w.Write(msg.messageBytes); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + } + if err := w.Flush(); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + if err := w.Close(); err != nil { + logs.LogError("Error compressing with Snappy %v", err) + //return err // TODO we should return error if we cannot compress + } + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressSnappy) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("SNAPPY Error during reading buffer %s", err) + } + + reader := snappy.NewReader(bytes.NewBuffer(zipperBuffer)) + if err != nil { + logs.LogError("Error creating SNAPPY NewReader %s", err) + } + defer reader.Reset(nil) + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) + +} + +type compressLZ4 struct { +} + +func (es compressLZ4) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w := lz4.NewWriter(&tmp) + for _, msg := range entry.messages { + size := len(msg.messageBytes) + if _, err := w.Write(bytesFromInt(uint32(size))); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + if _, err := w.Write(msg.messageBytes); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + } + if err := w.Flush(); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + if err := w.Close(); err != nil { + logs.LogError("Error compressing with LZ4 %v", err) + //return err // TODO we should return error if we cannot compress + } + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressLZ4) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("LZ4 Error during reading buffer %s", err) + } + + reader := lz4.NewReader(bytes.NewBuffer(zipperBuffer)) + defer reader.Reset(nil) + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) + +} + +type compressZSTD struct { +} + +func (es compressZSTD) Compress(subEntries *subEntries) { + for _, entry := range subEntries.items { + var tmp bytes.Buffer + w, err := zstd.NewWriter(&tmp) + if err != nil { + logs.LogError("Error creating ZSTD compression algorithm writer %v", err) + //return err // TODO we should return error if we cannot compress + } + + for _, msg := range entry.messages { + size := len(msg.messageBytes) + if _, err := w.Write(bytesFromInt(uint32(size))); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + if _, err := w.Write(msg.messageBytes); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + } + if err := w.Flush(); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + if err := w.Close(); err != nil { + logs.LogError("Error compressing with ZSTD %v", err) + //return err // TODO we should return error if we cannot compress + } + entry.sizeInBytes += len(tmp.Bytes()) + entry.dataInBytes = tmp.Bytes() + subEntries.totalSizeInBytes += len(tmp.Bytes()) + } +} + +func (es compressZSTD) UnCompress(source *bufio.Reader, dataSize, uncompressedDataSize uint32) *bufio.Reader { + + var zipperBuffer = make([]byte, dataSize) + /// empty + _, err := io.ReadFull(source, zipperBuffer) + /// array of compress data + + if err != nil { + logs.LogError("ZSTD Error during reading buffer %s", err) + } + + reader, err := zstd.NewReader(bytes.NewBuffer(zipperBuffer)) + if err != nil { + logs.LogError("Error creating ZSTD NewReader %s", err) + } + defer reader.Reset(nil) + /// headers ---> payload --> headers --> payload (compressed) + + // Read in data. + uncompressedReader, err := ioutil.ReadAll(reader) + if err != nil { + logs.LogError("Error during reading buffer %s", err) + } + if uint32(len(uncompressedReader)) != uncompressedDataSize { + panic("uncompressedDataSize != count") + } + + /// headers ---> payload --> headers --> payload (compressed) --> uncompressed payload + + return bufio.NewReader(bytes.NewReader(uncompressedReader)) + +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go new file mode 100644 index 0000000..2f9b787 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/available_features.go @@ -0,0 +1,149 @@ +package stream + +import ( + "fmt" + "regexp" + "strconv" + "strings" + "sync" +) + +var lock = &sync.Mutex{} + +type availableFeatures struct { + is313OrMore bool + is311OrMore bool + brokerFilterEnabled bool + brokerVersion string + brokerSingleActiveConsumerEnabled bool +} + +func newAvailableFeatures() *availableFeatures { + lock.Lock() + defer lock.Unlock() + return &availableFeatures{} +} + +func (a *availableFeatures) Is311OrMore() bool { + lock.Lock() + defer lock.Unlock() + return a.is311OrMore +} + +func (a *availableFeatures) Is313OrMore() bool { + lock.Lock() + defer lock.Unlock() + return a.is313OrMore +} + +func (a *availableFeatures) BrokerFilterEnabled() bool { + lock.Lock() + defer lock.Unlock() + return a.brokerFilterEnabled +} + +func (a *availableFeatures) IsBrokerSingleActiveConsumerEnabled() bool { + lock.Lock() + defer lock.Unlock() + return a.brokerSingleActiveConsumerEnabled == a.is311OrMore +} + +func (a *availableFeatures) SetVersion(version string) error { + lock.Lock() + defer lock.Unlock() + if extractVersion(version) == "" { + return fmt.Errorf("invalid version format: %s", version) + } + a.brokerVersion = version + a.is311OrMore = IsVersionGreaterOrEqual(extractVersion(version), "3.11.0") + a.is313OrMore = IsVersionGreaterOrEqual(extractVersion(version), "3.13.0") + a.brokerSingleActiveConsumerEnabled = a.is311OrMore + return nil +} + +func (a *availableFeatures) GetCommands() []commandVersion { + lock.Lock() + defer lock.Unlock() + return []commandVersion{ + &PublishFilter{}, + } +} + +func (a *availableFeatures) ParseCommandVersions(commandVersions []commandVersion) { + lock.Lock() + defer lock.Unlock() + for _, commandVersion := range commandVersions { + if commandVersion.GetCommandKey() == commandPublish { + a.brokerFilterEnabled = commandVersion.GetMinVersion() <= PublishFilter{}.GetMinVersion() && + commandVersion.GetMaxVersion() >= PublishFilter{}.GetMaxVersion() + } + } +} + +func (a *availableFeatures) String() string { + return fmt.Sprintf("brokerVersion: %s, is311OrMore: %t, is313OrMore: %t, brokerFilterEnabled: %t", a.brokerVersion, a.is311OrMore, a.is313OrMore, a.brokerFilterEnabled) +} + +func extractVersion(fullVersion string) string { + pattern := `(\d+\.\d+\.\d+)` + regex := regexp.MustCompile(pattern) + match := regex.FindStringSubmatch(fullVersion) + + if len(match) > 1 { + return match[1] + } + return "" +} + +func IsVersionGreaterOrEqual(version, target string) bool { + v1, err := parseVersion(version) + if err != nil { + return false + } + + v2, err := parseVersion(target) + if err != nil { + return false + } + return v1.Compare(v2) >= 0 +} + +func parseVersion(version string) (Version, error) { + parts := strings.Split(version, ".") + if len(parts) != 3 { + return Version{}, fmt.Errorf("invalid version format: %s", version) + } + + major, err := strconv.Atoi(parts[0]) + if err != nil { + return Version{}, fmt.Errorf("invalid major version: %s", parts[0]) + } + + minor, err := strconv.Atoi(parts[1]) + if err != nil { + return Version{}, fmt.Errorf("invalid minor version: %s", parts[1]) + } + + patch, err := strconv.Atoi(parts[2]) + if err != nil { + return Version{}, fmt.Errorf("invalid patch version: %s", parts[2]) + } + + return Version{Major: major, Minor: minor, Patch: patch}, nil +} + +type Version struct { + Major int + Minor int + Patch int +} + +func (v Version) Compare(other Version) int { + if v.Major != other.Major { + return v.Major - other.Major + } + if v.Minor != other.Minor { + return v.Minor - other.Minor + } + return v.Patch - other.Patch +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go new file mode 100644 index 0000000..5092565 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/brokers.go @@ -0,0 +1,190 @@ +package stream + +import ( + "crypto/tls" + "fmt" + "strconv" + "strings" + "sync" + "time" +) + +type AddressResolver struct { + Host string + Port int +} + +type TCPParameters struct { + tlsConfig *tls.Config + RequestedHeartbeat time.Duration + RequestedMaxFrameSize int + WriteBuffer int + ReadBuffer int + NoDelay bool +} + +type Broker struct { + Host string + Port string + User string + Vhost string + Uri string + Password string + Scheme string + + advHost string + advPort string +} + +func newBrokerDefault() *Broker { + return &Broker{ + Scheme: "rabbitmq-stream", + Host: "localhost", + Port: StreamTcpPort, + User: "guest", + Password: "guest", + Vhost: "/", + } +} + +func newTCPParameterDefault() *TCPParameters { + return &TCPParameters{ + RequestedHeartbeat: 60 * time.Second, + RequestedMaxFrameSize: 1048576, + WriteBuffer: 8192, + ReadBuffer: 65536, + NoDelay: false, + tlsConfig: nil, + } +} + +func (br *Broker) isTLS() bool { + return strings.Index(br.Scheme, "+tls") > 0 +} + +func (br *Broker) mergeWithDefault() { + broker := newBrokerDefault() + if br.Host == "" { + br.Host = broker.Host + } + if br.Vhost == "" { + br.Vhost = broker.Vhost + } + + if br.User == "" { + br.User = broker.User + } + if br.User == "" { + br.User = broker.User + } + if br.Password == "" { + br.Password = broker.Password + } + if br.Port == "" || br.Port == "0" { + br.Port = broker.Port + } + if br.Scheme == "" { + br.Scheme = broker.Scheme + } + +} + +func (br *Broker) cloneFrom(broker *Broker, resolver *AddressResolver) { + br.User = broker.User + br.Password = broker.Password + br.Vhost = broker.Vhost + br.Scheme = broker.Scheme + if resolver != nil { + br.Host = resolver.Host + br.Port = strconv.Itoa(resolver.Port) + } +} + +func (br *Broker) GetUri() string { + if br.Uri == "" { + br.Uri = fmt.Sprintf("%s://%s:%s@%s:%s/%s", + br.Scheme, + br.User, br.Password, + br.Host, br.Port, br.Vhost) + } + return br.Uri +} + +func newBroker(host string, port string) *Broker { + return &Broker{ + Host: host, + Port: port, + } +} + +type Brokers struct { + items *sync.Map +} + +func newBrokers() *Brokers { + return &Brokers{items: &sync.Map{}} +} + +func (brs *Brokers) Add(brokerReference int16, host string, port uint32) *Broker { + broker := newBroker(host, strconv.Itoa(int(port))) + brs.items.Store(brokerReference, broker) + return broker +} + +func (brs *Brokers) Get(brokerReference int16) *Broker { + value, ok := brs.items.Load(brokerReference) + if !ok { + return nil + } + + return value.(*Broker) +} + +func (br *Broker) hostPort() string { + return fmt.Sprintf("%s:%s", br.Host, br.Port) +} + +type StreamMetadata struct { + stream string + responseCode uint16 + Leader *Broker + Replicas []*Broker +} + +func (sm StreamMetadata) String() string { + replicas := "" + for _, replica := range sm.Replicas { + replicas += fmt.Sprintf(" - %s:%s", replica.Host, replica.Port) + } + return fmt.Sprintf("leader %s:%s, followers %s ", sm.Leader.Host, sm.Leader.Port, replicas) +} + +func (StreamMetadata) New(stream string, responseCode uint16, + leader *Broker, replicas []*Broker) *StreamMetadata { + return &StreamMetadata{stream: stream, responseCode: responseCode, + Leader: leader, Replicas: replicas} +} + +type StreamsMetadata struct { + items *sync.Map +} + +func (StreamsMetadata) New() *StreamsMetadata { + return &StreamsMetadata{&sync.Map{}} +} + +func (smd *StreamsMetadata) Add(stream string, responseCode uint16, + leader *Broker, replicas []*Broker) *StreamMetadata { + streamMetadata := StreamMetadata{}.New(stream, responseCode, + leader, replicas) + smd.items.Store(stream, streamMetadata) + return streamMetadata +} + +func (smd *StreamsMetadata) Get(stream string) *StreamMetadata { + value, ok := smd.items.Load(stream) + if !ok { + return nil + } + return value.(*StreamMetadata) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go new file mode 100644 index 0000000..3f677fe --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_reader.go @@ -0,0 +1,64 @@ +package stream + +import ( + "bufio" + "encoding/binary" + "io" +) + +func readUShort(readerStream io.Reader) uint16 { + var res uint16 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readShort(readerStream io.Reader) int16 { + var res int16 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readUInt(readerStream io.Reader) (uint32, error) { + var res uint32 + err := binary.Read(readerStream, binary.BigEndian, &res) + return res, err +} + +func peekByte(readerStream *bufio.Reader) (uint8, error) { + res, err := readerStream.Peek(1) + if err != nil { + return 0, err + } + return res[0], nil +} + +func readInt64(readerStream io.Reader) int64 { + var res int64 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readByte(readerStream io.Reader) uint8 { + var res uint8 + _ = binary.Read(readerStream, binary.BigEndian, &res) + return res +} + +func readByteError(readerStream io.Reader) (uint8, error) { + var res uint8 + err := binary.Read(readerStream, binary.BigEndian, &res) + return res, err +} + +func readString(readerStream io.Reader) string { + lenString := readUShort(readerStream) + buff := make([]byte, lenString) + _ = binary.Read(readerStream, binary.BigEndian, &buff) + return string(buff) +} + +func readUint8Array(readerStream io.Reader, size uint32) []uint8 { + var res = make([]uint8, size) + _, _ = io.ReadFull(readerStream, res) + return res +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go new file mode 100644 index 0000000..dc5d318 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/buffer_writer.go @@ -0,0 +1,159 @@ +package stream + +import ( + "bufio" + "bytes" + "encoding/binary" +) + +func writeLong(inputBuff *bytes.Buffer, value int64) { + writeULong(inputBuff, uint64(value)) +} + +func writeULong(inputBuff *bytes.Buffer, value uint64) { + var buff = make([]byte, 8) + binary.BigEndian.PutUint64(buff, value) + inputBuff.Write(buff) +} + +func writeBLong(inputBuff *bufio.Writer, value int64) { + writeBULong(inputBuff, uint64(value)) +} +func writeBULong(inputBuff *bufio.Writer, value uint64) { + var buff = make([]byte, 8) + binary.BigEndian.PutUint64(buff, value) + inputBuff.Write(buff) +} + +func writeShort(inputBuff *bytes.Buffer, value int16) { + writeUShort(inputBuff, uint16(value)) +} + +func writeUShort(inputBuff *bytes.Buffer, value uint16) { + var buff = make([]byte, 2) + binary.BigEndian.PutUint16(buff, value) + inputBuff.Write(buff) +} + +func writeBShort(inputBuff *bufio.Writer, value int16) { + writeBUShort(inputBuff, uint16(value)) +} +func writeBUShort(inputBuff *bufio.Writer, value uint16) { + var buff = make([]byte, 2) + binary.BigEndian.PutUint16(buff, value) + inputBuff.Write(buff) +} + +func writeBString(inputBuff *bufio.Writer, value string) { + writeBUShort(inputBuff, uint16(len(value))) + inputBuff.Write([]byte(value)) +} + +func writeByte(inputBuff *bytes.Buffer, value byte) { + var buff = make([]byte, 1) + buff[0] = value + inputBuff.Write(buff) +} + +func writeBByte(inputBuff *bufio.Writer, value byte) { + var buff = make([]byte, 1) + buff[0] = value + inputBuff.Write(buff) +} + +func writeInt(inputBuff *bytes.Buffer, value int) { + writeUInt(inputBuff, uint32(value)) +} +func writeUInt(inputBuff *bytes.Buffer, value uint32) { + var buff = make([]byte, 4) + binary.BigEndian.PutUint32(buff, value) + inputBuff.Write(buff) +} + +func writeBInt(inputBuff *bufio.Writer, value int) { + writeBUInt(inputBuff, uint32(value)) +} + +func writeBUInt(inputBuff *bufio.Writer, value uint32) { + var buff = make([]byte, 4) + binary.BigEndian.PutUint32(buff, value) + inputBuff.Write(buff) +} + +func bytesFromInt(value uint32) []byte { + var buff = make([]byte, 4) + binary.BigEndian.PutUint32(buff, value) + return buff +} +func writeString(inputBuff *bytes.Buffer, value string) { + writeUShort(inputBuff, uint16(len(value))) + inputBuff.Write([]byte(value)) +} + +func writeStringArray(inputBuff *bytes.Buffer, array []string) { + writeInt(inputBuff, len(array)) + for _, s := range array { + writeString(inputBuff, s) + } +} + +func writeMapStringString(inputBuff *bytes.Buffer, mapString map[string]string) { + writeInt(inputBuff, len(mapString)) + for k, v := range mapString { + writeString(inputBuff, k) + writeString(inputBuff, v) + } + +} + +func writeBytes(inputBuff *bytes.Buffer, value []byte) { + inputBuff.Write(value) +} + +// writeProtocolHeader protocol utils functions +func writeProtocolHeader(inputBuff *bytes.Buffer, + length int, command uint16, + correlationId ...int) { + + writeInt(inputBuff, length) + writeUShort(inputBuff, command) + writeShort(inputBuff, version1) + if len(correlationId) > 0 { + writeInt(inputBuff, correlationId[0]) + } + +} + +func writeBProtocolHeader(inputBuff *bufio.Writer, + length int, command int16, + correlationId ...int) { + writeBProtocolHeaderVersion(inputBuff, length, command, version1, correlationId...) +} + +func writeBProtocolHeaderVersion(inputBuff *bufio.Writer, + length int, command int16, version int16, + correlationId ...int) { + + writeBInt(inputBuff, length) + writeBShort(inputBuff, command) + writeBShort(inputBuff, version) + if len(correlationId) > 0 { + writeBInt(inputBuff, correlationId[0]) + } +} + +func sizeOfStringArray(array []string) int { + size := 0 + for _, s := range array { + size += 2 + len(s) + } + return size +} + +func sizeOfMapStringString(mapString map[string]string) int { + size := 0 + for k, v := range mapString { + size += 2 + len(k) + 2 + len(v) + } + return size +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go new file mode 100644 index 0000000..e8ba938 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/client.go @@ -0,0 +1,1121 @@ +package stream + +import ( + "bufio" + "bytes" + "crypto/tls" + "errors" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "math/rand" + "net" + "net/url" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" +) + +// SaslConfiguration see +// +// SaslConfigurationPlain = "PLAIN" +// SaslConfigurationExternal = "EXTERNAL" +// + +type SaslConfiguration struct { + Mechanism string +} + +func newSaslConfigurationDefault() *SaslConfiguration { + return &SaslConfiguration{ + Mechanism: SaslConfigurationPlain, + } +} + +type TuneState struct { + requestedMaxFrameSize int + requestedHeartbeat int +} + +type ClientProperties struct { + items map[string]string +} + +type ConnectionProperties struct { + host string + port string +} + +type HeartBeat struct { + mutex sync.Mutex + value time.Time +} + +type Client struct { + socket socket + destructor *sync.Once + clientProperties ClientProperties + connectionProperties ConnectionProperties + tuneState TuneState + coordinator *Coordinator + broker *Broker + tcpParameters *TCPParameters + saslConfiguration *SaslConfiguration + + mutex *sync.Mutex + metadataListener metadataListener + lastHeartBeat HeartBeat + socketCallTimeout time.Duration + availableFeatures *availableFeatures + serverProperties map[string]string +} + +func newClient(connectionName string, broker *Broker, + tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, rpcTimeOut time.Duration) *Client { + var clientBroker = broker + if broker == nil { + clientBroker = newBrokerDefault() + } + if tcpParameters == nil { + tcpParameters = newTCPParameterDefault() + } + + if saslConfiguration == nil { + saslConfiguration = newSaslConfigurationDefault() + } + + c := &Client{ + coordinator: NewCoordinator(), + broker: clientBroker, + tcpParameters: tcpParameters, + saslConfiguration: saslConfiguration, + destructor: &sync.Once{}, + mutex: &sync.Mutex{}, + clientProperties: ClientProperties{items: make(map[string]string)}, + connectionProperties: ConnectionProperties{}, + lastHeartBeat: HeartBeat{ + value: time.Now(), + }, + socket: socket{ + mutex: &sync.Mutex{}, + destructor: &sync.Once{}, + }, + socketCallTimeout: rpcTimeOut, + availableFeatures: newAvailableFeatures(), + } + c.setConnectionName(connectionName) + return c +} + +func (c *Client) getSocket() *socket { + //c.mutex.Lock() + //defer c.mutex.Unlock() + return &c.socket +} + +func (c *Client) setSocketConnection(connection net.Conn) { + //c.mutex.Lock() + //defer c.mutex.Unlock() + c.socket.connection = connection + c.socket.writer = bufio.NewWriter(connection) +} + +func (c *Client) getTuneState() TuneState { + c.mutex.Lock() + defer c.mutex.Unlock() + return c.tuneState +} + +func (c *Client) getLastHeartBeat() time.Time { + c.lastHeartBeat.mutex.Lock() + defer c.lastHeartBeat.mutex.Unlock() + return c.lastHeartBeat.value +} + +func (c *Client) setLastHeartBeat(value time.Time) { + c.lastHeartBeat.mutex.Lock() + defer c.lastHeartBeat.mutex.Unlock() + c.lastHeartBeat.value = value +} + +func (c *Client) connect() error { + c.mutex.Lock() + defer c.mutex.Unlock() + if !c.socket.isOpen() { + u, err := url.Parse(c.broker.GetUri()) + if err != nil { + return err + } + host, port := u.Hostname(), u.Port() + c.tuneState.requestedMaxFrameSize = c.tcpParameters.RequestedMaxFrameSize + c.tuneState.requestedHeartbeat = int(c.tcpParameters.RequestedHeartbeat.Seconds()) + + servAddr := net.JoinHostPort(host, port) + tcpAddr, errorResolve := net.ResolveTCPAddr("tcp", servAddr) + if errorResolve != nil { + logs.LogDebug("Resolve error %s", errorResolve) + return errorResolve + } + connection, errorConnection := net.DialTCP("tcp", nil, tcpAddr) + if errorConnection != nil { + logs.LogDebug("%s", errorConnection) + return errorConnection + } + + if err = connection.SetWriteBuffer(c.tcpParameters.WriteBuffer); err != nil { + logs.LogError("Failed to SetWriteBuffer to %d due to %v", c.tcpParameters.WriteBuffer, err) + return err + } + if err = connection.SetReadBuffer(c.tcpParameters.ReadBuffer); err != nil { + logs.LogError("Failed to SetReadBuffer to %d due to %v", c.tcpParameters.ReadBuffer, err) + return err + } + if err = connection.SetNoDelay(c.tcpParameters.NoDelay); err != nil { + logs.LogError("Failed to SetNoDelay to %b due to %v", c.tcpParameters.NoDelay, err) + return err + } + + if c.broker.isTLS() { + conf := &tls.Config{} + if c.tcpParameters.tlsConfig != nil { + conf = c.tcpParameters.tlsConfig + } + c.setSocketConnection(tls.Client(connection, conf)) + } else { + c.setSocketConnection(connection) + } + + c.socket.setOpen() + + go c.handleResponse() + serverProperties, err2 := c.peerProperties() + c.serverProperties = serverProperties + if err2 != nil { + logs.LogError("Can't set the peer-properties. Check if the stream server is running/reachable") + return err2 + } + + pwd, _ := u.User.Password() + err2 = c.authenticate(u.User.Username(), pwd) + if err2 != nil { + logs.LogDebug("User:%s, %s", u.User.Username(), err2) + return err2 + } + vhost := "/" + if len(u.Path) > 1 { + vhost, _ = url.QueryUnescape(u.Path[1:]) + } + err2 = c.open(vhost) + if err2 != nil { + logs.LogDebug("%s", err2) + return err2 + } + + logs.LogDebug("Server properties: %s", c.serverProperties) + if serverProperties["version"] == "" { + logs.LogInfo( + "Server version is less than 3.11.0, skipping command version exchange") + } else { + err := c.exchangeVersion(c.serverProperties["version"]) + if err != nil { + return err + } + logs.LogDebug("available features: %s", c.availableFeatures) + } + + c.heartBeat() + logs.LogDebug("User %s, connected to: %s, vhost:%s", u.User.Username(), + net.JoinHostPort(host, port), + vhost) + } + return nil +} + +func (c *Client) setConnectionName(connectionName string) { + c.clientProperties.items["connection_name"] = connectionName +} + +func (c *Client) peerProperties() (map[string]string, error) { + clientPropertiesSize := 4 // size of the map, always there + + c.clientProperties.items["product"] = "RabbitMQ Stream" + c.clientProperties.items["copyright"] = "Copyright (c) 2021 VMware, Inc. or its affiliates." + c.clientProperties.items["information"] = "Licensed under the MPL 2.0. See https://www.rabbitmq.com/" + c.clientProperties.items["version"] = ClientVersion + c.clientProperties.items["platform"] = "Golang" + for key, element := range c.clientProperties.items { + clientPropertiesSize = clientPropertiesSize + 2 + len(key) + 2 + len(element) + } + + length := 2 + 2 + 4 + clientPropertiesSize + resp := c.coordinator.NewResponse(commandPeerProperties) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandPeerProperties, + correlationId) + writeInt(b, len(c.clientProperties.items)) + + for key, element := range c.clientProperties.items { + writeString(b, key) + writeString(b, element) + } + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + serverProperties := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return serverProperties.(map[string]string), nil +} + +func (c *Client) authenticate(user string, password string) error { + + saslMechanisms, err := c.getSaslMechanisms() + if err != nil { + return err + } + saslMechanism := "" + for i := 0; i < len(saslMechanisms); i++ { + if saslMechanisms[i] == c.saslConfiguration.Mechanism { + saslMechanism = c.saslConfiguration.Mechanism + break + } + } + if saslMechanism == "" { + return fmt.Errorf("no matching mechanism found") + } + + response := unicodeNull + user + unicodeNull + password + saslResponse := []byte(response) + return c.sendSaslAuthenticate(saslMechanism, saslResponse) +} + +func (c *Client) getSaslMechanisms() ([]string, error) { + length := 2 + 2 + 4 + resp := c.coordinator.NewResponse(commandSaslHandshake) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandSaslHandshake, + correlationId) + + errWrite := c.socket.writeAndFlush(b.Bytes()) + data := <-resp.data + err := c.coordinator.RemoveResponseById(correlationId) + if err != nil { + return nil, err + } + if errWrite != nil { + return nil, errWrite + } + return data.([]string), nil + +} + +func (c *Client) sendSaslAuthenticate(saslMechanism string, challengeResponse []byte) error { + length := 2 + 2 + 4 + 2 + len(saslMechanism) + 4 + len(challengeResponse) + resp := c.coordinator.NewResponse(commandSaslAuthenticate) + respTune := c.coordinator.NewResponseWitName("tune") + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandSaslAuthenticate, + correlationId) + + writeString(b, saslMechanism) + writeInt(b, len(challengeResponse)) + b.Write(challengeResponse) + err := c.handleWrite(b.Bytes(), resp) + if err.Err != nil { + return err.Err + } + // double read for TUNE + tuneData := <-respTune.data + errR := c.coordinator.RemoveResponseByName("tune") + if errR != nil { + return errR + } + + return c.socket.writeAndFlush(tuneData.([]byte)) +} + +func (c *Client) exchangeVersion(serverVersion string) error { + _ = c.availableFeatures.SetVersion(serverVersion) + + commands := c.availableFeatures.GetCommands() + + length := 2 + 2 + 4 + + 4 + // commands size + len(commands)*(2+2+2) + resp := c.coordinator.NewResponse(commandExchangeVersion) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandExchangeVersion, + correlationId) + + writeInt(b, len(commands)) + + for _, command := range commands { + writeUShort(b, command.GetCommandKey()) + writeUShort(b, command.GetMinVersion()) + writeUShort(b, command.GetMaxVersion()) + } + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return err.Err + } + + commandsResponse := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + c.availableFeatures.ParseCommandVersions(commandsResponse.([]commandVersion)) + return nil +} + +func (c *Client) open(virtualHost string) error { + length := 2 + 2 + 4 + 2 + len(virtualHost) + resp := c.coordinator.NewResponse(commandOpen, virtualHost) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandOpen, + correlationId) + writeString(b, virtualHost) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return err.Err + } + + advHostPort := <-resp.data + c.connectionProperties.host = advHostPort.(ConnectionProperties).host + c.connectionProperties.port = advHostPort.(ConnectionProperties).port + + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return nil + +} + +func (c *Client) DeleteStream(streamName string) error { + length := 2 + 2 + 4 + 2 + len(streamName) + resp := c.coordinator.NewResponse(commandDeleteStream, streamName) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandDeleteStream, + correlationId) + + writeString(b, streamName) + + return c.handleWrite(b.Bytes(), resp).Err +} + +func (c *Client) heartBeat() { + ticker := time.NewTicker(60 * time.Second) + tickerHeatBeat := time.NewTicker(20 * time.Second) + resp := c.coordinator.NewResponseWitName("heartbeat") + var heartBeatMissed int32 + go func() { + for c.socket.isOpen() { + <-tickerHeatBeat.C + if time.Since(c.getLastHeartBeat()) > time.Duration(c.tuneState.requestedHeartbeat)*time.Second { + v := atomic.AddInt32(&heartBeatMissed, 1) + logs.LogWarn("Missing heart beat: %d", v) + if v >= 2 { + logs.LogWarn("Too many heartbeat missing: %d", v) + c.Close() + } + } else { + atomic.StoreInt32(&heartBeatMissed, 0) + } + + } + tickerHeatBeat.Stop() + }() + + go func() { + for { + select { + case code := <-resp.code: + if code.id == closeChannel { + _ = c.coordinator.RemoveResponseByName("heartbeat") + } + ticker.Stop() + return + case <-ticker.C: + logs.LogDebug("Sending heart beat: %s", time.Now()) + c.sendHeartbeat() + } + } + }() + +} + +func (c *Client) sendHeartbeat() { + length := 4 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandHeartbeat) + _ = c.socket.writeAndFlush(b.Bytes()) +} + +func (c *Client) closeHartBeat() { + c.destructor.Do(func() { + r, err := c.coordinator.GetResponseByName("heartbeat") + if err != nil { + logs.LogDebug("error removing heartbeat: %s", err) + } else { + r.code <- Code{id: closeChannel} + } + }) + +} + +func (c *Client) Close() error { + for _, p := range c.coordinator.Producers() { + err := c.coordinator.RemoveProducerById(p.(*Producer).id, Event{ + Command: CommandClose, + StreamName: p.(*Producer).GetStreamName(), + Name: p.(*Producer).GetName(), + Reason: SocketClosed, + Err: nil, + }) + + if err != nil { + logs.LogWarn("error removing producer: %s", err) + } + } + + for _, cs := range c.coordinator.consumers { + err := c.coordinator.RemoveConsumerById(cs.(*Consumer).ID, Event{ + Command: CommandClose, + StreamName: cs.(*Consumer).GetStreamName(), + Name: cs.(*Consumer).GetName(), + Reason: SocketClosed, + Err: nil, + }) + if err != nil { + logs.LogWarn("error removing consumer: %s", err) + } + } + + if c.metadataListener != nil { + close(c.metadataListener) + c.metadataListener = nil + } + + if c.getSocket().isOpen() { + + c.closeHartBeat() + res := c.coordinator.NewResponse(CommandClose) + length := 2 + 2 + 4 + 2 + 2 + len("OK") + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandClose, res.correlationid) + writeUShort(b, responseCodeOk) + writeString(b, "OK") + + errW := c.socket.writeAndFlush(b.Bytes()) + if errW != nil { + logs.LogWarn("error during Send client close %s", errW) + } + _ = c.coordinator.RemoveResponseById(res.correlationid) + } + c.getSocket().shutdown(nil) + return nil +} + +func (c *Client) DeclarePublisher(streamName string, options *ProducerOptions) (*Producer, error) { + if options == nil { + options = NewProducerOptions() + } + + if options.IsFilterEnabled() && !c.availableFeatures.BrokerFilterEnabled() { + return nil, FilterNotSupported + } + + if options.isSubEntriesBatching() && options.IsFilterEnabled() { + return nil, fmt.Errorf("sub-entry batching can't be enabled with filter") + } + if options.QueueSize < minQueuePublisherSize || options.QueueSize > maxQueuePublisherSize { + return nil, fmt.Errorf("QueueSize values must be between %d and %d", + minQueuePublisherSize, maxQueuePublisherSize) + } + + if options.BatchSize < minBatchSize || options.BatchSize > maxBatchSize { + return nil, fmt.Errorf("BatchSize values must be between %d and %d", + minBatchSize, maxBatchSize) + } + + if options.BatchPublishingDelay < minBatchPublishingDelay || options.BatchPublishingDelay > maxBatchPublishingDelay { + return nil, fmt.Errorf("BatchPublishingDelay values must be between %d and %d", + minBatchPublishingDelay, maxBatchPublishingDelay) + } + + if options.SubEntrySize < minSubEntrySize || options.SubEntrySize > maxSubEntrySize { + return nil, fmt.Errorf("SubEntrySize values must be between %d and %d", + minSubEntrySize, maxSubEntrySize) + } + + if !options.isSubEntriesBatching() { + if options.Compression.enabled { + return nil, fmt.Errorf("sub-entry batching must be enabled to enable compression") + } + } + + if !options.isSubEntriesBatching() { + if options.Compression.value != None && options.Compression.value != GZIP { + return nil, fmt.Errorf("compression values valid are: %d (None) %d (Gzip)", None, GZIP) + } + } + + producer, err := c.coordinator.NewProducer(&ProducerOptions{ + client: c, + streamName: streamName, + Name: options.Name, + QueueSize: options.QueueSize, + BatchSize: options.BatchSize, + BatchPublishingDelay: options.BatchPublishingDelay, + SubEntrySize: options.SubEntrySize, + Compression: options.Compression, + ConfirmationTimeOut: options.ConfirmationTimeOut, + ClientProvidedName: options.ClientProvidedName, + Filter: options.Filter, + }) + + if err != nil { + return nil, err + } + res := c.internalDeclarePublisher(streamName, producer) + if res.Err == nil { + producer.startPublishTask() + producer.startUnconfirmedMessagesTimeOutTask() + } + return producer, res.Err +} + +func (c *Client) internalDeclarePublisher(streamName string, producer *Producer) responseError { + publisherReferenceSize := 0 + if producer.options != nil { + if producer.options.Name != "" { + publisherReferenceSize = len(producer.options.Name) + } + } + + length := 2 + 2 + 4 + 1 + 2 + publisherReferenceSize + 2 + len(streamName) + resp := c.coordinator.NewResponse(commandDeclarePublisher, streamName) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandDeclarePublisher, + correlationId) + + writeByte(b, producer.id) + writeShort(b, int16(publisherReferenceSize)) + if publisherReferenceSize > 0 { + writeBytes(b, []byte(producer.options.Name)) + } + + writeString(b, streamName) + res := c.handleWrite(b.Bytes(), resp) + + if publisherReferenceSize > 0 { + v, _ := c.queryPublisherSequence(producer.options.Name, streamName) + producer.sequence = v + } + + return res +} + +func (c *Client) metaData(streams ...string) *StreamsMetadata { + + length := 2 + 2 + 4 + 4 // API code, version, correlation id, size of array + for _, stream := range streams { + length += 2 + length += len(stream) + + } + resp := c.coordinator.NewResponse(commandMetadata) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandMetadata, + correlationId) + + writeInt(b, len(streams)) + for _, stream := range streams { + writeString(b, stream) + } + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil + } + + data := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return data.(*StreamsMetadata) +} + +func (c *Client) queryPublisherSequence(publisherReference string, stream string) (int64, error) { + + length := 2 + 2 + 4 + 2 + len(publisherReference) + 2 + len(stream) + resp := c.coordinator.NewResponse(commandQueryPublisherSequence) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandQueryPublisherSequence, correlationId) + + writeString(b, publisherReference) + writeString(b, stream) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return 0, err.Err + } + + sequence := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return sequence.(int64), nil + +} + +func (c *Client) BrokerLeader(stream string) (*Broker, error) { + + streamsMetadata := c.metaData(stream) + if streamsMetadata == nil { + return nil, fmt.Errorf("leader error for stream for stream: %s", stream) + } + + streamMetadata := streamsMetadata.Get(stream) + if streamMetadata.responseCode != responseCodeOk { + return nil, lookErrorCode(streamMetadata.responseCode) + } + if streamMetadata.Leader == nil { + return nil, LeaderNotReady + } + + streamMetadata.Leader.advPort = streamMetadata.Leader.Port + streamMetadata.Leader.advHost = streamMetadata.Leader.Host + + // see: https://github.com/rabbitmq/rabbitmq-stream-go-client/pull/317 + _, err := net.LookupIP(streamMetadata.Leader.Host) + if err != nil { + var dnsError *net.DNSError + if errors.As(err, &dnsError) { + if strings.EqualFold(c.broker.Host, "localhost") { + logs.LogWarn("Can't lookup the DNS for %s, error: %s. Trying localhost..", streamMetadata.Leader.Host, err) + streamMetadata.Leader.Host = "localhost" + } else { + logs.LogWarn("Can't lookup the DNS for %s, error: %s", streamMetadata.Leader.Host, err) + } + } + } + + return streamMetadata.Leader, nil +} + +func (c *Client) StreamExists(stream string) bool { + streamsMetadata := c.metaData(stream) + if streamsMetadata == nil { + return false + } + + streamMetadata := streamsMetadata.Get(stream) + return streamMetadata.responseCode == responseCodeOk +} +func (c *Client) BrokerForConsumer(stream string) (*Broker, error) { + streamsMetadata := c.metaData(stream) + if streamsMetadata == nil { + return nil, fmt.Errorf("leader error for stream: %s", stream) + } + + streamMetadata := streamsMetadata.Get(stream) + if streamMetadata.responseCode != responseCodeOk { + return nil, lookErrorCode(streamMetadata.responseCode) + } + + if streamMetadata.Leader == nil { + return nil, LeaderNotReady + } + + brokers := make([]*Broker, 0, 1+len(streamMetadata.Replicas)) + brokers = append(brokers, streamMetadata.Leader) + for idx, replica := range streamMetadata.Replicas { + if replica == nil { + logs.LogWarn("Stream %s replica not ready: %d", stream, idx) + continue + } + brokers = append(brokers, replica) + } + + rand.Seed(time.Now().UnixNano()) + n := rand.Intn(len(brokers)) + return brokers[n], nil +} + +func (c *Client) DeclareStream(streamName string, options *StreamOptions) error { + if streamName == "" { + return fmt.Errorf("stream Name can't be empty") + } + + resp := c.coordinator.NewResponse(commandCreateStream, streamName) + length := 2 + 2 + 4 + 2 + len(streamName) + 4 + correlationId := resp.correlationid + if options == nil { + options = NewStreamOptions() + } + + args, err := options.buildParameters() + if err != nil { + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return err + } + for key, element := range args { + length = length + 2 + len(key) + 2 + len(element) + } + var b = bytes.NewBuffer(make([]byte, 0, length)) + writeProtocolHeader(b, length, commandCreateStream, + correlationId) + writeString(b, streamName) + writeInt(b, len(args)) + + for key, element := range args { + writeString(b, key) + writeString(b, element) + } + + return c.handleWrite(b.Bytes(), resp).Err + +} + +func (c *Client) queryOffset(consumerName string, streamName string) (int64, error) { + length := 2 + 2 + 4 + 2 + len(consumerName) + 2 + len(streamName) + + resp := c.coordinator.NewResponse(CommandQueryOffset) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandQueryOffset, + correlationId) + + writeString(b, consumerName) + writeString(b, streamName) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return 0, err.Err + } + + offset := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return offset.(int64), nil +} + +func (c *Client) DeclareSubscriber(streamName string, + messagesHandler MessagesHandler, + options *ConsumerOptions) (*Consumer, error) { + if options == nil { + options = NewConsumerOptions() + } + + if options.initialCredits <= 0 { + options.initialCredits = 10 + } + if containsOnlySpaces(options.ConsumerName) { + return nil, fmt.Errorf("consumer name contains only spaces") + } + + if options.IsSingleActiveConsumerEnabled() && !c.availableFeatures.IsBrokerSingleActiveConsumerEnabled() { + return nil, SingleActiveConsumerNotSupported + } + + if options.IsSingleActiveConsumerEnabled() && strings.TrimSpace(options.ConsumerName) == "" { + return nil, fmt.Errorf("single active enabled but name is empty. You need to set a name") + } + + if options.IsSingleActiveConsumerEnabled() && options.SingleActiveConsumer.ConsumerUpdate == nil { + return nil, fmt.Errorf("single active enabled but consumer update function is nil. Consumer update must be set") + } + + if options.IsFilterEnabled() && !c.availableFeatures.BrokerFilterEnabled() { + return nil, FilterNotSupported + } + + if options.IsFilterEnabled() && options.Filter.PostFilter == nil { + return nil, fmt.Errorf("filter enabled but post filter is nil. Post filter must be set") + } + + if options.IsFilterEnabled() && (options.Filter.Values == nil || len(options.Filter.Values) == 0) { + return nil, fmt.Errorf("filter enabled but no values. At least one value must be set") + } + + if options.IsFilterEnabled() { + for _, value := range options.Filter.Values { + if value == "" { + return nil, fmt.Errorf("filter enabled but one of the value is empty") + } + } + } + + if options.Offset.typeOfs <= 0 || options.Offset.typeOfs > 6 { + return nil, fmt.Errorf("specify a valid Offset") + } + + if options.autoCommitStrategy.flushInterval < 1*time.Second { + return nil, fmt.Errorf("flush internal must be bigger than one second") + } + + if options.autoCommitStrategy.messageCountBeforeStorage < 1 { + return nil, fmt.Errorf("message count before storage must be bigger than one") + } + + if options.Offset.isLastConsumed() { + lastOffset, err := c.queryOffset(options.ConsumerName, streamName) + switch { + case err == nil, errors.Is(err, OffsetNotFoundError): + if errors.Is(err, OffsetNotFoundError) { + options.Offset.typeOfs = typeFirst + options.Offset.offset = 0 + break + } else { + options.Offset.offset = lastOffset + options.Offset.typeOfs = typeOffset + break + } + default: + return nil, err + } + } + + options.client = c + options.streamName = streamName + consumer := c.coordinator.NewConsumer(messagesHandler, options) + + length := 2 + 2 + 4 + 1 + 2 + len(streamName) + 2 + 2 + if options.Offset.isOffset() || + options.Offset.isTimestamp() { + length += 8 + } + + // copy the option offset to the consumer offset + // the option.offset won't change ( in case we need to retrive the original configuration) + // consumer.current offset will be moved when reading + consumer.setCurrentOffset(options.Offset.offset) + + /// define the consumerOptions + consumerProperties := make(map[string]string) + + if options.ConsumerName != "" { + consumerProperties["name"] = options.ConsumerName + } + + if options.IsSingleActiveConsumerEnabled() { + consumerProperties["single-active-consumer"] = "true" + if options.SingleActiveConsumer.superStream != "" { + consumerProperties["super-stream"] = options.SingleActiveConsumer.superStream + } + } + + if options.Filter != nil { + for i, filterValue := range options.Filter.Values { + k := fmt.Sprintf("%s%d", subscriptionPropertyFilterPrefix, i) + consumerProperties[k] = filterValue + } + + consumerProperties[subscriptionPropertyMatchUnfiltered] = strconv.FormatBool(options.Filter.MatchUnfiltered) + } + + if len(consumerProperties) > 0 { + length += 4 // size of the properties map + + for k, v := range consumerProperties { + length += 2 + len(k) + length += 2 + len(v) + + } + } + + resp := c.coordinator.NewResponse(commandSubscribe, streamName) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandSubscribe, + correlationId) + writeByte(b, consumer.ID) + + writeString(b, streamName) + + writeShort(b, options.Offset.typeOfs) + + if options.Offset.isOffset() || + options.Offset.isTimestamp() { + writeLong(b, options.Offset.offset) + } + writeShort(b, options.initialCredits) + if len(consumerProperties) > 0 { + writeInt(b, len(consumerProperties)) + for k, v := range consumerProperties { + writeString(b, k) + writeString(b, v) + } + } + + err := c.handleWrite(b.Bytes(), resp) + + canDispatch := func(offsetMessage *offsetMessage) bool { + if !consumer.isActive() { + logs.LogDebug("The consumer is not active anymore the message will be skipped, partition %s", streamName) + return false + } + + if options.IsFilterEnabled() && options.Filter.PostFilter != nil { + return options.Filter.PostFilter(offsetMessage.message) + } + return true + } + + go func() { + for { + select { + case code := <-consumer.response.code: + if code.id == closeChannel { + return + } + + case chunk := <-consumer.response.chunkForConsumer: + for _, offMessage := range chunk.offsetMessages { + consumer.setCurrentOffset(offMessage.offset) + if canDispatch(offMessage) { + consumer.MessagesHandler(ConsumerContext{Consumer: consumer, chunkInfo: &chunk}, offMessage.message) + } + if consumer.options.autocommit { + consumer.messageCountBeforeStorage += 1 + if consumer.messageCountBeforeStorage >= consumer.options.autoCommitStrategy.messageCountBeforeStorage { + consumer.cacheStoreOffset() + consumer.messageCountBeforeStorage = 0 + } + } + } + + case <-time.After(consumer.options.autoCommitStrategy.flushInterval): + consumer.cacheStoreOffset() + + } + } + }() + return consumer, err.Err +} + +func (c *Client) StreamStats(streamName string) (*StreamStats, error) { + + resp := c.coordinator.NewResponse(commandStreamStatus) + correlationId := resp.correlationid + + length := 2 + 2 + 4 + 2 + len(streamName) + + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandStreamStatus, + correlationId) + writeString(b, streamName) + + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + offset := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + m, ok := offset.(map[string]int64) + if !ok { + return nil, fmt.Errorf("invalid response, expected map[string]int64 but got %T", offset) + } + return newStreamStats(m, streamName), nil +} + +func (c *Client) DeclareSuperStream(superStream string, options SuperStreamOptions) error { + + if superStream == "" || containsOnlySpaces(superStream) { + return fmt.Errorf("super Stream Name can't be empty") + } + + if options == nil { + return fmt.Errorf("options can't be nil") + } + + if len(options.getPartitions(superStream)) == 0 { + return fmt.Errorf("partitions can't be empty") + } + + if len(options.getBindingKeys()) == 0 { + return fmt.Errorf("binding keys can't be empty") + } + + for _, key := range options.getBindingKeys() { + if key == "" || containsOnlySpaces(key) { + return fmt.Errorf("binding key can't be empty") + } + } + + for _, partition := range options.getPartitions(superStream) { + if partition == "" || containsOnlySpaces(partition) { + return fmt.Errorf("partition can't be empty") + } + } + + length := 2 + 2 + 4 + + 2 + len(superStream) + 4 + + sizeOfStringArray(options.getPartitions(superStream)) + 4 + + sizeOfStringArray(options.getBindingKeys()) + 4 + + sizeOfMapStringString(options.getArgs()) + + resp := c.coordinator.NewResponse(commandCreateSuperStream, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandCreateSuperStream, correlationId) + writeString(b, superStream) + writeStringArray(b, options.getPartitions(superStream)) + writeStringArray(b, options.getBindingKeys()) + writeMapStringString(b, options.getArgs()) + + return c.handleWrite(b.Bytes(), resp).Err +} + +func (c *Client) DeleteSuperStream(superStream string) error { + length := 2 + 2 + 4 + 2 + len(superStream) + resp := c.coordinator.NewResponse(commandDeleteSuperStream, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandDeleteSuperStream, + correlationId) + writeString(b, superStream) + return c.handleWrite(b.Bytes(), resp).Err +} + +func (c *Client) QueryPartitions(superStream string) ([]string, error) { + length := 2 + 2 + 4 + 2 + len(superStream) + resp := c.coordinator.NewResponse(commandQueryPartition, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandQueryPartition, + correlationId) + writeString(b, superStream) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + data := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return data.([]string), nil +} + +func (c *Client) queryRoute(superStream string, routingKey string) ([]string, error) { + + length := 2 + 2 + 4 + 2 + len(superStream) + 2 + len(routingKey) + resp := c.coordinator.NewResponse(commandQueryRoute, superStream) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandQueryRoute, + correlationId) + writeString(b, routingKey) + writeString(b, superStream) + err := c.handleWriteWithResponse(b.Bytes(), resp, false) + if err.Err != nil { + return nil, err.Err + } + + data := <-resp.data + _ = c.coordinator.RemoveResponseById(resp.correlationid) + return data.([]string), nil + +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go new file mode 100644 index 0000000..145d360 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/constants.go @@ -0,0 +1,232 @@ +package stream + +import ( + "fmt" + "time" + + "github.com/pkg/errors" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" +) + +// is needed to indicate the general status +// for example the producer status + +const ( + open = iota + closed = iota +) + +const initBufferPublishSize = 2 + 2 + 1 + 4 + +const ( + ClientVersion = "1.4.6" + + commandDeclarePublisher = 1 + commandPublish = 2 + commandPublishConfirm = 3 + commandPublishError = 4 + commandQueryPublisherSequence = 5 + CommandDeletePublisher = 6 + commandSubscribe = 7 + commandDeliver = 8 + commandCredit = 9 + commandStoreOffset = 10 + CommandQueryOffset = 11 + CommandUnsubscribe = 12 + commandCreateStream = 13 + commandDeleteStream = 14 + commandMetadata = 15 + CommandMetadataUpdate = 16 + commandPeerProperties = 17 + commandSaslHandshake = 18 + commandSaslAuthenticate = 19 + commandTune = 20 + commandOpen = 21 + CommandClose = 22 + commandHeartbeat = 23 + commandQueryRoute = 24 + commandQueryPartition = 25 + consumerUpdateQueryResponse = 26 + commandExchangeVersion = 27 + commandStreamStatus = 28 + commandCreateSuperStream = 29 + commandDeleteSuperStream = 30 + commandConsumerUpdate = 0x801a + + /// used only for tests + commandUnitTest = 99 + + version1 = 1 + version2 = 2 + unicodeNull = "\u0000" + + responseCodeOk = uint16(1) + responseCodeStreamDoesNotExist = uint16(2) + responseCodeSubscriptionIdAlreadyExists = uint16(3) + responseCodeSubscriptionIdDoesNotExist = uint16(4) + responseCodeStreamAlreadyExists = uint16(5) + responseCodeStreamNotAvailable = uint16(6) + responseCodeSaslMechanismNotSupported = uint16(7) + responseCodeAuthenticationFailure = uint16(8) + responseCodeSaslError = uint16(9) + responseCodeSaslChallenge = uint16(10) + responseCodeAuthenticationFailureLoopback = uint16(11) + responseCodeVirtualHostAccessFailure = uint16(12) + responseCodeUnknownFrame = uint16(13) + responseCodeFrameTooLarge = uint16(14) + responseCodeInternalError = uint16(15) + responseCodeAccessRefused = uint16(16) + responseCodePreconditionFailed = uint16(17) + responseCodePublisherDoesNotExist = uint16(18) + responseCodeNoOffset = uint16(19) + + /// responses out of protocol + closeChannel = uint16(60) + connectionCloseError = uint16(61) + timeoutError = uint16(62) + + /// + defaultSocketCallTimeout = 10 * time.Second + + // + LocalhostUriConnection = "rabbitmq-stream://guest:guest@localhost:5552/%2f" + + /// + defaultWriteSocketBuffer = 8092 + defaultReadSocketBuffer = 65536 + defaultQueuePublisherSize = 10000 + minQueuePublisherSize = 100 + maxQueuePublisherSize = 1_000_000 + + minBatchSize = 1 + maxBatchSize = 10_000 + + minSubEntrySize = 1 + maxSubEntrySize = 65535 + + minBatchPublishingDelay = 50 + maxBatchPublishingDelay = 500 + + defaultBatchSize = 100 + defaultBatchPublishingDelay = 100 + defaultConfirmationTimeOut = 10 * time.Second + // + + SocketClosed = "socket client closed" + MetaDataUpdate = "metadata Data update" + LeaderLocatorBalanced = "balanced" + LeaderLocatorClientLocal = "client-local" + + StreamTcpPort = "5552" + + subscriptionPropertyFilterPrefix = "filter." + subscriptionPropertyMatchUnfiltered = "match-unfiltered" +) + +var AlreadyClosed = errors.New("Already Closed") + +var PreconditionFailed = errors.New("Precondition Failed") +var AuthenticationFailure = errors.New("Authentication Failure") +var StreamDoesNotExist = errors.New("Stream Does Not Exist") +var StreamAlreadyExists = errors.New("Stream Already Exists") +var VirtualHostAccessFailure = errors.New("Virtual Host Access Failure") +var SubscriptionIdDoesNotExist = errors.New("Subscription Id Does Not Exist") +var PublisherDoesNotExist = errors.New("Publisher Does Not Exist") +var OffsetNotFoundError = errors.New("Offset not found") +var FrameTooLarge = errors.New("Frame Too Large, the buffer is too big") +var CodeAccessRefused = errors.New("Resources Access Refused") +var ConnectionClosed = errors.New("Can't Send the message, connection closed") +var StreamNotAvailable = errors.New("Stream Not Available") +var UnknownFrame = errors.New("Unknown Frame") +var InternalError = errors.New("Internal Error") +var AuthenticationFailureLoopbackError = errors.New("Authentication Failure Loopback Error") +var ConfirmationTimoutError = errors.New("Confirmation Timeout Error") +var FilterNotSupported = errors.New("Filtering is not supported by the broker " + + "(requires RabbitMQ 3.13+ and stream_filtering feature flag activated)") +var SingleActiveConsumerNotSupported = errors.New("Single Active Consumer is not supported by the broker " + + "(requires RabbitMQ 3.11+ and stream_single_active_consumer feature flag activated)") + +var ErrProducerNotFound = errors.New("Producer not found in the SuperStream Producer") +var ErrMessageRouteNotFound = errors.New("Message Route not found for the message key") +var ErrSuperStreamProducerOptionsNotDefined = errors.New("SuperStreamProducerOptions not defined. The SuperStreamProducerOptions is mandatory with the RoutingStrategy") +var ErrSuperStreamConsumerOptionsNotDefined = errors.New("SuperStreamConsumerOptions not defined.") + +var ErrEnvironmentNotDefined = errors.New("Environment not defined") + +var LeaderNotReady = errors.New("Leader not Ready yet") + +func lookErrorCode(errorCode uint16) error { + switch errorCode { + case responseCodeOk: + return nil + case responseCodeAuthenticationFailure: + return AuthenticationFailure + case responseCodeStreamDoesNotExist: + return StreamDoesNotExist + case responseCodeStreamAlreadyExists: + return StreamAlreadyExists + case responseCodeVirtualHostAccessFailure: + return VirtualHostAccessFailure + case responseCodeSubscriptionIdDoesNotExist: + return SubscriptionIdDoesNotExist + case responseCodePublisherDoesNotExist: + return PublisherDoesNotExist + case responseCodeNoOffset: + return OffsetNotFoundError + case responseCodePreconditionFailed: + return PreconditionFailed + case responseCodeFrameTooLarge: + return FrameTooLarge + case responseCodeAccessRefused: + return CodeAccessRefused + case responseCodeStreamNotAvailable: + return StreamNotAvailable + case responseCodeUnknownFrame: + return UnknownFrame + case responseCodeInternalError: + return InternalError + case responseCodeAuthenticationFailureLoopback: + return AuthenticationFailureLoopbackError + default: + { + logs.LogWarn("Error not handled %d", errorCode) + return errors.New("Generic Error") + } + } +} + +func lookUpCommand(command uint16) string { + var constLookup = map[uint16]string{ + commandPeerProperties: `commandPeerProperties`, + commandSaslHandshake: `commandSaslHandshake`, + commandSaslAuthenticate: `commandSaslAuthenticate`, + commandTune: `commandTune`, + commandOpen: `commandOpen`, + commandHeartbeat: `commandHeartbeat`, + CommandMetadataUpdate: `CommandMetadataUpdate`, + commandMetadata: `CommandMetadata`, + commandDeleteStream: `CommandDeleteStream`, + commandCreateStream: `CommandCreateStream`, + CommandUnsubscribe: `CommandUnsubscribe`, + CommandQueryOffset: `CommandQueryOffset`, + commandCredit: `CommandCredit`, + commandDeliver: `CommandDeliver`, + commandSubscribe: `CommandSubscribe`, + CommandDeletePublisher: `CommandDeletePublisher`, + commandPublishError: `CommandPublishError`, + commandPublishConfirm: `CommandPublishConfirm`, + commandDeclarePublisher: `CommandDeclarePublisher`, + commandUnitTest: `UnitTest`, + CommandClose: `CommandClose`, + } + if constLookup[command] == "" { + return fmt.Sprintf("Command not handled %d", command) + } + + return constLookup[command] +} + +const ( + SaslConfigurationPlain = "PLAIN" + SaslConfigurationExternal = "EXTERNAL" +) diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go new file mode 100644 index 0000000..f310f83 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/consumer.go @@ -0,0 +1,521 @@ +package stream + +import ( + "bytes" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + logs "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "sync" + "time" +) + +type Consumer struct { + ID uint8 + response *Response + options *ConsumerOptions + onClose onInternalClose + mutex *sync.Mutex + MessagesHandler MessagesHandler + // different form ConsumerOptions.offset. ConsumerOptions.offset is just the configuration + // and won't change. currentOffset is the status of the offset + currentOffset int64 + + // Remembers the last stored offset (manual or automatic) to avoid to store always the same values + lastStoredOffset int64 + + closeHandler chan Event + // see autocommit strategy + // it is needed to trigger the + // auto-commit after messageCountBeforeStorage + messageCountBeforeStorage int + + status int + + // Single Active consumer. The consumer can be running + // but not active. This flag is used to know if the consumer + // is in waiting mode or not. + // in normal mode, the consumer is always isPromotedAsActive==true + isPromotedAsActive bool +} + +func (consumer *Consumer) setStatus(status int) { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + consumer.status = status +} + +func (consumer *Consumer) getStatus() int { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.status +} + +func (consumer *Consumer) GetStreamName() string { + if consumer.options == nil { + return "" + } + return consumer.options.streamName +} + +func (consumer *Consumer) GetName() string { + if consumer.options == nil { + return "" + } + return consumer.options.ConsumerName +} + +func (consumer *Consumer) setCurrentOffset(offset int64) { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + consumer.currentOffset = offset +} + +func (consumer *Consumer) GetOffset() int64 { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.currentOffset +} + +// isActive returns true if the consumer is promoted as active +// used for Single Active Consumer. Always true in other cases +func (consumer *Consumer) isActive() bool { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.isPromotedAsActive +} + +func (consumer *Consumer) setPromotedAsActive(promoted bool) { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + consumer.isPromotedAsActive = promoted + +} + +func (consumer *Consumer) GetLastStoredOffset() int64 { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.lastStoredOffset +} + +func (consumer *Consumer) updateLastStoredOffset() bool { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + if consumer.lastStoredOffset < consumer.currentOffset { + consumer.lastStoredOffset = consumer.currentOffset + return true + } + return false +} + +func (consumer *Consumer) GetCloseHandler() chan Event { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + return consumer.closeHandler +} + +func (consumer *Consumer) NotifyClose() ChannelClose { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + ch := make(chan Event, 1) + consumer.closeHandler = ch + return ch +} + +type ConsumerContext struct { + Consumer *Consumer + chunkInfo *chunkInfo +} + +func (cc ConsumerContext) GetEntriesCount() uint16 { + return cc.chunkInfo.numEntries +} + +type MessagesHandler func(consumerContext ConsumerContext, message *amqp.Message) + +type AutoCommitStrategy struct { + messageCountBeforeStorage int + flushInterval time.Duration +} + +func (ac *AutoCommitStrategy) SetCountBeforeStorage(messageCountBeforeStorage int) *AutoCommitStrategy { + ac.messageCountBeforeStorage = messageCountBeforeStorage + return ac +} +func (ac *AutoCommitStrategy) SetFlushInterval(flushInterval time.Duration) *AutoCommitStrategy { + ac.flushInterval = flushInterval + return ac +} + +func NewAutoCommitStrategy() *AutoCommitStrategy { + return &AutoCommitStrategy{ + messageCountBeforeStorage: 10_000, + flushInterval: 5 * time.Second, + } +} + +type PostFilter func(message *amqp.Message) bool + +type ConsumerFilter struct { + Values []string + MatchUnfiltered bool + PostFilter PostFilter +} + +func NewConsumerFilter(values []string, matchUnfiltered bool, postFilter PostFilter) *ConsumerFilter { + return &ConsumerFilter{ + Values: values, + MatchUnfiltered: matchUnfiltered, + PostFilter: postFilter, + } +} + +type ConsumerUpdate func(streamName string, isActive bool) OffsetSpecification + +type SingleActiveConsumer struct { + Enabled bool + // ConsumerUpdate is the function that will be called when the consumer is promoted + // that is when the consumer is active. The function will receive a boolean that is true + // the user can decide to return a new offset to start from. + ConsumerUpdate ConsumerUpdate + // This offset is the one form the user that decides from the ConsumerUpdate function + // nothing to do with: ConsumerOptions.Offset + // the ConsumerOptions.Offset is the initial offset and in case of SingleActiveConsumer + // is not used because the consumer will be promoted and the offset will be set by the ConsumerUpdate + // This is needed to filter the messages during the promotion where needed + offsetSpecification OffsetSpecification + + // SingleActiveConsumer can be used with the super stream consumer + // in this case we need to pass the super stream name + superStream string +} + +func NewSingleActiveConsumer(ConsumerUpdate ConsumerUpdate) *SingleActiveConsumer { + return &SingleActiveConsumer{ + Enabled: true, + ConsumerUpdate: ConsumerUpdate, + } +} + +func newSingleActiveConsumerWithAllParameters( + ConsumerUpdate ConsumerUpdate, isEnabled bool, superStream string) *SingleActiveConsumer { + return &SingleActiveConsumer{ + Enabled: isEnabled, + ConsumerUpdate: ConsumerUpdate, + superStream: superStream, + } +} + +func (s *SingleActiveConsumer) SetEnabled(enabled bool) *SingleActiveConsumer { + s.Enabled = enabled + return s +} + +type ConsumerOptions struct { + client *Client + ConsumerName string + streamName string + autocommit bool + autoCommitStrategy *AutoCommitStrategy + Offset OffsetSpecification + CRCCheck bool + initialCredits int16 + ClientProvidedName string + Filter *ConsumerFilter + SingleActiveConsumer *SingleActiveConsumer +} + +func NewConsumerOptions() *ConsumerOptions { + return &ConsumerOptions{ + Offset: OffsetSpecification{}.Last(), + autocommit: false, + autoCommitStrategy: NewAutoCommitStrategy(), + CRCCheck: false, + initialCredits: 10, + ClientProvidedName: "go-stream-consumer", + Filter: nil, + } +} + +func (c *ConsumerOptions) SetConsumerName(consumerName string) *ConsumerOptions { + c.ConsumerName = consumerName + return c +} + +func (c *ConsumerOptions) SetCRCCheck(CRCCheck bool) *ConsumerOptions { + c.CRCCheck = CRCCheck + return c +} + +func (c *ConsumerOptions) SetInitialCredits(initialCredits int16) *ConsumerOptions { + c.initialCredits = initialCredits + return c +} + +func (c *ConsumerOptions) SetAutoCommit(autoCommitStrategy *AutoCommitStrategy) *ConsumerOptions { + c.autocommit = true + if autoCommitStrategy == nil { + c.autoCommitStrategy = NewAutoCommitStrategy() + } else { + c.autoCommitStrategy = autoCommitStrategy + } + return c +} + +func (c *ConsumerOptions) SetManualCommit() *ConsumerOptions { + c.autocommit = false + return c +} +func (c *ConsumerOptions) SetOffset(offset OffsetSpecification) *ConsumerOptions { + c.Offset = offset + return c +} + +func (c *ConsumerOptions) SetClientProvidedName(clientProvidedName string) *ConsumerOptions { + c.ClientProvidedName = clientProvidedName + return c +} + +func (c *ConsumerOptions) SetFilter(filter *ConsumerFilter) *ConsumerOptions { + c.Filter = filter + return c +} + +func (c *ConsumerOptions) SetSingleActiveConsumer(singleActiveConsumer *SingleActiveConsumer) *ConsumerOptions { + c.SingleActiveConsumer = singleActiveConsumer + return c +} + +func (c *ConsumerOptions) IsSingleActiveConsumerEnabled() bool { + return c.SingleActiveConsumer != nil && c.SingleActiveConsumer.Enabled +} + +func (c *ConsumerOptions) IsFilterEnabled() bool { + return c.Filter != nil +} + +func (c *Client) credit(subscriptionId byte, credit int16) { + length := 2 + 2 + 1 + 2 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandCredit) + writeByte(b, subscriptionId) + writeShort(b, credit) + err := c.socket.writeAndFlush(b.Bytes()) + if err != nil { + logs.LogWarn("credit error:%s", err) + } +} + +func (consumer *Consumer) Close() error { + if consumer.getStatus() == closed { + return AlreadyClosed + } + consumer.cacheStoreOffset() + + consumer.setStatus(closed) + _, errGet := consumer.options.client.coordinator.GetConsumerById(consumer.ID) + if errGet != nil { + return nil + } + + length := 2 + 2 + 4 + 1 + resp := consumer.options.client.coordinator.NewResponse(CommandUnsubscribe) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandUnsubscribe, + correlationId) + + writeByte(b, consumer.ID) + err := consumer.options.client.handleWrite(b.Bytes(), resp) + if err.Err != nil && err.isTimeout { + return err.Err + } + consumer.response.code <- Code{id: closeChannel} + errC := consumer.options.client.coordinator.RemoveConsumerById(consumer.ID, Event{ + Command: CommandUnsubscribe, + StreamName: consumer.GetStreamName(), + Name: consumer.GetName(), + Reason: "unSubscribe", + Err: nil, + }) + + if errC != nil { + logs.LogWarn("Error during remove consumer id:%s", errC) + + } + + if consumer.options.client.coordinator.ConsumersCount() == 0 { + err := consumer.options.client.Close() + if err != nil { + return err + } + } + + ch := make(chan uint8, 1) + ch <- consumer.ID + consumer.onClose(ch) + close(ch) + return err.Err +} + +func (consumer *Consumer) cacheStoreOffset() { + if consumer.options.autocommit { + err := consumer.internalStoreOffset() + if err != nil { + logs.LogError("cache Store Offset error : %s", err) + } + } +} + +func (consumer *Consumer) StoreOffset() error { + return consumer.internalStoreOffset() +} +func (consumer *Consumer) StoreCustomOffset(offset int64) error { + consumer.mutex.Lock() + defer consumer.mutex.Unlock() + + if consumer.lastStoredOffset < offset { + consumer.lastStoredOffset = offset + return consumer.writeOffsetToSocket(offset) + } + return nil +} +func (consumer *Consumer) internalStoreOffset() error { + if consumer.options.streamName == "" { + return fmt.Errorf("stream Name can't be empty") + } + + if consumer.updateLastStoredOffset() { + return consumer.writeOffsetToSocket(consumer.GetOffset()) + } + return nil +} +func (consumer *Consumer) writeOffsetToSocket(offset int64) error { + length := 2 + 2 + 2 + len(consumer.options.ConsumerName) + 2 + + len(consumer.options.streamName) + 8 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandStoreOffset) + + writeString(b, consumer.options.ConsumerName) + writeString(b, consumer.options.streamName) + + writeLong(b, offset) + return consumer.options.client.socket.writeAndFlush(b.Bytes()) +} + +func (consumer *Consumer) writeConsumeUpdateOffsetToSocket(correlationID uint32, offsetSpec OffsetSpecification) error { + length := 2 + 2 + 4 + 2 + 2 + if offsetSpec.isOffset() || + offsetSpec.isTimestamp() { + length += 8 + } + + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, commandConsumerUpdate) + + writeUInt(b, correlationID) + writeUShort(b, responseCodeOk) + + writeShort(b, offsetSpec.typeOfs) + + if offsetSpec.isOffset() || + offsetSpec.isTimestamp() { + writeLong(b, offsetSpec.offset) + } + return consumer.options.client.socket.writeAndFlush(b.Bytes()) +} + +func (consumer *Consumer) QueryOffset() (int64, error) { + return consumer.options.client.queryOffset(consumer.options.ConsumerName, consumer.options.streamName) +} + +/* +SetOffset constants +*/ +const ( + typeFirst = int16(1) + typeLast = int16(2) + typeNext = int16(3) + typeOffset = int16(4) + typeTimestamp = int16(5) + // Deprecated: see LastConsumed() + typeLastConsumed = int16(6) +) + +type OffsetSpecification struct { + typeOfs int16 + offset int64 +} + +func (o OffsetSpecification) First() OffsetSpecification { + o.typeOfs = typeFirst + return o +} + +func (o OffsetSpecification) Last() OffsetSpecification { + o.typeOfs = typeLast + return o +} + +func (o OffsetSpecification) Next() OffsetSpecification { + o.typeOfs = typeNext + return o +} + +func (o OffsetSpecification) Offset(offset int64) OffsetSpecification { + o.typeOfs = typeOffset + o.offset = offset + return o +} + +func (o OffsetSpecification) Timestamp(offset int64) OffsetSpecification { + o.typeOfs = typeTimestamp + o.offset = offset + return o +} + +func (o OffsetSpecification) isOffset() bool { + return o.typeOfs == typeOffset || o.typeOfs == typeLastConsumed +} + +// Deprecated: see LastConsumed() +func (o OffsetSpecification) isLastConsumed() bool { + return o.typeOfs == typeLastConsumed +} +func (o OffsetSpecification) isTimestamp() bool { + return o.typeOfs == typeTimestamp +} + +// Deprecated: The method name may be misleading. +// The method does not indicate the last message consumed of the stream but the last stored offset. +// The method was added to help the user, but it created confusion. +// Use `QueryOffset` instead.: +// +// offset, err := env.QueryOffset(consumerName, streamName) +// // check the error +// .... +// SetOffset(stream.OffsetSpecification{}.Offset(offset)). +// +// So in this way it possible to start from the last offset stored and customize the behavior +func (o OffsetSpecification) LastConsumed() OffsetSpecification { + o.typeOfs = typeLastConsumed + o.offset = -1 + return o +} + +func (o OffsetSpecification) String() string { + switch o.typeOfs { + case typeFirst: + return "first" + case typeNext: + return "next" + case typeLast: + return "last" + case typeLastConsumed: + return "last consumed" + case typeOffset: + return fmt.Sprintf("%s, value: %d", "offset", o.offset) + case typeTimestamp: + return fmt.Sprintf("%s, value: %d", "time-stamp", o.offset) + } + return "" +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go new file mode 100644 index 0000000..3ace056 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/converters.go @@ -0,0 +1,85 @@ +package stream + +import ( + "fmt" + "github.com/pkg/errors" + "regexp" + "strconv" + "strings" +) + +const ( + UnitMb = "mb" + UnitKb = "kb" + UnitGb = "gb" + UnitTb = "tb" + kilobytesMultiplier = 1000 + megabytesMultiplier = 1000 * 1000 + gigabytesMultiplier = 1000 * 1000 * 1000 + terabytesMultiplier = 1000 * 1000 * 1000 * 1000 +) + +type ByteCapacity struct { + bytes int64 + error error +} + +func (byteCapacity ByteCapacity) B(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value, error: nil} +} + +func (byteCapacity ByteCapacity) KB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * kilobytesMultiplier, error: nil} +} + +func (byteCapacity ByteCapacity) MB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * megabytesMultiplier, error: nil} +} + +func (byteCapacity ByteCapacity) GB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * gigabytesMultiplier, error: nil} +} +func (byteCapacity ByteCapacity) TB(value int64) *ByteCapacity { + return &ByteCapacity{bytes: value * terabytesMultiplier, error: nil} +} + +func (byteCapacity ByteCapacity) From(value string) *ByteCapacity { + if value == "" || value == "0" { + return &ByteCapacity{bytes: 0, error: nil} + } + + match, err := regexp.Compile("^((kb|mb|gb|tb))") + if err != nil { + return &ByteCapacity{bytes: 0, + error: errors.New(fmt.Sprintf("Capacity, invalid unit size format:%s", value))} + } + + foundUnitSize := strings.ToLower(value[len(value)-2:]) + + if match.MatchString(foundUnitSize) { + + size, err := strconv.Atoi(value[:len(value)-2]) + if err != nil { + return &ByteCapacity{bytes: 0, error: errors.New(fmt.Sprintf("Capacity, Invalid number format: %s", value))} + } + + switch foundUnitSize { + case UnitKb: + return byteCapacity.KB(int64(size)) + + case UnitMb: + return byteCapacity.MB(int64(size)) + + case UnitGb: + return byteCapacity.GB(int64(size)) + + case UnitTb: + return byteCapacity.TB(int64(size)) + } + + } + + return &ByteCapacity{bytes: 0, + error: errors.New(fmt.Sprintf("Capacity, Invalid unit size format: %s", value))} + +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go new file mode 100644 index 0000000..9764776 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/coordinator.go @@ -0,0 +1,305 @@ +package stream + +import ( + "fmt" + "github.com/pkg/errors" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "strconv" + "sync" + "time" +) + +type Coordinator struct { + counter int + producers map[interface{}]interface{} + consumers map[interface{}]interface{} + responses map[interface{}]interface{} + nextItemProducer uint8 + nextItemConsumer uint8 + mutex *sync.Mutex +} + +type Code struct { + id uint16 +} + +type offsetMessage struct { + message *amqp.Message + offset int64 +} + +type offsetMessages = []*offsetMessage +type chunkInfo struct { + offsetMessages offsetMessages + numEntries uint16 +} + +type Response struct { + code chan Code + data chan interface{} + chunkForConsumer chan chunkInfo + commandDescription string + correlationid int +} + +func NewCoordinator() *Coordinator { + return &Coordinator{mutex: &sync.Mutex{}, + producers: make(map[interface{}]interface{}), + consumers: make(map[interface{}]interface{}), + responses: make(map[interface{}]interface{})} +} + +// producersEnvironment +func (coordinator *Coordinator) NewProducer( + parameters *ProducerOptions) (*Producer, error) { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + size := 10000 + if parameters != nil { + size = parameters.QueueSize + } + + var lastId, err = coordinator.getNextProducerItem() + if err != nil { + return nil, err + } + var producer = &Producer{id: lastId, + options: parameters, + mutex: &sync.Mutex{}, + mutexPending: &sync.Mutex{}, + unConfirmedMessages: map[int64]*ConfirmationStatus{}, + status: open, + messageSequenceCh: make(chan messageSequence, size), + pendingMessages: pendingMessagesSequence{ + messages: make([]messageSequence, 0), + size: initBufferPublishSize, + }} + coordinator.producers[lastId] = producer + return producer, err +} + +func (coordinator *Coordinator) RemoveConsumerById(id interface{}, reason Event) error { + consumer, err := coordinator.GetConsumerById(id) + if err != nil { + return err + } + reason.StreamName = consumer.GetStreamName() + reason.Name = consumer.GetName() + + if closeHandler := consumer.GetCloseHandler(); closeHandler != nil { + closeHandler <- reason + close(closeHandler) + } + + return coordinator.removeById(id, coordinator.consumers) +} +func (coordinator *Coordinator) RemoveProducerById(id uint8, reason Event) error { + + producer, err := coordinator.GetProducerById(id) + if err != nil { + return err + } + reason.StreamName = producer.GetStreamName() + reason.Name = producer.GetName() + tentatives := 0 + for producer.lenUnConfirmed() > 0 && tentatives < 3 { + time.Sleep(200 * time.Millisecond) + tentatives++ + } + + if producer.closeHandler != nil { + producer.closeHandler <- reason + } + + return coordinator.removeById(id, coordinator.producers) +} + +func (coordinator *Coordinator) RemoveResponseById(id interface{}) error { + resp, err := coordinator.GetResponseByName(fmt.Sprintf("%d", id)) + if err != nil { + return err + } + + err = coordinator.removeById(fmt.Sprintf("%d", id), coordinator.responses) + close(resp.code) + close(resp.data) + close(resp.chunkForConsumer) + return err +} + +func (coordinator *Coordinator) ProducersCount() int { + return coordinator.count(coordinator.producers) +} + +// response +func newResponse(commandDescription string) *Response { + res := &Response{} + res.commandDescription = commandDescription + res.code = make(chan Code, 1) + res.data = make(chan interface{}, 1) + res.chunkForConsumer = make(chan chunkInfo, 100) + return res +} + +func (coordinator *Coordinator) NewResponseWitName(id string) *Response { + coordinator.mutex.Lock() + coordinator.counter++ + res := newResponse(id) + res.correlationid = coordinator.counter + coordinator.responses[id] = res + coordinator.mutex.Unlock() + return res +} + +func (coordinator *Coordinator) NewResponse(commandId uint16, info ...string) *Response { + description := lookUpCommand(commandId) + if len(info) > 0 { + description = fmt.Sprintf("%s, - %s", description, info[0]) + } + + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + coordinator.counter++ + res := newResponse(description) + res.correlationid = coordinator.counter + coordinator.responses[strconv.Itoa(coordinator.counter)] = res + return res +} + +func (coordinator *Coordinator) GetResponseByName(id string) (*Response, error) { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if coordinator.responses[id] == nil { + return nil, errors.New("Response #{id} not found ") + } + switch coordinator.responses[id].(type) { + case *Response: + return coordinator.responses[id].(*Response), nil + } + + return nil, nil +} + +func (coordinator *Coordinator) RemoveResponseByName(id string) error { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if coordinator.responses[id] == nil { + return errors.New("Response #{id} not found ") + } + coordinator.responses[id] = nil + delete(coordinator.responses, id) + return nil +} + +// Consumer functions +func (coordinator *Coordinator) NewConsumer(messagesHandler MessagesHandler, + parameters *ConsumerOptions) *Consumer { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + var lastId, _ = coordinator.getNextConsumerItem() + var item = &Consumer{ID: lastId, options: parameters, + response: newResponse(lookUpCommand(commandSubscribe)), + status: open, + mutex: &sync.Mutex{}, + MessagesHandler: messagesHandler, + lastStoredOffset: -1, // because 0 is a valid value for the offset + isPromotedAsActive: true, + } + + coordinator.consumers[lastId] = item + return item +} + +func (coordinator *Coordinator) GetConsumerById(id interface{}) (*Consumer, error) { + v, err := coordinator.getById(id, coordinator.consumers) + if err != nil { + return nil, err + } + return v.(*Consumer), err +} + +func (coordinator *Coordinator) GetResponseById(id uint32) (*Response, error) { + v, err := coordinator.getById(fmt.Sprintf("%d", id), coordinator.responses) + if err != nil { + return nil, err + } + return v.(*Response), err +} + +func (coordinator *Coordinator) ConsumersCount() int { + return coordinator.count(coordinator.consumers) +} + +func (coordinator *Coordinator) GetProducerById(id interface{}) (*Producer, error) { + v, err := coordinator.getById(id, coordinator.producers) + if err != nil { + return nil, err + } + return v.(*Producer), err +} + +// general functions + +func (coordinator *Coordinator) getById(id interface{}, refmap map[interface{}]interface{}) (interface{}, error) { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if refmap[id] == nil { + return nil, errors.New("item #{id} not found ") + } + return refmap[id], nil +} + +func (coordinator *Coordinator) removeById(id interface{}, refmap map[interface{}]interface{}) error { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + if refmap[id] == nil { + return fmt.Errorf("remove failed, id %d not found", id) + } + refmap[id] = nil + delete(refmap, id) + return nil +} + +func (coordinator *Coordinator) count(refmap map[interface{}]interface{}) int { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + return len(refmap) +} +func (coordinator *Coordinator) getNextProducerItem() (uint8, error) { + if coordinator.nextItemProducer >= ^uint8(0) { + return coordinator.reuseFreeId(coordinator.producers) + } + res := coordinator.nextItemProducer + coordinator.nextItemProducer++ + return res, nil +} + +func (coordinator *Coordinator) getNextConsumerItem() (uint8, error) { + if coordinator.nextItemConsumer >= ^uint8(0) { + return coordinator.reuseFreeId(coordinator.consumers) + } + res := coordinator.nextItemConsumer + coordinator.nextItemConsumer++ + return res, nil +} + +func (coordinator *Coordinator) reuseFreeId(refMap map[interface{}]interface{}) (byte, error) { + maxValue := int(^uint8(0)) + var result byte + for i := 0; i < maxValue; i++ { + if refMap[byte(i)] == nil { + return byte(i), nil + } + result++ + } + if result >= ^uint8(0) { + return 0, errors.New("No more items available") + } + return result, nil +} + +func (coordinator *Coordinator) Producers() map[interface{}]interface{} { + coordinator.mutex.Lock() + defer coordinator.mutex.Unlock() + return coordinator.producers +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go new file mode 100644 index 0000000..c0eeef1 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment.go @@ -0,0 +1,867 @@ +package stream + +import ( + "crypto/tls" + "errors" + "fmt" + "math/rand" + "net/url" + "strconv" + "strings" + "sync" + "time" + + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" +) + +type Environment struct { + producers *producersEnvironment + consumers *consumersEnvironment + options *EnvironmentOptions + closed bool +} + +func NewEnvironment(options *EnvironmentOptions) (*Environment, error) { + if options == nil { + options = NewEnvironmentOptions() + } + + if options.RPCTimeout <= 0 { + options.RPCTimeout = defaultSocketCallTimeout + } + + client := newClient("go-stream-locator", nil, + options.TCPParameters, options.SaslConfiguration, options.RPCTimeout) + defer func(client *Client) { + err := client.Close() + if err != nil { + return + } + }(client) + + if options.MaxConsumersPerClient <= 0 || options.MaxProducersPerClient <= 0 || + options.MaxConsumersPerClient > 254 || options.MaxProducersPerClient > 254 { + return nil, fmt.Errorf(" MaxConsumersPerClient and MaxProducersPerClient must be between 1 and 254") + } + + if options.SaslConfiguration != nil { + if options.SaslConfiguration.Mechanism != SaslConfigurationPlain && options.SaslConfiguration.Mechanism != SaslConfigurationExternal { + return nil, fmt.Errorf("SaslConfiguration mechanism must be PLAIN or EXTERNAL") + } + } + + if len(options.ConnectionParameters) == 0 { + options.ConnectionParameters = []*Broker{newBrokerDefault()} + } + var connectionError error + for idx, parameter := range options.ConnectionParameters { + + if parameter.Uri != "" { + u, err := url.Parse(parameter.Uri) + if err != nil { + return nil, err + } + parameter.Scheme = u.Scheme + parameter.User = u.User.Username() + parameter.Password, _ = u.User.Password() + parameter.Host = u.Host + parameter.Port = u.Port() + + if vhost := strings.TrimPrefix(u.Path, "/"); len(vhost) > 0 { + if vhost != "/" && strings.Contains(vhost, "/") { + return nil, errors.New("multiple segments in URI path: " + u.Path) + } + parameter.Vhost = vhost + } + } + + parameter.mergeWithDefault() + + client.broker = parameter + + connectionError = client.connect() + if connectionError == nil { + break + } else { + nextIfThereIs := "" + if idx < len(options.ConnectionParameters)-1 { + nextIfThereIs = "Trying the next broker..." + } + logs.LogError("New environment creation. Can't connect to the broker: %s port: %s. %s", + parameter.Host, parameter.Port, nextIfThereIs) + + } + } + + return &Environment{ + options: options, + producers: newProducers(options.MaxProducersPerClient), + consumers: newConsumerEnvironment(options.MaxConsumersPerClient), + closed: false, + }, connectionError +} +func (env *Environment) newReconnectClient() (*Client, error) { + broker := env.options.ConnectionParameters[0] + client := newClient("go-stream-locator", broker, env.options.TCPParameters, + env.options.SaslConfiguration, env.options.RPCTimeout) + + err := client.connect() + tentatives := 1 + for err != nil { + sleepTime := rand.Intn(5000) + (tentatives * 1000) + + logs.LogError("Can't connect the locator client, error:%s, retry in %d milliseconds, broker: ", err, sleepTime, + client.broker) + + time.Sleep(time.Duration(sleepTime) * time.Millisecond) + rand.Seed(time.Now().UnixNano()) + n := rand.Intn(len(env.options.ConnectionParameters)) + client = newClient("stream-locator", env.options.ConnectionParameters[n], env.options.TCPParameters, + env.options.SaslConfiguration, env.options.RPCTimeout) + tentatives = tentatives + 1 + err = client.connect() + + } + + return client, client.connect() +} + +func (env *Environment) DeclareStream(streamName string, options *StreamOptions) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + if err := client.DeclareStream(streamName, options); err != nil && err != StreamAlreadyExists { + return err + } + return nil +} + +func (env *Environment) DeleteStream(streamName string) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + return client.DeleteStream(streamName) +} + +func (env *Environment) NewProducer(streamName string, producerOptions *ProducerOptions) (*Producer, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + + return env.producers.newProducer(client, streamName, producerOptions, env.options.AddressResolver, env.options.RPCTimeout) +} + +func (env *Environment) StreamExists(streamName string) (bool, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return false, err + } + return client.StreamExists(streamName), nil +} + +func (env *Environment) QueryOffset(consumerName string, streamName string) (int64, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return 0, err + } + return client.queryOffset(consumerName, streamName) +} + +// QuerySequence gets the last id stored for a producer +// you can also see producer.GetLastPublishingId() that is the easier way to get the last-id +func (env *Environment) QuerySequence(publisherReference string, streamName string) (int64, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return 0, err + } + return client.queryPublisherSequence(publisherReference, streamName) +} + +func (env *Environment) StreamStats(streamName string) (*StreamStats, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + return client.StreamStats(streamName) +} + +func (env *Environment) StreamMetaData(streamName string) (*StreamMetadata, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + streamsMetadata := client.metaData(streamName) + streamMetadata := streamsMetadata.Get(streamName) + if streamMetadata.responseCode != responseCodeOk { + return nil, lookErrorCode(streamMetadata.responseCode) + } + + tentatives := 0 + for streamMetadata == nil || streamMetadata.Leader == nil && tentatives < 3 { + streamsMetadata = client.metaData(streamName) + streamMetadata = streamsMetadata.Get(streamName) + tentatives++ + time.Sleep(100 * time.Millisecond) + } + + if streamMetadata.Leader == nil { + + return nil, LeaderNotReady + } + + return streamMetadata, nil +} + +func (env *Environment) NewConsumer(streamName string, + messagesHandler MessagesHandler, + options *ConsumerOptions) (*Consumer, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + + return env.consumers.NewSubscriber(client, streamName, messagesHandler, options, env.options.AddressResolver, env.options.RPCTimeout) +} + +func (env *Environment) NewSuperStreamProducer(superStream string, superStreamProducerOptions *SuperStreamProducerOptions) (*SuperStreamProducer, error) { + var p, err = newSuperStreamProducer(env, superStream, superStreamProducerOptions) + if err != nil { + return nil, err + } + return p, p.init() +} + +func (env *Environment) Close() error { + _ = env.producers.close() + _ = env.consumers.close() + env.closed = true + return nil +} + +func (env *Environment) IsClosed() bool { + return env.closed +} + +type EnvironmentOptions struct { + ConnectionParameters []*Broker + TCPParameters *TCPParameters + SaslConfiguration *SaslConfiguration + MaxProducersPerClient int + MaxConsumersPerClient int + AddressResolver *AddressResolver + RPCTimeout time.Duration +} + +func NewEnvironmentOptions() *EnvironmentOptions { + return &EnvironmentOptions{ + MaxProducersPerClient: 1, + MaxConsumersPerClient: 1, + ConnectionParameters: []*Broker{}, + TCPParameters: newTCPParameterDefault(), + SaslConfiguration: newSaslConfigurationDefault(), + RPCTimeout: defaultSocketCallTimeout, + } +} + +func (envOptions *EnvironmentOptions) SetAddressResolver(addressResolver AddressResolver) *EnvironmentOptions { + envOptions.AddressResolver = &AddressResolver{ + Host: addressResolver.Host, + Port: addressResolver.Port, + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetMaxProducersPerClient(maxProducersPerClient int) *EnvironmentOptions { + envOptions.MaxProducersPerClient = maxProducersPerClient + return envOptions +} + +func (envOptions *EnvironmentOptions) SetMaxConsumersPerClient(maxConsumersPerClient int) *EnvironmentOptions { + envOptions.MaxConsumersPerClient = maxConsumersPerClient + return envOptions +} + +func (envOptions *EnvironmentOptions) SetUri(uri string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Uri: uri}) + } else { + envOptions.ConnectionParameters[0].Uri = uri + } + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetUris(uris []string) *EnvironmentOptions { + for _, s := range uris { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Uri: s}) + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetHost(host string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Host: host}) + } else { + envOptions.ConnectionParameters[0].Host = host + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetVHost(vhost string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Vhost: vhost}) + } else { + envOptions.ConnectionParameters[0].Vhost = vhost + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetSaslConfiguration(value string) *EnvironmentOptions { + if envOptions.SaslConfiguration == nil { + envOptions.SaslConfiguration = newSaslConfigurationDefault() + } + envOptions.SaslConfiguration.Mechanism = value + return envOptions +} + +func (envOptions *EnvironmentOptions) SetTLSConfig(config *tls.Config) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.tlsConfig = config + return envOptions +} + +func (envOptions *EnvironmentOptions) IsTLS(val bool) *EnvironmentOptions { + if val { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Scheme: "rabbitmq-stream+tls"}) + } else { + for _, parameter := range envOptions.ConnectionParameters { + parameter.Scheme = "rabbitmq-stream+tls" + } + } + } + return envOptions +} + +func (envOptions *EnvironmentOptions) SetPort(port int) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + brokerOptions := newBrokerDefault() + brokerOptions.Port = strconv.Itoa(port) + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, brokerOptions) + } else { + envOptions.ConnectionParameters[0].Port = strconv.Itoa(port) + } + return envOptions + +} + +func (envOptions *EnvironmentOptions) SetUser(user string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{User: user}) + } else { + envOptions.ConnectionParameters[0].User = user + } + return envOptions + +} + +func (envOptions *EnvironmentOptions) SetPassword(password string) *EnvironmentOptions { + if len(envOptions.ConnectionParameters) == 0 { + envOptions.ConnectionParameters = append(envOptions.ConnectionParameters, &Broker{Password: password}) + } else { + envOptions.ConnectionParameters[0].Password = password + } + return envOptions + +} + +func (envOptions *EnvironmentOptions) SetRequestedHeartbeat(requestedHeartbeat time.Duration) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.RequestedHeartbeat = requestedHeartbeat + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetRequestedMaxFrameSize(requestedMaxFrameSize int) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.RequestedMaxFrameSize = requestedMaxFrameSize + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetWriteBuffer(writeBuffer int) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.WriteBuffer = writeBuffer + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetReadBuffer(readBuffer int) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.ReadBuffer = readBuffer + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetNoDelay(noDelay bool) *EnvironmentOptions { + if envOptions.TCPParameters == nil { + envOptions.TCPParameters = newTCPParameterDefault() + } + envOptions.TCPParameters.NoDelay = noDelay + + return envOptions +} + +func (envOptions *EnvironmentOptions) SetRPCTimeout(timeout time.Duration) *EnvironmentOptions { + envOptions.RPCTimeout = timeout + return envOptions +} + +type environmentCoordinator struct { + mutex *sync.Mutex + mutexContext *sync.RWMutex + clientsPerContext map[int]*Client + maxItemsForClient int + nextId int +} + +func (cc *environmentCoordinator) isProducerListFull(clientsPerContextId int) bool { + return cc.clientsPerContext[clientsPerContextId].coordinator. + ProducersCount() >= cc.maxItemsForClient +} + +func (cc *environmentCoordinator) isConsumerListFull(clientsPerContextId int) bool { + return cc.clientsPerContext[clientsPerContextId].coordinator. + ConsumersCount() >= cc.maxItemsForClient +} + +func (cc *environmentCoordinator) maybeCleanClients() { + cc.mutex.Lock() + defer cc.mutex.Unlock() + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + for i, client := range cc.clientsPerContext { + if !client.socket.isOpen() { + delete(cc.clientsPerContext, i) + } + } +} + +func (c *Client) maybeCleanProducers(streamName string) { + c.mutex.Lock() + for pidx, producer := range c.coordinator.Producers() { + if producer.(*Producer).GetStreamName() == streamName { + err := c.coordinator.RemoveProducerById(pidx.(uint8), Event{ + Command: CommandMetadataUpdate, + StreamName: streamName, + Name: producer.(*Producer).GetName(), + Reason: MetaDataUpdate, + Err: nil, + }) + if err != nil { + return + } + } + } + c.mutex.Unlock() + if c.coordinator.ProducersCount() == 0 { + err := c.Close() + if err != nil { + return + } + } +} + +func (c *Client) maybeCleanConsumers(streamName string) { + c.mutex.Lock() + for pidx, consumer := range c.coordinator.consumers { + if consumer.(*Consumer).options.streamName == streamName { + err := c.coordinator.RemoveConsumerById(pidx.(uint8), Event{ + Command: CommandMetadataUpdate, + StreamName: streamName, + Name: consumer.(*Consumer).GetName(), + Reason: MetaDataUpdate, + Err: nil, + }) + if err != nil { + return + } + } + } + c.mutex.Unlock() + if c.coordinator.ConsumersCount() == 0 { + err := c.Close() + if err != nil { + return + } + } +} + +func (cc *environmentCoordinator) newProducer(leader *Broker, tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, streamName string, + options *ProducerOptions, rpcTimeout time.Duration) (*Producer, error) { + cc.mutex.Lock() + defer cc.mutex.Unlock() + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + var clientResult *Client + for i, client := range cc.clientsPerContext { + if !cc.isProducerListFull(i) { + clientResult = client + break + } + } + clientProvidedName := "go-stream-producer" + if options != nil && options.ClientProvidedName != "" { + clientProvidedName = options.ClientProvidedName + } + + if clientResult == nil { + clientResult = cc.newClientForProducer(clientProvidedName, leader, tcpParameters, saslConfiguration, rpcTimeout) + } + + err := clientResult.connect() + if err != nil { + return nil, err + } + + for clientResult.connectionProperties.host != leader.advHost || + clientResult.connectionProperties.port != leader.advPort { + logs.LogDebug("connectionProperties host %s doesn't mach with the advertised_host %s, advertised_port %d .. retry", + clientResult.connectionProperties.host, + leader.advHost, leader.advPort) + err := clientResult.Close() + if err != nil { + return nil, err + } + clientResult = cc.newClientForProducer(options.ClientProvidedName, leader, tcpParameters, saslConfiguration, rpcTimeout) + err = clientResult.connect() + if err != nil { + return nil, err + } + time.Sleep(1 * time.Second) + } + + producer, err := clientResult.DeclarePublisher(streamName, options) + + if err != nil { + return nil, err + } + + return producer, nil +} + +func (cc *environmentCoordinator) newClientForProducer(connectionName string, leader *Broker, tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, rpcTimeOut time.Duration) *Client { + clientResult := newClient(connectionName, leader, tcpParameters, saslConfiguration, rpcTimeOut) + chMeta := make(chan metaDataUpdateEvent, 1) + clientResult.metadataListener = chMeta + go func(ch <-chan metaDataUpdateEvent, cl *Client) { + for metaDataUpdateEvent := range ch { + clientResult.maybeCleanProducers(metaDataUpdateEvent.StreamName) + cc.maybeCleanClients() + if !cl.socket.isOpen() { + return + } + } + + }(chMeta, clientResult) + + cc.nextId++ + cc.clientsPerContext[cc.nextId] = clientResult + return clientResult +} + +func (cc *environmentCoordinator) newConsumer(connectionName string, leader *Broker, tcpParameters *TCPParameters, saslConfiguration *SaslConfiguration, + streamName string, messagesHandler MessagesHandler, + options *ConsumerOptions, rpcTimeout time.Duration) (*Consumer, error) { + cc.mutex.Lock() + defer cc.mutex.Unlock() + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + var clientResult *Client + for i, client := range cc.clientsPerContext { + if !cc.isConsumerListFull(i) { + clientResult = client + break + } + } + + if clientResult == nil { + clientResult = newClient(connectionName, leader, tcpParameters, saslConfiguration, rpcTimeout) + chMeta := make(chan metaDataUpdateEvent) + clientResult.metadataListener = chMeta + go func(ch <-chan metaDataUpdateEvent, cl *Client) { + for metaDataUpdateEvent := range ch { + clientResult.maybeCleanConsumers(metaDataUpdateEvent.StreamName) + cc.maybeCleanClients() + if !cl.socket.isOpen() { + return + } + } + + }(chMeta, clientResult) + + cc.nextId++ + cc.clientsPerContext[cc.nextId] = clientResult + } + // try to reconnect in case the socket is closed + err := clientResult.connect() + if err != nil { + return nil, err + } + + subscriber, err := clientResult.DeclareSubscriber(streamName, messagesHandler, options) + + if err != nil { + return nil, err + } + return subscriber, nil +} + +func (cc *environmentCoordinator) Close() error { + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + for _, client := range cc.clientsPerContext { + err := client.Close() + if err != nil { + logs.LogWarn("Error during close the client, %s", err) + } + } + return nil +} + +func (cc *environmentCoordinator) getClientsPerContext() map[int]*Client { + cc.mutexContext.Lock() + defer cc.mutexContext.Unlock() + return cc.clientsPerContext +} + +type producersEnvironment struct { + mutex *sync.Mutex + producersCoordinator map[string]*environmentCoordinator + maxItemsForClient int +} + +func newProducers(maxItemsForClient int) *producersEnvironment { + producers := &producersEnvironment{ + mutex: &sync.Mutex{}, + producersCoordinator: map[string]*environmentCoordinator{}, + maxItemsForClient: maxItemsForClient, + } + return producers +} + +func (ps *producersEnvironment) newProducer(clientLocator *Client, streamName string, + options *ProducerOptions, resolver *AddressResolver, rpcTimeOut time.Duration) (*Producer, error) { + ps.mutex.Lock() + defer ps.mutex.Unlock() + leader, err := clientLocator.BrokerLeader(streamName) + if err != nil { + return nil, err + } + coordinatorKey := leader.hostPort() + if ps.producersCoordinator[coordinatorKey] == nil { + ps.producersCoordinator[coordinatorKey] = &environmentCoordinator{ + clientsPerContext: map[int]*Client{}, + mutex: &sync.Mutex{}, + maxItemsForClient: ps.maxItemsForClient, + mutexContext: &sync.RWMutex{}, + nextId: 0, + } + } + leader.cloneFrom(clientLocator.broker, resolver) + + producer, err := ps.producersCoordinator[coordinatorKey].newProducer(leader, clientLocator.tcpParameters, + clientLocator.saslConfiguration, streamName, options, rpcTimeOut) + if err != nil { + return nil, err + } + producer.onClose = func(ch <-chan uint8) { + for _, coordinator := range ps.producersCoordinator { + coordinator.maybeCleanClients() + } + } + + return producer, err +} + +func (ps *producersEnvironment) close() error { + ps.mutex.Lock() + defer ps.mutex.Unlock() + for _, coordinator := range ps.producersCoordinator { + _ = coordinator.Close() + } + return nil +} + +func (ps *producersEnvironment) getCoordinators() map[string]*environmentCoordinator { + ps.mutex.Lock() + defer ps.mutex.Unlock() + return ps.producersCoordinator +} + +type consumersEnvironment struct { + mutex *sync.Mutex + consumersCoordinator map[string]*environmentCoordinator + maxItemsForClient int +} + +func newConsumerEnvironment(maxItemsForClient int) *consumersEnvironment { + producers := &consumersEnvironment{ + mutex: &sync.Mutex{}, + consumersCoordinator: map[string]*environmentCoordinator{}, + maxItemsForClient: maxItemsForClient, + } + return producers +} + +func (ps *consumersEnvironment) NewSubscriber(clientLocator *Client, streamName string, + messagesHandler MessagesHandler, + consumerOptions *ConsumerOptions, resolver *AddressResolver, rpcTimeout time.Duration) (*Consumer, error) { + ps.mutex.Lock() + defer ps.mutex.Unlock() + consumerBroker, err := clientLocator.BrokerForConsumer(streamName) + if err != nil { + return nil, err + } + coordinatorKey := consumerBroker.hostPort() + if ps.consumersCoordinator[coordinatorKey] == nil { + ps.consumersCoordinator[coordinatorKey] = &environmentCoordinator{ + clientsPerContext: map[int]*Client{}, + mutex: &sync.Mutex{}, + maxItemsForClient: ps.maxItemsForClient, + mutexContext: &sync.RWMutex{}, + nextId: 0, + } + } + consumerBroker.cloneFrom(clientLocator.broker, resolver) + clientProvidedName := "go-stream-consumer" + if consumerOptions != nil && consumerOptions.ClientProvidedName != "" { + clientProvidedName = consumerOptions.ClientProvidedName + } + consumer, err := ps.consumersCoordinator[coordinatorKey]. + newConsumer(clientProvidedName, consumerBroker, clientLocator.tcpParameters, + clientLocator.saslConfiguration, + streamName, messagesHandler, consumerOptions, rpcTimeout) + if err != nil { + return nil, err + } + consumer.onClose = func(ch <-chan uint8) { + for _, coordinator := range ps.consumersCoordinator { + coordinator.maybeCleanClients() + } + } + return consumer, err +} + +func (ps *consumersEnvironment) close() error { + ps.mutex.Lock() + defer ps.mutex.Unlock() + for _, coordinator := range ps.consumersCoordinator { + _ = coordinator.Close() + } + return nil +} + +func (ps *consumersEnvironment) getCoordinators() map[string]*environmentCoordinator { + ps.mutex.Lock() + defer ps.mutex.Unlock() + return ps.consumersCoordinator +} + +// Super stream + +func (env *Environment) DeclareSuperStream(superStreamName string, options SuperStreamOptions) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + if err := client.DeclareSuperStream(superStreamName, options); err != nil && !errors.Is(err, StreamAlreadyExists) { + return err + } + return nil +} + +func (env *Environment) DeleteSuperStream(superStreamName string) error { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return err + } + return client.DeleteSuperStream(superStreamName) +} + +func (env *Environment) QueryPartitions(superStreamName string) ([]string, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + return client.QueryPartitions(superStreamName) +} + +func (env *Environment) QueryRoute(superStream string, routingKey string) ([]string, error) { + client, err := env.newReconnectClient() + defer func(client *Client) { + _ = client.Close() + }(client) + if err != nil { + return nil, err + } + return client.queryRoute(superStream, routingKey) +} + +func (env *Environment) NewSuperStreamConsumer(superStream string, messagesHandler MessagesHandler, options *SuperStreamConsumerOptions) (*SuperStreamConsumer, error) { + s, err := newSuperStreamConsumer(env, superStream, messagesHandler, options) + if err != nil { + return nil, err + } + err = s.init() + return s, err +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go new file mode 100644 index 0000000..307a661 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/environment_debug.go @@ -0,0 +1,57 @@ +//go:build debug +// +build debug + +package stream + +//type ProducersCoordinator = environmentCoordinator +// +//func (env *Environment) ClientCoordinator() map[string]*ProducersCoordinator { +// return env.producers.producersCoordinator +//} +// +//func (env *Environment) Nodes() []string { +// var result []string +// for s, _ := range env.producers.producersCoordinator { +// result = append(result, s) +// } +// sort.Strings(result) +// return result +//} +// +//func (env *Environment) ProducerPerStream(streamName string) []*Producer { +// var result []*Producer +// for _, p := range env.producers.producersCoordinator { +// for _, client := range p.getClientsPerContext() { +// for _, prod := range client.coordinator.producers { +// if prod.(*Producer).options.streamName == streamName { +// result = append(result, prod.(*Producer)) +// } +// } +// } +// } +// return result +//} +// +//func (env *Environment) ClientsPerStream(streamName string) []*Client { +// var result []*Client +// for _, p := range env.producers.producersCoordinator { +// for _, client := range p.getClientsPerContext() { +// for _, prod := range client.coordinator.producers { +// if prod.(*Producer).options.streamName == streamName { +// result = append(result, client) +// } +// } +// } +// } +// return result +//} +// +//func (env *Environment) Coordinators() []*Coordinator { +// var result []*Coordinator +// for _, p := range env.producers.producersCoordinator { +// for _, client := range p.getClientsPerContext() { +// result = append(result, client.coordinator) +// } +// } +// return result +//} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go new file mode 100644 index 0000000..01e1b96 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/exchange_commands.go @@ -0,0 +1,48 @@ +package stream + +type commandVersion interface { + GetMinVersion() uint16 + GetMaxVersion() uint16 + GetCommandKey() uint16 +} + +type commandVersionResponse struct { + minVersion uint16 + maxVersion uint16 + commandKey uint16 +} + +func (c commandVersionResponse) GetMinVersion() uint16 { + return c.minVersion +} + +func (c commandVersionResponse) GetMaxVersion() uint16 { + return c.maxVersion +} + +func (c commandVersionResponse) GetCommandKey() uint16 { + return c.commandKey +} + +func newCommandVersionResponse(minVersion, maxVersion, commandKey uint16) commandVersionResponse { + return commandVersionResponse{ + minVersion: minVersion, + maxVersion: maxVersion, + commandKey: commandKey, + } +} + +type PublishFilter struct { +} + +func (p PublishFilter) GetMinVersion() uint16 { + return version1 +} + +func (p PublishFilter) GetMaxVersion() uint16 { + return version2 +} + +func (p PublishFilter) GetCommandKey() uint16 { + return commandPublish +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go new file mode 100644 index 0000000..b5c74b2 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/listeners.go @@ -0,0 +1,20 @@ +package stream + +type Event struct { + Command uint16 + StreamName string + Name string + Reason string + Err error +} + +type metaDataUpdateEvent struct { + StreamName string + code uint16 +} + +type onInternalClose func(ch <-chan uint8) +type metadataListener chan metaDataUpdateEvent + +type ChannelClose = <-chan Event +type ChannelPublishConfirm chan []*ConfirmationStatus diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go new file mode 100644 index 0000000..296378d --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/producer.go @@ -0,0 +1,703 @@ +package stream + +import ( + "bufio" + "bytes" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message" + "sync" + "sync/atomic" + "time" +) + +type ConfirmationStatus struct { + inserted time.Time + message message.StreamMessage + producerID uint8 + publishingId int64 + confirmed bool + err error + errorCode uint16 + linkedTo []*ConfirmationStatus +} + +func (cs *ConfirmationStatus) IsConfirmed() bool { + return cs.confirmed +} + +func (cs *ConfirmationStatus) GetProducerID() uint8 { + return cs.producerID +} + +func (cs *ConfirmationStatus) GetPublishingId() int64 { + return cs.publishingId +} + +func (cs *ConfirmationStatus) GetError() error { + return cs.err +} + +func (cs *ConfirmationStatus) LinkedMessages() []*ConfirmationStatus { + return cs.linkedTo +} + +func (cs *ConfirmationStatus) GetMessage() message.StreamMessage { + return cs.message +} + +func (cs *ConfirmationStatus) GetErrorCode() uint16 { + return cs.errorCode +} + +type pendingMessagesSequence struct { + messages []messageSequence + size int +} + +type messageSequence struct { + messageBytes []byte + unCompressedSize int + publishingId int64 + filterValue string +} + +type Producer struct { + id uint8 + options *ProducerOptions + onClose onInternalClose + unConfirmedMessages map[int64]*ConfirmationStatus + sequence int64 + mutex *sync.Mutex + mutexPending *sync.Mutex + publishConfirm chan []*ConfirmationStatus + closeHandler chan Event + status int + + /// needed for the async publish + messageSequenceCh chan messageSequence + pendingMessages pendingMessagesSequence +} + +type FilterValue func(message message.StreamMessage) string + +type ProducerFilter struct { + FilterValue FilterValue +} + +func NewProducerFilter(filterValue FilterValue) *ProducerFilter { + return &ProducerFilter{ + FilterValue: filterValue, + } +} + +type ProducerOptions struct { + client *Client + streamName string + Name string // Producer name, it is useful to handle deduplication messages + QueueSize int // Internal queue to handle back-pressure, low value reduces the back-pressure on the server + BatchSize int // It is the batch-unCompressedSize aggregation, low value reduce the latency, high value increase the throughput + BatchPublishingDelay int // Period to Send a batch of messages. + SubEntrySize int // Size of sub Entry, to aggregate more subEntry using one publishing id + Compression Compression // Compression type, it is valid only if SubEntrySize > 1 + ConfirmationTimeOut time.Duration // Time to wait for the confirmation + ClientProvidedName string // Client provider name that will be shown in the management UI + Filter *ProducerFilter // Enable the filter feature, by default is disabled. Pointer nil +} + +func (po *ProducerOptions) SetProducerName(name string) *ProducerOptions { + po.Name = name + return po +} + +func (po *ProducerOptions) SetQueueSize(size int) *ProducerOptions { + po.QueueSize = size + return po +} + +func (po *ProducerOptions) SetBatchSize(size int) *ProducerOptions { + po.BatchSize = size + return po +} + +func (po *ProducerOptions) SetBatchPublishingDelay(size int) *ProducerOptions { + po.BatchPublishingDelay = size + return po +} + +func (po *ProducerOptions) SetSubEntrySize(size int) *ProducerOptions { + po.SubEntrySize = size + return po +} + +func (po *ProducerOptions) SetCompression(compression Compression) *ProducerOptions { + po.Compression = compression + return po +} + +func (po *ProducerOptions) SetConfirmationTimeOut(duration time.Duration) *ProducerOptions { + po.ConfirmationTimeOut = duration + return po +} + +func (po *ProducerOptions) SetClientProvidedName(name string) *ProducerOptions { + po.ClientProvidedName = name + return po +} + +func (po *ProducerOptions) SetFilter(filter *ProducerFilter) *ProducerOptions { + po.Filter = filter + return po +} + +func (po *ProducerOptions) IsFilterEnabled() bool { + return po.Filter != nil +} + +func NewProducerOptions() *ProducerOptions { + return &ProducerOptions{ + QueueSize: defaultQueuePublisherSize, + BatchSize: defaultBatchSize, + BatchPublishingDelay: defaultBatchPublishingDelay, + SubEntrySize: 1, + Compression: Compression{}, + ConfirmationTimeOut: defaultConfirmationTimeOut, + ClientProvidedName: "go-stream-producer", + Filter: nil, + } +} + +func (producer *Producer) GetUnConfirmed() map[int64]*ConfirmationStatus { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return producer.unConfirmedMessages +} + +func (producer *Producer) addUnConfirmed(sequence int64, message message.StreamMessage, producerID uint8) { + producer.mutex.Lock() + defer producer.mutex.Unlock() + producer.unConfirmedMessages[sequence] = &ConfirmationStatus{ + inserted: time.Now(), + message: message, + producerID: producerID, + publishingId: sequence, + confirmed: false, + } +} + +func (po *ProducerOptions) isSubEntriesBatching() bool { + return po.SubEntrySize > 1 +} + +func (producer *Producer) removeUnConfirmed(sequence int64) { + producer.mutex.Lock() + defer producer.mutex.Unlock() + delete(producer.unConfirmedMessages, sequence) +} + +func (producer *Producer) lenUnConfirmed() int { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return len(producer.unConfirmedMessages) +} + +func (producer *Producer) lenPendingMessages() int { + producer.mutexPending.Lock() + defer producer.mutexPending.Unlock() + return len(producer.pendingMessages.messages) +} + +func (producer *Producer) getUnConfirmed(sequence int64) *ConfirmationStatus { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return producer.unConfirmedMessages[sequence] +} + +func (producer *Producer) NotifyPublishConfirmation() ChannelPublishConfirm { + ch := make(chan []*ConfirmationStatus) + producer.publishConfirm = ch + return ch +} + +func (producer *Producer) NotifyClose() ChannelClose { + ch := make(chan Event, 1) + producer.closeHandler = ch + return ch +} + +func (producer *Producer) GetOptions() *ProducerOptions { + return producer.options +} + +func (producer *Producer) GetBroker() *Broker { + return producer.options.client.broker +} +func (producer *Producer) setStatus(status int) { + producer.mutex.Lock() + defer producer.mutex.Unlock() + producer.status = status +} + +func (producer *Producer) getStatus() int { + producer.mutex.Lock() + defer producer.mutex.Unlock() + return producer.status +} + +func (producer *Producer) sendBufferedMessages() { + + if len(producer.pendingMessages.messages) > 0 { + err := producer.internalBatchSend(producer.pendingMessages.messages) + if err != nil { + return + } + producer.pendingMessages.messages = producer.pendingMessages.messages[:0] + producer.pendingMessages.size = initBufferPublishSize + } +} + +func (producer *Producer) startUnconfirmedMessagesTimeOutTask() { + + go func() { + for producer.getStatus() == open { + time.Sleep(2 * time.Second) + producer.mutex.Lock() + for _, msg := range producer.unConfirmedMessages { + if time.Since(msg.inserted) > producer.options.ConfirmationTimeOut { + msg.err = ConfirmationTimoutError + msg.errorCode = timeoutError + msg.confirmed = false + if producer.publishConfirm != nil { + producer.publishConfirm <- []*ConfirmationStatus{msg} + } + delete(producer.unConfirmedMessages, msg.publishingId) + } + } + producer.mutex.Unlock() + } + time.Sleep(5 * time.Second) + producer.flushUnConfirmedMessages(timeoutError, ConfirmationTimoutError) + }() + +} + +func (producer *Producer) startPublishTask() { + go func(ch chan messageSequence) { + var ticker = time.NewTicker(time.Duration(producer.options.BatchPublishingDelay) * time.Millisecond) + defer ticker.Stop() + for { + select { + + case msg, running := <-ch: + { + if !running { + + producer.flushUnConfirmedMessages(connectionCloseError, ConnectionClosed) + if producer.publishConfirm != nil { + close(producer.publishConfirm) + producer.publishConfirm = nil + } + if producer.closeHandler != nil { + close(producer.closeHandler) + producer.closeHandler = nil + } + return + } + producer.mutexPending.Lock() + if producer.pendingMessages.size+msg.unCompressedSize >= producer.options.client.getTuneState(). + requestedMaxFrameSize { + producer.sendBufferedMessages() + } + + producer.pendingMessages.size += msg.unCompressedSize + producer.pendingMessages.messages = append(producer.pendingMessages.messages, msg) + if len(producer.pendingMessages.messages) >= (producer.options.BatchSize) { + producer.sendBufferedMessages() + } + producer.mutexPending.Unlock() + } + + case <-ticker.C: + producer.mutexPending.Lock() + producer.sendBufferedMessages() + producer.mutexPending.Unlock() + } + } + }(producer.messageSequenceCh) + +} + +func (producer *Producer) sendBytes(streamMessage message.StreamMessage, messageBytes []byte) error { + if len(messageBytes)+initBufferPublishSize > producer.options.client.getTuneState().requestedMaxFrameSize { + return FrameTooLarge + } + + filterValue := "" + if producer.options.IsFilterEnabled() { + filterValue = producer.options.Filter.FilterValue(streamMessage) + } + + sequence := producer.assignPublishingID(streamMessage) + producer.addUnConfirmed(sequence, streamMessage, producer.id) + + if producer.getStatus() == open { + producer.messageSequenceCh <- messageSequence{ + messageBytes: messageBytes, + unCompressedSize: len(messageBytes), + publishingId: sequence, + filterValue: filterValue, + } + } else { + // TODO: Change the error message with a typed error + return fmt.Errorf("producer id: %d closed", producer.id) + } + + return nil +} + +func (producer *Producer) Send(streamMessage message.StreamMessage) error { + messageBytes, err := streamMessage.MarshalBinary() + if err != nil { + return err + } + return producer.sendBytes(streamMessage, messageBytes) +} + +func (producer *Producer) assignPublishingID(message message.StreamMessage) int64 { + sequence := message.GetPublishingId() + // in case of sub entry the deduplication is disabled + if !message.HasPublishingId() || producer.options.isSubEntriesBatching() { + sequence = atomic.AddInt64(&producer.sequence, 1) + } + return sequence +} + +func (producer *Producer) BatchSend(batchMessages []message.StreamMessage) error { + var messagesSequence = make([]messageSequence, len(batchMessages)) + totalBufferToSend := 0 + for i, batchMessage := range batchMessages { + messageBytes, err := batchMessage.MarshalBinary() + if err != nil { + return err + } + filterValue := "" + if producer.options.IsFilterEnabled() { + filterValue = producer.options.Filter.FilterValue(batchMessage) + } + + sequence := producer.assignPublishingID(batchMessage) + totalBufferToSend += len(messageBytes) + messagesSequence[i] = messageSequence{ + messageBytes: messageBytes, + unCompressedSize: len(messageBytes), + publishingId: sequence, + filterValue: filterValue, + } + + producer.addUnConfirmed(sequence, batchMessage, producer.id) + } + + if totalBufferToSend+initBufferPublishSize > producer.options.client.tuneState.requestedMaxFrameSize { + for _, msg := range messagesSequence { + + unConfirmedMessage := producer.getUnConfirmed(msg.publishingId) + + //producer.mutex.Lock() + if producer.publishConfirm != nil { + unConfirmedMessage.err = FrameTooLarge + unConfirmedMessage.errorCode = responseCodeFrameTooLarge + producer.publishConfirm <- []*ConfirmationStatus{unConfirmedMessage} + } + //producer.mutex.Unlock() + producer.removeUnConfirmed(msg.publishingId) + } + + return FrameTooLarge + } + + return producer.internalBatchSend(messagesSequence) +} + +func (producer *Producer) GetID() uint8 { + return producer.id +} +func (producer *Producer) internalBatchSend(messagesSequence []messageSequence) error { + return producer.internalBatchSendProdId(messagesSequence, producer.GetID()) +} + +func (producer *Producer) simpleAggregation(messagesSequence []messageSequence, b *bufio.Writer) { + for _, msg := range messagesSequence { + r := msg.messageBytes + writeBLong(b, msg.publishingId) // publishingId + writeBInt(b, len(r)) // len + b.Write(r) + } +} + +func (producer *Producer) subEntryAggregation(aggregation subEntries, b *bufio.Writer, compression Compression) { + /// 51 messages + // aggregation.items == (5 --> [10] messages) + (1 --> [1]message) + for _, entry := range aggregation.items { + writeBLong(b, entry.publishingId) + writeBByte(b, 0x80| + compression.value<<4) // 1=SubBatchEntryType:1,CompressionType:3,Reserved:4, + writeBShort(b, int16(len(entry.messages))) + writeBInt(b, entry.unCompressedSize) + writeBInt(b, entry.sizeInBytes) + b.Write(entry.dataInBytes) + } +} + +func (producer *Producer) aggregateEntities(msgs []messageSequence, size int, compression Compression) (subEntries, error) { + subEntries := subEntries{} + + var entry *subEntry + for _, msg := range msgs { + if len(subEntries.items) == 0 || len(entry.messages) >= size { + entry = &subEntry{} + entry.publishingId = -1 + subEntries.items = append(subEntries.items, entry) + } + entry.messages = append(entry.messages, msg) + binary := msg.messageBytes + entry.unCompressedSize += len(binary) + 4 + + // in case of subEntry we need to pick only one publishingId + // we peek the first one of the entries + // suppose you have 10 messages with publishingId [5..15] + if entry.publishingId < 0 { + entry.publishingId = msg.publishingId + } + + /// since there is only one publishingId + // the others publishingId(s) are linked + // so the client confirms all the messages + //when the client receives the confirmation form the server + // see: server_frame:handleConfirm/2 + // suppose you have 10 messages with publishingId [5..15] + // the message 5 is linked to 6,7,8,9..15 + + if entry.publishingId != msg.publishingId { + unConfirmed := producer.getUnConfirmed(entry.publishingId) + if unConfirmed != nil { + unConfirmed.linkedTo = + append(unConfirmed.linkedTo, + producer.getUnConfirmed(msg.publishingId)) + } + } + } + + compressByValue(compression.value).Compress(&subEntries) + + return subEntries, nil +} + +/// the producer id is always the producer.GetID(). This function is needed only for testing +// some condition, like simulate publish error, see + +func (producer *Producer) internalBatchSendProdId(messagesSequence []messageSequence, producerID uint8) error { + producer.options.client.socket.mutex.Lock() + defer producer.options.client.socket.mutex.Unlock() + if producer.getStatus() == closed { + return fmt.Errorf("producer id: %d closed", producer.id) + } + + if producer.options.IsFilterEnabled() && + // this check is just for safety. The producer can't be created with Filter and SubEntry > 1 + !producer.options.isSubEntriesBatching() { + return producer.sendWithFilter(messagesSequence, producerID) + } + + var msgLen int + var aggregation subEntries + + if producer.options.isSubEntriesBatching() { + var err error + aggregation, err = producer.aggregateEntities(messagesSequence, producer.options.SubEntrySize, + producer.options.Compression) + if err != nil { + return err + } + msgLen += ((8 + 1 + 2 + 4 + 4) * len(aggregation.items)) + aggregation.totalSizeInBytes + } + + if !producer.options.isSubEntriesBatching() { + for _, msg := range messagesSequence { + msgLen += msg.unCompressedSize + 8 + 4 + } + } + + frameHeaderLength := initBufferPublishSize + length := frameHeaderLength + msgLen + + writeBProtocolHeader(producer.options.client.socket.writer, length, commandPublish) + writeBByte(producer.options.client.socket.writer, producerID) + numberOfMessages := len(messagesSequence) + numberOfMessages = numberOfMessages / producer.options.SubEntrySize + if len(messagesSequence)%producer.options.SubEntrySize != 0 { + numberOfMessages += 1 + } + + writeBInt(producer.options.client.socket.writer, numberOfMessages) //toExcluded - fromInclude + + if producer.options.isSubEntriesBatching() { + producer.subEntryAggregation(aggregation, producer.options.client.socket.writer, producer.options.Compression) + } + + if !producer.options.isSubEntriesBatching() { + producer.simpleAggregation(messagesSequence, producer.options.client.socket.writer) + } + + err := producer.options.client.socket.writer.Flush() //writeAndFlush(b.Bytes()) + if err != nil { + logs.LogError("Producer BatchSend error during flush: %s", err) + producer.setStatus(closed) + return err + } + return nil +} + +func (producer *Producer) flushUnConfirmedMessages(errorCode uint16, err error) { + producer.mutex.Lock() + + for _, msg := range producer.unConfirmedMessages { + msg.confirmed = false + msg.err = err + msg.errorCode = errorCode + if producer.publishConfirm != nil { + producer.publishConfirm <- []*ConfirmationStatus{msg} + } + delete(producer.unConfirmedMessages, msg.publishingId) + } + + producer.mutex.Unlock() +} + +func (producer *Producer) GetLastPublishingId() (int64, error) { + return producer.options.client.queryPublisherSequence(producer.GetName(), producer.GetStreamName()) +} +func (producer *Producer) Close() error { + if producer.getStatus() == closed { + return AlreadyClosed + } + + producer.waitForInflightMessages() + producer.setStatus(closed) + + if !producer.options.client.socket.isOpen() { + return fmt.Errorf("tcp connection is closed") + } + + err := producer.options.client.deletePublisher(producer.id) + if err != nil { + logs.LogError("error delete Publisher on closing: %s", err) + } + if producer.options.client.coordinator.ProducersCount() == 0 { + err := producer.options.client.Close() + if err != nil { + logs.LogError("error during closing client: %s", err) + } + } + + if producer.onClose != nil { + ch := make(chan uint8, 1) + ch <- producer.id + producer.onClose(ch) + close(ch) + } + + close(producer.messageSequenceCh) + return nil +} + +func (producer *Producer) waitForInflightMessages() { + // during the close there cloud be pending messages + // it waits for producer.options.BatchPublishingDelay + // to flush the last messages + // see issues/103 + + channelLength := len(producer.messageSequenceCh) + pendingMessagesLen := producer.lenPendingMessages() + tentatives := 0 + + for (channelLength > 0 || pendingMessagesLen > 0 || producer.lenUnConfirmed() > 0) && tentatives < 3 { + logs.LogDebug("waitForInflightMessages, channel: %d - pending messages len: %d - unconfirmed len: %d - retry: %d", + channelLength, pendingMessagesLen, + producer.lenUnConfirmed(), tentatives) + time.Sleep(time.Duration(2*producer.options.BatchPublishingDelay) * time.Millisecond) + channelLength = len(producer.messageSequenceCh) + pendingMessagesLen = producer.lenPendingMessages() + tentatives++ + } +} + +func (producer *Producer) GetStreamName() string { + if producer.options == nil { + return "" + } + return producer.options.streamName +} + +func (producer *Producer) GetName() string { + if producer.options == nil { + return "" + } + return producer.options.Name +} + +func (producer *Producer) sendWithFilter(messagesSequence []messageSequence, producerID uint8) error { + frameHeaderLength := initBufferPublishSize + var msgLen int + for _, msg := range messagesSequence { + msgLen += msg.unCompressedSize + 8 + 4 + if msg.filterValue != "" { + msgLen += 2 + len(msg.filterValue) + } + } + length := frameHeaderLength + msgLen + + writeBProtocolHeaderVersion(producer.options.client.socket.writer, length, commandPublish, version2) + writeBByte(producer.options.client.socket.writer, producerID) + numberOfMessages := len(messagesSequence) + writeBInt(producer.options.client.socket.writer, numberOfMessages) + + for _, msg := range messagesSequence { + writeBLong(producer.options.client.socket.writer, msg.publishingId) + if msg.filterValue != "" { + writeBString(producer.options.client.socket.writer, msg.filterValue) + } else { + writeBInt(producer.options.client.socket.writer, -1) + } + writeBInt(producer.options.client.socket.writer, len(msg.messageBytes)) // len + _, err := producer.options.client.socket.writer.Write(msg.messageBytes) + if err != nil { + return err + } + } + + return producer.options.client.socket.writer.Flush() + +} + +func (c *Client) deletePublisher(publisherId byte) error { + length := 2 + 2 + 4 + 1 + resp := c.coordinator.NewResponse(CommandDeletePublisher) + correlationId := resp.correlationid + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeProtocolHeader(b, length, CommandDeletePublisher, + correlationId) + + writeByte(b, publisherId) + errWrite := c.handleWrite(b.Bytes(), resp) + + err := c.coordinator.RemoveProducerById(publisherId, Event{ + Command: CommandDeletePublisher, + Reason: "deletePublisher", + Err: nil, + }) + if err != nil { + logs.LogWarn("producer id: %d already removed", publisherId) + } + + return errWrite.Err +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go new file mode 100644 index 0000000..67a76c3 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/server_frame.go @@ -0,0 +1,662 @@ +package stream + +import ( + "bufio" + "bytes" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "hash/crc32" + "io" + "time" +) + +type ReaderProtocol struct { + FrameLen uint32 + CommandID uint16 + Key uint16 + Version uint16 + CorrelationId uint32 + ResponseCode uint16 + PublishID uint8 + PublishingIdCount uint64 +} + +func logErrorCommand(error error, details string) { + if error != nil { + logs.LogError("Error handling command response: %s - details: %s", error, details) + } +} + +func (c *Client) handleResponse() { + buffer := bufio.NewReader(c.socket.connection) + for { + readerProtocol := &ReaderProtocol{} + frameLen, err := readUInt(buffer) + if err != nil { + logs.LogDebug("Read connection failed: %s", err) + _ = c.Close() + break + } + c.setLastHeartBeat(time.Now()) + readerProtocol.FrameLen = frameLen + readerProtocol.CommandID = uShortExtractResponseCode(readUShort(buffer)) + readerProtocol.Version = readUShort(buffer) + + switch readerProtocol.CommandID { + + case commandPeerProperties: + { + c.handlePeerProperties(readerProtocol, buffer) + } + case commandSaslHandshake: + { + c.handleSaslHandshakeResponse(readerProtocol, buffer) + } + case commandTune: + { + c.handleTune(buffer) + } + case commandDeclarePublisher, + CommandDeletePublisher, commandDeleteStream, + commandCreateStream, commandSaslAuthenticate, commandSubscribe, + CommandUnsubscribe, commandCreateSuperStream, commandDeleteSuperStream: + { + c.handleGenericResponse(readerProtocol, buffer) + } + case commandOpen: + { + c.commandOpen(readerProtocol, buffer) + } + case commandPublishError: + { + c.handlePublishError(buffer) + + } + case commandPublishConfirm: + { + c.handleConfirm(readerProtocol, buffer) + } + case commandDeliver: + { + c.handleDeliver(buffer) + + } + case commandQueryPublisherSequence: + { + c.queryPublisherSequenceFrameHandler(readerProtocol, buffer) + } + case CommandMetadataUpdate: + { + + c.metadataUpdateFrameHandler(buffer) + } + case commandCredit: + { + c.creditNotificationFrameHandler(readerProtocol, buffer) + } + case commandHeartbeat: + { + + c.handleHeartbeat() + + } + case CommandQueryOffset: + { + c.queryOffsetFrameHandler(readerProtocol, buffer) + + } + case commandStreamStatus: + { + c.streamStatusFrameHandler(readerProtocol, buffer) + } + case commandMetadata: + { + c.metadataFrameHandler(readerProtocol, buffer) + } + case CommandClose: + { + c.closeFrameHandler(readerProtocol, buffer) + } + case commandExchangeVersion: + { + c.handleExchangeVersionResponse(readerProtocol, buffer) + } + case consumerUpdateQueryResponse: + { + c.handleConsumerUpdate(readerProtocol, buffer) + } + case commandQueryPartition: + { + c.handleQueryPartitions(readerProtocol, buffer) + } + case commandQueryRoute: + { + c.handleQueryRoute(readerProtocol, buffer) + } + default: + { + logs.LogWarn("Command not implemented %d buff:%d \n", readerProtocol.CommandID, buffer.Buffered()) + break + } + } + } + +} + +func (c *Client) handleSaslHandshakeResponse(streamingRes *ReaderProtocol, r *bufio.Reader) interface{} { + streamingRes.CorrelationId, _ = readUInt(r) + streamingRes.ResponseCode = uShortExtractResponseCode(readUShort(r)) + mechanismsCount, _ := readUInt(r) + var mechanisms []string + for i := 0; i < int(mechanismsCount); i++ { + mechanism := readString(r) + mechanisms = append(mechanisms, mechanism) + } + + res, err := c.coordinator.GetResponseById(streamingRes.CorrelationId) + if err != nil { + // TODO handle response + return err + } + res.data <- mechanisms + + return mechanisms +} + +func (c *Client) handlePeerProperties(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + serverPropertiesCount, _ := readUInt(r) + serverProperties := make(map[string]string) + + for i := 0; i < int(serverPropertiesCount); i++ { + key := readString(r) + value := readString(r) + serverProperties[key] = value + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handlePeerProperties") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- serverProperties + +} + +func (c *Client) handleTune(r *bufio.Reader) interface{} { + + serverMaxFrameSize, _ := readUInt(r) + serverHeartbeat, _ := readUInt(r) + + maxFrameSize := serverMaxFrameSize + heartbeat := serverHeartbeat + + length := 2 + 2 + 4 + 4 + var b = bytes.NewBuffer(make([]byte, 0, length+4)) + writeInt(b, length) + writeUShort(b, uShortEncodeResponseCode(commandTune)) + writeShort(b, version1) + writeUInt(b, maxFrameSize) + writeUInt(b, heartbeat) + res, err := c.coordinator.GetResponseByName("tune") + logErrorCommand(err, "handleTune") + res.data <- b.Bytes() + return b.Bytes() + +} + +func (c *Client) handleGenericResponse(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleGenericResponse") + res.code <- Code{id: readProtocol.ResponseCode} +} + +func (c *Client) commandOpen(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + clientProperties := ConnectionProperties{} + connectionPropertiesCount, _ := readUInt(r) + for i := 0; i < int(connectionPropertiesCount); i++ { + v := readString(r) + switch v { + + case "advertised_host": + { + clientProperties.host = readString(r) + } + case "advertised_port": + { + clientProperties.port = readString(r) + } + + } + + } + + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "commandOpen") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- clientProperties + +} + +func (c *Client) handleConfirm(readProtocol *ReaderProtocol, r *bufio.Reader) interface{} { + + readProtocol.PublishID = readByte(r) + //readProtocol.PublishingIdCount = ReadIntFromReader(testEnvironment.reader) + publishingIdCount, _ := readUInt(r) + //var _publishingId int64 + producer, err := c.coordinator.GetProducerById(readProtocol.PublishID) + if err != nil { + logs.LogWarn("can't find the producer during confirmation: %s", err) + return nil + } + var unConfirmed []*ConfirmationStatus + for publishingIdCount != 0 { + seq := readInt64(r) + + m := producer.getUnConfirmed(seq) + if m != nil { + m.confirmed = true + unConfirmed = append(unConfirmed, m) + producer.removeUnConfirmed(m.publishingId) + + // in case of sub-batch entry the client receives only + // one publishingId (or sequence) + // so the other messages are confirmed using the linkedTo + for _, message := range m.linkedTo { + message.confirmed = true + unConfirmed = append(unConfirmed, message) + producer.removeUnConfirmed(message.publishingId) + } + } + //} else { + //logs.LogWarn("message %d not found in confirmation", seq) + //} + publishingIdCount-- + } + + producer.mutex.Lock() + if producer.publishConfirm != nil { + producer.publishConfirm <- unConfirmed + } + producer.mutex.Unlock() + + return 0 +} + +func (c *Client) queryPublisherSequenceFrameHandler(readProtocol *ReaderProtocol, r *bufio.Reader) { + + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + sequence := readInt64(r) + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "queryPublisherSequenceFrameHandler") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- sequence +} +func (c *Client) handleDeliver(r *bufio.Reader) { + + subscriptionId := readByte(r) + consumer, err := c.coordinator.GetConsumerById(subscriptionId) + if err != nil { + logs.LogError("Handle Deliver consumer not found %s", err) + return + + } + + _ = readByte(r) + chunkType := readByte(r) + if chunkType != 0 { + logs.LogWarn("Invalid chunkType: %d ", chunkType) + } + + numEntries := readUShort(r) + numRecords, _ := readUInt(r) + _ = readInt64(r) // timestamp + _ = readInt64(r) // epoch, unsigned long + offset := readInt64(r) // offset position + crc, _ := readUInt(r) /// crc and dataLength are needed to calculate the CRC + dataLength, _ := readUInt(r) + _, _ = readUInt(r) + _, _ = readUInt(r) + + c.credit(subscriptionId, 1) + + var offsetLimit int64 = -1 + + // we can have two cases + // 1. single active consumer is enabled + // 2. single active consumer is not enabled + + // single active consumer is enabled + // we need to check if the consumer has an offset + // if the consumer has an offset we need to filter the messages + + if consumer.options.IsSingleActiveConsumerEnabled() { + if consumer.options.SingleActiveConsumer.offsetSpecification.isOffset() { + offsetLimit = consumer.options.SingleActiveConsumer.offsetSpecification.offset + } + } else { + // single active consumer is not enabled + // So the standard offset is used + if consumer.options.Offset.isOffset() { + offsetLimit = consumer.GetOffset() + } + } + + filter := offsetLimit != -1 + + //messages + batchConsumingMessages := make(offsetMessages, 0, numRecords) + var chunk chunkInfo + chunk.numEntries = numEntries + var bytesBuffer = make([]byte, int(dataLength)) + _, err = io.ReadFull(r, bytesBuffer) + logErrorCommand(err, "handleDeliver") + + /// headers ---> payload -> messages + + if consumer.options.CRCCheck { + checkSum := crc32.ChecksumIEEE(bytesBuffer) + if crc != checkSum { + logs.LogError("Error during the checkSum, expected %d, checksum %d", crc, checkSum) + panic("Error during CRC") + } /// ??? + } + + bufferReader := bytes.NewReader(bytesBuffer) + dataReader := bufio.NewReader(bufferReader) + + for numRecords != 0 { + entryType, err := peekByte(dataReader) + + if err != nil { + if err == io.EOF { + logs.LogDebug("EOF reading entryType %s ", err) + return + } else { + logs.LogWarn("error reading entryType %s ", err) + } + } + if (entryType & 0x80) == 0 { + batchConsumingMessages = c.decodeMessage(dataReader, + filter, + offset, + offsetLimit, + batchConsumingMessages) + numRecords-- + offset++ + } else { + entryType, _ := readByteError(dataReader) + // sub-batch case. + numRecordsInBatch := readUShort(dataReader) + uncompressedDataSize, _ := readUInt(dataReader) //uncompressedDataSize + dataSize, _ := readUInt(dataReader) + numRecords -= uint32(numRecordsInBatch) + compression := (entryType & 0x70) >> 4 //compression + uncompressedReader := compressByValue(compression).UnCompress(dataReader, + dataSize, + uncompressedDataSize) + + for numRecordsInBatch != 0 { + batchConsumingMessages = c.decodeMessage(uncompressedReader, + filter, + offset, + offsetLimit, + batchConsumingMessages) + numRecordsInBatch-- + offset++ + } + + } + } + chunk.offsetMessages = batchConsumingMessages + if consumer.getStatus() == open { + consumer.response.chunkForConsumer <- chunk + } else { + logs.LogDebug("The consumer %s for the stream %s is closed during the chunk dispatching. "+ + "Messages won't dispatched", consumer.GetName(), consumer.GetStreamName()) + } + +} + +func (c *Client) decodeMessage(r *bufio.Reader, filter bool, offset int64, offsetLimit int64, batchConsumingMessages offsetMessages) offsetMessages { + sizeMessage, _ := readUInt(r) + arrayMessage := readUint8Array(r, sizeMessage) + if filter && (offset < offsetLimit) { + /// TODO set recordset as filtered + } else { + msg := &amqp.Message{} + err := msg.UnmarshalBinary(arrayMessage) + logErrorCommand(err, "error unmarshal messages") + batchConsumingMessages = append(batchConsumingMessages, + &offsetMessage{offset: offset, message: msg}) + } + return batchConsumingMessages +} + +func (c *Client) creditNotificationFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + subscriptionId := readByte(r) + consumer, err := c.coordinator.GetConsumerById(subscriptionId) + if err != nil { + logs.LogWarn("received a credit for an unknown subscriptionId: %d", subscriptionId) + return + } + + if consumer != nil && consumer.getStatus() == closed { + logs.LogDebug("received a credit for a closed consumer %d", subscriptionId) + return + } + +} + +func (c *Client) queryOffsetFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + c.handleGenericResponse(readProtocol, r) + offset := readInt64(r) + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "queryOffsetFrameHandler") + res.data <- offset +} + +func (c *Client) handlePublishError(buffer *bufio.Reader) { + + publisherId := readByte(buffer) + + publishingErrorCount, _ := readUInt(buffer) + var publishingId int64 + var code uint16 + for publishingErrorCount != 0 { + publishingId = readInt64(buffer) + code = readUShort(buffer) + producer, err := c.coordinator.GetProducerById(publisherId) + if err != nil { + logs.LogWarn("producer id %d not found, publish error :%s", publisherId, lookErrorCode(code)) + producer = &Producer{unConfirmedMessages: map[int64]*ConfirmationStatus{}} + } else { + unConfirmedMessage := producer.getUnConfirmed(publishingId) + + producer.mutex.Lock() + + if producer.publishConfirm != nil && unConfirmedMessage != nil { + unConfirmedMessage.errorCode = code + unConfirmedMessage.err = lookErrorCode(code) + producer.publishConfirm <- []*ConfirmationStatus{unConfirmedMessage} + } + producer.mutex.Unlock() + producer.removeUnConfirmed(publishingId) + } + publishingErrorCount-- + } + +} + +func (c *Client) metadataUpdateFrameHandler(buffer *bufio.Reader) { + code := readUShort(buffer) + if code == responseCodeStreamNotAvailable { + stream := readString(buffer) + logs.LogDebug("stream %s is no longer available", stream) + c.mutex.Lock() + c.metadataListener <- metaDataUpdateEvent{ + StreamName: stream, + code: responseCodeStreamNotAvailable, + } + c.mutex.Unlock() + + } else { + //TODO handle the error, see the java code + logs.LogWarn("unsupported metadata update code %d", code) + } +} + +func (c *Client) streamStatusFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + + c.handleGenericResponse(readProtocol, r) + + count, _ := readUInt(r) + streamStatus := make(map[string]int64) + + for i := 0; i < int(count); i++ { + key := readString(r) + value := readInt64(r) + streamStatus[key] = value + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "streamStatusFrameHandler") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- streamStatus + +} + +func (c *Client) metadataFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = responseCodeOk + brokers := newBrokers() + brokersCount, _ := readUInt(r) + for i := 0; i < int(brokersCount); i++ { + brokerReference := readShort(r) + host := readString(r) + port, _ := readUInt(r) + brokers.Add(brokerReference, host, port) + } + + streamsMetadata := StreamsMetadata{}.New() + streamsCount, _ := readUInt(r) + for i := 0; i < int(streamsCount); i++ { + stream := readString(r) + responseCode := readUShort(r) + var leader *Broker + var replicas []*Broker + leaderReference := readShort(r) + leader = brokers.Get(leaderReference) + replicasCount, _ := readUInt(r) + for i := 0; i < int(replicasCount); i++ { + replicaReference := readShort(r) + replicas = append(replicas, brokers.Get(replicaReference)) + } + streamsMetadata.Add(stream, responseCode, leader, replicas) + } + + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "metadataFrameHandler") + + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- streamsMetadata +} + +func (c *Client) closeFrameHandler(readProtocol *ReaderProtocol, + r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + closeReason := readString(r) + logs.LogDebug("Received close from server, reason: %s %s %d", lookErrorCode(readProtocol.ResponseCode), + closeReason, readProtocol.ResponseCode) + + length := 2 + 2 + 4 + 2 + var b = bytes.NewBuffer(make([]byte, 0, length)) + writeProtocolHeader(b, length, uShortEncodeResponseCode(CommandClose), + int(readProtocol.CorrelationId)) + writeUShort(b, responseCodeOk) + + err := c.socket.writeAndFlush(b.Bytes()) + logErrorCommand(err, "Socket write buffer closeFrameHandler") + +} + +func (c *Client) handleConsumerUpdate(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + subscriptionId := readByte(r) + isActive := readByte(r) + consumer, err := c.coordinator.GetConsumerById(subscriptionId) + + logErrorCommand(err, "handleConsumerUpdate") + if consumer == nil { + logs.LogWarn("consumer not found %d. The consumer maybe removed before the update", subscriptionId) + return + } + consumer.setPromotedAsActive(isActive == 1) + responseOff := consumer.options.SingleActiveConsumer.ConsumerUpdate(consumer.GetStreamName(), + isActive == 1) + consumer.options.SingleActiveConsumer.offsetSpecification = responseOff + err = consumer.writeConsumeUpdateOffsetToSocket(readProtocol.CorrelationId, responseOff) + logErrorCommand(err, "handleConsumerUpdate writeConsumeUpdateOffsetToSocket") +} + +func (c *Client) handleQueryPartitions(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + partitions := make([]string, 0) + partitionsCount, _ := readUInt(r) + for i := 0; i < int(partitionsCount); i++ { + partition := readString(r) + partitions = append(partitions, partition) + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleQueryPartitions") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- partitions +} + +func (c *Client) handleQueryRoute(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + numStreams, _ := readUInt(r) + + routes := make([]string, 0) + for i := 0; i < int(numStreams); i++ { + route := readString(r) + routes = append(routes, route) + } + + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleQueryRoute") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- routes +} + +func (c *Client) handleExchangeVersionResponse(readProtocol *ReaderProtocol, r *bufio.Reader) { + readProtocol.CorrelationId, _ = readUInt(r) + readProtocol.ResponseCode = uShortExtractResponseCode(readUShort(r)) + commandsSize, _ := readUInt(r) + commands := make([]commandVersion, 0) + for i := 0; i < int(commandsSize); i++ { + commandKey := readUShort(r) + minVersion := readUShort(r) + maxVersion := readUShort(r) + commands = append(commands, newCommandVersionResponse(minVersion, maxVersion, commandKey)) + } + res, err := c.coordinator.GetResponseById(readProtocol.CorrelationId) + logErrorCommand(err, "handleExchangeVersionResponse") + res.code <- Code{id: readProtocol.ResponseCode} + res.data <- commands +} + +func (c *Client) handleHeartbeat() { + logs.LogDebug("Heart beat received at %s", time.Now()) + c.setLastHeartBeat(time.Now()) +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go new file mode 100644 index 0000000..43ef1b7 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/socket.go @@ -0,0 +1,83 @@ +package stream + +import ( + "bufio" + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "net" + "sync" +) + +type socket struct { + connection net.Conn + writer *bufio.Writer + mutex *sync.Mutex + closed int32 + destructor *sync.Once +} + +func (sck *socket) setOpen() { + sck.mutex.Lock() + defer sck.mutex.Unlock() + sck.closed = 1 +} + +func (sck *socket) isOpen() bool { + sck.mutex.Lock() + defer sck.mutex.Unlock() + return sck.closed == 1 +} +func (sck *socket) shutdown(err error) { + if !sck.isOpen() { + return + } + sck.mutex.Lock() + sck.closed = 0 + sck.mutex.Unlock() + + sck.destructor.Do(func() { + sck.mutex.Lock() + defer sck.mutex.Unlock() + err := sck.connection.Close() + if err != nil { + logs.LogWarn("error during close socket: %s", err) + } + }) + +} + +func (sck *socket) writeAndFlush(buffer []byte) error { + sck.mutex.Lock() + defer sck.mutex.Unlock() + _, err := sck.writer.Write(buffer) + if err != nil { + return err + } + err = sck.writer.Flush() + if err != nil { + return err + } + + return nil +} + +func (c *Client) handleWrite(buffer []byte, response *Response) responseError { + return c.handleWriteWithResponse(buffer, response, true) +} + +func (c *Client) handleWriteWithResponse(buffer []byte, response *Response, removeResponse bool) responseError { + result := c.socket.writeAndFlush(buffer) + resultCode := waitCodeWithTimeOut(response, c.socketCallTimeout) + /// we need to remove the response before evaluate the + // buffer errSocket + if removeResponse { + result = c.coordinator.RemoveResponseById(response.correlationid) + } + + if result != nil { + // we just log + fmt.Printf("Error handleWrite %s", result) + } + + return resultCode +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go new file mode 100644 index 0000000..6831816 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_options.go @@ -0,0 +1,60 @@ +package stream + +import ( + "fmt" + "time" +) + +type StreamOptions struct { + MaxAge time.Duration + MaxLengthBytes *ByteCapacity + MaxSegmentSizeBytes *ByteCapacity +} + +func (s *StreamOptions) SetMaxAge(maxAge time.Duration) *StreamOptions { + s.MaxAge = maxAge + return s +} + +func (s *StreamOptions) SetMaxLengthBytes(maxLength *ByteCapacity) *StreamOptions { + s.MaxLengthBytes = maxLength + return s +} + +func (s *StreamOptions) SetMaxSegmentSizeBytes(segmentSize *ByteCapacity) *StreamOptions { + s.MaxSegmentSizeBytes = segmentSize + return s +} + +func (s StreamOptions) buildParameters() (map[string]string, error) { + res := map[string]string{"queue-leader-locator": "least-leaders"} + + if s.MaxLengthBytes != nil { + if s.MaxLengthBytes.error != nil { + return nil, s.MaxLengthBytes.error + } + + if s.MaxLengthBytes.bytes > 0 { + res["max-length-bytes"] = fmt.Sprintf("%d", s.MaxLengthBytes.bytes) + } + } + + if s.MaxSegmentSizeBytes != nil { + if s.MaxSegmentSizeBytes.error != nil { + return nil, s.MaxSegmentSizeBytes.error + } + + if s.MaxSegmentSizeBytes.bytes > 0 { + res["stream-max-segment-size-bytes"] = fmt.Sprintf("%d", s.MaxSegmentSizeBytes.bytes) + } + } + + if s.MaxAge > 0 { + res["max-age"] = fmt.Sprintf("%.0fs", s.MaxAge.Seconds()) + } + return res, nil +} + +func NewStreamOptions() *StreamOptions { + return &StreamOptions{} +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go new file mode 100644 index 0000000..072f17f --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/stream_stats.go @@ -0,0 +1,50 @@ +package stream + +import "fmt" + +type StreamStats struct { + stats map[string]int64 + streamName string +} + +func newStreamStats(stats map[string]int64, streamName string) *StreamStats { + return &StreamStats{stats: stats, streamName: streamName} + +} + +// FirstOffset - The first offset in the stream. +// return first offset in the stream / +// Error if there is no first offset yet +func (s *StreamStats) FirstOffset() (int64, error) { + if s.stats["first_chunk_id"] == -1 { + return -1, fmt.Errorf("FirstOffset not found for %s", s.streamName) + } + return s.stats["first_chunk_id"], nil +} + +// Deprecated: The method name may be misleading. +// It does not indicate the last offset of the stream. It indicates the last uncommited chunk id. This information is not necessary. The user should use CommittedChunkId(). +func (s *StreamStats) LastOffset() (int64, error) { + if s.stats["last_chunk_id"] == -1 { + return -1, fmt.Errorf("LastOffset not found for %s", s.streamName) + } + return s.stats["last_chunk_id"], nil +} + +// CommittedChunkId - The ID (offset) of the committed chunk (block of messages) in the stream. +// +// It is the offset of the first message in the last chunk confirmed by a quorum of the stream +// cluster members (leader and replicas). +// +// The committed chunk ID is a good indication of what the last offset of a stream can be at a +// given time. The value can be stale as soon as the application reads it though, as the committed +// chunk ID for a stream that is published to changes all the time. +// +// return committed offset in this stream +// Error if there is no committed chunk yet +func (s *StreamStats) CommittedChunkId() (int64, error) { + if s.stats["committed_chunk_id"] == -1 { + return -1, fmt.Errorf("CommittedChunkId not found for %s", s.streamName) + } + return s.stats["committed_chunk_id"], nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go new file mode 100644 index 0000000..a217c0e --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream.go @@ -0,0 +1,180 @@ +package stream + +import ( + "fmt" + "time" +) + +//public TimeSpan MaxAge +//{ +//set => Args["max-age"] = $"{value.TotalSeconds}s"; +//} +// +//public ulong MaxLengthBytes +//{ +//set => Args["max-length-bytes"] = $"{value}"; +//} +// +//public LeaderLocator LeaderLocator +//{ +//set => Args["queue-leader-locator"] = $"{value.ToString()}"; +//} +// +//public int MaxSegmentSizeBytes +//{ +//set => Args["stream-max-segment-size-bytes"] = $"{value}"; +//} + +const maxAge = "max-age" +const maxLengthBytes = "max-length-bytes" +const queueLeaderLocator = "queue-leader-locator" +const streamMaxSegmentSizeBytes = "stream-max-segment-size-bytes" + +type SuperStreamOptions interface { + getPartitions(prefix string) []string + getBindingKeys() []string + getArgs() map[string]string +} + +type PartitionsOptions struct { + Partitions int + MaxAge time.Duration + MaxLengthBytes *ByteCapacity + MaxSegmentSizeBytes *ByteCapacity + LeaderLocator string + args map[string]string +} + +func NewPartitionsOptions(partitions int) *PartitionsOptions { + return &PartitionsOptions{ + Partitions: partitions, + args: make(map[string]string), + } +} + +func (t *PartitionsOptions) SetMaxAge(maxAge time.Duration) *PartitionsOptions { + t.MaxAge = maxAge + return t +} + +func (t *PartitionsOptions) SetMaxLengthBytes(maxLengthBytes *ByteCapacity) *PartitionsOptions { + t.MaxLengthBytes = maxLengthBytes + return t +} + +func (t *PartitionsOptions) SetMaxSegmentSizeBytes(maxSegmentSizeBytes *ByteCapacity) *PartitionsOptions { + t.MaxSegmentSizeBytes = maxSegmentSizeBytes + return t +} + +func (t *PartitionsOptions) SetBalancedLeaderLocator() *PartitionsOptions { + t.LeaderLocator = LeaderLocatorBalanced + return t +} + +func (t *PartitionsOptions) SetClientLocalLocator() *PartitionsOptions { + t.LeaderLocator = LeaderLocatorClientLocal + return t +} + +func (t *PartitionsOptions) getPartitions(prefix string) []string { + var partitions []string + for i := 0; i < t.Partitions; i++ { + partitions = append(partitions, fmt.Sprintf("%s-%d", prefix, i)) + + } + return partitions +} + +func (t *PartitionsOptions) getBindingKeys() []string { + var bindingKeys []string + for i := 0; i < t.Partitions; i++ { + bindingKeys = append(bindingKeys, fmt.Sprintf("%d", i)) + } + return bindingKeys +} + +func (t *PartitionsOptions) getArgs() map[string]string { + if t.MaxAge > 0 { + t.args[maxAge] = fmt.Sprintf("%ds", int(t.MaxAge.Seconds())) + } + if t.MaxLengthBytes != nil { + t.args[maxLengthBytes] = fmt.Sprintf("%d", t.MaxLengthBytes.bytes) + } + if t.MaxSegmentSizeBytes != nil { + t.args[streamMaxSegmentSizeBytes] = fmt.Sprintf("%d", t.MaxSegmentSizeBytes.bytes) + } + if t.LeaderLocator != "" { + t.args[queueLeaderLocator] = t.LeaderLocator + } + return t.args +} + +type BindingsOptions struct { + Bindings []string + MaxAge time.Duration + MaxLengthBytes *ByteCapacity + MaxSegmentSizeBytes *ByteCapacity + LeaderLocator string + args map[string]string +} + +func NewBindingsOptions(bindings []string) *BindingsOptions { + return &BindingsOptions{ + Bindings: bindings, + args: make(map[string]string), + } +} + +func (t *BindingsOptions) SetMaxAge(maxAge time.Duration) *BindingsOptions { + t.MaxAge = maxAge + return t +} + +func (t *BindingsOptions) SetMaxLengthBytes(maxLengthBytes *ByteCapacity) *BindingsOptions { + t.MaxLengthBytes = maxLengthBytes + return t +} + +func (t *BindingsOptions) SetMaxSegmentSizeBytes(maxSegmentSizeBytes *ByteCapacity) *BindingsOptions { + t.MaxSegmentSizeBytes = maxSegmentSizeBytes + return t +} + +func (t *BindingsOptions) SetBalancedLeaderLocator() *BindingsOptions { + t.LeaderLocator = LeaderLocatorBalanced + return t +} + +func (t *BindingsOptions) SetClientLocalLocator() *BindingsOptions { + t.LeaderLocator = LeaderLocatorClientLocal + return t +} + +func (t *BindingsOptions) getPartitions(prefix string) []string { + var partitions []string + for _, bindingKey := range t.Bindings { + partitions = append(partitions, fmt.Sprintf("%s-%s", prefix, bindingKey)) + } + return partitions +} + +func (t *BindingsOptions) getBindingKeys() []string { + return t.Bindings +} + +func (t *BindingsOptions) getArgs() map[string]string { + if t.MaxAge > 0 { + t.args[maxAge] = fmt.Sprintf("%ds", int(t.MaxAge.Seconds())) + } + if t.MaxLengthBytes != nil { + t.args[maxLengthBytes] = fmt.Sprintf("%d", t.MaxLengthBytes.bytes) + } + if t.MaxSegmentSizeBytes != nil { + t.args[streamMaxSegmentSizeBytes] = fmt.Sprintf("%d", t.MaxSegmentSizeBytes.bytes) + } + if t.LeaderLocator != "" { + t.args[queueLeaderLocator] = t.LeaderLocator + } + return t.args +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go new file mode 100644 index 0000000..ea2c9c2 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_consumer.go @@ -0,0 +1,270 @@ +package stream + +import ( + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "sync" + "time" +) + +type SuperStreamConsumerOptions struct { + ClientProvidedName string + Offset OffsetSpecification + Filter *ConsumerFilter + SingleActiveConsumer *SingleActiveConsumer + ConsumerName string + AutoCommitStrategy *AutoCommitStrategy + Autocommit bool +} + +func NewSuperStreamConsumerOptions() *SuperStreamConsumerOptions { + return &SuperStreamConsumerOptions{ + Offset: OffsetSpecification{}.Next(), + Autocommit: false, + } +} + +func (s *SuperStreamConsumerOptions) SetClientProvidedName(clientProvidedName string) *SuperStreamConsumerOptions { + s.ClientProvidedName = clientProvidedName + return s +} + +func (s *SuperStreamConsumerOptions) SetOffset(offset OffsetSpecification) *SuperStreamConsumerOptions { + s.Offset = offset + return s +} + +func (s *SuperStreamConsumerOptions) SetSingleActiveConsumer(singleActiveConsumer *SingleActiveConsumer) *SuperStreamConsumerOptions { + s.SingleActiveConsumer = singleActiveConsumer + return s +} + +func (s *SuperStreamConsumerOptions) SetFilter(filter *ConsumerFilter) *SuperStreamConsumerOptions { + s.Filter = filter + return s +} + +func (s *SuperStreamConsumerOptions) SetConsumerName(consumerName string) *SuperStreamConsumerOptions { + s.ConsumerName = consumerName + return s +} + +func (s *SuperStreamConsumerOptions) SetAutoCommit(autoCommitStrategy *AutoCommitStrategy) *SuperStreamConsumerOptions { + s.Autocommit = true + s.AutoCommitStrategy = autoCommitStrategy + return s +} + +func (s *SuperStreamConsumerOptions) SetManualCommit() *SuperStreamConsumerOptions { + s.Autocommit = false + return s +} + +// CPartitionClose is a struct that is used to notify the user when a partition from a consumer is closed +// The user can use the NotifyPartitionClose to get the channel +type CPartitionClose struct { + Partition string + Event Event + Context CPartitionContext +} + +// CPartitionContext is an interface that is used to expose partition information and methods +// to the user. The user can use the CPartitionContext to reconnect a partition to the SuperStreamConsumer +// Specifying the offset to start from +type CPartitionContext interface { + ConnectPartition(partition string, offset OffsetSpecification) error +} + +type SuperStreamConsumer struct { + // Only the active consumers are stored here + activeConsumers []*Consumer + // we need to copy the partitions here since the + //activeConsumers is only the consumers active + // in a normal situation len(partitions) == len(consumers) + // but in case of disconnection the len(partitions) can be > len(consumers) + // since the consumer is in reconnection + partitions []string + env *Environment + mutex sync.Mutex + chSuperStreamPartitionClose chan CPartitionClose + + SuperStream string + SuperStreamConsumerOptions *SuperStreamConsumerOptions + MessagesHandler MessagesHandler +} + +func newSuperStreamConsumer(env *Environment, superStream string, MessagesHandler MessagesHandler, superStreamConsumerOptions *SuperStreamConsumerOptions) (*SuperStreamConsumer, error) { + + if env == nil { + return nil, ErrEnvironmentNotDefined + } + + if superStreamConsumerOptions == nil { + return nil, ErrSuperStreamConsumerOptionsNotDefined + } + + if superStream == "" || containsOnlySpaces(superStream) { + return nil, fmt.Errorf("super Stream Name can't be empty") + } + + logs.LogDebug("Creating a SuperStreamConsumer for: %s", superStream) + + return &SuperStreamConsumer{ + env: env, + SuperStream: superStream, + SuperStreamConsumerOptions: superStreamConsumerOptions, + MessagesHandler: MessagesHandler, + }, nil +} + +func (s *SuperStreamConsumer) init() error { + partitions, err := s.env.QueryPartitions(s.SuperStream) + s.partitions = partitions + if err != nil { + return err + } + for _, p := range partitions { + err = s.ConnectPartition(p, s.SuperStreamConsumerOptions.Offset) + if err != nil { + return err + } + } + return nil +} + +// NotifyPartitionClose returns a channel that will be notified when a partition is closed +// Event will give the reason of the close +// size is the size of the channel +func (s *SuperStreamConsumer) NotifyPartitionClose(size int) chan CPartitionClose { + ch := make(chan CPartitionClose, size) + s.chSuperStreamPartitionClose = ch + return ch +} + +func (s *SuperStreamConsumer) getConsumers() []*Consumer { + s.mutex.Lock() + defer s.mutex.Unlock() + return s.activeConsumers +} + +func (s *SuperStreamConsumer) ConnectPartition(partition string, offset OffsetSpecification) error { + logs.LogDebug("[SuperStreamConsumer] ConnectPartition for partition: %s", partition) + s.mutex.Lock() + found := false + for _, p := range s.partitions { + if p == partition { + found = true + break + } + } + if !found { + s.mutex.Unlock() + return fmt.Errorf("partition %s not found in the super stream %s", partition, s.SuperStream) + } + for _, consumer := range s.activeConsumers { + if consumer.GetStreamName() == partition { + s.mutex.Unlock() + return fmt.Errorf("consumer already connected to: %s partition ", partition) + } + } + s.mutex.Unlock() + var options = NewConsumerOptions().SetOffset(offset) + if s.SuperStreamConsumerOptions.ClientProvidedName != "" { + options = options.SetClientProvidedName(s.SuperStreamConsumerOptions.ClientProvidedName) + } + + options = options.SetFilter(s.SuperStreamConsumerOptions.Filter) + + if s.SuperStreamConsumerOptions.Autocommit { + options = options.SetAutoCommit(s.SuperStreamConsumerOptions.AutoCommitStrategy) + } else { + options = options.SetManualCommit() + } + + if s.SuperStreamConsumerOptions.SingleActiveConsumer != nil { + // mandatory to enable the super stream consumer + // we need to create a new SAC for each consumer since we need to store: `offsetSpecification OffsetSpecification` + // differently. We can leave the ConsumerUpdate pointer to be the same for all the consumers. + // ConsumerUpdate contains all the info to work alone + sacForConsumer := + newSingleActiveConsumerWithAllParameters( + s.SuperStreamConsumerOptions.SingleActiveConsumer.ConsumerUpdate, + s.SuperStreamConsumerOptions.SingleActiveConsumer.Enabled, + s.SuperStream) + options = options.SetSingleActiveConsumer(sacForConsumer) + } + + // set the same handler for all the partitions + // with consumerContext.Consumer.GetStreamName() it is possible to know the partition + // and to handle the message in a different way + // s.MessagesHandler is not mandatory even if it is a good practice to set it + messagesHandler := func(consumerContext ConsumerContext, message *amqp.Message) { + if s.MessagesHandler != nil { + s.MessagesHandler(consumerContext, message) + } else { + logs.LogWarn("[SuperStreamConsumer] No handler set for partition: %s", consumerContext.Consumer.GetStreamName()) + } + } + consumer, err := s.env.NewConsumer(partition, messagesHandler, + options.SetConsumerName(s.SuperStreamConsumerOptions.ConsumerName)) + if err != nil { + return err + } + s.mutex.Lock() + s.activeConsumers = append(s.activeConsumers, consumer) + closedEvent := consumer.NotifyClose() + s.mutex.Unlock() + + go func(gpartion string, _closedEvent <-chan Event) { + logs.LogDebug("[SuperStreamConsumer] chSuperStreamPartitionClose started for partition: %s", gpartion) + // one shot event + event := <-_closedEvent + s.mutex.Lock() + for i := range s.activeConsumers { + if s.activeConsumers[i].GetStreamName() == gpartion { + s.activeConsumers = append(s.activeConsumers[:i], s.activeConsumers[i+1:]...) + break + } + } + s.mutex.Unlock() + if s.chSuperStreamPartitionClose != nil { + s.mutex.Lock() + s.chSuperStreamPartitionClose <- CPartitionClose{ + Partition: gpartion, + Event: event, + Context: s, + } + s.mutex.Unlock() + } + logs.LogDebug("[SuperStreamConsumer] chSuperStreamPartitionClose for partition: %s", gpartion) + }(partition, closedEvent) + + return nil +} + +func (s *SuperStreamConsumer) Close() error { + logs.LogDebug("[SuperStreamConsumer] Closing SuperStreamConsumer for: %s", s.SuperStream) + s.mutex.Lock() + defer s.mutex.Unlock() + for len(s.activeConsumers) > 0 { + err := s.activeConsumers[0].Close() + if err != nil { + return err + } + s.activeConsumers = s.activeConsumers[1:] + } + + // give the time to raise the close event + go func() { + time.Sleep(2 * time.Second) + s.mutex.Lock() + if s.chSuperStreamPartitionClose != nil { + close(s.chSuperStreamPartitionClose) + } + s.mutex.Unlock() + }() + + logs.LogDebug("[SuperStreamConsumer] Closed SuperStreamConsumer for: %s", s.SuperStream) + return nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go new file mode 100644 index 0000000..47fe89c --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/super_stream_producer.go @@ -0,0 +1,416 @@ +package stream + +import ( + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message" + "github.com/spaolacci/murmur3" + "sync" + "time" +) + +// The base interface for routing strategies +// The client is shipped with two routing strategies: +// - HashRoutingStrategy +// - KeyRoutingStrategy +// The user can implement its own routing strategy by implementing this interface. +// In most of the cases these two strategies are enough. +// See the test: Implement custom routing strategy in case you need to implement a custom routing strategy + +type RoutingStrategy interface { + //Route Based on the message and the partitions the routing strategy returns the partitions where the message should be sent + // It could be zero, one or more partitions + Route(message message.StreamMessage, partitions []string) ([]string, error) + + // SetRouteParameters is useful for the routing key strategies to set the query route function + // or in general to set the parameters needed by the routing strategy + SetRouteParameters(superStream string, queryRoute func(superStream string, routingKey string) ([]string, error)) +} + +// HashRoutingMurmurStrategy is a routing strategy that uses the murmur3 hash function + +// DON'T Touch this value. It makes the hash compatible with the Java/.Net/Python client + +const SEED = 104729 + +type HashRoutingStrategy struct { + RoutingKeyExtractor func(message message.StreamMessage) string +} + +func NewHashRoutingStrategy(routingKeyExtractor func(message message.StreamMessage) string) *HashRoutingStrategy { + return &HashRoutingStrategy{ + RoutingKeyExtractor: routingKeyExtractor, + } +} + +func (h *HashRoutingStrategy) Route(message message.StreamMessage, partitions []string) ([]string, error) { + + key := h.RoutingKeyExtractor(message) + murmurHash := murmur3.New32WithSeed(SEED) + _, _ = murmurHash.Write([]byte(key)) + murmurHash.Sum32() + index := murmurHash.Sum32() % uint32(len(partitions)) + return []string{partitions[index]}, nil +} +func (h *HashRoutingStrategy) SetRouteParameters(_ string, _ func(superStream string, routingKey string) ([]string, error)) { +} + +// end of HashRoutingMurmurStrategy + +// KeyRoutingStrategy is a routing strategy that uses the key of the message +type KeyRoutingStrategy struct { + // provided by the user to define the key based on a message + RoutingKeyExtractor func(message message.StreamMessage) string + + queryRoute func(superStream string, routingKey string) ([]string, error) + superStream string + cacheRouting map[string][]string +} + +func NewKeyRoutingStrategy( + routingKeyExtractor func(message message.StreamMessage) string) *KeyRoutingStrategy { + return &KeyRoutingStrategy{ + RoutingKeyExtractor: routingKeyExtractor, + cacheRouting: make(map[string][]string), + } +} + +func (k *KeyRoutingStrategy) SetRouteParameters(superStream string, queryRoute func(superStream string, routingKey string) ([]string, error)) { + k.superStream = superStream + k.queryRoute = queryRoute +} + +func (k *KeyRoutingStrategy) Route(message message.StreamMessage, partitions []string) ([]string, error) { + key := k.RoutingKeyExtractor(message) + var routing []string + // check if the routing is already in cache. + // Cache is useful to avoid multiple queries for the same key + // so only the first message with a key will be queried + if k.cacheRouting[key] != nil { + routing = append(routing, k.cacheRouting[key]...) + } else { + r, err := k.queryRoute(k.superStream, key) + if err != nil { + return nil, err + } + routing = append(routing, r...) + k.cacheRouting[key] = routing + } + + for _, p := range partitions { + for _, r := range routing { + if r == p { + return []string{p}, nil + } + } + } + + // The message is not routed since does not have a partition based on the key + // It can happen if the key selected is not in the routing table + // differently from the hash strategy the key strategy can have zero partitions + return nil, ErrMessageRouteNotFound +} + +// end of KeyRoutingStrategy + +type SuperStreamProducerOptions struct { + RoutingStrategy RoutingStrategy + ClientProvidedName string + Filter *ProducerFilter // Enable the filter feature, by default is disabled. Pointer nil +} + +// NewSuperStreamProducerOptions creates a new SuperStreamProducerOptions +// The RoutingStrategy is mandatory +func NewSuperStreamProducerOptions(routingStrategy RoutingStrategy) *SuperStreamProducerOptions { + return &SuperStreamProducerOptions{ + RoutingStrategy: routingStrategy, + } +} + +func (o SuperStreamProducerOptions) SetClientProvidedName(clientProvidedName string) *SuperStreamProducerOptions { + o.ClientProvidedName = clientProvidedName + return &o +} + +func (o SuperStreamProducerOptions) SetFilter(filter *ProducerFilter) *SuperStreamProducerOptions { + o.Filter = filter + return &o +} + +// PartitionPublishConfirm is a struct that is used to notify the user when a message is confirmed or not per partition +// The user can use the NotifyPublishConfirmation to get the channel +type PartitionPublishConfirm struct { + Partition string + ConfirmationStatus []*ConfirmationStatus +} + +// PPartitionClose is a struct that is used to notify the user when a partition from a producer is closed +// The user can use the NotifyPartitionClose to get the channel +type PPartitionClose struct { + Partition string + Event Event + Context PPartitionContext +} + +// PPartitionContext is an interface that is used to expose partition information and methods +// to the user. The user can use the PPartitionContext to reconnect a partition to the SuperStreamProducer +type PPartitionContext interface { + ConnectPartition(partition string) error +} + +type SuperStreamProducer struct { + // Only the active producers are stored here + activeProducers []*Producer + // we need to copy the partitions here since the + //activeProducers is only the producers active + // in a normal situation len(partitions) == len(activeProducers) + // but in case of disconnection the len(partitions) can be > len(activeProducers) + // since the producer is in reconnection + partitions []string + + env *Environment + mutex sync.Mutex + chNotifyPublishConfirmation chan PartitionPublishConfirm + chSuperStreamPartitionClose chan PPartitionClose + + // public + SuperStream string + SuperStreamProducerOptions *SuperStreamProducerOptions +} + +func newSuperStreamProducer(env *Environment, superStream string, superStreamProducerOptions *SuperStreamProducerOptions) (*SuperStreamProducer, error) { + + if env == nil { + return nil, ErrEnvironmentNotDefined + } + + if superStreamProducerOptions == nil { + return nil, ErrSuperStreamProducerOptionsNotDefined + } + + if superStreamProducerOptions.RoutingStrategy == nil { + return nil, ErrSuperStreamProducerOptionsNotDefined + } + + if superStream == "" || containsOnlySpaces(superStream) { + + return nil, fmt.Errorf("super Stream Name can't be empty") + } + + logs.LogDebug("Creating a SuperStreamProducer for: %s", superStream) + return &SuperStreamProducer{ + activeProducers: make([]*Producer, 0), + env: env, + SuperStream: superStream, + SuperStreamProducerOptions: superStreamProducerOptions, + mutex: sync.Mutex{}, + }, nil +} + +func (s *SuperStreamProducer) init() error { + // set the routing strategy parameters + s.SuperStreamProducerOptions.RoutingStrategy.SetRouteParameters(s.SuperStream, s.env.QueryRoute) + + partitions, err := s.env.QueryPartitions(s.SuperStream) + s.partitions = partitions + if err != nil { + return err + } + for _, p := range partitions { + err = s.ConnectPartition(p) + if err != nil { + return err + } + } + return nil +} + +// ConnectPartition connects a partition to the SuperStreamProducer part of PPartitionContext interface +// The super stream producer is a producer that can send messages to multiple partitions +// that are hidden to the user. +// with the ConnectPartition the user can re-connect a partition to the SuperStreamProducer +// that should be used only in case of disconnection +func (s *SuperStreamProducer) ConnectPartition(partition string) error { + logs.LogDebug("[SuperStreamProducer] ConnectPartition for partition: %s", partition) + + s.mutex.Lock() + found := false + for _, p := range s.partitions { + if p == partition { + found = true + break + } + } + if !found { + s.mutex.Unlock() + return fmt.Errorf("partition %s not found in the super stream %s", partition, s.SuperStream) + } + for _, producer := range s.activeProducers { + if producer.GetStreamName() == partition { + s.mutex.Unlock() + return fmt.Errorf("producer already connected to: %s partition ", partition) + } + } + + s.mutex.Unlock() + var options = NewProducerOptions() + if s.SuperStreamProducerOptions.ClientProvidedName != "" { + options.ClientProvidedName = s.SuperStreamProducerOptions.ClientProvidedName + } + options = options.SetFilter(s.SuperStreamProducerOptions.Filter) + + producer, err := s.env.NewProducer(partition, options) + if err != nil { + return err + } + s.mutex.Lock() + s.activeProducers = append(s.activeProducers, producer) + chSingleStreamPublishConfirmation := producer.NotifyPublishConfirmation() + closedEvent := producer.NotifyClose() + s.mutex.Unlock() + + go func(gpartion string, _closedEvent <-chan Event) { + logs.LogDebug("[SuperStreamProducer] chSuperStreamPartitionClose started for partition: %s", gpartion) + event := <-_closedEvent + + s.mutex.Lock() + for i := range s.activeProducers { + if s.activeProducers[i].GetStreamName() == gpartion { + s.activeProducers = append(s.activeProducers[:i], s.activeProducers[i+1:]...) + break + } + } + s.mutex.Unlock() + if s.chSuperStreamPartitionClose != nil { + s.mutex.Lock() + s.chSuperStreamPartitionClose <- PPartitionClose{ + Partition: gpartion, + Event: event, + Context: s, + } + s.mutex.Unlock() + } + logs.LogDebug("[SuperStreamProducer] chSuperStreamPartitionClose for partition: %s", gpartion) + }(partition, closedEvent) + + go func(gpartion string, ch <-chan []*ConfirmationStatus) { + logs.LogDebug("[SuperStreamProducer] chNotifyPublishConfirmation started - partition: %s", gpartion) + for confirmed := range ch { + if s.chNotifyPublishConfirmation != nil { + s.chNotifyPublishConfirmation <- PartitionPublishConfirm{ + Partition: gpartion, + ConfirmationStatus: confirmed, + } + + } + } + logs.LogDebug("[SuperStreamProducer] chNotifyPublishConfirmation closed - partition: %s", gpartion) + }(partition, chSingleStreamPublishConfirmation) + + return nil +} + +// NotifyPublishConfirmation returns a channel that will be notified when a message is confirmed or not per partition +// size is the size of the channel +func (s *SuperStreamProducer) NotifyPublishConfirmation(size int) chan PartitionPublishConfirm { + ch := make(chan PartitionPublishConfirm, size) + s.chNotifyPublishConfirmation = ch + return ch +} + +// NotifyPartitionClose returns a channel that will be notified when a partition is closed +// Event will give the reason of the close +// size is the size of the channel +func (s *SuperStreamProducer) NotifyPartitionClose(size int) chan PPartitionClose { + ch := make(chan PPartitionClose, size) + s.chSuperStreamPartitionClose = ch + return ch +} + +func (s *SuperStreamProducer) GetPartitions() []string { + s.mutex.Lock() + defer s.mutex.Unlock() + return s.partitions +} + +func (s *SuperStreamProducer) getProducer(partition string) *Producer { + s.mutex.Lock() + defer s.mutex.Unlock() + for _, p := range s.activeProducers { + if p.GetStreamName() == partition { + return p + } + } + return nil +} + +func (s *SuperStreamProducer) getProducers() []*Producer { + s.mutex.Lock() + defer s.mutex.Unlock() + return s.activeProducers +} + +// Send sends a message to the partitions based on the routing strategy +func (s *SuperStreamProducer) Send(message message.StreamMessage) error { + b, err := message.MarshalBinary() + if err != nil { + return err + } + + ps, err := s.SuperStreamProducerOptions.RoutingStrategy.Route(message, s.GetPartitions()) + + // the routing strategy can return zero partitions + // in case the message is not routed. It can happen when the strategy is based on the key + // it can return ErrMessageRouteNotFound + if err != nil { + return err + } + + for _, p := range ps { + producer := s.getProducer(p) + if producer == nil { + // the producer is not. It can happen if the tcp connection for the partition is dropped + // the user can reconnect the partition using the ConnectPartition + // The client returns an error. Even there could be other partitions where the message can be sent. + // but won't to that to break the expectation of the user. The routing should be always the same + // for the same message. The user has to handle the error and decide to send the message again + return ErrProducerNotFound + } + + err = producer.sendBytes(message, b) + if err != nil { + return err + } + } + return nil +} + +func (s *SuperStreamProducer) Close() error { + logs.LogDebug("[SuperStreamProducer] Closing a SuperStreamProducer for: %s", s.SuperStream) + s.mutex.Lock() + defer s.mutex.Unlock() + for len(s.activeProducers) > 0 { + err := s.activeProducers[0].Close() + if err != nil { + return err + } + s.activeProducers = s.activeProducers[1:] + } + + // give the time to raise the close event + go func() { + time.Sleep(2 * time.Second) + s.mutex.Lock() + if s.chNotifyPublishConfirmation != nil { + close(s.chNotifyPublishConfirmation) + s.chNotifyPublishConfirmation = nil + } + if s.chSuperStreamPartitionClose != nil { + close(s.chSuperStreamPartitionClose) + s.chSuperStreamPartitionClose = nil + } + s.mutex.Unlock() + }() + logs.LogDebug("[SuperStreamProducer] Closed SuperStreamProducer for: %s", s.SuperStream) + return nil +} diff --git a/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go new file mode 100644 index 0000000..c62b889 --- /dev/null +++ b/examples/go/vendor/github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream/utils.go @@ -0,0 +1,59 @@ +package stream + +import ( + "fmt" + "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs" + "strings" + "time" +) + +type responseError struct { + Err error + isTimeout bool +} + +func newResponseError(err error, timeout bool) responseError { + return responseError{ + Err: err, + isTimeout: timeout, + } +} + +func uShortExtractResponseCode(code uint16) uint16 { + return code & 0b0111_1111_1111_1111 +} + +//func UIntExtractResponseCode(code int32) int32 { +// return code & 0b0111_1111_1111_1111 +//} + +func uShortEncodeResponseCode(code uint16) uint16 { + return code | 0b1000_0000_0000_0000 +} + +func waitCodeWithDefaultTimeOut(response *Response) responseError { + return waitCodeWithTimeOut(response, defaultSocketCallTimeout) +} +func waitCodeWithTimeOut(response *Response, timeout time.Duration) responseError { + select { + case code := <-response.code: + if code.id != responseCodeOk { + return newResponseError(lookErrorCode(code.id), false) + } + return newResponseError(nil, false) + case <-time.After(timeout): + logs.LogError("timeout %d ns - waiting Code, operation: %s", timeout.Milliseconds(), response.commandDescription) + + return newResponseError( + fmt.Errorf("timeout %d ms - waiting Code, operation: %s ", + timeout.Milliseconds(), response.commandDescription), true) + } +} + +func SetLevelInfo(value int8) { + logs.LogLevel = value +} + +func containsOnlySpaces(input string) bool { + return len(input) > 0 && len(strings.TrimSpace(input)) == 0 +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/.gitignore b/examples/go/vendor/github.com/spaolacci/murmur3/.gitignore new file mode 100644 index 0000000..0026861 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/.gitignore @@ -0,0 +1,22 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml b/examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml new file mode 100644 index 0000000..9bfca9c --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/.travis.yml @@ -0,0 +1,7 @@ +language: go + +go: + - 1.x + - master + +script: go test diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/LICENSE b/examples/go/vendor/github.com/spaolacci/murmur3/LICENSE new file mode 100644 index 0000000..2a46fd7 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/LICENSE @@ -0,0 +1,24 @@ +Copyright 2013, Sébastien Paolacci. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the library nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/README.md b/examples/go/vendor/github.com/spaolacci/murmur3/README.md new file mode 100644 index 0000000..e463678 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/README.md @@ -0,0 +1,86 @@ +murmur3 +======= + +[![Build Status](https://travis-ci.org/spaolacci/murmur3.svg?branch=master)](https://travis-ci.org/spaolacci/murmur3) + +Native Go implementation of Austin Appleby's third MurmurHash revision (aka +MurmurHash3). + +Reference algorithm has been slightly hacked as to support the streaming mode +required by Go's standard [Hash interface](http://golang.org/pkg/hash/#Hash). + + +Benchmarks +---------- + +Go tip as of 2014-06-12 (i.e almost go1.3), core i7 @ 3.4 Ghz. All runs +include hasher instantiation and sequence finalization. + +
                +
                +Benchmark32_1        500000000     7.69 ns/op      130.00 MB/s
                +Benchmark32_2        200000000     8.83 ns/op      226.42 MB/s
                +Benchmark32_4        500000000     7.99 ns/op      500.39 MB/s
                +Benchmark32_8        200000000     9.47 ns/op      844.69 MB/s
                +Benchmark32_16       100000000     12.1 ns/op     1321.61 MB/s
                +Benchmark32_32       100000000     18.3 ns/op     1743.93 MB/s
                +Benchmark32_64        50000000     30.9 ns/op     2071.64 MB/s
                +Benchmark32_128       50000000     57.6 ns/op     2222.96 MB/s
                +Benchmark32_256       20000000      116 ns/op     2188.60 MB/s
                +Benchmark32_512       10000000      226 ns/op     2260.59 MB/s
                +Benchmark32_1024       5000000      452 ns/op     2263.73 MB/s
                +Benchmark32_2048       2000000      891 ns/op     2296.02 MB/s
                +Benchmark32_4096       1000000     1787 ns/op     2290.92 MB/s
                +Benchmark32_8192        500000     3593 ns/op     2279.68 MB/s
                +Benchmark128_1       100000000     26.1 ns/op       38.33 MB/s
                +Benchmark128_2       100000000     29.0 ns/op       69.07 MB/s
                +Benchmark128_4        50000000     29.8 ns/op      134.17 MB/s
                +Benchmark128_8        50000000     31.6 ns/op      252.86 MB/s
                +Benchmark128_16      100000000     26.5 ns/op      603.42 MB/s
                +Benchmark128_32      100000000     28.6 ns/op     1117.15 MB/s
                +Benchmark128_64       50000000     35.5 ns/op     1800.97 MB/s
                +Benchmark128_128      50000000     50.9 ns/op     2515.50 MB/s
                +Benchmark128_256      20000000     76.9 ns/op     3330.11 MB/s
                +Benchmark128_512      20000000      135 ns/op     3769.09 MB/s
                +Benchmark128_1024     10000000      250 ns/op     4094.38 MB/s
                +Benchmark128_2048      5000000      477 ns/op     4290.75 MB/s
                +Benchmark128_4096      2000000      940 ns/op     4353.29 MB/s
                +Benchmark128_8192      1000000     1838 ns/op     4455.47 MB/s
                +
                +
                + + +
                +
                +benchmark              Go1.0 MB/s    Go1.1 MB/s  speedup    Go1.2 MB/s  speedup    Go1.3 MB/s  speedup
                +Benchmark32_1               98.90        118.59    1.20x        114.79    0.97x        130.00    1.13x
                +Benchmark32_2              168.04        213.31    1.27x        210.65    0.99x        226.42    1.07x
                +Benchmark32_4              414.01        494.19    1.19x        490.29    0.99x        500.39    1.02x
                +Benchmark32_8              662.19        836.09    1.26x        836.46    1.00x        844.69    1.01x
                +Benchmark32_16             917.46       1304.62    1.42x       1297.63    0.99x       1321.61    1.02x
                +Benchmark32_32            1141.93       1737.54    1.52x       1728.24    0.99x       1743.93    1.01x
                +Benchmark32_64            1289.47       2039.51    1.58x       2038.20    1.00x       2071.64    1.02x
                +Benchmark32_128           1299.23       2097.63    1.61x       2177.13    1.04x       2222.96    1.02x
                +Benchmark32_256           1369.90       2202.34    1.61x       2213.15    1.00x       2188.60    0.99x
                +Benchmark32_512           1399.56       2255.72    1.61x       2264.49    1.00x       2260.59    1.00x
                +Benchmark32_1024          1410.90       2285.82    1.62x       2270.99    0.99x       2263.73    1.00x
                +Benchmark32_2048          1422.14       2297.62    1.62x       2269.59    0.99x       2296.02    1.01x
                +Benchmark32_4096          1420.53       2307.81    1.62x       2273.43    0.99x       2290.92    1.01x
                +Benchmark32_8192          1424.79       2312.87    1.62x       2286.07    0.99x       2279.68    1.00x
                +Benchmark128_1               8.32         30.15    3.62x         30.84    1.02x         38.33    1.24x
                +Benchmark128_2              16.38         59.72    3.65x         59.37    0.99x         69.07    1.16x
                +Benchmark128_4              32.26        112.96    3.50x        114.24    1.01x        134.17    1.17x
                +Benchmark128_8              62.68        217.88    3.48x        218.18    1.00x        252.86    1.16x
                +Benchmark128_16            128.47        451.57    3.51x        474.65    1.05x        603.42    1.27x
                +Benchmark128_32            246.18        910.42    3.70x        871.06    0.96x       1117.15    1.28x
                +Benchmark128_64            449.05       1477.64    3.29x       1449.24    0.98x       1800.97    1.24x
                +Benchmark128_128           762.61       2222.42    2.91x       2217.30    1.00x       2515.50    1.13x
                +Benchmark128_256          1179.92       3005.46    2.55x       2931.55    0.98x       3330.11    1.14x
                +Benchmark128_512          1616.51       3590.75    2.22x       3592.08    1.00x       3769.09    1.05x
                +Benchmark128_1024         1964.36       3979.67    2.03x       4034.01    1.01x       4094.38    1.01x
                +Benchmark128_2048         2225.07       4156.93    1.87x       4244.17    1.02x       4290.75    1.01x
                +Benchmark128_4096         2360.15       4299.09    1.82x       4392.35    1.02x       4353.29    0.99x
                +Benchmark128_8192         2411.50       4356.84    1.81x       4480.68    1.03x       4455.47    0.99x
                +
                +
                + diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur.go new file mode 100644 index 0000000..1252cf7 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur.go @@ -0,0 +1,64 @@ +// Copyright 2013, Sébastien Paolacci. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package murmur3 implements Austin Appleby's non-cryptographic MurmurHash3. + + Reference implementation: + http://code.google.com/p/smhasher/wiki/MurmurHash3 + + History, characteristics and (legacy) perfs: + https://sites.google.com/site/murmurhash/ + https://sites.google.com/site/murmurhash/statistics +*/ +package murmur3 + +type bmixer interface { + bmix(p []byte) (tail []byte) + Size() (n int) + reset() +} + +type digest struct { + clen int // Digested input cumulative length. + tail []byte // 0 to Size()-1 bytes view of `buf'. + buf [16]byte // Expected (but not required) to be Size() large. + seed uint32 // Seed for initializing the hash. + bmixer +} + +func (d *digest) BlockSize() int { return 1 } + +func (d *digest) Write(p []byte) (n int, err error) { + n = len(p) + d.clen += n + + if len(d.tail) > 0 { + // Stick back pending bytes. + nfree := d.Size() - len(d.tail) // nfree ∈ [1, d.Size()-1]. + if nfree < len(p) { + // One full block can be formed. + block := append(d.tail, p[:nfree]...) + p = p[nfree:] + _ = d.bmix(block) // No tail. + } else { + // Tail's buf is large enough to prevent reallocs. + p = append(d.tail, p...) + } + } + + d.tail = d.bmix(p) + + // Keep own copy of the 0 to Size()-1 pending bytes. + nn := copy(d.buf[:], d.tail) + d.tail = d.buf[:nn] + + return n, nil +} + +func (d *digest) Reset() { + d.clen = 0 + d.tail = nil + d.bmixer.reset() +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go new file mode 100644 index 0000000..a4b618b --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur128.go @@ -0,0 +1,203 @@ +package murmur3 + +import ( + //"encoding/binary" + "hash" + "unsafe" +) + +const ( + c1_128 = 0x87c37b91114253d5 + c2_128 = 0x4cf5ad432745937f +) + +// Make sure interfaces are correctly implemented. +var ( + _ hash.Hash = new(digest128) + _ Hash128 = new(digest128) + _ bmixer = new(digest128) +) + +// Hash128 represents a 128-bit hasher +// Hack: the standard api doesn't define any Hash128 interface. +type Hash128 interface { + hash.Hash + Sum128() (uint64, uint64) +} + +// digest128 represents a partial evaluation of a 128 bites hash. +type digest128 struct { + digest + h1 uint64 // Unfinalized running hash part 1. + h2 uint64 // Unfinalized running hash part 2. +} + +// New128 returns a 128-bit hasher +func New128() Hash128 { return New128WithSeed(0) } + +// New128WithSeed returns a 128-bit hasher set with explicit seed value +func New128WithSeed(seed uint32) Hash128 { + d := new(digest128) + d.seed = seed + d.bmixer = d + d.Reset() + return d +} + +func (d *digest128) Size() int { return 16 } + +func (d *digest128) reset() { d.h1, d.h2 = uint64(d.seed), uint64(d.seed) } + +func (d *digest128) Sum(b []byte) []byte { + h1, h2 := d.Sum128() + return append(b, + byte(h1>>56), byte(h1>>48), byte(h1>>40), byte(h1>>32), + byte(h1>>24), byte(h1>>16), byte(h1>>8), byte(h1), + + byte(h2>>56), byte(h2>>48), byte(h2>>40), byte(h2>>32), + byte(h2>>24), byte(h2>>16), byte(h2>>8), byte(h2), + ) +} + +func (d *digest128) bmix(p []byte) (tail []byte) { + h1, h2 := d.h1, d.h2 + + nblocks := len(p) / 16 + for i := 0; i < nblocks; i++ { + t := (*[2]uint64)(unsafe.Pointer(&p[i*16])) + k1, k2 := t[0], t[1] + + k1 *= c1_128 + k1 = (k1 << 31) | (k1 >> 33) // rotl64(k1, 31) + k1 *= c2_128 + h1 ^= k1 + + h1 = (h1 << 27) | (h1 >> 37) // rotl64(h1, 27) + h1 += h2 + h1 = h1*5 + 0x52dce729 + + k2 *= c2_128 + k2 = (k2 << 33) | (k2 >> 31) // rotl64(k2, 33) + k2 *= c1_128 + h2 ^= k2 + + h2 = (h2 << 31) | (h2 >> 33) // rotl64(h2, 31) + h2 += h1 + h2 = h2*5 + 0x38495ab5 + } + d.h1, d.h2 = h1, h2 + return p[nblocks*d.Size():] +} + +func (d *digest128) Sum128() (h1, h2 uint64) { + + h1, h2 = d.h1, d.h2 + + var k1, k2 uint64 + switch len(d.tail) & 15 { + case 15: + k2 ^= uint64(d.tail[14]) << 48 + fallthrough + case 14: + k2 ^= uint64(d.tail[13]) << 40 + fallthrough + case 13: + k2 ^= uint64(d.tail[12]) << 32 + fallthrough + case 12: + k2 ^= uint64(d.tail[11]) << 24 + fallthrough + case 11: + k2 ^= uint64(d.tail[10]) << 16 + fallthrough + case 10: + k2 ^= uint64(d.tail[9]) << 8 + fallthrough + case 9: + k2 ^= uint64(d.tail[8]) << 0 + + k2 *= c2_128 + k2 = (k2 << 33) | (k2 >> 31) // rotl64(k2, 33) + k2 *= c1_128 + h2 ^= k2 + + fallthrough + + case 8: + k1 ^= uint64(d.tail[7]) << 56 + fallthrough + case 7: + k1 ^= uint64(d.tail[6]) << 48 + fallthrough + case 6: + k1 ^= uint64(d.tail[5]) << 40 + fallthrough + case 5: + k1 ^= uint64(d.tail[4]) << 32 + fallthrough + case 4: + k1 ^= uint64(d.tail[3]) << 24 + fallthrough + case 3: + k1 ^= uint64(d.tail[2]) << 16 + fallthrough + case 2: + k1 ^= uint64(d.tail[1]) << 8 + fallthrough + case 1: + k1 ^= uint64(d.tail[0]) << 0 + k1 *= c1_128 + k1 = (k1 << 31) | (k1 >> 33) // rotl64(k1, 31) + k1 *= c2_128 + h1 ^= k1 + } + + h1 ^= uint64(d.clen) + h2 ^= uint64(d.clen) + + h1 += h2 + h2 += h1 + + h1 = fmix64(h1) + h2 = fmix64(h2) + + h1 += h2 + h2 += h1 + + return h1, h2 +} + +func fmix64(k uint64) uint64 { + k ^= k >> 33 + k *= 0xff51afd7ed558ccd + k ^= k >> 33 + k *= 0xc4ceb9fe1a85ec53 + k ^= k >> 33 + return k +} + +/* +func rotl64(x uint64, r byte) uint64 { + return (x << r) | (x >> (64 - r)) +} +*/ + +// Sum128 returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New128() +// hasher.Write(data) +// return hasher.Sum128() +func Sum128(data []byte) (h1 uint64, h2 uint64) { return Sum128WithSeed(data, 0) } + +// Sum128WithSeed returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New128WithSeed(seed) +// hasher.Write(data) +// return hasher.Sum128() +func Sum128WithSeed(data []byte, seed uint32) (h1 uint64, h2 uint64) { + d := &digest128{h1: uint64(seed), h2: uint64(seed)} + d.seed = seed + d.tail = d.bmix(data) + d.clen = len(data) + return d.Sum128() +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go new file mode 100644 index 0000000..e32c995 --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur32.go @@ -0,0 +1,167 @@ +package murmur3 + +// http://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/hash/Murmur3_32HashFunction.java + +import ( + "hash" + "unsafe" +) + +// Make sure interfaces are correctly implemented. +var ( + _ hash.Hash = new(digest32) + _ hash.Hash32 = new(digest32) + _ bmixer = new(digest32) +) + +const ( + c1_32 uint32 = 0xcc9e2d51 + c2_32 uint32 = 0x1b873593 +) + +// digest32 represents a partial evaluation of a 32 bites hash. +type digest32 struct { + digest + h1 uint32 // Unfinalized running hash. +} + +// New32 returns new 32-bit hasher +func New32() hash.Hash32 { return New32WithSeed(0) } + +// New32WithSeed returns new 32-bit hasher set with explicit seed value +func New32WithSeed(seed uint32) hash.Hash32 { + d := new(digest32) + d.seed = seed + d.bmixer = d + d.Reset() + return d +} + +func (d *digest32) Size() int { return 4 } + +func (d *digest32) reset() { d.h1 = d.seed } + +func (d *digest32) Sum(b []byte) []byte { + h := d.Sum32() + return append(b, byte(h>>24), byte(h>>16), byte(h>>8), byte(h)) +} + +// Digest as many blocks as possible. +func (d *digest32) bmix(p []byte) (tail []byte) { + h1 := d.h1 + + nblocks := len(p) / 4 + for i := 0; i < nblocks; i++ { + k1 := *(*uint32)(unsafe.Pointer(&p[i*4])) + + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + + h1 ^= k1 + h1 = (h1 << 13) | (h1 >> 19) // rotl32(h1, 13) + h1 = h1*4 + h1 + 0xe6546b64 + } + d.h1 = h1 + return p[nblocks*d.Size():] +} + +func (d *digest32) Sum32() (h1 uint32) { + + h1 = d.h1 + + var k1 uint32 + switch len(d.tail) & 3 { + case 3: + k1 ^= uint32(d.tail[2]) << 16 + fallthrough + case 2: + k1 ^= uint32(d.tail[1]) << 8 + fallthrough + case 1: + k1 ^= uint32(d.tail[0]) + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + h1 ^= k1 + } + + h1 ^= uint32(d.clen) + + h1 ^= h1 >> 16 + h1 *= 0x85ebca6b + h1 ^= h1 >> 13 + h1 *= 0xc2b2ae35 + h1 ^= h1 >> 16 + + return h1 +} + +/* +func rotl32(x uint32, r byte) uint32 { + return (x << r) | (x >> (32 - r)) +} +*/ + +// Sum32 returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New32() +// hasher.Write(data) +// return hasher.Sum32() +func Sum32(data []byte) uint32 { return Sum32WithSeed(data, 0) } + +// Sum32WithSeed returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New32WithSeed(seed) +// hasher.Write(data) +// return hasher.Sum32() +func Sum32WithSeed(data []byte, seed uint32) uint32 { + + h1 := seed + + nblocks := len(data) / 4 + var p uintptr + if len(data) > 0 { + p = uintptr(unsafe.Pointer(&data[0])) + } + p1 := p + uintptr(4*nblocks) + for ; p < p1; p += 4 { + k1 := *(*uint32)(unsafe.Pointer(p)) + + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + + h1 ^= k1 + h1 = (h1 << 13) | (h1 >> 19) // rotl32(h1, 13) + h1 = h1*4 + h1 + 0xe6546b64 + } + + tail := data[nblocks*4:] + + var k1 uint32 + switch len(tail) & 3 { + case 3: + k1 ^= uint32(tail[2]) << 16 + fallthrough + case 2: + k1 ^= uint32(tail[1]) << 8 + fallthrough + case 1: + k1 ^= uint32(tail[0]) + k1 *= c1_32 + k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15) + k1 *= c2_32 + h1 ^= k1 + } + + h1 ^= uint32(len(data)) + + h1 ^= h1 >> 16 + h1 *= 0x85ebca6b + h1 ^= h1 >> 13 + h1 *= 0xc2b2ae35 + h1 ^= h1 >> 16 + + return h1 +} diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go b/examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go new file mode 100644 index 0000000..65a410a --- /dev/null +++ b/examples/go/vendor/github.com/spaolacci/murmur3/murmur64.go @@ -0,0 +1,57 @@ +package murmur3 + +import ( + "hash" +) + +// Make sure interfaces are correctly implemented. +var ( + _ hash.Hash = new(digest64) + _ hash.Hash64 = new(digest64) + _ bmixer = new(digest64) +) + +// digest64 is half a digest128. +type digest64 digest128 + +// New64 returns a 64-bit hasher +func New64() hash.Hash64 { return New64WithSeed(0) } + +// New64WithSeed returns a 64-bit hasher set with explicit seed value +func New64WithSeed(seed uint32) hash.Hash64 { + d := (*digest64)(New128WithSeed(seed).(*digest128)) + return d +} + +func (d *digest64) Sum(b []byte) []byte { + h1 := d.Sum64() + return append(b, + byte(h1>>56), byte(h1>>48), byte(h1>>40), byte(h1>>32), + byte(h1>>24), byte(h1>>16), byte(h1>>8), byte(h1)) +} + +func (d *digest64) Sum64() uint64 { + h1, _ := (*digest128)(d).Sum128() + return h1 +} + +// Sum64 returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New64() +// hasher.Write(data) +// return hasher.Sum64() +func Sum64(data []byte) uint64 { return Sum64WithSeed(data, 0) } + +// Sum64WithSeed returns the MurmurHash3 sum of data. It is equivalent to the +// following sequence (without the extra burden and the extra allocation): +// hasher := New64WithSeed(seed) +// hasher.Write(data) +// return hasher.Sum64() +func Sum64WithSeed(data []byte, seed uint32) uint64 { + d := &digest128{h1: uint64(seed), h2: uint64(seed)} + d.seed = seed + d.tail = d.bmix(data) + d.clen = len(data) + h1, _ := d.Sum128() + return h1 +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml new file mode 100644 index 0000000..b869c8a --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/FullGrid_TP.xml @@ -0,0 +1,1137 @@ + + + + http://fullgrid.eu/CGMES/3.0 + + http://iec.ch/TC57/ns/CIM/Topology-EU/3.0 + CGMES Conformity Assessment Test Configuration. The Test Configuration is owned by ENTSO-E and is provided by ENTSO-E “as it is”. To the fullest extent permitted by law, ENTSO-E shall not be liable for any damages of any kind arising out of the use of the model (including any of its subsequent modifications). ENTSO-E neither warrants, nor represents that the use of the model will not infringe the rights of third parties. Any use of the model shall include a reference to ENTSO-E. ENTSO-E web site is the only official source of information related to the model. + 1 + 2021-02-09T19:30:00Z + 2020-12-10T00:21:43Z + + + 45632379-b134-4567-89d8-d078f7024572 + + + + 687df623-5d6c-4f1b-8a3f-cef1121e6913 + + + + 8f236cf1-aee0-4528-bf73-68d92cc13ef2 + + + + 164ba4ef-12a8-4422-ad31-84cab195bce1 + + + + ba63bc14-e688-4573-bd62-341bb2e21818 + + + + 8d77cc45-66ee-4786-bae7-80d17c20cb95 + + + + 7bcb938b-6851-4539-b5fc-5102b019b9f6 + + + + 9e34a4c3-251b-4372-b961-031cf1dcd75c + + + + 8e842efc-1fd1-41b2-90e5-ba043659c601 + 00X-BE-BE-000890 + + Busbar_HVDC2 + BE_Busbar_HVDC2 + + + BE_Busbar_HVDC2 + + + 303f7acf-f00d-454a-ae9d-48e2c5dee000 + + + + a60f78b7-11d6-43c7-857d-dbb917f6e0d0 + + + + feb9a3f7-803a-4a9b-8140-967e399d6a0f + + + + 384f8540-9466-4223-8dd4-afc916d0b2de + + + + 037bb39f-be77-4b83-8638-9c8dff4eb966 + + + + 60922706-95b3-4701-a808-200fd054f4db + + + + efd8cd3b-6165-4e29-9a1f-3880b5929482 + + + + 0dc9f108-e9be-46ce-a3e6-480b092ef022 + + + + 2980a786-db33-46bd-9ee8-38dabcf63533 + + + + dfdc986a-93b6-454c-b9d8-6ab4aadb0139 + + + + 840e2c69-6ffd-45e6-8d60-bdedc73acfef + + + + ee9fd077-8248-4bf4-a8d5-0844a5539a14 + + + + ff3d16a7-77d9-4f86-945a-b1b8fee995fb + + + + 4159ba79-72c7-4f5c-a6e2-0451b9ae3e7e + + + + b8f5b2e0-3522-4465-8ce7-e238a863c46c + + + + 5f967934-b637-4643-901c-8f9a47e324f7 + + + + a0101413-5457-41e0-9630-6d98ea6a8bf3 + + + + 9072b316-0b11-4ded-a59b-5b1e5d78567a + + + + 08d5cb60-f1e7-452a-8023-3b7292cc23ce + + + + 133a4f91-0480-444a-b15a-a5e1a1180e8d + + + + 5acea568-6d34-4843-a49f-0f845a51ead8 + + + + d57e4856-e833-4957-9ec8-386ef7d7de69 + + + + 849d1e5e-e6be-44db-8c04-98bccae89af2 + + + + bea678e0-7b4d-4185-993d-5e34b2a113e9 + + + + cde8db64-6196-4941-81e6-df90b5c87180 + + + + 7182b03c-2864-4f5b-8287-6f5bee6721a3 + + + + 17c1fd73-ab8f-4984-aab3-a0e80f6cddbc + 00X-BE-BE-000884 + + BE-B_9 + BBRUS151; BGENT_51 + + + BE-Busbar_9 + + + 58539a9c-b33c-42d9-b4ce-20111fc7eec1 + + + + e3feb6f4-0db7-4468-b49e-6ea9d6f83d1a + + + + 7f830c46-a1e0-466c-bad5-1b7523147805 + 10T-AT-DE-00016Z + XZE_ST23 + RG CE; 220 kV; OHL + + + TN_Border_ST23 + + + 80b3660a-6dd4-40d0-80be-7df2dc3b7db8 + + + + 7cd843a6-816b-40ae-b465-e1e450c7ce64 + + + + e1b13b57-0529-49c0-97fd-209d7093608a + + + + 0fb2b82a-b699-45eb-8a93-46d4e0b9d7c8 + + + + 85f20ec0-c6d5-4006-8b49-031de3899693 + + + + 0f671737-5b7a-4c5a-ab99-8c102f193064 + + + + 4e3f37e9-3453-4533-aa69-ca23a5a8642b + 00X-BE-BE-000883 + + BE-B_8 + BBRUS_21; this is UCTE code + + + BE-Busbar_8 + + + ce8698bf-251b-4488-9712-ef00202026a8 + + + + e151673a-9d7b-40dd-980b-e59ad9645907 + + + + 38912491-185e-4869-8e8d-61dc9cc0a7f6 + + + + c32d3466-e3f9-496e-83ee-f1ba90914509 + + + + d9233706-3e52-481d-aa08-444ef6cf8c2b + + + + b6bb3424-88af-4934-a46c-ef220f778cbb + + + + 77d5bdef-c991-42df-ac4f-ce50efe43a1c + + + + 92843ea6-287e-4704-9a1e-b7d78e89a05b + + + + a3d9ac34-1e35-45aa-ad48-7c688258fafd + + + + d04a76b2-d483-41f4-bfcb-481b879d4c8b + + + + 57f8af45-64f0-4db8-9d31-5f9621f384c3 + + + + 5cb37c65-a942-4845-bf27-fba46cca9ed5 + + + + 9eadcaa7-ab1e-4ff7-a3ce-b2713eec1a7a + 00X-BE-BE-000876 + + BE-B_11 + BBRUS151; BGENT_51 + + + BE-Busbar_11 + + + 2c8ee2b2-260e-4c33-b9e1-e10787860a20 + + + + 19d85411-f52b-4d38-b4b5-2693ee7ee283 + + + + 2f3dcf10-5f8d-468a-baef-31bc1d8ef5d6 + + + + c73c1c1d-e7c5-4cbf-a9b0-9b0688a064a6 + HVDC1_3 + 00X-BE-BE-000524 + HVDC1_3 + + HVDC1_3 + + + 7874083b-e588-416d-b125-863c2681f6a3 + 00X-BE-BE-000877 + + BE-B_12 + BBRUS_21; this is UCTE code + + + BE-Busbar_12 + + + ab584b99-9e29-4139-8b44-d348148497b2 + + + + 6e942772-b225-4879-936d-4ee33471d459 + + + + 025515c7-3a78-4107-ac53-501375104606 + + + + 23854dcf-2b82-459e-8eb4-0d114fc828c0 + + + + 578f0373-5866-4a4f-ac13-c5a1a95820ae + + + + c591a9ca-ff19-47b9-8389-7713c79f1169 + 00X-BE-BE-000885 + + BE_HVDC_BUS2 + BE_HVDC_BUS2 + + + BE_HVDC_BUS2 + + + 2e18bb26-ab9d-41a8-9a1e-71aa3c98d425 + BE_DC2 + 00X-BE-BE-000519 + BE_DC2 + + BE_DC2 + + + efc034b8-2e9e-45e8-a693-ae080c0171b6 + + + + bc40de8c-e3cc-40aa-af5a-ff135ea68372 + + + + 4ed1d67b-3d76-47a7-9785-2ad6afaf4692 + + + + bd9d594b-e909-4890-9225-27b54a7c272a + 10T-ES-PT-10004U + XCA_AL11 + RG CE; 400 kV; OHL (2) + + + TN_Border_AL11 + + + 16aacbf6-ce19-446e-950a-6be6e23cbc50 + + + + 90cef915-b3de-43f7-860f-3ba67465fb40 + + + + 42e15ef0-928f-455b-accd-06e7cb0d0391 + + + + 5ece2949-f82e-419c-83a4-cddcf0be3216 + + + + ac800544-8184-44f2-8bf6-992eebc5c21d + + + + 1fdbd284-1504-4db8-a8c2-ee935f36879e + 00X-BE-BE-000875 + + BE-B_10 + BBRUS151; BGENT_51 + + + BE-Busbar_10 + + + 178f1d1c-1ad2-4e72-815f-47af95869edf + + + + 62e05955-9dd9-41c2-9753-75f04838d258 + DC_Ground2 + 00X-BE-BE-000521 + DC_Ground2 + + DC_Ground2 + + + 0e8a2acc-6550-4ab7-8a61-975dea4b0ea5 + BE_DC1 + 00X-BE-BE-000518 + BE_DC1 + + BE_DC1 + + + 3a30332a-986d-4998-ace3-9644bf8dcbfe + + + + b3659b6d-c8c4-48c2-a722-b317c3d1c36b + + + + 34d01770-11e9-46c7-b8da-20855cfcffeb + DC_Ground1 + 00X-BE-BE-000520 + DC_Ground1 + + DC_Ground1 + + + b41eee9a-af69-4a72-9aa8-c2c2982b9e6f + + + + 34777fdd-896d-4653-bcac-e065743e3741 + 00X-BE-BE-000879 + + BE-B_4 + BGENT_71; This is the old UCTE code from UCTE DEF + + + BE-Busbar_4 + + + 4bee3ced-e8f9-42ac-acbc-d762adb5308b + 00X-BE-BE-000886 + + BE_TR_BUS2 + BE_TR_BUS2 + + + BE_TR_BUS2 + + + ab189ae0-a556-4670-b1b8-552560a36e42 + + + + aaf1cff3-362d-4daa-b9f7-2c9236695198 + + + + 97226393-e1b3-46e0-a7c3-9e97f3b6cc5b + + + + 38e57012-ac9b-4999-9921-1dfafcb73e3b + + + + 0c729e41-a3aa-4eb6-81fa-ccd5bcb659a9 + + + + 5d88525f-7b2a-421d-90c1-f93007ecfbd6 + + + + 87a7036b-8a12-4916-b16c-6a80a381c2b4 + + + + 4dd077d5-c166-4699-baeb-2220f706002b + + + + 1f281a59-6fd9-43b5-a726-524fdb702854 + + + + 57409aea-48bd-4459-aa86-3a066b9137b1 + + + + 12c81581-5bb7-4e28-9318-74f36bcdc9fb + + + + 2bc64e4a-6acb-4ca2-86c3-5891c2e159f0 + + + + 34b1404e-6aad-472d-87c7-6b0e05d2098c + + + + 8b5e73bc-bc88-49d9-be57-26f606221816 + 10T-AT-SI-00001T + XKA_MA11 + RG CE; 400 kV; OHL (2) + + + TN_Border_MA11 + + + 99c5d0ee-e030-4023-aa67-c27c4b5ff3fc + + + + 610ee89a-c562-4b47-9401-bda854b4c527 + + + + da666ea8-7bf5-4a22-84c5-d5d21f692314 + + + + d282a4f2-fc06-4e2b-94d8-d5472ba7db8b + 10T-AT-DE-00017X + XZE_ST24 + RG CE; 220 kV; OHL + + + TN_Border_ST24 + + + 3baaf355-f5c1-433c-9760-e05436f3c56b + + + + d444a448-d542-4929-a369-0bf360079f5b + HVDC1_6 + 00X-BE-BE-000527 + HVDC1_6 + + HVDC1_6 + + + d3435b9a-1077-49ac-ab24-969734b70fd5 + + + + de3eef82-d6ea-418e-99ba-d74914b15b9a + + + + 8c1565e9-3ef8-4549-bf2b-1ebb100a2e84 + + + + 6b8d843e-5770-404a-a606-e1f2f5a1b610 + + + + 6710b466-00d6-4556-b436-985eb08f7dd0 + 00X-BE-BE-000878 + + BE-B_2 + BBRUS_21; this is UCTE code + + + BE-Busbar_2 + + + d3101b41-2d49-43ee-95b7-d60c445a55cc + + + + fa2d9b9b-2b79-4cf6-a7cc-a2dbb8730383 + + + + e655fcb2-ef0c-402c-a219-4e6e593c20f1 + + + + 11f04fbd-68fa-40f4-90c8-895443fc13b8 + + + + 19efee65-a452-4166-a77e-c1faf80fcc01 + + + + 2deccb06-c8b3-4cb2-815f-9c0460a7804d + + + + 82597a1a-4990-4232-9b1a-f5cec51fddb2 + + + + ff52e713-2bd1-46b0-a1cc-c02adfc2d49f + + + + d259a2ef-04ff-4790-ac13-b4c48f8e92c2 + + + + 98718b6d-a18c-4a66-958c-45d312a3274e + + + + fba07dcf-75e0-406f-a2f8-c39bb2286375 + + + + b2d0dab2-7918-469a-bea3-20aacee128b1 + + + + e52b1dd6-e7a2-4c80-95f4-9dc78ea013d1 + + + + 155a50ec-13d8-4104-879f-e998411be2ea + HVDC1_4 + 00X-BE-BE-000525 + HVDC1_4 + + HVDC1_4 + + + 5ae0dbff-af2b-4772-a820-ab3a1900bc6f + + + + 05675d2d-bb4c-4165-808f-0c7671a790cd + 10T-AT-DE-00017X + + BE_PCC1 + 10T-AT-DE-00017X + + + BE_PCC1 + + + e98c20a2-dd4e-4991-9fb4-83740f8bd21d + + + + e6d0a011-742f-4ffd-98a3-27c9e62a2342 + + + + 1798cbd9-2f4b-4c2c-8273-89bd5d85c2f6 + + + + 161b1f6c-7aef-4965-9d9c-6ea8d3d70f31 + + + + bec23818-76a9-4e47-aecd-76f8ad3f1199 + 00X-BE-BE-000889 + + Busbar_HVDC1 + BE_Busbar_HVDC1 + + + BE_Busbar_HVDC1 + + + f7f6140a-34b2-4e4d-ad50-094ed6af7871 + + + + b99f6c0d-ad5c-4676-859f-b8ce00d084d6 + + + + 37e90dfb-9d6c-4233-a4fd-6f4c2c909ecd + + + + b594eb01-62a7-4d95-8e36-64eb4167d74c + + + + 54c60386-8d0b-4c67-8bac-aa59bd70edae + + + + 09c73520-69d4-45ef-a4db-0624af71fe02 + + + + 125e8e92-2c08-46c4-a157-817f265a2082 + + + + a6c9e04c-9659-4516-bde6-5e31ba66cd38 + 10T-AT-DE-00017X + + BE_PCC2 + 10T-AT-DE-00017X + + + BE_PCC2 + + + e77ed075-af58-45a2-8eb7-18619927f281 + + + + 1c0d415d-7e56-4fad-a127-f131cf53b9cb + + + + 994f164c-430a-4188-86c1-0a05cec9a038 + + + + c859beb5-62f0-43c0-a269-b41d4f9a5c37 + 00X-BE-BE-000888 + + N1230816360 + N1230816360 + + + N1230816360 + + + 64f68467-97cd-4d00-af35-5ed6b4999a42 + + + + baeaf7ca-dde1-418e-9b16-46d6d5f52b25 + + + + f7553918-5286-47f3-a1dc-b4384ce8f2c0 + + + + fd8c8a4f-2f26-4912-b11f-5d52accad641 + HVDC1_Ground + 00X-BE-BE-000528 + HVDC1_Ground + + HVDC1_Ground + + + 0cab8253-91fd-4bfb-92b5-ed814a6c9b6a + + + + 0b49b82b-ea9a-4b28-8efa-d9ae99317d6c + + + + d1bd4ca1-5868-4513-909e-c9157477036c + + + + b694653e-31fd-45a1-a9e0-9f2edd706286 + + + + c2795549-c17e-4131-8575-581918c58e8c + + + + 51db23af-0ffa-4d23-bc57-6cc727548ca8 + + + + 930595c9-d686-47cb-8afe-e55225cc50e6 + + + + 659ac0ba-1b4b-4c08-a2f5-b3946091f293 + + + + 1eb0ff0f-da46-48de-afac-443fb5dde198 + + + + c9d619f4-d71d-4c2a-9eb1-497fa5f98132 + + + + d82b939b-41aa-47ff-87e4-be803991ad29 + 00X-BE-BE-000881 + + BE-B_6 + BBRUS151; BGENT_51 + + + BE-Busbar_6 + + + 97cc87be-cffe-4d92-8788-417f7e2a5b93 + + + + 7eefb27f-c416-4f84-9ef2-54b9c4d600dc + + + + 49ec0066-52af-4e6f-8da4-3198fe9acb5d + 00X-BE-BE-000880 + + BE-B_5 + BGENT_72; this is old code + + + BE-Busbar_5 + + + 16fb020d-850b-44b1-bd8c-47785995aaed + + + + 6fb0e7d3-8125-46b1-9cd3-1c66c1ee513a + + + + 58889b22-7bd5-4e54-8602-2e115bfa2ed7 + 00X-BE-BE-000882 + + BE-B_6 + BBRUS151; BGENT_51 + + + BE-Busbar_7 + + + b615eb40-31fc-4935-9b55-f9033450fbe7 + + + + 79041560-a1d6-4700-a235-7161f661a00a + + + + 9bf7da84-3812-4188-95f5-53805ffde524 + + + + 5cb80971-4471-4593-9462-84d6ec8fe185 + + + + b7a85241-4141-4241-b08b-df7d3bd0c06f + HVDC2_Ground + 00X-BE-BE-000530 + HVDC2_Ground + + HVDC2_Ground + + + 8ac543ac-abfb-4f9b-9381-72709bd8188e + + + + 5b11fb75-b075-4c01-8a5c-ecfc6cc6e616 + HVDC2_1 + 00X-BE-BE-000529 + HVDC2_1 + + HVDC2_1 + + + d4fc45b2-7090-4d26-b620-e7a319aca9b5 + HVDC1_5 + 00X-BE-BE-000526 + HVDC1_5 + + HVDC1_5 + + + 1c2e9c9b-9b85-4dac-aeb8-9c59f22463cb + HVDC1_1 + 00X-BE-BE-000522 + HVDC1_1 + + HVDC1_1 + + + 876b0e1a-3cfa-4931-88b4-3e1439d04af9 + + + + c3aa9ba4-1bbf-4c07-85f0-979c47f95590 + + + + 3e67aaae-e737-48e8-bd0a-3a83abe8acb6 + 10T-AT-DE-00017X + + BE_PCC1 + 10T-AT-DE-00017X + + + BE_PCC1 + + + 0a4c0246-5ce8-4a18-8450-bfa5f2dfc36d + + + + a8dd8cef-cd85-4f55-8015-ea212e461656 + + + + 4a362149-e88c-4573-a8d4-0d80ec7cd98f + + + + 72e3acb0-9f6c-496b-b809-4fb66c773b55 + + + + ae7c4142-8e9a-46c5-a68d-ae5d969e5c1a + + + + 0ecdd1da-2e90-4480-aa7d-c8a06c92d368 + + + + 8add0faf-5960-4882-a293-a5f79aef82c3 + + + + e8f391bc-4299-47cc-a9d8-f2f048bee440 + + + + 37a16d83-6e29-4d0d-b8e9-bb90b89c49da + + + + 7b9a6932-fb0a-4070-bf83-49866b2ed339 + + + + ad2cf75e-896e-4b4e-b31f-8da2c25dd597 + + + + 866f8f54-565d-4fbb-9c4f-780298f80752 + 10T-AT-HU-00002U + XWI_GY11 + RG CE; 400 kV; OHL + + + TN_Border_GY11 + + + 517422d7-067a-4154-af5c-c6945326f563 + + + + 918484e1-e9d6-41ec-88c6-4d3a8cec53cd + + + + d1f919a1-11e3-4e2d-b07f-4238275a71f3 + + + + 69fb097a-8366-4f62-8cac-095c41649501 + + + + a906ab69-b9c1-41b3-9a12-f4b3a85f72e8 + + + + 4b1a0c1a-85a4-4a85-9e20-db775ae9dcce + HVDC1_2 + 00X-BE-BE-000523 + HVDC1_2 + + HVDC1_2 + + + 0a99a983-5858-4f6c-a9fd-df5fcee2b80b + + + + e84ba2ff-8bac-4d71-9765-61c7633df57a + + + + dafa1358-665c-4751-bcd3-7cda376a6ae0 + + + + d2489a52-7225-49de-9fe0-22f1af25476d + + + + d84be2ac-c639-49b2-b9f7-207a02ecfd03 + + + + 27531589-b71f-4972-90e7-86167a4b9602 + + + + 147ffaf7-18ac-46a4-b11a-ec2c6b2874e2 + + + + 5331ff9a-14e7-4c10-9b85-0f5cc1dddab4 + + + + 7fe13068-5ecc-4d5a-b423-9eed457c2d83 + + + + d28d9755-daef-408a-b849-76ac918c7329 + + + + fde26acf-bab2-45e7-8726-3142a35455aa + + + + eaa3e478-b1a8-4ff7-b385-83bfe5a934f6 + 00X-BE-BE-000887 + + BE_TR_BUS4 + BE_TR_BUS4 + + + BE_TR_BUS4 + + + 3878043d-c093-43e6-9524-6d17580a3260 + + + + 67a35a3d-35a0-4bbe-a48a-f28228a67469 + 10T-AT-DE-00017X + + BE_PCC2 + 10T-AT-DE-00017X + + + BE_PCC2 + + + 9d3b821b-e098-4c15-a451-fe880d8132ea + + + + 56c26ce6-779a-47c9-a2d0-ddc7c2551ae5 + + + + 8ffdf52f-e0f8-46c1-afc2-3343393c4888 + + + + 7f45eb82-d863-4941-b88e-273f9b31e3ac + + + + 27ebbaea-e522-44e7-8d1d-c15f8a2eaa25 + + + + 582efea1-35f4-49d2-a2d0-0561ea2dd546 + + + + 6d2f3f51-3a6c-4a38-af83-9cf46f957e3d + + + + df276256-6f23-4ec4-8f8a-774bc1b4d407 + + + + 96633a4f-906a-4c5f-851e-f38dcb46ac7a + + + + f2afe0fa-05f2-4341-9ec7-c7b903686551 + + + + df495554-db4f-4213-8c44-0a79b89f6d3c + + + + c9d59e6b-7f84-431e-a521-2af97ba77125 + + + + 437ce796-5b3f-45ff-a3dd-4653b19bc1e4 + + + + 49aa21f8-8463-4b00-b93d-960ae7dd2811 + + + + 06c74a2d-4f1c-40de-935f-e1b7b7fe4cba + + + + 9be289e1-b82c-45ee-8939-459f032f6baf + + + + 78ad3b07-15b8-40aa-b4d6-ceeb8abbd988 + + + + fc5daa58-55cb-47f5-ac39-4e1ab12e0282 + + + diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go new file mode 100644 index 0000000..b6dd835 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/data.pb.go @@ -0,0 +1,551 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/data.proto + +// +//Messages to support data injection in the platform. +//The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). +// +//Data are grouped into sets, where each id identifies a specific measurement. The id does not identify the instance of measurement, but the class of measurement. Measurement ID can be used to retrieve additional medata about the measurement, from example, in the CIM OP profile associated to the monitored grid. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DataType int32 + +const ( + DataType_DATA_TYPE_UNSPECIFIED DataType = 0 //No type define + DataType_DATA_TYPE_ACTIVE_POWER DataType = 1 //Real power in a non-three phase circuit. It maps to an Analog. + DataType_DATA_TYPE_ANGLE DataType = 2 //Angle between voltage and current. It maps to an Analog. + DataType_DATA_TYPE_AUTOMATIC DataType = 3 //Automatic operation (not manual). It maps to Discrete (True or False). + DataType_DATA_TYPE_BOOLEAN DataType = 4 //Boolean. It maps to Discrete (True or False). + DataType_DATA_TYPE_CONFIG_CHANGE DataType = 5 // Configuration change. It maps to Discrete (True or False). + DataType_DATA_TYPE_CURRENT_SEQUENCE_NEGATIVE DataType = 6 //Current sequence negative. It maps to Phasor. + DataType_DATA_TYPE_CURRENT_SEQUENCE_POSITIVE DataType = 7 //Current sequence positive. It maps to Phasor. + DataType_DATA_TYPE_CURRENT_SEQUENCE_ZERO DataType = 8 //Current sequence zero. It maps to Phasor. + DataType_DATA_TYPE_DATA_ERROR DataType = 9 //Data error. It maps to Discrete (True or False). + DataType_DATA_TYPE_DATA_MODIFIED DataType = 10 //Data modified. It maps to Discrete (True or False). + DataType_DATA_TYPE_DATA_SORTING DataType = 11 //Data sorting. It maps to Discrete. + DataType_DATA_TYPE_ENERGY DataType = 12 //Energy. It maps to an Analog. + DataType_DATA_TYPE_FREQUENCY DataType = 13 //Frequency. It maps to an Analog. + DataType_DATA_TYPE_LINE_CURRENT DataType = 14 //Line current. It maps to an Analog. + DataType_DATA_TYPE_LINE_TO_LINE_VOLTAGE DataType = 15 //Line to line voltage. It maps to an Analog. + DataType_DATA_TYPE_LOCAL_OPERATION DataType = 16 //Local operation (not remote). It maps to Discrete. + DataType_DATA_TYPE_OPERATION_COUNT DataType = 17 //Operation count – typically for switches. It maps to Discrete. + DataType_DATA_TYPE_PACKET_LATENCY DataType = 18 //Packet latency. It maps to Analog. + DataType_DATA_TYPE_PHASE_VOLTAGE DataType = 19 //Line to ground voltage. It maps to Analog. + DataType_DATA_TYPE_PHASOR_CURRENT DataType = 20 //Phasor current in a non-three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_PHASOR_VOLTAGE DataType = 21 //Phasor voltage in a non-three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_PMU_SYNC DataType = 22 //PMU synchronized. It maps to Discrete (True or False) + DataType_DATA_TYPE_PMU_TIME_QUALITY DataType = 23 //PMU time quality. It maps to Discrete + DataType_DATA_TYPE_PMU_TRIGGER_DETECTED DataType = 24 //PMU trigger detected. It maps to Discrete (True or False) + DataType_DATA_TYPE_POWER DataType = 25 //Apparent power in a non-three phase circuit. It maps to Analog. + DataType_DATA_TYPE_POWER_FACTOR DataType = 26 //Power factor. It maps to Analog. + DataType_DATA_TYPE_PRESSURE DataType = 27 //Pressure. It maps to Analog. + DataType_DATA_TYPE_RATE_OF_CHANGE_OF_FREQUENCY DataType = 28 //Rate of change of frequency. It maps to Analog. + DataType_DATA_TYPE_REACTIVE_POWER DataType = 29 //Reactive power in a non-three phase circuit. It maps to Analog. + DataType_DATA_TYPE_SWITCH_POSITION DataType = 30 //Switch position. It maps to Discrete (True or False). + DataType_DATA_TYPE_TAP_POSITION DataType = 31 //Tap position of power transformer or phaseshifter. It maps to Discrete. + DataType_DATA_TYPE_TEMPERATURE DataType = 32 //Temperature. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_ACTIVE_POWER DataType = 33 //Total real power in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_CURRENT DataType = 34 //Total current (rms) in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_POWER DataType = 35 //Total apparent power in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_POWER_FACTOR DataType = 36 //Three phase power factor. It maps to Analog. + DataType_DATA_TYPE_THREE_PHASE_REACTIVE_POWER DataType = 37 //Total reactive power in a three phase circuit. It maps to Analog. + DataType_DATA_TYPE_TRIGGER_REASON DataType = 38 //Trigger reason. It maps to Discrete. + DataType_DATA_TYPE_UNLOCKED_TIME DataType = 39 //Unlocked time. //Three phase active power. It maps to Discrete. + DataType_DATA_TYPE_VOLTAGE_SEQUENCE_NEGATIVE DataType = 40 //Voltage negative sequence in a three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_VOLTAGE_SEQUENCE_POSITIVE DataType = 41 //Voltage positive sequence in a three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_VOLTAGE_SEQUENCE_ZERO DataType = 42 //Voltage zero sequence in a three phase circuit. It maps to Phasor. + DataType_DATA_TYPE_DISCRETE DataType = 43 //Discrete. It maps to Discrete. + DataType_DATA_TYPE_ANALOG DataType = 44 //Analog. It maps to Analog. + DataType_DATA_TYPE_NORMALIZED_RESIDUAL DataType = 45 //Normalized Residual. It maps to Analog. + DataType_DATA_TYPE_OBJECTIVE_FUNCTION DataType = 46 //Objective Function. It maps to Analog. + DataType_DATA_TYPE_SWITCH_POSITION_CHECK DataType = 47 //Switch Position Check. It maps to Boolean. + DataType_DATA_TYPE_TEMPERATURE_ALARM DataType = 48 //Temperature Alarm. It maps to Boolean. + DataType_DATA_TYPE_PRESSURE_ALARM DataType = 49 //Pressure Alarm. It maps to Boolean. + DataType_DATA_TYPE_DOOR_ALARM DataType = 50 //Door Alarm. It maps to Boolean. +) + +// Enum value maps for DataType. +var ( + DataType_name = map[int32]string{ + 0: "DATA_TYPE_UNSPECIFIED", + 1: "DATA_TYPE_ACTIVE_POWER", + 2: "DATA_TYPE_ANGLE", + 3: "DATA_TYPE_AUTOMATIC", + 4: "DATA_TYPE_BOOLEAN", + 5: "DATA_TYPE_CONFIG_CHANGE", + 6: "DATA_TYPE_CURRENT_SEQUENCE_NEGATIVE", + 7: "DATA_TYPE_CURRENT_SEQUENCE_POSITIVE", + 8: "DATA_TYPE_CURRENT_SEQUENCE_ZERO", + 9: "DATA_TYPE_DATA_ERROR", + 10: "DATA_TYPE_DATA_MODIFIED", + 11: "DATA_TYPE_DATA_SORTING", + 12: "DATA_TYPE_ENERGY", + 13: "DATA_TYPE_FREQUENCY", + 14: "DATA_TYPE_LINE_CURRENT", + 15: "DATA_TYPE_LINE_TO_LINE_VOLTAGE", + 16: "DATA_TYPE_LOCAL_OPERATION", + 17: "DATA_TYPE_OPERATION_COUNT", + 18: "DATA_TYPE_PACKET_LATENCY", + 19: "DATA_TYPE_PHASE_VOLTAGE", + 20: "DATA_TYPE_PHASOR_CURRENT", + 21: "DATA_TYPE_PHASOR_VOLTAGE", + 22: "DATA_TYPE_PMU_SYNC", + 23: "DATA_TYPE_PMU_TIME_QUALITY", + 24: "DATA_TYPE_PMU_TRIGGER_DETECTED", + 25: "DATA_TYPE_POWER", + 26: "DATA_TYPE_POWER_FACTOR", + 27: "DATA_TYPE_PRESSURE", + 28: "DATA_TYPE_RATE_OF_CHANGE_OF_FREQUENCY", + 29: "DATA_TYPE_REACTIVE_POWER", + 30: "DATA_TYPE_SWITCH_POSITION", + 31: "DATA_TYPE_TAP_POSITION", + 32: "DATA_TYPE_TEMPERATURE", + 33: "DATA_TYPE_THREE_PHASE_ACTIVE_POWER", + 34: "DATA_TYPE_THREE_PHASE_CURRENT", + 35: "DATA_TYPE_THREE_PHASE_POWER", + 36: "DATA_TYPE_THREE_PHASE_POWER_FACTOR", + 37: "DATA_TYPE_THREE_PHASE_REACTIVE_POWER", + 38: "DATA_TYPE_TRIGGER_REASON", + 39: "DATA_TYPE_UNLOCKED_TIME", + 40: "DATA_TYPE_VOLTAGE_SEQUENCE_NEGATIVE", + 41: "DATA_TYPE_VOLTAGE_SEQUENCE_POSITIVE", + 42: "DATA_TYPE_VOLTAGE_SEQUENCE_ZERO", + 43: "DATA_TYPE_DISCRETE", + 44: "DATA_TYPE_ANALOG", + 45: "DATA_TYPE_NORMALIZED_RESIDUAL", + 46: "DATA_TYPE_OBJECTIVE_FUNCTION", + 47: "DATA_TYPE_SWITCH_POSITION_CHECK", + 48: "DATA_TYPE_TEMPERATURE_ALARM", + 49: "DATA_TYPE_PRESSURE_ALARM", + 50: "DATA_TYPE_DOOR_ALARM", + } + DataType_value = map[string]int32{ + "DATA_TYPE_UNSPECIFIED": 0, + "DATA_TYPE_ACTIVE_POWER": 1, + "DATA_TYPE_ANGLE": 2, + "DATA_TYPE_AUTOMATIC": 3, + "DATA_TYPE_BOOLEAN": 4, + "DATA_TYPE_CONFIG_CHANGE": 5, + "DATA_TYPE_CURRENT_SEQUENCE_NEGATIVE": 6, + "DATA_TYPE_CURRENT_SEQUENCE_POSITIVE": 7, + "DATA_TYPE_CURRENT_SEQUENCE_ZERO": 8, + "DATA_TYPE_DATA_ERROR": 9, + "DATA_TYPE_DATA_MODIFIED": 10, + "DATA_TYPE_DATA_SORTING": 11, + "DATA_TYPE_ENERGY": 12, + "DATA_TYPE_FREQUENCY": 13, + "DATA_TYPE_LINE_CURRENT": 14, + "DATA_TYPE_LINE_TO_LINE_VOLTAGE": 15, + "DATA_TYPE_LOCAL_OPERATION": 16, + "DATA_TYPE_OPERATION_COUNT": 17, + "DATA_TYPE_PACKET_LATENCY": 18, + "DATA_TYPE_PHASE_VOLTAGE": 19, + "DATA_TYPE_PHASOR_CURRENT": 20, + "DATA_TYPE_PHASOR_VOLTAGE": 21, + "DATA_TYPE_PMU_SYNC": 22, + "DATA_TYPE_PMU_TIME_QUALITY": 23, + "DATA_TYPE_PMU_TRIGGER_DETECTED": 24, + "DATA_TYPE_POWER": 25, + "DATA_TYPE_POWER_FACTOR": 26, + "DATA_TYPE_PRESSURE": 27, + "DATA_TYPE_RATE_OF_CHANGE_OF_FREQUENCY": 28, + "DATA_TYPE_REACTIVE_POWER": 29, + "DATA_TYPE_SWITCH_POSITION": 30, + "DATA_TYPE_TAP_POSITION": 31, + "DATA_TYPE_TEMPERATURE": 32, + "DATA_TYPE_THREE_PHASE_ACTIVE_POWER": 33, + "DATA_TYPE_THREE_PHASE_CURRENT": 34, + "DATA_TYPE_THREE_PHASE_POWER": 35, + "DATA_TYPE_THREE_PHASE_POWER_FACTOR": 36, + "DATA_TYPE_THREE_PHASE_REACTIVE_POWER": 37, + "DATA_TYPE_TRIGGER_REASON": 38, + "DATA_TYPE_UNLOCKED_TIME": 39, + "DATA_TYPE_VOLTAGE_SEQUENCE_NEGATIVE": 40, + "DATA_TYPE_VOLTAGE_SEQUENCE_POSITIVE": 41, + "DATA_TYPE_VOLTAGE_SEQUENCE_ZERO": 42, + "DATA_TYPE_DISCRETE": 43, + "DATA_TYPE_ANALOG": 44, + "DATA_TYPE_NORMALIZED_RESIDUAL": 45, + "DATA_TYPE_OBJECTIVE_FUNCTION": 46, + "DATA_TYPE_SWITCH_POSITION_CHECK": 47, + "DATA_TYPE_TEMPERATURE_ALARM": 48, + "DATA_TYPE_PRESSURE_ALARM": 49, + "DATA_TYPE_DOOR_ALARM": 50, + } +) + +func (x DataType) Enum() *DataType { + p := new(DataType) + *p = x + return p +} + +func (x DataType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DataType) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_data_proto_enumTypes[0].Descriptor() +} + +func (DataType) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_data_proto_enumTypes[0] +} + +func (x DataType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DataType.Descriptor instead. +func (DataType) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_data_proto_rawDescGZIP(), []int{0} +} + +type Data struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. +} + +func (x *Data) Reset() { + *x = Data{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Data) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Data) ProtoMessage() {} + +func (x *Data) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Data.ProtoReflect.Descriptor instead. +func (*Data) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_data_proto_rawDescGZIP(), []int{0} +} + +func (x *Data) GetDataType() DataType { + if x != nil { + return x.DataType + } + return DataType_DATA_TYPE_UNSPECIFIED +} + +func (x *Data) GetMeasuredAt() int64 { + if x != nil { + return x.MeasuredAt + } + return 0 +} + +func (x *Data) GetValue() uint64 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +type DataSet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. +} + +func (x *DataSet) Reset() { + *x = DataSet{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataSet) ProtoMessage() {} + +func (x *DataSet) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_data_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataSet.ProtoReflect.Descriptor instead. +func (*DataSet) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_data_proto_rawDescGZIP(), []int{1} +} + +func (x *DataSet) GetProducerId() string { + if x != nil { + return x.ProducerId + } + return "" +} + +func (x *DataSet) GetData() map[string]*Data { + if x != nil { + return x.Data + } + return nil +} + +var File_zaphiro_grid_v1_data_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_data_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x22, 0x82, 0x01, + 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x49, 0x64, 0x12, 0x36, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4e, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, + 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0xb6, 0x0c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, + 0x0a, 0x16, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x02, 0x12, + 0x17, 0x0a, 0x13, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x54, + 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x04, 0x12, + 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x47, 0x41, 0x54, + 0x49, 0x56, 0x45, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, + 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x07, 0x12, 0x23, + 0x0a, 0x1f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, + 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x5a, 0x45, 0x52, + 0x4f, 0x10, 0x08, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x09, 0x12, 0x1b, 0x0a, + 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x4f, 0x52, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x0c, 0x12, 0x17, 0x0a, 0x13, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x4e, 0x43, 0x59, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, + 0x0e, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, + 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, + 0x41, 0x47, 0x45, 0x10, 0x0f, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x10, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x10, + 0x12, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, + 0x48, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x10, 0x13, 0x12, 0x1c, + 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, + 0x4f, 0x52, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x14, 0x12, 0x1c, 0x0a, 0x18, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x4f, 0x52, + 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x10, 0x15, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4d, 0x55, 0x5f, 0x53, 0x59, 0x4e, 0x43, + 0x10, 0x16, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x50, 0x4d, 0x55, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, + 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x50, 0x4d, 0x55, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x54, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x10, 0x18, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x19, 0x12, 0x1a, 0x0a, 0x16, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x46, + 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x1a, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x53, 0x55, 0x52, 0x45, 0x10, 0x1b, 0x12, + 0x29, 0x0a, 0x25, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x54, + 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x46, + 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x1c, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, + 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x1d, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x50, 0x4f, 0x53, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x50, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x1f, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x45, 0x52, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x20, 0x12, 0x26, + 0x0a, 0x22, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, + 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x50, + 0x4f, 0x57, 0x45, 0x52, 0x10, 0x21, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x22, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, 0x41, + 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x23, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, + 0x10, 0x24, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x25, 0x12, 0x1c, 0x0a, 0x18, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, + 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, + 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x27, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x51, + 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x28, + 0x12, 0x27, 0x0a, 0x23, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, + 0x4c, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, + 0x4f, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x29, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, + 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x2a, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, + 0x52, 0x45, 0x54, 0x45, 0x10, 0x2b, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x2c, 0x12, 0x21, 0x0a, 0x1d, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, + 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x10, 0x2d, 0x12, + 0x20, 0x0a, 0x1c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x2e, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x48, 0x45, 0x43, 0x4b, 0x10, 0x2f, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x45, 0x52, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, + 0x41, 0x4c, 0x41, 0x52, 0x4d, 0x10, 0x30, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x4c, + 0x41, 0x52, 0x4d, 0x10, 0x31, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x4f, 0x52, 0x5f, 0x41, 0x4c, 0x41, 0x52, 0x4d, 0x10, 0x32, 0x42, + 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_data_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_data_proto_rawDescData = file_zaphiro_grid_v1_data_proto_rawDesc +) + +func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + }) + return file_zaphiro_grid_v1_data_proto_rawDescData +} + +var file_zaphiro_grid_v1_data_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_zaphiro_grid_v1_data_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_zaphiro_grid_v1_data_proto_goTypes = []interface{}{ + (DataType)(0), // 0: zaphiro.grid.v1.DataType + (*Data)(nil), // 1: zaphiro.grid.v1.Data + (*DataSet)(nil), // 2: zaphiro.grid.v1.DataSet + nil, // 3: zaphiro.grid.v1.DataSet.DataEntry +} +var file_zaphiro_grid_v1_data_proto_depIdxs = []int32{ + 0, // 0: zaphiro.grid.v1.Data.dataType:type_name -> zaphiro.grid.v1.DataType + 3, // 1: zaphiro.grid.v1.DataSet.data:type_name -> zaphiro.grid.v1.DataSet.DataEntry + 1, // 2: zaphiro.grid.v1.DataSet.DataEntry.value:type_name -> zaphiro.grid.v1.Data + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_data_proto_init() } +func file_zaphiro_grid_v1_data_proto_init() { + if File_zaphiro_grid_v1_data_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_data_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Data); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_data_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataSet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_data_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_data_proto_rawDesc, + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_data_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_data_proto_depIdxs, + EnumInfos: file_zaphiro_grid_v1_data_proto_enumTypes, + MessageInfos: file_zaphiro_grid_v1_data_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_data_proto = out.File + file_zaphiro_grid_v1_data_proto_rawDesc = nil + file_zaphiro_grid_v1_data_proto_goTypes = nil + file_zaphiro_grid_v1_data_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go new file mode 100644 index 0000000..3e405cb --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/device_event.pb.go @@ -0,0 +1,662 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/device_event.proto + +// +//Messages to support device event detection in the platform. Device events are sub classes of Events. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DeviceEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) +} + +func (x *DeviceEvent) Reset() { + *x = DeviceEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeviceEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeviceEvent) ProtoMessage() {} + +func (x *DeviceEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeviceEvent.ProtoReflect.Descriptor instead. +func (*DeviceEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{0} +} + +func (x *DeviceEvent) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *DeviceEvent) GetDeviceID() string { + if x != nil { + return x.DeviceID + } + return "" +} + +func (x *DeviceEvent) GetSubstationID() string { + if x != nil { + return x.SubstationID + } + return "" +} + +func (x *DeviceEvent) GetValue() float64 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *DeviceEvent) GetReferenceLimit() float64 { + if x != nil && x.ReferenceLimit != nil { + return *x.ReferenceLimit + } + return 0 +} + +func (x *DeviceEvent) GetCode() string { + if x != nil && x.Code != nil { + return *x.Code + } + return "" +} + +type CommunicationError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *CommunicationError) Reset() { + *x = CommunicationError{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunicationError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunicationError) ProtoMessage() {} + +func (x *CommunicationError) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunicationError.ProtoReflect.Descriptor instead. +func (*CommunicationError) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{1} +} + +func (x *CommunicationError) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type TimeQuality struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *TimeQuality) Reset() { + *x = TimeQuality{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TimeQuality) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TimeQuality) ProtoMessage() {} + +func (x *TimeQuality) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TimeQuality.ProtoReflect.Descriptor instead. +func (*TimeQuality) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{2} +} + +func (x *TimeQuality) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type SyncStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *SyncStatus) Reset() { + *x = SyncStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncStatus) ProtoMessage() {} + +func (x *SyncStatus) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncStatus.ProtoReflect.Descriptor instead. +func (*SyncStatus) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{3} +} + +func (x *SyncStatus) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type Power struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *Power) Reset() { + *x = Power{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Power) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Power) ProtoMessage() {} + +func (x *Power) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Power.ProtoReflect.Descriptor instead. +func (*Power) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{4} +} + +func (x *Power) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *Config) Reset() { + *x = Config{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Config) ProtoMessage() {} + +func (x *Config) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{5} +} + +func (x *Config) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type Trigger struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *Trigger) Reset() { + *x = Trigger{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Trigger) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Trigger) ProtoMessage() {} + +func (x *Trigger) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Trigger.ProtoReflect.Descriptor instead. +func (*Trigger) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{6} +} + +func (x *Trigger) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +type DataError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *DeviceEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base device event message +} + +func (x *DataError) Reset() { + *x = DataError{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataError) ProtoMessage() {} + +func (x *DataError) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_device_event_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataError.ProtoReflect.Descriptor instead. +func (*DataError) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_device_event_proto_rawDescGZIP(), []int{7} +} + +func (x *DataError) GetEvent() *DeviceEvent { + if x != nil { + return x.Event + } + return nil +} + +var File_zaphiro_grid_v1_device_event_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_device_event_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, + 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, + 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x82, 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, + 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0e, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x32, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x41, 0x0a, 0x0b, 0x54, 0x69, 0x6d, 0x65, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x22, 0x40, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x3b, 0x0a, 0x05, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, + 0x32, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x3d, 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x3f, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x32, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_device_event_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_device_event_proto_rawDescData = file_zaphiro_grid_v1_device_event_proto_rawDesc +) + +func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + }) + return file_zaphiro_grid_v1_device_event_proto_rawDescData +} + +var file_zaphiro_grid_v1_device_event_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_zaphiro_grid_v1_device_event_proto_goTypes = []interface{}{ + (*DeviceEvent)(nil), // 0: zaphiro.grid.v1.DeviceEvent + (*CommunicationError)(nil), // 1: zaphiro.grid.v1.CommunicationError + (*TimeQuality)(nil), // 2: zaphiro.grid.v1.TimeQuality + (*SyncStatus)(nil), // 3: zaphiro.grid.v1.SyncStatus + (*Power)(nil), // 4: zaphiro.grid.v1.Power + (*Config)(nil), // 5: zaphiro.grid.v1.Config + (*Trigger)(nil), // 6: zaphiro.grid.v1.Trigger + (*DataError)(nil), // 7: zaphiro.grid.v1.DataError + (*Event)(nil), // 8: zaphiro.grid.v1.Event +} +var file_zaphiro_grid_v1_device_event_proto_depIdxs = []int32{ + 8, // 0: zaphiro.grid.v1.DeviceEvent.event:type_name -> zaphiro.grid.v1.Event + 0, // 1: zaphiro.grid.v1.CommunicationError.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 2: zaphiro.grid.v1.TimeQuality.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 3: zaphiro.grid.v1.SyncStatus.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 4: zaphiro.grid.v1.Power.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 5: zaphiro.grid.v1.Config.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 6: zaphiro.grid.v1.Trigger.event:type_name -> zaphiro.grid.v1.DeviceEvent + 0, // 7: zaphiro.grid.v1.DataError.event:type_name -> zaphiro.grid.v1.DeviceEvent + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_device_event_proto_init() } +func file_zaphiro_grid_v1_device_event_proto_init() { + if File_zaphiro_grid_v1_device_event_proto != nil { + return + } + file_zaphiro_grid_v1_event_proto_init() + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_device_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunicationError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TimeQuality); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Power); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Trigger); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_device_event_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_device_event_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_device_event_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_device_event_proto_depIdxs, + MessageInfos: file_zaphiro_grid_v1_device_event_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_device_event_proto = out.File + file_zaphiro_grid_v1_device_event_proto_rawDesc = nil + file_zaphiro_grid_v1_device_event_proto_goTypes = nil + file_zaphiro_grid_v1_device_event_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go new file mode 100644 index 0000000..da69596 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/event.pb.go @@ -0,0 +1,343 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/event.proto + +// +//Messages to support event detection in the platform. +//The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type EventStatus int32 + +const ( + EventStatus_EVENT_STATUS_UNSPECIFIED EventStatus = 0 //No status defined + EventStatus_EVENT_STATUS_STARTED EventStatus = 1 //Event started + EventStatus_EVENT_STATUS_IN_PROGRESS EventStatus = 2 //Event is still active + EventStatus_EVENT_STATUS_ENDED EventStatus = 3 //Event ended + EventStatus_EVENT_STATUS_UNKNOWN EventStatus = 4 //Information available don't allow us to know if the even is active or complete +) + +// Enum value maps for EventStatus. +var ( + EventStatus_name = map[int32]string{ + 0: "EVENT_STATUS_UNSPECIFIED", + 1: "EVENT_STATUS_STARTED", + 2: "EVENT_STATUS_IN_PROGRESS", + 3: "EVENT_STATUS_ENDED", + 4: "EVENT_STATUS_UNKNOWN", + } + EventStatus_value = map[string]int32{ + "EVENT_STATUS_UNSPECIFIED": 0, + "EVENT_STATUS_STARTED": 1, + "EVENT_STATUS_IN_PROGRESS": 2, + "EVENT_STATUS_ENDED": 3, + "EVENT_STATUS_UNKNOWN": 4, + } +) + +func (x EventStatus) Enum() *EventStatus { + p := new(EventStatus) + *p = x + return p +} + +func (x EventStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EventStatus) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_event_proto_enumTypes[0].Descriptor() +} + +func (EventStatus) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_event_proto_enumTypes[0] +} + +func (x EventStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EventStatus.Descriptor instead. +func (EventStatus) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_event_proto_rawDescGZIP(), []int{0} +} + +type EventSourceType int32 + +const ( + EventSourceType_EVENT_SOURCE_UNSPECIFIED EventSourceType = 0 //No source type defined + EventSourceType_EVENT_SOURCE_DEVICE EventSourceType = 1 //The source of the event was a device (e.g. PMU) + EventSourceType_EVENT_SOURCE_SERVICE EventSourceType = 2 //The source of the event was a service (e.g. state estimator) + EventSourceType_EVENT_SOURCE_EXTERNAL_SERVICE EventSourceType = 3 //The source of the event was a service external to SynchroGuard platform (e.g. SCADA) +) + +// Enum value maps for EventSourceType. +var ( + EventSourceType_name = map[int32]string{ + 0: "EVENT_SOURCE_UNSPECIFIED", + 1: "EVENT_SOURCE_DEVICE", + 2: "EVENT_SOURCE_SERVICE", + 3: "EVENT_SOURCE_EXTERNAL_SERVICE", + } + EventSourceType_value = map[string]int32{ + "EVENT_SOURCE_UNSPECIFIED": 0, + "EVENT_SOURCE_DEVICE": 1, + "EVENT_SOURCE_SERVICE": 2, + "EVENT_SOURCE_EXTERNAL_SERVICE": 3, + } +) + +func (x EventSourceType) Enum() *EventSourceType { + p := new(EventSourceType) + *p = x + return p +} + +func (x EventSourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EventSourceType) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_event_proto_enumTypes[1].Descriptor() +} + +func (EventSourceType) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_event_proto_enumTypes[1] +} + +func (x EventSourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EventSourceType.Descriptor instead. +func (EventSourceType) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_event_proto_rawDescGZIP(), []int{1} +} + +type Event struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. +} + +func (x *Event) Reset() { + *x = Event{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_event_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_event_proto_rawDescGZIP(), []int{0} +} + +func (x *Event) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Event) GetSourceId() string { + if x != nil { + return x.SourceId + } + return "" +} + +func (x *Event) GetSourceType() EventSourceType { + if x != nil { + return x.SourceType + } + return EventSourceType_EVENT_SOURCE_UNSPECIFIED +} + +func (x *Event) GetOccurredAt() int64 { + if x != nil { + return x.OccurredAt + } + return 0 +} + +func (x *Event) GetDetectedAt() int64 { + if x != nil && x.DetectedAt != nil { + return *x.DetectedAt + } + return 0 +} + +func (x *Event) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *Event) GetStatus() EventStatus { + if x != nil && x.Status != nil { + return *x.Status + } + return EventStatus_EVENT_STATUS_UNSPECIFIED +} + +var File_zaphiro_grid_v1_event_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_event_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x22, 0xa9, + 0x02, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, + 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x48, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x95, 0x01, 0x0a, 0x0b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, + 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x04, 0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, + 0x14, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, + 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_event_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_event_proto_rawDescData = file_zaphiro_grid_v1_event_proto_rawDesc +) + +func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + }) + return file_zaphiro_grid_v1_event_proto_rawDescData +} + +var file_zaphiro_grid_v1_event_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_zaphiro_grid_v1_event_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_zaphiro_grid_v1_event_proto_goTypes = []interface{}{ + (EventStatus)(0), // 0: zaphiro.grid.v1.EventStatus + (EventSourceType)(0), // 1: zaphiro.grid.v1.EventSourceType + (*Event)(nil), // 2: zaphiro.grid.v1.Event +} +var file_zaphiro_grid_v1_event_proto_depIdxs = []int32{ + 1, // 0: zaphiro.grid.v1.Event.sourceType:type_name -> zaphiro.grid.v1.EventSourceType + 0, // 1: zaphiro.grid.v1.Event.status:type_name -> zaphiro.grid.v1.EventStatus + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_event_proto_init() } +func file_zaphiro_grid_v1_event_proto_init() { + if File_zaphiro_grid_v1_event_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Event); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_event_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_event_proto_rawDesc, + NumEnums: 2, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_event_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_event_proto_depIdxs, + EnumInfos: file_zaphiro_grid_v1_event_proto_enumTypes, + MessageInfos: file_zaphiro_grid_v1_event_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_event_proto = out.File + file_zaphiro_grid_v1_event_proto_rawDesc = nil + file_zaphiro_grid_v1_event_proto_goTypes = nil + file_zaphiro_grid_v1_event_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go new file mode 100644 index 0000000..be9ed10 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/fault.pb.go @@ -0,0 +1,821 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/fault.proto + +// +//Messages describing faults. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type PhaseConnectedFaultKind int32 + +const ( + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED PhaseConnectedFaultKind = 0 + // The fault connects the indicated phases to ground. The line to line fault impedance is not used and assumed infinite. The full ground impedance is connected between each phase specified in the fault and ground, but not between the phases. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND PhaseConnectedFaultKind = 1 + // The fault connects the specified phases together without a connection to ground. The ground impedance of this fault is ignored. The line to line impedance is connected between each of the phases specified in the fault. For example three times for a three phase fault, one time for a two phase fault. A single phase fault should not be specified. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE PhaseConnectedFaultKind = 2 + // The fault connects the indicated phases to ground and to each other. The line to line impedance is connected between each of the phases specified in the fault in a full mesh. For example three times for a three phase fault, one time for a two phase fault. A single phase fault should not be specified. The full ground impedance is connected between each phase specified in the fault and ground. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE_TO_GROUND PhaseConnectedFaultKind = 3 + // The fault is when the conductor path is broken between two terminals. Additional coexisting faults may be required if the broken conductor also causes connections to grounds or other lines or phases. + PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_LINE_OPEN PhaseConnectedFaultKind = 4 +) + +// Enum value maps for PhaseConnectedFaultKind. +var ( + PhaseConnectedFaultKind_name = map[int32]string{ + 0: "PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED", + 1: "PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND", + 2: "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE", + 3: "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE_TO_GROUND", + 4: "PHASE_CONNECTED_FAULT_KIND_LINE_OPEN", + } + PhaseConnectedFaultKind_value = map[string]int32{ + "PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED": 0, + "PHASE_CONNECTED_FAULT_KIND_LINE_TO_GROUND": 1, + "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE": 2, + "PHASE_CONNECTED_FAULT_KIND_LINE_TO_LINE_TO_GROUND": 3, + "PHASE_CONNECTED_FAULT_KIND_LINE_OPEN": 4, + } +) + +func (x PhaseConnectedFaultKind) Enum() *PhaseConnectedFaultKind { + p := new(PhaseConnectedFaultKind) + *p = x + return p +} + +func (x PhaseConnectedFaultKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PhaseConnectedFaultKind) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_fault_proto_enumTypes[0].Descriptor() +} + +func (PhaseConnectedFaultKind) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_fault_proto_enumTypes[0] +} + +func (x PhaseConnectedFaultKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PhaseConnectedFaultKind.Descriptor instead. +func (PhaseConnectedFaultKind) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{0} +} + +type PhaseCode int32 + +const ( + PhaseCode_PHASE_CODE_UNSPECIFIED PhaseCode = 0 //No phases specified. + PhaseCode_PHASE_CODE_A PhaseCode = 1 //Phase A. + PhaseCode_PHASE_CODE_B PhaseCode = 2 //Phase B. + PhaseCode_PHASE_CODE_C PhaseCode = 3 //Phase C. + PhaseCode_PHASE_CODE_N PhaseCode = 4 //Neutral phase. + PhaseCode_PHASE_CODE_AB PhaseCode = 5 //Phases A and B. + PhaseCode_PHASE_CODE_AC PhaseCode = 6 //Phases A and C. + PhaseCode_PHASE_CODE_BC PhaseCode = 7 //Phases B and C. + PhaseCode_PHASE_CODE_AN PhaseCode = 8 //Phases A and neutral. + PhaseCode_PHASE_CODE_BN PhaseCode = 9 //Phases B and neutral. + PhaseCode_PHASE_CODE_CN PhaseCode = 10 //Phases C and neutral. + PhaseCode_PHASE_CODE_ABC PhaseCode = 11 //Phases A, B, and C. + PhaseCode_PHASE_CODE_ABN PhaseCode = 12 //Phases A, B, and neutral. + PhaseCode_PHASE_CODE_ACN PhaseCode = 13 //Phases A, C and neutral. + PhaseCode_PHASE_CODE_BCN PhaseCode = 14 //Phases B, C, and neutral. + PhaseCode_PHASE_CODE_ABCN PhaseCode = 15 //Phases A, B, C, and N. + PhaseCode_PHASE_CODE_S1N PhaseCode = 16 //Secondary phase 1 and neutral. + PhaseCode_PHASE_CODE_S2N PhaseCode = 17 //Secondary phase 2 and neutral. + PhaseCode_PHASE_CODE_S12N PhaseCode = 18 //Secondary phases 1, 2, and neutral. + PhaseCode_PHASE_CODE_S1 PhaseCode = 19 //Secondary phase 1. + PhaseCode_PHASE_CODE_S2 PhaseCode = 20 //Secondary phase 2. + PhaseCode_PHASE_CODE_S12 PhaseCode = 21 //Secondary phase 1 and 2. + PhaseCode_PHASE_CODE_X PhaseCode = 22 //Unknown non-neutral phase. + PhaseCode_PHASE_CODE_XY PhaseCode = 23 //Two unknown non-neutral phases. + PhaseCode_PHASE_CODE_XN PhaseCode = 24 //Unknown non-neutral phase plus neutral. + PhaseCode_PHASE_CODE_XYN PhaseCode = 25 //Two unknown non-neutral phases plus neutral. +) + +// Enum value maps for PhaseCode. +var ( + PhaseCode_name = map[int32]string{ + 0: "PHASE_CODE_UNSPECIFIED", + 1: "PHASE_CODE_A", + 2: "PHASE_CODE_B", + 3: "PHASE_CODE_C", + 4: "PHASE_CODE_N", + 5: "PHASE_CODE_AB", + 6: "PHASE_CODE_AC", + 7: "PHASE_CODE_BC", + 8: "PHASE_CODE_AN", + 9: "PHASE_CODE_BN", + 10: "PHASE_CODE_CN", + 11: "PHASE_CODE_ABC", + 12: "PHASE_CODE_ABN", + 13: "PHASE_CODE_ACN", + 14: "PHASE_CODE_BCN", + 15: "PHASE_CODE_ABCN", + 16: "PHASE_CODE_S1N", + 17: "PHASE_CODE_S2N", + 18: "PHASE_CODE_S12N", + 19: "PHASE_CODE_S1", + 20: "PHASE_CODE_S2", + 21: "PHASE_CODE_S12", + 22: "PHASE_CODE_X", + 23: "PHASE_CODE_XY", + 24: "PHASE_CODE_XN", + 25: "PHASE_CODE_XYN", + } + PhaseCode_value = map[string]int32{ + "PHASE_CODE_UNSPECIFIED": 0, + "PHASE_CODE_A": 1, + "PHASE_CODE_B": 2, + "PHASE_CODE_C": 3, + "PHASE_CODE_N": 4, + "PHASE_CODE_AB": 5, + "PHASE_CODE_AC": 6, + "PHASE_CODE_BC": 7, + "PHASE_CODE_AN": 8, + "PHASE_CODE_BN": 9, + "PHASE_CODE_CN": 10, + "PHASE_CODE_ABC": 11, + "PHASE_CODE_ABN": 12, + "PHASE_CODE_ACN": 13, + "PHASE_CODE_BCN": 14, + "PHASE_CODE_ABCN": 15, + "PHASE_CODE_S1N": 16, + "PHASE_CODE_S2N": 17, + "PHASE_CODE_S12N": 18, + "PHASE_CODE_S1": 19, + "PHASE_CODE_S2": 20, + "PHASE_CODE_S12": 21, + "PHASE_CODE_X": 22, + "PHASE_CODE_XY": 23, + "PHASE_CODE_XN": 24, + "PHASE_CODE_XYN": 25, + } +) + +func (x PhaseCode) Enum() *PhaseCode { + p := new(PhaseCode) + *p = x + return p +} + +func (x PhaseCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PhaseCode) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_fault_proto_enumTypes[1].Descriptor() +} + +func (PhaseCode) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_fault_proto_enumTypes[1] +} + +func (x PhaseCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PhaseCode.Descriptor instead. +func (PhaseCode) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{1} +} + +type FaultEventType int32 + +const ( + FaultEventType_FAULT_EVENT_TYPE_UNSPECIFIED FaultEventType = 0 //No status defined + FaultEventType_FAULT_EVENT_TYPE_STARTED FaultEventType = 1 //Fault started + FaultEventType_FAULT_EVENT_TYPE_LOCATED FaultEventType = 2 //Fault located + FaultEventType_FAULT_EVENT_TYPE_ENDED FaultEventType = 3 //Fault ended + FaultEventType_FAULT_EVENT_TYPE_UNKNOWN FaultEventType = 4 //Information available don't allow us to know if the Fault is active or complete +) + +// Enum value maps for FaultEventType. +var ( + FaultEventType_name = map[int32]string{ + 0: "FAULT_EVENT_TYPE_UNSPECIFIED", + 1: "FAULT_EVENT_TYPE_STARTED", + 2: "FAULT_EVENT_TYPE_LOCATED", + 3: "FAULT_EVENT_TYPE_ENDED", + 4: "FAULT_EVENT_TYPE_UNKNOWN", + } + FaultEventType_value = map[string]int32{ + "FAULT_EVENT_TYPE_UNSPECIFIED": 0, + "FAULT_EVENT_TYPE_STARTED": 1, + "FAULT_EVENT_TYPE_LOCATED": 2, + "FAULT_EVENT_TYPE_ENDED": 3, + "FAULT_EVENT_TYPE_UNKNOWN": 4, + } +) + +func (x FaultEventType) Enum() *FaultEventType { + p := new(FaultEventType) + *p = x + return p +} + +func (x FaultEventType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FaultEventType) Descriptor() protoreflect.EnumDescriptor { + return file_zaphiro_grid_v1_fault_proto_enumTypes[2].Descriptor() +} + +func (FaultEventType) Type() protoreflect.EnumType { + return &file_zaphiro_grid_v1_fault_proto_enumTypes[2] +} + +func (x FaultEventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FaultEventType.Descriptor instead. +func (FaultEventType) EnumDescriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{2} +} + +type Fault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) +} + +func (x *Fault) Reset() { + *x = Fault{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Fault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Fault) ProtoMessage() {} + +func (x *Fault) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Fault.ProtoReflect.Descriptor instead. +func (*Fault) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{0} +} + +func (x *Fault) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Fault) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +func (x *Fault) GetKind() PhaseConnectedFaultKind { + if x != nil { + return x.Kind + } + return PhaseConnectedFaultKind_PHASE_CONNECTED_FAULT_KIND_UNSPECIFIED +} + +func (x *Fault) GetPhases() PhaseCode { + if x != nil { + return x.Phases + } + return PhaseCode_PHASE_CODE_UNSPECIFIED +} + +func (x *Fault) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *Fault) GetFaultEventType() FaultEventType { + if x != nil { + return x.FaultEventType + } + return FaultEventType_FAULT_EVENT_TYPE_UNSPECIFIED +} + +func (x *Fault) GetFaultyEquipmentId() string { + if x != nil && x.FaultyEquipmentId != nil { + return *x.FaultyEquipmentId + } + return "" +} + +func (x *Fault) GetFaultCurrent() float32 { + if x != nil && x.FaultCurrent != nil { + return *x.FaultCurrent + } + return 0 +} + +func (x *Fault) GetImpactedEquipmentIds() []string { + if x != nil { + return x.ImpactedEquipmentIds + } + return nil +} + +func (x *Fault) GetUsedMeasurementIds() []*FaultMeasurement { + if x != nil { + return x.UsedMeasurementIds + } + return nil +} + +func (x *Fault) GetMeasurementTimestamp() int64 { + if x != nil && x.MeasurementTimestamp != nil { + return *x.MeasurementTimestamp + } + return 0 +} + +func (x *Fault) GetLocationProbability() float32 { + if x != nil && x.LocationProbability != nil { + return *x.LocationProbability + } + return 0 +} + +type LineFault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. +} + +func (x *LineFault) Reset() { + *x = LineFault{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LineFault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LineFault) ProtoMessage() {} + +func (x *LineFault) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LineFault.ProtoReflect.Descriptor instead. +func (*LineFault) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{1} +} + +func (x *LineFault) GetFault() *Fault { + if x != nil { + return x.Fault + } + return nil +} + +func (x *LineFault) GetLengthFromTerminal1() float32 { + if x != nil && x.LengthFromTerminal1 != nil { + return *x.LengthFromTerminal1 + } + return 0 +} + +func (x *LineFault) GetLengthUncertainty() float32 { + if x != nil && x.LengthUncertainty != nil { + return *x.LengthUncertainty + } + return 0 +} + +type EquipmentFault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. +} + +func (x *EquipmentFault) Reset() { + *x = EquipmentFault{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EquipmentFault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EquipmentFault) ProtoMessage() {} + +func (x *EquipmentFault) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EquipmentFault.ProtoReflect.Descriptor instead. +func (*EquipmentFault) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{2} +} + +func (x *EquipmentFault) GetFault() *Fault { + if x != nil { + return x.Fault + } + return nil +} + +func (x *EquipmentFault) GetTerminalID() string { + if x != nil && x.TerminalID != nil { + return *x.TerminalID + } + return "" +} + +type FaultMeasurement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PositiveSign bool `protobuf:"varint,1,opt,name=positiveSign,proto3" json:"positiveSign,omitempty"` // The sign to be used for the measurement (`true` positive, `false` negative). + MeasurementID string `protobuf:"bytes,2,opt,name=measurementID,proto3" json:"measurementID,omitempty"` // The ID of a measurement used to locate the fault. +} + +func (x *FaultMeasurement) Reset() { + *x = FaultMeasurement{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FaultMeasurement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FaultMeasurement) ProtoMessage() {} + +func (x *FaultMeasurement) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_fault_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FaultMeasurement.ProtoReflect.Descriptor instead. +func (*FaultMeasurement) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_fault_proto_rawDescGZIP(), []int{3} +} + +func (x *FaultMeasurement) GetPositiveSign() bool { + if x != nil { + return x.PositiveSign + } + return false +} + +func (x *FaultMeasurement) GetMeasurementID() string { + if x != nil { + return x.MeasurementID + } + return "" +} + +var File_zaphiro_grid_v1_fault_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_fault_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x22, 0xd2, + 0x05, 0x0a, 0x05, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, + 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, + 0x75, 0x6c, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, + 0x06, 0x70, 0x68, 0x61, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x70, 0x68, 0x61, 0x73, 0x65, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x47, 0x0a, 0x0e, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x11, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x79, 0x45, 0x71, 0x75, + 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x02, 0x52, 0x0c, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, + 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x14, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x45, 0x71, 0x75, 0x69, + 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x64, + 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, + 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x61, 0x73, + 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x12, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x6d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x14, 0x6d, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x04, 0x52, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x79, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x22, 0xd1, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x6e, 0x65, 0x46, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, + 0x35, 0x0a, 0x13, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x13, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x61, 0x6c, 0x31, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x11, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x55, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x01, 0x52, 0x11, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x55, 0x6e, 0x63, 0x65, 0x72, + 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, + 0x31, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x55, 0x6e, 0x63, 0x65, + 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x22, 0x72, 0x0a, 0x0e, 0x45, 0x71, 0x75, 0x69, 0x70, + 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, + 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x44, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x44, 0x22, 0x5c, 0x0a, 0x10, 0x46, + 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, + 0x69, 0x67, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x65, 0x61, 0x73, + 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x2a, 0x82, 0x02, 0x0a, 0x17, 0x50, 0x68, + 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x61, 0x75, 0x6c, + 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, + 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, + 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, + 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4c, + 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x35, 0x0a, + 0x31, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, + 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x45, + 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x4e, 0x44, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x04, 0x2a, 0x89, + 0x04, 0x0a, 0x09, 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53, + 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x10, 0x03, 0x12, 0x10, + 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x10, 0x04, + 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, + 0x42, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x41, 0x43, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x43, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, + 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4e, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4e, 0x10, 0x09, 0x12, + 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4e, + 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x41, 0x42, 0x43, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x42, 0x4e, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x43, 0x4e, 0x10, 0x0d, 0x12, 0x12, + 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x43, 0x4e, + 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x41, 0x42, 0x43, 0x4e, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x31, 0x4e, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x50, + 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x32, 0x4e, 0x10, 0x11, 0x12, + 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x31, + 0x32, 0x4e, 0x10, 0x12, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x53, 0x31, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x32, 0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x31, 0x32, 0x10, 0x15, 0x12, 0x10, + 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x10, 0x16, + 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, + 0x59, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x58, 0x4e, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x59, 0x4e, 0x10, 0x19, 0x2a, 0xa8, 0x01, 0x0a, 0x0e, 0x46, + 0x61, 0x75, 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x1c, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, + 0x18, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x46, + 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x04, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_fault_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_fault_proto_rawDescData = file_zaphiro_grid_v1_fault_proto_rawDesc +) + +func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + }) + return file_zaphiro_grid_v1_fault_proto_rawDescData +} + +var file_zaphiro_grid_v1_fault_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_zaphiro_grid_v1_fault_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_zaphiro_grid_v1_fault_proto_goTypes = []interface{}{ + (PhaseConnectedFaultKind)(0), // 0: zaphiro.grid.v1.PhaseConnectedFaultKind + (PhaseCode)(0), // 1: zaphiro.grid.v1.PhaseCode + (FaultEventType)(0), // 2: zaphiro.grid.v1.FaultEventType + (*Fault)(nil), // 3: zaphiro.grid.v1.Fault + (*LineFault)(nil), // 4: zaphiro.grid.v1.LineFault + (*EquipmentFault)(nil), // 5: zaphiro.grid.v1.EquipmentFault + (*FaultMeasurement)(nil), // 6: zaphiro.grid.v1.FaultMeasurement +} +var file_zaphiro_grid_v1_fault_proto_depIdxs = []int32{ + 0, // 0: zaphiro.grid.v1.Fault.kind:type_name -> zaphiro.grid.v1.PhaseConnectedFaultKind + 1, // 1: zaphiro.grid.v1.Fault.phases:type_name -> zaphiro.grid.v1.PhaseCode + 2, // 2: zaphiro.grid.v1.Fault.faultEventType:type_name -> zaphiro.grid.v1.FaultEventType + 6, // 3: zaphiro.grid.v1.Fault.usedMeasurementIds:type_name -> zaphiro.grid.v1.FaultMeasurement + 3, // 4: zaphiro.grid.v1.LineFault.fault:type_name -> zaphiro.grid.v1.Fault + 3, // 5: zaphiro.grid.v1.EquipmentFault.fault:type_name -> zaphiro.grid.v1.Fault + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_fault_proto_init() } +func file_zaphiro_grid_v1_fault_proto_init() { + if File_zaphiro_grid_v1_fault_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_fault_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Fault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LineFault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EquipmentFault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FaultMeasurement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_fault_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_zaphiro_grid_v1_fault_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_zaphiro_grid_v1_fault_proto_msgTypes[2].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_fault_proto_rawDesc, + NumEnums: 3, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_fault_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_fault_proto_depIdxs, + EnumInfos: file_zaphiro_grid_v1_fault_proto_enumTypes, + MessageInfos: file_zaphiro_grid_v1_fault_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_fault_proto = out.File + file_zaphiro_grid_v1_fault_proto_rawDesc = nil + file_zaphiro_grid_v1_fault_proto_goTypes = nil + file_zaphiro_grid_v1_fault_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go new file mode 100644 index 0000000..2da6e2a --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/grid_event.pb.go @@ -0,0 +1,1272 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/grid_event.proto + +// +//Messages to support grid event detection in the platform. Grid events are sub classes of Events. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GridEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. +} + +func (x *GridEvent) Reset() { + *x = GridEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GridEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GridEvent) ProtoMessage() {} + +func (x *GridEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GridEvent.ProtoReflect.Descriptor instead. +func (*GridEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{0} +} + +func (x *GridEvent) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *GridEvent) GetComponentID() string { + if x != nil { + return x.ComponentID + } + return "" +} + +func (x *GridEvent) GetSubstationID() string { + if x != nil && x.SubstationID != nil { + return *x.SubstationID + } + return "" +} + +func (x *GridEvent) GetValue() float64 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *GridEvent) GetReferenceLimit() float64 { + if x != nil { + return x.ReferenceLimit + } + return 0 +} + +func (x *GridEvent) GetProbability() float64 { + if x != nil && x.Probability != nil { + return *x.Probability + } + return 0 +} + +type VoltageEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured +} + +func (x *VoltageEvent) Reset() { + *x = VoltageEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageEvent) ProtoMessage() {} + +func (x *VoltageEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageEvent.ProtoReflect.Descriptor instead. +func (*VoltageEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{1} +} + +func (x *VoltageEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +func (x *VoltageEvent) GetPhaseCode() PhaseCode { + if x != nil && x.PhaseCode != nil { + return *x.PhaseCode + } + return PhaseCode_PHASE_CODE_UNSPECIFIED +} + +type CurrentEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message +} + +func (x *CurrentEvent) Reset() { + *x = CurrentEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CurrentEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CurrentEvent) ProtoMessage() {} + +func (x *CurrentEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CurrentEvent.ProtoReflect.Descriptor instead. +func (*CurrentEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{2} +} + +func (x *CurrentEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +type PhaseEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message +} + +func (x *PhaseEvent) Reset() { + *x = PhaseEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PhaseEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PhaseEvent) ProtoMessage() {} + +func (x *PhaseEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PhaseEvent.ProtoReflect.Descriptor instead. +func (*PhaseEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{3} +} + +func (x *PhaseEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +type FrequencyEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message +} + +func (x *FrequencyEvent) Reset() { + *x = FrequencyEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FrequencyEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrequencyEvent) ProtoMessage() {} + +func (x *FrequencyEvent) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrequencyEvent.ProtoReflect.Descriptor instead. +func (*FrequencyEvent) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{4} +} + +func (x *FrequencyEvent) GetEvent() *GridEvent { + if x != nil { + return x.Event + } + return nil +} + +type LineCongestion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *CurrentEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base current grid event message +} + +func (x *LineCongestion) Reset() { + *x = LineCongestion{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LineCongestion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LineCongestion) ProtoMessage() {} + +func (x *LineCongestion) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LineCongestion.ProtoReflect.Descriptor instead. +func (*LineCongestion) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{5} +} + +func (x *LineCongestion) GetEvent() *CurrentEvent { + if x != nil { + return x.Event + } + return nil +} + +type TransformerCongestion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *CurrentEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base current grid event message +} + +func (x *TransformerCongestion) Reset() { + *x = TransformerCongestion{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransformerCongestion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformerCongestion) ProtoMessage() {} + +func (x *TransformerCongestion) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformerCongestion.ProtoReflect.Descriptor instead. +func (*TransformerCongestion) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{6} +} + +func (x *TransformerCongestion) GetEvent() *CurrentEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageUnbalance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageUnbalance) Reset() { + *x = VoltageUnbalance{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageUnbalance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageUnbalance) ProtoMessage() {} + +func (x *VoltageUnbalance) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageUnbalance.ProtoReflect.Descriptor instead. +func (*VoltageUnbalance) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{7} +} + +func (x *VoltageUnbalance) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageDip struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageDip) Reset() { + *x = VoltageDip{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageDip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageDip) ProtoMessage() {} + +func (x *VoltageDip) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageDip.ProtoReflect.Descriptor instead. +func (*VoltageDip) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{8} +} + +func (x *VoltageDip) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageInterruption struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageInterruption) Reset() { + *x = VoltageInterruption{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageInterruption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageInterruption) ProtoMessage() {} + +func (x *VoltageInterruption) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageInterruption.ProtoReflect.Descriptor instead. +func (*VoltageInterruption) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{9} +} + +func (x *VoltageInterruption) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageSwell struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageSwell) Reset() { + *x = VoltageSwell{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageSwell) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageSwell) ProtoMessage() {} + +func (x *VoltageSwell) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageSwell.ProtoReflect.Descriptor instead. +func (*VoltageSwell) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{10} +} + +func (x *VoltageSwell) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageLimit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageLimit) Reset() { + *x = VoltageLimit{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageLimit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageLimit) ProtoMessage() {} + +func (x *VoltageLimit) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageLimit.ProtoReflect.Descriptor instead. +func (*VoltageLimit) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{11} +} + +func (x *VoltageLimit) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type VoltageRapidChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *VoltageEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base voltage grid event message +} + +func (x *VoltageRapidChange) Reset() { + *x = VoltageRapidChange{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VoltageRapidChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VoltageRapidChange) ProtoMessage() {} + +func (x *VoltageRapidChange) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VoltageRapidChange.ProtoReflect.Descriptor instead. +func (*VoltageRapidChange) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{12} +} + +func (x *VoltageRapidChange) GetEvent() *VoltageEvent { + if x != nil { + return x.Event + } + return nil +} + +type OverFrequency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *FrequencyEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base frequency grid event message +} + +func (x *OverFrequency) Reset() { + *x = OverFrequency{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OverFrequency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OverFrequency) ProtoMessage() {} + +func (x *OverFrequency) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OverFrequency.ProtoReflect.Descriptor instead. +func (*OverFrequency) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{13} +} + +func (x *OverFrequency) GetEvent() *FrequencyEvent { + if x != nil { + return x.Event + } + return nil +} + +type UnderFrequency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *FrequencyEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base frequency grid event message +} + +func (x *UnderFrequency) Reset() { + *x = UnderFrequency{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnderFrequency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnderFrequency) ProtoMessage() {} + +func (x *UnderFrequency) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnderFrequency.ProtoReflect.Descriptor instead. +func (*UnderFrequency) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{14} +} + +func (x *UnderFrequency) GetEvent() *FrequencyEvent { + if x != nil { + return x.Event + } + return nil +} + +type SteadyOscillation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *PhaseEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base phase grid event message +} + +func (x *SteadyOscillation) Reset() { + *x = SteadyOscillation{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SteadyOscillation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SteadyOscillation) ProtoMessage() {} + +func (x *SteadyOscillation) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SteadyOscillation.ProtoReflect.Descriptor instead. +func (*SteadyOscillation) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{15} +} + +func (x *SteadyOscillation) GetEvent() *PhaseEvent { + if x != nil { + return x.Event + } + return nil +} + +type TransientOscillation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *PhaseEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base phase grid event message +} + +func (x *TransientOscillation) Reset() { + *x = TransientOscillation{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransientOscillation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransientOscillation) ProtoMessage() {} + +func (x *TransientOscillation) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_grid_event_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransientOscillation.ProtoReflect.Descriptor instead. +func (*TransientOscillation) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP(), []int{16} +} + +func (x *TransientOscillation) GetEvent() *PhaseEvent { + if x != nil { + return x.Event + } + return nil +} + +var File_zaphiro_grid_v1_grid_event_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_grid_event_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0f, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, + 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1b, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x02, + 0x0a, 0x09, 0x47, 0x72, 0x69, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x7a, 0x61, 0x70, + 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x27, 0x0a, 0x0c, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, + 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x0c, 0x56, + 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, + 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, + 0x09, 0x70, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, + 0x70, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x40, 0x0a, 0x0c, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, 0x68, + 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0x0a, 0x0a, + 0x50, 0x68, 0x61, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x7a, 0x61, 0x70, 0x68, + 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x42, 0x0a, 0x0e, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, + 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x72, 0x69, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x45, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x4c, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x10, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, + 0x55, 0x6e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, + 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x74, 0x61, + 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x41, + 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x44, 0x69, 0x70, 0x12, 0x33, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, + 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x4a, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, + 0x0c, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x53, 0x77, 0x65, 0x6c, 0x6c, 0x12, 0x33, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x49, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x61, 0x70, 0x69, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x33, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x7a, + 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x0d, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x0e, 0x55, 0x6e, + 0x64, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x35, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x11, 0x53, 0x74, 0x65, 0x61, 0x64, 0x79, 0x4f, 0x73, 0x63, + 0x69, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x49, 0x0a, 0x14, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x73, 0x63, 0x69, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, + 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_grid_event_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_grid_event_proto_rawDescData = file_zaphiro_grid_v1_grid_event_proto_rawDesc +) + +func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + }) + return file_zaphiro_grid_v1_grid_event_proto_rawDescData +} + +var file_zaphiro_grid_v1_grid_event_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_zaphiro_grid_v1_grid_event_proto_goTypes = []interface{}{ + (*GridEvent)(nil), // 0: zaphiro.grid.v1.GridEvent + (*VoltageEvent)(nil), // 1: zaphiro.grid.v1.VoltageEvent + (*CurrentEvent)(nil), // 2: zaphiro.grid.v1.CurrentEvent + (*PhaseEvent)(nil), // 3: zaphiro.grid.v1.PhaseEvent + (*FrequencyEvent)(nil), // 4: zaphiro.grid.v1.FrequencyEvent + (*LineCongestion)(nil), // 5: zaphiro.grid.v1.LineCongestion + (*TransformerCongestion)(nil), // 6: zaphiro.grid.v1.TransformerCongestion + (*VoltageUnbalance)(nil), // 7: zaphiro.grid.v1.VoltageUnbalance + (*VoltageDip)(nil), // 8: zaphiro.grid.v1.VoltageDip + (*VoltageInterruption)(nil), // 9: zaphiro.grid.v1.VoltageInterruption + (*VoltageSwell)(nil), // 10: zaphiro.grid.v1.VoltageSwell + (*VoltageLimit)(nil), // 11: zaphiro.grid.v1.VoltageLimit + (*VoltageRapidChange)(nil), // 12: zaphiro.grid.v1.VoltageRapidChange + (*OverFrequency)(nil), // 13: zaphiro.grid.v1.OverFrequency + (*UnderFrequency)(nil), // 14: zaphiro.grid.v1.UnderFrequency + (*SteadyOscillation)(nil), // 15: zaphiro.grid.v1.SteadyOscillation + (*TransientOscillation)(nil), // 16: zaphiro.grid.v1.TransientOscillation + (*Event)(nil), // 17: zaphiro.grid.v1.Event + (PhaseCode)(0), // 18: zaphiro.grid.v1.PhaseCode +} +var file_zaphiro_grid_v1_grid_event_proto_depIdxs = []int32{ + 17, // 0: zaphiro.grid.v1.GridEvent.event:type_name -> zaphiro.grid.v1.Event + 0, // 1: zaphiro.grid.v1.VoltageEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 18, // 2: zaphiro.grid.v1.VoltageEvent.phaseCode:type_name -> zaphiro.grid.v1.PhaseCode + 0, // 3: zaphiro.grid.v1.CurrentEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 0, // 4: zaphiro.grid.v1.PhaseEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 0, // 5: zaphiro.grid.v1.FrequencyEvent.event:type_name -> zaphiro.grid.v1.GridEvent + 2, // 6: zaphiro.grid.v1.LineCongestion.event:type_name -> zaphiro.grid.v1.CurrentEvent + 2, // 7: zaphiro.grid.v1.TransformerCongestion.event:type_name -> zaphiro.grid.v1.CurrentEvent + 1, // 8: zaphiro.grid.v1.VoltageUnbalance.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 9: zaphiro.grid.v1.VoltageDip.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 10: zaphiro.grid.v1.VoltageInterruption.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 11: zaphiro.grid.v1.VoltageSwell.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 12: zaphiro.grid.v1.VoltageLimit.event:type_name -> zaphiro.grid.v1.VoltageEvent + 1, // 13: zaphiro.grid.v1.VoltageRapidChange.event:type_name -> zaphiro.grid.v1.VoltageEvent + 4, // 14: zaphiro.grid.v1.OverFrequency.event:type_name -> zaphiro.grid.v1.FrequencyEvent + 4, // 15: zaphiro.grid.v1.UnderFrequency.event:type_name -> zaphiro.grid.v1.FrequencyEvent + 3, // 16: zaphiro.grid.v1.SteadyOscillation.event:type_name -> zaphiro.grid.v1.PhaseEvent + 3, // 17: zaphiro.grid.v1.TransientOscillation.event:type_name -> zaphiro.grid.v1.PhaseEvent + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_grid_event_proto_init() } +func file_zaphiro_grid_v1_grid_event_proto_init() { + if File_zaphiro_grid_v1_grid_event_proto != nil { + return + } + file_zaphiro_grid_v1_event_proto_init() + file_zaphiro_grid_v1_fault_proto_init() + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_grid_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GridEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrentEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PhaseEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FrequencyEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LineCongestion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransformerCongestion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageUnbalance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageDip); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageInterruption); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageSwell); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageLimit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VoltageRapidChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OverFrequency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnderFrequency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SteadyOscillation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransientOscillation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_zaphiro_grid_v1_grid_event_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_zaphiro_grid_v1_grid_event_proto_msgTypes[1].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_grid_event_proto_rawDesc, + NumEnums: 0, + NumMessages: 17, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_grid_event_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_grid_event_proto_depIdxs, + MessageInfos: file_zaphiro_grid_v1_grid_event_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_grid_event_proto = out.File + file_zaphiro_grid_v1_grid_event_proto_rawDesc = nil + file_zaphiro_grid_v1_grid_event_proto_goTypes = nil + file_zaphiro_grid_v1_grid_event_proto_depIdxs = nil +} diff --git a/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go new file mode 100644 index 0000000..130f1a1 --- /dev/null +++ b/examples/go/vendor/github.com/zaphiro-technologies/protobuf/go/grid/v1/topology.pb.go @@ -0,0 +1,547 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: zaphiro/grid/v1/topology.proto + +// +//Messages to support topology data exchange in the platform. + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Topology struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. +} + +func (x *Topology) Reset() { + *x = Topology{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Topology) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topology) ProtoMessage() {} + +func (x *Topology) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topology.ProtoReflect.Descriptor instead. +func (*Topology) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{0} +} + +func (x *Topology) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *Topology) GetTp() []byte { + if x != nil { + return x.Tp + } + return nil +} + +// A topology Node information. +// To be used in ComputedTopology message. +type TopologicalNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. +} + +func (x *TopologicalNode) Reset() { + *x = TopologicalNode{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TopologicalNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TopologicalNode) ProtoMessage() {} + +func (x *TopologicalNode) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TopologicalNode.ProtoReflect.Descriptor instead. +func (*TopologicalNode) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{1} +} + +func (x *TopologicalNode) GetTerminalIds() []string { + if x != nil { + return x.TerminalIds + } + return nil +} + +func (x *TopologicalNode) GetConnectivityNodeIds() []string { + if x != nil { + return x.ConnectivityNodeIds + } + return nil +} + +func (x *TopologicalNode) GetBranchIds() []string { + if x != nil { + return x.BranchIds + } + return nil +} + +func (x *TopologicalNode) GetConnectivityNodeContainerId() string { + if x != nil { + return x.ConnectivityNodeContainerId + } + return "" +} + +func (x *TopologicalNode) GetBaseVoltageId() string { + if x != nil { + return x.BaseVoltageId + } + return "" +} + +func (x *TopologicalNode) GetBaseVoltage() float64 { + if x != nil { + return x.BaseVoltage + } + return 0 +} + +// A topology Island information. +// To be used in ComputedTopology message. +type TopologicalIsland struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. +} + +func (x *TopologicalIsland) Reset() { + *x = TopologicalIsland{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TopologicalIsland) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TopologicalIsland) ProtoMessage() {} + +func (x *TopologicalIsland) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TopologicalIsland.ProtoReflect.Descriptor instead. +func (*TopologicalIsland) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{2} +} + +func (x *TopologicalIsland) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TopologicalIsland) GetTopologicalNodes() map[string]*TopologicalNode { + if x != nil { + return x.TopologicalNodes + } + return nil +} + +// A wrapper in order to use an array in the map in TopologicalIsland. +// It represents the connections between the TopologicalNodes in the TopologicalIsland. +type BranchConnection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TopologicalNodeIds []string `protobuf:"bytes,1,rep,name=TopologicalNodeIds,proto3" json:"TopologicalNodeIds,omitempty"` // The list of TopologicalNode ids connected to the Branch. +} + +func (x *BranchConnection) Reset() { + *x = BranchConnection{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BranchConnection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BranchConnection) ProtoMessage() {} + +func (x *BranchConnection) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BranchConnection.ProtoReflect.Descriptor instead. +func (*BranchConnection) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{3} +} + +func (x *BranchConnection) GetTopologicalNodeIds() []string { + if x != nil { + return x.TopologicalNodeIds + } + return nil +} + +// A processed topology information. +// Headers used in rabbitMQ: +// `id` (string): id of the `Topology` +// `type` (string): always `ComputedTopology` +// `producerId` (string): the id of the producer (e.g. a PMU) linked to the dataset. +// `timestampId` (int64): related measurement Unix msec timestamp (if any) +// `subnetworkId` (string): the sub network id for which the topology was computed +type ComputedTopology struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. +} + +func (x *ComputedTopology) Reset() { + *x = ComputedTopology{} + if protoimpl.UnsafeEnabled { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ComputedTopology) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ComputedTopology) ProtoMessage() {} + +func (x *ComputedTopology) ProtoReflect() protoreflect.Message { + mi := &file_zaphiro_grid_v1_topology_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ComputedTopology.ProtoReflect.Descriptor instead. +func (*ComputedTopology) Descriptor() ([]byte, []int) { + return file_zaphiro_grid_v1_topology_proto_rawDescGZIP(), []int{4} +} + +func (x *ComputedTopology) GetEqId() string { + if x != nil { + return x.EqId + } + return "" +} + +func (x *ComputedTopology) GetTopologicalIslands() map[string]*TopologicalIsland { + if x != nil { + return x.TopologicalIslands + } + return nil +} + +func (x *ComputedTopology) GetBranchConnections() map[string]*BranchConnection { + if x != nil { + return x.BranchConnections + } + return nil +} + +var File_zaphiro_grid_v1_topology_proto protoreflect.FileDescriptor + +var file_zaphiro_grid_v1_topology_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0f, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x22, 0x38, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x70, 0x22, 0x8d, 0x02, 0x0a, 0x0f, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x64, + 0x73, 0x12, 0x30, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x64, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x49, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x49, 0x64, + 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x73, 0x65, 0x56, 0x6f, 0x6c, 0x74, 0x61, + 0x67, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x61, 0x73, 0x65, + 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x73, + 0x65, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, + 0x42, 0x61, 0x73, 0x65, 0x56, 0x6f, 0x6c, 0x74, 0x61, 0x67, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x11, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x64, 0x0a, 0x10, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x7a, 0x61, + 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x2e, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, + 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x1a, 0x65, 0x0a, 0x15, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, + 0x0a, 0x10, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x49, + 0x64, 0x73, 0x22, 0xcd, 0x03, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x54, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x71, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x71, 0x49, 0x64, 0x12, 0x69, 0x0a, 0x12, 0x74, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, + 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x12, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, + 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x66, 0x0a, 0x11, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x42, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x69, + 0x0a, 0x17, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, + 0x61, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x7a, 0x61, 0x70, + 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, 0x16, 0x42, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x7a, 0x61, 0x70, 0x68, 0x69, 0x72, 0x6f, 0x2e, 0x67, + 0x72, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_zaphiro_grid_v1_topology_proto_rawDescOnce sync.Once + file_zaphiro_grid_v1_topology_proto_rawDescData = file_zaphiro_grid_v1_topology_proto_rawDesc +) + +func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { + file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + }) + return file_zaphiro_grid_v1_topology_proto_rawDescData +} + +var file_zaphiro_grid_v1_topology_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_zaphiro_grid_v1_topology_proto_goTypes = []interface{}{ + (*Topology)(nil), // 0: zaphiro.grid.v1.Topology + (*TopologicalNode)(nil), // 1: zaphiro.grid.v1.TopologicalNode + (*TopologicalIsland)(nil), // 2: zaphiro.grid.v1.TopologicalIsland + (*BranchConnection)(nil), // 3: zaphiro.grid.v1.BranchConnection + (*ComputedTopology)(nil), // 4: zaphiro.grid.v1.ComputedTopology + nil, // 5: zaphiro.grid.v1.TopologicalIsland.TopologicalNodesEntry + nil, // 6: zaphiro.grid.v1.ComputedTopology.TopologicalIslandsEntry + nil, // 7: zaphiro.grid.v1.ComputedTopology.BranchConnectionsEntry +} +var file_zaphiro_grid_v1_topology_proto_depIdxs = []int32{ + 5, // 0: zaphiro.grid.v1.TopologicalIsland.TopologicalNodes:type_name -> zaphiro.grid.v1.TopologicalIsland.TopologicalNodesEntry + 6, // 1: zaphiro.grid.v1.ComputedTopology.topologicalIslands:type_name -> zaphiro.grid.v1.ComputedTopology.TopologicalIslandsEntry + 7, // 2: zaphiro.grid.v1.ComputedTopology.BranchConnections:type_name -> zaphiro.grid.v1.ComputedTopology.BranchConnectionsEntry + 1, // 3: zaphiro.grid.v1.TopologicalIsland.TopologicalNodesEntry.value:type_name -> zaphiro.grid.v1.TopologicalNode + 2, // 4: zaphiro.grid.v1.ComputedTopology.TopologicalIslandsEntry.value:type_name -> zaphiro.grid.v1.TopologicalIsland + 3, // 5: zaphiro.grid.v1.ComputedTopology.BranchConnectionsEntry.value:type_name -> zaphiro.grid.v1.BranchConnection + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_zaphiro_grid_v1_topology_proto_init() } +func file_zaphiro_grid_v1_topology_proto_init() { + if File_zaphiro_grid_v1_topology_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_zaphiro_grid_v1_topology_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Topology); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TopologicalNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TopologicalIsland); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BranchConnection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_zaphiro_grid_v1_topology_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ComputedTopology); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_zaphiro_grid_v1_topology_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_zaphiro_grid_v1_topology_proto_goTypes, + DependencyIndexes: file_zaphiro_grid_v1_topology_proto_depIdxs, + MessageInfos: file_zaphiro_grid_v1_topology_proto_msgTypes, + }.Build() + File_zaphiro_grid_v1_topology_proto = out.File + file_zaphiro_grid_v1_topology_proto_rawDesc = nil + file_zaphiro_grid_v1_topology_proto_goTypes = nil + file_zaphiro_grid_v1_topology_proto_depIdxs = nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/LICENSE b/examples/go/vendor/google.golang.org/protobuf/LICENSE new file mode 100644 index 0000000..49ea0f9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2018 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/go/vendor/google.golang.org/protobuf/PATENTS b/examples/go/vendor/google.golang.org/protobuf/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go new file mode 100644 index 0000000..24bc98a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/decode.go @@ -0,0 +1,772 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package prototext + +import ( + "fmt" + "unicode/utf8" + + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/encoding/text" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/internal/set" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Unmarshal reads the given []byte into the given [proto.Message]. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +func Unmarshal(b []byte, m proto.Message) error { + return UnmarshalOptions{}.Unmarshal(b, m) +} + +// UnmarshalOptions is a configurable textproto format unmarshaler. +type UnmarshalOptions struct { + pragma.NoUnkeyedLiterals + + // AllowPartial accepts input for messages that will result in missing + // required fields. If AllowPartial is false (the default), Unmarshal will + // return error if there are any missing required fields. + AllowPartial bool + + // DiscardUnknown specifies whether to ignore unknown fields when parsing. + // An unknown field is any field whose field name or field number does not + // resolve to any known or extension field in the message. + // By default, unmarshal rejects unknown fields as an error. + DiscardUnknown bool + + // Resolver is used for looking up types when unmarshaling + // google.protobuf.Any messages or extension fields. + // If nil, this defaults to using protoregistry.GlobalTypes. + Resolver interface { + protoregistry.MessageTypeResolver + protoregistry.ExtensionTypeResolver + } +} + +// Unmarshal reads the given []byte and populates the given [proto.Message] +// using options in the UnmarshalOptions object. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error { + return o.unmarshal(b, m) +} + +// unmarshal is a centralized function that all unmarshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for unmarshal that do not go through this. +func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error { + proto.Reset(m) + + if o.Resolver == nil { + o.Resolver = protoregistry.GlobalTypes + } + + dec := decoder{text.NewDecoder(b), o} + if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil { + return err + } + if o.AllowPartial { + return nil + } + return proto.CheckInitialized(m) +} + +type decoder struct { + *text.Decoder + opts UnmarshalOptions +} + +// newError returns an error object with position info. +func (d decoder) newError(pos int, f string, x ...any) error { + line, column := d.Position(pos) + head := fmt.Sprintf("(line %d:%d): ", line, column) + return errors.New(head+f, x...) +} + +// unexpectedTokenError returns a syntax error for the given unexpected token. +func (d decoder) unexpectedTokenError(tok text.Token) error { + return d.syntaxError(tok.Pos(), "unexpected token: %s", tok.RawString()) +} + +// syntaxError returns a syntax error for given position. +func (d decoder) syntaxError(pos int, f string, x ...any) error { + line, column := d.Position(pos) + head := fmt.Sprintf("syntax error (line %d:%d): ", line, column) + return errors.New(head+f, x...) +} + +// unmarshalMessage unmarshals into the given protoreflect.Message. +func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error { + messageDesc := m.Descriptor() + if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { + return errors.New("no support for proto1 MessageSets") + } + + if messageDesc.FullName() == genid.Any_message_fullname { + return d.unmarshalAny(m, checkDelims) + } + + if checkDelims { + tok, err := d.Read() + if err != nil { + return err + } + + if tok.Kind() != text.MessageOpen { + return d.unexpectedTokenError(tok) + } + } + + var seenNums set.Ints + var seenOneofs set.Ints + fieldDescs := messageDesc.Fields() + + for { + // Read field name. + tok, err := d.Read() + if err != nil { + return err + } + switch typ := tok.Kind(); typ { + case text.Name: + // Continue below. + case text.EOF: + if checkDelims { + return text.ErrUnexpectedEOF + } + return nil + default: + if checkDelims && typ == text.MessageClose { + return nil + } + return d.unexpectedTokenError(tok) + } + + // Resolve the field descriptor. + var name protoreflect.Name + var fd protoreflect.FieldDescriptor + var xt protoreflect.ExtensionType + var xtErr error + var isFieldNumberName bool + + switch tok.NameKind() { + case text.IdentName: + name = protoreflect.Name(tok.IdentName()) + fd = fieldDescs.ByTextName(string(name)) + + case text.TypeName: + // Handle extensions only. This code path is not for Any. + xt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName())) + + case text.FieldNumber: + isFieldNumberName = true + num := protoreflect.FieldNumber(tok.FieldNumber()) + if !num.IsValid() { + return d.newError(tok.Pos(), "invalid field number: %d", num) + } + fd = fieldDescs.ByNumber(num) + if fd == nil { + xt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num) + } + } + + if xt != nil { + fd = xt.TypeDescriptor() + if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() { + return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName()) + } + } else if xtErr != nil && xtErr != protoregistry.NotFound { + return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr) + } + if flags.ProtoLegacy { + if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() { + fd = nil // reset since the weak reference is not linked in + } + } + + // Handle unknown fields. + if fd == nil { + if d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) { + d.skipValue() + continue + } + return d.newError(tok.Pos(), "unknown field: %v", tok.RawString()) + } + + // Handle fields identified by field number. + if isFieldNumberName { + // TODO: Add an option to permit parsing field numbers. + // + // This requires careful thought as the MarshalOptions.EmitUnknown + // option allows formatting unknown fields as the field number and the + // best-effort textual representation of the field value. In that case, + // it may not be possible to unmarshal the value from a parser that does + // have information about the unknown field. + return d.newError(tok.Pos(), "cannot specify field by number: %v", tok.RawString()) + } + + switch { + case fd.IsList(): + kind := fd.Kind() + if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + + list := m.Mutable(fd).List() + if err := d.unmarshalList(fd, list); err != nil { + return err + } + + case fd.IsMap(): + mmap := m.Mutable(fd).Map() + if err := d.unmarshalMap(fd, mmap); err != nil { + return err + } + + default: + kind := fd.Kind() + if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + + // If field is a oneof, check if it has already been set. + if od := fd.ContainingOneof(); od != nil { + idx := uint64(od.Index()) + if seenOneofs.Has(idx) { + return d.newError(tok.Pos(), "error parsing %q, oneof %v is already set", tok.RawString(), od.FullName()) + } + seenOneofs.Set(idx) + } + + num := uint64(fd.Number()) + if seenNums.Has(num) { + return d.newError(tok.Pos(), "non-repeated field %q is repeated", tok.RawString()) + } + + if err := d.unmarshalSingular(fd, m); err != nil { + return err + } + seenNums.Set(num) + } + } + + return nil +} + +// unmarshalSingular unmarshals a non-repeated field value specified by the +// given FieldDescriptor. +func (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error { + var val protoreflect.Value + var err error + switch fd.Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + val = m.NewField(fd) + err = d.unmarshalMessage(val.Message(), true) + default: + val, err = d.unmarshalScalar(fd) + } + if err == nil { + m.Set(fd, val) + } + return err +} + +// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the +// given FieldDescriptor. +func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { + tok, err := d.Read() + if err != nil { + return protoreflect.Value{}, err + } + + if tok.Kind() != text.Scalar { + return protoreflect.Value{}, d.unexpectedTokenError(tok) + } + + kind := fd.Kind() + switch kind { + case protoreflect.BoolKind: + if b, ok := tok.Bool(); ok { + return protoreflect.ValueOfBool(b), nil + } + + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + if n, ok := tok.Int32(); ok { + return protoreflect.ValueOfInt32(n), nil + } + + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + if n, ok := tok.Int64(); ok { + return protoreflect.ValueOfInt64(n), nil + } + + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + if n, ok := tok.Uint32(); ok { + return protoreflect.ValueOfUint32(n), nil + } + + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + if n, ok := tok.Uint64(); ok { + return protoreflect.ValueOfUint64(n), nil + } + + case protoreflect.FloatKind: + if n, ok := tok.Float32(); ok { + return protoreflect.ValueOfFloat32(n), nil + } + + case protoreflect.DoubleKind: + if n, ok := tok.Float64(); ok { + return protoreflect.ValueOfFloat64(n), nil + } + + case protoreflect.StringKind: + if s, ok := tok.String(); ok { + if strs.EnforceUTF8(fd) && !utf8.ValidString(s) { + return protoreflect.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8") + } + return protoreflect.ValueOfString(s), nil + } + + case protoreflect.BytesKind: + if b, ok := tok.String(); ok { + return protoreflect.ValueOfBytes([]byte(b)), nil + } + + case protoreflect.EnumKind: + if lit, ok := tok.Enum(); ok { + // Lookup EnumNumber based on name. + if enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil { + return protoreflect.ValueOfEnum(enumVal.Number()), nil + } + } + if num, ok := tok.Int32(); ok { + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil + } + + default: + panic(fmt.Sprintf("invalid scalar kind %v", kind)) + } + + return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) +} + +// unmarshalList unmarshals into given protoreflect.List. A list value can +// either be in [] syntax or simply just a single scalar/message value. +func (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error { + tok, err := d.Peek() + if err != nil { + return err + } + + switch fd.Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + switch tok.Kind() { + case text.ListOpen: + d.Read() + for { + tok, err := d.Peek() + if err != nil { + return err + } + + switch tok.Kind() { + case text.ListClose: + d.Read() + return nil + case text.MessageOpen: + pval := list.NewElement() + if err := d.unmarshalMessage(pval.Message(), true); err != nil { + return err + } + list.Append(pval) + default: + return d.unexpectedTokenError(tok) + } + } + + case text.MessageOpen: + pval := list.NewElement() + if err := d.unmarshalMessage(pval.Message(), true); err != nil { + return err + } + list.Append(pval) + return nil + } + + default: + switch tok.Kind() { + case text.ListOpen: + d.Read() + for { + tok, err := d.Peek() + if err != nil { + return err + } + + switch tok.Kind() { + case text.ListClose: + d.Read() + return nil + case text.Scalar: + pval, err := d.unmarshalScalar(fd) + if err != nil { + return err + } + list.Append(pval) + default: + return d.unexpectedTokenError(tok) + } + } + + case text.Scalar: + pval, err := d.unmarshalScalar(fd) + if err != nil { + return err + } + list.Append(pval) + return nil + } + } + + return d.unexpectedTokenError(tok) +} + +// unmarshalMap unmarshals into given protoreflect.Map. A map value is a +// textproto message containing {key: , value: }. +func (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error { + // Determine ahead whether map entry is a scalar type or a message type in + // order to call the appropriate unmarshalMapValue func inside + // unmarshalMapEntry. + var unmarshalMapValue func() (protoreflect.Value, error) + switch fd.MapValue().Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + unmarshalMapValue = func() (protoreflect.Value, error) { + pval := mmap.NewValue() + if err := d.unmarshalMessage(pval.Message(), true); err != nil { + return protoreflect.Value{}, err + } + return pval, nil + } + default: + unmarshalMapValue = func() (protoreflect.Value, error) { + return d.unmarshalScalar(fd.MapValue()) + } + } + + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.MessageOpen: + return d.unmarshalMapEntry(fd, mmap, unmarshalMapValue) + + case text.ListOpen: + for { + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.ListClose: + return nil + case text.MessageOpen: + if err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil { + return err + } + default: + return d.unexpectedTokenError(tok) + } + } + + default: + return d.unexpectedTokenError(tok) + } +} + +// unmarshalMap unmarshals into given protoreflect.Map. A map value is a +// textproto message containing {key: , value: }. +func (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error { + var key protoreflect.MapKey + var pval protoreflect.Value +Loop: + for { + // Read field name. + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.Name: + if tok.NameKind() != text.IdentName { + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "unknown map entry field %q", tok.RawString()) + } + d.skipValue() + continue Loop + } + // Continue below. + case text.MessageClose: + break Loop + default: + return d.unexpectedTokenError(tok) + } + + switch name := protoreflect.Name(tok.IdentName()); name { + case genid.MapEntry_Key_field_name: + if !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + if key.IsValid() { + return d.newError(tok.Pos(), "map entry %q cannot be repeated", name) + } + val, err := d.unmarshalScalar(fd.MapKey()) + if err != nil { + return err + } + key = val.MapKey() + + case genid.MapEntry_Value_field_name: + if kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) { + if !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + } + if pval.IsValid() { + return d.newError(tok.Pos(), "map entry %q cannot be repeated", name) + } + pval, err = unmarshalMapValue() + if err != nil { + return err + } + + default: + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "unknown map entry field %q", name) + } + d.skipValue() + } + } + + if !key.IsValid() { + key = fd.MapKey().Default().MapKey() + } + if !pval.IsValid() { + switch fd.MapValue().Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + // If value field is not set for message/group types, construct an + // empty one as default. + pval = mmap.NewValue() + default: + pval = fd.MapValue().Default() + } + } + mmap.Set(key, pval) + return nil +} + +// unmarshalAny unmarshals an Any textproto. It can either be in expanded form +// or non-expanded form. +func (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error { + var typeURL string + var bValue []byte + var seenTypeUrl bool + var seenValue bool + var isExpanded bool + + if checkDelims { + tok, err := d.Read() + if err != nil { + return err + } + + if tok.Kind() != text.MessageOpen { + return d.unexpectedTokenError(tok) + } + } + +Loop: + for { + // Read field name. Can only have 3 possible field names, i.e. type_url, + // value and type URL name inside []. + tok, err := d.Read() + if err != nil { + return err + } + if typ := tok.Kind(); typ != text.Name { + if checkDelims { + if typ == text.MessageClose { + break Loop + } + } else if typ == text.EOF { + break Loop + } + return d.unexpectedTokenError(tok) + } + + switch tok.NameKind() { + case text.IdentName: + // Both type_url and value fields require field separator :. + if !tok.HasSeparator() { + return d.syntaxError(tok.Pos(), "missing field separator :") + } + + switch name := protoreflect.Name(tok.IdentName()); name { + case genid.Any_TypeUrl_field_name: + if seenTypeUrl { + return d.newError(tok.Pos(), "duplicate %v field", genid.Any_TypeUrl_field_fullname) + } + if isExpanded { + return d.newError(tok.Pos(), "conflict with [%s] field", typeURL) + } + tok, err := d.Read() + if err != nil { + return err + } + var ok bool + typeURL, ok = tok.String() + if !ok { + return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_TypeUrl_field_fullname, tok.RawString()) + } + seenTypeUrl = true + + case genid.Any_Value_field_name: + if seenValue { + return d.newError(tok.Pos(), "duplicate %v field", genid.Any_Value_field_fullname) + } + if isExpanded { + return d.newError(tok.Pos(), "conflict with [%s] field", typeURL) + } + tok, err := d.Read() + if err != nil { + return err + } + s, ok := tok.String() + if !ok { + return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_Value_field_fullname, tok.RawString()) + } + bValue = []byte(s) + seenValue = true + + default: + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname) + } + } + + case text.TypeName: + if isExpanded { + return d.newError(tok.Pos(), "cannot have more than one type") + } + if seenTypeUrl { + return d.newError(tok.Pos(), "conflict with type_url field") + } + typeURL = tok.TypeName() + var err error + bValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos()) + if err != nil { + return err + } + isExpanded = true + + default: + if !d.opts.DiscardUnknown { + return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname) + } + } + } + + fds := m.Descriptor().Fields() + if len(typeURL) > 0 { + m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL)) + } + if len(bValue) > 0 { + m.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue)) + } + return nil +} + +func (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) { + mt, err := d.opts.Resolver.FindMessageByURL(typeURL) + if err != nil { + return nil, d.newError(pos, "unable to resolve message [%v]: %v", typeURL, err) + } + // Create new message for the embedded message type and unmarshal the value + // field into it. + m := mt.New() + if err := d.unmarshalMessage(m, true); err != nil { + return nil, err + } + // Serialize the embedded message and return the resulting bytes. + b, err := proto.MarshalOptions{ + AllowPartial: true, // Never check required fields inside an Any. + Deterministic: true, + }.Marshal(m.Interface()) + if err != nil { + return nil, d.newError(pos, "error in marshaling message into Any.value: %v", err) + } + return b, nil +} + +// skipValue makes the decoder parse a field value in order to advance the read +// to the next field. It relies on Read returning an error if the types are not +// in valid sequence. +func (d decoder) skipValue() error { + tok, err := d.Read() + if err != nil { + return err + } + // Only need to continue reading for messages and lists. + switch tok.Kind() { + case text.MessageOpen: + return d.skipMessageValue() + + case text.ListOpen: + for { + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.ListClose: + return nil + case text.MessageOpen: + if err := d.skipMessageValue(); err != nil { + return err + } + default: + // Skip items. This will not validate whether skipped values are + // of the same type or not, same behavior as C++ + // TextFormat::Parser::AllowUnknownField(true) version 3.8.0. + } + } + } + return nil +} + +// skipMessageValue makes the decoder parse and skip over all fields in a +// message. It assumes that the previous read type is MessageOpen. +func (d decoder) skipMessageValue() error { + for { + tok, err := d.Read() + if err != nil { + return err + } + switch tok.Kind() { + case text.MessageClose: + return nil + case text.Name: + if err := d.skipValue(); err != nil { + return err + } + } + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go new file mode 100644 index 0000000..162b4f9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/doc.go @@ -0,0 +1,7 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package prototext marshals and unmarshals protocol buffer messages as the +// textproto format. +package prototext diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go new file mode 100644 index 0000000..1f57e66 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/prototext/encode.go @@ -0,0 +1,380 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package prototext + +import ( + "fmt" + "strconv" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/encoding/text" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +const defaultIndent = " " + +// Format formats the message as a multiline string. +// This function is only intended for human consumption and ignores errors. +// Do not depend on the output being stable. Its output will change across +// different builds of your program, even when using the same version of the +// protobuf module. +func Format(m proto.Message) string { + return MarshalOptions{Multiline: true}.Format(m) +} + +// Marshal writes the given [proto.Message] in textproto format using default +// options. Do not depend on the output being stable. Its output will change +// across different builds of your program, even when using the same version of +// the protobuf module. +func Marshal(m proto.Message) ([]byte, error) { + return MarshalOptions{}.Marshal(m) +} + +// MarshalOptions is a configurable text format marshaler. +type MarshalOptions struct { + pragma.NoUnkeyedLiterals + + // Multiline specifies whether the marshaler should format the output in + // indented-form with every textual element on a new line. + // If Indent is an empty string, then an arbitrary indent is chosen. + Multiline bool + + // Indent specifies the set of indentation characters to use in a multiline + // formatted output such that every entry is preceded by Indent and + // terminated by a newline. If non-empty, then Multiline is treated as true. + // Indent can only be composed of space or tab characters. + Indent string + + // EmitASCII specifies whether to format strings and bytes as ASCII only + // as opposed to using UTF-8 encoding when possible. + EmitASCII bool + + // allowInvalidUTF8 specifies whether to permit the encoding of strings + // with invalid UTF-8. This is unexported as it is intended to only + // be specified by the Format method. + allowInvalidUTF8 bool + + // AllowPartial allows messages that have missing required fields to marshal + // without returning an error. If AllowPartial is false (the default), + // Marshal will return error if there are any missing required fields. + AllowPartial bool + + // EmitUnknown specifies whether to emit unknown fields in the output. + // If specified, the unmarshaler may be unable to parse the output. + // The default is to exclude unknown fields. + EmitUnknown bool + + // Resolver is used for looking up types when expanding google.protobuf.Any + // messages. If nil, this defaults to using protoregistry.GlobalTypes. + Resolver interface { + protoregistry.ExtensionTypeResolver + protoregistry.MessageTypeResolver + } +} + +// Format formats the message as a string. +// This method is only intended for human consumption and ignores errors. +// Do not depend on the output being stable. Its output will change across +// different builds of your program, even when using the same version of the +// protobuf module. +func (o MarshalOptions) Format(m proto.Message) string { + if m == nil || !m.ProtoReflect().IsValid() { + return "" // invalid syntax, but okay since this is for debugging + } + o.allowInvalidUTF8 = true + o.AllowPartial = true + o.EmitUnknown = true + b, _ := o.Marshal(m) + return string(b) +} + +// Marshal writes the given [proto.Message] in textproto format using options in +// MarshalOptions object. Do not depend on the output being stable. Its output +// will change across different builds of your program, even when using the +// same version of the protobuf module. +func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { + return o.marshal(nil, m) +} + +// MarshalAppend appends the textproto format encoding of m to b, +// returning the result. +func (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) { + return o.marshal(b, m) +} + +// marshal is a centralized function that all marshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for marshal that do not go through this. +func (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) { + var delims = [2]byte{'{', '}'} + + if o.Multiline && o.Indent == "" { + o.Indent = defaultIndent + } + if o.Resolver == nil { + o.Resolver = protoregistry.GlobalTypes + } + + internalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII) + if err != nil { + return nil, err + } + + // Treat nil message interface as an empty message, + // in which case there is nothing to output. + if m == nil { + return b, nil + } + + enc := encoder{internalEnc, o} + err = enc.marshalMessage(m.ProtoReflect(), false) + if err != nil { + return nil, err + } + out := enc.Bytes() + if len(o.Indent) > 0 && len(out) > 0 { + out = append(out, '\n') + } + if o.AllowPartial { + return out, nil + } + return out, proto.CheckInitialized(m) +} + +type encoder struct { + *text.Encoder + opts MarshalOptions +} + +// marshalMessage marshals the given protoreflect.Message. +func (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error { + messageDesc := m.Descriptor() + if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { + return errors.New("no support for proto1 MessageSets") + } + + if inclDelims { + e.StartMessage() + defer e.EndMessage() + } + + // Handle Any expansion. + if messageDesc.FullName() == genid.Any_message_fullname { + if e.marshalAny(m) { + return nil + } + // If unable to expand, continue on to marshal Any as a regular message. + } + + // Marshal fields. + var err error + order.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + if err = e.marshalField(fd.TextName(), v, fd); err != nil { + return false + } + return true + }) + if err != nil { + return err + } + + // Marshal unknown fields. + if e.opts.EmitUnknown { + e.marshalUnknown(m.GetUnknown()) + } + + return nil +} + +// marshalField marshals the given field with protoreflect.Value. +func (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error { + switch { + case fd.IsList(): + return e.marshalList(name, val.List(), fd) + case fd.IsMap(): + return e.marshalMap(name, val.Map(), fd) + default: + e.WriteName(name) + return e.marshalSingular(val, fd) + } +} + +// marshalSingular marshals the given non-repeated field value. This includes +// all scalar types, enums, messages, and groups. +func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { + kind := fd.Kind() + switch kind { + case protoreflect.BoolKind: + e.WriteBool(val.Bool()) + + case protoreflect.StringKind: + s := val.String() + if !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) { + return errors.InvalidUTF8(string(fd.FullName())) + } + e.WriteString(s) + + case protoreflect.Int32Kind, protoreflect.Int64Kind, + protoreflect.Sint32Kind, protoreflect.Sint64Kind, + protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind: + e.WriteInt(val.Int()) + + case protoreflect.Uint32Kind, protoreflect.Uint64Kind, + protoreflect.Fixed32Kind, protoreflect.Fixed64Kind: + e.WriteUint(val.Uint()) + + case protoreflect.FloatKind: + // Encoder.WriteFloat handles the special numbers NaN and infinites. + e.WriteFloat(val.Float(), 32) + + case protoreflect.DoubleKind: + // Encoder.WriteFloat handles the special numbers NaN and infinites. + e.WriteFloat(val.Float(), 64) + + case protoreflect.BytesKind: + e.WriteString(string(val.Bytes())) + + case protoreflect.EnumKind: + num := val.Enum() + if desc := fd.Enum().Values().ByNumber(num); desc != nil { + e.WriteLiteral(string(desc.Name())) + } else { + // Use numeric value if there is no enum description. + e.WriteInt(int64(num)) + } + + case protoreflect.MessageKind, protoreflect.GroupKind: + return e.marshalMessage(val.Message(), true) + + default: + panic(fmt.Sprintf("%v has unknown kind: %v", fd.FullName(), kind)) + } + return nil +} + +// marshalList marshals the given protoreflect.List as multiple name-value fields. +func (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error { + size := list.Len() + for i := 0; i < size; i++ { + e.WriteName(name) + if err := e.marshalSingular(list.Get(i), fd); err != nil { + return err + } + } + return nil +} + +// marshalMap marshals the given protoreflect.Map as multiple name-value fields. +func (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { + var err error + order.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool { + e.WriteName(name) + e.StartMessage() + defer e.EndMessage() + + e.WriteName(string(genid.MapEntry_Key_field_name)) + err = e.marshalSingular(key.Value(), fd.MapKey()) + if err != nil { + return false + } + + e.WriteName(string(genid.MapEntry_Value_field_name)) + err = e.marshalSingular(val, fd.MapValue()) + if err != nil { + return false + } + return true + }) + return err +} + +// marshalUnknown parses the given []byte and marshals fields out. +// This function assumes proper encoding in the given []byte. +func (e encoder) marshalUnknown(b []byte) { + const dec = 10 + const hex = 16 + for len(b) > 0 { + num, wtype, n := protowire.ConsumeTag(b) + b = b[n:] + e.WriteName(strconv.FormatInt(int64(num), dec)) + + switch wtype { + case protowire.VarintType: + var v uint64 + v, n = protowire.ConsumeVarint(b) + e.WriteUint(v) + case protowire.Fixed32Type: + var v uint32 + v, n = protowire.ConsumeFixed32(b) + e.WriteLiteral("0x" + strconv.FormatUint(uint64(v), hex)) + case protowire.Fixed64Type: + var v uint64 + v, n = protowire.ConsumeFixed64(b) + e.WriteLiteral("0x" + strconv.FormatUint(v, hex)) + case protowire.BytesType: + var v []byte + v, n = protowire.ConsumeBytes(b) + e.WriteString(string(v)) + case protowire.StartGroupType: + e.StartMessage() + var v []byte + v, n = protowire.ConsumeGroup(num, b) + e.marshalUnknown(v) + e.EndMessage() + default: + panic(fmt.Sprintf("prototext: error parsing unknown field wire type: %v", wtype)) + } + + b = b[n:] + } +} + +// marshalAny marshals the given google.protobuf.Any message in expanded form. +// It returns true if it was able to marshal, else false. +func (e encoder) marshalAny(any protoreflect.Message) bool { + // Construct the embedded message. + fds := any.Descriptor().Fields() + fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) + typeURL := any.Get(fdType).String() + mt, err := e.opts.Resolver.FindMessageByURL(typeURL) + if err != nil { + return false + } + m := mt.New().Interface() + + // Unmarshal bytes into embedded message. + fdValue := fds.ByNumber(genid.Any_Value_field_number) + value := any.Get(fdValue) + err = proto.UnmarshalOptions{ + AllowPartial: true, + Resolver: e.opts.Resolver, + }.Unmarshal(value.Bytes(), m) + if err != nil { + return false + } + + // Get current encoder position. If marshaling fails, reset encoder output + // back to this position. + pos := e.Snapshot() + + // Field name is the proto field name enclosed in []. + e.WriteName("[" + typeURL + "]") + err = e.marshalMessage(m.ProtoReflect(), true) + if err != nil { + e.Reset(pos) + return false + } + return true +} diff --git a/examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go b/examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go new file mode 100644 index 0000000..e942bc9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/encoding/protowire/wire.go @@ -0,0 +1,547 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protowire parses and formats the raw wire encoding. +// See https://protobuf.dev/programming-guides/encoding. +// +// For marshaling and unmarshaling entire protobuf messages, +// use the [google.golang.org/protobuf/proto] package instead. +package protowire + +import ( + "io" + "math" + "math/bits" + + "google.golang.org/protobuf/internal/errors" +) + +// Number represents the field number. +type Number int32 + +const ( + MinValidNumber Number = 1 + FirstReservedNumber Number = 19000 + LastReservedNumber Number = 19999 + MaxValidNumber Number = 1<<29 - 1 + DefaultRecursionLimit = 10000 +) + +// IsValid reports whether the field number is semantically valid. +func (n Number) IsValid() bool { + return MinValidNumber <= n && n <= MaxValidNumber +} + +// Type represents the wire type. +type Type int8 + +const ( + VarintType Type = 0 + Fixed32Type Type = 5 + Fixed64Type Type = 1 + BytesType Type = 2 + StartGroupType Type = 3 + EndGroupType Type = 4 +) + +const ( + _ = -iota + errCodeTruncated + errCodeFieldNumber + errCodeOverflow + errCodeReserved + errCodeEndGroup + errCodeRecursionDepth +) + +var ( + errFieldNumber = errors.New("invalid field number") + errOverflow = errors.New("variable length integer overflow") + errReserved = errors.New("cannot parse reserved wire type") + errEndGroup = errors.New("mismatching end group marker") + errParse = errors.New("parse error") +) + +// ParseError converts an error code into an error value. +// This returns nil if n is a non-negative number. +func ParseError(n int) error { + if n >= 0 { + return nil + } + switch n { + case errCodeTruncated: + return io.ErrUnexpectedEOF + case errCodeFieldNumber: + return errFieldNumber + case errCodeOverflow: + return errOverflow + case errCodeReserved: + return errReserved + case errCodeEndGroup: + return errEndGroup + default: + return errParse + } +} + +// ConsumeField parses an entire field record (both tag and value) and returns +// the field number, the wire type, and the total length. +// This returns a negative length upon an error (see [ParseError]). +// +// The total length includes the tag header and the end group marker (if the +// field is a group). +func ConsumeField(b []byte) (Number, Type, int) { + num, typ, n := ConsumeTag(b) + if n < 0 { + return 0, 0, n // forward error code + } + m := ConsumeFieldValue(num, typ, b[n:]) + if m < 0 { + return 0, 0, m // forward error code + } + return num, typ, n + m +} + +// ConsumeFieldValue parses a field value and returns its length. +// This assumes that the field [Number] and wire [Type] have already been parsed. +// This returns a negative length upon an error (see [ParseError]). +// +// When parsing a group, the length includes the end group marker and +// the end group is verified to match the starting field number. +func ConsumeFieldValue(num Number, typ Type, b []byte) (n int) { + return consumeFieldValueD(num, typ, b, DefaultRecursionLimit) +} + +func consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) { + switch typ { + case VarintType: + _, n = ConsumeVarint(b) + return n + case Fixed32Type: + _, n = ConsumeFixed32(b) + return n + case Fixed64Type: + _, n = ConsumeFixed64(b) + return n + case BytesType: + _, n = ConsumeBytes(b) + return n + case StartGroupType: + if depth < 0 { + return errCodeRecursionDepth + } + n0 := len(b) + for { + num2, typ2, n := ConsumeTag(b) + if n < 0 { + return n // forward error code + } + b = b[n:] + if typ2 == EndGroupType { + if num != num2 { + return errCodeEndGroup + } + return n0 - len(b) + } + + n = consumeFieldValueD(num2, typ2, b, depth-1) + if n < 0 { + return n // forward error code + } + b = b[n:] + } + case EndGroupType: + return errCodeEndGroup + default: + return errCodeReserved + } +} + +// AppendTag encodes num and typ as a varint-encoded tag and appends it to b. +func AppendTag(b []byte, num Number, typ Type) []byte { + return AppendVarint(b, EncodeTag(num, typ)) +} + +// ConsumeTag parses b as a varint-encoded tag, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeTag(b []byte) (Number, Type, int) { + v, n := ConsumeVarint(b) + if n < 0 { + return 0, 0, n // forward error code + } + num, typ := DecodeTag(v) + if num < MinValidNumber { + return 0, 0, errCodeFieldNumber + } + return num, typ, n +} + +func SizeTag(num Number) int { + return SizeVarint(EncodeTag(num, 0)) // wire type has no effect on size +} + +// AppendVarint appends v to b as a varint-encoded uint64. +func AppendVarint(b []byte, v uint64) []byte { + switch { + case v < 1<<7: + b = append(b, byte(v)) + case v < 1<<14: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte(v>>7)) + case v < 1<<21: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte(v>>14)) + case v < 1<<28: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte(v>>21)) + case v < 1<<35: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte(v>>28)) + case v < 1<<42: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte(v>>35)) + case v < 1<<49: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte(v>>42)) + case v < 1<<56: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte((v>>42)&0x7f|0x80), + byte(v>>49)) + case v < 1<<63: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte((v>>42)&0x7f|0x80), + byte((v>>49)&0x7f|0x80), + byte(v>>56)) + default: + b = append(b, + byte((v>>0)&0x7f|0x80), + byte((v>>7)&0x7f|0x80), + byte((v>>14)&0x7f|0x80), + byte((v>>21)&0x7f|0x80), + byte((v>>28)&0x7f|0x80), + byte((v>>35)&0x7f|0x80), + byte((v>>42)&0x7f|0x80), + byte((v>>49)&0x7f|0x80), + byte((v>>56)&0x7f|0x80), + 1) + } + return b +} + +// ConsumeVarint parses b as a varint-encoded uint64, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeVarint(b []byte) (v uint64, n int) { + var y uint64 + if len(b) <= 0 { + return 0, errCodeTruncated + } + v = uint64(b[0]) + if v < 0x80 { + return v, 1 + } + v -= 0x80 + + if len(b) <= 1 { + return 0, errCodeTruncated + } + y = uint64(b[1]) + v += y << 7 + if y < 0x80 { + return v, 2 + } + v -= 0x80 << 7 + + if len(b) <= 2 { + return 0, errCodeTruncated + } + y = uint64(b[2]) + v += y << 14 + if y < 0x80 { + return v, 3 + } + v -= 0x80 << 14 + + if len(b) <= 3 { + return 0, errCodeTruncated + } + y = uint64(b[3]) + v += y << 21 + if y < 0x80 { + return v, 4 + } + v -= 0x80 << 21 + + if len(b) <= 4 { + return 0, errCodeTruncated + } + y = uint64(b[4]) + v += y << 28 + if y < 0x80 { + return v, 5 + } + v -= 0x80 << 28 + + if len(b) <= 5 { + return 0, errCodeTruncated + } + y = uint64(b[5]) + v += y << 35 + if y < 0x80 { + return v, 6 + } + v -= 0x80 << 35 + + if len(b) <= 6 { + return 0, errCodeTruncated + } + y = uint64(b[6]) + v += y << 42 + if y < 0x80 { + return v, 7 + } + v -= 0x80 << 42 + + if len(b) <= 7 { + return 0, errCodeTruncated + } + y = uint64(b[7]) + v += y << 49 + if y < 0x80 { + return v, 8 + } + v -= 0x80 << 49 + + if len(b) <= 8 { + return 0, errCodeTruncated + } + y = uint64(b[8]) + v += y << 56 + if y < 0x80 { + return v, 9 + } + v -= 0x80 << 56 + + if len(b) <= 9 { + return 0, errCodeTruncated + } + y = uint64(b[9]) + v += y << 63 + if y < 2 { + return v, 10 + } + return 0, errCodeOverflow +} + +// SizeVarint returns the encoded size of a varint. +// The size is guaranteed to be within 1 and 10, inclusive. +func SizeVarint(v uint64) int { + // This computes 1 + (bits.Len64(v)-1)/7. + // 9/64 is a good enough approximation of 1/7 + return int(9*uint32(bits.Len64(v))+64) / 64 +} + +// AppendFixed32 appends v to b as a little-endian uint32. +func AppendFixed32(b []byte, v uint32) []byte { + return append(b, + byte(v>>0), + byte(v>>8), + byte(v>>16), + byte(v>>24)) +} + +// ConsumeFixed32 parses b as a little-endian uint32, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeFixed32(b []byte) (v uint32, n int) { + if len(b) < 4 { + return 0, errCodeTruncated + } + v = uint32(b[0])<<0 | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 + return v, 4 +} + +// SizeFixed32 returns the encoded size of a fixed32; which is always 4. +func SizeFixed32() int { + return 4 +} + +// AppendFixed64 appends v to b as a little-endian uint64. +func AppendFixed64(b []byte, v uint64) []byte { + return append(b, + byte(v>>0), + byte(v>>8), + byte(v>>16), + byte(v>>24), + byte(v>>32), + byte(v>>40), + byte(v>>48), + byte(v>>56)) +} + +// ConsumeFixed64 parses b as a little-endian uint64, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeFixed64(b []byte) (v uint64, n int) { + if len(b) < 8 { + return 0, errCodeTruncated + } + v = uint64(b[0])<<0 | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 + return v, 8 +} + +// SizeFixed64 returns the encoded size of a fixed64; which is always 8. +func SizeFixed64() int { + return 8 +} + +// AppendBytes appends v to b as a length-prefixed bytes value. +func AppendBytes(b []byte, v []byte) []byte { + return append(AppendVarint(b, uint64(len(v))), v...) +} + +// ConsumeBytes parses b as a length-prefixed bytes value, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeBytes(b []byte) (v []byte, n int) { + m, n := ConsumeVarint(b) + if n < 0 { + return nil, n // forward error code + } + if m > uint64(len(b[n:])) { + return nil, errCodeTruncated + } + return b[n:][:m], n + int(m) +} + +// SizeBytes returns the encoded size of a length-prefixed bytes value, +// given only the length. +func SizeBytes(n int) int { + return SizeVarint(uint64(n)) + n +} + +// AppendString appends v to b as a length-prefixed bytes value. +func AppendString(b []byte, v string) []byte { + return append(AppendVarint(b, uint64(len(v))), v...) +} + +// ConsumeString parses b as a length-prefixed bytes value, reporting its length. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeString(b []byte) (v string, n int) { + bb, n := ConsumeBytes(b) + return string(bb), n +} + +// AppendGroup appends v to b as group value, with a trailing end group marker. +// The value v must not contain the end marker. +func AppendGroup(b []byte, num Number, v []byte) []byte { + return AppendVarint(append(b, v...), EncodeTag(num, EndGroupType)) +} + +// ConsumeGroup parses b as a group value until the trailing end group marker, +// and verifies that the end marker matches the provided num. The value v +// does not contain the end marker, while the length does contain the end marker. +// This returns a negative length upon an error (see [ParseError]). +func ConsumeGroup(num Number, b []byte) (v []byte, n int) { + n = ConsumeFieldValue(num, StartGroupType, b) + if n < 0 { + return nil, n // forward error code + } + b = b[:n] + + // Truncate off end group marker, but need to handle denormalized varints. + // Assuming end marker is never 0 (which is always the case since + // EndGroupType is non-zero), we can truncate all trailing bytes where the + // lower 7 bits are all zero (implying that the varint is denormalized). + for len(b) > 0 && b[len(b)-1]&0x7f == 0 { + b = b[:len(b)-1] + } + b = b[:len(b)-SizeTag(num)] + return b, n +} + +// SizeGroup returns the encoded size of a group, given only the length. +func SizeGroup(num Number, n int) int { + return n + SizeTag(num) +} + +// DecodeTag decodes the field [Number] and wire [Type] from its unified form. +// The [Number] is -1 if the decoded field number overflows int32. +// Other than overflow, this does not check for field number validity. +func DecodeTag(x uint64) (Number, Type) { + // NOTE: MessageSet allows for larger field numbers than normal. + if x>>3 > uint64(math.MaxInt32) { + return -1, 0 + } + return Number(x >> 3), Type(x & 7) +} + +// EncodeTag encodes the field [Number] and wire [Type] into its unified form. +func EncodeTag(num Number, typ Type) uint64 { + return uint64(num)<<3 | uint64(typ&7) +} + +// DecodeZigZag decodes a zig-zag-encoded uint64 as an int64. +// +// Input: {…, 5, 3, 1, 0, 2, 4, 6, …} +// Output: {…, -3, -2, -1, 0, +1, +2, +3, …} +func DecodeZigZag(x uint64) int64 { + return int64(x>>1) ^ int64(x)<<63>>63 +} + +// EncodeZigZag encodes an int64 as a zig-zag-encoded uint64. +// +// Input: {…, -3, -2, -1, 0, +1, +2, +3, …} +// Output: {…, 5, 3, 1, 0, 2, 4, 6, …} +func EncodeZigZag(x int64) uint64 { + return uint64(x<<1) ^ uint64(x>>63) +} + +// DecodeBool decodes a uint64 as a bool. +// +// Input: { 0, 1, 2, …} +// Output: {false, true, true, …} +func DecodeBool(x uint64) bool { + return x != 0 +} + +// EncodeBool encodes a bool as a uint64. +// +// Input: {false, true} +// Output: { 0, 1} +func EncodeBool(x bool) uint64 { + if x { + return 1 + } + return 0 +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go b/examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go new file mode 100644 index 0000000..87e46bd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go @@ -0,0 +1,414 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package descfmt provides functionality to format descriptors. +package descfmt + +import ( + "fmt" + "io" + "reflect" + "strconv" + "strings" + + "google.golang.org/protobuf/internal/detrand" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type list interface { + Len() int + pragma.DoNotImplement +} + +func FormatList(s fmt.State, r rune, vs list) { + io.WriteString(s, formatListOpt(vs, true, r == 'v' && (s.Flag('+') || s.Flag('#')))) +} +func formatListOpt(vs list, isRoot, allowMulti bool) string { + start, end := "[", "]" + if isRoot { + var name string + switch vs.(type) { + case protoreflect.Names: + name = "Names" + case protoreflect.FieldNumbers: + name = "FieldNumbers" + case protoreflect.FieldRanges: + name = "FieldRanges" + case protoreflect.EnumRanges: + name = "EnumRanges" + case protoreflect.FileImports: + name = "FileImports" + case protoreflect.Descriptor: + name = reflect.ValueOf(vs).MethodByName("Get").Type().Out(0).Name() + "s" + default: + name = reflect.ValueOf(vs).Elem().Type().Name() + } + start, end = name+"{", "}" + } + + var ss []string + switch vs := vs.(type) { + case protoreflect.Names: + for i := 0; i < vs.Len(); i++ { + ss = append(ss, fmt.Sprint(vs.Get(i))) + } + return start + joinStrings(ss, false) + end + case protoreflect.FieldNumbers: + for i := 0; i < vs.Len(); i++ { + ss = append(ss, fmt.Sprint(vs.Get(i))) + } + return start + joinStrings(ss, false) + end + case protoreflect.FieldRanges: + for i := 0; i < vs.Len(); i++ { + r := vs.Get(i) + if r[0]+1 == r[1] { + ss = append(ss, fmt.Sprintf("%d", r[0])) + } else { + ss = append(ss, fmt.Sprintf("%d:%d", r[0], r[1])) // enum ranges are end exclusive + } + } + return start + joinStrings(ss, false) + end + case protoreflect.EnumRanges: + for i := 0; i < vs.Len(); i++ { + r := vs.Get(i) + if r[0] == r[1] { + ss = append(ss, fmt.Sprintf("%d", r[0])) + } else { + ss = append(ss, fmt.Sprintf("%d:%d", r[0], int64(r[1])+1)) // enum ranges are end inclusive + } + } + return start + joinStrings(ss, false) + end + case protoreflect.FileImports: + for i := 0; i < vs.Len(); i++ { + var rs records + rv := reflect.ValueOf(vs.Get(i)) + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("IsPublic"), "IsPublic"}, + {rv.MethodByName("IsWeak"), "IsWeak"}, + }...) + ss = append(ss, "{"+rs.Join()+"}") + } + return start + joinStrings(ss, allowMulti) + end + default: + _, isEnumValue := vs.(protoreflect.EnumValueDescriptors) + for i := 0; i < vs.Len(); i++ { + m := reflect.ValueOf(vs).MethodByName("Get") + v := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface() + ss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue, nil)) + } + return start + joinStrings(ss, allowMulti && isEnumValue) + end + } +} + +type methodAndName struct { + method reflect.Value + name string +} + +func FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) { + io.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')), nil)) +} + +func InternalFormatDescOptForTesting(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { + return formatDescOpt(t, isRoot, allowMulti, record) +} + +func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { + rv := reflect.ValueOf(t) + rt := rv.MethodByName("ProtoType").Type().In(0) + + start, end := "{", "}" + if isRoot { + start = rt.Name() + "{" + } + + _, isFile := t.(protoreflect.FileDescriptor) + rs := records{ + allowMulti: allowMulti, + record: record, + } + if t.IsPlaceholder() { + if isFile { + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + }...) + } else { + rs.Append(rv, []methodAndName{ + {rv.MethodByName("FullName"), "FullName"}, + {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + }...) + } + } else { + switch { + case isFile: + rs.Append(rv, methodAndName{rv.MethodByName("Syntax"), "Syntax"}) + case isRoot: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Syntax"), "Syntax"}, + {rv.MethodByName("FullName"), "FullName"}, + }...) + default: + rs.Append(rv, methodAndName{rv.MethodByName("Name"), "Name"}) + } + switch t := t.(type) { + case protoreflect.FieldDescriptor: + accessors := []methodAndName{ + {rv.MethodByName("Number"), "Number"}, + {rv.MethodByName("Cardinality"), "Cardinality"}, + {rv.MethodByName("Kind"), "Kind"}, + {rv.MethodByName("HasJSONName"), "HasJSONName"}, + {rv.MethodByName("JSONName"), "JSONName"}, + {rv.MethodByName("HasPresence"), "HasPresence"}, + {rv.MethodByName("IsExtension"), "IsExtension"}, + {rv.MethodByName("IsPacked"), "IsPacked"}, + {rv.MethodByName("IsWeak"), "IsWeak"}, + {rv.MethodByName("IsList"), "IsList"}, + {rv.MethodByName("IsMap"), "IsMap"}, + {rv.MethodByName("MapKey"), "MapKey"}, + {rv.MethodByName("MapValue"), "MapValue"}, + {rv.MethodByName("HasDefault"), "HasDefault"}, + {rv.MethodByName("Default"), "Default"}, + {rv.MethodByName("ContainingOneof"), "ContainingOneof"}, + {rv.MethodByName("ContainingMessage"), "ContainingMessage"}, + {rv.MethodByName("Message"), "Message"}, + {rv.MethodByName("Enum"), "Enum"}, + } + for _, s := range accessors { + switch s.name { + case "MapKey": + if k := t.MapKey(); k != nil { + rs.recs = append(rs.recs, [2]string{"MapKey", k.Kind().String()}) + } + case "MapValue": + if v := t.MapValue(); v != nil { + switch v.Kind() { + case protoreflect.EnumKind: + rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Enum().FullName())}) + case protoreflect.MessageKind, protoreflect.GroupKind: + rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Message().FullName())}) + default: + rs.AppendRecs("MapValue", [2]string{"MapValue", v.Kind().String()}) + } + } + case "ContainingOneof": + if od := t.ContainingOneof(); od != nil { + rs.AppendRecs("ContainingOneof", [2]string{"Oneof", string(od.Name())}) + } + case "ContainingMessage": + if t.IsExtension() { + rs.AppendRecs("ContainingMessage", [2]string{"Extendee", string(t.ContainingMessage().FullName())}) + } + case "Message": + if !t.IsMap() { + rs.Append(rv, s) + } + default: + rs.Append(rv, s) + } + } + case protoreflect.OneofDescriptor: + var ss []string + fs := t.Fields() + for i := 0; i < fs.Len(); i++ { + ss = append(ss, string(fs.Get(i).Name())) + } + if len(ss) > 0 { + rs.AppendRecs("Fields", [2]string{"Fields", "[" + joinStrings(ss, false) + "]"}) + } + + case protoreflect.FileDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("Imports"), "Imports"}, + {rv.MethodByName("Messages"), "Messages"}, + {rv.MethodByName("Enums"), "Enums"}, + {rv.MethodByName("Extensions"), "Extensions"}, + {rv.MethodByName("Services"), "Services"}, + }...) + + case protoreflect.MessageDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("IsMapEntry"), "IsMapEntry"}, + {rv.MethodByName("Fields"), "Fields"}, + {rv.MethodByName("Oneofs"), "Oneofs"}, + {rv.MethodByName("ReservedNames"), "ReservedNames"}, + {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, + {rv.MethodByName("RequiredNumbers"), "RequiredNumbers"}, + {rv.MethodByName("ExtensionRanges"), "ExtensionRanges"}, + {rv.MethodByName("Messages"), "Messages"}, + {rv.MethodByName("Enums"), "Enums"}, + {rv.MethodByName("Extensions"), "Extensions"}, + }...) + + case protoreflect.EnumDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Values"), "Values"}, + {rv.MethodByName("ReservedNames"), "ReservedNames"}, + {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, + {rv.MethodByName("IsClosed"), "IsClosed"}, + }...) + + case protoreflect.EnumValueDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Number"), "Number"}, + }...) + + case protoreflect.ServiceDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Methods"), "Methods"}, + }...) + + case protoreflect.MethodDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Input"), "Input"}, + {rv.MethodByName("Output"), "Output"}, + {rv.MethodByName("IsStreamingClient"), "IsStreamingClient"}, + {rv.MethodByName("IsStreamingServer"), "IsStreamingServer"}, + }...) + } + if m := rv.MethodByName("GoType"); m.IsValid() { + rs.Append(rv, methodAndName{m, "GoType"}) + } + } + return start + rs.Join() + end +} + +type records struct { + recs [][2]string + allowMulti bool + + // record is a function that will be called for every Append() or + // AppendRecs() call, to be used for testing with the + // InternalFormatDescOptForTesting function. + record func(string) +} + +func (rs *records) AppendRecs(fieldName string, newRecs [2]string) { + if rs.record != nil { + rs.record(fieldName) + } + rs.recs = append(rs.recs, newRecs) +} + +func (rs *records) Append(v reflect.Value, accessors ...methodAndName) { + for _, a := range accessors { + if rs.record != nil { + rs.record(a.name) + } + var rv reflect.Value + if a.method.IsValid() { + rv = a.method.Call(nil)[0] + } + if v.Kind() == reflect.Struct && !rv.IsValid() { + rv = v.FieldByName(a.name) + } + if !rv.IsValid() { + panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a.name)) + } + if _, ok := rv.Interface().(protoreflect.Value); ok { + rv = rv.MethodByName("Interface").Call(nil)[0] + if !rv.IsNil() { + rv = rv.Elem() + } + } + + // Ignore zero values. + var isZero bool + switch rv.Kind() { + case reflect.Interface, reflect.Slice: + isZero = rv.IsNil() + case reflect.Bool: + isZero = rv.Bool() == false + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + isZero = rv.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + isZero = rv.Uint() == 0 + case reflect.String: + isZero = rv.String() == "" + } + if n, ok := rv.Interface().(list); ok { + isZero = n.Len() == 0 + } + if isZero { + continue + } + + // Format the value. + var s string + v := rv.Interface() + switch v := v.(type) { + case list: + s = formatListOpt(v, false, rs.allowMulti) + case protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor: + s = string(v.(protoreflect.Descriptor).Name()) + case protoreflect.Descriptor: + s = string(v.FullName()) + case string: + s = strconv.Quote(v) + case []byte: + s = fmt.Sprintf("%q", v) + default: + s = fmt.Sprint(v) + } + rs.recs = append(rs.recs, [2]string{a.name, s}) + } +} + +func (rs *records) Join() string { + var ss []string + + // In single line mode, simply join all records with commas. + if !rs.allowMulti { + for _, r := range rs.recs { + ss = append(ss, r[0]+formatColon(0)+r[1]) + } + return joinStrings(ss, false) + } + + // In allowMulti line mode, align single line records for more readable output. + var maxLen int + flush := func(i int) { + for _, r := range rs.recs[len(ss):i] { + ss = append(ss, r[0]+formatColon(maxLen-len(r[0]))+r[1]) + } + maxLen = 0 + } + for i, r := range rs.recs { + if isMulti := strings.Contains(r[1], "\n"); isMulti { + flush(i) + ss = append(ss, r[0]+formatColon(0)+strings.Join(strings.Split(r[1], "\n"), "\n\t")) + } else if maxLen < len(r[0]) { + maxLen = len(r[0]) + } + } + flush(len(rs.recs)) + return joinStrings(ss, true) +} + +func formatColon(padding int) string { + // Deliberately introduce instability into the debug output to + // discourage users from performing string comparisons. + // This provides us flexibility to change the output in the future. + if detrand.Bool() { + return ":" + strings.Repeat(" ", 1+padding) // use non-breaking spaces (U+00a0) + } else { + return ":" + strings.Repeat(" ", 1+padding) // use regular spaces (U+0020) + } +} + +func joinStrings(ss []string, isMulti bool) string { + if len(ss) == 0 { + return "" + } + if isMulti { + return "\n\t" + strings.Join(ss, "\n\t") + "\n" + } + return strings.Join(ss, ", ") +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go b/examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go new file mode 100644 index 0000000..8401be8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/descopts/options.go @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package descopts contains the nil pointers to concrete descriptor options. +// +// This package exists as a form of reverse dependency injection so that certain +// packages (e.g., internal/filedesc and internal/filetype can avoid a direct +// dependency on the descriptor proto package). +package descopts + +import pref "google.golang.org/protobuf/reflect/protoreflect" + +// These variables are set by the init function in descriptor.pb.go via logic +// in internal/filetype. In other words, so long as the descriptor proto package +// is linked in, these variables will be populated. +// +// Each variable is populated with a nil pointer to the options struct. +var ( + File pref.ProtoMessage + Enum pref.ProtoMessage + EnumValue pref.ProtoMessage + Message pref.ProtoMessage + Field pref.ProtoMessage + Oneof pref.ProtoMessage + ExtensionRange pref.ProtoMessage + Service pref.ProtoMessage + Method pref.ProtoMessage +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go b/examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go new file mode 100644 index 0000000..49c8676 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/detrand/rand.go @@ -0,0 +1,69 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package detrand provides deterministically random functionality. +// +// The pseudo-randomness of these functions is seeded by the program binary +// itself and guarantees that the output does not change within a program, +// while ensuring that the output is unstable across different builds. +package detrand + +import ( + "encoding/binary" + "hash/fnv" + "os" +) + +// Disable disables detrand such that all functions returns the zero value. +// This function is not concurrent-safe and must be called during program init. +func Disable() { + randSeed = 0 +} + +// Bool returns a deterministically random boolean. +func Bool() bool { + return randSeed%2 == 1 +} + +// Intn returns a deterministically random integer between 0 and n-1, inclusive. +func Intn(n int) int { + if n <= 0 { + panic("must be positive") + } + return int(randSeed % uint64(n)) +} + +// randSeed is a best-effort at an approximate hash of the Go binary. +var randSeed = binaryHash() + +func binaryHash() uint64 { + // Open the Go binary. + s, err := os.Executable() + if err != nil { + return 0 + } + f, err := os.Open(s) + if err != nil { + return 0 + } + defer f.Close() + + // Hash the size and several samples of the Go binary. + const numSamples = 8 + var buf [64]byte + h := fnv.New64() + fi, err := f.Stat() + if err != nil { + return 0 + } + binary.LittleEndian.PutUint64(buf[:8], uint64(fi.Size())) + h.Write(buf[:8]) + for i := int64(0); i < numSamples; i++ { + if _, err := f.ReadAt(buf[:], i*fi.Size()/numSamples); err != nil { + return 0 + } + h.Write(buf[:]) + } + return h.Sum64() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go b/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go new file mode 100644 index 0000000..14656b6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go @@ -0,0 +1,12 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package editiondefaults contains the binary representation of the editions +// defaults. +package editiondefaults + +import _ "embed" + +//go:embed editions_defaults.binpb +var Defaults []byte diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb b/examples/go/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb new file mode 100644 index 0000000000000000000000000000000000000000..ff6a38360add36f53d48bb0863b701696e0d7b2d GIT binary patch literal 93 zcmd;*mUzal#C*w)K}(Q>QGiK;Nr72|(SYfa9TNv5m$bxlxFnMRqXeS@6Ht;7B*_4j Ve8H{+(u69m1u{(G8N0>{b^xZ!4_5#H literal 0 HcmV?d00001 diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go new file mode 100644 index 0000000..328dc73 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go @@ -0,0 +1,213 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package defval marshals and unmarshals textual forms of default values. +// +// This package handles both the form historically used in Go struct field tags +// and also the form used by google.protobuf.FieldDescriptorProto.default_value +// since they differ in superficial ways. +package defval + +import ( + "fmt" + "math" + "strconv" + + ptext "google.golang.org/protobuf/internal/encoding/text" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Format is the serialization format used to represent the default value. +type Format int + +const ( + _ Format = iota + + // Descriptor uses the serialization format that protoc uses with the + // google.protobuf.FieldDescriptorProto.default_value field. + Descriptor + + // GoTag uses the historical serialization format in Go struct field tags. + GoTag +) + +// Unmarshal deserializes the default string s according to the given kind k. +// When k is an enum, a list of enum value descriptors must be provided. +func Unmarshal(s string, k protoreflect.Kind, evs protoreflect.EnumValueDescriptors, f Format) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) { + switch k { + case protoreflect.BoolKind: + if f == GoTag { + switch s { + case "1": + return protoreflect.ValueOfBool(true), nil, nil + case "0": + return protoreflect.ValueOfBool(false), nil, nil + } + } else { + switch s { + case "true": + return protoreflect.ValueOfBool(true), nil, nil + case "false": + return protoreflect.ValueOfBool(false), nil, nil + } + } + case protoreflect.EnumKind: + if f == GoTag { + // Go tags use the numeric form of the enum value. + if n, err := strconv.ParseInt(s, 10, 32); err == nil { + if ev := evs.ByNumber(protoreflect.EnumNumber(n)); ev != nil { + return protoreflect.ValueOfEnum(ev.Number()), ev, nil + } + } + } else { + // Descriptor default_value use the enum identifier. + ev := evs.ByName(protoreflect.Name(s)) + if ev != nil { + return protoreflect.ValueOfEnum(ev.Number()), ev, nil + } + } + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + if v, err := strconv.ParseInt(s, 10, 32); err == nil { + return protoreflect.ValueOfInt32(int32(v)), nil, nil + } + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + if v, err := strconv.ParseInt(s, 10, 64); err == nil { + return protoreflect.ValueOfInt64(int64(v)), nil, nil + } + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + if v, err := strconv.ParseUint(s, 10, 32); err == nil { + return protoreflect.ValueOfUint32(uint32(v)), nil, nil + } + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + if v, err := strconv.ParseUint(s, 10, 64); err == nil { + return protoreflect.ValueOfUint64(uint64(v)), nil, nil + } + case protoreflect.FloatKind, protoreflect.DoubleKind: + var v float64 + var err error + switch s { + case "-inf": + v = math.Inf(-1) + case "inf": + v = math.Inf(+1) + case "nan": + v = math.NaN() + default: + v, err = strconv.ParseFloat(s, 64) + } + if err == nil { + if k == protoreflect.FloatKind { + return protoreflect.ValueOfFloat32(float32(v)), nil, nil + } else { + return protoreflect.ValueOfFloat64(float64(v)), nil, nil + } + } + case protoreflect.StringKind: + // String values are already unescaped and can be used as is. + return protoreflect.ValueOfString(s), nil, nil + case protoreflect.BytesKind: + if b, ok := unmarshalBytes(s); ok { + return protoreflect.ValueOfBytes(b), nil, nil + } + } + return protoreflect.Value{}, nil, errors.New("could not parse value for %v: %q", k, s) +} + +// Marshal serializes v as the default string according to the given kind k. +// When specifying the Descriptor format for an enum kind, the associated +// enum value descriptor must be provided. +func Marshal(v protoreflect.Value, ev protoreflect.EnumValueDescriptor, k protoreflect.Kind, f Format) (string, error) { + switch k { + case protoreflect.BoolKind: + if f == GoTag { + if v.Bool() { + return "1", nil + } else { + return "0", nil + } + } else { + if v.Bool() { + return "true", nil + } else { + return "false", nil + } + } + case protoreflect.EnumKind: + if f == GoTag { + return strconv.FormatInt(int64(v.Enum()), 10), nil + } else { + return string(ev.Name()), nil + } + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + return strconv.FormatInt(v.Int(), 10), nil + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + return strconv.FormatUint(v.Uint(), 10), nil + case protoreflect.FloatKind, protoreflect.DoubleKind: + f := v.Float() + switch { + case math.IsInf(f, -1): + return "-inf", nil + case math.IsInf(f, +1): + return "inf", nil + case math.IsNaN(f): + return "nan", nil + default: + if k == protoreflect.FloatKind { + return strconv.FormatFloat(f, 'g', -1, 32), nil + } else { + return strconv.FormatFloat(f, 'g', -1, 64), nil + } + } + case protoreflect.StringKind: + // String values are serialized as is without any escaping. + return v.String(), nil + case protoreflect.BytesKind: + if s, ok := marshalBytes(v.Bytes()); ok { + return s, nil + } + } + return "", errors.New("could not format value for %v: %v", k, v) +} + +// unmarshalBytes deserializes bytes by applying C unescaping. +func unmarshalBytes(s string) ([]byte, bool) { + // Bytes values use the same escaping as the text format, + // however they lack the surrounding double quotes. + v, err := ptext.UnmarshalString(`"` + s + `"`) + if err != nil { + return nil, false + } + return []byte(v), true +} + +// marshalBytes serializes bytes by using C escaping. +// To match the exact output of protoc, this is identical to the +// CEscape function in strutil.cc of the protoc source code. +func marshalBytes(b []byte) (string, bool) { + var s []byte + for _, c := range b { + switch c { + case '\n': + s = append(s, `\n`...) + case '\r': + s = append(s, `\r`...) + case '\t': + s = append(s, `\t`...) + case '"': + s = append(s, `\"`...) + case '\'': + s = append(s, `\'`...) + case '\\': + s = append(s, `\\`...) + default: + if printableASCII := c >= 0x20 && c <= 0x7e; printableASCII { + s = append(s, c) + } else { + s = append(s, fmt.Sprintf(`\%03o`, c)...) + } + } + } + return string(s), true +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go new file mode 100644 index 0000000..a6693f0 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go @@ -0,0 +1,242 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package messageset encodes and decodes the obsolete MessageSet wire format. +package messageset + +import ( + "math" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// The MessageSet wire format is equivalent to a message defined as follows, +// where each Item defines an extension field with a field number of 'type_id' +// and content of 'message'. MessageSet extensions must be non-repeated message +// fields. +// +// message MessageSet { +// repeated group Item = 1 { +// required int32 type_id = 2; +// required string message = 3; +// } +// } +const ( + FieldItem = protowire.Number(1) + FieldTypeID = protowire.Number(2) + FieldMessage = protowire.Number(3) +) + +// ExtensionName is the field name for extensions of MessageSet. +// +// A valid MessageSet extension must be of the form: +// +// message MyMessage { +// extend proto2.bridge.MessageSet { +// optional MyMessage message_set_extension = 1234; +// } +// ... +// } +const ExtensionName = "message_set_extension" + +// IsMessageSet returns whether the message uses the MessageSet wire format. +func IsMessageSet(md protoreflect.MessageDescriptor) bool { + xmd, ok := md.(interface{ IsMessageSet() bool }) + return ok && xmd.IsMessageSet() +} + +// IsMessageSetExtension reports this field properly extends a MessageSet. +func IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool { + switch { + case fd.Name() != ExtensionName: + return false + case !IsMessageSet(fd.ContainingMessage()): + return false + case fd.FullName().Parent() != fd.Message().FullName(): + return false + } + return true +} + +// SizeField returns the size of a MessageSet item field containing an extension +// with the given field number, not counting the contents of the message subfield. +func SizeField(num protowire.Number) int { + return 2*protowire.SizeTag(FieldItem) + protowire.SizeTag(FieldTypeID) + protowire.SizeVarint(uint64(num)) +} + +// Unmarshal parses a MessageSet. +// +// It calls fn with the type ID and value of each item in the MessageSet. +// Unknown fields are discarded. +// +// If wantLen is true, the item values include the varint length prefix. +// This is ugly, but simplifies the fast-path decoder in internal/impl. +func Unmarshal(b []byte, wantLen bool, fn func(typeID protowire.Number, value []byte) error) error { + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return protowire.ParseError(n) + } + b = b[n:] + if num != FieldItem || wtyp != protowire.StartGroupType { + n := protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return protowire.ParseError(n) + } + b = b[n:] + continue + } + typeID, value, n, err := ConsumeFieldValue(b, wantLen) + if err != nil { + return err + } + b = b[n:] + if typeID == 0 { + continue + } + if err := fn(typeID, value); err != nil { + return err + } + } + return nil +} + +// ConsumeFieldValue parses b as a MessageSet item field value until and including +// the trailing end group marker. It assumes the start group tag has already been parsed. +// It returns the contents of the type_id and message subfields and the total +// item length. +// +// If wantLen is true, the returned message value includes the length prefix. +func ConsumeFieldValue(b []byte, wantLen bool) (typeid protowire.Number, message []byte, n int, err error) { + ilen := len(b) + for { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + b = b[n:] + switch { + case num == FieldItem && wtyp == protowire.EndGroupType: + if wantLen && len(message) == 0 { + // The message field was missing, which should never happen. + // Be prepared for this case anyway. + message = protowire.AppendVarint(message, 0) + } + return typeid, message, ilen - len(b), nil + case num == FieldTypeID && wtyp == protowire.VarintType: + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + b = b[n:] + if v < 1 || v > math.MaxInt32 { + return 0, nil, 0, errors.New("invalid type_id in message set") + } + typeid = protowire.Number(v) + case num == FieldMessage && wtyp == protowire.BytesType: + m, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + if message == nil { + if wantLen { + message = b[:n:n] + } else { + message = m[:len(m):len(m)] + } + } else { + // This case should never happen in practice, but handle it for + // correctness: The MessageSet item contains multiple message + // fields, which need to be merged. + // + // In the case where we're returning the length, this becomes + // quite inefficient since we need to strip the length off + // the existing data and reconstruct it with the combined length. + if wantLen { + _, nn := protowire.ConsumeVarint(message) + m0 := message[nn:] + message = nil + message = protowire.AppendVarint(message, uint64(len(m0)+len(m))) + message = append(message, m0...) + message = append(message, m...) + } else { + message = append(message, m...) + } + } + b = b[n:] + default: + // We have no place to put it, so we just ignore unknown fields. + n := protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return 0, nil, 0, protowire.ParseError(n) + } + b = b[n:] + } + } +} + +// AppendFieldStart appends the start of a MessageSet item field containing +// an extension with the given number. The caller must add the message +// subfield (including the tag). +func AppendFieldStart(b []byte, num protowire.Number) []byte { + b = protowire.AppendTag(b, FieldItem, protowire.StartGroupType) + b = protowire.AppendTag(b, FieldTypeID, protowire.VarintType) + b = protowire.AppendVarint(b, uint64(num)) + return b +} + +// AppendFieldEnd appends the trailing end group marker for a MessageSet item field. +func AppendFieldEnd(b []byte) []byte { + return protowire.AppendTag(b, FieldItem, protowire.EndGroupType) +} + +// SizeUnknown returns the size of an unknown fields section in MessageSet format. +// +// See AppendUnknown. +func SizeUnknown(unknown []byte) (size int) { + for len(unknown) > 0 { + num, typ, n := protowire.ConsumeTag(unknown) + if n < 0 || typ != protowire.BytesType { + return 0 + } + unknown = unknown[n:] + _, n = protowire.ConsumeBytes(unknown) + if n < 0 { + return 0 + } + unknown = unknown[n:] + size += SizeField(num) + protowire.SizeTag(FieldMessage) + n + } + return size +} + +// AppendUnknown appends unknown fields to b in MessageSet format. +// +// For historic reasons, unresolved items in a MessageSet are stored in a +// message's unknown fields section in non-MessageSet format. That is, an +// unknown item with typeID T and value V appears in the unknown fields as +// a field with number T and value V. +// +// This function converts the unknown fields back into MessageSet form. +func AppendUnknown(b, unknown []byte) ([]byte, error) { + for len(unknown) > 0 { + num, typ, n := protowire.ConsumeTag(unknown) + if n < 0 || typ != protowire.BytesType { + return nil, errors.New("invalid data in message set unknown fields") + } + unknown = unknown[n:] + _, n = protowire.ConsumeBytes(unknown) + if n < 0 { + return nil, errors.New("invalid data in message set unknown fields") + } + b = AppendFieldStart(b, num) + b = protowire.AppendTag(b, FieldMessage, protowire.BytesType) + b = append(b, unknown[:n]...) + b = AppendFieldEnd(b) + unknown = unknown[n:] + } + return b, nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go new file mode 100644 index 0000000..7e87c76 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go @@ -0,0 +1,207 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package tag marshals and unmarshals the legacy struct tags as generated +// by historical versions of protoc-gen-go. +package tag + +import ( + "reflect" + "strconv" + "strings" + + "google.golang.org/protobuf/internal/encoding/defval" + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var byteType = reflect.TypeOf(byte(0)) + +// Unmarshal decodes the tag into a prototype.Field. +// +// The goType is needed to determine the original protoreflect.Kind since the +// tag does not record sufficient information to determine that. +// The type is the underlying field type (e.g., a repeated field may be +// represented by []T, but the Go type passed in is just T). +// A list of enum value descriptors must be provided for enum fields. +// This does not populate the Enum or Message (except for weak message). +// +// This function is a best effort attempt; parsing errors are ignored. +func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor { + f := new(filedesc.Field) + f.L0.ParentFile = filedesc.SurrogateProto2 + f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures + for len(tag) > 0 { + i := strings.IndexByte(tag, ',') + if i < 0 { + i = len(tag) + } + switch s := tag[:i]; { + case strings.HasPrefix(s, "name="): + f.L0.FullName = protoreflect.FullName(s[len("name="):]) + case strings.Trim(s, "0123456789") == "": + n, _ := strconv.ParseUint(s, 10, 32) + f.L1.Number = protoreflect.FieldNumber(n) + case s == "opt": + f.L1.Cardinality = protoreflect.Optional + case s == "req": + f.L1.Cardinality = protoreflect.Required + case s == "rep": + f.L1.Cardinality = protoreflect.Repeated + case s == "varint": + switch goType.Kind() { + case reflect.Bool: + f.L1.Kind = protoreflect.BoolKind + case reflect.Int32: + f.L1.Kind = protoreflect.Int32Kind + case reflect.Int64: + f.L1.Kind = protoreflect.Int64Kind + case reflect.Uint32: + f.L1.Kind = protoreflect.Uint32Kind + case reflect.Uint64: + f.L1.Kind = protoreflect.Uint64Kind + } + case s == "zigzag32": + if goType.Kind() == reflect.Int32 { + f.L1.Kind = protoreflect.Sint32Kind + } + case s == "zigzag64": + if goType.Kind() == reflect.Int64 { + f.L1.Kind = protoreflect.Sint64Kind + } + case s == "fixed32": + switch goType.Kind() { + case reflect.Int32: + f.L1.Kind = protoreflect.Sfixed32Kind + case reflect.Uint32: + f.L1.Kind = protoreflect.Fixed32Kind + case reflect.Float32: + f.L1.Kind = protoreflect.FloatKind + } + case s == "fixed64": + switch goType.Kind() { + case reflect.Int64: + f.L1.Kind = protoreflect.Sfixed64Kind + case reflect.Uint64: + f.L1.Kind = protoreflect.Fixed64Kind + case reflect.Float64: + f.L1.Kind = protoreflect.DoubleKind + } + case s == "bytes": + switch { + case goType.Kind() == reflect.String: + f.L1.Kind = protoreflect.StringKind + case goType.Kind() == reflect.Slice && goType.Elem() == byteType: + f.L1.Kind = protoreflect.BytesKind + default: + f.L1.Kind = protoreflect.MessageKind + } + case s == "group": + f.L1.Kind = protoreflect.GroupKind + case strings.HasPrefix(s, "enum="): + f.L1.Kind = protoreflect.EnumKind + case strings.HasPrefix(s, "json="): + jsonName := s[len("json="):] + if jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) { + f.L1.StringName.InitJSON(jsonName) + } + case s == "packed": + f.L1.EditionFeatures.IsPacked = true + case strings.HasPrefix(s, "weak="): + f.L1.IsWeak = true + f.L1.Message = filedesc.PlaceholderMessage(protoreflect.FullName(s[len("weak="):])) + case strings.HasPrefix(s, "def="): + // The default tag is special in that everything afterwards is the + // default regardless of the presence of commas. + s, i = tag[len("def="):], len(tag) + v, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag) + f.L1.Default = filedesc.DefaultValue(v, ev) + case s == "proto3": + f.L0.ParentFile = filedesc.SurrogateProto3 + } + tag = strings.TrimPrefix(tag[i:], ",") + } + + // The generator uses the group message name instead of the field name. + // We obtain the real field name by lowercasing the group name. + if f.L1.Kind == protoreflect.GroupKind { + f.L0.FullName = protoreflect.FullName(strings.ToLower(string(f.L0.FullName))) + } + return f +} + +// Marshal encodes the protoreflect.FieldDescriptor as a tag. +// +// The enumName must be provided if the kind is an enum. +// Historically, the formulation of the enum "name" was the proto package +// dot-concatenated with the generated Go identifier for the enum type. +// Depending on the context on how Marshal is called, there are different ways +// through which that information is determined. As such it is the caller's +// responsibility to provide a function to obtain that information. +func Marshal(fd protoreflect.FieldDescriptor, enumName string) string { + var tag []string + switch fd.Kind() { + case protoreflect.BoolKind, protoreflect.EnumKind, protoreflect.Int32Kind, protoreflect.Uint32Kind, protoreflect.Int64Kind, protoreflect.Uint64Kind: + tag = append(tag, "varint") + case protoreflect.Sint32Kind: + tag = append(tag, "zigzag32") + case protoreflect.Sint64Kind: + tag = append(tag, "zigzag64") + case protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind: + tag = append(tag, "fixed32") + case protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind: + tag = append(tag, "fixed64") + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind: + tag = append(tag, "bytes") + case protoreflect.GroupKind: + tag = append(tag, "group") + } + tag = append(tag, strconv.Itoa(int(fd.Number()))) + switch fd.Cardinality() { + case protoreflect.Optional: + tag = append(tag, "opt") + case protoreflect.Required: + tag = append(tag, "req") + case protoreflect.Repeated: + tag = append(tag, "rep") + } + if fd.IsPacked() { + tag = append(tag, "packed") + } + name := string(fd.Name()) + if fd.Kind() == protoreflect.GroupKind { + // The name of the FieldDescriptor for a group field is + // lowercased. To find the original capitalization, we + // look in the field's MessageType. + name = string(fd.Message().Name()) + } + tag = append(tag, "name="+name) + if jsonName := fd.JSONName(); jsonName != "" && jsonName != name && !fd.IsExtension() { + // NOTE: The jsonName != name condition is suspect, but it preserve + // the exact same semantics from the previous generator. + tag = append(tag, "json="+jsonName) + } + if fd.IsWeak() { + tag = append(tag, "weak="+string(fd.Message().FullName())) + } + // The previous implementation does not tag extension fields as proto3, + // even when the field is defined in a proto3 file. Match that behavior + // for consistency. + if fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension() { + tag = append(tag, "proto3") + } + if fd.Kind() == protoreflect.EnumKind && enumName != "" { + tag = append(tag, "enum="+enumName) + } + if fd.ContainingOneof() != nil { + tag = append(tag, "oneof") + } + // This must appear last in the tag, since commas in strings aren't escaped. + if fd.HasDefault() { + def, _ := defval.Marshal(fd.Default(), fd.DefaultEnumValue(), fd.Kind(), defval.GoTag) + tag = append(tag, "def="+def) + } + return strings.Join(tag, ",") +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go new file mode 100644 index 0000000..099b2bf --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go @@ -0,0 +1,686 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "bytes" + "fmt" + "io" + "strconv" + "unicode/utf8" + + "google.golang.org/protobuf/internal/errors" +) + +// Decoder is a token-based textproto decoder. +type Decoder struct { + // lastCall is last method called, either readCall or peekCall. + // Initial value is readCall. + lastCall call + + // lastToken contains the last read token. + lastToken Token + + // lastErr contains the last read error. + lastErr error + + // openStack is a stack containing the byte characters for MessageOpen and + // ListOpen kinds. The top of stack represents the message or the list that + // the current token is nested in. An empty stack means the current token is + // at the top level message. The characters '{' and '<' both represent the + // MessageOpen kind. + openStack []byte + + // orig is used in reporting line and column. + orig []byte + // in contains the unconsumed input. + in []byte +} + +// NewDecoder returns a Decoder to read the given []byte. +func NewDecoder(b []byte) *Decoder { + return &Decoder{orig: b, in: b} +} + +// ErrUnexpectedEOF means that EOF was encountered in the middle of the input. +var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF) + +// call specifies which Decoder method was invoked. +type call uint8 + +const ( + readCall call = iota + peekCall +) + +// Peek looks ahead and returns the next token and error without advancing a read. +func (d *Decoder) Peek() (Token, error) { + defer func() { d.lastCall = peekCall }() + if d.lastCall == readCall { + d.lastToken, d.lastErr = d.Read() + } + return d.lastToken, d.lastErr +} + +// Read returns the next token. +// It will return an error if there is no valid token. +func (d *Decoder) Read() (Token, error) { + defer func() { d.lastCall = readCall }() + if d.lastCall == peekCall { + return d.lastToken, d.lastErr + } + + tok, err := d.parseNext(d.lastToken.kind) + if err != nil { + return Token{}, err + } + + switch tok.kind { + case comma, semicolon: + tok, err = d.parseNext(tok.kind) + if err != nil { + return Token{}, err + } + } + d.lastToken = tok + return tok, nil +} + +const ( + mismatchedFmt = "mismatched close character %q" + unexpectedFmt = "unexpected character %q" +) + +// parseNext parses the next Token based on given last kind. +func (d *Decoder) parseNext(lastKind Kind) (Token, error) { + // Trim leading spaces. + d.consume(0) + isEOF := false + if len(d.in) == 0 { + isEOF = true + } + + switch lastKind { + case EOF: + return d.consumeToken(EOF, 0, 0), nil + + case bof: + // Start of top level message. Next token can be EOF or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + return d.parseFieldName() + + case Name: + // Next token can be MessageOpen, ListOpen or Scalar. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case '{', '<': + d.pushOpenStack(ch) + return d.consumeToken(MessageOpen, 1, 0), nil + case '[': + d.pushOpenStack(ch) + return d.consumeToken(ListOpen, 1, 0), nil + default: + return d.parseScalar() + } + + case Scalar: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. + // Next token can be EOF, comma, semicolon or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + switch d.in[0] { + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case MessageOpen: + // Next token can be MessageClose, comma, semicolon or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case ListOpen: + // Next token can be ListClose or comma. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case ']': + d.popOpenStack() + return d.consumeToken(ListClose, 1, 0), nil + case ',': + return d.consumeToken(comma, 1, 0), nil + default: + return Token{}, d.newSyntaxError(unexpectedFmt, ch) + } + } + + case MessageOpen: + // Next token can be MessageClose or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + _, closeCh := d.currentOpenKind() + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + default: + return d.parseFieldName() + } + + case MessageClose: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. + // Next token can be EOF, comma, semicolon or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + switch ch := d.in[0]; ch { + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case MessageOpen: + // Next token can be MessageClose, comma, semicolon or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case ListOpen: + // Next token can be ListClose or comma + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(ListClose, 1, 0), nil + case ',': + return d.consumeToken(comma, 1, 0), nil + default: + return Token{}, d.newSyntaxError(unexpectedFmt, ch) + } + } + + case ListOpen: + // Next token can be ListClose, MessageStart or Scalar. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case ']': + d.popOpenStack() + return d.consumeToken(ListClose, 1, 0), nil + case '{', '<': + d.pushOpenStack(ch) + return d.consumeToken(MessageOpen, 1, 0), nil + default: + return d.parseScalar() + } + + case ListClose: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. + // Next token can be EOF, comma, semicolon or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + switch ch := d.in[0]; ch { + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + case MessageOpen: + // Next token can be MessageClose, comma, semicolon or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + case ',': + return d.consumeToken(comma, 1, 0), nil + case ';': + return d.consumeToken(semicolon, 1, 0), nil + default: + return d.parseFieldName() + } + + default: + // It is not possible to have this case. Let it panic below. + } + + case comma, semicolon: + openKind, closeCh := d.currentOpenKind() + switch openKind { + case bof: + // Top level message. Next token can be EOF or Name. + if isEOF { + return d.consumeToken(EOF, 0, 0), nil + } + return d.parseFieldName() + + case MessageOpen: + // Next token can be MessageClose or Name. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case closeCh: + d.popOpenStack() + return d.consumeToken(MessageClose, 1, 0), nil + case otherCloseChar[closeCh]: + return Token{}, d.newSyntaxError(mismatchedFmt, ch) + default: + return d.parseFieldName() + } + + case ListOpen: + if lastKind == semicolon { + // It is not be possible to have this case as logic here + // should not have produced a semicolon Token when inside a + // list. Let it panic below. + break + } + // Next token can be MessageOpen or Scalar. + if isEOF { + return Token{}, ErrUnexpectedEOF + } + switch ch := d.in[0]; ch { + case '{', '<': + d.pushOpenStack(ch) + return d.consumeToken(MessageOpen, 1, 0), nil + default: + return d.parseScalar() + } + } + } + + line, column := d.Position(len(d.orig) - len(d.in)) + panic(fmt.Sprintf("Decoder.parseNext: bug at handling line %d:%d with lastKind=%v", line, column, lastKind)) +} + +var otherCloseChar = map[byte]byte{ + '}': '>', + '>': '}', +} + +// currentOpenKind indicates whether current position is inside a message, list +// or top-level message by returning MessageOpen, ListOpen or bof respectively. +// If the returned kind is either a MessageOpen or ListOpen, it also returns the +// corresponding closing character. +func (d *Decoder) currentOpenKind() (Kind, byte) { + if len(d.openStack) == 0 { + return bof, 0 + } + openCh := d.openStack[len(d.openStack)-1] + switch openCh { + case '{': + return MessageOpen, '}' + case '<': + return MessageOpen, '>' + case '[': + return ListOpen, ']' + } + panic(fmt.Sprintf("Decoder: openStack contains invalid byte %c", openCh)) +} + +func (d *Decoder) pushOpenStack(ch byte) { + d.openStack = append(d.openStack, ch) +} + +func (d *Decoder) popOpenStack() { + d.openStack = d.openStack[:len(d.openStack)-1] +} + +// parseFieldName parses field name and separator. +func (d *Decoder) parseFieldName() (tok Token, err error) { + defer func() { + if err == nil && d.tryConsumeChar(':') { + tok.attrs |= hasSeparator + } + }() + + // Extension or Any type URL. + if d.in[0] == '[' { + return d.parseTypeName() + } + + // Identifier. + if size := parseIdent(d.in, false); size > 0 { + return d.consumeToken(Name, size, uint8(IdentName)), nil + } + + // Field number. Identify if input is a valid number that is not negative + // and is decimal integer within 32-bit range. + if num := parseNumber(d.in); num.size > 0 { + str := num.string(d.in) + if !num.neg && num.kind == numDec { + if _, err := strconv.ParseInt(str, 10, 32); err == nil { + return d.consumeToken(Name, num.size, uint8(FieldNumber)), nil + } + } + return Token{}, d.newSyntaxError("invalid field number: %s", str) + } + + return Token{}, d.newSyntaxError("invalid field name: %s", errId(d.in)) +} + +// parseTypeName parses Any type URL or extension field name. The name is +// enclosed in [ and ] characters. The C++ parser does not handle many legal URL +// strings. This implementation is more liberal and allows for the pattern +// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed +// in between [ ], '.', '/' and the sub names. +func (d *Decoder) parseTypeName() (Token, error) { + startPos := len(d.orig) - len(d.in) + // Use alias s to advance first in order to use d.in for error handling. + // Caller already checks for [ as first character. + s := consume(d.in[1:], 0) + if len(s) == 0 { + return Token{}, ErrUnexpectedEOF + } + + var name []byte + for len(s) > 0 && isTypeNameChar(s[0]) { + name = append(name, s[0]) + s = s[1:] + } + s = consume(s, 0) + + var closed bool + for len(s) > 0 && !closed { + switch { + case s[0] == ']': + s = s[1:] + closed = true + + case s[0] == '/', s[0] == '.': + if len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') { + return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s", + d.orig[startPos:len(d.orig)-len(s)+1]) + } + name = append(name, s[0]) + s = s[1:] + s = consume(s, 0) + for len(s) > 0 && isTypeNameChar(s[0]) { + name = append(name, s[0]) + s = s[1:] + } + s = consume(s, 0) + + default: + return Token{}, d.newSyntaxError( + "invalid type URL/extension field name: %s", d.orig[startPos:len(d.orig)-len(s)+1]) + } + } + + if !closed { + return Token{}, ErrUnexpectedEOF + } + + // First character cannot be '.'. Last character cannot be '.' or '/'. + size := len(name) + if size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' { + return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s", + d.orig[startPos:len(d.orig)-len(s)]) + } + + d.in = s + endPos := len(d.orig) - len(d.in) + d.consume(0) + + return Token{ + kind: Name, + attrs: uint8(TypeName), + pos: startPos, + raw: d.orig[startPos:endPos], + str: string(name), + }, nil +} + +func isTypeNameChar(b byte) bool { + return (b == '-' || b == '_' || + ('0' <= b && b <= '9') || + ('a' <= b && b <= 'z') || + ('A' <= b && b <= 'Z')) +} + +func isWhiteSpace(b byte) bool { + switch b { + case ' ', '\n', '\r', '\t': + return true + default: + return false + } +} + +// parseIdent parses an unquoted proto identifier and returns size. +// If allowNeg is true, it allows '-' to be the first character in the +// identifier. This is used when parsing literal values like -infinity, etc. +// Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*` +func parseIdent(input []byte, allowNeg bool) int { + var size int + + s := input + if len(s) == 0 { + return 0 + } + + if allowNeg && s[0] == '-' { + s = s[1:] + size++ + if len(s) == 0 { + return 0 + } + } + + switch { + case s[0] == '_', + 'a' <= s[0] && s[0] <= 'z', + 'A' <= s[0] && s[0] <= 'Z': + s = s[1:] + size++ + default: + return 0 + } + + for len(s) > 0 && (s[0] == '_' || + 'a' <= s[0] && s[0] <= 'z' || + 'A' <= s[0] && s[0] <= 'Z' || + '0' <= s[0] && s[0] <= '9') { + s = s[1:] + size++ + } + + if len(s) > 0 && !isDelim(s[0]) { + return 0 + } + + return size +} + +// parseScalar parses for a string, literal or number value. +func (d *Decoder) parseScalar() (Token, error) { + if d.in[0] == '"' || d.in[0] == '\'' { + return d.parseStringValue() + } + + if tok, ok := d.parseLiteralValue(); ok { + return tok, nil + } + + if tok, ok := d.parseNumberValue(); ok { + return tok, nil + } + + return Token{}, d.newSyntaxError("invalid scalar value: %s", errId(d.in)) +} + +// parseLiteralValue parses a literal value. A literal value is used for +// bools, special floats and enums. This function simply identifies that the +// field value is a literal. +func (d *Decoder) parseLiteralValue() (Token, bool) { + size := parseIdent(d.in, true) + if size == 0 { + return Token{}, false + } + return d.consumeToken(Scalar, size, literalValue), true +} + +// consumeToken constructs a Token for given Kind from d.in and consumes given +// size-length from it. +func (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token { + // Important to compute raw and pos before consuming. + tok := Token{ + kind: kind, + attrs: attrs, + pos: len(d.orig) - len(d.in), + raw: d.in[:size], + } + d.consume(size) + return tok +} + +// newSyntaxError returns a syntax error with line and column information for +// current position. +func (d *Decoder) newSyntaxError(f string, x ...any) error { + e := errors.New(f, x...) + line, column := d.Position(len(d.orig) - len(d.in)) + return errors.New("syntax error (line %d:%d): %v", line, column, e) +} + +// Position returns line and column number of given index of the original input. +// It will panic if index is out of range. +func (d *Decoder) Position(idx int) (line int, column int) { + b := d.orig[:idx] + line = bytes.Count(b, []byte("\n")) + 1 + if i := bytes.LastIndexByte(b, '\n'); i >= 0 { + b = b[i+1:] + } + column = utf8.RuneCount(b) + 1 // ignore multi-rune characters + return line, column +} + +func (d *Decoder) tryConsumeChar(c byte) bool { + if len(d.in) > 0 && d.in[0] == c { + d.consume(1) + return true + } + return false +} + +// consume consumes n bytes of input and any subsequent whitespace or comments. +func (d *Decoder) consume(n int) { + d.in = consume(d.in, n) + return +} + +// consume consumes n bytes of input and any subsequent whitespace or comments. +func consume(b []byte, n int) []byte { + b = b[n:] + for len(b) > 0 { + switch b[0] { + case ' ', '\n', '\r', '\t': + b = b[1:] + case '#': + if i := bytes.IndexByte(b, '\n'); i >= 0 { + b = b[i+len("\n"):] + } else { + b = nil + } + default: + return b + } + } + return b +} + +// errId extracts a byte sequence that looks like an invalid ID +// (for the purposes of error reporting). +func errId(seq []byte) []byte { + const maxLen = 32 + for i := 0; i < len(seq); { + if i > maxLen { + return append(seq[:i:i], "…"...) + } + r, size := utf8.DecodeRune(seq[i:]) + if r > utf8.RuneSelf || (r != '/' && isDelim(byte(r))) { + if i == 0 { + // Either the first byte is invalid UTF-8 or a + // delimiter, or the first rune is non-ASCII. + // Return it as-is. + i = size + } + return seq[:i:i] + } + i += size + } + // No delimiter found. + return seq +} + +// isDelim returns true if given byte is a delimiter character. +func isDelim(c byte) bool { + return !(c == '-' || c == '+' || c == '.' || c == '_' || + ('a' <= c && c <= 'z') || + ('A' <= c && c <= 'Z') || + ('0' <= c && c <= '9')) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go new file mode 100644 index 0000000..45c81f0 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go @@ -0,0 +1,211 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +// parseNumberValue parses a number from the input and returns a Token object. +func (d *Decoder) parseNumberValue() (Token, bool) { + in := d.in + num := parseNumber(in) + if num.size == 0 { + return Token{}, false + } + numAttrs := num.kind + if num.neg { + numAttrs |= isNegative + } + tok := Token{ + kind: Scalar, + attrs: numberValue, + pos: len(d.orig) - len(d.in), + raw: d.in[:num.size], + str: num.string(d.in), + numAttrs: numAttrs, + } + d.consume(num.size) + return tok, true +} + +const ( + numDec uint8 = (1 << iota) / 2 + numHex + numOct + numFloat +) + +// number is the result of parsing out a valid number from parseNumber. It +// contains data for doing float or integer conversion via the strconv package +// in conjunction with the input bytes. +type number struct { + kind uint8 + neg bool + size int + // if neg, this is the length of whitespace and comments between + // the minus sign and the rest fo the number literal + sep int +} + +func (num number) string(data []byte) string { + strSize := num.size + last := num.size - 1 + if num.kind == numFloat && (data[last] == 'f' || data[last] == 'F') { + strSize = last + } + if num.neg && num.sep > 0 { + // strip whitespace/comments between negative sign and the rest + strLen := strSize - num.sep + str := make([]byte, strLen) + str[0] = data[0] + copy(str[1:], data[num.sep+1:strSize]) + return string(str) + } + return string(data[:strSize]) + +} + +// parseNumber constructs a number object from given input. It allows for the +// following patterns: +// +// integer: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*) +// float: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?) +// +// It also returns the number of parsed bytes for the given number, 0 if it is +// not a number. +func parseNumber(input []byte) number { + kind := numDec + var size int + var neg bool + + s := input + if len(s) == 0 { + return number{} + } + + // Optional - + var sep int + if s[0] == '-' { + neg = true + s = s[1:] + size++ + // Consume any whitespace or comments between the + // negative sign and the rest of the number + lenBefore := len(s) + s = consume(s, 0) + sep = lenBefore - len(s) + size += sep + if len(s) == 0 { + return number{} + } + } + + switch { + case s[0] == '0': + if len(s) > 1 { + switch { + case s[1] == 'x' || s[1] == 'X': + // Parse as hex number. + kind = numHex + n := 2 + s = s[2:] + for len(s) > 0 && (('0' <= s[0] && s[0] <= '9') || + ('a' <= s[0] && s[0] <= 'f') || + ('A' <= s[0] && s[0] <= 'F')) { + s = s[1:] + n++ + } + if n == 2 { + return number{} + } + size += n + + case '0' <= s[1] && s[1] <= '7': + // Parse as octal number. + kind = numOct + n := 2 + s = s[2:] + for len(s) > 0 && '0' <= s[0] && s[0] <= '7' { + s = s[1:] + n++ + } + size += n + } + + if kind&(numHex|numOct) > 0 { + if len(s) > 0 && !isDelim(s[0]) { + return number{} + } + return number{kind: kind, neg: neg, size: size, sep: sep} + } + } + s = s[1:] + size++ + + case '1' <= s[0] && s[0] <= '9': + n := 1 + s = s[1:] + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + n++ + } + size += n + + case s[0] == '.': + // Set kind to numFloat to signify the intent to parse as float. And + // that it needs to have other digits after '.'. + kind = numFloat + + default: + return number{} + } + + // . followed by 0 or more digits. + if len(s) > 0 && s[0] == '.' { + n := 1 + s = s[1:] + // If decimal point was before any digits, it should be followed by + // other digits. + if len(s) == 0 && kind == numFloat { + return number{} + } + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + n++ + } + size += n + kind = numFloat + } + + // e or E followed by an optional - or + and 1 or more digits. + if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') { + kind = numFloat + s = s[1:] + n := 1 + if s[0] == '+' || s[0] == '-' { + s = s[1:] + n++ + if len(s) == 0 { + return number{} + } + } + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + n++ + } + size += n + } + + // Optional suffix f or F for floats. + if len(s) > 0 && (s[0] == 'f' || s[0] == 'F') { + kind = numFloat + s = s[1:] + size++ + } + + // Check that next byte is a delimiter or it is at the end. + if len(s) > 0 && !isDelim(s[0]) { + return number{} + } + + return number{kind: kind, neg: neg, size: size, sep: sep} +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go new file mode 100644 index 0000000..d4d3490 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go @@ -0,0 +1,161 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "bytes" + "strconv" + "strings" + "unicode" + "unicode/utf16" + "unicode/utf8" + + "google.golang.org/protobuf/internal/strs" +) + +// parseStringValue parses string field token. +// This differs from parseString since the text format allows +// multiple back-to-back string literals where they are semantically treated +// as a single large string with all values concatenated. +// +// E.g., `"foo" "bar" "baz"` => "foobarbaz" +func (d *Decoder) parseStringValue() (Token, error) { + // Note that the ending quote is sufficient to unambiguously mark the end + // of a string. Thus, the text grammar does not require intervening + // whitespace or control characters in-between strings. + // Thus, the following is valid: + // `"foo"'bar'"baz"` => "foobarbaz" + in0 := d.in + var ss []string + for len(d.in) > 0 && (d.in[0] == '"' || d.in[0] == '\'') { + s, err := d.parseString() + if err != nil { + return Token{}, err + } + ss = append(ss, s) + } + // d.in already points to the end of the value at this point. + return Token{ + kind: Scalar, + attrs: stringValue, + pos: len(d.orig) - len(in0), + raw: in0[:len(in0)-len(d.in)], + str: strings.Join(ss, ""), + }, nil +} + +// parseString parses a string value enclosed in " or '. +func (d *Decoder) parseString() (string, error) { + in := d.in + if len(in) == 0 { + return "", ErrUnexpectedEOF + } + quote := in[0] + in = in[1:] + i := indexNeedEscapeInBytes(in) + in, out := in[i:], in[:i:i] // set cap to prevent mutations + for len(in) > 0 { + switch r, n := utf8.DecodeRune(in); { + case r == utf8.RuneError && n == 1: + return "", d.newSyntaxError("invalid UTF-8 detected") + case r == 0 || r == '\n': + return "", d.newSyntaxError("invalid character %q in string", r) + case r == rune(quote): + in = in[1:] + d.consume(len(d.in) - len(in)) + return string(out), nil + case r == '\\': + if len(in) < 2 { + return "", ErrUnexpectedEOF + } + switch r := in[1]; r { + case '"', '\'', '\\', '?': + in, out = in[2:], append(out, r) + case 'a': + in, out = in[2:], append(out, '\a') + case 'b': + in, out = in[2:], append(out, '\b') + case 'n': + in, out = in[2:], append(out, '\n') + case 'r': + in, out = in[2:], append(out, '\r') + case 't': + in, out = in[2:], append(out, '\t') + case 'v': + in, out = in[2:], append(out, '\v') + case 'f': + in, out = in[2:], append(out, '\f') + case '0', '1', '2', '3', '4', '5', '6', '7': + // One, two, or three octal characters. + n := len(in[1:]) - len(bytes.TrimLeft(in[1:], "01234567")) + if n > 3 { + n = 3 + } + v, err := strconv.ParseUint(string(in[1:1+n]), 8, 8) + if err != nil { + return "", d.newSyntaxError("invalid octal escape code %q in string", in[:1+n]) + } + in, out = in[1+n:], append(out, byte(v)) + case 'x': + // One or two hexadecimal characters. + n := len(in[2:]) - len(bytes.TrimLeft(in[2:], "0123456789abcdefABCDEF")) + if n > 2 { + n = 2 + } + v, err := strconv.ParseUint(string(in[2:2+n]), 16, 8) + if err != nil { + return "", d.newSyntaxError("invalid hex escape code %q in string", in[:2+n]) + } + in, out = in[2+n:], append(out, byte(v)) + case 'u', 'U': + // Four or eight hexadecimal characters + n := 6 + if r == 'U' { + n = 10 + } + if len(in) < n { + return "", ErrUnexpectedEOF + } + v, err := strconv.ParseUint(string(in[2:n]), 16, 32) + if utf8.MaxRune < v || err != nil { + return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:n]) + } + in = in[n:] + + r := rune(v) + if utf16.IsSurrogate(r) { + if len(in) < 6 { + return "", ErrUnexpectedEOF + } + v, err := strconv.ParseUint(string(in[2:6]), 16, 16) + r = utf16.DecodeRune(r, rune(v)) + if in[0] != '\\' || in[1] != 'u' || r == unicode.ReplacementChar || err != nil { + return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:6]) + } + in = in[6:] + } + out = append(out, string(r)...) + default: + return "", d.newSyntaxError("invalid escape code %q in string", in[:2]) + } + default: + i := indexNeedEscapeInBytes(in[n:]) + in, out = in[n+i:], append(out, in[:n+i]...) + } + } + return "", ErrUnexpectedEOF +} + +// indexNeedEscapeInString returns the index of the character that needs +// escaping. If no characters need escaping, this returns the input length. +func indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) } + +// UnmarshalString returns an unescaped string given a textproto string value. +// String value needs to contain single or double quotes. This is only used by +// internal/encoding/defval package for unmarshaling bytes. +func UnmarshalString(s string) (string, error) { + d := NewDecoder([]byte(s)) + return d.parseString() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go new file mode 100644 index 0000000..83d2b0d --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go @@ -0,0 +1,373 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "bytes" + "fmt" + "math" + "strconv" + "strings" + + "google.golang.org/protobuf/internal/flags" +) + +// Kind represents a token kind expressible in the textproto format. +type Kind uint8 + +// Kind values. +const ( + Invalid Kind = iota + EOF + Name // Name indicates the field name. + Scalar // Scalar are scalar values, e.g. "string", 47, ENUM_LITERAL, true. + MessageOpen + MessageClose + ListOpen + ListClose + + // comma and semi-colon are only for parsing in between values and should not be exposed. + comma + semicolon + + // bof indicates beginning of file, which is the default token + // kind at the beginning of parsing. + bof = Invalid +) + +func (t Kind) String() string { + switch t { + case Invalid: + return "" + case EOF: + return "eof" + case Scalar: + return "scalar" + case Name: + return "name" + case MessageOpen: + return "{" + case MessageClose: + return "}" + case ListOpen: + return "[" + case ListClose: + return "]" + case comma: + return "," + case semicolon: + return ";" + default: + return fmt.Sprintf("", uint8(t)) + } +} + +// NameKind represents different types of field names. +type NameKind uint8 + +// NameKind values. +const ( + IdentName NameKind = iota + 1 + TypeName + FieldNumber +) + +func (t NameKind) String() string { + switch t { + case IdentName: + return "IdentName" + case TypeName: + return "TypeName" + case FieldNumber: + return "FieldNumber" + default: + return fmt.Sprintf("", uint8(t)) + } +} + +// Bit mask in Token.attrs to indicate if a Name token is followed by the +// separator char ':'. The field name separator char is optional for message +// field or repeated message field, but required for all other types. Decoder +// simply indicates whether a Name token is followed by separator or not. It is +// up to the prototext package to validate. +const hasSeparator = 1 << 7 + +// Scalar value types. +const ( + numberValue = iota + 1 + stringValue + literalValue +) + +// Bit mask in Token.numAttrs to indicate that the number is a negative. +const isNegative = 1 << 7 + +// Token provides a parsed token kind and value. Values are provided by the +// different accessor methods. +type Token struct { + // Kind of the Token object. + kind Kind + // attrs contains metadata for the following Kinds: + // Name: hasSeparator bit and one of NameKind. + // Scalar: one of numberValue, stringValue, literalValue. + attrs uint8 + // numAttrs contains metadata for numberValue: + // - highest bit is whether negative or positive. + // - lower bits indicate one of numDec, numHex, numOct, numFloat. + numAttrs uint8 + // pos provides the position of the token in the original input. + pos int + // raw bytes of the serialized token. + // This is a subslice into the original input. + raw []byte + // str contains parsed string for the following: + // - stringValue of Scalar kind + // - numberValue of Scalar kind + // - TypeName of Name kind + str string +} + +// Kind returns the token kind. +func (t Token) Kind() Kind { + return t.kind +} + +// RawString returns the read value in string. +func (t Token) RawString() string { + return string(t.raw) +} + +// Pos returns the token position from the input. +func (t Token) Pos() int { + return t.pos +} + +// NameKind returns IdentName, TypeName or FieldNumber. +// It panics if type is not Name. +func (t Token) NameKind() NameKind { + if t.kind == Name { + return NameKind(t.attrs &^ hasSeparator) + } + panic(fmt.Sprintf("Token is not a Name type: %s", t.kind)) +} + +// HasSeparator returns true if the field name is followed by the separator char +// ':', else false. It panics if type is not Name. +func (t Token) HasSeparator() bool { + if t.kind == Name { + return t.attrs&hasSeparator != 0 + } + panic(fmt.Sprintf("Token is not a Name type: %s", t.kind)) +} + +// IdentName returns the value for IdentName type. +func (t Token) IdentName() string { + if t.kind == Name && t.attrs&uint8(IdentName) != 0 { + return string(t.raw) + } + panic(fmt.Sprintf("Token is not an IdentName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) +} + +// TypeName returns the value for TypeName type. +func (t Token) TypeName() string { + if t.kind == Name && t.attrs&uint8(TypeName) != 0 { + return t.str + } + panic(fmt.Sprintf("Token is not a TypeName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) +} + +// FieldNumber returns the value for FieldNumber type. It returns a +// non-negative int32 value. Caller will still need to validate for the correct +// field number range. +func (t Token) FieldNumber() int32 { + if t.kind != Name || t.attrs&uint8(FieldNumber) == 0 { + panic(fmt.Sprintf("Token is not a FieldNumber: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) + } + // Following should not return an error as it had already been called right + // before this Token was constructed. + num, _ := strconv.ParseInt(string(t.raw), 10, 32) + return int32(num) +} + +// String returns the string value for a Scalar type. +func (t Token) String() (string, bool) { + if t.kind != Scalar || t.attrs != stringValue { + return "", false + } + return t.str, true +} + +// Enum returns the literal value for a Scalar type for use as enum literals. +func (t Token) Enum() (string, bool) { + if t.kind != Scalar || t.attrs != literalValue || (len(t.raw) > 0 && t.raw[0] == '-') { + return "", false + } + return string(t.raw), true +} + +// Bool returns the bool value for a Scalar type. +func (t Token) Bool() (bool, bool) { + if t.kind != Scalar { + return false, false + } + switch t.attrs { + case literalValue: + if b, ok := boolLits[string(t.raw)]; ok { + return b, true + } + case numberValue: + // Unsigned integer representation of 0 or 1 is permitted: 00, 0x0, 01, + // 0x1, etc. + n, err := strconv.ParseUint(t.str, 0, 64) + if err == nil { + switch n { + case 0: + return false, true + case 1: + return true, true + } + } + } + return false, false +} + +// These exact boolean literals are the ones supported in C++. +var boolLits = map[string]bool{ + "t": true, + "true": true, + "True": true, + "f": false, + "false": false, + "False": false, +} + +// Uint64 returns the uint64 value for a Scalar type. +func (t Token) Uint64() (uint64, bool) { + if t.kind != Scalar || t.attrs != numberValue || + t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 { + return 0, false + } + n, err := strconv.ParseUint(t.str, 0, 64) + if err != nil { + return 0, false + } + return n, true +} + +// Uint32 returns the uint32 value for a Scalar type. +func (t Token) Uint32() (uint32, bool) { + if t.kind != Scalar || t.attrs != numberValue || + t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 { + return 0, false + } + n, err := strconv.ParseUint(t.str, 0, 32) + if err != nil { + return 0, false + } + return uint32(n), true +} + +// Int64 returns the int64 value for a Scalar type. +func (t Token) Int64() (int64, bool) { + if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 { + return 0, false + } + if n, err := strconv.ParseInt(t.str, 0, 64); err == nil { + return n, true + } + // C++ accepts large positive hex numbers as negative values. + // This feature is here for proto1 backwards compatibility purposes. + if flags.ProtoLegacy && (t.numAttrs == numHex) { + if n, err := strconv.ParseUint(t.str, 0, 64); err == nil { + return int64(n), true + } + } + return 0, false +} + +// Int32 returns the int32 value for a Scalar type. +func (t Token) Int32() (int32, bool) { + if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 { + return 0, false + } + if n, err := strconv.ParseInt(t.str, 0, 32); err == nil { + return int32(n), true + } + // C++ accepts large positive hex numbers as negative values. + // This feature is here for proto1 backwards compatibility purposes. + if flags.ProtoLegacy && (t.numAttrs == numHex) { + if n, err := strconv.ParseUint(t.str, 0, 32); err == nil { + return int32(n), true + } + } + return 0, false +} + +// Float64 returns the float64 value for a Scalar type. +func (t Token) Float64() (float64, bool) { + if t.kind != Scalar { + return 0, false + } + switch t.attrs { + case literalValue: + if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok { + return f, true + } + case numberValue: + n, err := strconv.ParseFloat(t.str, 64) + if err == nil { + return n, true + } + nerr := err.(*strconv.NumError) + if nerr.Err == strconv.ErrRange { + return n, true + } + } + return 0, false +} + +// Float32 returns the float32 value for a Scalar type. +func (t Token) Float32() (float32, bool) { + if t.kind != Scalar { + return 0, false + } + switch t.attrs { + case literalValue: + if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok { + return float32(f), true + } + case numberValue: + n, err := strconv.ParseFloat(t.str, 64) + if err == nil { + // Overflows are treated as (-)infinity. + return float32(n), true + } + nerr := err.(*strconv.NumError) + if nerr.Err == strconv.ErrRange { + return float32(n), true + } + } + return 0, false +} + +// These are the supported float literals which C++ permits case-insensitive +// variants of these. +var floatLits = map[string]float64{ + "nan": math.NaN(), + "inf": math.Inf(1), + "infinity": math.Inf(1), + "-inf": math.Inf(-1), + "-infinity": math.Inf(-1), +} + +// TokenEquals returns true if given Tokens are equal, else false. +func TokenEquals(x, y Token) bool { + return x.kind == y.kind && + x.attrs == y.attrs && + x.numAttrs == y.numAttrs && + x.pos == y.pos && + bytes.Equal(x.raw, y.raw) && + x.str == y.str +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go new file mode 100644 index 0000000..7ae6c2a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package text implements the text format for protocol buffers. +// This package has no semantic understanding for protocol buffers and is only +// a parser and composer for the format. +// +// There is no formal specification for the protobuf text format, as such the +// C++ implementation (see google::protobuf::TextFormat) is the reference +// implementation of the text format. +// +// This package is neither a superset nor a subset of the C++ implementation. +// This implementation permits a more liberal grammar in some cases to be +// backwards compatible with the historical Go implementation. +// Future parsings unique to Go should not be added. +// Some grammars allowed by the C++ implementation are deliberately +// not implemented here because they are considered a bug by the protobuf team +// and should not be replicated. +// +// The Go implementation should implement a sufficient amount of the C++ +// grammar such that the default text serialization by C++ can be parsed by Go. +// However, just because the C++ parser accepts some input does not mean that +// the Go implementation should as well. +// +// The text format is almost a superset of JSON except: +// - message keys are not quoted strings, but identifiers +// - the top-level value must be a message without the delimiters +package text diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go new file mode 100644 index 0000000..cf7aed7 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go @@ -0,0 +1,272 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package text + +import ( + "math" + "math/bits" + "strconv" + "strings" + "unicode/utf8" + + "google.golang.org/protobuf/internal/detrand" + "google.golang.org/protobuf/internal/errors" +) + +// encType represents an encoding type. +type encType uint8 + +const ( + _ encType = (1 << iota) / 2 + name + scalar + messageOpen + messageClose +) + +// Encoder provides methods to write out textproto constructs and values. The user is +// responsible for producing valid sequences of constructs and values. +type Encoder struct { + encoderState + + indent string + delims [2]byte + outputASCII bool +} + +type encoderState struct { + lastType encType + indents []byte + out []byte +} + +// NewEncoder returns an Encoder. +// +// If indent is a non-empty string, it causes every entry in a List or Message +// to be preceded by the indent and trailed by a newline. +// +// If delims is not the zero value, it controls the delimiter characters used +// for messages (e.g., "{}" vs "<>"). +// +// If outputASCII is true, strings will be serialized in such a way that +// multi-byte UTF-8 sequences are escaped. This property ensures that the +// overall output is ASCII (as opposed to UTF-8). +func NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error) { + e := &Encoder{ + encoderState: encoderState{out: buf}, + } + if len(indent) > 0 { + if strings.Trim(indent, " \t") != "" { + return nil, errors.New("indent may only be composed of space and tab characters") + } + e.indent = indent + } + switch delims { + case [2]byte{0, 0}: + e.delims = [2]byte{'{', '}'} + case [2]byte{'{', '}'}, [2]byte{'<', '>'}: + e.delims = delims + default: + return nil, errors.New("delimiters may only be \"{}\" or \"<>\"") + } + e.outputASCII = outputASCII + + return e, nil +} + +// Bytes returns the content of the written bytes. +func (e *Encoder) Bytes() []byte { + return e.out +} + +// StartMessage writes out the '{' or '<' symbol. +func (e *Encoder) StartMessage() { + e.prepareNext(messageOpen) + e.out = append(e.out, e.delims[0]) +} + +// EndMessage writes out the '}' or '>' symbol. +func (e *Encoder) EndMessage() { + e.prepareNext(messageClose) + e.out = append(e.out, e.delims[1]) +} + +// WriteName writes out the field name and the separator ':'. +func (e *Encoder) WriteName(s string) { + e.prepareNext(name) + e.out = append(e.out, s...) + e.out = append(e.out, ':') +} + +// WriteBool writes out the given boolean value. +func (e *Encoder) WriteBool(b bool) { + if b { + e.WriteLiteral("true") + } else { + e.WriteLiteral("false") + } +} + +// WriteString writes out the given string value. +func (e *Encoder) WriteString(s string) { + e.prepareNext(scalar) + e.out = appendString(e.out, s, e.outputASCII) +} + +func appendString(out []byte, in string, outputASCII bool) []byte { + out = append(out, '"') + i := indexNeedEscapeInString(in) + in, out = in[i:], append(out, in[:i]...) + for len(in) > 0 { + switch r, n := utf8.DecodeRuneInString(in); { + case r == utf8.RuneError && n == 1: + // We do not report invalid UTF-8 because strings in the text format + // are used to represent both the proto string and bytes type. + r = rune(in[0]) + fallthrough + case r < ' ' || r == '"' || r == '\\' || r == 0x7f: + out = append(out, '\\') + switch r { + case '"', '\\': + out = append(out, byte(r)) + case '\n': + out = append(out, 'n') + case '\r': + out = append(out, 'r') + case '\t': + out = append(out, 't') + default: + out = append(out, 'x') + out = append(out, "00"[1+(bits.Len32(uint32(r))-1)/4:]...) + out = strconv.AppendUint(out, uint64(r), 16) + } + in = in[n:] + case r >= utf8.RuneSelf && (outputASCII || r <= 0x009f): + out = append(out, '\\') + if r <= math.MaxUint16 { + out = append(out, 'u') + out = append(out, "0000"[1+(bits.Len32(uint32(r))-1)/4:]...) + out = strconv.AppendUint(out, uint64(r), 16) + } else { + out = append(out, 'U') + out = append(out, "00000000"[1+(bits.Len32(uint32(r))-1)/4:]...) + out = strconv.AppendUint(out, uint64(r), 16) + } + in = in[n:] + default: + i := indexNeedEscapeInString(in[n:]) + in, out = in[n+i:], append(out, in[:n+i]...) + } + } + out = append(out, '"') + return out +} + +// indexNeedEscapeInString returns the index of the character that needs +// escaping. If no characters need escaping, this returns the input length. +func indexNeedEscapeInString(s string) int { + for i := 0; i < len(s); i++ { + if c := s[i]; c < ' ' || c == '"' || c == '\'' || c == '\\' || c >= 0x7f { + return i + } + } + return len(s) +} + +// WriteFloat writes out the given float value for given bitSize. +func (e *Encoder) WriteFloat(n float64, bitSize int) { + e.prepareNext(scalar) + e.out = appendFloat(e.out, n, bitSize) +} + +func appendFloat(out []byte, n float64, bitSize int) []byte { + switch { + case math.IsNaN(n): + return append(out, "nan"...) + case math.IsInf(n, +1): + return append(out, "inf"...) + case math.IsInf(n, -1): + return append(out, "-inf"...) + default: + return strconv.AppendFloat(out, n, 'g', -1, bitSize) + } +} + +// WriteInt writes out the given signed integer value. +func (e *Encoder) WriteInt(n int64) { + e.prepareNext(scalar) + e.out = strconv.AppendInt(e.out, n, 10) +} + +// WriteUint writes out the given unsigned integer value. +func (e *Encoder) WriteUint(n uint64) { + e.prepareNext(scalar) + e.out = strconv.AppendUint(e.out, n, 10) +} + +// WriteLiteral writes out the given string as a literal value without quotes. +// This is used for writing enum literal strings. +func (e *Encoder) WriteLiteral(s string) { + e.prepareNext(scalar) + e.out = append(e.out, s...) +} + +// prepareNext adds possible space and indentation for the next value based +// on last encType and indent option. It also updates e.lastType to next. +func (e *Encoder) prepareNext(next encType) { + defer func() { + e.lastType = next + }() + + // Single line. + if len(e.indent) == 0 { + // Add space after each field before the next one. + if e.lastType&(scalar|messageClose) != 0 && next == name { + e.out = append(e.out, ' ') + // Add a random extra space to make output unstable. + if detrand.Bool() { + e.out = append(e.out, ' ') + } + } + return + } + + // Multi-line. + switch { + case e.lastType == name: + e.out = append(e.out, ' ') + // Add a random extra space after name: to make output unstable. + if detrand.Bool() { + e.out = append(e.out, ' ') + } + + case e.lastType == messageOpen && next != messageClose: + e.indents = append(e.indents, e.indent...) + e.out = append(e.out, '\n') + e.out = append(e.out, e.indents...) + + case e.lastType&(scalar|messageClose) != 0: + if next == messageClose { + e.indents = e.indents[:len(e.indents)-len(e.indent)] + } + e.out = append(e.out, '\n') + e.out = append(e.out, e.indents...) + } +} + +// Snapshot returns the current snapshot for use in Reset. +func (e *Encoder) Snapshot() encoderState { + return e.encoderState +} + +// Reset resets the Encoder to the given encoderState from a Snapshot. +func (e *Encoder) Reset(es encoderState) { + e.encoderState = es +} + +// AppendString appends the escaped form of the input string to b. +func AppendString(b []byte, s string) []byte { + return appendString(b, s, false) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go b/examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go new file mode 100644 index 0000000..c2d6bd5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/errors/errors.go @@ -0,0 +1,104 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package errors implements functions to manipulate errors. +package errors + +import ( + "errors" + "fmt" + + "google.golang.org/protobuf/internal/detrand" +) + +// Error is a sentinel matching all errors produced by this package. +var Error = errors.New("protobuf error") + +// New formats a string according to the format specifier and arguments and +// returns an error that has a "proto" prefix. +func New(f string, x ...any) error { + return &prefixError{s: format(f, x...)} +} + +type prefixError struct{ s string } + +var prefix = func() string { + // Deliberately introduce instability into the error message string to + // discourage users from performing error string comparisons. + if detrand.Bool() { + return "proto: " // use non-breaking spaces (U+00a0) + } else { + return "proto: " // use regular spaces (U+0020) + } +}() + +func (e *prefixError) Error() string { + return prefix + e.s +} + +func (e *prefixError) Unwrap() error { + return Error +} + +// Wrap returns an error that has a "proto" prefix, the formatted string described +// by the format specifier and arguments, and a suffix of err. The error wraps err. +func Wrap(err error, f string, x ...any) error { + return &wrapError{ + s: format(f, x...), + err: err, + } +} + +type wrapError struct { + s string + err error +} + +func (e *wrapError) Error() string { + return format("%v%v: %v", prefix, e.s, e.err) +} + +func (e *wrapError) Unwrap() error { + return e.err +} + +func (e *wrapError) Is(target error) bool { + return target == Error +} + +func format(f string, x ...any) string { + // avoid "proto: " prefix when chaining + for i := 0; i < len(x); i++ { + switch e := x[i].(type) { + case *prefixError: + x[i] = e.s + case *wrapError: + x[i] = format("%v: %v", e.s, e.err) + } + } + return fmt.Sprintf(f, x...) +} + +func InvalidUTF8(name string) error { + return New("field %v contains invalid UTF-8", name) +} + +func RequiredNotSet(name string) error { + return New("required field %v not set", name) +} + +type SizeMismatchError struct { + Calculated, Measured int +} + +func (e *SizeMismatchError) Error() string { + return fmt.Sprintf("size mismatch (see https://github.com/golang/protobuf/issues/1609): calculated=%d, measured=%d", e.Calculated, e.Measured) +} + +func MismatchedSizeCalculation(calculated, measured int) error { + return &SizeMismatchError{ + Calculated: calculated, + Measured: measured, + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go new file mode 100644 index 0000000..fbcd349 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go112.go @@ -0,0 +1,40 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.13 +// +build !go1.13 + +package errors + +import "reflect" + +// Is is a copy of Go 1.13's errors.Is for use with older Go versions. +func Is(err, target error) bool { + if target == nil { + return err == target + } + + isComparable := reflect.TypeOf(target).Comparable() + for { + if isComparable && err == target { + return true + } + if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { + return true + } + if err = unwrap(err); err == nil { + return false + } + } +} + +func unwrap(err error) error { + u, ok := err.(interface { + Unwrap() error + }) + if !ok { + return nil + } + return u.Unwrap() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go new file mode 100644 index 0000000..5e72f1c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/errors/is_go113.go @@ -0,0 +1,13 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.13 +// +build go1.13 + +package errors + +import "errors" + +// Is is errors.Is. +func Is(err, target error) bool { return errors.Is(err, target) } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go new file mode 100644 index 0000000..7cac1c1 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/build.go @@ -0,0 +1,157 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package filedesc provides functionality for constructing descriptors. +// +// The types in this package implement interfaces in the protoreflect package +// related to protobuf descripriptors. +package filedesc + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Builder construct a protoreflect.FileDescriptor from the raw descriptor. +type Builder struct { + // GoPackagePath is the Go package path that is invoking this builder. + GoPackagePath string + + // RawDescriptor is the wire-encoded bytes of FileDescriptorProto + // and must be populated. + RawDescriptor []byte + + // NumEnums is the total number of enums declared in the file. + NumEnums int32 + // NumMessages is the total number of messages declared in the file. + // It includes the implicit message declarations for map entries. + NumMessages int32 + // NumExtensions is the total number of extensions declared in the file. + NumExtensions int32 + // NumServices is the total number of services declared in the file. + NumServices int32 + + // TypeResolver resolves extension field types for descriptor options. + // If nil, it uses protoregistry.GlobalTypes. + TypeResolver interface { + protoregistry.ExtensionTypeResolver + } + + // FileRegistry is use to lookup file, enum, and message dependencies. + // Once constructed, the file descriptor is registered here. + // If nil, it uses protoregistry.GlobalFiles. + FileRegistry interface { + FindFileByPath(string) (protoreflect.FileDescriptor, error) + FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) + RegisterFile(protoreflect.FileDescriptor) error + } +} + +// resolverByIndex is an interface Builder.FileRegistry may implement. +// If so, it permits looking up an enum or message dependency based on the +// sub-list and element index into filetype.Builder.DependencyIndexes. +type resolverByIndex interface { + FindEnumByIndex(int32, int32, []Enum, []Message) protoreflect.EnumDescriptor + FindMessageByIndex(int32, int32, []Enum, []Message) protoreflect.MessageDescriptor +} + +// Indexes of each sub-list in filetype.Builder.DependencyIndexes. +const ( + listFieldDeps int32 = iota + listExtTargets + listExtDeps + listMethInDeps + listMethOutDeps +) + +// Out is the output of the Builder. +type Out struct { + File protoreflect.FileDescriptor + + // Enums is all enum descriptors in "flattened ordering". + Enums []Enum + // Messages is all message descriptors in "flattened ordering". + // It includes the implicit message declarations for map entries. + Messages []Message + // Extensions is all extension descriptors in "flattened ordering". + Extensions []Extension + // Service is all service descriptors in "flattened ordering". + Services []Service +} + +// Build constructs a FileDescriptor given the parameters set in Builder. +// It assumes that the inputs are well-formed and panics if any inconsistencies +// are encountered. +// +// If NumEnums+NumMessages+NumExtensions+NumServices is zero, +// then Build automatically derives them from the raw descriptor. +func (db Builder) Build() (out Out) { + // Populate the counts if uninitialized. + if db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 { + db.unmarshalCounts(db.RawDescriptor, true) + } + + // Initialize resolvers and registries if unpopulated. + if db.TypeResolver == nil { + db.TypeResolver = protoregistry.GlobalTypes + } + if db.FileRegistry == nil { + db.FileRegistry = protoregistry.GlobalFiles + } + + fd := newRawFile(db) + out.File = fd + out.Enums = fd.allEnums + out.Messages = fd.allMessages + out.Extensions = fd.allExtensions + out.Services = fd.allServices + + if err := db.FileRegistry.RegisterFile(fd); err != nil { + panic(err) + } + return out +} + +// unmarshalCounts counts the number of enum, message, extension, and service +// declarations in the raw message, which is either a FileDescriptorProto +// or a MessageDescriptorProto depending on whether isFile is set. +func (db *Builder) unmarshalCounts(b []byte, isFile bool) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + if isFile { + switch num { + case genid.FileDescriptorProto_EnumType_field_number: + db.NumEnums++ + case genid.FileDescriptorProto_MessageType_field_number: + db.unmarshalCounts(v, false) + db.NumMessages++ + case genid.FileDescriptorProto_Extension_field_number: + db.NumExtensions++ + case genid.FileDescriptorProto_Service_field_number: + db.NumServices++ + } + } else { + switch num { + case genid.DescriptorProto_EnumType_field_number: + db.NumEnums++ + case genid.DescriptorProto_NestedType_field_number: + db.unmarshalCounts(v, false) + db.NumMessages++ + case genid.DescriptorProto_Extension_field_number: + db.NumExtensions++ + } + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go new file mode 100644 index 0000000..df53ff4 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -0,0 +1,733 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "bytes" + "fmt" + "strings" + "sync" + "sync/atomic" + + "google.golang.org/protobuf/internal/descfmt" + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/encoding/defval" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Edition is an Enum for proto2.Edition +type Edition int32 + +// These values align with the value of Enum in descriptor.proto which allows +// direct conversion between the proto enum and this enum. +const ( + EditionUnknown Edition = 0 + EditionProto2 Edition = 998 + EditionProto3 Edition = 999 + Edition2023 Edition = 1000 + EditionUnsupported Edition = 100000 +) + +// The types in this file may have a suffix: +// • L0: Contains fields common to all descriptors (except File) and +// must be initialized up front. +// • L1: Contains fields specific to a descriptor and +// must be initialized up front. If the associated proto uses Editions, the +// Editions features must always be resolved. If not explicitly set, the +// appropriate default must be resolved and set. +// • L2: Contains fields that are lazily initialized when constructing +// from the raw file descriptor. When constructing as a literal, the L2 +// fields must be initialized up front. +// +// The types are exported so that packages like reflect/protodesc can +// directly construct descriptors. + +type ( + File struct { + fileRaw + L1 FileL1 + + once uint32 // atomically set if L2 is valid + mu sync.Mutex // protects L2 + L2 *FileL2 + } + FileL1 struct { + Syntax protoreflect.Syntax + Edition Edition // Only used if Syntax == Editions + Path string + Package protoreflect.FullName + + Enums Enums + Messages Messages + Extensions Extensions + Services Services + + EditionFeatures EditionFeatures + } + FileL2 struct { + Options func() protoreflect.ProtoMessage + Imports FileImports + Locations SourceLocations + } + + EditionFeatures struct { + // IsFieldPresence is true if field_presence is EXPLICIT + // https://protobuf.dev/editions/features/#field_presence + IsFieldPresence bool + // IsFieldPresence is true if field_presence is LEGACY_REQUIRED + // https://protobuf.dev/editions/features/#field_presence + IsLegacyRequired bool + // IsOpenEnum is true if enum_type is OPEN + // https://protobuf.dev/editions/features/#enum_type + IsOpenEnum bool + // IsPacked is true if repeated_field_encoding is PACKED + // https://protobuf.dev/editions/features/#repeated_field_encoding + IsPacked bool + // IsUTF8Validated is true if utf_validation is VERIFY + // https://protobuf.dev/editions/features/#utf8_validation + IsUTF8Validated bool + // IsDelimitedEncoded is true if message_encoding is DELIMITED + // https://protobuf.dev/editions/features/#message_encoding + IsDelimitedEncoded bool + // IsJSONCompliant is true if json_format is ALLOW + // https://protobuf.dev/editions/features/#json_format + IsJSONCompliant bool + // GenerateLegacyUnmarshalJSON determines if the plugin generates the + // UnmarshalJSON([]byte) error method for enums. + GenerateLegacyUnmarshalJSON bool + } +) + +func (fd *File) ParentFile() protoreflect.FileDescriptor { return fd } +func (fd *File) Parent() protoreflect.Descriptor { return nil } +func (fd *File) Index() int { return 0 } +func (fd *File) Syntax() protoreflect.Syntax { return fd.L1.Syntax } + +// Not exported and just used to reconstruct the original FileDescriptor proto +func (fd *File) Edition() int32 { return int32(fd.L1.Edition) } +func (fd *File) Name() protoreflect.Name { return fd.L1.Package.Name() } +func (fd *File) FullName() protoreflect.FullName { return fd.L1.Package } +func (fd *File) IsPlaceholder() bool { return false } +func (fd *File) Options() protoreflect.ProtoMessage { + if f := fd.lazyInit().Options; f != nil { + return f() + } + return descopts.File +} +func (fd *File) Path() string { return fd.L1.Path } +func (fd *File) Package() protoreflect.FullName { return fd.L1.Package } +func (fd *File) Imports() protoreflect.FileImports { return &fd.lazyInit().Imports } +func (fd *File) Enums() protoreflect.EnumDescriptors { return &fd.L1.Enums } +func (fd *File) Messages() protoreflect.MessageDescriptors { return &fd.L1.Messages } +func (fd *File) Extensions() protoreflect.ExtensionDescriptors { return &fd.L1.Extensions } +func (fd *File) Services() protoreflect.ServiceDescriptors { return &fd.L1.Services } +func (fd *File) SourceLocations() protoreflect.SourceLocations { return &fd.lazyInit().Locations } +func (fd *File) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } +func (fd *File) ProtoType(protoreflect.FileDescriptor) {} +func (fd *File) ProtoInternal(pragma.DoNotImplement) {} + +func (fd *File) lazyInit() *FileL2 { + if atomic.LoadUint32(&fd.once) == 0 { + fd.lazyInitOnce() + } + return fd.L2 +} + +func (fd *File) lazyInitOnce() { + fd.mu.Lock() + if fd.L2 == nil { + fd.lazyRawInit() // recursively initializes all L2 structures + } + atomic.StoreUint32(&fd.once, 1) + fd.mu.Unlock() +} + +// GoPackagePath is a pseudo-internal API for determining the Go package path +// that this file descriptor is declared in. +// +// WARNING: This method is exempt from the compatibility promise and may be +// removed in the future without warning. +func (fd *File) GoPackagePath() string { + return fd.builder.GoPackagePath +} + +type ( + Enum struct { + Base + L1 EnumL1 + L2 *EnumL2 // protected by fileDesc.once + } + EnumL1 struct { + eagerValues bool // controls whether EnumL2.Values is already populated + + EditionFeatures EditionFeatures + } + EnumL2 struct { + Options func() protoreflect.ProtoMessage + Values EnumValues + ReservedNames Names + ReservedRanges EnumRanges + } + + EnumValue struct { + Base + L1 EnumValueL1 + } + EnumValueL1 struct { + Options func() protoreflect.ProtoMessage + Number protoreflect.EnumNumber + } +) + +func (ed *Enum) Options() protoreflect.ProtoMessage { + if f := ed.lazyInit().Options; f != nil { + return f() + } + return descopts.Enum +} +func (ed *Enum) Values() protoreflect.EnumValueDescriptors { + if ed.L1.eagerValues { + return &ed.L2.Values + } + return &ed.lazyInit().Values +} +func (ed *Enum) ReservedNames() protoreflect.Names { return &ed.lazyInit().ReservedNames } +func (ed *Enum) ReservedRanges() protoreflect.EnumRanges { return &ed.lazyInit().ReservedRanges } +func (ed *Enum) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } +func (ed *Enum) ProtoType(protoreflect.EnumDescriptor) {} +func (ed *Enum) lazyInit() *EnumL2 { + ed.L0.ParentFile.lazyInit() // implicitly initializes L2 + return ed.L2 +} +func (ed *Enum) IsClosed() bool { + return !ed.L1.EditionFeatures.IsOpenEnum +} + +func (ed *EnumValue) Options() protoreflect.ProtoMessage { + if f := ed.L1.Options; f != nil { + return f() + } + return descopts.EnumValue +} +func (ed *EnumValue) Number() protoreflect.EnumNumber { return ed.L1.Number } +func (ed *EnumValue) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } +func (ed *EnumValue) ProtoType(protoreflect.EnumValueDescriptor) {} + +type ( + Message struct { + Base + L1 MessageL1 + L2 *MessageL2 // protected by fileDesc.once + } + MessageL1 struct { + Enums Enums + Messages Messages + Extensions Extensions + IsMapEntry bool // promoted from google.protobuf.MessageOptions + IsMessageSet bool // promoted from google.protobuf.MessageOptions + + EditionFeatures EditionFeatures + } + MessageL2 struct { + Options func() protoreflect.ProtoMessage + Fields Fields + Oneofs Oneofs + ReservedNames Names + ReservedRanges FieldRanges + RequiredNumbers FieldNumbers // must be consistent with Fields.Cardinality + ExtensionRanges FieldRanges + ExtensionRangeOptions []func() protoreflect.ProtoMessage // must be same length as ExtensionRanges + } + + Field struct { + Base + L1 FieldL1 + } + FieldL1 struct { + Options func() protoreflect.ProtoMessage + Number protoreflect.FieldNumber + Cardinality protoreflect.Cardinality // must be consistent with Message.RequiredNumbers + Kind protoreflect.Kind + StringName stringName + IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto + IsWeak bool // promoted from google.protobuf.FieldOptions + Default defaultValue + ContainingOneof protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields + Enum protoreflect.EnumDescriptor + Message protoreflect.MessageDescriptor + + EditionFeatures EditionFeatures + } + + Oneof struct { + Base + L1 OneofL1 + } + OneofL1 struct { + Options func() protoreflect.ProtoMessage + Fields OneofFields // must be consistent with Message.Fields.ContainingOneof + + EditionFeatures EditionFeatures + } +) + +func (md *Message) Options() protoreflect.ProtoMessage { + if f := md.lazyInit().Options; f != nil { + return f() + } + return descopts.Message +} +func (md *Message) IsMapEntry() bool { return md.L1.IsMapEntry } +func (md *Message) Fields() protoreflect.FieldDescriptors { return &md.lazyInit().Fields } +func (md *Message) Oneofs() protoreflect.OneofDescriptors { return &md.lazyInit().Oneofs } +func (md *Message) ReservedNames() protoreflect.Names { return &md.lazyInit().ReservedNames } +func (md *Message) ReservedRanges() protoreflect.FieldRanges { return &md.lazyInit().ReservedRanges } +func (md *Message) RequiredNumbers() protoreflect.FieldNumbers { return &md.lazyInit().RequiredNumbers } +func (md *Message) ExtensionRanges() protoreflect.FieldRanges { return &md.lazyInit().ExtensionRanges } +func (md *Message) ExtensionRangeOptions(i int) protoreflect.ProtoMessage { + if f := md.lazyInit().ExtensionRangeOptions[i]; f != nil { + return f() + } + return descopts.ExtensionRange +} +func (md *Message) Enums() protoreflect.EnumDescriptors { return &md.L1.Enums } +func (md *Message) Messages() protoreflect.MessageDescriptors { return &md.L1.Messages } +func (md *Message) Extensions() protoreflect.ExtensionDescriptors { return &md.L1.Extensions } +func (md *Message) ProtoType(protoreflect.MessageDescriptor) {} +func (md *Message) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } +func (md *Message) lazyInit() *MessageL2 { + md.L0.ParentFile.lazyInit() // implicitly initializes L2 + return md.L2 +} + +// IsMessageSet is a pseudo-internal API for checking whether a message +// should serialize in the proto1 message format. +// +// WARNING: This method is exempt from the compatibility promise and may be +// removed in the future without warning. +func (md *Message) IsMessageSet() bool { + return md.L1.IsMessageSet +} + +func (fd *Field) Options() protoreflect.ProtoMessage { + if f := fd.L1.Options; f != nil { + return f() + } + return descopts.Field +} +func (fd *Field) Number() protoreflect.FieldNumber { return fd.L1.Number } +func (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality } +func (fd *Field) Kind() protoreflect.Kind { + return fd.L1.Kind +} +func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON } +func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } +func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } +func (fd *Field) HasPresence() bool { + if fd.L1.Cardinality == protoreflect.Repeated { + return false + } + return fd.IsExtension() || fd.L1.EditionFeatures.IsFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil +} +func (fd *Field) HasOptionalKeyword() bool { + return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional +} +func (fd *Field) IsPacked() bool { + if fd.L1.Cardinality != protoreflect.Repeated { + return false + } + switch fd.L1.Kind { + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: + return false + } + return fd.L1.EditionFeatures.IsPacked +} +func (fd *Field) IsExtension() bool { return false } +func (fd *Field) IsWeak() bool { return fd.L1.IsWeak } +func (fd *Field) IsList() bool { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() } +func (fd *Field) IsMap() bool { return fd.Message() != nil && fd.Message().IsMapEntry() } +func (fd *Field) MapKey() protoreflect.FieldDescriptor { + if !fd.IsMap() { + return nil + } + return fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number) +} +func (fd *Field) MapValue() protoreflect.FieldDescriptor { + if !fd.IsMap() { + return nil + } + return fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number) +} +func (fd *Field) HasDefault() bool { return fd.L1.Default.has } +func (fd *Field) Default() protoreflect.Value { return fd.L1.Default.get(fd) } +func (fd *Field) DefaultEnumValue() protoreflect.EnumValueDescriptor { return fd.L1.Default.enum } +func (fd *Field) ContainingOneof() protoreflect.OneofDescriptor { return fd.L1.ContainingOneof } +func (fd *Field) ContainingMessage() protoreflect.MessageDescriptor { + return fd.L0.Parent.(protoreflect.MessageDescriptor) +} +func (fd *Field) Enum() protoreflect.EnumDescriptor { + return fd.L1.Enum +} +func (fd *Field) Message() protoreflect.MessageDescriptor { + if fd.L1.IsWeak { + if d, _ := protoregistry.GlobalFiles.FindDescriptorByName(fd.L1.Message.FullName()); d != nil { + return d.(protoreflect.MessageDescriptor) + } + } + return fd.L1.Message +} +func (fd *Field) IsMapEntry() bool { + parent, ok := fd.L0.Parent.(protoreflect.MessageDescriptor) + return ok && parent.IsMapEntry() +} +func (fd *Field) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } +func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {} + +// EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8 +// validation for the string field. This exists for Google-internal use only +// since proto3 did not enforce UTF-8 validity prior to the open-source release. +// If this method does not exist, the default is to enforce valid UTF-8. +// +// WARNING: This method is exempt from the compatibility promise and may be +// removed in the future without warning. +func (fd *Field) EnforceUTF8() bool { + return fd.L1.EditionFeatures.IsUTF8Validated +} + +func (od *Oneof) IsSynthetic() bool { + return od.L0.ParentFile.L1.Syntax == protoreflect.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword() +} +func (od *Oneof) Options() protoreflect.ProtoMessage { + if f := od.L1.Options; f != nil { + return f() + } + return descopts.Oneof +} +func (od *Oneof) Fields() protoreflect.FieldDescriptors { return &od.L1.Fields } +func (od *Oneof) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, od) } +func (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {} + +type ( + Extension struct { + Base + L1 ExtensionL1 + L2 *ExtensionL2 // protected by fileDesc.once + } + ExtensionL1 struct { + Number protoreflect.FieldNumber + Extendee protoreflect.MessageDescriptor + Cardinality protoreflect.Cardinality + Kind protoreflect.Kind + EditionFeatures EditionFeatures + } + ExtensionL2 struct { + Options func() protoreflect.ProtoMessage + StringName stringName + IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto + Default defaultValue + Enum protoreflect.EnumDescriptor + Message protoreflect.MessageDescriptor + } +) + +func (xd *Extension) Options() protoreflect.ProtoMessage { + if f := xd.lazyInit().Options; f != nil { + return f() + } + return descopts.Field +} +func (xd *Extension) Number() protoreflect.FieldNumber { return xd.L1.Number } +func (xd *Extension) Cardinality() protoreflect.Cardinality { return xd.L1.Cardinality } +func (xd *Extension) Kind() protoreflect.Kind { return xd.L1.Kind } +func (xd *Extension) HasJSONName() bool { return xd.lazyInit().StringName.hasJSON } +func (xd *Extension) JSONName() string { return xd.lazyInit().StringName.getJSON(xd) } +func (xd *Extension) TextName() string { return xd.lazyInit().StringName.getText(xd) } +func (xd *Extension) HasPresence() bool { return xd.L1.Cardinality != protoreflect.Repeated } +func (xd *Extension) HasOptionalKeyword() bool { + return (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional +} +func (xd *Extension) IsPacked() bool { + if xd.L1.Cardinality != protoreflect.Repeated { + return false + } + switch xd.L1.Kind { + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: + return false + } + return xd.L1.EditionFeatures.IsPacked +} +func (xd *Extension) IsExtension() bool { return true } +func (xd *Extension) IsWeak() bool { return false } +func (xd *Extension) IsList() bool { return xd.Cardinality() == protoreflect.Repeated } +func (xd *Extension) IsMap() bool { return false } +func (xd *Extension) MapKey() protoreflect.FieldDescriptor { return nil } +func (xd *Extension) MapValue() protoreflect.FieldDescriptor { return nil } +func (xd *Extension) HasDefault() bool { return xd.lazyInit().Default.has } +func (xd *Extension) Default() protoreflect.Value { return xd.lazyInit().Default.get(xd) } +func (xd *Extension) DefaultEnumValue() protoreflect.EnumValueDescriptor { + return xd.lazyInit().Default.enum +} +func (xd *Extension) ContainingOneof() protoreflect.OneofDescriptor { return nil } +func (xd *Extension) ContainingMessage() protoreflect.MessageDescriptor { return xd.L1.Extendee } +func (xd *Extension) Enum() protoreflect.EnumDescriptor { return xd.lazyInit().Enum } +func (xd *Extension) Message() protoreflect.MessageDescriptor { return xd.lazyInit().Message } +func (xd *Extension) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, xd) } +func (xd *Extension) ProtoType(protoreflect.FieldDescriptor) {} +func (xd *Extension) ProtoInternal(pragma.DoNotImplement) {} +func (xd *Extension) lazyInit() *ExtensionL2 { + xd.L0.ParentFile.lazyInit() // implicitly initializes L2 + return xd.L2 +} + +type ( + Service struct { + Base + L1 ServiceL1 + L2 *ServiceL2 // protected by fileDesc.once + } + ServiceL1 struct{} + ServiceL2 struct { + Options func() protoreflect.ProtoMessage + Methods Methods + } + + Method struct { + Base + L1 MethodL1 + } + MethodL1 struct { + Options func() protoreflect.ProtoMessage + Input protoreflect.MessageDescriptor + Output protoreflect.MessageDescriptor + IsStreamingClient bool + IsStreamingServer bool + } +) + +func (sd *Service) Options() protoreflect.ProtoMessage { + if f := sd.lazyInit().Options; f != nil { + return f() + } + return descopts.Service +} +func (sd *Service) Methods() protoreflect.MethodDescriptors { return &sd.lazyInit().Methods } +func (sd *Service) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, sd) } +func (sd *Service) ProtoType(protoreflect.ServiceDescriptor) {} +func (sd *Service) ProtoInternal(pragma.DoNotImplement) {} +func (sd *Service) lazyInit() *ServiceL2 { + sd.L0.ParentFile.lazyInit() // implicitly initializes L2 + return sd.L2 +} + +func (md *Method) Options() protoreflect.ProtoMessage { + if f := md.L1.Options; f != nil { + return f() + } + return descopts.Method +} +func (md *Method) Input() protoreflect.MessageDescriptor { return md.L1.Input } +func (md *Method) Output() protoreflect.MessageDescriptor { return md.L1.Output } +func (md *Method) IsStreamingClient() bool { return md.L1.IsStreamingClient } +func (md *Method) IsStreamingServer() bool { return md.L1.IsStreamingServer } +func (md *Method) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } +func (md *Method) ProtoType(protoreflect.MethodDescriptor) {} +func (md *Method) ProtoInternal(pragma.DoNotImplement) {} + +// Surrogate files are can be used to create standalone descriptors +// where the syntax is only information derived from the parent file. +var ( + SurrogateProto2 = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}} + SurrogateProto3 = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}} + SurrogateEdition2023 = &File{L1: FileL1{Syntax: protoreflect.Editions, Edition: Edition2023}, L2: &FileL2{}} +) + +type ( + Base struct { + L0 BaseL0 + } + BaseL0 struct { + FullName protoreflect.FullName // must be populated + ParentFile *File // must be populated + Parent protoreflect.Descriptor + Index int + } +) + +func (d *Base) Name() protoreflect.Name { return d.L0.FullName.Name() } +func (d *Base) FullName() protoreflect.FullName { return d.L0.FullName } +func (d *Base) ParentFile() protoreflect.FileDescriptor { + if d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 { + return nil // surrogate files are not real parents + } + return d.L0.ParentFile +} +func (d *Base) Parent() protoreflect.Descriptor { return d.L0.Parent } +func (d *Base) Index() int { return d.L0.Index } +func (d *Base) Syntax() protoreflect.Syntax { return d.L0.ParentFile.Syntax() } +func (d *Base) IsPlaceholder() bool { return false } +func (d *Base) ProtoInternal(pragma.DoNotImplement) {} + +type stringName struct { + hasJSON bool + once sync.Once + nameJSON string + nameText string +} + +// InitJSON initializes the name. It is exported for use by other internal packages. +func (s *stringName) InitJSON(name string) { + s.hasJSON = true + s.nameJSON = name +} + +// Returns true if this field is structured like the synthetic field of a proto2 +// group. This allows us to expand our treatment of delimited fields without +// breaking proto2 files that have been upgraded to editions. +func isGroupLike(fd protoreflect.FieldDescriptor) bool { + // Groups are always group types. + if fd.Kind() != protoreflect.GroupKind { + return false + } + + // Group fields are always the lowercase type name. + if strings.ToLower(string(fd.Message().Name())) != string(fd.Name()) { + return false + } + + // Groups could only be defined in the same file they're used. + if fd.Message().ParentFile() != fd.ParentFile() { + return false + } + + // Group messages are always defined in the same scope as the field. File + // level extensions will compare NULL == NULL here, which is why the file + // comparison above is necessary to ensure both come from the same file. + if fd.IsExtension() { + return fd.Parent() == fd.Message().Parent() + } + return fd.ContainingMessage() == fd.Message().Parent() +} + +func (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName { + s.once.Do(func() { + if fd.IsExtension() { + // For extensions, JSON and text are formatted the same way. + var name string + if messageset.IsMessageSetExtension(fd) { + name = string("[" + fd.FullName().Parent() + "]") + } else { + name = string("[" + fd.FullName() + "]") + } + s.nameJSON = name + s.nameText = name + } else { + // Format the JSON name. + if !s.hasJSON { + s.nameJSON = strs.JSONCamelCase(string(fd.Name())) + } + + // Format the text name. + s.nameText = string(fd.Name()) + if isGroupLike(fd) { + s.nameText = string(fd.Message().Name()) + } + } + }) + return s +} + +func (s *stringName) getJSON(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameJSON } +func (s *stringName) getText(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameText } + +func DefaultValue(v protoreflect.Value, ev protoreflect.EnumValueDescriptor) defaultValue { + dv := defaultValue{has: v.IsValid(), val: v, enum: ev} + if b, ok := v.Interface().([]byte); ok { + // Store a copy of the default bytes, so that we can detect + // accidental mutations of the original value. + dv.bytes = append([]byte(nil), b...) + } + return dv +} + +func unmarshalDefault(b []byte, k protoreflect.Kind, pf *File, ed protoreflect.EnumDescriptor) defaultValue { + var evs protoreflect.EnumValueDescriptors + if k == protoreflect.EnumKind { + // If the enum is declared within the same file, be careful not to + // blindly call the Values method, lest we bind ourselves in a deadlock. + if e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf { + evs = &e.L2.Values + } else { + evs = ed.Values() + } + + // If we are unable to resolve the enum dependency, use a placeholder + // enum value since we will not be able to parse the default value. + if ed.IsPlaceholder() && protoreflect.Name(b).IsValid() { + v := protoreflect.ValueOfEnum(0) + ev := PlaceholderEnumValue(ed.FullName().Parent().Append(protoreflect.Name(b))) + return DefaultValue(v, ev) + } + } + + v, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor) + if err != nil { + panic(err) + } + return DefaultValue(v, ev) +} + +type defaultValue struct { + has bool + val protoreflect.Value + enum protoreflect.EnumValueDescriptor + bytes []byte +} + +func (dv *defaultValue) get(fd protoreflect.FieldDescriptor) protoreflect.Value { + // Return the zero value as the default if unpopulated. + if !dv.has { + if fd.Cardinality() == protoreflect.Repeated { + return protoreflect.Value{} + } + switch fd.Kind() { + case protoreflect.BoolKind: + return protoreflect.ValueOfBool(false) + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + return protoreflect.ValueOfInt32(0) + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + return protoreflect.ValueOfInt64(0) + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + return protoreflect.ValueOfUint32(0) + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + return protoreflect.ValueOfUint64(0) + case protoreflect.FloatKind: + return protoreflect.ValueOfFloat32(0) + case protoreflect.DoubleKind: + return protoreflect.ValueOfFloat64(0) + case protoreflect.StringKind: + return protoreflect.ValueOfString("") + case protoreflect.BytesKind: + return protoreflect.ValueOfBytes(nil) + case protoreflect.EnumKind: + if evs := fd.Enum().Values(); evs.Len() > 0 { + return protoreflect.ValueOfEnum(evs.Get(0).Number()) + } + return protoreflect.ValueOfEnum(0) + } + } + + if len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) { + // TODO: Avoid panic if we're running with the race detector + // and instead spawn a goroutine that periodically resets + // this value back to the original to induce a race. + panic(fmt.Sprintf("detected mutation on the default bytes for %v", fd.FullName())) + } + return dv.val +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go new file mode 100644 index 0000000..8a57d60 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go @@ -0,0 +1,558 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "fmt" + "sync" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// fileRaw is a data struct used when initializing a file descriptor from +// a raw FileDescriptorProto. +type fileRaw struct { + builder Builder + allEnums []Enum + allMessages []Message + allExtensions []Extension + allServices []Service +} + +func newRawFile(db Builder) *File { + fd := &File{fileRaw: fileRaw{builder: db}} + fd.initDecls(db.NumEnums, db.NumMessages, db.NumExtensions, db.NumServices) + fd.unmarshalSeed(db.RawDescriptor) + + // Extended message targets are eagerly resolved since registration + // needs this information at program init time. + for i := range fd.allExtensions { + xd := &fd.allExtensions[i] + xd.L1.Extendee = fd.resolveMessageDependency(xd.L1.Extendee, listExtTargets, int32(i)) + } + + fd.checkDecls() + return fd +} + +// initDecls pre-allocates slices for the exact number of enums, messages +// (including map entries), extensions, and services declared in the proto file. +// This is done to avoid regrowing the slice, which would change the address +// for any previously seen declaration. +// +// The alloc methods "allocates" slices by pulling from the capacity. +func (fd *File) initDecls(numEnums, numMessages, numExtensions, numServices int32) { + fd.allEnums = make([]Enum, 0, numEnums) + fd.allMessages = make([]Message, 0, numMessages) + fd.allExtensions = make([]Extension, 0, numExtensions) + fd.allServices = make([]Service, 0, numServices) +} + +func (fd *File) allocEnums(n int) []Enum { + total := len(fd.allEnums) + es := fd.allEnums[total : total+n] + fd.allEnums = fd.allEnums[:total+n] + return es +} +func (fd *File) allocMessages(n int) []Message { + total := len(fd.allMessages) + ms := fd.allMessages[total : total+n] + fd.allMessages = fd.allMessages[:total+n] + return ms +} +func (fd *File) allocExtensions(n int) []Extension { + total := len(fd.allExtensions) + xs := fd.allExtensions[total : total+n] + fd.allExtensions = fd.allExtensions[:total+n] + return xs +} +func (fd *File) allocServices(n int) []Service { + total := len(fd.allServices) + xs := fd.allServices[total : total+n] + fd.allServices = fd.allServices[:total+n] + return xs +} + +// checkDecls performs a sanity check that the expected number of expected +// declarations matches the number that were found in the descriptor proto. +func (fd *File) checkDecls() { + switch { + case len(fd.allEnums) != cap(fd.allEnums): + case len(fd.allMessages) != cap(fd.allMessages): + case len(fd.allExtensions) != cap(fd.allExtensions): + case len(fd.allServices) != cap(fd.allServices): + default: + return + } + panic("mismatching cardinality") +} + +func (fd *File) unmarshalSeed(b []byte) { + sb := getBuilder() + defer putBuilder(sb) + + var prevField protoreflect.FieldNumber + var numEnums, numMessages, numExtensions, numServices int + var posEnums, posMessages, posExtensions, posServices int + var options []byte + b0 := b + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_Syntax_field_number: + switch string(v) { + case "proto2": + fd.L1.Syntax = protoreflect.Proto2 + fd.L1.Edition = EditionProto2 + case "proto3": + fd.L1.Syntax = protoreflect.Proto3 + fd.L1.Edition = EditionProto3 + case "editions": + fd.L1.Syntax = protoreflect.Editions + default: + panic("invalid syntax") + } + case genid.FileDescriptorProto_Name_field_number: + fd.L1.Path = sb.MakeString(v) + case genid.FileDescriptorProto_Package_field_number: + fd.L1.Package = protoreflect.FullName(sb.MakeString(v)) + case genid.FileDescriptorProto_Options_field_number: + options = v + case genid.FileDescriptorProto_EnumType_field_number: + if prevField != genid.FileDescriptorProto_EnumType_field_number { + if numEnums > 0 { + panic("non-contiguous repeated field") + } + posEnums = len(b0) - len(b) - n - m + } + numEnums++ + case genid.FileDescriptorProto_MessageType_field_number: + if prevField != genid.FileDescriptorProto_MessageType_field_number { + if numMessages > 0 { + panic("non-contiguous repeated field") + } + posMessages = len(b0) - len(b) - n - m + } + numMessages++ + case genid.FileDescriptorProto_Extension_field_number: + if prevField != genid.FileDescriptorProto_Extension_field_number { + if numExtensions > 0 { + panic("non-contiguous repeated field") + } + posExtensions = len(b0) - len(b) - n - m + } + numExtensions++ + case genid.FileDescriptorProto_Service_field_number: + if prevField != genid.FileDescriptorProto_Service_field_number { + if numServices > 0 { + panic("non-contiguous repeated field") + } + posServices = len(b0) - len(b) - n - m + } + numServices++ + } + prevField = num + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_Edition_field_number: + fd.L1.Edition = Edition(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + prevField = -1 // ignore known field numbers of unknown wire type + } + } + + // If syntax is missing, it is assumed to be proto2. + if fd.L1.Syntax == 0 { + fd.L1.Syntax = protoreflect.Proto2 + fd.L1.Edition = EditionProto2 + } + + fd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition) + + // Parse editions features from options if any + if options != nil { + fd.unmarshalSeedOptions(options) + } + + // Must allocate all declarations before parsing each descriptor type + // to ensure we handled all descriptors in "flattened ordering". + if numEnums > 0 { + fd.L1.Enums.List = fd.allocEnums(numEnums) + } + if numMessages > 0 { + fd.L1.Messages.List = fd.allocMessages(numMessages) + } + if numExtensions > 0 { + fd.L1.Extensions.List = fd.allocExtensions(numExtensions) + } + if numServices > 0 { + fd.L1.Services.List = fd.allocServices(numServices) + } + + if numEnums > 0 { + b := b0[posEnums:] + for i := range fd.L1.Enums.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Enums.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } + if numMessages > 0 { + b := b0[posMessages:] + for i := range fd.L1.Messages.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Messages.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } + if numExtensions > 0 { + b := b0[posExtensions:] + for i := range fd.L1.Extensions.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Extensions.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } + if numServices > 0 { + b := b0[posServices:] + for i := range fd.L1.Services.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + fd.L1.Services.List[i].unmarshalSeed(v, sb, fd, fd, i) + b = b[n+m:] + } + } +} + +func (fd *File) unmarshalSeedOptions(b []byte) { + for b := b; len(b) > 0; { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FileOptions_Features_field_number: + if fd.Syntax() != protoreflect.Editions { + panic(fmt.Sprintf("invalid descriptor: using edition features in a proto with syntax %s", fd.Syntax())) + } + fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + ed.L0.ParentFile = pf + ed.L0.Parent = pd + ed.L0.Index = i + ed.L1.EditionFeatures = featuresFromParentDesc(ed.Parent()) + + var numValues int + for b := b; len(b) > 0; { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_Name_field_number: + ed.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.EnumDescriptorProto_Value_field_number: + numValues++ + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + + // Only construct enum value descriptors for top-level enums since + // they are needed for registration. + if pd != pf { + return + } + ed.L1.eagerValues = true + ed.L2 = new(EnumL2) + ed.L2.Values.List = make([]EnumValue, numValues) + for i := 0; len(b) > 0; { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_Value_field_number: + ed.L2.Values.List[i].unmarshalFull(v, sb, pf, ed, i) + i++ + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + md.L0.ParentFile = pf + md.L0.Parent = pd + md.L0.Index = i + md.L1.EditionFeatures = featuresFromParentDesc(md.Parent()) + + var prevField protoreflect.FieldNumber + var numEnums, numMessages, numExtensions int + var posEnums, posMessages, posExtensions int + b0 := b + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.DescriptorProto_Name_field_number: + md.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.DescriptorProto_EnumType_field_number: + if prevField != genid.DescriptorProto_EnumType_field_number { + if numEnums > 0 { + panic("non-contiguous repeated field") + } + posEnums = len(b0) - len(b) - n - m + } + numEnums++ + case genid.DescriptorProto_NestedType_field_number: + if prevField != genid.DescriptorProto_NestedType_field_number { + if numMessages > 0 { + panic("non-contiguous repeated field") + } + posMessages = len(b0) - len(b) - n - m + } + numMessages++ + case genid.DescriptorProto_Extension_field_number: + if prevField != genid.DescriptorProto_Extension_field_number { + if numExtensions > 0 { + panic("non-contiguous repeated field") + } + posExtensions = len(b0) - len(b) - n - m + } + numExtensions++ + case genid.DescriptorProto_Options_field_number: + md.unmarshalSeedOptions(v) + } + prevField = num + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + prevField = -1 // ignore known field numbers of unknown wire type + } + } + + // Must allocate all declarations before parsing each descriptor type + // to ensure we handled all descriptors in "flattened ordering". + if numEnums > 0 { + md.L1.Enums.List = pf.allocEnums(numEnums) + } + if numMessages > 0 { + md.L1.Messages.List = pf.allocMessages(numMessages) + } + if numExtensions > 0 { + md.L1.Extensions.List = pf.allocExtensions(numExtensions) + } + + if numEnums > 0 { + b := b0[posEnums:] + for i := range md.L1.Enums.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + md.L1.Enums.List[i].unmarshalSeed(v, sb, pf, md, i) + b = b[n+m:] + } + } + if numMessages > 0 { + b := b0[posMessages:] + for i := range md.L1.Messages.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + md.L1.Messages.List[i].unmarshalSeed(v, sb, pf, md, i) + b = b[n+m:] + } + } + if numExtensions > 0 { + b := b0[posExtensions:] + for i := range md.L1.Extensions.List { + _, n := protowire.ConsumeVarint(b) + v, m := protowire.ConsumeBytes(b[n:]) + md.L1.Extensions.List[i].unmarshalSeed(v, sb, pf, md, i) + b = b[n+m:] + } + } +} + +func (md *Message) unmarshalSeedOptions(b []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.MessageOptions_MapEntry_field_number: + md.L1.IsMapEntry = protowire.DecodeBool(v) + case genid.MessageOptions_MessageSetWireFormat_field_number: + md.L1.IsMessageSet = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.MessageOptions_Features_field_number: + md.L1.EditionFeatures = unmarshalFeatureSet(v, md.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + xd.L0.ParentFile = pf + xd.L0.Parent = pd + xd.L0.Index = i + xd.L1.EditionFeatures = featuresFromParentDesc(pd) + + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Number_field_number: + xd.L1.Number = protoreflect.FieldNumber(v) + case genid.FieldDescriptorProto_Label_field_number: + xd.L1.Cardinality = protoreflect.Cardinality(v) + case genid.FieldDescriptorProto_Type_field_number: + xd.L1.Kind = protoreflect.Kind(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Name_field_number: + xd.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.FieldDescriptorProto_Extendee_field_number: + xd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v)) + case genid.FieldDescriptorProto_Options_field_number: + xd.unmarshalOptions(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + + if xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded { + xd.L1.Kind = protoreflect.GroupKind + } +} + +func (xd *Extension) unmarshalOptions(b []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldOptions_Packed_field_number: + xd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldOptions_Features_field_number: + xd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + sd.L0.ParentFile = pf + sd.L0.Parent = pd + sd.L0.Index = i + + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.ServiceDescriptorProto_Name_field_number: + sd.L0.FullName = appendFullName(sb, pd.FullName(), v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +var nameBuilderPool = sync.Pool{ + New: func() any { return new(strs.Builder) }, +} + +func getBuilder() *strs.Builder { + return nameBuilderPool.Get().(*strs.Builder) +} +func putBuilder(b *strs.Builder) { + nameBuilderPool.Put(b) +} + +// makeFullName converts b to a protoreflect.FullName, +// where b must start with a leading dot. +func makeFullName(sb *strs.Builder, b []byte) protoreflect.FullName { + if len(b) == 0 || b[0] != '.' { + panic("name reference must be fully qualified") + } + return protoreflect.FullName(sb.MakeString(b[1:])) +} + +func appendFullName(sb *strs.Builder, prefix protoreflect.FullName, suffix []byte) protoreflect.FullName { + return sb.AppendFullName(prefix, protoreflect.Name(strs.UnsafeString(suffix))) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go new file mode 100644 index 0000000..e56c91a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go @@ -0,0 +1,701 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "reflect" + "sync" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" +) + +func (fd *File) lazyRawInit() { + fd.unmarshalFull(fd.builder.RawDescriptor) + fd.resolveMessages() + fd.resolveExtensions() + fd.resolveServices() +} + +func (file *File) resolveMessages() { + var depIdx int32 + for i := range file.allMessages { + md := &file.allMessages[i] + + // Resolve message field dependencies. + for j := range md.L2.Fields.List { + fd := &md.L2.Fields.List[j] + + // Weak fields are resolved upon actual use. + if fd.L1.IsWeak { + continue + } + + // Resolve message field dependency. + switch fd.L1.Kind { + case protoreflect.EnumKind: + fd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx) + depIdx++ + case protoreflect.MessageKind, protoreflect.GroupKind: + fd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx) + depIdx++ + if fd.L1.Kind == protoreflect.GroupKind && (fd.IsMap() || fd.IsMapEntry()) { + // A map field might inherit delimited encoding from a file-wide default feature. + // But maps never actually use delimited encoding. (At least for now...) + fd.L1.Kind = protoreflect.MessageKind + } + } + + // Default is resolved here since it depends on Enum being resolved. + if v := fd.L1.Default.val; v.IsValid() { + fd.L1.Default = unmarshalDefault(v.Bytes(), fd.L1.Kind, file, fd.L1.Enum) + } + } + } +} + +func (file *File) resolveExtensions() { + var depIdx int32 + for i := range file.allExtensions { + xd := &file.allExtensions[i] + + // Resolve extension field dependency. + switch xd.L1.Kind { + case protoreflect.EnumKind: + xd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx) + depIdx++ + case protoreflect.MessageKind, protoreflect.GroupKind: + xd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx) + depIdx++ + } + + // Default is resolved here since it depends on Enum being resolved. + if v := xd.L2.Default.val; v.IsValid() { + xd.L2.Default = unmarshalDefault(v.Bytes(), xd.L1.Kind, file, xd.L2.Enum) + } + } +} + +func (file *File) resolveServices() { + var depIdx int32 + for i := range file.allServices { + sd := &file.allServices[i] + + // Resolve method dependencies. + for j := range sd.L2.Methods.List { + md := &sd.L2.Methods.List[j] + md.L1.Input = file.resolveMessageDependency(md.L1.Input, listMethInDeps, depIdx) + md.L1.Output = file.resolveMessageDependency(md.L1.Output, listMethOutDeps, depIdx) + depIdx++ + } + } +} + +func (file *File) resolveEnumDependency(ed protoreflect.EnumDescriptor, i, j int32) protoreflect.EnumDescriptor { + r := file.builder.FileRegistry + if r, ok := r.(resolverByIndex); ok { + if ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil { + return ed2 + } + } + for i := range file.allEnums { + if ed2 := &file.allEnums[i]; ed2.L0.FullName == ed.FullName() { + return ed2 + } + } + if d, _ := r.FindDescriptorByName(ed.FullName()); d != nil { + return d.(protoreflect.EnumDescriptor) + } + return ed +} + +func (file *File) resolveMessageDependency(md protoreflect.MessageDescriptor, i, j int32) protoreflect.MessageDescriptor { + r := file.builder.FileRegistry + if r, ok := r.(resolverByIndex); ok { + if md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil { + return md2 + } + } + for i := range file.allMessages { + if md2 := &file.allMessages[i]; md2.L0.FullName == md.FullName() { + return md2 + } + } + if d, _ := r.FindDescriptorByName(md.FullName()); d != nil { + return d.(protoreflect.MessageDescriptor) + } + return md +} + +func (fd *File) unmarshalFull(b []byte) { + sb := getBuilder() + defer putBuilder(sb) + + var enumIdx, messageIdx, extensionIdx, serviceIdx int + var rawOptions []byte + fd.L2 = new(FileL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_PublicDependency_field_number: + fd.L2.Imports[v].IsPublic = true + case genid.FileDescriptorProto_WeakDependency_field_number: + fd.L2.Imports[v].IsWeak = true + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FileDescriptorProto_Dependency_field_number: + path := sb.MakeString(v) + imp, _ := fd.builder.FileRegistry.FindFileByPath(path) + if imp == nil { + imp = PlaceholderFile(path) + } + fd.L2.Imports = append(fd.L2.Imports, protoreflect.FileImport{FileDescriptor: imp}) + case genid.FileDescriptorProto_EnumType_field_number: + fd.L1.Enums.List[enumIdx].unmarshalFull(v, sb) + enumIdx++ + case genid.FileDescriptorProto_MessageType_field_number: + fd.L1.Messages.List[messageIdx].unmarshalFull(v, sb) + messageIdx++ + case genid.FileDescriptorProto_Extension_field_number: + fd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb) + extensionIdx++ + case genid.FileDescriptorProto_Service_field_number: + fd.L1.Services.List[serviceIdx].unmarshalFull(v, sb) + serviceIdx++ + case genid.FileDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + fd.L2.Options = fd.builder.optionsUnmarshaler(&descopts.File, rawOptions) +} + +func (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) { + var rawValues [][]byte + var rawOptions []byte + if !ed.L1.eagerValues { + ed.L2 = new(EnumL2) + } + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_Value_field_number: + rawValues = append(rawValues, v) + case genid.EnumDescriptorProto_ReservedName_field_number: + ed.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) + case genid.EnumDescriptorProto_ReservedRange_field_number: + ed.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v)) + case genid.EnumDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if !ed.L1.eagerValues && len(rawValues) > 0 { + ed.L2.Values.List = make([]EnumValue, len(rawValues)) + for i, b := range rawValues { + ed.L2.Values.List[i].unmarshalFull(b, sb, ed.L0.ParentFile, ed, i) + } + } + ed.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions) +} + +func unmarshalEnumReservedRange(b []byte) (r [2]protoreflect.EnumNumber) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.EnumDescriptorProto_EnumReservedRange_Start_field_number: + r[0] = protoreflect.EnumNumber(v) + case genid.EnumDescriptorProto_EnumReservedRange_End_field_number: + r[1] = protoreflect.EnumNumber(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + return r +} + +func (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + vd.L0.ParentFile = pf + vd.L0.Parent = pd + vd.L0.Index = i + + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.EnumValueDescriptorProto_Number_field_number: + vd.L1.Number = protoreflect.EnumNumber(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.EnumValueDescriptorProto_Name_field_number: + // NOTE: Enum values are in the same scope as the enum parent. + vd.L0.FullName = appendFullName(sb, pd.Parent().FullName(), v) + case genid.EnumValueDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + vd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.EnumValue, rawOptions) +} + +func (md *Message) unmarshalFull(b []byte, sb *strs.Builder) { + var rawFields, rawOneofs [][]byte + var enumIdx, messageIdx, extensionIdx int + var rawOptions []byte + md.L2 = new(MessageL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.DescriptorProto_Field_field_number: + rawFields = append(rawFields, v) + case genid.DescriptorProto_OneofDecl_field_number: + rawOneofs = append(rawOneofs, v) + case genid.DescriptorProto_ReservedName_field_number: + md.L2.ReservedNames.List = append(md.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) + case genid.DescriptorProto_ReservedRange_field_number: + md.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v)) + case genid.DescriptorProto_ExtensionRange_field_number: + r, rawOptions := unmarshalMessageExtensionRange(v) + opts := md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.ExtensionRange, rawOptions) + md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, r) + md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, opts) + case genid.DescriptorProto_EnumType_field_number: + md.L1.Enums.List[enumIdx].unmarshalFull(v, sb) + enumIdx++ + case genid.DescriptorProto_NestedType_field_number: + md.L1.Messages.List[messageIdx].unmarshalFull(v, sb) + messageIdx++ + case genid.DescriptorProto_Extension_field_number: + md.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb) + extensionIdx++ + case genid.DescriptorProto_Options_field_number: + md.unmarshalOptions(v) + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if len(rawFields) > 0 || len(rawOneofs) > 0 { + md.L2.Fields.List = make([]Field, len(rawFields)) + md.L2.Oneofs.List = make([]Oneof, len(rawOneofs)) + for i, b := range rawFields { + fd := &md.L2.Fields.List[i] + fd.unmarshalFull(b, sb, md.L0.ParentFile, md, i) + if fd.L1.Cardinality == protoreflect.Required { + md.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number) + } + } + for i, b := range rawOneofs { + od := &md.L2.Oneofs.List[i] + od.unmarshalFull(b, sb, md.L0.ParentFile, md, i) + } + } + md.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions) +} + +func (md *Message) unmarshalOptions(b []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.MessageOptions_MapEntry_field_number: + md.L1.IsMapEntry = protowire.DecodeBool(v) + case genid.MessageOptions_MessageSetWireFormat_field_number: + md.L1.IsMessageSet = protowire.DecodeBool(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.DescriptorProto_ReservedRange_Start_field_number: + r[0] = protoreflect.FieldNumber(v) + case genid.DescriptorProto_ReservedRange_End_field_number: + r[1] = protoreflect.FieldNumber(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + return r +} + +func unmarshalMessageExtensionRange(b []byte) (r [2]protoreflect.FieldNumber, rawOptions []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.DescriptorProto_ExtensionRange_Start_field_number: + r[0] = protoreflect.FieldNumber(v) + case genid.DescriptorProto_ExtensionRange_End_field_number: + r[1] = protoreflect.FieldNumber(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.DescriptorProto_ExtensionRange_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + return r, rawOptions +} + +func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + fd.L0.ParentFile = pf + fd.L0.Parent = pd + fd.L0.Index = i + fd.L1.EditionFeatures = featuresFromParentDesc(fd.Parent()) + + var rawTypeName []byte + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Number_field_number: + fd.L1.Number = protoreflect.FieldNumber(v) + case genid.FieldDescriptorProto_Label_field_number: + fd.L1.Cardinality = protoreflect.Cardinality(v) + case genid.FieldDescriptorProto_Type_field_number: + fd.L1.Kind = protoreflect.Kind(v) + case genid.FieldDescriptorProto_OneofIndex_field_number: + // In Message.unmarshalFull, we allocate slices for both + // the field and oneof descriptors before unmarshaling either + // of them. This ensures pointers to slice elements are stable. + od := &pd.(*Message).L2.Oneofs.List[v] + od.L1.Fields.List = append(od.L1.Fields.List, fd) + if fd.L1.ContainingOneof != nil { + panic("oneof type already set") + } + fd.L1.ContainingOneof = od + case genid.FieldDescriptorProto_Proto3Optional_field_number: + fd.L1.IsProto3Optional = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Name_field_number: + fd.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.FieldDescriptorProto_JsonName_field_number: + fd.L1.StringName.InitJSON(sb.MakeString(v)) + case genid.FieldDescriptorProto_DefaultValue_field_number: + fd.L1.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages + case genid.FieldDescriptorProto_TypeName_field_number: + rawTypeName = v + case genid.FieldDescriptorProto_Options_field_number: + fd.unmarshalOptions(v) + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded { + fd.L1.Kind = protoreflect.GroupKind + } + if fd.L1.EditionFeatures.IsLegacyRequired { + fd.L1.Cardinality = protoreflect.Required + } + if rawTypeName != nil { + name := makeFullName(sb, rawTypeName) + switch fd.L1.Kind { + case protoreflect.EnumKind: + fd.L1.Enum = PlaceholderEnum(name) + case protoreflect.MessageKind, protoreflect.GroupKind: + fd.L1.Message = PlaceholderMessage(name) + } + } + fd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Field, rawOptions) +} + +func (fd *Field) unmarshalOptions(b []byte) { + const FieldOptions_EnforceUTF8 = 13 + + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldOptions_Packed_field_number: + fd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) + case genid.FieldOptions_Weak_field_number: + fd.L1.IsWeak = protowire.DecodeBool(v) + case FieldOptions_EnforceUTF8: + fd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldOptions_Features_field_number: + fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } +} + +func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + od.L0.ParentFile = pf + od.L0.Parent = pd + od.L0.Index = i + + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.OneofDescriptorProto_Name_field_number: + od.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.OneofDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + od.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Oneof, rawOptions) +} + +func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { + var rawTypeName []byte + var rawOptions []byte + xd.L2 = new(ExtensionL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_Proto3Optional_field_number: + xd.L2.IsProto3Optional = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldDescriptorProto_JsonName_field_number: + xd.L2.StringName.InitJSON(sb.MakeString(v)) + case genid.FieldDescriptorProto_DefaultValue_field_number: + xd.L2.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions + case genid.FieldDescriptorProto_TypeName_field_number: + rawTypeName = v + case genid.FieldDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if rawTypeName != nil { + name := makeFullName(sb, rawTypeName) + switch xd.L1.Kind { + case protoreflect.EnumKind: + xd.L2.Enum = PlaceholderEnum(name) + case protoreflect.MessageKind, protoreflect.GroupKind: + xd.L2.Message = PlaceholderMessage(name) + } + } + xd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions) +} + +func (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) { + var rawMethods [][]byte + var rawOptions []byte + sd.L2 = new(ServiceL2) + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.ServiceDescriptorProto_Method_field_number: + rawMethods = append(rawMethods, v) + case genid.ServiceDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + if len(rawMethods) > 0 { + sd.L2.Methods.List = make([]Method, len(rawMethods)) + for i, b := range rawMethods { + sd.L2.Methods.List[i].unmarshalFull(b, sb, sd.L0.ParentFile, sd, i) + } + } + sd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions) +} + +func (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { + md.L0.ParentFile = pf + md.L0.Parent = pd + md.L0.Index = i + + var rawOptions []byte + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.MethodDescriptorProto_ClientStreaming_field_number: + md.L1.IsStreamingClient = protowire.DecodeBool(v) + case genid.MethodDescriptorProto_ServerStreaming_field_number: + md.L1.IsStreamingServer = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.MethodDescriptorProto_Name_field_number: + md.L0.FullName = appendFullName(sb, pd.FullName(), v) + case genid.MethodDescriptorProto_InputType_field_number: + md.L1.Input = PlaceholderMessage(makeFullName(sb, v)) + case genid.MethodDescriptorProto_OutputType_field_number: + md.L1.Output = PlaceholderMessage(makeFullName(sb, v)) + case genid.MethodDescriptorProto_Options_field_number: + rawOptions = appendOptions(rawOptions, v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + md.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Method, rawOptions) +} + +// appendOptions appends src to dst, where the returned slice is never nil. +// This is necessary to distinguish between empty and unpopulated options. +func appendOptions(dst, src []byte) []byte { + if dst == nil { + dst = []byte{} + } + return append(dst, src...) +} + +// optionsUnmarshaler constructs a lazy unmarshal function for an options message. +// +// The type of message to unmarshal to is passed as a pointer since the +// vars in descopts may not yet be populated at the time this function is called. +func (db *Builder) optionsUnmarshaler(p *protoreflect.ProtoMessage, b []byte) func() protoreflect.ProtoMessage { + if b == nil { + return nil + } + var opts protoreflect.ProtoMessage + var once sync.Once + return func() protoreflect.ProtoMessage { + once.Do(func() { + if *p == nil { + panic("Descriptor.Options called without importing the descriptor package") + } + opts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(protoreflect.ProtoMessage) + if err := (proto.UnmarshalOptions{ + AllowPartial: true, + Resolver: db.TypeResolver, + }).Unmarshal(b, opts); err != nil { + panic(err) + } + }) + return opts + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go new file mode 100644 index 0000000..e3b6587 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go @@ -0,0 +1,457 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "fmt" + "math" + "sort" + "sync" + + "google.golang.org/protobuf/internal/genid" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/descfmt" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type FileImports []protoreflect.FileImport + +func (p *FileImports) Len() int { return len(*p) } +func (p *FileImports) Get(i int) protoreflect.FileImport { return (*p)[i] } +func (p *FileImports) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *FileImports) ProtoInternal(pragma.DoNotImplement) {} + +type Names struct { + List []protoreflect.Name + once sync.Once + has map[protoreflect.Name]int // protected by once +} + +func (p *Names) Len() int { return len(p.List) } +func (p *Names) Get(i int) protoreflect.Name { return p.List[i] } +func (p *Names) Has(s protoreflect.Name) bool { return p.lazyInit().has[s] > 0 } +func (p *Names) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *Names) ProtoInternal(pragma.DoNotImplement) {} +func (p *Names) lazyInit() *Names { + p.once.Do(func() { + if len(p.List) > 0 { + p.has = make(map[protoreflect.Name]int, len(p.List)) + for _, s := range p.List { + p.has[s] = p.has[s] + 1 + } + } + }) + return p +} + +// CheckValid reports any errors with the set of names with an error message +// that completes the sentence: "ranges is invalid because it has ..." +func (p *Names) CheckValid() error { + for s, n := range p.lazyInit().has { + switch { + case n > 1: + return errors.New("duplicate name: %q", s) + case false && !s.IsValid(): + // NOTE: The C++ implementation does not validate the identifier. + // See https://github.com/protocolbuffers/protobuf/issues/6335. + return errors.New("invalid name: %q", s) + } + } + return nil +} + +type EnumRanges struct { + List [][2]protoreflect.EnumNumber // start inclusive; end inclusive + once sync.Once + sorted [][2]protoreflect.EnumNumber // protected by once +} + +func (p *EnumRanges) Len() int { return len(p.List) } +func (p *EnumRanges) Get(i int) [2]protoreflect.EnumNumber { return p.List[i] } +func (p *EnumRanges) Has(n protoreflect.EnumNumber) bool { + for ls := p.lazyInit().sorted; len(ls) > 0; { + i := len(ls) / 2 + switch r := enumRange(ls[i]); { + case n < r.Start(): + ls = ls[:i] // search lower + case n > r.End(): + ls = ls[i+1:] // search upper + default: + return true + } + } + return false +} +func (p *EnumRanges) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *EnumRanges) ProtoInternal(pragma.DoNotImplement) {} +func (p *EnumRanges) lazyInit() *EnumRanges { + p.once.Do(func() { + p.sorted = append(p.sorted, p.List...) + sort.Slice(p.sorted, func(i, j int) bool { + return p.sorted[i][0] < p.sorted[j][0] + }) + }) + return p +} + +// CheckValid reports any errors with the set of names with an error message +// that completes the sentence: "ranges is invalid because it has ..." +func (p *EnumRanges) CheckValid() error { + var rp enumRange + for i, r := range p.lazyInit().sorted { + r := enumRange(r) + switch { + case !(r.Start() <= r.End()): + return errors.New("invalid range: %v", r) + case !(rp.End() < r.Start()) && i > 0: + return errors.New("overlapping ranges: %v with %v", rp, r) + } + rp = r + } + return nil +} + +type enumRange [2]protoreflect.EnumNumber + +func (r enumRange) Start() protoreflect.EnumNumber { return r[0] } // inclusive +func (r enumRange) End() protoreflect.EnumNumber { return r[1] } // inclusive +func (r enumRange) String() string { + if r.Start() == r.End() { + return fmt.Sprintf("%d", r.Start()) + } + return fmt.Sprintf("%d to %d", r.Start(), r.End()) +} + +type FieldRanges struct { + List [][2]protoreflect.FieldNumber // start inclusive; end exclusive + once sync.Once + sorted [][2]protoreflect.FieldNumber // protected by once +} + +func (p *FieldRanges) Len() int { return len(p.List) } +func (p *FieldRanges) Get(i int) [2]protoreflect.FieldNumber { return p.List[i] } +func (p *FieldRanges) Has(n protoreflect.FieldNumber) bool { + for ls := p.lazyInit().sorted; len(ls) > 0; { + i := len(ls) / 2 + switch r := fieldRange(ls[i]); { + case n < r.Start(): + ls = ls[:i] // search lower + case n > r.End(): + ls = ls[i+1:] // search upper + default: + return true + } + } + return false +} +func (p *FieldRanges) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *FieldRanges) ProtoInternal(pragma.DoNotImplement) {} +func (p *FieldRanges) lazyInit() *FieldRanges { + p.once.Do(func() { + p.sorted = append(p.sorted, p.List...) + sort.Slice(p.sorted, func(i, j int) bool { + return p.sorted[i][0] < p.sorted[j][0] + }) + }) + return p +} + +// CheckValid reports any errors with the set of ranges with an error message +// that completes the sentence: "ranges is invalid because it has ..." +func (p *FieldRanges) CheckValid(isMessageSet bool) error { + var rp fieldRange + for i, r := range p.lazyInit().sorted { + r := fieldRange(r) + switch { + case !isValidFieldNumber(r.Start(), isMessageSet): + return errors.New("invalid field number: %d", r.Start()) + case !isValidFieldNumber(r.End(), isMessageSet): + return errors.New("invalid field number: %d", r.End()) + case !(r.Start() <= r.End()): + return errors.New("invalid range: %v", r) + case !(rp.End() < r.Start()) && i > 0: + return errors.New("overlapping ranges: %v with %v", rp, r) + } + rp = r + } + return nil +} + +// isValidFieldNumber reports whether the field number is valid. +// Unlike the FieldNumber.IsValid method, it allows ranges that cover the +// reserved number range. +func isValidFieldNumber(n protoreflect.FieldNumber, isMessageSet bool) bool { + return protowire.MinValidNumber <= n && (n <= protowire.MaxValidNumber || isMessageSet) +} + +// CheckOverlap reports an error if p and q overlap. +func (p *FieldRanges) CheckOverlap(q *FieldRanges) error { + rps := p.lazyInit().sorted + rqs := q.lazyInit().sorted + for pi, qi := 0, 0; pi < len(rps) && qi < len(rqs); { + rp := fieldRange(rps[pi]) + rq := fieldRange(rqs[qi]) + if !(rp.End() < rq.Start() || rq.End() < rp.Start()) { + return errors.New("overlapping ranges: %v with %v", rp, rq) + } + if rp.Start() < rq.Start() { + pi++ + } else { + qi++ + } + } + return nil +} + +type fieldRange [2]protoreflect.FieldNumber + +func (r fieldRange) Start() protoreflect.FieldNumber { return r[0] } // inclusive +func (r fieldRange) End() protoreflect.FieldNumber { return r[1] - 1 } // inclusive +func (r fieldRange) String() string { + if r.Start() == r.End() { + return fmt.Sprintf("%d", r.Start()) + } + return fmt.Sprintf("%d to %d", r.Start(), r.End()) +} + +type FieldNumbers struct { + List []protoreflect.FieldNumber + once sync.Once + has map[protoreflect.FieldNumber]struct{} // protected by once +} + +func (p *FieldNumbers) Len() int { return len(p.List) } +func (p *FieldNumbers) Get(i int) protoreflect.FieldNumber { return p.List[i] } +func (p *FieldNumbers) Has(n protoreflect.FieldNumber) bool { + p.once.Do(func() { + if len(p.List) > 0 { + p.has = make(map[protoreflect.FieldNumber]struct{}, len(p.List)) + for _, n := range p.List { + p.has[n] = struct{}{} + } + } + }) + _, ok := p.has[n] + return ok +} +func (p *FieldNumbers) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {} + +type OneofFields struct { + List []protoreflect.FieldDescriptor + once sync.Once + byName map[protoreflect.Name]protoreflect.FieldDescriptor // protected by once + byJSON map[string]protoreflect.FieldDescriptor // protected by once + byText map[string]protoreflect.FieldDescriptor // protected by once + byNum map[protoreflect.FieldNumber]protoreflect.FieldDescriptor // protected by once +} + +func (p *OneofFields) Len() int { return len(p.List) } +func (p *OneofFields) Get(i int) protoreflect.FieldDescriptor { return p.List[i] } +func (p *OneofFields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor { + return p.lazyInit().byName[s] +} +func (p *OneofFields) ByJSONName(s string) protoreflect.FieldDescriptor { + return p.lazyInit().byJSON[s] +} +func (p *OneofFields) ByTextName(s string) protoreflect.FieldDescriptor { + return p.lazyInit().byText[s] +} +func (p *OneofFields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor { + return p.lazyInit().byNum[n] +} +func (p *OneofFields) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {} + +func (p *OneofFields) lazyInit() *OneofFields { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]protoreflect.FieldDescriptor, len(p.List)) + p.byJSON = make(map[string]protoreflect.FieldDescriptor, len(p.List)) + p.byText = make(map[string]protoreflect.FieldDescriptor, len(p.List)) + p.byNum = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, len(p.List)) + for _, f := range p.List { + // Field names and numbers are guaranteed to be unique. + p.byName[f.Name()] = f + p.byJSON[f.JSONName()] = f + p.byText[f.TextName()] = f + p.byNum[f.Number()] = f + } + } + }) + return p +} + +type SourceLocations struct { + // List is a list of SourceLocations. + // The SourceLocation.Next field does not need to be populated + // as it will be lazily populated upon first need. + List []protoreflect.SourceLocation + + // File is the parent file descriptor that these locations are relative to. + // If non-nil, ByDescriptor verifies that the provided descriptor + // is a child of this file descriptor. + File protoreflect.FileDescriptor + + once sync.Once + byPath map[pathKey]int +} + +func (p *SourceLocations) Len() int { return len(p.List) } +func (p *SourceLocations) Get(i int) protoreflect.SourceLocation { return p.lazyInit().List[i] } +func (p *SourceLocations) byKey(k pathKey) protoreflect.SourceLocation { + if i, ok := p.lazyInit().byPath[k]; ok { + return p.List[i] + } + return protoreflect.SourceLocation{} +} +func (p *SourceLocations) ByPath(path protoreflect.SourcePath) protoreflect.SourceLocation { + return p.byKey(newPathKey(path)) +} +func (p *SourceLocations) ByDescriptor(desc protoreflect.Descriptor) protoreflect.SourceLocation { + if p.File != nil && desc != nil && p.File != desc.ParentFile() { + return protoreflect.SourceLocation{} // mismatching parent files + } + var pathArr [16]int32 + path := pathArr[:0] + for { + switch desc.(type) { + case protoreflect.FileDescriptor: + // Reverse the path since it was constructed in reverse. + for i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 { + path[i], path[j] = path[j], path[i] + } + return p.byKey(newPathKey(path)) + case protoreflect.MessageDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_MessageType_field_number)) + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_NestedType_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.FieldDescriptor: + isExtension := desc.(protoreflect.FieldDescriptor).IsExtension() + path = append(path, int32(desc.Index())) + desc = desc.Parent() + if isExtension { + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_Extension_field_number)) + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_Extension_field_number)) + default: + return protoreflect.SourceLocation{} + } + } else { + switch desc.(type) { + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_Field_field_number)) + default: + return protoreflect.SourceLocation{} + } + } + case protoreflect.OneofDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_OneofDecl_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.EnumDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_EnumType_field_number)) + case protoreflect.MessageDescriptor: + path = append(path, int32(genid.DescriptorProto_EnumType_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.EnumValueDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.EnumDescriptor: + path = append(path, int32(genid.EnumDescriptorProto_Value_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.ServiceDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.FileDescriptor: + path = append(path, int32(genid.FileDescriptorProto_Service_field_number)) + default: + return protoreflect.SourceLocation{} + } + case protoreflect.MethodDescriptor: + path = append(path, int32(desc.Index())) + desc = desc.Parent() + switch desc.(type) { + case protoreflect.ServiceDescriptor: + path = append(path, int32(genid.ServiceDescriptorProto_Method_field_number)) + default: + return protoreflect.SourceLocation{} + } + default: + return protoreflect.SourceLocation{} + } + } +} +func (p *SourceLocations) lazyInit() *SourceLocations { + p.once.Do(func() { + if len(p.List) > 0 { + // Collect all the indexes for a given path. + pathIdxs := make(map[pathKey][]int, len(p.List)) + for i, l := range p.List { + k := newPathKey(l.Path) + pathIdxs[k] = append(pathIdxs[k], i) + } + + // Update the next index for all locations. + p.byPath = make(map[pathKey]int, len(p.List)) + for k, idxs := range pathIdxs { + for i := 0; i < len(idxs)-1; i++ { + p.List[idxs[i]].Next = idxs[i+1] + } + p.List[idxs[len(idxs)-1]].Next = 0 + p.byPath[k] = idxs[0] // record the first location for this path + } + } + }) + return p +} +func (p *SourceLocations) ProtoInternal(pragma.DoNotImplement) {} + +// pathKey is a comparable representation of protoreflect.SourcePath. +type pathKey struct { + arr [16]uint8 // first n-1 path segments; last element is the length + str string // used if the path does not fit in arr +} + +func newPathKey(p protoreflect.SourcePath) (k pathKey) { + if len(p) < len(k.arr) { + for i, ps := range p { + if ps < 0 || math.MaxUint8 <= ps { + return pathKey{str: p.String()} + } + k.arr[i] = uint8(ps) + } + k.arr[len(k.arr)-1] = uint8(len(p)) + return k + } + return pathKey{str: p.String()} +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go new file mode 100644 index 0000000..f4107c0 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go @@ -0,0 +1,367 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package filedesc + +import ( + "fmt" + "strings" + "sync" + + "google.golang.org/protobuf/internal/descfmt" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type Enums struct { + List []Enum + once sync.Once + byName map[protoreflect.Name]*Enum // protected by once +} + +func (p *Enums) Len() int { + return len(p.List) +} +func (p *Enums) Get(i int) protoreflect.EnumDescriptor { + return &p.List[i] +} +func (p *Enums) ByName(s protoreflect.Name) protoreflect.EnumDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Enums) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Enums) ProtoInternal(pragma.DoNotImplement) {} +func (p *Enums) lazyInit() *Enums { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Enum, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type EnumValues struct { + List []EnumValue + once sync.Once + byName map[protoreflect.Name]*EnumValue // protected by once + byNum map[protoreflect.EnumNumber]*EnumValue // protected by once +} + +func (p *EnumValues) Len() int { + return len(p.List) +} +func (p *EnumValues) Get(i int) protoreflect.EnumValueDescriptor { + return &p.List[i] +} +func (p *EnumValues) ByName(s protoreflect.Name) protoreflect.EnumValueDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *EnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor { + if d := p.lazyInit().byNum[n]; d != nil { + return d + } + return nil +} +func (p *EnumValues) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *EnumValues) ProtoInternal(pragma.DoNotImplement) {} +func (p *EnumValues) lazyInit() *EnumValues { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*EnumValue, len(p.List)) + p.byNum = make(map[protoreflect.EnumNumber]*EnumValue, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + if _, ok := p.byNum[d.Number()]; !ok { + p.byNum[d.Number()] = d + } + } + } + }) + return p +} + +type Messages struct { + List []Message + once sync.Once + byName map[protoreflect.Name]*Message // protected by once +} + +func (p *Messages) Len() int { + return len(p.List) +} +func (p *Messages) Get(i int) protoreflect.MessageDescriptor { + return &p.List[i] +} +func (p *Messages) ByName(s protoreflect.Name) protoreflect.MessageDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Messages) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Messages) ProtoInternal(pragma.DoNotImplement) {} +func (p *Messages) lazyInit() *Messages { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Message, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Fields struct { + List []Field + once sync.Once + byName map[protoreflect.Name]*Field // protected by once + byJSON map[string]*Field // protected by once + byText map[string]*Field // protected by once + byNum map[protoreflect.FieldNumber]*Field // protected by once +} + +func (p *Fields) Len() int { + return len(p.List) +} +func (p *Fields) Get(i int) protoreflect.FieldDescriptor { + return &p.List[i] +} +func (p *Fields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Fields) ByJSONName(s string) protoreflect.FieldDescriptor { + if d := p.lazyInit().byJSON[s]; d != nil { + return d + } + return nil +} +func (p *Fields) ByTextName(s string) protoreflect.FieldDescriptor { + if d := p.lazyInit().byText[s]; d != nil { + return d + } + return nil +} +func (p *Fields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor { + if d := p.lazyInit().byNum[n]; d != nil { + return d + } + return nil +} +func (p *Fields) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Fields) ProtoInternal(pragma.DoNotImplement) {} +func (p *Fields) lazyInit() *Fields { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Field, len(p.List)) + p.byJSON = make(map[string]*Field, len(p.List)) + p.byText = make(map[string]*Field, len(p.List)) + p.byNum = make(map[protoreflect.FieldNumber]*Field, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + if _, ok := p.byJSON[d.JSONName()]; !ok { + p.byJSON[d.JSONName()] = d + } + if _, ok := p.byText[d.TextName()]; !ok { + p.byText[d.TextName()] = d + } + if isGroupLike(d) { + lowerJSONName := strings.ToLower(d.JSONName()) + if _, ok := p.byJSON[lowerJSONName]; !ok { + p.byJSON[lowerJSONName] = d + } + lowerTextName := strings.ToLower(d.TextName()) + if _, ok := p.byText[lowerTextName]; !ok { + p.byText[lowerTextName] = d + } + } + if _, ok := p.byNum[d.Number()]; !ok { + p.byNum[d.Number()] = d + } + } + } + }) + return p +} + +type Oneofs struct { + List []Oneof + once sync.Once + byName map[protoreflect.Name]*Oneof // protected by once +} + +func (p *Oneofs) Len() int { + return len(p.List) +} +func (p *Oneofs) Get(i int) protoreflect.OneofDescriptor { + return &p.List[i] +} +func (p *Oneofs) ByName(s protoreflect.Name) protoreflect.OneofDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Oneofs) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Oneofs) ProtoInternal(pragma.DoNotImplement) {} +func (p *Oneofs) lazyInit() *Oneofs { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Oneof, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Extensions struct { + List []Extension + once sync.Once + byName map[protoreflect.Name]*Extension // protected by once +} + +func (p *Extensions) Len() int { + return len(p.List) +} +func (p *Extensions) Get(i int) protoreflect.ExtensionDescriptor { + return &p.List[i] +} +func (p *Extensions) ByName(s protoreflect.Name) protoreflect.ExtensionDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Extensions) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Extensions) ProtoInternal(pragma.DoNotImplement) {} +func (p *Extensions) lazyInit() *Extensions { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Extension, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Services struct { + List []Service + once sync.Once + byName map[protoreflect.Name]*Service // protected by once +} + +func (p *Services) Len() int { + return len(p.List) +} +func (p *Services) Get(i int) protoreflect.ServiceDescriptor { + return &p.List[i] +} +func (p *Services) ByName(s protoreflect.Name) protoreflect.ServiceDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Services) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Services) ProtoInternal(pragma.DoNotImplement) {} +func (p *Services) lazyInit() *Services { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Service, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} + +type Methods struct { + List []Method + once sync.Once + byName map[protoreflect.Name]*Method // protected by once +} + +func (p *Methods) Len() int { + return len(p.List) +} +func (p *Methods) Get(i int) protoreflect.MethodDescriptor { + return &p.List[i] +} +func (p *Methods) ByName(s protoreflect.Name) protoreflect.MethodDescriptor { + if d := p.lazyInit().byName[s]; d != nil { + return d + } + return nil +} +func (p *Methods) Format(s fmt.State, r rune) { + descfmt.FormatList(s, r, p) +} +func (p *Methods) ProtoInternal(pragma.DoNotImplement) {} +func (p *Methods) lazyInit() *Methods { + p.once.Do(func() { + if len(p.List) > 0 { + p.byName = make(map[protoreflect.Name]*Method, len(p.List)) + for i := range p.List { + d := &p.List[i] + if _, ok := p.byName[d.Name()]; !ok { + p.byName[d.Name()] = d + } + } + } + }) + return p +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go new file mode 100644 index 0000000..11f5f35 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/editions.go @@ -0,0 +1,156 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "fmt" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/editiondefaults" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var defaultsCache = make(map[Edition]EditionFeatures) +var defaultsKeys = []Edition{} + +func init() { + unmarshalEditionDefaults(editiondefaults.Defaults) + SurrogateProto2.L1.EditionFeatures = getFeaturesFor(EditionProto2) + SurrogateProto3.L1.EditionFeatures = getFeaturesFor(EditionProto3) + SurrogateEdition2023.L1.EditionFeatures = getFeaturesFor(Edition2023) +} + +func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures { + for len(b) > 0 { + num, _, n := protowire.ConsumeTag(b) + b = b[n:] + switch num { + case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v) + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num)) + } + } + return parent +} + +func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FeatureSet_FieldPresence_field_number: + parent.IsFieldPresence = v == genid.FeatureSet_EXPLICIT_enum_value || v == genid.FeatureSet_LEGACY_REQUIRED_enum_value + parent.IsLegacyRequired = v == genid.FeatureSet_LEGACY_REQUIRED_enum_value + case genid.FeatureSet_EnumType_field_number: + parent.IsOpenEnum = v == genid.FeatureSet_OPEN_enum_value + case genid.FeatureSet_RepeatedFieldEncoding_field_number: + parent.IsPacked = v == genid.FeatureSet_PACKED_enum_value + case genid.FeatureSet_Utf8Validation_field_number: + parent.IsUTF8Validated = v == genid.FeatureSet_VERIFY_enum_value + case genid.FeatureSet_MessageEncoding_field_number: + parent.IsDelimitedEncoded = v == genid.FeatureSet_DELIMITED_enum_value + case genid.FeatureSet_JsonFormat_field_number: + parent.IsJSONCompliant = v == genid.FeatureSet_ALLOW_enum_value + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling FeatureSet", num)) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: + parent = unmarshalGoFeature(v, parent) + } + } + } + + return parent +} + +func featuresFromParentDesc(parentDesc protoreflect.Descriptor) EditionFeatures { + var parentFS EditionFeatures + switch p := parentDesc.(type) { + case *File: + parentFS = p.L1.EditionFeatures + case *Message: + parentFS = p.L1.EditionFeatures + default: + panic(fmt.Sprintf("unknown parent type %T", parentDesc)) + } + return parentFS +} + +func unmarshalEditionDefault(b []byte) { + var ed Edition + var fs EditionFeatures + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number: + ed = Edition(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number: + fs = unmarshalFeatureSet(v, fs) + case genid.FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number: + fs = unmarshalFeatureSet(v, fs) + } + } + } + defaultsCache[ed] = fs + defaultsKeys = append(defaultsKeys, ed) +} + +func unmarshalEditionDefaults(b []byte) { + for len(b) > 0 { + num, _, n := protowire.ConsumeTag(b) + b = b[n:] + switch num { + case genid.FeatureSetDefaults_Defaults_field_number: + def, m := protowire.ConsumeBytes(b) + b = b[m:] + unmarshalEditionDefault(def) + case genid.FeatureSetDefaults_MinimumEdition_field_number, + genid.FeatureSetDefaults_MaximumEdition_field_number: + // We don't care about the minimum and maximum editions. If the + // edition we are looking for later on is not in the cache we know + // it is outside of the range between minimum and maximum edition. + _, m := protowire.ConsumeVarint(b) + b = b[m:] + default: + panic(fmt.Sprintf("unkown field number %d while unmarshalling EditionDefault", num)) + } + } +} + +func getFeaturesFor(ed Edition) EditionFeatures { + match := EditionUnknown + for _, key := range defaultsKeys { + if key > ed { + break + } + match = key + } + if match == EditionUnknown { + panic(fmt.Sprintf("unsupported edition: %v", ed)) + } + return defaultsCache[match] +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go new file mode 100644 index 0000000..bfb3b84 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go @@ -0,0 +1,110 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package filedesc + +import ( + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var ( + emptyNames = new(Names) + emptyEnumRanges = new(EnumRanges) + emptyFieldRanges = new(FieldRanges) + emptyFieldNumbers = new(FieldNumbers) + emptySourceLocations = new(SourceLocations) + + emptyFiles = new(FileImports) + emptyMessages = new(Messages) + emptyFields = new(Fields) + emptyOneofs = new(Oneofs) + emptyEnums = new(Enums) + emptyEnumValues = new(EnumValues) + emptyExtensions = new(Extensions) + emptyServices = new(Services) +) + +// PlaceholderFile is a placeholder, representing only the file path. +type PlaceholderFile string + +func (f PlaceholderFile) ParentFile() protoreflect.FileDescriptor { return f } +func (f PlaceholderFile) Parent() protoreflect.Descriptor { return nil } +func (f PlaceholderFile) Index() int { return 0 } +func (f PlaceholderFile) Syntax() protoreflect.Syntax { return 0 } +func (f PlaceholderFile) Name() protoreflect.Name { return "" } +func (f PlaceholderFile) FullName() protoreflect.FullName { return "" } +func (f PlaceholderFile) IsPlaceholder() bool { return true } +func (f PlaceholderFile) Options() protoreflect.ProtoMessage { return descopts.File } +func (f PlaceholderFile) Path() string { return string(f) } +func (f PlaceholderFile) Package() protoreflect.FullName { return "" } +func (f PlaceholderFile) Imports() protoreflect.FileImports { return emptyFiles } +func (f PlaceholderFile) Messages() protoreflect.MessageDescriptors { return emptyMessages } +func (f PlaceholderFile) Enums() protoreflect.EnumDescriptors { return emptyEnums } +func (f PlaceholderFile) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } +func (f PlaceholderFile) Services() protoreflect.ServiceDescriptors { return emptyServices } +func (f PlaceholderFile) SourceLocations() protoreflect.SourceLocations { return emptySourceLocations } +func (f PlaceholderFile) ProtoType(protoreflect.FileDescriptor) { return } +func (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement) { return } + +// PlaceholderEnum is a placeholder, representing only the full name. +type PlaceholderEnum protoreflect.FullName + +func (e PlaceholderEnum) ParentFile() protoreflect.FileDescriptor { return nil } +func (e PlaceholderEnum) Parent() protoreflect.Descriptor { return nil } +func (e PlaceholderEnum) Index() int { return 0 } +func (e PlaceholderEnum) Syntax() protoreflect.Syntax { return 0 } +func (e PlaceholderEnum) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } +func (e PlaceholderEnum) FullName() protoreflect.FullName { return protoreflect.FullName(e) } +func (e PlaceholderEnum) IsPlaceholder() bool { return true } +func (e PlaceholderEnum) Options() protoreflect.ProtoMessage { return descopts.Enum } +func (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues } +func (e PlaceholderEnum) ReservedNames() protoreflect.Names { return emptyNames } +func (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges { return emptyEnumRanges } +func (e PlaceholderEnum) IsClosed() bool { return false } +func (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor) { return } +func (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement) { return } + +// PlaceholderEnumValue is a placeholder, representing only the full name. +type PlaceholderEnumValue protoreflect.FullName + +func (e PlaceholderEnumValue) ParentFile() protoreflect.FileDescriptor { return nil } +func (e PlaceholderEnumValue) Parent() protoreflect.Descriptor { return nil } +func (e PlaceholderEnumValue) Index() int { return 0 } +func (e PlaceholderEnumValue) Syntax() protoreflect.Syntax { return 0 } +func (e PlaceholderEnumValue) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } +func (e PlaceholderEnumValue) FullName() protoreflect.FullName { return protoreflect.FullName(e) } +func (e PlaceholderEnumValue) IsPlaceholder() bool { return true } +func (e PlaceholderEnumValue) Options() protoreflect.ProtoMessage { return descopts.EnumValue } +func (e PlaceholderEnumValue) Number() protoreflect.EnumNumber { return 0 } +func (e PlaceholderEnumValue) ProtoType(protoreflect.EnumValueDescriptor) { return } +func (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement) { return } + +// PlaceholderMessage is a placeholder, representing only the full name. +type PlaceholderMessage protoreflect.FullName + +func (m PlaceholderMessage) ParentFile() protoreflect.FileDescriptor { return nil } +func (m PlaceholderMessage) Parent() protoreflect.Descriptor { return nil } +func (m PlaceholderMessage) Index() int { return 0 } +func (m PlaceholderMessage) Syntax() protoreflect.Syntax { return 0 } +func (m PlaceholderMessage) Name() protoreflect.Name { return protoreflect.FullName(m).Name() } +func (m PlaceholderMessage) FullName() protoreflect.FullName { return protoreflect.FullName(m) } +func (m PlaceholderMessage) IsPlaceholder() bool { return true } +func (m PlaceholderMessage) Options() protoreflect.ProtoMessage { return descopts.Message } +func (m PlaceholderMessage) IsMapEntry() bool { return false } +func (m PlaceholderMessage) Fields() protoreflect.FieldDescriptors { return emptyFields } +func (m PlaceholderMessage) Oneofs() protoreflect.OneofDescriptors { return emptyOneofs } +func (m PlaceholderMessage) ReservedNames() protoreflect.Names { return emptyNames } +func (m PlaceholderMessage) ReservedRanges() protoreflect.FieldRanges { return emptyFieldRanges } +func (m PlaceholderMessage) RequiredNumbers() protoreflect.FieldNumbers { return emptyFieldNumbers } +func (m PlaceholderMessage) ExtensionRanges() protoreflect.FieldRanges { return emptyFieldRanges } +func (m PlaceholderMessage) ExtensionRangeOptions(int) protoreflect.ProtoMessage { + panic("index out of range") +} +func (m PlaceholderMessage) Messages() protoreflect.MessageDescriptors { return emptyMessages } +func (m PlaceholderMessage) Enums() protoreflect.EnumDescriptors { return emptyEnums } +func (m PlaceholderMessage) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } +func (m PlaceholderMessage) ProtoType(protoreflect.MessageDescriptor) { return } +func (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go b/examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go new file mode 100644 index 0000000..ba83fea --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/filetype/build.go @@ -0,0 +1,296 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package filetype provides functionality for wrapping descriptors +// with Go type information. +package filetype + +import ( + "reflect" + + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/filedesc" + pimpl "google.golang.org/protobuf/internal/impl" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Builder constructs type descriptors from a raw file descriptor +// and associated Go types for each enum and message declaration. +// +// # Flattened Ordering +// +// The protobuf type system represents declarations as a tree. Certain nodes in +// the tree require us to either associate it with a concrete Go type or to +// resolve a dependency, which is information that must be provided separately +// since it cannot be derived from the file descriptor alone. +// +// However, representing a tree as Go literals is difficult to simply do in a +// space and time efficient way. Thus, we store them as a flattened list of +// objects where the serialization order from the tree-based form is important. +// +// The "flattened ordering" is defined as a tree traversal of all enum, message, +// extension, and service declarations using the following algorithm: +// +// def VisitFileDecls(fd): +// for e in fd.Enums: yield e +// for m in fd.Messages: yield m +// for x in fd.Extensions: yield x +// for s in fd.Services: yield s +// for m in fd.Messages: yield from VisitMessageDecls(m) +// +// def VisitMessageDecls(md): +// for e in md.Enums: yield e +// for m in md.Messages: yield m +// for x in md.Extensions: yield x +// for m in md.Messages: yield from VisitMessageDecls(m) +// +// The traversal starts at the root file descriptor and yields each direct +// declaration within each node before traversing into sub-declarations +// that children themselves may have. +type Builder struct { + // File is the underlying file descriptor builder. + File filedesc.Builder + + // GoTypes is a unique set of the Go types for all declarations and + // dependencies. Each type is represented as a zero value of the Go type. + // + // Declarations are Go types generated for enums and messages directly + // declared (not publicly imported) in the proto source file. + // Messages for map entries are accounted for, but represented by nil. + // Enum declarations in "flattened ordering" come first, followed by + // message declarations in "flattened ordering". + // + // Dependencies are Go types for enums or messages referenced by + // message fields (excluding weak fields), for parent extended messages of + // extension fields, for enums or messages referenced by extension fields, + // and for input and output messages referenced by service methods. + // Dependencies must come after declarations, but the ordering of + // dependencies themselves is unspecified. + GoTypes []any + + // DependencyIndexes is an ordered list of indexes into GoTypes for the + // dependencies of messages, extensions, or services. + // + // There are 5 sub-lists in "flattened ordering" concatenated back-to-back: + // 0. Message field dependencies: list of the enum or message type + // referred to by every message field. + // 1. Extension field targets: list of the extended parent message of + // every extension. + // 2. Extension field dependencies: list of the enum or message type + // referred to by every extension field. + // 3. Service method inputs: list of the input message type + // referred to by every service method. + // 4. Service method outputs: list of the output message type + // referred to by every service method. + // + // The offset into DependencyIndexes for the start of each sub-list + // is appended to the end in reverse order. + DependencyIndexes []int32 + + // EnumInfos is a list of enum infos in "flattened ordering". + EnumInfos []pimpl.EnumInfo + + // MessageInfos is a list of message infos in "flattened ordering". + // If provided, the GoType and PBType for each element is populated. + // + // Requirement: len(MessageInfos) == len(Build.Messages) + MessageInfos []pimpl.MessageInfo + + // ExtensionInfos is a list of extension infos in "flattened ordering". + // Each element is initialized and registered with the protoregistry package. + // + // Requirement: len(LegacyExtensions) == len(Build.Extensions) + ExtensionInfos []pimpl.ExtensionInfo + + // TypeRegistry is the registry to register each type descriptor. + // If nil, it uses protoregistry.GlobalTypes. + TypeRegistry interface { + RegisterMessage(protoreflect.MessageType) error + RegisterEnum(protoreflect.EnumType) error + RegisterExtension(protoreflect.ExtensionType) error + } +} + +// Out is the output of the builder. +type Out struct { + File protoreflect.FileDescriptor +} + +func (tb Builder) Build() (out Out) { + // Replace the resolver with one that resolves dependencies by index, + // which is faster and more reliable than relying on the global registry. + if tb.File.FileRegistry == nil { + tb.File.FileRegistry = protoregistry.GlobalFiles + } + tb.File.FileRegistry = &resolverByIndex{ + goTypes: tb.GoTypes, + depIdxs: tb.DependencyIndexes, + fileRegistry: tb.File.FileRegistry, + } + + // Initialize registry if unpopulated. + if tb.TypeRegistry == nil { + tb.TypeRegistry = protoregistry.GlobalTypes + } + + fbOut := tb.File.Build() + out.File = fbOut.File + + // Process enums. + enumGoTypes := tb.GoTypes[:len(fbOut.Enums)] + if len(tb.EnumInfos) != len(fbOut.Enums) { + panic("mismatching enum lengths") + } + if len(fbOut.Enums) > 0 { + for i := range fbOut.Enums { + tb.EnumInfos[i] = pimpl.EnumInfo{ + GoReflectType: reflect.TypeOf(enumGoTypes[i]), + Desc: &fbOut.Enums[i], + } + // Register enum types. + if err := tb.TypeRegistry.RegisterEnum(&tb.EnumInfos[i]); err != nil { + panic(err) + } + } + } + + // Process messages. + messageGoTypes := tb.GoTypes[len(fbOut.Enums):][:len(fbOut.Messages)] + if len(tb.MessageInfos) != len(fbOut.Messages) { + panic("mismatching message lengths") + } + if len(fbOut.Messages) > 0 { + for i := range fbOut.Messages { + if messageGoTypes[i] == nil { + continue // skip map entry + } + + tb.MessageInfos[i].GoReflectType = reflect.TypeOf(messageGoTypes[i]) + tb.MessageInfos[i].Desc = &fbOut.Messages[i] + + // Register message types. + if err := tb.TypeRegistry.RegisterMessage(&tb.MessageInfos[i]); err != nil { + panic(err) + } + } + + // As a special-case for descriptor.proto, + // locally register concrete message type for the options. + if out.File.Path() == "google/protobuf/descriptor.proto" && out.File.Package() == "google.protobuf" { + for i := range fbOut.Messages { + switch fbOut.Messages[i].Name() { + case "FileOptions": + descopts.File = messageGoTypes[i].(protoreflect.ProtoMessage) + case "EnumOptions": + descopts.Enum = messageGoTypes[i].(protoreflect.ProtoMessage) + case "EnumValueOptions": + descopts.EnumValue = messageGoTypes[i].(protoreflect.ProtoMessage) + case "MessageOptions": + descopts.Message = messageGoTypes[i].(protoreflect.ProtoMessage) + case "FieldOptions": + descopts.Field = messageGoTypes[i].(protoreflect.ProtoMessage) + case "OneofOptions": + descopts.Oneof = messageGoTypes[i].(protoreflect.ProtoMessage) + case "ExtensionRangeOptions": + descopts.ExtensionRange = messageGoTypes[i].(protoreflect.ProtoMessage) + case "ServiceOptions": + descopts.Service = messageGoTypes[i].(protoreflect.ProtoMessage) + case "MethodOptions": + descopts.Method = messageGoTypes[i].(protoreflect.ProtoMessage) + } + } + } + } + + // Process extensions. + if len(tb.ExtensionInfos) != len(fbOut.Extensions) { + panic("mismatching extension lengths") + } + var depIdx int32 + for i := range fbOut.Extensions { + // For enum and message kinds, determine the referent Go type so + // that we can construct their constructors. + const listExtDeps = 2 + var goType reflect.Type + switch fbOut.Extensions[i].L1.Kind { + case protoreflect.EnumKind: + j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) + goType = reflect.TypeOf(tb.GoTypes[j]) + depIdx++ + case protoreflect.MessageKind, protoreflect.GroupKind: + j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) + goType = reflect.TypeOf(tb.GoTypes[j]) + depIdx++ + default: + goType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind] + } + if fbOut.Extensions[i].IsList() { + goType = reflect.SliceOf(goType) + } + + pimpl.InitExtensionInfo(&tb.ExtensionInfos[i], &fbOut.Extensions[i], goType) + + // Register extension types. + if err := tb.TypeRegistry.RegisterExtension(&tb.ExtensionInfos[i]); err != nil { + panic(err) + } + } + + return out +} + +var goTypeForPBKind = map[protoreflect.Kind]reflect.Type{ + protoreflect.BoolKind: reflect.TypeOf(bool(false)), + protoreflect.Int32Kind: reflect.TypeOf(int32(0)), + protoreflect.Sint32Kind: reflect.TypeOf(int32(0)), + protoreflect.Sfixed32Kind: reflect.TypeOf(int32(0)), + protoreflect.Int64Kind: reflect.TypeOf(int64(0)), + protoreflect.Sint64Kind: reflect.TypeOf(int64(0)), + protoreflect.Sfixed64Kind: reflect.TypeOf(int64(0)), + protoreflect.Uint32Kind: reflect.TypeOf(uint32(0)), + protoreflect.Fixed32Kind: reflect.TypeOf(uint32(0)), + protoreflect.Uint64Kind: reflect.TypeOf(uint64(0)), + protoreflect.Fixed64Kind: reflect.TypeOf(uint64(0)), + protoreflect.FloatKind: reflect.TypeOf(float32(0)), + protoreflect.DoubleKind: reflect.TypeOf(float64(0)), + protoreflect.StringKind: reflect.TypeOf(string("")), + protoreflect.BytesKind: reflect.TypeOf([]byte(nil)), +} + +type depIdxs []int32 + +// Get retrieves the jth element of the ith sub-list. +func (x depIdxs) Get(i, j int32) int32 { + return x[x[int32(len(x))-i-1]+j] +} + +type ( + resolverByIndex struct { + goTypes []any + depIdxs depIdxs + fileRegistry + } + fileRegistry interface { + FindFileByPath(string) (protoreflect.FileDescriptor, error) + FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) + RegisterFile(protoreflect.FileDescriptor) error + } +) + +func (r *resolverByIndex) FindEnumByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.EnumDescriptor { + if depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) { + return &es[depIdx] + } else { + return pimpl.Export{}.EnumDescriptorOf(r.goTypes[depIdx]) + } +} + +func (r *resolverByIndex) FindMessageByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.MessageDescriptor { + if depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) { + return &ms[depIdx-len(es)] + } else { + return pimpl.Export{}.MessageDescriptorOf(r.goTypes[depIdx]) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go b/examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go new file mode 100644 index 0000000..58372dd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/flags/flags.go @@ -0,0 +1,24 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package flags provides a set of flags controlled by build tags. +package flags + +// ProtoLegacy specifies whether to enable support for legacy functionality +// such as MessageSets, weak fields, and various other obscure behavior +// that is necessary to maintain backwards compatibility with proto1 or +// the pre-release variants of proto2 and proto3. +// +// This is disabled by default unless built with the "protolegacy" tag. +// +// WARNING: The compatibility agreement covers nothing provided by this flag. +// As such, functionality may suddenly be removed or changed at our discretion. +const ProtoLegacy = protoLegacy + +// LazyUnmarshalExtensions specifies whether to lazily unmarshal extensions. +// +// Lazy extension unmarshaling validates the contents of message-valued +// extension fields at unmarshal time, but defers creating the message +// structure until the extension is first accessed. +const LazyUnmarshalExtensions = ProtoLegacy diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go new file mode 100644 index 0000000..bda8e8c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go @@ -0,0 +1,10 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !protolegacy +// +build !protolegacy + +package flags + +const protoLegacy = false diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go new file mode 100644 index 0000000..6d8d9bd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go @@ -0,0 +1,10 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build protolegacy +// +build protolegacy + +package flags + +const protoLegacy = true diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go new file mode 100644 index 0000000..e6f7d47 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/any_gen.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_any_proto = "google/protobuf/any.proto" + +// Names for google.protobuf.Any. +const ( + Any_message_name protoreflect.Name = "Any" + Any_message_fullname protoreflect.FullName = "google.protobuf.Any" +) + +// Field names for google.protobuf.Any. +const ( + Any_TypeUrl_field_name protoreflect.Name = "type_url" + Any_Value_field_name protoreflect.Name = "value" + + Any_TypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Any.type_url" + Any_Value_field_fullname protoreflect.FullName = "google.protobuf.Any.value" +) + +// Field numbers for google.protobuf.Any. +const ( + Any_TypeUrl_field_number protoreflect.FieldNumber = 1 + Any_Value_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go new file mode 100644 index 0000000..df8f918 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/api_gen.go @@ -0,0 +1,106 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_api_proto = "google/protobuf/api.proto" + +// Names for google.protobuf.Api. +const ( + Api_message_name protoreflect.Name = "Api" + Api_message_fullname protoreflect.FullName = "google.protobuf.Api" +) + +// Field names for google.protobuf.Api. +const ( + Api_Name_field_name protoreflect.Name = "name" + Api_Methods_field_name protoreflect.Name = "methods" + Api_Options_field_name protoreflect.Name = "options" + Api_Version_field_name protoreflect.Name = "version" + Api_SourceContext_field_name protoreflect.Name = "source_context" + Api_Mixins_field_name protoreflect.Name = "mixins" + Api_Syntax_field_name protoreflect.Name = "syntax" + + Api_Name_field_fullname protoreflect.FullName = "google.protobuf.Api.name" + Api_Methods_field_fullname protoreflect.FullName = "google.protobuf.Api.methods" + Api_Options_field_fullname protoreflect.FullName = "google.protobuf.Api.options" + Api_Version_field_fullname protoreflect.FullName = "google.protobuf.Api.version" + Api_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Api.source_context" + Api_Mixins_field_fullname protoreflect.FullName = "google.protobuf.Api.mixins" + Api_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Api.syntax" +) + +// Field numbers for google.protobuf.Api. +const ( + Api_Name_field_number protoreflect.FieldNumber = 1 + Api_Methods_field_number protoreflect.FieldNumber = 2 + Api_Options_field_number protoreflect.FieldNumber = 3 + Api_Version_field_number protoreflect.FieldNumber = 4 + Api_SourceContext_field_number protoreflect.FieldNumber = 5 + Api_Mixins_field_number protoreflect.FieldNumber = 6 + Api_Syntax_field_number protoreflect.FieldNumber = 7 +) + +// Names for google.protobuf.Method. +const ( + Method_message_name protoreflect.Name = "Method" + Method_message_fullname protoreflect.FullName = "google.protobuf.Method" +) + +// Field names for google.protobuf.Method. +const ( + Method_Name_field_name protoreflect.Name = "name" + Method_RequestTypeUrl_field_name protoreflect.Name = "request_type_url" + Method_RequestStreaming_field_name protoreflect.Name = "request_streaming" + Method_ResponseTypeUrl_field_name protoreflect.Name = "response_type_url" + Method_ResponseStreaming_field_name protoreflect.Name = "response_streaming" + Method_Options_field_name protoreflect.Name = "options" + Method_Syntax_field_name protoreflect.Name = "syntax" + + Method_Name_field_fullname protoreflect.FullName = "google.protobuf.Method.name" + Method_RequestTypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Method.request_type_url" + Method_RequestStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.request_streaming" + Method_ResponseTypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Method.response_type_url" + Method_ResponseStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.response_streaming" + Method_Options_field_fullname protoreflect.FullName = "google.protobuf.Method.options" + Method_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Method.syntax" +) + +// Field numbers for google.protobuf.Method. +const ( + Method_Name_field_number protoreflect.FieldNumber = 1 + Method_RequestTypeUrl_field_number protoreflect.FieldNumber = 2 + Method_RequestStreaming_field_number protoreflect.FieldNumber = 3 + Method_ResponseTypeUrl_field_number protoreflect.FieldNumber = 4 + Method_ResponseStreaming_field_number protoreflect.FieldNumber = 5 + Method_Options_field_number protoreflect.FieldNumber = 6 + Method_Syntax_field_number protoreflect.FieldNumber = 7 +) + +// Names for google.protobuf.Mixin. +const ( + Mixin_message_name protoreflect.Name = "Mixin" + Mixin_message_fullname protoreflect.FullName = "google.protobuf.Mixin" +) + +// Field names for google.protobuf.Mixin. +const ( + Mixin_Name_field_name protoreflect.Name = "name" + Mixin_Root_field_name protoreflect.Name = "root" + + Mixin_Name_field_fullname protoreflect.FullName = "google.protobuf.Mixin.name" + Mixin_Root_field_fullname protoreflect.FullName = "google.protobuf.Mixin.root" +) + +// Field numbers for google.protobuf.Mixin. +const ( + Mixin_Name_field_number protoreflect.FieldNumber = 1 + Mixin_Root_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go new file mode 100644 index 0000000..f30ab6b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go @@ -0,0 +1,1270 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_descriptor_proto = "google/protobuf/descriptor.proto" + +// Full and short names for google.protobuf.Edition. +const ( + Edition_enum_fullname = "google.protobuf.Edition" + Edition_enum_name = "Edition" +) + +// Enum values for google.protobuf.Edition. +const ( + Edition_EDITION_UNKNOWN_enum_value = 0 + Edition_EDITION_LEGACY_enum_value = 900 + Edition_EDITION_PROTO2_enum_value = 998 + Edition_EDITION_PROTO3_enum_value = 999 + Edition_EDITION_2023_enum_value = 1000 + Edition_EDITION_2024_enum_value = 1001 + Edition_EDITION_1_TEST_ONLY_enum_value = 1 + Edition_EDITION_2_TEST_ONLY_enum_value = 2 + Edition_EDITION_99997_TEST_ONLY_enum_value = 99997 + Edition_EDITION_99998_TEST_ONLY_enum_value = 99998 + Edition_EDITION_99999_TEST_ONLY_enum_value = 99999 + Edition_EDITION_MAX_enum_value = 2147483647 +) + +// Names for google.protobuf.FileDescriptorSet. +const ( + FileDescriptorSet_message_name protoreflect.Name = "FileDescriptorSet" + FileDescriptorSet_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet" +) + +// Field names for google.protobuf.FileDescriptorSet. +const ( + FileDescriptorSet_File_field_name protoreflect.Name = "file" + + FileDescriptorSet_File_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet.file" +) + +// Field numbers for google.protobuf.FileDescriptorSet. +const ( + FileDescriptorSet_File_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.FileDescriptorProto. +const ( + FileDescriptorProto_message_name protoreflect.Name = "FileDescriptorProto" + FileDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto" +) + +// Field names for google.protobuf.FileDescriptorProto. +const ( + FileDescriptorProto_Name_field_name protoreflect.Name = "name" + FileDescriptorProto_Package_field_name protoreflect.Name = "package" + FileDescriptorProto_Dependency_field_name protoreflect.Name = "dependency" + FileDescriptorProto_PublicDependency_field_name protoreflect.Name = "public_dependency" + FileDescriptorProto_WeakDependency_field_name protoreflect.Name = "weak_dependency" + FileDescriptorProto_MessageType_field_name protoreflect.Name = "message_type" + FileDescriptorProto_EnumType_field_name protoreflect.Name = "enum_type" + FileDescriptorProto_Service_field_name protoreflect.Name = "service" + FileDescriptorProto_Extension_field_name protoreflect.Name = "extension" + FileDescriptorProto_Options_field_name protoreflect.Name = "options" + FileDescriptorProto_SourceCodeInfo_field_name protoreflect.Name = "source_code_info" + FileDescriptorProto_Syntax_field_name protoreflect.Name = "syntax" + FileDescriptorProto_Edition_field_name protoreflect.Name = "edition" + + FileDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.name" + FileDescriptorProto_Package_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.package" + FileDescriptorProto_Dependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.dependency" + FileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.public_dependency" + FileDescriptorProto_WeakDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.weak_dependency" + FileDescriptorProto_MessageType_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.message_type" + FileDescriptorProto_EnumType_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.enum_type" + FileDescriptorProto_Service_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.service" + FileDescriptorProto_Extension_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.extension" + FileDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.options" + FileDescriptorProto_SourceCodeInfo_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.source_code_info" + FileDescriptorProto_Syntax_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.syntax" + FileDescriptorProto_Edition_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.edition" +) + +// Field numbers for google.protobuf.FileDescriptorProto. +const ( + FileDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + FileDescriptorProto_Package_field_number protoreflect.FieldNumber = 2 + FileDescriptorProto_Dependency_field_number protoreflect.FieldNumber = 3 + FileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10 + FileDescriptorProto_WeakDependency_field_number protoreflect.FieldNumber = 11 + FileDescriptorProto_MessageType_field_number protoreflect.FieldNumber = 4 + FileDescriptorProto_EnumType_field_number protoreflect.FieldNumber = 5 + FileDescriptorProto_Service_field_number protoreflect.FieldNumber = 6 + FileDescriptorProto_Extension_field_number protoreflect.FieldNumber = 7 + FileDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 + FileDescriptorProto_SourceCodeInfo_field_number protoreflect.FieldNumber = 9 + FileDescriptorProto_Syntax_field_number protoreflect.FieldNumber = 12 + FileDescriptorProto_Edition_field_number protoreflect.FieldNumber = 14 +) + +// Names for google.protobuf.DescriptorProto. +const ( + DescriptorProto_message_name protoreflect.Name = "DescriptorProto" + DescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto" +) + +// Field names for google.protobuf.DescriptorProto. +const ( + DescriptorProto_Name_field_name protoreflect.Name = "name" + DescriptorProto_Field_field_name protoreflect.Name = "field" + DescriptorProto_Extension_field_name protoreflect.Name = "extension" + DescriptorProto_NestedType_field_name protoreflect.Name = "nested_type" + DescriptorProto_EnumType_field_name protoreflect.Name = "enum_type" + DescriptorProto_ExtensionRange_field_name protoreflect.Name = "extension_range" + DescriptorProto_OneofDecl_field_name protoreflect.Name = "oneof_decl" + DescriptorProto_Options_field_name protoreflect.Name = "options" + DescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range" + DescriptorProto_ReservedName_field_name protoreflect.Name = "reserved_name" + + DescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.name" + DescriptorProto_Field_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.field" + DescriptorProto_Extension_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.extension" + DescriptorProto_NestedType_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.nested_type" + DescriptorProto_EnumType_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.enum_type" + DescriptorProto_ExtensionRange_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.extension_range" + DescriptorProto_OneofDecl_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.oneof_decl" + DescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.options" + DescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_range" + DescriptorProto_ReservedName_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_name" +) + +// Field numbers for google.protobuf.DescriptorProto. +const ( + DescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + DescriptorProto_Field_field_number protoreflect.FieldNumber = 2 + DescriptorProto_Extension_field_number protoreflect.FieldNumber = 6 + DescriptorProto_NestedType_field_number protoreflect.FieldNumber = 3 + DescriptorProto_EnumType_field_number protoreflect.FieldNumber = 4 + DescriptorProto_ExtensionRange_field_number protoreflect.FieldNumber = 5 + DescriptorProto_OneofDecl_field_number protoreflect.FieldNumber = 8 + DescriptorProto_Options_field_number protoreflect.FieldNumber = 7 + DescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 9 + DescriptorProto_ReservedName_field_number protoreflect.FieldNumber = 10 +) + +// Names for google.protobuf.DescriptorProto.ExtensionRange. +const ( + DescriptorProto_ExtensionRange_message_name protoreflect.Name = "ExtensionRange" + DescriptorProto_ExtensionRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange" +) + +// Field names for google.protobuf.DescriptorProto.ExtensionRange. +const ( + DescriptorProto_ExtensionRange_Start_field_name protoreflect.Name = "start" + DescriptorProto_ExtensionRange_End_field_name protoreflect.Name = "end" + DescriptorProto_ExtensionRange_Options_field_name protoreflect.Name = "options" + + DescriptorProto_ExtensionRange_Start_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.start" + DescriptorProto_ExtensionRange_End_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.end" + DescriptorProto_ExtensionRange_Options_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.options" +) + +// Field numbers for google.protobuf.DescriptorProto.ExtensionRange. +const ( + DescriptorProto_ExtensionRange_Start_field_number protoreflect.FieldNumber = 1 + DescriptorProto_ExtensionRange_End_field_number protoreflect.FieldNumber = 2 + DescriptorProto_ExtensionRange_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.DescriptorProto.ReservedRange. +const ( + DescriptorProto_ReservedRange_message_name protoreflect.Name = "ReservedRange" + DescriptorProto_ReservedRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange" +) + +// Field names for google.protobuf.DescriptorProto.ReservedRange. +const ( + DescriptorProto_ReservedRange_Start_field_name protoreflect.Name = "start" + DescriptorProto_ReservedRange_End_field_name protoreflect.Name = "end" + + DescriptorProto_ReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.start" + DescriptorProto_ReservedRange_End_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.end" +) + +// Field numbers for google.protobuf.DescriptorProto.ReservedRange. +const ( + DescriptorProto_ReservedRange_Start_field_number protoreflect.FieldNumber = 1 + DescriptorProto_ReservedRange_End_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.ExtensionRangeOptions. +const ( + ExtensionRangeOptions_message_name protoreflect.Name = "ExtensionRangeOptions" + ExtensionRangeOptions_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions" +) + +// Field names for google.protobuf.ExtensionRangeOptions. +const ( + ExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + ExtensionRangeOptions_Declaration_field_name protoreflect.Name = "declaration" + ExtensionRangeOptions_Features_field_name protoreflect.Name = "features" + ExtensionRangeOptions_Verification_field_name protoreflect.Name = "verification" + + ExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.uninterpreted_option" + ExtensionRangeOptions_Declaration_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.declaration" + ExtensionRangeOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.features" + ExtensionRangeOptions_Verification_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.verification" +) + +// Field numbers for google.protobuf.ExtensionRangeOptions. +const ( + ExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 + ExtensionRangeOptions_Declaration_field_number protoreflect.FieldNumber = 2 + ExtensionRangeOptions_Features_field_number protoreflect.FieldNumber = 50 + ExtensionRangeOptions_Verification_field_number protoreflect.FieldNumber = 3 +) + +// Full and short names for google.protobuf.ExtensionRangeOptions.VerificationState. +const ( + ExtensionRangeOptions_VerificationState_enum_fullname = "google.protobuf.ExtensionRangeOptions.VerificationState" + ExtensionRangeOptions_VerificationState_enum_name = "VerificationState" +) + +// Enum values for google.protobuf.ExtensionRangeOptions.VerificationState. +const ( + ExtensionRangeOptions_DECLARATION_enum_value = 0 + ExtensionRangeOptions_UNVERIFIED_enum_value = 1 +) + +// Names for google.protobuf.ExtensionRangeOptions.Declaration. +const ( + ExtensionRangeOptions_Declaration_message_name protoreflect.Name = "Declaration" + ExtensionRangeOptions_Declaration_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration" +) + +// Field names for google.protobuf.ExtensionRangeOptions.Declaration. +const ( + ExtensionRangeOptions_Declaration_Number_field_name protoreflect.Name = "number" + ExtensionRangeOptions_Declaration_FullName_field_name protoreflect.Name = "full_name" + ExtensionRangeOptions_Declaration_Type_field_name protoreflect.Name = "type" + ExtensionRangeOptions_Declaration_Reserved_field_name protoreflect.Name = "reserved" + ExtensionRangeOptions_Declaration_Repeated_field_name protoreflect.Name = "repeated" + + ExtensionRangeOptions_Declaration_Number_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.number" + ExtensionRangeOptions_Declaration_FullName_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.full_name" + ExtensionRangeOptions_Declaration_Type_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.type" + ExtensionRangeOptions_Declaration_Reserved_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.reserved" + ExtensionRangeOptions_Declaration_Repeated_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.repeated" +) + +// Field numbers for google.protobuf.ExtensionRangeOptions.Declaration. +const ( + ExtensionRangeOptions_Declaration_Number_field_number protoreflect.FieldNumber = 1 + ExtensionRangeOptions_Declaration_FullName_field_number protoreflect.FieldNumber = 2 + ExtensionRangeOptions_Declaration_Type_field_number protoreflect.FieldNumber = 3 + ExtensionRangeOptions_Declaration_Reserved_field_number protoreflect.FieldNumber = 5 + ExtensionRangeOptions_Declaration_Repeated_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.FieldDescriptorProto. +const ( + FieldDescriptorProto_message_name protoreflect.Name = "FieldDescriptorProto" + FieldDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto" +) + +// Field names for google.protobuf.FieldDescriptorProto. +const ( + FieldDescriptorProto_Name_field_name protoreflect.Name = "name" + FieldDescriptorProto_Number_field_name protoreflect.Name = "number" + FieldDescriptorProto_Label_field_name protoreflect.Name = "label" + FieldDescriptorProto_Type_field_name protoreflect.Name = "type" + FieldDescriptorProto_TypeName_field_name protoreflect.Name = "type_name" + FieldDescriptorProto_Extendee_field_name protoreflect.Name = "extendee" + FieldDescriptorProto_DefaultValue_field_name protoreflect.Name = "default_value" + FieldDescriptorProto_OneofIndex_field_name protoreflect.Name = "oneof_index" + FieldDescriptorProto_JsonName_field_name protoreflect.Name = "json_name" + FieldDescriptorProto_Options_field_name protoreflect.Name = "options" + FieldDescriptorProto_Proto3Optional_field_name protoreflect.Name = "proto3_optional" + + FieldDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.name" + FieldDescriptorProto_Number_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.number" + FieldDescriptorProto_Label_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.label" + FieldDescriptorProto_Type_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type" + FieldDescriptorProto_TypeName_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type_name" + FieldDescriptorProto_Extendee_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.extendee" + FieldDescriptorProto_DefaultValue_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.default_value" + FieldDescriptorProto_OneofIndex_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.oneof_index" + FieldDescriptorProto_JsonName_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.json_name" + FieldDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.options" + FieldDescriptorProto_Proto3Optional_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.proto3_optional" +) + +// Field numbers for google.protobuf.FieldDescriptorProto. +const ( + FieldDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + FieldDescriptorProto_Number_field_number protoreflect.FieldNumber = 3 + FieldDescriptorProto_Label_field_number protoreflect.FieldNumber = 4 + FieldDescriptorProto_Type_field_number protoreflect.FieldNumber = 5 + FieldDescriptorProto_TypeName_field_number protoreflect.FieldNumber = 6 + FieldDescriptorProto_Extendee_field_number protoreflect.FieldNumber = 2 + FieldDescriptorProto_DefaultValue_field_number protoreflect.FieldNumber = 7 + FieldDescriptorProto_OneofIndex_field_number protoreflect.FieldNumber = 9 + FieldDescriptorProto_JsonName_field_number protoreflect.FieldNumber = 10 + FieldDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 + FieldDescriptorProto_Proto3Optional_field_number protoreflect.FieldNumber = 17 +) + +// Full and short names for google.protobuf.FieldDescriptorProto.Type. +const ( + FieldDescriptorProto_Type_enum_fullname = "google.protobuf.FieldDescriptorProto.Type" + FieldDescriptorProto_Type_enum_name = "Type" +) + +// Enum values for google.protobuf.FieldDescriptorProto.Type. +const ( + FieldDescriptorProto_TYPE_DOUBLE_enum_value = 1 + FieldDescriptorProto_TYPE_FLOAT_enum_value = 2 + FieldDescriptorProto_TYPE_INT64_enum_value = 3 + FieldDescriptorProto_TYPE_UINT64_enum_value = 4 + FieldDescriptorProto_TYPE_INT32_enum_value = 5 + FieldDescriptorProto_TYPE_FIXED64_enum_value = 6 + FieldDescriptorProto_TYPE_FIXED32_enum_value = 7 + FieldDescriptorProto_TYPE_BOOL_enum_value = 8 + FieldDescriptorProto_TYPE_STRING_enum_value = 9 + FieldDescriptorProto_TYPE_GROUP_enum_value = 10 + FieldDescriptorProto_TYPE_MESSAGE_enum_value = 11 + FieldDescriptorProto_TYPE_BYTES_enum_value = 12 + FieldDescriptorProto_TYPE_UINT32_enum_value = 13 + FieldDescriptorProto_TYPE_ENUM_enum_value = 14 + FieldDescriptorProto_TYPE_SFIXED32_enum_value = 15 + FieldDescriptorProto_TYPE_SFIXED64_enum_value = 16 + FieldDescriptorProto_TYPE_SINT32_enum_value = 17 + FieldDescriptorProto_TYPE_SINT64_enum_value = 18 +) + +// Full and short names for google.protobuf.FieldDescriptorProto.Label. +const ( + FieldDescriptorProto_Label_enum_fullname = "google.protobuf.FieldDescriptorProto.Label" + FieldDescriptorProto_Label_enum_name = "Label" +) + +// Enum values for google.protobuf.FieldDescriptorProto.Label. +const ( + FieldDescriptorProto_LABEL_OPTIONAL_enum_value = 1 + FieldDescriptorProto_LABEL_REPEATED_enum_value = 3 + FieldDescriptorProto_LABEL_REQUIRED_enum_value = 2 +) + +// Names for google.protobuf.OneofDescriptorProto. +const ( + OneofDescriptorProto_message_name protoreflect.Name = "OneofDescriptorProto" + OneofDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto" +) + +// Field names for google.protobuf.OneofDescriptorProto. +const ( + OneofDescriptorProto_Name_field_name protoreflect.Name = "name" + OneofDescriptorProto_Options_field_name protoreflect.Name = "options" + + OneofDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto.name" + OneofDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto.options" +) + +// Field numbers for google.protobuf.OneofDescriptorProto. +const ( + OneofDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + OneofDescriptorProto_Options_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.EnumDescriptorProto. +const ( + EnumDescriptorProto_message_name protoreflect.Name = "EnumDescriptorProto" + EnumDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto" +) + +// Field names for google.protobuf.EnumDescriptorProto. +const ( + EnumDescriptorProto_Name_field_name protoreflect.Name = "name" + EnumDescriptorProto_Value_field_name protoreflect.Name = "value" + EnumDescriptorProto_Options_field_name protoreflect.Name = "options" + EnumDescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range" + EnumDescriptorProto_ReservedName_field_name protoreflect.Name = "reserved_name" + + EnumDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.name" + EnumDescriptorProto_Value_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.value" + EnumDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.options" + EnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_range" + EnumDescriptorProto_ReservedName_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_name" +) + +// Field numbers for google.protobuf.EnumDescriptorProto. +const ( + EnumDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + EnumDescriptorProto_Value_field_number protoreflect.FieldNumber = 2 + EnumDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 + EnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4 + EnumDescriptorProto_ReservedName_field_number protoreflect.FieldNumber = 5 +) + +// Names for google.protobuf.EnumDescriptorProto.EnumReservedRange. +const ( + EnumDescriptorProto_EnumReservedRange_message_name protoreflect.Name = "EnumReservedRange" + EnumDescriptorProto_EnumReservedRange_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange" +) + +// Field names for google.protobuf.EnumDescriptorProto.EnumReservedRange. +const ( + EnumDescriptorProto_EnumReservedRange_Start_field_name protoreflect.Name = "start" + EnumDescriptorProto_EnumReservedRange_End_field_name protoreflect.Name = "end" + + EnumDescriptorProto_EnumReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.start" + EnumDescriptorProto_EnumReservedRange_End_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.end" +) + +// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange. +const ( + EnumDescriptorProto_EnumReservedRange_Start_field_number protoreflect.FieldNumber = 1 + EnumDescriptorProto_EnumReservedRange_End_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.EnumValueDescriptorProto. +const ( + EnumValueDescriptorProto_message_name protoreflect.Name = "EnumValueDescriptorProto" + EnumValueDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto" +) + +// Field names for google.protobuf.EnumValueDescriptorProto. +const ( + EnumValueDescriptorProto_Name_field_name protoreflect.Name = "name" + EnumValueDescriptorProto_Number_field_name protoreflect.Name = "number" + EnumValueDescriptorProto_Options_field_name protoreflect.Name = "options" + + EnumValueDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.name" + EnumValueDescriptorProto_Number_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.number" + EnumValueDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.options" +) + +// Field numbers for google.protobuf.EnumValueDescriptorProto. +const ( + EnumValueDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + EnumValueDescriptorProto_Number_field_number protoreflect.FieldNumber = 2 + EnumValueDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.ServiceDescriptorProto. +const ( + ServiceDescriptorProto_message_name protoreflect.Name = "ServiceDescriptorProto" + ServiceDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto" +) + +// Field names for google.protobuf.ServiceDescriptorProto. +const ( + ServiceDescriptorProto_Name_field_name protoreflect.Name = "name" + ServiceDescriptorProto_Method_field_name protoreflect.Name = "method" + ServiceDescriptorProto_Options_field_name protoreflect.Name = "options" + + ServiceDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.name" + ServiceDescriptorProto_Method_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.method" + ServiceDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.options" +) + +// Field numbers for google.protobuf.ServiceDescriptorProto. +const ( + ServiceDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + ServiceDescriptorProto_Method_field_number protoreflect.FieldNumber = 2 + ServiceDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.MethodDescriptorProto. +const ( + MethodDescriptorProto_message_name protoreflect.Name = "MethodDescriptorProto" + MethodDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto" +) + +// Field names for google.protobuf.MethodDescriptorProto. +const ( + MethodDescriptorProto_Name_field_name protoreflect.Name = "name" + MethodDescriptorProto_InputType_field_name protoreflect.Name = "input_type" + MethodDescriptorProto_OutputType_field_name protoreflect.Name = "output_type" + MethodDescriptorProto_Options_field_name protoreflect.Name = "options" + MethodDescriptorProto_ClientStreaming_field_name protoreflect.Name = "client_streaming" + MethodDescriptorProto_ServerStreaming_field_name protoreflect.Name = "server_streaming" + + MethodDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.name" + MethodDescriptorProto_InputType_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.input_type" + MethodDescriptorProto_OutputType_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.output_type" + MethodDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.options" + MethodDescriptorProto_ClientStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.client_streaming" + MethodDescriptorProto_ServerStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.server_streaming" +) + +// Field numbers for google.protobuf.MethodDescriptorProto. +const ( + MethodDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 + MethodDescriptorProto_InputType_field_number protoreflect.FieldNumber = 2 + MethodDescriptorProto_OutputType_field_number protoreflect.FieldNumber = 3 + MethodDescriptorProto_Options_field_number protoreflect.FieldNumber = 4 + MethodDescriptorProto_ClientStreaming_field_number protoreflect.FieldNumber = 5 + MethodDescriptorProto_ServerStreaming_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.FileOptions. +const ( + FileOptions_message_name protoreflect.Name = "FileOptions" + FileOptions_message_fullname protoreflect.FullName = "google.protobuf.FileOptions" +) + +// Field names for google.protobuf.FileOptions. +const ( + FileOptions_JavaPackage_field_name protoreflect.Name = "java_package" + FileOptions_JavaOuterClassname_field_name protoreflect.Name = "java_outer_classname" + FileOptions_JavaMultipleFiles_field_name protoreflect.Name = "java_multiple_files" + FileOptions_JavaGenerateEqualsAndHash_field_name protoreflect.Name = "java_generate_equals_and_hash" + FileOptions_JavaStringCheckUtf8_field_name protoreflect.Name = "java_string_check_utf8" + FileOptions_OptimizeFor_field_name protoreflect.Name = "optimize_for" + FileOptions_GoPackage_field_name protoreflect.Name = "go_package" + FileOptions_CcGenericServices_field_name protoreflect.Name = "cc_generic_services" + FileOptions_JavaGenericServices_field_name protoreflect.Name = "java_generic_services" + FileOptions_PyGenericServices_field_name protoreflect.Name = "py_generic_services" + FileOptions_Deprecated_field_name protoreflect.Name = "deprecated" + FileOptions_CcEnableArenas_field_name protoreflect.Name = "cc_enable_arenas" + FileOptions_ObjcClassPrefix_field_name protoreflect.Name = "objc_class_prefix" + FileOptions_CsharpNamespace_field_name protoreflect.Name = "csharp_namespace" + FileOptions_SwiftPrefix_field_name protoreflect.Name = "swift_prefix" + FileOptions_PhpClassPrefix_field_name protoreflect.Name = "php_class_prefix" + FileOptions_PhpNamespace_field_name protoreflect.Name = "php_namespace" + FileOptions_PhpMetadataNamespace_field_name protoreflect.Name = "php_metadata_namespace" + FileOptions_RubyPackage_field_name protoreflect.Name = "ruby_package" + FileOptions_Features_field_name protoreflect.Name = "features" + FileOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + FileOptions_JavaPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_package" + FileOptions_JavaOuterClassname_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_outer_classname" + FileOptions_JavaMultipleFiles_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_multiple_files" + FileOptions_JavaGenerateEqualsAndHash_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generate_equals_and_hash" + FileOptions_JavaStringCheckUtf8_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_string_check_utf8" + FileOptions_OptimizeFor_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.optimize_for" + FileOptions_GoPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.go_package" + FileOptions_CcGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_generic_services" + FileOptions_JavaGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generic_services" + FileOptions_PyGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.py_generic_services" + FileOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.deprecated" + FileOptions_CcEnableArenas_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_enable_arenas" + FileOptions_ObjcClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.objc_class_prefix" + FileOptions_CsharpNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.csharp_namespace" + FileOptions_SwiftPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.swift_prefix" + FileOptions_PhpClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_class_prefix" + FileOptions_PhpNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_namespace" + FileOptions_PhpMetadataNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_metadata_namespace" + FileOptions_RubyPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.ruby_package" + FileOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.features" + FileOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.FileOptions. +const ( + FileOptions_JavaPackage_field_number protoreflect.FieldNumber = 1 + FileOptions_JavaOuterClassname_field_number protoreflect.FieldNumber = 8 + FileOptions_JavaMultipleFiles_field_number protoreflect.FieldNumber = 10 + FileOptions_JavaGenerateEqualsAndHash_field_number protoreflect.FieldNumber = 20 + FileOptions_JavaStringCheckUtf8_field_number protoreflect.FieldNumber = 27 + FileOptions_OptimizeFor_field_number protoreflect.FieldNumber = 9 + FileOptions_GoPackage_field_number protoreflect.FieldNumber = 11 + FileOptions_CcGenericServices_field_number protoreflect.FieldNumber = 16 + FileOptions_JavaGenericServices_field_number protoreflect.FieldNumber = 17 + FileOptions_PyGenericServices_field_number protoreflect.FieldNumber = 18 + FileOptions_Deprecated_field_number protoreflect.FieldNumber = 23 + FileOptions_CcEnableArenas_field_number protoreflect.FieldNumber = 31 + FileOptions_ObjcClassPrefix_field_number protoreflect.FieldNumber = 36 + FileOptions_CsharpNamespace_field_number protoreflect.FieldNumber = 37 + FileOptions_SwiftPrefix_field_number protoreflect.FieldNumber = 39 + FileOptions_PhpClassPrefix_field_number protoreflect.FieldNumber = 40 + FileOptions_PhpNamespace_field_number protoreflect.FieldNumber = 41 + FileOptions_PhpMetadataNamespace_field_number protoreflect.FieldNumber = 44 + FileOptions_RubyPackage_field_number protoreflect.FieldNumber = 45 + FileOptions_Features_field_number protoreflect.FieldNumber = 50 + FileOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Full and short names for google.protobuf.FileOptions.OptimizeMode. +const ( + FileOptions_OptimizeMode_enum_fullname = "google.protobuf.FileOptions.OptimizeMode" + FileOptions_OptimizeMode_enum_name = "OptimizeMode" +) + +// Enum values for google.protobuf.FileOptions.OptimizeMode. +const ( + FileOptions_SPEED_enum_value = 1 + FileOptions_CODE_SIZE_enum_value = 2 + FileOptions_LITE_RUNTIME_enum_value = 3 +) + +// Names for google.protobuf.MessageOptions. +const ( + MessageOptions_message_name protoreflect.Name = "MessageOptions" + MessageOptions_message_fullname protoreflect.FullName = "google.protobuf.MessageOptions" +) + +// Field names for google.protobuf.MessageOptions. +const ( + MessageOptions_MessageSetWireFormat_field_name protoreflect.Name = "message_set_wire_format" + MessageOptions_NoStandardDescriptorAccessor_field_name protoreflect.Name = "no_standard_descriptor_accessor" + MessageOptions_Deprecated_field_name protoreflect.Name = "deprecated" + MessageOptions_MapEntry_field_name protoreflect.Name = "map_entry" + MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" + MessageOptions_Features_field_name protoreflect.Name = "features" + MessageOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + MessageOptions_MessageSetWireFormat_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.message_set_wire_format" + MessageOptions_NoStandardDescriptorAccessor_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.no_standard_descriptor_accessor" + MessageOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated" + MessageOptions_MapEntry_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.map_entry" + MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts" + MessageOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.features" + MessageOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.MessageOptions. +const ( + MessageOptions_MessageSetWireFormat_field_number protoreflect.FieldNumber = 1 + MessageOptions_NoStandardDescriptorAccessor_field_number protoreflect.FieldNumber = 2 + MessageOptions_Deprecated_field_number protoreflect.FieldNumber = 3 + MessageOptions_MapEntry_field_number protoreflect.FieldNumber = 7 + MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 11 + MessageOptions_Features_field_number protoreflect.FieldNumber = 12 + MessageOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.FieldOptions. +const ( + FieldOptions_message_name protoreflect.Name = "FieldOptions" + FieldOptions_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions" +) + +// Field names for google.protobuf.FieldOptions. +const ( + FieldOptions_Ctype_field_name protoreflect.Name = "ctype" + FieldOptions_Packed_field_name protoreflect.Name = "packed" + FieldOptions_Jstype_field_name protoreflect.Name = "jstype" + FieldOptions_Lazy_field_name protoreflect.Name = "lazy" + FieldOptions_UnverifiedLazy_field_name protoreflect.Name = "unverified_lazy" + FieldOptions_Deprecated_field_name protoreflect.Name = "deprecated" + FieldOptions_Weak_field_name protoreflect.Name = "weak" + FieldOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" + FieldOptions_Retention_field_name protoreflect.Name = "retention" + FieldOptions_Targets_field_name protoreflect.Name = "targets" + FieldOptions_EditionDefaults_field_name protoreflect.Name = "edition_defaults" + FieldOptions_Features_field_name protoreflect.Name = "features" + FieldOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" + FieldOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + FieldOptions_Ctype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.ctype" + FieldOptions_Packed_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.packed" + FieldOptions_Jstype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.jstype" + FieldOptions_Lazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.lazy" + FieldOptions_UnverifiedLazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.unverified_lazy" + FieldOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.deprecated" + FieldOptions_Weak_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.weak" + FieldOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.debug_redact" + FieldOptions_Retention_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.retention" + FieldOptions_Targets_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.targets" + FieldOptions_EditionDefaults_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.edition_defaults" + FieldOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.features" + FieldOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.feature_support" + FieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.FieldOptions. +const ( + FieldOptions_Ctype_field_number protoreflect.FieldNumber = 1 + FieldOptions_Packed_field_number protoreflect.FieldNumber = 2 + FieldOptions_Jstype_field_number protoreflect.FieldNumber = 6 + FieldOptions_Lazy_field_number protoreflect.FieldNumber = 5 + FieldOptions_UnverifiedLazy_field_number protoreflect.FieldNumber = 15 + FieldOptions_Deprecated_field_number protoreflect.FieldNumber = 3 + FieldOptions_Weak_field_number protoreflect.FieldNumber = 10 + FieldOptions_DebugRedact_field_number protoreflect.FieldNumber = 16 + FieldOptions_Retention_field_number protoreflect.FieldNumber = 17 + FieldOptions_Targets_field_number protoreflect.FieldNumber = 19 + FieldOptions_EditionDefaults_field_number protoreflect.FieldNumber = 20 + FieldOptions_Features_field_number protoreflect.FieldNumber = 21 + FieldOptions_FeatureSupport_field_number protoreflect.FieldNumber = 22 + FieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Full and short names for google.protobuf.FieldOptions.CType. +const ( + FieldOptions_CType_enum_fullname = "google.protobuf.FieldOptions.CType" + FieldOptions_CType_enum_name = "CType" +) + +// Enum values for google.protobuf.FieldOptions.CType. +const ( + FieldOptions_STRING_enum_value = 0 + FieldOptions_CORD_enum_value = 1 + FieldOptions_STRING_PIECE_enum_value = 2 +) + +// Full and short names for google.protobuf.FieldOptions.JSType. +const ( + FieldOptions_JSType_enum_fullname = "google.protobuf.FieldOptions.JSType" + FieldOptions_JSType_enum_name = "JSType" +) + +// Enum values for google.protobuf.FieldOptions.JSType. +const ( + FieldOptions_JS_NORMAL_enum_value = 0 + FieldOptions_JS_STRING_enum_value = 1 + FieldOptions_JS_NUMBER_enum_value = 2 +) + +// Full and short names for google.protobuf.FieldOptions.OptionRetention. +const ( + FieldOptions_OptionRetention_enum_fullname = "google.protobuf.FieldOptions.OptionRetention" + FieldOptions_OptionRetention_enum_name = "OptionRetention" +) + +// Enum values for google.protobuf.FieldOptions.OptionRetention. +const ( + FieldOptions_RETENTION_UNKNOWN_enum_value = 0 + FieldOptions_RETENTION_RUNTIME_enum_value = 1 + FieldOptions_RETENTION_SOURCE_enum_value = 2 +) + +// Full and short names for google.protobuf.FieldOptions.OptionTargetType. +const ( + FieldOptions_OptionTargetType_enum_fullname = "google.protobuf.FieldOptions.OptionTargetType" + FieldOptions_OptionTargetType_enum_name = "OptionTargetType" +) + +// Enum values for google.protobuf.FieldOptions.OptionTargetType. +const ( + FieldOptions_TARGET_TYPE_UNKNOWN_enum_value = 0 + FieldOptions_TARGET_TYPE_FILE_enum_value = 1 + FieldOptions_TARGET_TYPE_EXTENSION_RANGE_enum_value = 2 + FieldOptions_TARGET_TYPE_MESSAGE_enum_value = 3 + FieldOptions_TARGET_TYPE_FIELD_enum_value = 4 + FieldOptions_TARGET_TYPE_ONEOF_enum_value = 5 + FieldOptions_TARGET_TYPE_ENUM_enum_value = 6 + FieldOptions_TARGET_TYPE_ENUM_ENTRY_enum_value = 7 + FieldOptions_TARGET_TYPE_SERVICE_enum_value = 8 + FieldOptions_TARGET_TYPE_METHOD_enum_value = 9 +) + +// Names for google.protobuf.FieldOptions.EditionDefault. +const ( + FieldOptions_EditionDefault_message_name protoreflect.Name = "EditionDefault" + FieldOptions_EditionDefault_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault" +) + +// Field names for google.protobuf.FieldOptions.EditionDefault. +const ( + FieldOptions_EditionDefault_Edition_field_name protoreflect.Name = "edition" + FieldOptions_EditionDefault_Value_field_name protoreflect.Name = "value" + + FieldOptions_EditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault.edition" + FieldOptions_EditionDefault_Value_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault.value" +) + +// Field numbers for google.protobuf.FieldOptions.EditionDefault. +const ( + FieldOptions_EditionDefault_Edition_field_number protoreflect.FieldNumber = 3 + FieldOptions_EditionDefault_Value_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_message_name protoreflect.Name = "FeatureSupport" + FieldOptions_FeatureSupport_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport" +) + +// Field names for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_EditionIntroduced_field_name protoreflect.Name = "edition_introduced" + FieldOptions_FeatureSupport_EditionDeprecated_field_name protoreflect.Name = "edition_deprecated" + FieldOptions_FeatureSupport_DeprecationWarning_field_name protoreflect.Name = "deprecation_warning" + FieldOptions_FeatureSupport_EditionRemoved_field_name protoreflect.Name = "edition_removed" + + FieldOptions_FeatureSupport_EditionIntroduced_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_introduced" + FieldOptions_FeatureSupport_EditionDeprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_deprecated" + FieldOptions_FeatureSupport_DeprecationWarning_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.deprecation_warning" + FieldOptions_FeatureSupport_EditionRemoved_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_removed" +) + +// Field numbers for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_EditionIntroduced_field_number protoreflect.FieldNumber = 1 + FieldOptions_FeatureSupport_EditionDeprecated_field_number protoreflect.FieldNumber = 2 + FieldOptions_FeatureSupport_DeprecationWarning_field_number protoreflect.FieldNumber = 3 + FieldOptions_FeatureSupport_EditionRemoved_field_number protoreflect.FieldNumber = 4 +) + +// Names for google.protobuf.OneofOptions. +const ( + OneofOptions_message_name protoreflect.Name = "OneofOptions" + OneofOptions_message_fullname protoreflect.FullName = "google.protobuf.OneofOptions" +) + +// Field names for google.protobuf.OneofOptions. +const ( + OneofOptions_Features_field_name protoreflect.Name = "features" + OneofOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + OneofOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.OneofOptions.features" + OneofOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.OneofOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.OneofOptions. +const ( + OneofOptions_Features_field_number protoreflect.FieldNumber = 1 + OneofOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.EnumOptions. +const ( + EnumOptions_message_name protoreflect.Name = "EnumOptions" + EnumOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumOptions" +) + +// Field names for google.protobuf.EnumOptions. +const ( + EnumOptions_AllowAlias_field_name protoreflect.Name = "allow_alias" + EnumOptions_Deprecated_field_name protoreflect.Name = "deprecated" + EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" + EnumOptions_Features_field_name protoreflect.Name = "features" + EnumOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + EnumOptions_AllowAlias_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.allow_alias" + EnumOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated" + EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated_legacy_json_field_conflicts" + EnumOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.features" + EnumOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.EnumOptions. +const ( + EnumOptions_AllowAlias_field_number protoreflect.FieldNumber = 2 + EnumOptions_Deprecated_field_number protoreflect.FieldNumber = 3 + EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 6 + EnumOptions_Features_field_number protoreflect.FieldNumber = 7 + EnumOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.EnumValueOptions. +const ( + EnumValueOptions_message_name protoreflect.Name = "EnumValueOptions" + EnumValueOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions" +) + +// Field names for google.protobuf.EnumValueOptions. +const ( + EnumValueOptions_Deprecated_field_name protoreflect.Name = "deprecated" + EnumValueOptions_Features_field_name protoreflect.Name = "features" + EnumValueOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" + EnumValueOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" + EnumValueOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + EnumValueOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.deprecated" + EnumValueOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.features" + EnumValueOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.debug_redact" + EnumValueOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.feature_support" + EnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.EnumValueOptions. +const ( + EnumValueOptions_Deprecated_field_number protoreflect.FieldNumber = 1 + EnumValueOptions_Features_field_number protoreflect.FieldNumber = 2 + EnumValueOptions_DebugRedact_field_number protoreflect.FieldNumber = 3 + EnumValueOptions_FeatureSupport_field_number protoreflect.FieldNumber = 4 + EnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.ServiceOptions. +const ( + ServiceOptions_message_name protoreflect.Name = "ServiceOptions" + ServiceOptions_message_fullname protoreflect.FullName = "google.protobuf.ServiceOptions" +) + +// Field names for google.protobuf.ServiceOptions. +const ( + ServiceOptions_Features_field_name protoreflect.Name = "features" + ServiceOptions_Deprecated_field_name protoreflect.Name = "deprecated" + ServiceOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + ServiceOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.features" + ServiceOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.deprecated" + ServiceOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.ServiceOptions. +const ( + ServiceOptions_Features_field_number protoreflect.FieldNumber = 34 + ServiceOptions_Deprecated_field_number protoreflect.FieldNumber = 33 + ServiceOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Names for google.protobuf.MethodOptions. +const ( + MethodOptions_message_name protoreflect.Name = "MethodOptions" + MethodOptions_message_fullname protoreflect.FullName = "google.protobuf.MethodOptions" +) + +// Field names for google.protobuf.MethodOptions. +const ( + MethodOptions_Deprecated_field_name protoreflect.Name = "deprecated" + MethodOptions_IdempotencyLevel_field_name protoreflect.Name = "idempotency_level" + MethodOptions_Features_field_name protoreflect.Name = "features" + MethodOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" + + MethodOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.deprecated" + MethodOptions_IdempotencyLevel_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.idempotency_level" + MethodOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.features" + MethodOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.uninterpreted_option" +) + +// Field numbers for google.protobuf.MethodOptions. +const ( + MethodOptions_Deprecated_field_number protoreflect.FieldNumber = 33 + MethodOptions_IdempotencyLevel_field_number protoreflect.FieldNumber = 34 + MethodOptions_Features_field_number protoreflect.FieldNumber = 35 + MethodOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 +) + +// Full and short names for google.protobuf.MethodOptions.IdempotencyLevel. +const ( + MethodOptions_IdempotencyLevel_enum_fullname = "google.protobuf.MethodOptions.IdempotencyLevel" + MethodOptions_IdempotencyLevel_enum_name = "IdempotencyLevel" +) + +// Enum values for google.protobuf.MethodOptions.IdempotencyLevel. +const ( + MethodOptions_IDEMPOTENCY_UNKNOWN_enum_value = 0 + MethodOptions_NO_SIDE_EFFECTS_enum_value = 1 + MethodOptions_IDEMPOTENT_enum_value = 2 +) + +// Names for google.protobuf.UninterpretedOption. +const ( + UninterpretedOption_message_name protoreflect.Name = "UninterpretedOption" + UninterpretedOption_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption" +) + +// Field names for google.protobuf.UninterpretedOption. +const ( + UninterpretedOption_Name_field_name protoreflect.Name = "name" + UninterpretedOption_IdentifierValue_field_name protoreflect.Name = "identifier_value" + UninterpretedOption_PositiveIntValue_field_name protoreflect.Name = "positive_int_value" + UninterpretedOption_NegativeIntValue_field_name protoreflect.Name = "negative_int_value" + UninterpretedOption_DoubleValue_field_name protoreflect.Name = "double_value" + UninterpretedOption_StringValue_field_name protoreflect.Name = "string_value" + UninterpretedOption_AggregateValue_field_name protoreflect.Name = "aggregate_value" + + UninterpretedOption_Name_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.name" + UninterpretedOption_IdentifierValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.identifier_value" + UninterpretedOption_PositiveIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.positive_int_value" + UninterpretedOption_NegativeIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.negative_int_value" + UninterpretedOption_DoubleValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.double_value" + UninterpretedOption_StringValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.string_value" + UninterpretedOption_AggregateValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.aggregate_value" +) + +// Field numbers for google.protobuf.UninterpretedOption. +const ( + UninterpretedOption_Name_field_number protoreflect.FieldNumber = 2 + UninterpretedOption_IdentifierValue_field_number protoreflect.FieldNumber = 3 + UninterpretedOption_PositiveIntValue_field_number protoreflect.FieldNumber = 4 + UninterpretedOption_NegativeIntValue_field_number protoreflect.FieldNumber = 5 + UninterpretedOption_DoubleValue_field_number protoreflect.FieldNumber = 6 + UninterpretedOption_StringValue_field_number protoreflect.FieldNumber = 7 + UninterpretedOption_AggregateValue_field_number protoreflect.FieldNumber = 8 +) + +// Names for google.protobuf.UninterpretedOption.NamePart. +const ( + UninterpretedOption_NamePart_message_name protoreflect.Name = "NamePart" + UninterpretedOption_NamePart_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart" +) + +// Field names for google.protobuf.UninterpretedOption.NamePart. +const ( + UninterpretedOption_NamePart_NamePart_field_name protoreflect.Name = "name_part" + UninterpretedOption_NamePart_IsExtension_field_name protoreflect.Name = "is_extension" + + UninterpretedOption_NamePart_NamePart_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.name_part" + UninterpretedOption_NamePart_IsExtension_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.is_extension" +) + +// Field numbers for google.protobuf.UninterpretedOption.NamePart. +const ( + UninterpretedOption_NamePart_NamePart_field_number protoreflect.FieldNumber = 1 + UninterpretedOption_NamePart_IsExtension_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.FeatureSet. +const ( + FeatureSet_message_name protoreflect.Name = "FeatureSet" + FeatureSet_message_fullname protoreflect.FullName = "google.protobuf.FeatureSet" +) + +// Field names for google.protobuf.FeatureSet. +const ( + FeatureSet_FieldPresence_field_name protoreflect.Name = "field_presence" + FeatureSet_EnumType_field_name protoreflect.Name = "enum_type" + FeatureSet_RepeatedFieldEncoding_field_name protoreflect.Name = "repeated_field_encoding" + FeatureSet_Utf8Validation_field_name protoreflect.Name = "utf8_validation" + FeatureSet_MessageEncoding_field_name protoreflect.Name = "message_encoding" + FeatureSet_JsonFormat_field_name protoreflect.Name = "json_format" + + FeatureSet_FieldPresence_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.field_presence" + FeatureSet_EnumType_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.enum_type" + FeatureSet_RepeatedFieldEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.repeated_field_encoding" + FeatureSet_Utf8Validation_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.utf8_validation" + FeatureSet_MessageEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.message_encoding" + FeatureSet_JsonFormat_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.json_format" +) + +// Field numbers for google.protobuf.FeatureSet. +const ( + FeatureSet_FieldPresence_field_number protoreflect.FieldNumber = 1 + FeatureSet_EnumType_field_number protoreflect.FieldNumber = 2 + FeatureSet_RepeatedFieldEncoding_field_number protoreflect.FieldNumber = 3 + FeatureSet_Utf8Validation_field_number protoreflect.FieldNumber = 4 + FeatureSet_MessageEncoding_field_number protoreflect.FieldNumber = 5 + FeatureSet_JsonFormat_field_number protoreflect.FieldNumber = 6 +) + +// Full and short names for google.protobuf.FeatureSet.FieldPresence. +const ( + FeatureSet_FieldPresence_enum_fullname = "google.protobuf.FeatureSet.FieldPresence" + FeatureSet_FieldPresence_enum_name = "FieldPresence" +) + +// Enum values for google.protobuf.FeatureSet.FieldPresence. +const ( + FeatureSet_FIELD_PRESENCE_UNKNOWN_enum_value = 0 + FeatureSet_EXPLICIT_enum_value = 1 + FeatureSet_IMPLICIT_enum_value = 2 + FeatureSet_LEGACY_REQUIRED_enum_value = 3 +) + +// Full and short names for google.protobuf.FeatureSet.EnumType. +const ( + FeatureSet_EnumType_enum_fullname = "google.protobuf.FeatureSet.EnumType" + FeatureSet_EnumType_enum_name = "EnumType" +) + +// Enum values for google.protobuf.FeatureSet.EnumType. +const ( + FeatureSet_ENUM_TYPE_UNKNOWN_enum_value = 0 + FeatureSet_OPEN_enum_value = 1 + FeatureSet_CLOSED_enum_value = 2 +) + +// Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding. +const ( + FeatureSet_RepeatedFieldEncoding_enum_fullname = "google.protobuf.FeatureSet.RepeatedFieldEncoding" + FeatureSet_RepeatedFieldEncoding_enum_name = "RepeatedFieldEncoding" +) + +// Enum values for google.protobuf.FeatureSet.RepeatedFieldEncoding. +const ( + FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN_enum_value = 0 + FeatureSet_PACKED_enum_value = 1 + FeatureSet_EXPANDED_enum_value = 2 +) + +// Full and short names for google.protobuf.FeatureSet.Utf8Validation. +const ( + FeatureSet_Utf8Validation_enum_fullname = "google.protobuf.FeatureSet.Utf8Validation" + FeatureSet_Utf8Validation_enum_name = "Utf8Validation" +) + +// Enum values for google.protobuf.FeatureSet.Utf8Validation. +const ( + FeatureSet_UTF8_VALIDATION_UNKNOWN_enum_value = 0 + FeatureSet_VERIFY_enum_value = 2 + FeatureSet_NONE_enum_value = 3 +) + +// Full and short names for google.protobuf.FeatureSet.MessageEncoding. +const ( + FeatureSet_MessageEncoding_enum_fullname = "google.protobuf.FeatureSet.MessageEncoding" + FeatureSet_MessageEncoding_enum_name = "MessageEncoding" +) + +// Enum values for google.protobuf.FeatureSet.MessageEncoding. +const ( + FeatureSet_MESSAGE_ENCODING_UNKNOWN_enum_value = 0 + FeatureSet_LENGTH_PREFIXED_enum_value = 1 + FeatureSet_DELIMITED_enum_value = 2 +) + +// Full and short names for google.protobuf.FeatureSet.JsonFormat. +const ( + FeatureSet_JsonFormat_enum_fullname = "google.protobuf.FeatureSet.JsonFormat" + FeatureSet_JsonFormat_enum_name = "JsonFormat" +) + +// Enum values for google.protobuf.FeatureSet.JsonFormat. +const ( + FeatureSet_JSON_FORMAT_UNKNOWN_enum_value = 0 + FeatureSet_ALLOW_enum_value = 1 + FeatureSet_LEGACY_BEST_EFFORT_enum_value = 2 +) + +// Names for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_message_name protoreflect.Name = "FeatureSetDefaults" + FeatureSetDefaults_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults" +) + +// Field names for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_Defaults_field_name protoreflect.Name = "defaults" + FeatureSetDefaults_MinimumEdition_field_name protoreflect.Name = "minimum_edition" + FeatureSetDefaults_MaximumEdition_field_name protoreflect.Name = "maximum_edition" + + FeatureSetDefaults_Defaults_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.defaults" + FeatureSetDefaults_MinimumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.minimum_edition" + FeatureSetDefaults_MaximumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.maximum_edition" +) + +// Field numbers for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_Defaults_field_number protoreflect.FieldNumber = 1 + FeatureSetDefaults_MinimumEdition_field_number protoreflect.FieldNumber = 4 + FeatureSetDefaults_MaximumEdition_field_number protoreflect.FieldNumber = 5 +) + +// Names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_message_name protoreflect.Name = "FeatureSetEditionDefault" + FeatureSetDefaults_FeatureSetEditionDefault_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault" +) + +// Field names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name protoreflect.Name = "edition" + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_name protoreflect.Name = "overridable_features" + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_name protoreflect.Name = "fixed_features" + + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition" + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features" + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features" +) + +// Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number protoreflect.FieldNumber = 3 + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number protoreflect.FieldNumber = 4 + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number protoreflect.FieldNumber = 5 +) + +// Names for google.protobuf.SourceCodeInfo. +const ( + SourceCodeInfo_message_name protoreflect.Name = "SourceCodeInfo" + SourceCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo" +) + +// Field names for google.protobuf.SourceCodeInfo. +const ( + SourceCodeInfo_Location_field_name protoreflect.Name = "location" + + SourceCodeInfo_Location_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.location" +) + +// Field numbers for google.protobuf.SourceCodeInfo. +const ( + SourceCodeInfo_Location_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.SourceCodeInfo.Location. +const ( + SourceCodeInfo_Location_message_name protoreflect.Name = "Location" + SourceCodeInfo_Location_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location" +) + +// Field names for google.protobuf.SourceCodeInfo.Location. +const ( + SourceCodeInfo_Location_Path_field_name protoreflect.Name = "path" + SourceCodeInfo_Location_Span_field_name protoreflect.Name = "span" + SourceCodeInfo_Location_LeadingComments_field_name protoreflect.Name = "leading_comments" + SourceCodeInfo_Location_TrailingComments_field_name protoreflect.Name = "trailing_comments" + SourceCodeInfo_Location_LeadingDetachedComments_field_name protoreflect.Name = "leading_detached_comments" + + SourceCodeInfo_Location_Path_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.path" + SourceCodeInfo_Location_Span_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.span" + SourceCodeInfo_Location_LeadingComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_comments" + SourceCodeInfo_Location_TrailingComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.trailing_comments" + SourceCodeInfo_Location_LeadingDetachedComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_detached_comments" +) + +// Field numbers for google.protobuf.SourceCodeInfo.Location. +const ( + SourceCodeInfo_Location_Path_field_number protoreflect.FieldNumber = 1 + SourceCodeInfo_Location_Span_field_number protoreflect.FieldNumber = 2 + SourceCodeInfo_Location_LeadingComments_field_number protoreflect.FieldNumber = 3 + SourceCodeInfo_Location_TrailingComments_field_number protoreflect.FieldNumber = 4 + SourceCodeInfo_Location_LeadingDetachedComments_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.GeneratedCodeInfo. +const ( + GeneratedCodeInfo_message_name protoreflect.Name = "GeneratedCodeInfo" + GeneratedCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo" +) + +// Field names for google.protobuf.GeneratedCodeInfo. +const ( + GeneratedCodeInfo_Annotation_field_name protoreflect.Name = "annotation" + + GeneratedCodeInfo_Annotation_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.annotation" +) + +// Field numbers for google.protobuf.GeneratedCodeInfo. +const ( + GeneratedCodeInfo_Annotation_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.GeneratedCodeInfo.Annotation. +const ( + GeneratedCodeInfo_Annotation_message_name protoreflect.Name = "Annotation" + GeneratedCodeInfo_Annotation_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation" +) + +// Field names for google.protobuf.GeneratedCodeInfo.Annotation. +const ( + GeneratedCodeInfo_Annotation_Path_field_name protoreflect.Name = "path" + GeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = "source_file" + GeneratedCodeInfo_Annotation_Begin_field_name protoreflect.Name = "begin" + GeneratedCodeInfo_Annotation_End_field_name protoreflect.Name = "end" + GeneratedCodeInfo_Annotation_Semantic_field_name protoreflect.Name = "semantic" + + GeneratedCodeInfo_Annotation_Path_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.path" + GeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.source_file" + GeneratedCodeInfo_Annotation_Begin_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.begin" + GeneratedCodeInfo_Annotation_End_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.end" + GeneratedCodeInfo_Annotation_Semantic_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.semantic" +) + +// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation. +const ( + GeneratedCodeInfo_Annotation_Path_field_number protoreflect.FieldNumber = 1 + GeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2 + GeneratedCodeInfo_Annotation_Begin_field_number protoreflect.FieldNumber = 3 + GeneratedCodeInfo_Annotation_End_field_number protoreflect.FieldNumber = 4 + GeneratedCodeInfo_Annotation_Semantic_field_number protoreflect.FieldNumber = 5 +) + +// Full and short names for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. +const ( + GeneratedCodeInfo_Annotation_Semantic_enum_fullname = "google.protobuf.GeneratedCodeInfo.Annotation.Semantic" + GeneratedCodeInfo_Annotation_Semantic_enum_name = "Semantic" +) + +// Enum values for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. +const ( + GeneratedCodeInfo_Annotation_NONE_enum_value = 0 + GeneratedCodeInfo_Annotation_SET_enum_value = 1 + GeneratedCodeInfo_Annotation_ALIAS_enum_value = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go new file mode 100644 index 0000000..45ccd01 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/doc.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package genid contains constants for declarations in descriptor.proto +// and the well-known types. +package genid + +import protoreflect "google.golang.org/protobuf/reflect/protoreflect" + +const GoogleProtobuf_package protoreflect.FullName = "google.protobuf" diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go new file mode 100644 index 0000000..b070ef4 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_duration_proto = "google/protobuf/duration.proto" + +// Names for google.protobuf.Duration. +const ( + Duration_message_name protoreflect.Name = "Duration" + Duration_message_fullname protoreflect.FullName = "google.protobuf.Duration" +) + +// Field names for google.protobuf.Duration. +const ( + Duration_Seconds_field_name protoreflect.Name = "seconds" + Duration_Nanos_field_name protoreflect.Name = "nanos" + + Duration_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Duration.seconds" + Duration_Nanos_field_fullname protoreflect.FullName = "google.protobuf.Duration.nanos" +) + +// Field numbers for google.protobuf.Duration. +const ( + Duration_Seconds_field_number protoreflect.FieldNumber = 1 + Duration_Nanos_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go new file mode 100644 index 0000000..762abb3 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go @@ -0,0 +1,19 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_empty_proto = "google/protobuf/empty.proto" + +// Names for google.protobuf.Empty. +const ( + Empty_message_name protoreflect.Name = "Empty" + Empty_message_fullname protoreflect.FullName = "google.protobuf.Empty" +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go new file mode 100644 index 0000000..70bed45 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_field_mask_proto = "google/protobuf/field_mask.proto" + +// Names for google.protobuf.FieldMask. +const ( + FieldMask_message_name protoreflect.Name = "FieldMask" + FieldMask_message_fullname protoreflect.FullName = "google.protobuf.FieldMask" +) + +// Field names for google.protobuf.FieldMask. +const ( + FieldMask_Paths_field_name protoreflect.Name = "paths" + + FieldMask_Paths_field_fullname protoreflect.FullName = "google.protobuf.FieldMask.paths" +) + +// Field numbers for google.protobuf.FieldMask. +const ( + FieldMask_Paths_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go new file mode 100644 index 0000000..9a652a2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_go_features_proto = "google/protobuf/go_features.proto" + +// Names for google.protobuf.GoFeatures. +const ( + GoFeatures_message_name protoreflect.Name = "GoFeatures" + GoFeatures_message_fullname protoreflect.FullName = "google.protobuf.GoFeatures" +) + +// Field names for google.protobuf.GoFeatures. +const ( + GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum" + + GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "google.protobuf.GoFeatures.legacy_unmarshal_json_enum" +) + +// Field numbers for google.protobuf.GoFeatures. +const ( + GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go new file mode 100644 index 0000000..693d2e9 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/goname.go @@ -0,0 +1,25 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package genid + +// Go names of implementation-specific struct fields in generated messages. +const ( + State_goname = "state" + + SizeCache_goname = "sizeCache" + SizeCacheA_goname = "XXX_sizecache" + + WeakFields_goname = "weakFields" + WeakFieldsA_goname = "XXX_weak" + + UnknownFields_goname = "unknownFields" + UnknownFieldsA_goname = "XXX_unrecognized" + + ExtensionFields_goname = "extensionFields" + ExtensionFieldsA_goname = "XXX_InternalExtensions" + ExtensionFieldsB_goname = "XXX_extensions" + + WeakFieldPrefix_goname = "XXX_weak_" +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go new file mode 100644 index 0000000..8f9ea02 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/map_entry.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package genid + +import protoreflect "google.golang.org/protobuf/reflect/protoreflect" + +// Generic field names and numbers for synthetic map entry messages. +const ( + MapEntry_Key_field_name protoreflect.Name = "key" + MapEntry_Value_field_name protoreflect.Name = "value" + + MapEntry_Key_field_number protoreflect.FieldNumber = 1 + MapEntry_Value_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go new file mode 100644 index 0000000..3e99ae1 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_source_context_proto = "google/protobuf/source_context.proto" + +// Names for google.protobuf.SourceContext. +const ( + SourceContext_message_name protoreflect.Name = "SourceContext" + SourceContext_message_fullname protoreflect.FullName = "google.protobuf.SourceContext" +) + +// Field names for google.protobuf.SourceContext. +const ( + SourceContext_FileName_field_name protoreflect.Name = "file_name" + + SourceContext_FileName_field_fullname protoreflect.FullName = "google.protobuf.SourceContext.file_name" +) + +// Field numbers for google.protobuf.SourceContext. +const ( + SourceContext_FileName_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go new file mode 100644 index 0000000..ad6f80c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go @@ -0,0 +1,121 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_struct_proto = "google/protobuf/struct.proto" + +// Full and short names for google.protobuf.NullValue. +const ( + NullValue_enum_fullname = "google.protobuf.NullValue" + NullValue_enum_name = "NullValue" +) + +// Enum values for google.protobuf.NullValue. +const ( + NullValue_NULL_VALUE_enum_value = 0 +) + +// Names for google.protobuf.Struct. +const ( + Struct_message_name protoreflect.Name = "Struct" + Struct_message_fullname protoreflect.FullName = "google.protobuf.Struct" +) + +// Field names for google.protobuf.Struct. +const ( + Struct_Fields_field_name protoreflect.Name = "fields" + + Struct_Fields_field_fullname protoreflect.FullName = "google.protobuf.Struct.fields" +) + +// Field numbers for google.protobuf.Struct. +const ( + Struct_Fields_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.Struct.FieldsEntry. +const ( + Struct_FieldsEntry_message_name protoreflect.Name = "FieldsEntry" + Struct_FieldsEntry_message_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry" +) + +// Field names for google.protobuf.Struct.FieldsEntry. +const ( + Struct_FieldsEntry_Key_field_name protoreflect.Name = "key" + Struct_FieldsEntry_Value_field_name protoreflect.Name = "value" + + Struct_FieldsEntry_Key_field_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.key" + Struct_FieldsEntry_Value_field_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.value" +) + +// Field numbers for google.protobuf.Struct.FieldsEntry. +const ( + Struct_FieldsEntry_Key_field_number protoreflect.FieldNumber = 1 + Struct_FieldsEntry_Value_field_number protoreflect.FieldNumber = 2 +) + +// Names for google.protobuf.Value. +const ( + Value_message_name protoreflect.Name = "Value" + Value_message_fullname protoreflect.FullName = "google.protobuf.Value" +) + +// Field names for google.protobuf.Value. +const ( + Value_NullValue_field_name protoreflect.Name = "null_value" + Value_NumberValue_field_name protoreflect.Name = "number_value" + Value_StringValue_field_name protoreflect.Name = "string_value" + Value_BoolValue_field_name protoreflect.Name = "bool_value" + Value_StructValue_field_name protoreflect.Name = "struct_value" + Value_ListValue_field_name protoreflect.Name = "list_value" + + Value_NullValue_field_fullname protoreflect.FullName = "google.protobuf.Value.null_value" + Value_NumberValue_field_fullname protoreflect.FullName = "google.protobuf.Value.number_value" + Value_StringValue_field_fullname protoreflect.FullName = "google.protobuf.Value.string_value" + Value_BoolValue_field_fullname protoreflect.FullName = "google.protobuf.Value.bool_value" + Value_StructValue_field_fullname protoreflect.FullName = "google.protobuf.Value.struct_value" + Value_ListValue_field_fullname protoreflect.FullName = "google.protobuf.Value.list_value" +) + +// Field numbers for google.protobuf.Value. +const ( + Value_NullValue_field_number protoreflect.FieldNumber = 1 + Value_NumberValue_field_number protoreflect.FieldNumber = 2 + Value_StringValue_field_number protoreflect.FieldNumber = 3 + Value_BoolValue_field_number protoreflect.FieldNumber = 4 + Value_StructValue_field_number protoreflect.FieldNumber = 5 + Value_ListValue_field_number protoreflect.FieldNumber = 6 +) + +// Oneof names for google.protobuf.Value. +const ( + Value_Kind_oneof_name protoreflect.Name = "kind" + + Value_Kind_oneof_fullname protoreflect.FullName = "google.protobuf.Value.kind" +) + +// Names for google.protobuf.ListValue. +const ( + ListValue_message_name protoreflect.Name = "ListValue" + ListValue_message_fullname protoreflect.FullName = "google.protobuf.ListValue" +) + +// Field names for google.protobuf.ListValue. +const ( + ListValue_Values_field_name protoreflect.Name = "values" + + ListValue_Values_field_fullname protoreflect.FullName = "google.protobuf.ListValue.values" +) + +// Field numbers for google.protobuf.ListValue. +const ( + ListValue_Values_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go new file mode 100644 index 0000000..f5cd563 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_timestamp_proto = "google/protobuf/timestamp.proto" + +// Names for google.protobuf.Timestamp. +const ( + Timestamp_message_name protoreflect.Name = "Timestamp" + Timestamp_message_fullname protoreflect.FullName = "google.protobuf.Timestamp" +) + +// Field names for google.protobuf.Timestamp. +const ( + Timestamp_Seconds_field_name protoreflect.Name = "seconds" + Timestamp_Nanos_field_name protoreflect.Name = "nanos" + + Timestamp_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Timestamp.seconds" + Timestamp_Nanos_field_fullname protoreflect.FullName = "google.protobuf.Timestamp.nanos" +) + +// Field numbers for google.protobuf.Timestamp. +const ( + Timestamp_Seconds_field_number protoreflect.FieldNumber = 1 + Timestamp_Nanos_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go new file mode 100644 index 0000000..49bc73e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/type_gen.go @@ -0,0 +1,228 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_type_proto = "google/protobuf/type.proto" + +// Full and short names for google.protobuf.Syntax. +const ( + Syntax_enum_fullname = "google.protobuf.Syntax" + Syntax_enum_name = "Syntax" +) + +// Enum values for google.protobuf.Syntax. +const ( + Syntax_SYNTAX_PROTO2_enum_value = 0 + Syntax_SYNTAX_PROTO3_enum_value = 1 + Syntax_SYNTAX_EDITIONS_enum_value = 2 +) + +// Names for google.protobuf.Type. +const ( + Type_message_name protoreflect.Name = "Type" + Type_message_fullname protoreflect.FullName = "google.protobuf.Type" +) + +// Field names for google.protobuf.Type. +const ( + Type_Name_field_name protoreflect.Name = "name" + Type_Fields_field_name protoreflect.Name = "fields" + Type_Oneofs_field_name protoreflect.Name = "oneofs" + Type_Options_field_name protoreflect.Name = "options" + Type_SourceContext_field_name protoreflect.Name = "source_context" + Type_Syntax_field_name protoreflect.Name = "syntax" + Type_Edition_field_name protoreflect.Name = "edition" + + Type_Name_field_fullname protoreflect.FullName = "google.protobuf.Type.name" + Type_Fields_field_fullname protoreflect.FullName = "google.protobuf.Type.fields" + Type_Oneofs_field_fullname protoreflect.FullName = "google.protobuf.Type.oneofs" + Type_Options_field_fullname protoreflect.FullName = "google.protobuf.Type.options" + Type_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Type.source_context" + Type_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Type.syntax" + Type_Edition_field_fullname protoreflect.FullName = "google.protobuf.Type.edition" +) + +// Field numbers for google.protobuf.Type. +const ( + Type_Name_field_number protoreflect.FieldNumber = 1 + Type_Fields_field_number protoreflect.FieldNumber = 2 + Type_Oneofs_field_number protoreflect.FieldNumber = 3 + Type_Options_field_number protoreflect.FieldNumber = 4 + Type_SourceContext_field_number protoreflect.FieldNumber = 5 + Type_Syntax_field_number protoreflect.FieldNumber = 6 + Type_Edition_field_number protoreflect.FieldNumber = 7 +) + +// Names for google.protobuf.Field. +const ( + Field_message_name protoreflect.Name = "Field" + Field_message_fullname protoreflect.FullName = "google.protobuf.Field" +) + +// Field names for google.protobuf.Field. +const ( + Field_Kind_field_name protoreflect.Name = "kind" + Field_Cardinality_field_name protoreflect.Name = "cardinality" + Field_Number_field_name protoreflect.Name = "number" + Field_Name_field_name protoreflect.Name = "name" + Field_TypeUrl_field_name protoreflect.Name = "type_url" + Field_OneofIndex_field_name protoreflect.Name = "oneof_index" + Field_Packed_field_name protoreflect.Name = "packed" + Field_Options_field_name protoreflect.Name = "options" + Field_JsonName_field_name protoreflect.Name = "json_name" + Field_DefaultValue_field_name protoreflect.Name = "default_value" + + Field_Kind_field_fullname protoreflect.FullName = "google.protobuf.Field.kind" + Field_Cardinality_field_fullname protoreflect.FullName = "google.protobuf.Field.cardinality" + Field_Number_field_fullname protoreflect.FullName = "google.protobuf.Field.number" + Field_Name_field_fullname protoreflect.FullName = "google.protobuf.Field.name" + Field_TypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Field.type_url" + Field_OneofIndex_field_fullname protoreflect.FullName = "google.protobuf.Field.oneof_index" + Field_Packed_field_fullname protoreflect.FullName = "google.protobuf.Field.packed" + Field_Options_field_fullname protoreflect.FullName = "google.protobuf.Field.options" + Field_JsonName_field_fullname protoreflect.FullName = "google.protobuf.Field.json_name" + Field_DefaultValue_field_fullname protoreflect.FullName = "google.protobuf.Field.default_value" +) + +// Field numbers for google.protobuf.Field. +const ( + Field_Kind_field_number protoreflect.FieldNumber = 1 + Field_Cardinality_field_number protoreflect.FieldNumber = 2 + Field_Number_field_number protoreflect.FieldNumber = 3 + Field_Name_field_number protoreflect.FieldNumber = 4 + Field_TypeUrl_field_number protoreflect.FieldNumber = 6 + Field_OneofIndex_field_number protoreflect.FieldNumber = 7 + Field_Packed_field_number protoreflect.FieldNumber = 8 + Field_Options_field_number protoreflect.FieldNumber = 9 + Field_JsonName_field_number protoreflect.FieldNumber = 10 + Field_DefaultValue_field_number protoreflect.FieldNumber = 11 +) + +// Full and short names for google.protobuf.Field.Kind. +const ( + Field_Kind_enum_fullname = "google.protobuf.Field.Kind" + Field_Kind_enum_name = "Kind" +) + +// Enum values for google.protobuf.Field.Kind. +const ( + Field_TYPE_UNKNOWN_enum_value = 0 + Field_TYPE_DOUBLE_enum_value = 1 + Field_TYPE_FLOAT_enum_value = 2 + Field_TYPE_INT64_enum_value = 3 + Field_TYPE_UINT64_enum_value = 4 + Field_TYPE_INT32_enum_value = 5 + Field_TYPE_FIXED64_enum_value = 6 + Field_TYPE_FIXED32_enum_value = 7 + Field_TYPE_BOOL_enum_value = 8 + Field_TYPE_STRING_enum_value = 9 + Field_TYPE_GROUP_enum_value = 10 + Field_TYPE_MESSAGE_enum_value = 11 + Field_TYPE_BYTES_enum_value = 12 + Field_TYPE_UINT32_enum_value = 13 + Field_TYPE_ENUM_enum_value = 14 + Field_TYPE_SFIXED32_enum_value = 15 + Field_TYPE_SFIXED64_enum_value = 16 + Field_TYPE_SINT32_enum_value = 17 + Field_TYPE_SINT64_enum_value = 18 +) + +// Full and short names for google.protobuf.Field.Cardinality. +const ( + Field_Cardinality_enum_fullname = "google.protobuf.Field.Cardinality" + Field_Cardinality_enum_name = "Cardinality" +) + +// Enum values for google.protobuf.Field.Cardinality. +const ( + Field_CARDINALITY_UNKNOWN_enum_value = 0 + Field_CARDINALITY_OPTIONAL_enum_value = 1 + Field_CARDINALITY_REQUIRED_enum_value = 2 + Field_CARDINALITY_REPEATED_enum_value = 3 +) + +// Names for google.protobuf.Enum. +const ( + Enum_message_name protoreflect.Name = "Enum" + Enum_message_fullname protoreflect.FullName = "google.protobuf.Enum" +) + +// Field names for google.protobuf.Enum. +const ( + Enum_Name_field_name protoreflect.Name = "name" + Enum_Enumvalue_field_name protoreflect.Name = "enumvalue" + Enum_Options_field_name protoreflect.Name = "options" + Enum_SourceContext_field_name protoreflect.Name = "source_context" + Enum_Syntax_field_name protoreflect.Name = "syntax" + Enum_Edition_field_name protoreflect.Name = "edition" + + Enum_Name_field_fullname protoreflect.FullName = "google.protobuf.Enum.name" + Enum_Enumvalue_field_fullname protoreflect.FullName = "google.protobuf.Enum.enumvalue" + Enum_Options_field_fullname protoreflect.FullName = "google.protobuf.Enum.options" + Enum_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Enum.source_context" + Enum_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Enum.syntax" + Enum_Edition_field_fullname protoreflect.FullName = "google.protobuf.Enum.edition" +) + +// Field numbers for google.protobuf.Enum. +const ( + Enum_Name_field_number protoreflect.FieldNumber = 1 + Enum_Enumvalue_field_number protoreflect.FieldNumber = 2 + Enum_Options_field_number protoreflect.FieldNumber = 3 + Enum_SourceContext_field_number protoreflect.FieldNumber = 4 + Enum_Syntax_field_number protoreflect.FieldNumber = 5 + Enum_Edition_field_number protoreflect.FieldNumber = 6 +) + +// Names for google.protobuf.EnumValue. +const ( + EnumValue_message_name protoreflect.Name = "EnumValue" + EnumValue_message_fullname protoreflect.FullName = "google.protobuf.EnumValue" +) + +// Field names for google.protobuf.EnumValue. +const ( + EnumValue_Name_field_name protoreflect.Name = "name" + EnumValue_Number_field_name protoreflect.Name = "number" + EnumValue_Options_field_name protoreflect.Name = "options" + + EnumValue_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.name" + EnumValue_Number_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.number" + EnumValue_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.options" +) + +// Field numbers for google.protobuf.EnumValue. +const ( + EnumValue_Name_field_number protoreflect.FieldNumber = 1 + EnumValue_Number_field_number protoreflect.FieldNumber = 2 + EnumValue_Options_field_number protoreflect.FieldNumber = 3 +) + +// Names for google.protobuf.Option. +const ( + Option_message_name protoreflect.Name = "Option" + Option_message_fullname protoreflect.FullName = "google.protobuf.Option" +) + +// Field names for google.protobuf.Option. +const ( + Option_Name_field_name protoreflect.Name = "name" + Option_Value_field_name protoreflect.Name = "value" + + Option_Name_field_fullname protoreflect.FullName = "google.protobuf.Option.name" + Option_Value_field_fullname protoreflect.FullName = "google.protobuf.Option.value" +) + +// Field numbers for google.protobuf.Option. +const ( + Option_Name_field_number protoreflect.FieldNumber = 1 + Option_Value_field_number protoreflect.FieldNumber = 2 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go new file mode 100644 index 0000000..429384b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers.go @@ -0,0 +1,13 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package genid + +import protoreflect "google.golang.org/protobuf/reflect/protoreflect" + +// Generic field name and number for messages in wrappers.proto. +const ( + WrapperValue_Value_field_name protoreflect.Name = "value" + WrapperValue_Value_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go new file mode 100644 index 0000000..72527d2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go @@ -0,0 +1,175 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package genid + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" +) + +const File_google_protobuf_wrappers_proto = "google/protobuf/wrappers.proto" + +// Names for google.protobuf.DoubleValue. +const ( + DoubleValue_message_name protoreflect.Name = "DoubleValue" + DoubleValue_message_fullname protoreflect.FullName = "google.protobuf.DoubleValue" +) + +// Field names for google.protobuf.DoubleValue. +const ( + DoubleValue_Value_field_name protoreflect.Name = "value" + + DoubleValue_Value_field_fullname protoreflect.FullName = "google.protobuf.DoubleValue.value" +) + +// Field numbers for google.protobuf.DoubleValue. +const ( + DoubleValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.FloatValue. +const ( + FloatValue_message_name protoreflect.Name = "FloatValue" + FloatValue_message_fullname protoreflect.FullName = "google.protobuf.FloatValue" +) + +// Field names for google.protobuf.FloatValue. +const ( + FloatValue_Value_field_name protoreflect.Name = "value" + + FloatValue_Value_field_fullname protoreflect.FullName = "google.protobuf.FloatValue.value" +) + +// Field numbers for google.protobuf.FloatValue. +const ( + FloatValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.Int64Value. +const ( + Int64Value_message_name protoreflect.Name = "Int64Value" + Int64Value_message_fullname protoreflect.FullName = "google.protobuf.Int64Value" +) + +// Field names for google.protobuf.Int64Value. +const ( + Int64Value_Value_field_name protoreflect.Name = "value" + + Int64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int64Value.value" +) + +// Field numbers for google.protobuf.Int64Value. +const ( + Int64Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.UInt64Value. +const ( + UInt64Value_message_name protoreflect.Name = "UInt64Value" + UInt64Value_message_fullname protoreflect.FullName = "google.protobuf.UInt64Value" +) + +// Field names for google.protobuf.UInt64Value. +const ( + UInt64Value_Value_field_name protoreflect.Name = "value" + + UInt64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt64Value.value" +) + +// Field numbers for google.protobuf.UInt64Value. +const ( + UInt64Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.Int32Value. +const ( + Int32Value_message_name protoreflect.Name = "Int32Value" + Int32Value_message_fullname protoreflect.FullName = "google.protobuf.Int32Value" +) + +// Field names for google.protobuf.Int32Value. +const ( + Int32Value_Value_field_name protoreflect.Name = "value" + + Int32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int32Value.value" +) + +// Field numbers for google.protobuf.Int32Value. +const ( + Int32Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.UInt32Value. +const ( + UInt32Value_message_name protoreflect.Name = "UInt32Value" + UInt32Value_message_fullname protoreflect.FullName = "google.protobuf.UInt32Value" +) + +// Field names for google.protobuf.UInt32Value. +const ( + UInt32Value_Value_field_name protoreflect.Name = "value" + + UInt32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt32Value.value" +) + +// Field numbers for google.protobuf.UInt32Value. +const ( + UInt32Value_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.BoolValue. +const ( + BoolValue_message_name protoreflect.Name = "BoolValue" + BoolValue_message_fullname protoreflect.FullName = "google.protobuf.BoolValue" +) + +// Field names for google.protobuf.BoolValue. +const ( + BoolValue_Value_field_name protoreflect.Name = "value" + + BoolValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BoolValue.value" +) + +// Field numbers for google.protobuf.BoolValue. +const ( + BoolValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.StringValue. +const ( + StringValue_message_name protoreflect.Name = "StringValue" + StringValue_message_fullname protoreflect.FullName = "google.protobuf.StringValue" +) + +// Field names for google.protobuf.StringValue. +const ( + StringValue_Value_field_name protoreflect.Name = "value" + + StringValue_Value_field_fullname protoreflect.FullName = "google.protobuf.StringValue.value" +) + +// Field numbers for google.protobuf.StringValue. +const ( + StringValue_Value_field_number protoreflect.FieldNumber = 1 +) + +// Names for google.protobuf.BytesValue. +const ( + BytesValue_message_name protoreflect.Name = "BytesValue" + BytesValue_message_fullname protoreflect.FullName = "google.protobuf.BytesValue" +) + +// Field names for google.protobuf.BytesValue. +const ( + BytesValue_Value_field_name protoreflect.Name = "value" + + BytesValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BytesValue.value" +) + +// Field numbers for google.protobuf.BytesValue. +const ( + BytesValue_Value_field_number protoreflect.FieldNumber = 1 +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go new file mode 100644 index 0000000..5d5771c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/api_export.go @@ -0,0 +1,177 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strconv" + + "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// Export is a zero-length named type that exists only to export a set of +// functions that we do not want to appear in godoc. +type Export struct{} + +// NewError formats a string according to the format specifier and arguments and +// returns an error that has a "proto" prefix. +func (Export) NewError(f string, x ...any) error { + return errors.New(f, x...) +} + +// enum is any enum type generated by protoc-gen-go +// and must be a named int32 type. +type enum = any + +// EnumOf returns the protoreflect.Enum interface over e. +// It returns nil if e is nil. +func (Export) EnumOf(e enum) protoreflect.Enum { + switch e := e.(type) { + case nil: + return nil + case protoreflect.Enum: + return e + default: + return legacyWrapEnum(reflect.ValueOf(e)) + } +} + +// EnumDescriptorOf returns the protoreflect.EnumDescriptor for e. +// It returns nil if e is nil. +func (Export) EnumDescriptorOf(e enum) protoreflect.EnumDescriptor { + switch e := e.(type) { + case nil: + return nil + case protoreflect.Enum: + return e.Descriptor() + default: + return LegacyLoadEnumDesc(reflect.TypeOf(e)) + } +} + +// EnumTypeOf returns the protoreflect.EnumType for e. +// It returns nil if e is nil. +func (Export) EnumTypeOf(e enum) protoreflect.EnumType { + switch e := e.(type) { + case nil: + return nil + case protoreflect.Enum: + return e.Type() + default: + return legacyLoadEnumType(reflect.TypeOf(e)) + } +} + +// EnumStringOf returns the enum value as a string, either as the name if +// the number is resolvable, or the number formatted as a string. +func (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNumber) string { + ev := ed.Values().ByNumber(n) + if ev != nil { + return string(ev.Name()) + } + return strconv.Itoa(int(n)) +} + +// message is any message type generated by protoc-gen-go +// and must be a pointer to a named struct type. +type message = any + +// legacyMessageWrapper wraps a v2 message as a v1 message. +type legacyMessageWrapper struct{ m protoreflect.ProtoMessage } + +func (m legacyMessageWrapper) Reset() { proto.Reset(m.m) } +func (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) } +func (m legacyMessageWrapper) ProtoMessage() {} + +// ProtoMessageV1Of converts either a v1 or v2 message to a v1 message. +// It returns nil if m is nil. +func (Export) ProtoMessageV1Of(m message) protoiface.MessageV1 { + switch mv := m.(type) { + case nil: + return nil + case protoiface.MessageV1: + return mv + case unwrapper: + return Export{}.ProtoMessageV1Of(mv.protoUnwrap()) + case protoreflect.ProtoMessage: + return legacyMessageWrapper{mv} + default: + panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) + } +} + +func (Export) protoMessageV2Of(m message) protoreflect.ProtoMessage { + switch mv := m.(type) { + case nil: + return nil + case protoreflect.ProtoMessage: + return mv + case legacyMessageWrapper: + return mv.m + case protoiface.MessageV1: + return nil + default: + panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) + } +} + +// ProtoMessageV2Of converts either a v1 or v2 message to a v2 message. +// It returns nil if m is nil. +func (Export) ProtoMessageV2Of(m message) protoreflect.ProtoMessage { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv + } + return legacyWrapMessage(reflect.ValueOf(m)).Interface() +} + +// MessageOf returns the protoreflect.Message interface over m. +// It returns nil if m is nil. +func (Export) MessageOf(m message) protoreflect.Message { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect() + } + return legacyWrapMessage(reflect.ValueOf(m)) +} + +// MessageDescriptorOf returns the protoreflect.MessageDescriptor for m. +// It returns nil if m is nil. +func (Export) MessageDescriptorOf(m message) protoreflect.MessageDescriptor { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect().Descriptor() + } + return LegacyLoadMessageDesc(reflect.TypeOf(m)) +} + +// MessageTypeOf returns the protoreflect.MessageType for m. +// It returns nil if m is nil. +func (Export) MessageTypeOf(m message) protoreflect.MessageType { + if m == nil { + return nil + } + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect().Type() + } + return legacyLoadMessageType(reflect.TypeOf(m), "") +} + +// MessageStringOf returns the message value as a string, +// which is the message serialized in the protobuf text format. +func (Export) MessageStringOf(m protoreflect.ProtoMessage) string { + return prototext.MarshalOptions{Multiline: false}.Format(m) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go new file mode 100644 index 0000000..f29e6a8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/checkinit.go @@ -0,0 +1,141 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "sync" + + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +func (mi *MessageInfo) checkInitialized(in protoiface.CheckInitializedInput) (protoiface.CheckInitializedOutput, error) { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + return protoiface.CheckInitializedOutput{}, mi.checkInitializedPointer(p) +} + +func (mi *MessageInfo) checkInitializedPointer(p pointer) error { + mi.init() + if !mi.needsInitCheck { + return nil + } + if p.IsNil() { + for _, f := range mi.orderedCoderFields { + if f.isRequired { + return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName())) + } + } + return nil + } + if mi.extensionOffset.IsValid() { + e := p.Apply(mi.extensionOffset).Extensions() + if err := mi.isInitExtensions(e); err != nil { + return err + } + } + for _, f := range mi.orderedCoderFields { + if !f.isRequired && f.funcs.isInit == nil { + continue + } + fptr := p.Apply(f.offset) + if f.isPointer && fptr.Elem().IsNil() { + if f.isRequired { + return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName())) + } + continue + } + if f.funcs.isInit == nil { + continue + } + if err := f.funcs.isInit(fptr, f); err != nil { + return err + } + } + return nil +} + +func (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error { + if ext == nil { + return nil + } + for _, x := range *ext { + ei := getExtensionFieldInfo(x.Type()) + if ei.funcs.isInit == nil || x.isUnexpandedLazy() { + continue + } + v := x.Value() + if !v.IsValid() { + continue + } + if err := ei.funcs.isInit(v); err != nil { + return err + } + } + return nil +} + +var ( + needsInitCheckMu sync.Mutex + needsInitCheckMap sync.Map +) + +// needsInitCheck reports whether a message needs to be checked for partial initialization. +// +// It returns true if the message transitively includes any required or extension fields. +func needsInitCheck(md protoreflect.MessageDescriptor) bool { + if v, ok := needsInitCheckMap.Load(md); ok { + if has, ok := v.(bool); ok { + return has + } + } + needsInitCheckMu.Lock() + defer needsInitCheckMu.Unlock() + return needsInitCheckLocked(md) +} + +func needsInitCheckLocked(md protoreflect.MessageDescriptor) (has bool) { + if v, ok := needsInitCheckMap.Load(md); ok { + // If has is true, we've previously determined that this message + // needs init checks. + // + // If has is false, we've previously determined that it can never + // be uninitialized. + // + // If has is not a bool, we've just encountered a cycle in the + // message graph. In this case, it is safe to return false: If + // the message does have required fields, we'll detect them later + // in the graph traversal. + has, ok := v.(bool) + return ok && has + } + needsInitCheckMap.Store(md, struct{}{}) // avoid cycles while descending into this message + defer func() { + needsInitCheckMap.Store(md, has) + }() + if md.RequiredNumbers().Len() > 0 { + return true + } + if md.ExtensionRanges().Len() > 0 { + return true + } + for i := 0; i < md.Fields().Len(); i++ { + fd := md.Fields().Get(i) + // Map keys are never messages, so just consider the map value. + if fd.IsMap() { + fd = fd.MapValue() + } + fmd := fd.Message() + if fmd != nil && needsInitCheckLocked(fmd) { + return true + } + } + return false +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go new file mode 100644 index 0000000..4bb0a7a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go @@ -0,0 +1,237 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "sync" + "sync/atomic" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type extensionFieldInfo struct { + wiretag uint64 + tagsize int + unmarshalNeedsValue bool + funcs valueCoderFuncs + validation validationInfo +} + +func getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo { + if xi, ok := xt.(*ExtensionInfo); ok { + xi.lazyInit() + return xi.info + } + // Ideally we'd cache the resulting *extensionFieldInfo so we don't have to + // recompute this metadata repeatedly. But without support for something like + // weak references, such a cache would pin temporary values (like dynamic + // extension types, constructed for the duration of a user request) to the + // heap forever, causing memory usage of the cache to grow unbounded. + // See discussion in https://github.com/golang/protobuf/issues/1521. + return makeExtensionFieldInfo(xt.TypeDescriptor()) +} + +func makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo { + var wiretag uint64 + if !xd.IsPacked() { + wiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()]) + } else { + wiretag = protowire.EncodeTag(xd.Number(), protowire.BytesType) + } + e := &extensionFieldInfo{ + wiretag: wiretag, + tagsize: protowire.SizeVarint(wiretag), + funcs: encoderFuncsForValue(xd), + } + // Does the unmarshal function need a value passed to it? + // This is true for composite types, where we pass in a message, list, or map to fill in, + // and for enums, where we pass in a prototype value to specify the concrete enum type. + switch xd.Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.EnumKind: + e.unmarshalNeedsValue = true + default: + if xd.Cardinality() == protoreflect.Repeated { + e.unmarshalNeedsValue = true + } + } + return e +} + +type lazyExtensionValue struct { + atomicOnce uint32 // atomically set if value is valid + mu sync.Mutex + xi *extensionFieldInfo + value protoreflect.Value + b []byte + fn func() protoreflect.Value +} + +type ExtensionField struct { + typ protoreflect.ExtensionType + + // value is either the value of GetValue, + // or a *lazyExtensionValue that then returns the value of GetValue. + value protoreflect.Value + lazy *lazyExtensionValue +} + +func (f *ExtensionField) appendLazyBytes(xt protoreflect.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) { + if f.lazy == nil { + f.lazy = &lazyExtensionValue{xi: xi} + } + f.typ = xt + f.lazy.xi = xi + f.lazy.b = protowire.AppendTag(f.lazy.b, num, wtyp) + f.lazy.b = append(f.lazy.b, b...) +} + +func (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool { + if f.typ == nil { + return true + } + if f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 { + return true + } + return false +} + +// isUnexpandedLazy returns true if the ExensionField is lazy and not +// yet expanded, which means it's present and already checked for +// initialized required fields. +func (f *ExtensionField) isUnexpandedLazy() bool { + return f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 +} + +// lazyBuffer retrieves the buffer for a lazy extension if it's not yet expanded. +// +// The returned buffer has to be kept over whatever operation we're planning, +// as re-retrieving it will fail after the message is lazily decoded. +func (f *ExtensionField) lazyBuffer() []byte { + // This function might be in the critical path, so check the atomic without + // taking a look first, then only take the lock if needed. + if !f.isUnexpandedLazy() { + return nil + } + f.lazy.mu.Lock() + defer f.lazy.mu.Unlock() + return f.lazy.b +} + +func (f *ExtensionField) lazyInit() { + f.lazy.mu.Lock() + defer f.lazy.mu.Unlock() + if atomic.LoadUint32(&f.lazy.atomicOnce) == 1 { + return + } + if f.lazy.xi != nil { + b := f.lazy.b + val := f.typ.New() + for len(b) > 0 { + var tag uint64 + if b[0] < 0x80 { + tag = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + tag, n = protowire.ConsumeVarint(b) + if n < 0 { + panic(errors.New("bad tag in lazy extension decoding")) + } + b = b[n:] + } + num := protowire.Number(tag >> 3) + wtyp := protowire.Type(tag & 7) + var out unmarshalOutput + var err error + val, out, err = f.lazy.xi.funcs.unmarshal(b, val, num, wtyp, lazyUnmarshalOptions) + if err != nil { + panic(errors.New("decode failure in lazy extension decoding: %v", err)) + } + b = b[out.n:] + } + f.lazy.value = val + } else { + f.lazy.value = f.lazy.fn() + } + f.lazy.xi = nil + f.lazy.fn = nil + f.lazy.b = nil + atomic.StoreUint32(&f.lazy.atomicOnce, 1) +} + +// Set sets the type and value of the extension field. +// This must not be called concurrently. +func (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) { + f.typ = t + f.value = v + f.lazy = nil +} + +// SetLazy sets the type and a value that is to be lazily evaluated upon first use. +// This must not be called concurrently. +func (f *ExtensionField) SetLazy(t protoreflect.ExtensionType, fn func() protoreflect.Value) { + f.typ = t + f.lazy = &lazyExtensionValue{fn: fn} +} + +// Value returns the value of the extension field. +// This may be called concurrently. +func (f *ExtensionField) Value() protoreflect.Value { + if f.lazy != nil { + if atomic.LoadUint32(&f.lazy.atomicOnce) == 0 { + f.lazyInit() + } + return f.lazy.value + } + return f.value +} + +// Type returns the type of the extension field. +// This may be called concurrently. +func (f ExtensionField) Type() protoreflect.ExtensionType { + return f.typ +} + +// IsSet returns whether the extension field is set. +// This may be called concurrently. +func (f ExtensionField) IsSet() bool { + return f.typ != nil +} + +// IsLazy reports whether a field is lazily encoded. +// It is exported for testing. +func IsLazy(m protoreflect.Message, fd protoreflect.FieldDescriptor) bool { + var mi *MessageInfo + var p pointer + switch m := m.(type) { + case *messageState: + mi = m.messageInfo() + p = m.pointer() + case *messageReflectWrapper: + mi = m.messageInfo() + p = m.pointer() + default: + return false + } + xd, ok := fd.(protoreflect.ExtensionTypeDescriptor) + if !ok { + return false + } + xt := xd.Type() + ext := mi.extensionMap(p) + if ext == nil { + return false + } + f, ok := (*ext)[int32(fd.Number())] + if !ok { + return false + } + return f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go new file mode 100644 index 0000000..78ee47e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_field.go @@ -0,0 +1,860 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "sync" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +type errInvalidUTF8 struct{} + +func (errInvalidUTF8) Error() string { return "string field contains invalid UTF-8" } +func (errInvalidUTF8) InvalidUTF8() bool { return true } +func (errInvalidUTF8) Unwrap() error { return errors.Error } + +// initOneofFieldCoders initializes the fast-path functions for the fields in a oneof. +// +// For size, marshal, and isInit operations, functions are set only on the first field +// in the oneof. The functions are called when the oneof is non-nil, and will dispatch +// to the appropriate field-specific function as necessary. +// +// The unmarshal function is set on each field individually as usual. +func (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si structInfo) { + fs := si.oneofsByName[od.Name()] + ft := fs.Type + oneofFields := make(map[reflect.Type]*coderFieldInfo) + needIsInit := false + fields := od.Fields() + for i, lim := 0, fields.Len(); i < lim; i++ { + fd := od.Fields().Get(i) + num := fd.Number() + // Make a copy of the original coderFieldInfo for use in unmarshaling. + // + // oneofFields[oneofType].funcs.marshal is the field-specific marshal function. + // + // mi.coderFields[num].marshal is set on only the first field in the oneof, + // and dispatches to the field-specific marshaler in oneofFields. + cf := *mi.coderFields[num] + ot := si.oneofWrappersByNumber[num] + cf.ft = ot.Field(0).Type + cf.mi, cf.funcs = fieldCoder(fd, cf.ft) + oneofFields[ot] = &cf + if cf.funcs.isInit != nil { + needIsInit = true + } + mi.coderFields[num].funcs.unmarshal = func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + var vw reflect.Value // pointer to wrapper type + vi := p.AsValueOf(ft).Elem() // oneof field value of interface kind + if !vi.IsNil() && !vi.Elem().IsNil() && vi.Elem().Elem().Type() == ot { + vw = vi.Elem() + } else { + vw = reflect.New(ot) + } + out, err := cf.funcs.unmarshal(b, pointerOfValue(vw).Apply(zeroOffset), wtyp, &cf, opts) + if err != nil { + return out, err + } + vi.Set(vw) + return out, nil + } + } + getInfo := func(p pointer) (pointer, *coderFieldInfo) { + v := p.AsValueOf(ft).Elem() + if v.IsNil() { + return pointer{}, nil + } + v = v.Elem() // interface -> *struct + if v.IsNil() { + return pointer{}, nil + } + return pointerOfValue(v).Apply(zeroOffset), oneofFields[v.Elem().Type()] + } + first := mi.coderFields[od.Fields().Get(0).Number()] + first.funcs.size = func(p pointer, _ *coderFieldInfo, opts marshalOptions) int { + p, info := getInfo(p) + if info == nil || info.funcs.size == nil { + return 0 + } + return info.funcs.size(p, info, opts) + } + first.funcs.marshal = func(b []byte, p pointer, _ *coderFieldInfo, opts marshalOptions) ([]byte, error) { + p, info := getInfo(p) + if info == nil || info.funcs.marshal == nil { + return b, nil + } + return info.funcs.marshal(b, p, info, opts) + } + first.funcs.merge = func(dst, src pointer, _ *coderFieldInfo, opts mergeOptions) { + srcp, srcinfo := getInfo(src) + if srcinfo == nil || srcinfo.funcs.merge == nil { + return + } + dstp, dstinfo := getInfo(dst) + if dstinfo != srcinfo { + dst.AsValueOf(ft).Elem().Set(reflect.New(src.AsValueOf(ft).Elem().Elem().Elem().Type())) + dstp = pointerOfValue(dst.AsValueOf(ft).Elem().Elem()).Apply(zeroOffset) + } + srcinfo.funcs.merge(dstp, srcp, srcinfo, opts) + } + if needIsInit { + first.funcs.isInit = func(p pointer, _ *coderFieldInfo) error { + p, info := getInfo(p) + if info == nil || info.funcs.isInit == nil { + return nil + } + return info.funcs.isInit(p, info) + } + } +} + +func makeWeakMessageFieldCoder(fd protoreflect.FieldDescriptor) pointerCoderFuncs { + var once sync.Once + var messageType protoreflect.MessageType + lazyInit := func() { + once.Do(func() { + messageName := fd.Message().FullName() + messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) + }) + } + + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + m, ok := p.WeakFields().get(f.num) + if !ok { + return 0 + } + lazyInit() + if messageType == nil { + panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) + } + return sizeMessage(m, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + m, ok := p.WeakFields().get(f.num) + if !ok { + return b, nil + } + lazyInit() + if messageType == nil { + panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) + } + return appendMessage(b, m, f.wiretag, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + fs := p.WeakFields() + m, ok := fs.get(f.num) + if !ok { + lazyInit() + if messageType == nil { + return unmarshalOutput{}, errUnknown + } + m = messageType.New().Interface() + fs.set(f.num, m) + } + return consumeMessage(b, m, wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + m, ok := p.WeakFields().get(f.num) + if !ok { + return nil + } + return proto.CheckInitialized(m) + }, + merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + sm, ok := src.WeakFields().get(f.num) + if !ok { + return + } + dm, ok := dst.WeakFields().get(f.num) + if !ok { + lazyInit() + if messageType == nil { + panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) + } + dm = messageType.New().Interface() + dst.WeakFields().set(f.num, dm) + } + opts.Merge(dm, sm) + }, + } +} + +func makeMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeMessageInfo, + marshal: appendMessageInfo, + unmarshal: consumeMessageInfo, + merge: mergeMessage, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageInfo + } + return funcs + } else { + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + m := asMessage(p.AsValueOf(ft).Elem()) + return sizeMessage(m, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + m := asMessage(p.AsValueOf(ft).Elem()) + return appendMessage(b, m, f.wiretag, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + mp := p.AsValueOf(ft).Elem() + if mp.IsNil() { + mp.Set(reflect.New(ft.Elem())) + } + return consumeMessage(b, asMessage(mp), wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + m := asMessage(p.AsValueOf(ft).Elem()) + return proto.CheckInitialized(m) + }, + merge: mergeMessage, + } + } +} + +func sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return protowire.SizeBytes(f.mi.sizePointer(p.Elem(), opts)) + f.tagsize +} + +func appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + calculatedSize := f.mi.sizePointer(p.Elem(), opts) + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts) + if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + return b, err +} + +func consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if p.Elem().IsNil() { + p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) + } + o, err := f.mi.unmarshalPointer(v, p.Elem(), 0, opts) + if err != nil { + return out, err + } + out.n = n + out.initialized = o.initialized + return out, nil +} + +func isInitMessageInfo(p pointer, f *coderFieldInfo) error { + return f.mi.checkInitializedPointer(p.Elem()) +} + +func sizeMessage(m proto.Message, tagsize int, opts marshalOptions) int { + return protowire.SizeBytes(opts.Options().Size(m)) + tagsize +} + +func appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { + mopts := opts.Options() + calculatedSize := mopts.Size(m) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := mopts.MarshalAppend(b, m) + if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + return b, err +} + +func consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: v, + Message: m.ProtoReflect(), + }) + if err != nil { + return out, err + } + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func sizeMessageValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + m := v.Message().Interface() + return sizeMessage(m, tagsize, opts) +} + +func appendMessageValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + m := v.Message().Interface() + return appendMessage(b, m, wiretag, opts) +} + +func consumeMessageValue(b []byte, v protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { + m := v.Message().Interface() + out, err := consumeMessage(b, m, wtyp, opts) + return v, out, err +} + +func isInitMessageValue(v protoreflect.Value) error { + m := v.Message().Interface() + return proto.CheckInitialized(m) +} + +var coderMessageValue = valueCoderFuncs{ + size: sizeMessageValue, + marshal: appendMessageValue, + unmarshal: consumeMessageValue, + isInit: isInitMessageValue, + merge: mergeMessageValue, +} + +func sizeGroupValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + m := v.Message().Interface() + return sizeGroup(m, tagsize, opts) +} + +func appendGroupValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + m := v.Message().Interface() + return appendGroup(b, m, wiretag, opts) +} + +func consumeGroupValue(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { + m := v.Message().Interface() + out, err := consumeGroup(b, m, num, wtyp, opts) + return v, out, err +} + +var coderGroupValue = valueCoderFuncs{ + size: sizeGroupValue, + marshal: appendGroupValue, + unmarshal: consumeGroupValue, + isInit: isInitMessageValue, + merge: mergeMessageValue, +} + +func makeGroupFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + num := fd.Number() + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeGroupType, + marshal: appendGroupType, + unmarshal: consumeGroupType, + merge: mergeMessage, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageInfo + } + return funcs + } else { + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + m := asMessage(p.AsValueOf(ft).Elem()) + return sizeGroup(m, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + m := asMessage(p.AsValueOf(ft).Elem()) + return appendGroup(b, m, f.wiretag, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + mp := p.AsValueOf(ft).Elem() + if mp.IsNil() { + mp.Set(reflect.New(ft.Elem())) + } + return consumeGroup(b, asMessage(mp), num, wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + m := asMessage(p.AsValueOf(ft).Elem()) + return proto.CheckInitialized(m) + }, + merge: mergeMessage, + } + } +} + +func sizeGroupType(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return 2*f.tagsize + f.mi.sizePointer(p.Elem(), opts) +} + +func appendGroupType(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, f.wiretag) // start group + b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts) + b = protowire.AppendVarint(b, f.wiretag+1) // end group + return b, err +} + +func consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.StartGroupType { + return out, errUnknown + } + if p.Elem().IsNil() { + p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) + } + return f.mi.unmarshalPointer(b, p.Elem(), f.num, opts) +} + +func sizeGroup(m proto.Message, tagsize int, opts marshalOptions) int { + return 2*tagsize + opts.Options().Size(m) +} + +func appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) // start group + b, err := opts.Options().MarshalAppend(b, m) + b = protowire.AppendVarint(b, wiretag+1) // end group + return b, err +} + +func consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.StartGroupType { + return out, errUnknown + } + b, n := protowire.ConsumeGroup(num, b) + if n < 0 { + return out, errDecode + } + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: b, + Message: m.ProtoReflect(), + }) + if err != nil { + return out, err + } + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func makeMessageSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeMessageSliceInfo, + marshal: appendMessageSliceInfo, + unmarshal: consumeMessageSliceInfo, + merge: mergeMessageSlice, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageSliceInfo + } + return funcs + } + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return sizeMessageSlice(p, ft, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendMessageSlice(b, p, f.wiretag, ft, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + return consumeMessageSlice(b, p, ft, wtyp, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + return isInitMessageSlice(p, ft) + }, + merge: mergeMessageSlice, + } +} + +func sizeMessageSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { + s := p.PointerSlice() + n := 0 + for _, v := range s { + n += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize + } + return n +} + +func appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.PointerSlice() + var err error + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + siz := f.mi.sizePointer(v, opts) + b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) + b, err = f.mi.marshalAppendPointer(b, v, opts) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } + } + return b, nil +} + +func consumeMessageSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + m := reflect.New(f.mi.GoReflectType.Elem()).Interface() + mp := pointerOfIface(m) + o, err := f.mi.unmarshalPointer(v, mp, 0, opts) + if err != nil { + return out, err + } + p.AppendPointerSlice(mp) + out.n = n + out.initialized = o.initialized + return out, nil +} + +func isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error { + s := p.PointerSlice() + for _, v := range s { + if err := f.mi.checkInitializedPointer(v); err != nil { + return err + } + } + return nil +} + +func sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + s := p.PointerSlice() + n := 0 + for _, v := range s { + m := asMessage(v.AsValueOf(goType.Elem())) + n += protowire.SizeBytes(mopts.Size(m)) + tagsize + } + return n +} + +func appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) { + mopts := opts.Options() + s := p.PointerSlice() + var err error + for _, v := range s { + m := asMessage(v.AsValueOf(goType.Elem())) + b = protowire.AppendVarint(b, wiretag) + siz := mopts.Size(m) + b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) + b, err = mopts.MarshalAppend(b, m) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } + } + return b, nil +} + +func consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + mp := reflect.New(goType.Elem()) + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: v, + Message: asMessage(mp).ProtoReflect(), + }) + if err != nil { + return out, err + } + p.AppendPointerSlice(pointerOfValue(mp)) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func isInitMessageSlice(p pointer, goType reflect.Type) error { + s := p.PointerSlice() + for _, v := range s { + m := asMessage(v.AsValueOf(goType.Elem())) + if err := proto.CheckInitialized(m); err != nil { + return err + } + } + return nil +} + +// Slices of messages + +func sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + list := listv.List() + n := 0 + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + n += protowire.SizeBytes(mopts.Size(m)) + tagsize + } + return n +} + +func appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + mopts := opts.Options() + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + b = protowire.AppendVarint(b, wiretag) + siz := mopts.Size(m) + b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) + var err error + b, err = mopts.MarshalAppend(b, m) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } + } + return b, nil +} + +func consumeMessageSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + m := list.NewElement() + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: v, + Message: m.Message(), + }) + if err != nil { + return protoreflect.Value{}, out, err + } + list.Append(m) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return listv, out, nil +} + +func isInitMessageSliceValue(listv protoreflect.Value) error { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + if err := proto.CheckInitialized(m); err != nil { + return err + } + } + return nil +} + +var coderMessageSliceValue = valueCoderFuncs{ + size: sizeMessageSliceValue, + marshal: appendMessageSliceValue, + unmarshal: consumeMessageSliceValue, + isInit: isInitMessageSliceValue, + merge: mergeMessageListValue, +} + +func sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + list := listv.List() + n := 0 + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + n += 2*tagsize + mopts.Size(m) + } + return n +} + +func appendGroupSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + mopts := opts.Options() + for i, llen := 0, list.Len(); i < llen; i++ { + m := list.Get(i).Message().Interface() + b = protowire.AppendVarint(b, wiretag) // start group + var err error + b, err = mopts.MarshalAppend(b, m) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, wiretag+1) // end group + } + return b, nil +} + +func consumeGroupSliceValue(b []byte, listv protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.StartGroupType { + return protoreflect.Value{}, out, errUnknown + } + b, n := protowire.ConsumeGroup(num, b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + m := list.NewElement() + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: b, + Message: m.Message(), + }) + if err != nil { + return protoreflect.Value{}, out, err + } + list.Append(m) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return listv, out, nil +} + +var coderGroupSliceValue = valueCoderFuncs{ + size: sizeGroupSliceValue, + marshal: appendGroupSliceValue, + unmarshal: consumeGroupSliceValue, + isInit: isInitMessageSliceValue, + merge: mergeMessageListValue, +} + +func makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { + num := fd.Number() + if mi := getMessageInfo(ft); mi != nil { + funcs := pointerCoderFuncs{ + size: sizeGroupSliceInfo, + marshal: appendGroupSliceInfo, + unmarshal: consumeGroupSliceInfo, + merge: mergeMessageSlice, + } + if needsInitCheck(mi.Desc) { + funcs.isInit = isInitMessageSliceInfo + } + return funcs + } + return pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return sizeGroupSlice(p, ft, f.tagsize, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendGroupSlice(b, p, f.wiretag, ft, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + return consumeGroupSlice(b, p, num, wtyp, ft, opts) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + return isInitMessageSlice(p, ft) + }, + merge: mergeMessageSlice, + } +} + +func sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, opts marshalOptions) int { + mopts := opts.Options() + s := p.PointerSlice() + n := 0 + for _, v := range s { + m := asMessage(v.AsValueOf(messageType.Elem())) + n += 2*tagsize + mopts.Size(m) + } + return n +} + +func appendGroupSlice(b []byte, p pointer, wiretag uint64, messageType reflect.Type, opts marshalOptions) ([]byte, error) { + s := p.PointerSlice() + var err error + for _, v := range s { + m := asMessage(v.AsValueOf(messageType.Elem())) + b = protowire.AppendVarint(b, wiretag) // start group + b, err = opts.Options().MarshalAppend(b, m) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, wiretag+1) // end group + } + return b, nil +} + +func consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire.Type, goType reflect.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.StartGroupType { + return out, errUnknown + } + b, n := protowire.ConsumeGroup(num, b) + if n < 0 { + return out, errDecode + } + mp := reflect.New(goType.Elem()) + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ + Buf: b, + Message: asMessage(mp).ProtoReflect(), + }) + if err != nil { + return out, err + } + p.AppendPointerSlice(pointerOfValue(mp)) + out.n = n + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 + return out, nil +} + +func sizeGroupSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { + s := p.PointerSlice() + n := 0 + for _, v := range s { + n += 2*f.tagsize + f.mi.sizePointer(v, opts) + } + return n +} + +func appendGroupSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.PointerSlice() + var err error + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) // start group + b, err = f.mi.marshalAppendPointer(b, v, opts) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, f.wiretag+1) // end group + } + return b, nil +} + +func consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + if wtyp != protowire.StartGroupType { + return unmarshalOutput{}, errUnknown + } + m := reflect.New(f.mi.GoReflectType.Elem()).Interface() + mp := pointerOfIface(m) + out, err := f.mi.unmarshalPointer(b, mp, f.num, opts) + if err != nil { + return out, err + } + p.AppendPointerSlice(mp) + return out, nil +} + +func asMessage(v reflect.Value) protoreflect.ProtoMessage { + if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { + return m + } + return legacyWrapMessage(v).Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go new file mode 100644 index 0000000..f55dc01 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go @@ -0,0 +1,5724 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package impl + +import ( + "math" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// sizeBool returns the size of wire encoding a bool pointer as a Bool. +func sizeBool(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bool() + return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) +} + +// appendBool wire encodes a bool pointer as a Bool. +func appendBool(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bool() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + return b, nil +} + +// consumeBool wire decodes a bool pointer as a Bool. +func consumeBool(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Bool() = protowire.DecodeBool(v) + out.n = n + return out, nil +} + +var coderBool = pointerCoderFuncs{ + size: sizeBool, + marshal: appendBool, + unmarshal: consumeBool, + merge: mergeBool, +} + +// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool. +// The zero value is not encoded. +func sizeBoolNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bool() + if v == false { + return 0 + } + return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) +} + +// appendBoolNoZero wire encodes a bool pointer as a Bool. +// The zero value is not encoded. +func appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bool() + if v == false { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + return b, nil +} + +var coderBoolNoZero = pointerCoderFuncs{ + size: sizeBoolNoZero, + marshal: appendBoolNoZero, + unmarshal: consumeBool, + merge: mergeBoolNoZero, +} + +// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool. +// It panics if the pointer is nil. +func sizeBoolPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.BoolPtr() + return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) +} + +// appendBoolPtr wire encodes a *bool pointer as a Bool. +// It panics if the pointer is nil. +func appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.BoolPtr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + return b, nil +} + +// consumeBoolPtr wire decodes a *bool pointer as a Bool. +func consumeBoolPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.BoolPtr() + if *vp == nil { + *vp = new(bool) + } + **vp = protowire.DecodeBool(v) + out.n = n + return out, nil +} + +var coderBoolPtr = pointerCoderFuncs{ + size: sizeBoolPtr, + marshal: appendBoolPtr, + unmarshal: consumeBoolPtr, + merge: mergeBoolPtr, +} + +// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool. +func sizeBoolSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.BoolSlice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) + } + return size +} + +// appendBoolSlice encodes a []bool pointer as a repeated Bool. +func appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BoolSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + } + return b, nil +} + +// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool. +func consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.BoolSlice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growBoolSlice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, protowire.DecodeBool(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, protowire.DecodeBool(v)) + out.n = n + return out, nil +} + +var coderBoolSlice = pointerCoderFuncs{ + size: sizeBoolSlice, + marshal: appendBoolSlice, + unmarshal: consumeBoolSlice, + merge: mergeBoolSlice, +} + +// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool. +func sizeBoolPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.BoolSlice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeBool(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool. +func appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BoolSlice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeBool(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, protowire.EncodeBool(v)) + } + return b, nil +} + +var coderBoolPackedSlice = pointerCoderFuncs{ + size: sizeBoolPackedSlice, + marshal: appendBoolPackedSlice, + unmarshal: consumeBoolSlice, + merge: mergeBoolSlice, +} + +// sizeBoolValue returns the size of wire encoding a bool value as a Bool. +func sizeBoolValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool())) +} + +// appendBoolValue encodes a bool value as a Bool. +func appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + return b, nil +} + +// consumeBoolValue decodes a bool value as a Bool. +func consumeBoolValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfBool(protowire.DecodeBool(v)), out, nil +} + +var coderBoolValue = valueCoderFuncs{ + size: sizeBoolValue, + marshal: appendBoolValue, + unmarshal: consumeBoolValue, + merge: mergeScalarValue, +} + +// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool. +func sizeBoolSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + } + return size +} + +// appendBoolSliceValue encodes a []bool value as a repeated Bool. +func appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + } + return b, nil +} + +// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool. +func consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + out.n = n + return listv, out, nil +} + +var coderBoolSliceValue = valueCoderFuncs{ + size: sizeBoolSliceValue, + marshal: appendBoolSliceValue, + unmarshal: consumeBoolSliceValue, + merge: mergeListValue, +} + +// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool. +func sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool. +func appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + } + return b, nil +} + +var coderBoolPackedSliceValue = valueCoderFuncs{ + size: sizeBoolPackedSliceValue, + marshal: appendBoolPackedSliceValue, + unmarshal: consumeBoolSliceValue, + merge: mergeListValue, +} + +// sizeEnumValue returns the size of wire encoding a value as a Enum. +func sizeEnumValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(v.Enum())) +} + +// appendEnumValue encodes a value as a Enum. +func appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Enum())) + return b, nil +} + +// consumeEnumValue decodes a value as a Enum. +func consumeEnumValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil +} + +var coderEnumValue = valueCoderFuncs{ + size: sizeEnumValue, + marshal: appendEnumValue, + unmarshal: consumeEnumValue, + merge: mergeScalarValue, +} + +// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum. +func sizeEnumSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(v.Enum())) + } + return size +} + +// appendEnumSliceValue encodes a [] value as a repeated Enum. +func appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Enum())) + } + return b, nil +} + +// consumeEnumSliceValue wire decodes a [] value as a repeated Enum. +func consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + out.n = n + return listv, out, nil +} + +var coderEnumSliceValue = valueCoderFuncs{ + size: sizeEnumSliceValue, + marshal: appendEnumSliceValue, + unmarshal: consumeEnumSliceValue, + merge: mergeListValue, +} + +// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum. +func sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Enum())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum. +func appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Enum())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(v.Enum())) + } + return b, nil +} + +var coderEnumPackedSliceValue = valueCoderFuncs{ + size: sizeEnumPackedSliceValue, + marshal: appendEnumPackedSliceValue, + unmarshal: consumeEnumSliceValue, + merge: mergeListValue, +} + +// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32. +func sizeInt32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt32 wire encodes a int32 pointer as a Int32. +func appendInt32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt32 wire decodes a int32 pointer as a Int32. +func consumeInt32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int32() = int32(v) + out.n = n + return out, nil +} + +var coderInt32 = pointerCoderFuncs{ + size: sizeInt32, + marshal: appendInt32, + unmarshal: consumeInt32, + merge: mergeInt32, +} + +// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32. +// The zero value is not encoded. +func sizeInt32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt32NoZero wire encodes a int32 pointer as a Int32. +// The zero value is not encoded. +func appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +var coderInt32NoZero = pointerCoderFuncs{ + size: sizeInt32NoZero, + marshal: appendInt32NoZero, + unmarshal: consumeInt32, + merge: mergeInt32NoZero, +} + +// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32. +// It panics if the pointer is nil. +func sizeInt32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int32Ptr() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt32Ptr wire encodes a *int32 pointer as a Int32. +// It panics if the pointer is nil. +func appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt32Ptr wire decodes a *int32 pointer as a Int32. +func consumeInt32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int32Ptr() + if *vp == nil { + *vp = new(int32) + } + **vp = int32(v) + out.n = n + return out, nil +} + +var coderInt32Ptr = pointerCoderFuncs{ + size: sizeInt32Ptr, + marshal: appendInt32Ptr, + unmarshal: consumeInt32Ptr, + merge: mergeInt32Ptr, +} + +// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32. +func sizeInt32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(uint64(v)) + } + return size +} + +// appendInt32Slice encodes a []int32 pointer as a repeated Int32. +func appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32. +func consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt32Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, int32(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int32(v)) + out.n = n + return out, nil +} + +var coderInt32Slice = pointerCoderFuncs{ + size: sizeInt32Slice, + marshal: appendInt32Slice, + unmarshal: consumeInt32Slice, + merge: mergeInt32Slice, +} + +// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32. +func sizeInt32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32. +func appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +var coderInt32PackedSlice = pointerCoderFuncs{ + size: sizeInt32PackedSlice, + marshal: appendInt32PackedSlice, + unmarshal: consumeInt32Slice, + merge: mergeInt32Slice, +} + +// sizeInt32Value returns the size of wire encoding a int32 value as a Int32. +func sizeInt32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(int32(v.Int()))) +} + +// appendInt32Value encodes a int32 value as a Int32. +func appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + return b, nil +} + +// consumeInt32Value decodes a int32 value as a Int32. +func consumeInt32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt32(int32(v)), out, nil +} + +var coderInt32Value = valueCoderFuncs{ + size: sizeInt32Value, + marshal: appendInt32Value, + unmarshal: consumeInt32Value, + merge: mergeScalarValue, +} + +// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32. +func sizeInt32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(int32(v.Int()))) + } + return size +} + +// appendInt32SliceValue encodes a []int32 value as a repeated Int32. +func appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + } + return b, nil +} + +// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32. +func consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + out.n = n + return listv, out, nil +} + +var coderInt32SliceValue = valueCoderFuncs{ + size: sizeInt32SliceValue, + marshal: appendInt32SliceValue, + unmarshal: consumeInt32SliceValue, + merge: mergeListValue, +} + +// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32. +func sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(int32(v.Int()))) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32. +func appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(int32(v.Int()))) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + } + return b, nil +} + +var coderInt32PackedSliceValue = valueCoderFuncs{ + size: sizeInt32PackedSliceValue, + marshal: appendInt32PackedSliceValue, + unmarshal: consumeInt32SliceValue, + merge: mergeListValue, +} + +// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32. +func sizeSint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) +} + +// appendSint32 wire encodes a int32 pointer as a Sint32. +func appendSint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + return b, nil +} + +// consumeSint32 wire decodes a int32 pointer as a Sint32. +func consumeSint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int32() = int32(protowire.DecodeZigZag(v & math.MaxUint32)) + out.n = n + return out, nil +} + +var coderSint32 = pointerCoderFuncs{ + size: sizeSint32, + marshal: appendSint32, + unmarshal: consumeSint32, + merge: mergeInt32, +} + +// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32. +// The zero value is not encoded. +func sizeSint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) +} + +// appendSint32NoZero wire encodes a int32 pointer as a Sint32. +// The zero value is not encoded. +func appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + return b, nil +} + +var coderSint32NoZero = pointerCoderFuncs{ + size: sizeSint32NoZero, + marshal: appendSint32NoZero, + unmarshal: consumeSint32, + merge: mergeInt32NoZero, +} + +// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32. +// It panics if the pointer is nil. +func sizeSint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int32Ptr() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) +} + +// appendSint32Ptr wire encodes a *int32 pointer as a Sint32. +// It panics if the pointer is nil. +func appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + return b, nil +} + +// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32. +func consumeSint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int32Ptr() + if *vp == nil { + *vp = new(int32) + } + **vp = int32(protowire.DecodeZigZag(v & math.MaxUint32)) + out.n = n + return out, nil +} + +var coderSint32Ptr = pointerCoderFuncs{ + size: sizeSint32Ptr, + marshal: appendSint32Ptr, + unmarshal: consumeSint32Ptr, + merge: mergeInt32Ptr, +} + +// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32. +func sizeSint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) + } + return size +} + +// appendSint32Slice encodes a []int32 pointer as a repeated Sint32. +func appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + } + return b, nil +} + +// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32. +func consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt32Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, int32(protowire.DecodeZigZag(v&math.MaxUint32))) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int32(protowire.DecodeZigZag(v&math.MaxUint32))) + out.n = n + return out, nil +} + +var coderSint32Slice = pointerCoderFuncs{ + size: sizeSint32Slice, + marshal: appendSint32Slice, + unmarshal: consumeSint32Slice, + merge: mergeInt32Slice, +} + +// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32. +func sizeSint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32. +func appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) + } + return b, nil +} + +var coderSint32PackedSlice = pointerCoderFuncs{ + size: sizeSint32PackedSlice, + marshal: appendSint32PackedSlice, + unmarshal: consumeSint32Slice, + merge: mergeInt32Slice, +} + +// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32. +func sizeSint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) +} + +// appendSint32Value encodes a int32 value as a Sint32. +func appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + return b, nil +} + +// consumeSint32Value decodes a int32 value as a Sint32. +func consumeSint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), out, nil +} + +var coderSint32Value = valueCoderFuncs{ + size: sizeSint32Value, + marshal: appendSint32Value, + unmarshal: consumeSint32Value, + merge: mergeScalarValue, +} + +// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32. +func sizeSint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return size +} + +// appendSint32SliceValue encodes a []int32 value as a repeated Sint32. +func appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return b, nil +} + +// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32. +func consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + out.n = n + return listv, out, nil +} + +var coderSint32SliceValue = valueCoderFuncs{ + size: sizeSint32SliceValue, + marshal: appendSint32SliceValue, + unmarshal: consumeSint32SliceValue, + merge: mergeListValue, +} + +// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32. +func sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32. +func appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + } + return b, nil +} + +var coderSint32PackedSliceValue = valueCoderFuncs{ + size: sizeSint32PackedSliceValue, + marshal: appendSint32PackedSliceValue, + unmarshal: consumeSint32SliceValue, + merge: mergeListValue, +} + +// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32. +func sizeUint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint32() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendUint32 wire encodes a uint32 pointer as a Uint32. +func appendUint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeUint32 wire decodes a uint32 pointer as a Uint32. +func consumeUint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Uint32() = uint32(v) + out.n = n + return out, nil +} + +var coderUint32 = pointerCoderFuncs{ + size: sizeUint32, + marshal: appendUint32, + unmarshal: consumeUint32, + merge: mergeUint32, +} + +// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32. +// The zero value is not encoded. +func sizeUint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendUint32NoZero wire encodes a uint32 pointer as a Uint32. +// The zero value is not encoded. +func appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +var coderUint32NoZero = pointerCoderFuncs{ + size: sizeUint32NoZero, + marshal: appendUint32NoZero, + unmarshal: consumeUint32, + merge: mergeUint32NoZero, +} + +// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32. +// It panics if the pointer is nil. +func sizeUint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Uint32Ptr() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32. +// It panics if the pointer is nil. +func appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32. +func consumeUint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Uint32Ptr() + if *vp == nil { + *vp = new(uint32) + } + **vp = uint32(v) + out.n = n + return out, nil +} + +var coderUint32Ptr = pointerCoderFuncs{ + size: sizeUint32Ptr, + marshal: appendUint32Ptr, + unmarshal: consumeUint32Ptr, + merge: mergeUint32Ptr, +} + +// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32. +func sizeUint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(uint64(v)) + } + return size +} + +// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32. +func appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32. +func consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growUint32Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, uint32(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, uint32(v)) + out.n = n + return out, nil +} + +var coderUint32Slice = pointerCoderFuncs{ + size: sizeUint32Slice, + marshal: appendUint32Slice, + unmarshal: consumeUint32Slice, + merge: mergeUint32Slice, +} + +// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32. +func sizeUint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32. +func appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +var coderUint32PackedSlice = pointerCoderFuncs{ + size: sizeUint32PackedSlice, + marshal: appendUint32PackedSlice, + unmarshal: consumeUint32Slice, + merge: mergeUint32Slice, +} + +// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32. +func sizeUint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(uint32(v.Uint()))) +} + +// appendUint32Value encodes a uint32 value as a Uint32. +func appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + return b, nil +} + +// consumeUint32Value decodes a uint32 value as a Uint32. +func consumeUint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint32(uint32(v)), out, nil +} + +var coderUint32Value = valueCoderFuncs{ + size: sizeUint32Value, + marshal: appendUint32Value, + unmarshal: consumeUint32Value, + merge: mergeScalarValue, +} + +// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32. +func sizeUint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(uint32(v.Uint()))) + } + return size +} + +// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32. +func appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + } + return b, nil +} + +// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32. +func consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + out.n = n + return listv, out, nil +} + +var coderUint32SliceValue = valueCoderFuncs{ + size: sizeUint32SliceValue, + marshal: appendUint32SliceValue, + unmarshal: consumeUint32SliceValue, + merge: mergeListValue, +} + +// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32. +func sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(uint32(v.Uint()))) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32. +func appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(uint32(v.Uint()))) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + } + return b, nil +} + +var coderUint32PackedSliceValue = valueCoderFuncs{ + size: sizeUint32PackedSliceValue, + marshal: appendUint32PackedSliceValue, + unmarshal: consumeUint32SliceValue, + merge: mergeListValue, +} + +// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64. +func sizeInt64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt64 wire encodes a int64 pointer as a Int64. +func appendInt64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt64 wire decodes a int64 pointer as a Int64. +func consumeInt64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int64() = int64(v) + out.n = n + return out, nil +} + +var coderInt64 = pointerCoderFuncs{ + size: sizeInt64, + marshal: appendInt64, + unmarshal: consumeInt64, + merge: mergeInt64, +} + +// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64. +// The zero value is not encoded. +func sizeInt64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt64NoZero wire encodes a int64 pointer as a Int64. +// The zero value is not encoded. +func appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +var coderInt64NoZero = pointerCoderFuncs{ + size: sizeInt64NoZero, + marshal: appendInt64NoZero, + unmarshal: consumeInt64, + merge: mergeInt64NoZero, +} + +// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64. +// It panics if the pointer is nil. +func sizeInt64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int64Ptr() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +// appendInt64Ptr wire encodes a *int64 pointer as a Int64. +// It panics if the pointer is nil. +func appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +// consumeInt64Ptr wire decodes a *int64 pointer as a Int64. +func consumeInt64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int64Ptr() + if *vp == nil { + *vp = new(int64) + } + **vp = int64(v) + out.n = n + return out, nil +} + +var coderInt64Ptr = pointerCoderFuncs{ + size: sizeInt64Ptr, + marshal: appendInt64Ptr, + unmarshal: consumeInt64Ptr, + merge: mergeInt64Ptr, +} + +// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64. +func sizeInt64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(uint64(v)) + } + return size +} + +// appendInt64Slice encodes a []int64 pointer as a repeated Int64. +func appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64. +func consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt64Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, int64(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int64(v)) + out.n = n + return out, nil +} + +var coderInt64Slice = pointerCoderFuncs{ + size: sizeInt64Slice, + marshal: appendInt64Slice, + unmarshal: consumeInt64Slice, + merge: mergeInt64Slice, +} + +// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64. +func sizeInt64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64. +func appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(uint64(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, uint64(v)) + } + return b, nil +} + +var coderInt64PackedSlice = pointerCoderFuncs{ + size: sizeInt64PackedSlice, + marshal: appendInt64PackedSlice, + unmarshal: consumeInt64Slice, + merge: mergeInt64Slice, +} + +// sizeInt64Value returns the size of wire encoding a int64 value as a Int64. +func sizeInt64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(uint64(v.Int())) +} + +// appendInt64Value encodes a int64 value as a Int64. +func appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Int())) + return b, nil +} + +// consumeInt64Value decodes a int64 value as a Int64. +func consumeInt64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt64(int64(v)), out, nil +} + +var coderInt64Value = valueCoderFuncs{ + size: sizeInt64Value, + marshal: appendInt64Value, + unmarshal: consumeInt64Value, + merge: mergeScalarValue, +} + +// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64. +func sizeInt64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(uint64(v.Int())) + } + return size +} + +// appendInt64SliceValue encodes a []int64 value as a repeated Int64. +func appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, uint64(v.Int())) + } + return b, nil +} + +// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64. +func consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + out.n = n + return listv, out, nil +} + +var coderInt64SliceValue = valueCoderFuncs{ + size: sizeInt64SliceValue, + marshal: appendInt64SliceValue, + unmarshal: consumeInt64SliceValue, + merge: mergeListValue, +} + +// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64. +func sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Int())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64. +func appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(uint64(v.Int())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, uint64(v.Int())) + } + return b, nil +} + +var coderInt64PackedSliceValue = valueCoderFuncs{ + size: sizeInt64PackedSliceValue, + marshal: appendInt64PackedSliceValue, + unmarshal: consumeInt64SliceValue, + merge: mergeListValue, +} + +// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64. +func sizeSint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) +} + +// appendSint64 wire encodes a int64 pointer as a Sint64. +func appendSint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + return b, nil +} + +// consumeSint64 wire decodes a int64 pointer as a Sint64. +func consumeSint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Int64() = protowire.DecodeZigZag(v) + out.n = n + return out, nil +} + +var coderSint64 = pointerCoderFuncs{ + size: sizeSint64, + marshal: appendSint64, + unmarshal: consumeSint64, + merge: mergeInt64, +} + +// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64. +// The zero value is not encoded. +func sizeSint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) +} + +// appendSint64NoZero wire encodes a int64 pointer as a Sint64. +// The zero value is not encoded. +func appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + return b, nil +} + +var coderSint64NoZero = pointerCoderFuncs{ + size: sizeSint64NoZero, + marshal: appendSint64NoZero, + unmarshal: consumeSint64, + merge: mergeInt64NoZero, +} + +// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64. +// It panics if the pointer is nil. +func sizeSint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Int64Ptr() + return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) +} + +// appendSint64Ptr wire encodes a *int64 pointer as a Sint64. +// It panics if the pointer is nil. +func appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + return b, nil +} + +// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64. +func consumeSint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Int64Ptr() + if *vp == nil { + *vp = new(int64) + } + **vp = protowire.DecodeZigZag(v) + out.n = n + return out, nil +} + +var coderSint64Ptr = pointerCoderFuncs{ + size: sizeSint64Ptr, + marshal: appendSint64Ptr, + unmarshal: consumeSint64Ptr, + merge: mergeInt64Ptr, +} + +// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64. +func sizeSint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) + } + return size +} + +// appendSint64Slice encodes a []int64 pointer as a repeated Sint64. +func appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + } + return b, nil +} + +// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64. +func consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt64Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, protowire.DecodeZigZag(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, protowire.DecodeZigZag(v)) + out.n = n + return out, nil +} + +var coderSint64Slice = pointerCoderFuncs{ + size: sizeSint64Slice, + marshal: appendSint64Slice, + unmarshal: consumeSint64Slice, + merge: mergeInt64Slice, +} + +// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64. +func sizeSint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(v)) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64. +func appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(protowire.EncodeZigZag(v)) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) + } + return b, nil +} + +var coderSint64PackedSlice = pointerCoderFuncs{ + size: sizeSint64PackedSlice, + marshal: appendSint64PackedSlice, + unmarshal: consumeSint64Slice, + merge: mergeInt64Slice, +} + +// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64. +func sizeSint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) +} + +// appendSint64Value encodes a int64 value as a Sint64. +func appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + return b, nil +} + +// consumeSint64Value decodes a int64 value as a Sint64. +func consumeSint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), out, nil +} + +var coderSint64Value = valueCoderFuncs{ + size: sizeSint64Value, + marshal: appendSint64Value, + unmarshal: consumeSint64Value, + merge: mergeScalarValue, +} + +// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64. +func sizeSint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + } + return size +} + +// appendSint64SliceValue encodes a []int64 value as a repeated Sint64. +func appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + } + return b, nil +} + +// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64. +func consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + out.n = n + return listv, out, nil +} + +var coderSint64SliceValue = valueCoderFuncs{ + size: sizeSint64SliceValue, + marshal: appendSint64SliceValue, + unmarshal: consumeSint64SliceValue, + merge: mergeListValue, +} + +// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64. +func sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64. +func appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + } + return b, nil +} + +var coderSint64PackedSliceValue = valueCoderFuncs{ + size: sizeSint64PackedSliceValue, + marshal: appendSint64PackedSliceValue, + unmarshal: consumeSint64SliceValue, + merge: mergeListValue, +} + +// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64. +func sizeUint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint64() + return f.tagsize + protowire.SizeVarint(v) +} + +// appendUint64 wire encodes a uint64 pointer as a Uint64. +func appendUint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + return b, nil +} + +// consumeUint64 wire decodes a uint64 pointer as a Uint64. +func consumeUint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *p.Uint64() = v + out.n = n + return out, nil +} + +var coderUint64 = pointerCoderFuncs{ + size: sizeUint64, + marshal: appendUint64, + unmarshal: consumeUint64, + merge: mergeUint64, +} + +// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64. +// The zero value is not encoded. +func sizeUint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeVarint(v) +} + +// appendUint64NoZero wire encodes a uint64 pointer as a Uint64. +// The zero value is not encoded. +func appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + return b, nil +} + +var coderUint64NoZero = pointerCoderFuncs{ + size: sizeUint64NoZero, + marshal: appendUint64NoZero, + unmarshal: consumeUint64, + merge: mergeUint64NoZero, +} + +// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64. +// It panics if the pointer is nil. +func sizeUint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.Uint64Ptr() + return f.tagsize + protowire.SizeVarint(v) +} + +// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64. +// It panics if the pointer is nil. +func appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + return b, nil +} + +// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64. +func consumeUint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + vp := p.Uint64Ptr() + if *vp == nil { + *vp = new(uint64) + } + **vp = v + out.n = n + return out, nil +} + +var coderUint64Ptr = pointerCoderFuncs{ + size: sizeUint64Ptr, + marshal: appendUint64Ptr, + unmarshal: consumeUint64Ptr, + merge: mergeUint64Ptr, +} + +// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64. +func sizeUint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + for _, v := range s { + size += f.tagsize + protowire.SizeVarint(v) + } + return size +} + +// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64. +func appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, v) + } + return b, nil +} + +// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64. +func consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growUint64Slice(count) + } + s := *sp + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + s = append(s, v) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return out, errDecode + } + *sp = append(*sp, v) + out.n = n + return out, nil +} + +var coderUint64Slice = pointerCoderFuncs{ + size: sizeUint64Slice, + marshal: appendUint64Slice, + unmarshal: consumeUint64Slice, + merge: mergeUint64Slice, +} + +// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64. +func sizeUint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + if len(s) == 0 { + return 0 + } + n := 0 + for _, v := range s { + n += protowire.SizeVarint(v) + } + return f.tagsize + protowire.SizeBytes(n) +} + +// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64. +func appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for _, v := range s { + n += protowire.SizeVarint(v) + } + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendVarint(b, v) + } + return b, nil +} + +var coderUint64PackedSlice = pointerCoderFuncs{ + size: sizeUint64PackedSlice, + marshal: appendUint64PackedSlice, + unmarshal: consumeUint64Slice, + merge: mergeUint64Slice, +} + +// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64. +func sizeUint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeVarint(v.Uint()) +} + +// appendUint64Value encodes a uint64 value as a Uint64. +func appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, v.Uint()) + return b, nil +} + +// consumeUint64Value decodes a uint64 value as a Uint64. +func consumeUint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint64(v), out, nil +} + +var coderUint64Value = valueCoderFuncs{ + size: sizeUint64Value, + marshal: appendUint64Value, + unmarshal: consumeUint64Value, + merge: mergeScalarValue, +} + +// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64. +func sizeUint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeVarint(v.Uint()) + } + return size +} + +// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64. +func appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendVarint(b, v.Uint()) + } + return b, nil +} + +// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64. +func consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.VarintType { + return protoreflect.Value{}, out, errUnknown + } + var v uint64 + var n int + if len(b) >= 1 && b[0] < 0x80 { + v = uint64(b[0]) + n = 1 + } else if len(b) >= 2 && b[1] < 128 { + v = uint64(b[0]&0x7f) + uint64(b[1])<<7 + n = 2 + } else { + v, n = protowire.ConsumeVarint(b) + } + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + out.n = n + return listv, out, nil +} + +var coderUint64SliceValue = valueCoderFuncs{ + size: sizeUint64SliceValue, + marshal: appendUint64SliceValue, + unmarshal: consumeUint64SliceValue, + merge: mergeListValue, +} + +// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64. +func sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := 0 + for i, llen := 0, llen; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(v.Uint()) + } + return tagsize + protowire.SizeBytes(n) +} + +// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64. +func appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := 0 + for i := 0; i < llen; i++ { + v := list.Get(i) + n += protowire.SizeVarint(v.Uint()) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, v.Uint()) + } + return b, nil +} + +var coderUint64PackedSliceValue = valueCoderFuncs{ + size: sizeUint64PackedSliceValue, + marshal: appendUint64PackedSliceValue, + unmarshal: consumeUint64SliceValue, + merge: mergeListValue, +} + +// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32. +func sizeSfixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed32() +} + +// appendSfixed32 wire encodes a int32 pointer as a Sfixed32. +func appendSfixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + return b, nil +} + +// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32. +func consumeSfixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *p.Int32() = int32(v) + out.n = n + return out, nil +} + +var coderSfixed32 = pointerCoderFuncs{ + size: sizeSfixed32, + marshal: appendSfixed32, + unmarshal: consumeSfixed32, + merge: mergeInt32, +} + +// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32. +// The zero value is not encoded. +func sizeSfixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed32() +} + +// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32. +// The zero value is not encoded. +func appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + return b, nil +} + +var coderSfixed32NoZero = pointerCoderFuncs{ + size: sizeSfixed32NoZero, + marshal: appendSfixed32NoZero, + unmarshal: consumeSfixed32, + merge: mergeInt32NoZero, +} + +// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32. +// It panics if the pointer is nil. +func sizeSfixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed32() +} + +// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32. +// It panics if the pointer is nil. +func appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + return b, nil +} + +// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32. +func consumeSfixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + vp := p.Int32Ptr() + if *vp == nil { + *vp = new(int32) + } + **vp = int32(v) + out.n = n + return out, nil +} + +var coderSfixed32Ptr = pointerCoderFuncs{ + size: sizeSfixed32Ptr, + marshal: appendSfixed32Ptr, + unmarshal: consumeSfixed32Ptr, + merge: mergeInt32Ptr, +} + +// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32. +func sizeSfixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed32()) + return size +} + +// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32. +func appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, uint32(v)) + } + return b, nil +} + +// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32. +func consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growInt32Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + s = append(s, int32(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int32(v)) + out.n = n + return out, nil +} + +var coderSfixed32Slice = pointerCoderFuncs{ + size: sizeSfixed32Slice, + marshal: appendSfixed32Slice, + unmarshal: consumeSfixed32Slice, + merge: mergeInt32Slice, +} + +// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32. +func sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int32Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed32() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32. +func appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed32(b, uint32(v)) + } + return b, nil +} + +var coderSfixed32PackedSlice = pointerCoderFuncs{ + size: sizeSfixed32PackedSlice, + marshal: appendSfixed32PackedSlice, + unmarshal: consumeSfixed32Slice, + merge: mergeInt32Slice, +} + +// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32. +func sizeSfixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed32() +} + +// appendSfixed32Value encodes a int32 value as a Sfixed32. +func appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Int())) + return b, nil +} + +// consumeSfixed32Value decodes a int32 value as a Sfixed32. +func consumeSfixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt32(int32(v)), out, nil +} + +var coderSfixed32Value = valueCoderFuncs{ + size: sizeSfixed32Value, + marshal: appendSfixed32Value, + unmarshal: consumeSfixed32Value, + merge: mergeScalarValue, +} + +// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32. +func sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed32()) + return size +} + +// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32. +func appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Int())) + } + return b, nil +} + +// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32. +func consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + out.n = n + return listv, out, nil +} + +var coderSfixed32SliceValue = valueCoderFuncs{ + size: sizeSfixed32SliceValue, + marshal: appendSfixed32SliceValue, + unmarshal: consumeSfixed32SliceValue, + merge: mergeListValue, +} + +// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32. +func sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed32() + return tagsize + protowire.SizeBytes(n) +} + +// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32. +func appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed32(b, uint32(v.Int())) + } + return b, nil +} + +var coderSfixed32PackedSliceValue = valueCoderFuncs{ + size: sizeSfixed32PackedSliceValue, + marshal: appendSfixed32PackedSliceValue, + unmarshal: consumeSfixed32SliceValue, + merge: mergeListValue, +} + +// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32. +func sizeFixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed32() +} + +// appendFixed32 wire encodes a uint32 pointer as a Fixed32. +func appendFixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + return b, nil +} + +// consumeFixed32 wire decodes a uint32 pointer as a Fixed32. +func consumeFixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *p.Uint32() = v + out.n = n + return out, nil +} + +var coderFixed32 = pointerCoderFuncs{ + size: sizeFixed32, + marshal: appendFixed32, + unmarshal: consumeFixed32, + merge: mergeUint32, +} + +// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32. +// The zero value is not encoded. +func sizeFixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint32() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed32() +} + +// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32. +// The zero value is not encoded. +func appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint32() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + return b, nil +} + +var coderFixed32NoZero = pointerCoderFuncs{ + size: sizeFixed32NoZero, + marshal: appendFixed32NoZero, + unmarshal: consumeFixed32, + merge: mergeUint32NoZero, +} + +// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32. +// It panics if the pointer is nil. +func sizeFixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed32() +} + +// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32. +// It panics if the pointer is nil. +func appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + return b, nil +} + +// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32. +func consumeFixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + vp := p.Uint32Ptr() + if *vp == nil { + *vp = new(uint32) + } + **vp = v + out.n = n + return out, nil +} + +var coderFixed32Ptr = pointerCoderFuncs{ + size: sizeFixed32Ptr, + marshal: appendFixed32Ptr, + unmarshal: consumeFixed32Ptr, + merge: mergeUint32Ptr, +} + +// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32. +func sizeFixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed32()) + return size +} + +// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32. +func appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, v) + } + return b, nil +} + +// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32. +func consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growUint32Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + s = append(s, v) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, v) + out.n = n + return out, nil +} + +var coderFixed32Slice = pointerCoderFuncs{ + size: sizeFixed32Slice, + marshal: appendFixed32Slice, + unmarshal: consumeFixed32Slice, + merge: mergeUint32Slice, +} + +// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32. +func sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint32Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed32() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32. +func appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed32(b, v) + } + return b, nil +} + +var coderFixed32PackedSlice = pointerCoderFuncs{ + size: sizeFixed32PackedSlice, + marshal: appendFixed32PackedSlice, + unmarshal: consumeFixed32Slice, + merge: mergeUint32Slice, +} + +// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32. +func sizeFixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed32() +} + +// appendFixed32Value encodes a uint32 value as a Fixed32. +func appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Uint())) + return b, nil +} + +// consumeFixed32Value decodes a uint32 value as a Fixed32. +func consumeFixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint32(uint32(v)), out, nil +} + +var coderFixed32Value = valueCoderFuncs{ + size: sizeFixed32Value, + marshal: appendFixed32Value, + unmarshal: consumeFixed32Value, + merge: mergeScalarValue, +} + +// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32. +func sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed32()) + return size +} + +// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32. +func appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, uint32(v.Uint())) + } + return b, nil +} + +// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32. +func consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + out.n = n + return listv, out, nil +} + +var coderFixed32SliceValue = valueCoderFuncs{ + size: sizeFixed32SliceValue, + marshal: appendFixed32SliceValue, + unmarshal: consumeFixed32SliceValue, + merge: mergeListValue, +} + +// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32. +func sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed32() + return tagsize + protowire.SizeBytes(n) +} + +// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32. +func appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed32(b, uint32(v.Uint())) + } + return b, nil +} + +var coderFixed32PackedSliceValue = valueCoderFuncs{ + size: sizeFixed32PackedSliceValue, + marshal: appendFixed32PackedSliceValue, + unmarshal: consumeFixed32SliceValue, + merge: mergeListValue, +} + +// sizeFloat returns the size of wire encoding a float32 pointer as a Float. +func sizeFloat(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed32() +} + +// appendFloat wire encodes a float32 pointer as a Float. +func appendFloat(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float32() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + return b, nil +} + +// consumeFloat wire decodes a float32 pointer as a Float. +func consumeFloat(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *p.Float32() = math.Float32frombits(v) + out.n = n + return out, nil +} + +var coderFloat = pointerCoderFuncs{ + size: sizeFloat, + marshal: appendFloat, + unmarshal: consumeFloat, + merge: mergeFloat32, +} + +// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float. +// The zero value is not encoded. +func sizeFloatNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Float32() + if v == 0 && !math.Signbit(float64(v)) { + return 0 + } + return f.tagsize + protowire.SizeFixed32() +} + +// appendFloatNoZero wire encodes a float32 pointer as a Float. +// The zero value is not encoded. +func appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float32() + if v == 0 && !math.Signbit(float64(v)) { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + return b, nil +} + +var coderFloatNoZero = pointerCoderFuncs{ + size: sizeFloatNoZero, + marshal: appendFloatNoZero, + unmarshal: consumeFloat, + merge: mergeFloat32NoZero, +} + +// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float. +// It panics if the pointer is nil. +func sizeFloatPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed32() +} + +// appendFloatPtr wire encodes a *float32 pointer as a Float. +// It panics if the pointer is nil. +func appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Float32Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + return b, nil +} + +// consumeFloatPtr wire decodes a *float32 pointer as a Float. +func consumeFloatPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + vp := p.Float32Ptr() + if *vp == nil { + *vp = new(float32) + } + **vp = math.Float32frombits(v) + out.n = n + return out, nil +} + +var coderFloatPtr = pointerCoderFuncs{ + size: sizeFloatPtr, + marshal: appendFloatPtr, + unmarshal: consumeFloatPtr, + merge: mergeFloat32Ptr, +} + +// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float. +func sizeFloatSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float32Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed32()) + return size +} + +// appendFloatSlice encodes a []float32 pointer as a repeated Float. +func appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float32Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(v)) + } + return b, nil +} + +// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float. +func consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Float32Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growFloat32Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + s = append(s, math.Float32frombits(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed32Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, math.Float32frombits(v)) + out.n = n + return out, nil +} + +var coderFloatSlice = pointerCoderFuncs{ + size: sizeFloatSlice, + marshal: appendFloatSlice, + unmarshal: consumeFloatSlice, + merge: mergeFloat32Slice, +} + +// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float. +func sizeFloatPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float32Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed32() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float. +func appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float32Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed32(b, math.Float32bits(v)) + } + return b, nil +} + +var coderFloatPackedSlice = pointerCoderFuncs{ + size: sizeFloatPackedSlice, + marshal: appendFloatPackedSlice, + unmarshal: consumeFloatSlice, + merge: mergeFloat32Slice, +} + +// sizeFloatValue returns the size of wire encoding a float32 value as a Float. +func sizeFloatValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed32() +} + +// appendFloatValue encodes a float32 value as a Float. +func appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + return b, nil +} + +// consumeFloatValue decodes a float32 value as a Float. +func consumeFloatValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil +} + +var coderFloatValue = valueCoderFuncs{ + size: sizeFloatValue, + marshal: appendFloatValue, + unmarshal: consumeFloatValue, + merge: mergeScalarValue, +} + +// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float. +func sizeFloatSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed32()) + return size +} + +// appendFloatSliceValue encodes a []float32 value as a repeated Float. +func appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + } + return b, nil +} + +// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float. +func consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed32Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + out.n = n + return listv, out, nil +} + +var coderFloatSliceValue = valueCoderFuncs{ + size: sizeFloatSliceValue, + marshal: appendFloatSliceValue, + unmarshal: consumeFloatSliceValue, + merge: mergeListValue, +} + +// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float. +func sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed32() + return tagsize + protowire.SizeBytes(n) +} + +// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float. +func appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed32() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + } + return b, nil +} + +var coderFloatPackedSliceValue = valueCoderFuncs{ + size: sizeFloatPackedSliceValue, + marshal: appendFloatPackedSliceValue, + unmarshal: consumeFloatSliceValue, + merge: mergeListValue, +} + +// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64. +func sizeSfixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed64() +} + +// appendSfixed64 wire encodes a int64 pointer as a Sfixed64. +func appendSfixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + return b, nil +} + +// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64. +func consumeSfixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *p.Int64() = int64(v) + out.n = n + return out, nil +} + +var coderSfixed64 = pointerCoderFuncs{ + size: sizeSfixed64, + marshal: appendSfixed64, + unmarshal: consumeSfixed64, + merge: mergeInt64, +} + +// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64. +// The zero value is not encoded. +func sizeSfixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Int64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed64() +} + +// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64. +// The zero value is not encoded. +func appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Int64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + return b, nil +} + +var coderSfixed64NoZero = pointerCoderFuncs{ + size: sizeSfixed64NoZero, + marshal: appendSfixed64NoZero, + unmarshal: consumeSfixed64, + merge: mergeInt64NoZero, +} + +// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64. +// It panics if the pointer is nil. +func sizeSfixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed64() +} + +// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64. +// It panics if the pointer is nil. +func appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Int64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + return b, nil +} + +// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64. +func consumeSfixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + vp := p.Int64Ptr() + if *vp == nil { + *vp = new(int64) + } + **vp = int64(v) + out.n = n + return out, nil +} + +var coderSfixed64Ptr = pointerCoderFuncs{ + size: sizeSfixed64Ptr, + marshal: appendSfixed64Ptr, + unmarshal: consumeSfixed64Ptr, + merge: mergeInt64Ptr, +} + +// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64. +func sizeSfixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed64()) + return size +} + +// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64. +func appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, uint64(v)) + } + return b, nil +} + +// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64. +func consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Int64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growInt64Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + s = append(s, int64(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, int64(v)) + out.n = n + return out, nil +} + +var coderSfixed64Slice = pointerCoderFuncs{ + size: sizeSfixed64Slice, + marshal: appendSfixed64Slice, + unmarshal: consumeSfixed64Slice, + merge: mergeInt64Slice, +} + +// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64. +func sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Int64Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed64() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64. +func appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Int64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed64(b, uint64(v)) + } + return b, nil +} + +var coderSfixed64PackedSlice = pointerCoderFuncs{ + size: sizeSfixed64PackedSlice, + marshal: appendSfixed64PackedSlice, + unmarshal: consumeSfixed64Slice, + merge: mergeInt64Slice, +} + +// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64. +func sizeSfixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed64() +} + +// appendSfixed64Value encodes a int64 value as a Sfixed64. +func appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, uint64(v.Int())) + return b, nil +} + +// consumeSfixed64Value decodes a int64 value as a Sfixed64. +func consumeSfixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfInt64(int64(v)), out, nil +} + +var coderSfixed64Value = valueCoderFuncs{ + size: sizeSfixed64Value, + marshal: appendSfixed64Value, + unmarshal: consumeSfixed64Value, + merge: mergeScalarValue, +} + +// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64. +func sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed64()) + return size +} + +// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64. +func appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, uint64(v.Int())) + } + return b, nil +} + +// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64. +func consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + out.n = n + return listv, out, nil +} + +var coderSfixed64SliceValue = valueCoderFuncs{ + size: sizeSfixed64SliceValue, + marshal: appendSfixed64SliceValue, + unmarshal: consumeSfixed64SliceValue, + merge: mergeListValue, +} + +// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64. +func sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed64() + return tagsize + protowire.SizeBytes(n) +} + +// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64. +func appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed64(b, uint64(v.Int())) + } + return b, nil +} + +var coderSfixed64PackedSliceValue = valueCoderFuncs{ + size: sizeSfixed64PackedSliceValue, + marshal: appendSfixed64PackedSliceValue, + unmarshal: consumeSfixed64SliceValue, + merge: mergeListValue, +} + +// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64. +func sizeFixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed64() +} + +// appendFixed64 wire encodes a uint64 pointer as a Fixed64. +func appendFixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + return b, nil +} + +// consumeFixed64 wire decodes a uint64 pointer as a Fixed64. +func consumeFixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *p.Uint64() = v + out.n = n + return out, nil +} + +var coderFixed64 = pointerCoderFuncs{ + size: sizeFixed64, + marshal: appendFixed64, + unmarshal: consumeFixed64, + merge: mergeUint64, +} + +// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64. +// The zero value is not encoded. +func sizeFixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Uint64() + if v == 0 { + return 0 + } + return f.tagsize + protowire.SizeFixed64() +} + +// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64. +// The zero value is not encoded. +func appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Uint64() + if v == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + return b, nil +} + +var coderFixed64NoZero = pointerCoderFuncs{ + size: sizeFixed64NoZero, + marshal: appendFixed64NoZero, + unmarshal: consumeFixed64, + merge: mergeUint64NoZero, +} + +// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64. +// It panics if the pointer is nil. +func sizeFixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed64() +} + +// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64. +// It panics if the pointer is nil. +func appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Uint64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + return b, nil +} + +// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64. +func consumeFixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + vp := p.Uint64Ptr() + if *vp == nil { + *vp = new(uint64) + } + **vp = v + out.n = n + return out, nil +} + +var coderFixed64Ptr = pointerCoderFuncs{ + size: sizeFixed64Ptr, + marshal: appendFixed64Ptr, + unmarshal: consumeFixed64Ptr, + merge: mergeUint64Ptr, +} + +// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64. +func sizeFixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed64()) + return size +} + +// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64. +func appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, v) + } + return b, nil +} + +// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64. +func consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Uint64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growUint64Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + s = append(s, v) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, v) + out.n = n + return out, nil +} + +var coderFixed64Slice = pointerCoderFuncs{ + size: sizeFixed64Slice, + marshal: appendFixed64Slice, + unmarshal: consumeFixed64Slice, + merge: mergeUint64Slice, +} + +// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64. +func sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Uint64Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed64() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64. +func appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Uint64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed64(b, v) + } + return b, nil +} + +var coderFixed64PackedSlice = pointerCoderFuncs{ + size: sizeFixed64PackedSlice, + marshal: appendFixed64PackedSlice, + unmarshal: consumeFixed64Slice, + merge: mergeUint64Slice, +} + +// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64. +func sizeFixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed64() +} + +// appendFixed64Value encodes a uint64 value as a Fixed64. +func appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, v.Uint()) + return b, nil +} + +// consumeFixed64Value decodes a uint64 value as a Fixed64. +func consumeFixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfUint64(v), out, nil +} + +var coderFixed64Value = valueCoderFuncs{ + size: sizeFixed64Value, + marshal: appendFixed64Value, + unmarshal: consumeFixed64Value, + merge: mergeScalarValue, +} + +// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64. +func sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed64()) + return size +} + +// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64. +func appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, v.Uint()) + } + return b, nil +} + +// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64. +func consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + out.n = n + return listv, out, nil +} + +var coderFixed64SliceValue = valueCoderFuncs{ + size: sizeFixed64SliceValue, + marshal: appendFixed64SliceValue, + unmarshal: consumeFixed64SliceValue, + merge: mergeListValue, +} + +// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64. +func sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed64() + return tagsize + protowire.SizeBytes(n) +} + +// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64. +func appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed64(b, v.Uint()) + } + return b, nil +} + +var coderFixed64PackedSliceValue = valueCoderFuncs{ + size: sizeFixed64PackedSliceValue, + marshal: appendFixed64PackedSliceValue, + unmarshal: consumeFixed64SliceValue, + merge: mergeListValue, +} + +// sizeDouble returns the size of wire encoding a float64 pointer as a Double. +func sizeDouble(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + + return f.tagsize + protowire.SizeFixed64() +} + +// appendDouble wire encodes a float64 pointer as a Double. +func appendDouble(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float64() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + return b, nil +} + +// consumeDouble wire decodes a float64 pointer as a Double. +func consumeDouble(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *p.Float64() = math.Float64frombits(v) + out.n = n + return out, nil +} + +var coderDouble = pointerCoderFuncs{ + size: sizeDouble, + marshal: appendDouble, + unmarshal: consumeDouble, + merge: mergeFloat64, +} + +// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double. +// The zero value is not encoded. +func sizeDoubleNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Float64() + if v == 0 && !math.Signbit(float64(v)) { + return 0 + } + return f.tagsize + protowire.SizeFixed64() +} + +// appendDoubleNoZero wire encodes a float64 pointer as a Double. +// The zero value is not encoded. +func appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Float64() + if v == 0 && !math.Signbit(float64(v)) { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + return b, nil +} + +var coderDoubleNoZero = pointerCoderFuncs{ + size: sizeDoubleNoZero, + marshal: appendDoubleNoZero, + unmarshal: consumeDouble, + merge: mergeFloat64NoZero, +} + +// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double. +// It panics if the pointer is nil. +func sizeDoublePtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return f.tagsize + protowire.SizeFixed64() +} + +// appendDoublePtr wire encodes a *float64 pointer as a Double. +// It panics if the pointer is nil. +func appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.Float64Ptr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + return b, nil +} + +// consumeDoublePtr wire decodes a *float64 pointer as a Double. +func consumeDoublePtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + vp := p.Float64Ptr() + if *vp == nil { + *vp = new(float64) + } + **vp = math.Float64frombits(v) + out.n = n + return out, nil +} + +var coderDoublePtr = pointerCoderFuncs{ + size: sizeDoublePtr, + marshal: appendDoublePtr, + unmarshal: consumeDoublePtr, + merge: mergeFloat64Ptr, +} + +// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double. +func sizeDoubleSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float64Slice() + size = len(s) * (f.tagsize + protowire.SizeFixed64()) + return size +} + +// appendDoubleSlice encodes a []float64 pointer as a repeated Double. +func appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float64Slice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v)) + } + return b, nil +} + +// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double. +func consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.Float64Slice() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growFloat64Slice(count) + } + s := *sp + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + s = append(s, math.Float64frombits(v)) + b = b[n:] + } + *sp = s + out.n = n + return out, nil + } + if wtyp != protowire.Fixed64Type { + return out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, math.Float64frombits(v)) + out.n = n + return out, nil +} + +var coderDoubleSlice = pointerCoderFuncs{ + size: sizeDoubleSlice, + marshal: appendDoubleSlice, + unmarshal: consumeDoubleSlice, + merge: mergeFloat64Slice, +} + +// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double. +func sizeDoublePackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.Float64Slice() + if len(s) == 0 { + return 0 + } + n := len(s) * protowire.SizeFixed64() + return f.tagsize + protowire.SizeBytes(n) +} + +// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double. +func appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.Float64Slice() + if len(s) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := len(s) * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for _, v := range s { + b = protowire.AppendFixed64(b, math.Float64bits(v)) + } + return b, nil +} + +var coderDoublePackedSlice = pointerCoderFuncs{ + size: sizeDoublePackedSlice, + marshal: appendDoublePackedSlice, + unmarshal: consumeDoubleSlice, + merge: mergeFloat64Slice, +} + +// sizeDoubleValue returns the size of wire encoding a float64 value as a Double. +func sizeDoubleValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeFixed64() +} + +// appendDoubleValue encodes a float64 value as a Double. +func appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + return b, nil +} + +// consumeDoubleValue decodes a float64 value as a Double. +func consumeDoubleValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil +} + +var coderDoubleValue = valueCoderFuncs{ + size: sizeDoubleValue, + marshal: appendDoubleValue, + unmarshal: consumeDoubleValue, + merge: mergeScalarValue, +} + +// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double. +func sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + size = list.Len() * (tagsize + protowire.SizeFixed64()) + return size +} + +// appendDoubleSliceValue encodes a []float64 value as a repeated Double. +func appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + } + return b, nil +} + +// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double. +func consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + b = b[n:] + } + out.n = n + return listv, out, nil + } + if wtyp != protowire.Fixed64Type { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + out.n = n + return listv, out, nil +} + +var coderDoubleSliceValue = valueCoderFuncs{ + size: sizeDoubleSliceValue, + marshal: appendDoubleSliceValue, + unmarshal: consumeDoubleSliceValue, + merge: mergeListValue, +} + +// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double. +func sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return 0 + } + n := llen * protowire.SizeFixed64() + return tagsize + protowire.SizeBytes(n) +} + +// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double. +func appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + llen := list.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, wiretag) + n := llen * protowire.SizeFixed64() + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + v := list.Get(i) + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + } + return b, nil +} + +var coderDoublePackedSliceValue = valueCoderFuncs{ + size: sizeDoublePackedSliceValue, + marshal: appendDoublePackedSliceValue, + unmarshal: consumeDoubleSliceValue, + merge: mergeListValue, +} + +// sizeString returns the size of wire encoding a string pointer as a String. +func sizeString(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.String() + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendString wire encodes a string pointer as a String. +func appendString(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + return b, nil +} + +// consumeString wire decodes a string pointer as a String. +func consumeString(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *p.String() = string(v) + out.n = n + return out, nil +} + +var coderString = pointerCoderFuncs{ + size: sizeString, + marshal: appendString, + unmarshal: consumeString, + merge: mergeString, +} + +// appendStringValidateUTF8 wire encodes a string pointer as a String. +func appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeStringValidateUTF8 wire decodes a string pointer as a String. +func consumeStringValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + *p.String() = string(v) + out.n = n + return out, nil +} + +var coderStringValidateUTF8 = pointerCoderFuncs{ + size: sizeString, + marshal: appendStringValidateUTF8, + unmarshal: consumeStringValidateUTF8, + merge: mergeString, +} + +// sizeStringNoZero returns the size of wire encoding a string pointer as a String. +// The zero value is not encoded. +func sizeStringNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.String() + if len(v) == 0 { + return 0 + } + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendStringNoZero wire encodes a string pointer as a String. +// The zero value is not encoded. +func appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + return b, nil +} + +var coderStringNoZero = pointerCoderFuncs{ + size: sizeStringNoZero, + marshal: appendStringNoZero, + unmarshal: consumeString, + merge: mergeStringNoZero, +} + +// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String. +// The zero value is not encoded. +func appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.String() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +var coderStringNoZeroValidateUTF8 = pointerCoderFuncs{ + size: sizeStringNoZero, + marshal: appendStringNoZeroValidateUTF8, + unmarshal: consumeStringValidateUTF8, + merge: mergeStringNoZero, +} + +// sizeStringPtr returns the size of wire encoding a *string pointer as a String. +// It panics if the pointer is nil. +func sizeStringPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := **p.StringPtr() + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendStringPtr wire encodes a *string pointer as a String. +// It panics if the pointer is nil. +func appendStringPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.StringPtr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + return b, nil +} + +// consumeStringPtr wire decodes a *string pointer as a String. +func consumeStringPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + vp := p.StringPtr() + if *vp == nil { + *vp = new(string) + } + **vp = string(v) + out.n = n + return out, nil +} + +var coderStringPtr = pointerCoderFuncs{ + size: sizeStringPtr, + marshal: appendStringPtr, + unmarshal: consumeStringPtr, + merge: mergeStringPtr, +} + +// appendStringPtrValidateUTF8 wire encodes a *string pointer as a String. +// It panics if the pointer is nil. +func appendStringPtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := **p.StringPtr() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeStringPtrValidateUTF8 wire decodes a *string pointer as a String. +func consumeStringPtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + vp := p.StringPtr() + if *vp == nil { + *vp = new(string) + } + **vp = string(v) + out.n = n + return out, nil +} + +var coderStringPtrValidateUTF8 = pointerCoderFuncs{ + size: sizeStringPtr, + marshal: appendStringPtrValidateUTF8, + unmarshal: consumeStringPtrValidateUTF8, + merge: mergeStringPtr, +} + +// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String. +func sizeStringSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.StringSlice() + for _, v := range s { + size += f.tagsize + protowire.SizeBytes(len(v)) + } + return size +} + +// appendStringSlice encodes a []string pointer as a repeated String. +func appendStringSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.StringSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + } + return b, nil +} + +// consumeStringSlice wire decodes a []string pointer as a repeated String. +func consumeStringSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.StringSlice() + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, string(v)) + out.n = n + return out, nil +} + +var coderStringSlice = pointerCoderFuncs{ + size: sizeStringSlice, + marshal: appendStringSlice, + unmarshal: consumeStringSlice, + merge: mergeStringSlice, +} + +// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String. +func appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.StringSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendString(b, v) + if !utf8.ValidString(v) { + return b, errInvalidUTF8{} + } + } + return b, nil +} + +// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String. +func consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + sp := p.StringSlice() + *sp = append(*sp, string(v)) + out.n = n + return out, nil +} + +var coderStringSliceValidateUTF8 = pointerCoderFuncs{ + size: sizeStringSlice, + marshal: appendStringSliceValidateUTF8, + unmarshal: consumeStringSliceValidateUTF8, + merge: mergeStringSlice, +} + +// sizeStringValue returns the size of wire encoding a string value as a String. +func sizeStringValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeBytes(len(v.String())) +} + +// appendStringValue encodes a string value as a String. +func appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendString(b, v.String()) + return b, nil +} + +// consumeStringValue decodes a string value as a String. +func consumeStringValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfString(string(v)), out, nil +} + +var coderStringValue = valueCoderFuncs{ + size: sizeStringValue, + marshal: appendStringValue, + unmarshal: consumeStringValue, + merge: mergeScalarValue, +} + +// appendStringValueValidateUTF8 encodes a string value as a String. +func appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendString(b, v.String()) + if !utf8.ValidString(v.String()) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeStringValueValidateUTF8 decodes a string value as a String. +func consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + if !utf8.Valid(v) { + return protoreflect.Value{}, out, errInvalidUTF8{} + } + out.n = n + return protoreflect.ValueOfString(string(v)), out, nil +} + +var coderStringValueValidateUTF8 = valueCoderFuncs{ + size: sizeStringValue, + marshal: appendStringValueValidateUTF8, + unmarshal: consumeStringValueValidateUTF8, + merge: mergeScalarValue, +} + +// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String. +func sizeStringSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeBytes(len(v.String())) + } + return size +} + +// appendStringSliceValue encodes a []string value as a repeated String. +func appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendString(b, v.String()) + } + return b, nil +} + +// consumeStringSliceValue wire decodes a []string value as a repeated String. +func consumeStringSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfString(string(v))) + out.n = n + return listv, out, nil +} + +var coderStringSliceValue = valueCoderFuncs{ + size: sizeStringSliceValue, + marshal: appendStringSliceValue, + unmarshal: consumeStringSliceValue, + merge: mergeListValue, +} + +// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes. +func sizeBytes(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bytes() + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendBytes wire encodes a []byte pointer as a Bytes. +func appendBytes(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + return b, nil +} + +// consumeBytes wire decodes a []byte pointer as a Bytes. +func consumeBytes(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *p.Bytes() = append(emptyBuf[:], v...) + out.n = n + return out, nil +} + +var coderBytes = pointerCoderFuncs{ + size: sizeBytes, + marshal: appendBytes, + unmarshal: consumeBytes, + merge: mergeBytes, +} + +// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes. +func appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + if !utf8.Valid(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes. +func consumeBytesValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + *p.Bytes() = append(emptyBuf[:], v...) + out.n = n + return out, nil +} + +var coderBytesValidateUTF8 = pointerCoderFuncs{ + size: sizeBytes, + marshal: appendBytesValidateUTF8, + unmarshal: consumeBytesValidateUTF8, + merge: mergeBytes, +} + +// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes. +// The zero value is not encoded. +func sizeBytesNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + v := *p.Bytes() + if len(v) == 0 { + return 0 + } + return f.tagsize + protowire.SizeBytes(len(v)) +} + +// appendBytesNoZero wire encodes a []byte pointer as a Bytes. +// The zero value is not encoded. +func appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + return b, nil +} + +// consumeBytesNoZero wire decodes a []byte pointer as a Bytes. +// The zero value is not decoded. +func consumeBytesNoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *p.Bytes() = append(([]byte)(nil), v...) + out.n = n + return out, nil +} + +var coderBytesNoZero = pointerCoderFuncs{ + size: sizeBytesNoZero, + marshal: appendBytesNoZero, + unmarshal: consumeBytesNoZero, + merge: mergeBytesNoZero, +} + +// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes. +// The zero value is not encoded. +func appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := *p.Bytes() + if len(v) == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + if !utf8.Valid(v) { + return b, errInvalidUTF8{} + } + return b, nil +} + +// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes. +func consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + *p.Bytes() = append(([]byte)(nil), v...) + out.n = n + return out, nil +} + +var coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{ + size: sizeBytesNoZero, + marshal: appendBytesNoZeroValidateUTF8, + unmarshal: consumeBytesNoZeroValidateUTF8, + merge: mergeBytesNoZero, +} + +// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes. +func sizeBytesSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := *p.BytesSlice() + for _, v := range s { + size += f.tagsize + protowire.SizeBytes(len(v)) + } + return size +} + +// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes. +func appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BytesSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + } + return b, nil +} + +// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes. +func consumeBytesSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + sp := p.BytesSlice() + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + *sp = append(*sp, append(emptyBuf[:], v...)) + out.n = n + return out, nil +} + +var coderBytesSlice = pointerCoderFuncs{ + size: sizeBytesSlice, + marshal: appendBytesSlice, + unmarshal: consumeBytesSlice, + merge: mergeBytesSlice, +} + +// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes. +func appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := *p.BytesSlice() + for _, v := range s { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendBytes(b, v) + if !utf8.Valid(v) { + return b, errInvalidUTF8{} + } + } + return b, nil +} + +// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes. +func consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + if !utf8.Valid(v) { + return out, errInvalidUTF8{} + } + sp := p.BytesSlice() + *sp = append(*sp, append(emptyBuf[:], v...)) + out.n = n + return out, nil +} + +var coderBytesSliceValidateUTF8 = pointerCoderFuncs{ + size: sizeBytesSlice, + marshal: appendBytesSliceValidateUTF8, + unmarshal: consumeBytesSliceValidateUTF8, + merge: mergeBytesSlice, +} + +// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes. +func sizeBytesValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { + return tagsize + protowire.SizeBytes(len(v.Bytes())) +} + +// appendBytesValue encodes a []byte value as a Bytes. +func appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendBytes(b, v.Bytes()) + return b, nil +} + +// consumeBytesValue decodes a []byte value as a Bytes. +func consumeBytesValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + out.n = n + return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil +} + +var coderBytesValue = valueCoderFuncs{ + size: sizeBytesValue, + marshal: appendBytesValue, + unmarshal: consumeBytesValue, + merge: mergeBytesValue, +} + +// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes. +func sizeBytesSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + size += tagsize + protowire.SizeBytes(len(v.Bytes())) + } + return size +} + +// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes. +func appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { + list := listv.List() + for i, llen := 0, list.Len(); i < llen; i++ { + v := list.Get(i) + b = protowire.AppendVarint(b, wiretag) + b = protowire.AppendBytes(b, v.Bytes()) + } + return b, nil +} + +// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes. +func consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { + list := listv.List() + if wtyp != protowire.BytesType { + return protoreflect.Value{}, out, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return protoreflect.Value{}, out, errDecode + } + list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...))) + out.n = n + return listv, out, nil +} + +var coderBytesSliceValue = valueCoderFuncs{ + size: sizeBytesSliceValue, + marshal: appendBytesSliceValue, + unmarshal: consumeBytesSliceValue, + merge: mergeBytesListValue, +} + +// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices. +var emptyBuf [0]byte + +var wireTypes = map[protoreflect.Kind]protowire.Type{ + protoreflect.BoolKind: protowire.VarintType, + protoreflect.EnumKind: protowire.VarintType, + protoreflect.Int32Kind: protowire.VarintType, + protoreflect.Sint32Kind: protowire.VarintType, + protoreflect.Uint32Kind: protowire.VarintType, + protoreflect.Int64Kind: protowire.VarintType, + protoreflect.Sint64Kind: protowire.VarintType, + protoreflect.Uint64Kind: protowire.VarintType, + protoreflect.Sfixed32Kind: protowire.Fixed32Type, + protoreflect.Fixed32Kind: protowire.Fixed32Type, + protoreflect.FloatKind: protowire.Fixed32Type, + protoreflect.Sfixed64Kind: protowire.Fixed64Type, + protoreflect.Fixed64Kind: protowire.Fixed64Type, + protoreflect.DoubleKind: protowire.Fixed64Type, + protoreflect.StringKind: protowire.BytesType, + protoreflect.BytesKind: protowire.BytesType, + protoreflect.MessageKind: protowire.BytesType, + protoreflect.GroupKind: protowire.StartGroupType, +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go new file mode 100644 index 0000000..fb35f0b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map.go @@ -0,0 +1,399 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + "sort" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type mapInfo struct { + goType reflect.Type + keyWiretag uint64 + valWiretag uint64 + keyFuncs valueCoderFuncs + valFuncs valueCoderFuncs + keyZero protoreflect.Value + keyKind protoreflect.Kind + conv *mapConverter +} + +func encoderFuncsForMap(fd protoreflect.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) { + // TODO: Consider generating specialized map coders. + keyField := fd.MapKey() + valField := fd.MapValue() + keyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()]) + valWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()]) + keyFuncs := encoderFuncsForValue(keyField) + valFuncs := encoderFuncsForValue(valField) + conv := newMapConverter(ft, fd) + + mapi := &mapInfo{ + goType: ft, + keyWiretag: keyWiretag, + valWiretag: valWiretag, + keyFuncs: keyFuncs, + valFuncs: valFuncs, + keyZero: keyField.Default(), + keyKind: keyField.Kind(), + conv: conv, + } + if valField.Kind() == protoreflect.MessageKind { + valueMessage = getMessageInfo(ft.Elem()) + } + + funcs = pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts) + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts) + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + mp := p.AsValueOf(ft) + if mp.Elem().IsNil() { + mp.Elem().Set(reflect.MakeMap(mapi.goType)) + } + if f.mi == nil { + return consumeMap(b, mp.Elem(), wtyp, mapi, f, opts) + } else { + return consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts) + } + }, + } + switch valField.Kind() { + case protoreflect.MessageKind: + funcs.merge = mergeMapOfMessage + case protoreflect.BytesKind: + funcs.merge = mergeMapOfBytes + default: + funcs.merge = mergeMap + } + if valFuncs.isInit != nil { + funcs.isInit = func(p pointer, f *coderFieldInfo) error { + return isInitMap(p.AsValueOf(ft).Elem(), mapi, f) + } + } + return valueMessage, funcs +} + +const ( + mapKeyTagSize = 1 // field 1, tag size 1. + mapValTagSize = 1 // field 2, tag size 2. +) + +func sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int { + if mapv.Len() == 0 { + return 0 + } + n := 0 + iter := mapRange(mapv) + for iter.Next() { + key := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey() + keySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) + var valSize int + value := mapi.conv.valConv.PBValueOf(iter.Value()) + if f.mi == nil { + valSize = mapi.valFuncs.size(value, mapValTagSize, opts) + } else { + p := pointerOfValue(iter.Value()) + valSize += mapValTagSize + valSize += protowire.SizeBytes(f.mi.sizePointer(p, opts)) + } + n += f.tagsize + protowire.SizeBytes(keySize+valSize) + } + return n +} + +func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + var ( + key = mapi.keyZero + val = mapi.conv.valConv.New() + ) + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return out, errDecode + } + if num > protowire.MaxValidNumber { + return out, errDecode + } + b = b[n:] + err := errUnknown + switch num { + case genid.MapEntry_Key_field_number: + var v protoreflect.Value + var o unmarshalOutput + v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) + if err != nil { + break + } + key = v + n = o.n + case genid.MapEntry_Value_field_number: + var v protoreflect.Value + var o unmarshalOutput + v, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts) + if err != nil { + break + } + val = v + n = o.n + } + if err == errUnknown { + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, errDecode + } + } else if err != nil { + return out, err + } + b = b[n:] + } + mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val)) + out.n = n + return out, nil +} + +func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.BytesType { + return out, errUnknown + } + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + var ( + key = mapi.keyZero + val = reflect.New(f.mi.GoReflectType.Elem()) + ) + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return out, errDecode + } + if num > protowire.MaxValidNumber { + return out, errDecode + } + b = b[n:] + err := errUnknown + switch num { + case 1: + var v protoreflect.Value + var o unmarshalOutput + v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) + if err != nil { + break + } + key = v + n = o.n + case 2: + if wtyp != protowire.BytesType { + break + } + var v []byte + v, n = protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + var o unmarshalOutput + o, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts) + if o.initialized { + // Consider this map item initialized so long as we see + // an initialized value. + out.initialized = true + } + } + if err == errUnknown { + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, errDecode + } + } else if err != nil { + return out, err + } + b = b[n:] + } + mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val) + out.n = n + return out, nil +} + +func appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + if f.mi == nil { + key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey() + val := mapi.conv.valConv.PBValueOf(valrv) + size := 0 + size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) + size += mapi.valFuncs.size(val, mapValTagSize, opts) + b = protowire.AppendVarint(b, uint64(size)) + before := len(b) + b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts) + if err != nil { + return nil, err + } + b, err = mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts) + if measuredSize := len(b) - before; size != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(size, measuredSize) + } + return b, err + } else { + key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey() + val := pointerOfValue(valrv) + valSize := f.mi.sizePointer(val, opts) + size := 0 + size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) + size += mapValTagSize + protowire.SizeBytes(valSize) + b = protowire.AppendVarint(b, uint64(size)) + b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts) + if err != nil { + return nil, err + } + b = protowire.AppendVarint(b, mapi.valWiretag) + b = protowire.AppendVarint(b, uint64(valSize)) + before := len(b) + b, err = f.mi.marshalAppendPointer(b, val, opts) + if measuredSize := len(b) - before; valSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(valSize, measuredSize) + } + return b, err + } +} + +func appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + if mapv.Len() == 0 { + return b, nil + } + if opts.Deterministic() { + return appendMapDeterministic(b, mapv, mapi, f, opts) + } + iter := mapRange(mapv) + for iter.Next() { + var err error + b = protowire.AppendVarint(b, f.wiretag) + b, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts) + if err != nil { + return b, err + } + } + return b, nil +} + +func appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + keys := mapv.MapKeys() + sort.Slice(keys, func(i, j int) bool { + switch keys[i].Kind() { + case reflect.Bool: + return !keys[i].Bool() && keys[j].Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return keys[i].Int() < keys[j].Int() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return keys[i].Uint() < keys[j].Uint() + case reflect.Float32, reflect.Float64: + return keys[i].Float() < keys[j].Float() + case reflect.String: + return keys[i].String() < keys[j].String() + default: + panic("invalid kind: " + keys[i].Kind().String()) + } + }) + for _, key := range keys { + var err error + b = protowire.AppendVarint(b, f.wiretag) + b, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts) + if err != nil { + return b, err + } + } + return b, nil +} + +func isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error { + if mi := f.mi; mi != nil { + mi.init() + if !mi.needsInitCheck { + return nil + } + iter := mapRange(mapv) + for iter.Next() { + val := pointerOfValue(iter.Value()) + if err := mi.checkInitializedPointer(val); err != nil { + return err + } + } + } else { + iter := mapRange(mapv) + for iter.Next() { + val := mapi.conv.valConv.PBValueOf(iter.Value()) + if err := mapi.valFuncs.isInit(val); err != nil { + return err + } + } + } + return nil +} + +func mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + dstm := dst.AsValueOf(f.ft).Elem() + srcm := src.AsValueOf(f.ft).Elem() + if srcm.Len() == 0 { + return + } + if dstm.IsNil() { + dstm.Set(reflect.MakeMap(f.ft)) + } + iter := mapRange(srcm) + for iter.Next() { + dstm.SetMapIndex(iter.Key(), iter.Value()) + } +} + +func mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + dstm := dst.AsValueOf(f.ft).Elem() + srcm := src.AsValueOf(f.ft).Elem() + if srcm.Len() == 0 { + return + } + if dstm.IsNil() { + dstm.Set(reflect.MakeMap(f.ft)) + } + iter := mapRange(srcm) + for iter.Next() { + dstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...))) + } +} + +func mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + dstm := dst.AsValueOf(f.ft).Elem() + srcm := src.AsValueOf(f.ft).Elem() + if srcm.Len() == 0 { + return + } + if dstm.IsNil() { + dstm.Set(reflect.MakeMap(f.ft)) + } + iter := mapRange(srcm) + for iter.Next() { + val := reflect.New(f.ft.Elem().Elem()) + if f.mi != nil { + f.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts) + } else { + opts.Merge(asMessage(val), asMessage(iter.Value())) + } + dstm.SetMapIndex(iter.Key(), val) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go new file mode 100644 index 0000000..4b15493 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.12 +// +build !go1.12 + +package impl + +import "reflect" + +type mapIter struct { + v reflect.Value + keys []reflect.Value +} + +// mapRange provides a less-efficient equivalent to +// the Go 1.12 reflect.Value.MapRange method. +func mapRange(v reflect.Value) *mapIter { + return &mapIter{v: v} +} + +func (i *mapIter) Next() bool { + if i.keys == nil { + i.keys = i.v.MapKeys() + } else { + i.keys = i.keys[1:] + } + return len(i.keys) > 0 +} + +func (i *mapIter) Key() reflect.Value { + return i.keys[0] +} + +func (i *mapIter) Value() reflect.Value { + return i.v.MapIndex(i.keys[0]) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go new file mode 100644 index 0000000..0b31b66 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.12 +// +build go1.12 + +package impl + +import "reflect" + +func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go new file mode 100644 index 0000000..6b2fdbb --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_message.go @@ -0,0 +1,217 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "sort" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// coderMessageInfo contains per-message information used by the fast-path functions. +// This is a different type from MessageInfo to keep MessageInfo as general-purpose as +// possible. +type coderMessageInfo struct { + methods protoiface.Methods + + orderedCoderFields []*coderFieldInfo + denseCoderFields []*coderFieldInfo + coderFields map[protowire.Number]*coderFieldInfo + sizecacheOffset offset + unknownOffset offset + unknownPtrKind bool + extensionOffset offset + needsInitCheck bool + isMessageSet bool + numRequiredFields uint8 +} + +type coderFieldInfo struct { + funcs pointerCoderFuncs // fast-path per-field functions + mi *MessageInfo // field's message + ft reflect.Type + validation validationInfo // information used by message validation + num protoreflect.FieldNumber // field number + offset offset // struct field offset + wiretag uint64 // field tag (number + wire type) + tagsize int // size of the varint-encoded tag + isPointer bool // true if IsNil may be called on the struct field + isRequired bool // true if field is required +} + +func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { + mi.sizecacheOffset = invalidOffset + mi.unknownOffset = invalidOffset + mi.extensionOffset = invalidOffset + + if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType { + mi.sizecacheOffset = si.sizecacheOffset + } + if si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) { + mi.unknownOffset = si.unknownOffset + mi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr + } + if si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType { + mi.extensionOffset = si.extensionOffset + } + + mi.coderFields = make(map[protowire.Number]*coderFieldInfo) + fields := mi.Desc.Fields() + preallocFields := make([]coderFieldInfo, fields.Len()) + for i := 0; i < fields.Len(); i++ { + fd := fields.Get(i) + + fs := si.fieldsByNumber[fd.Number()] + isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() + if isOneof { + fs = si.oneofsByName[fd.ContainingOneof().Name()] + } + ft := fs.Type + var wiretag uint64 + if !fd.IsPacked() { + wiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()]) + } else { + wiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType) + } + var fieldOffset offset + var funcs pointerCoderFuncs + var childMessage *MessageInfo + switch { + case ft == nil: + // This never occurs for generated message types. + // It implies that a hand-crafted type has missing Go fields + // for specific protobuf message fields. + funcs = pointerCoderFuncs{ + size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { + return 0 + }, + marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return nil, nil + }, + unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + isInit: func(p pointer, f *coderFieldInfo) error { + panic("missing Go struct field for " + string(fd.FullName())) + }, + merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + } + case isOneof: + fieldOffset = offsetOf(fs, mi.Exporter) + case fd.IsWeak(): + fieldOffset = si.weakOffset + funcs = makeWeakMessageFieldCoder(fd) + default: + fieldOffset = offsetOf(fs, mi.Exporter) + childMessage, funcs = fieldCoder(fd, ft) + } + cf := &preallocFields[i] + *cf = coderFieldInfo{ + num: fd.Number(), + offset: fieldOffset, + wiretag: wiretag, + ft: ft, + tagsize: protowire.SizeVarint(wiretag), + funcs: funcs, + mi: childMessage, + validation: newFieldValidationInfo(mi, si, fd, ft), + isPointer: fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(), + isRequired: fd.Cardinality() == protoreflect.Required, + } + mi.orderedCoderFields = append(mi.orderedCoderFields, cf) + mi.coderFields[cf.num] = cf + } + for i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ { + if od := oneofs.Get(i); !od.IsSynthetic() { + mi.initOneofFieldCoders(od, si) + } + } + if messageset.IsMessageSet(mi.Desc) { + if !mi.extensionOffset.IsValid() { + panic(fmt.Sprintf("%v: MessageSet with no extensions field", mi.Desc.FullName())) + } + if !mi.unknownOffset.IsValid() { + panic(fmt.Sprintf("%v: MessageSet with no unknown field", mi.Desc.FullName())) + } + mi.isMessageSet = true + } + sort.Slice(mi.orderedCoderFields, func(i, j int) bool { + return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num + }) + + var maxDense protoreflect.FieldNumber + for _, cf := range mi.orderedCoderFields { + if cf.num >= 16 && cf.num >= 2*maxDense { + break + } + maxDense = cf.num + } + mi.denseCoderFields = make([]*coderFieldInfo, maxDense+1) + for _, cf := range mi.orderedCoderFields { + if int(cf.num) >= len(mi.denseCoderFields) { + break + } + mi.denseCoderFields[cf.num] = cf + } + + // To preserve compatibility with historic wire output, marshal oneofs last. + if mi.Desc.Oneofs().Len() > 0 { + sort.Slice(mi.orderedCoderFields, func(i, j int) bool { + fi := fields.ByNumber(mi.orderedCoderFields[i].num) + fj := fields.ByNumber(mi.orderedCoderFields[j].num) + return order.LegacyFieldOrder(fi, fj) + }) + } + + mi.needsInitCheck = needsInitCheck(mi.Desc) + if mi.methods.Marshal == nil && mi.methods.Size == nil { + mi.methods.Flags |= protoiface.SupportMarshalDeterministic + mi.methods.Marshal = mi.marshal + mi.methods.Size = mi.size + } + if mi.methods.Unmarshal == nil { + mi.methods.Flags |= protoiface.SupportUnmarshalDiscardUnknown + mi.methods.Unmarshal = mi.unmarshal + } + if mi.methods.CheckInitialized == nil { + mi.methods.CheckInitialized = mi.checkInitialized + } + if mi.methods.Merge == nil { + mi.methods.Merge = mi.merge + } +} + +// getUnknownBytes returns a *[]byte for the unknown fields. +// It is the caller's responsibility to check whether the pointer is nil. +// This function is specially designed to be inlineable. +func (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte { + if mi.unknownPtrKind { + return *p.Apply(mi.unknownOffset).BytesPtr() + } else { + return p.Apply(mi.unknownOffset).Bytes() + } +} + +// mutableUnknownBytes returns a *[]byte for the unknown fields. +// The returned pointer is guaranteed to not be nil. +func (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte { + if mi.unknownPtrKind { + bp := p.Apply(mi.unknownOffset).BytesPtr() + if *bp == nil { + *bp = new([]byte) + } + return *bp + } else { + return p.Apply(mi.unknownOffset).Bytes() + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go new file mode 100644 index 0000000..7a16ec1 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go @@ -0,0 +1,145 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "sort" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" +) + +func sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) { + if !flags.ProtoLegacy { + return 0 + } + + ext := *p.Apply(mi.extensionOffset).Extensions() + for _, x := range ext { + xi := getExtensionFieldInfo(x.Type()) + if xi.funcs.size == nil { + continue + } + num, _ := protowire.DecodeTag(xi.wiretag) + size += messageset.SizeField(num) + if fullyLazyExtensions(opts) { + // Don't expand the extension, instead use the buffer to calculate size + if lb := x.lazyBuffer(); lb != nil { + // We got hold of the buffer, so it's still lazy. + // Don't count the tag size in the extension buffer, it's already added. + size += protowire.SizeTag(messageset.FieldMessage) + len(lb) - xi.tagsize + continue + } + } + size += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts) + } + + if u := mi.getUnknownBytes(p); u != nil { + size += messageset.SizeUnknown(*u) + } + + return size +} + +func marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) { + if !flags.ProtoLegacy { + return b, errors.New("no support for message_set_wire_format") + } + + ext := *p.Apply(mi.extensionOffset).Extensions() + switch len(ext) { + case 0: + case 1: + // Fast-path for one extension: Don't bother sorting the keys. + for _, x := range ext { + var err error + b, err = marshalMessageSetField(mi, b, x, opts) + if err != nil { + return b, err + } + } + default: + // Sort the keys to provide a deterministic encoding. + // Not sure this is required, but the old code does it. + keys := make([]int, 0, len(ext)) + for k := range ext { + keys = append(keys, int(k)) + } + sort.Ints(keys) + for _, k := range keys { + var err error + b, err = marshalMessageSetField(mi, b, ext[int32(k)], opts) + if err != nil { + return b, err + } + } + } + + if u := mi.getUnknownBytes(p); u != nil { + var err error + b, err = messageset.AppendUnknown(b, *u) + if err != nil { + return b, err + } + } + + return b, nil +} + +func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) { + xi := getExtensionFieldInfo(x.Type()) + num, _ := protowire.DecodeTag(xi.wiretag) + b = messageset.AppendFieldStart(b, num) + + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + // The tag inside the lazy buffer is a different tag (the extension + // number), but what we need here is the tag for FieldMessage: + b = protowire.AppendVarint(b, protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType)) + b = append(b, lb[xi.tagsize:]...) + b = messageset.AppendFieldEnd(b) + return b, nil + } + } + + b, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts) + if err != nil { + return b, err + } + b = messageset.AppendFieldEnd(b) + return b, nil +} + +func unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) { + if !flags.ProtoLegacy { + return out, errors.New("no support for message_set_wire_format") + } + + ep := p.Apply(mi.extensionOffset).Extensions() + if *ep == nil { + *ep = make(map[int32]ExtensionField) + } + ext := *ep + initialized := true + err = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error { + o, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts) + if err == errUnknown { + u := mi.mutableUnknownBytes(p) + *u = protowire.AppendTag(*u, num, protowire.BytesType) + *u = append(*u, v...) + return nil + } + if !o.initialized { + initialized = false + } + return err + }) + out.n = len(b) + out.initialized = initialized + return out, err +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go new file mode 100644 index 0000000..145c577 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go @@ -0,0 +1,210 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package impl + +import ( + "reflect" + + "google.golang.org/protobuf/encoding/protowire" +) + +func sizeEnum(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) { + v := p.v.Elem().Int() + return f.tagsize + protowire.SizeVarint(uint64(v)) +} + +func appendEnum(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + v := p.v.Elem().Int() + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(v)) + return b, nil +} + +func consumeEnum(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + p.v.Elem().SetInt(int64(v)) + out.n = n + return out, nil +} + +func mergeEnum(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + dst.v.Elem().Set(src.v.Elem()) +} + +var coderEnum = pointerCoderFuncs{ + size: sizeEnum, + marshal: appendEnum, + unmarshal: consumeEnum, + merge: mergeEnum, +} + +func sizeEnumNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + if p.v.Elem().Int() == 0 { + return 0 + } + return sizeEnum(p, f, opts) +} + +func appendEnumNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + if p.v.Elem().Int() == 0 { + return b, nil + } + return appendEnum(b, p, f, opts) +} + +func mergeEnumNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + if src.v.Elem().Int() != 0 { + dst.v.Elem().Set(src.v.Elem()) + } +} + +var coderEnumNoZero = pointerCoderFuncs{ + size: sizeEnumNoZero, + marshal: appendEnumNoZero, + unmarshal: consumeEnum, + merge: mergeEnumNoZero, +} + +func sizeEnumPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + return sizeEnum(pointer{p.v.Elem()}, f, opts) +} + +func appendEnumPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + return appendEnum(b, pointer{p.v.Elem()}, f, opts) +} + +func consumeEnumPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + if wtyp != protowire.VarintType { + return out, errUnknown + } + if p.v.Elem().IsNil() { + p.v.Elem().Set(reflect.New(p.v.Elem().Type().Elem())) + } + return consumeEnum(b, pointer{p.v.Elem()}, wtyp, f, opts) +} + +func mergeEnumPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + if !src.v.Elem().IsNil() { + v := reflect.New(dst.v.Type().Elem().Elem()) + v.Elem().Set(src.v.Elem().Elem()) + dst.v.Elem().Set(v) + } +} + +var coderEnumPtr = pointerCoderFuncs{ + size: sizeEnumPtr, + marshal: appendEnumPtr, + unmarshal: consumeEnumPtr, + merge: mergeEnumPtr, +} + +func sizeEnumSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := p.v.Elem() + for i, llen := 0, s.Len(); i < llen; i++ { + size += protowire.SizeVarint(uint64(s.Index(i).Int())) + f.tagsize + } + return size +} + +func appendEnumSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.v.Elem() + for i, llen := 0, s.Len(); i < llen; i++ { + b = protowire.AppendVarint(b, f.wiretag) + b = protowire.AppendVarint(b, uint64(s.Index(i).Int())) + } + return b, nil +} + +func consumeEnumSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { + s := p.v.Elem() + if wtyp == protowire.BytesType { + b, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, errDecode + } + for len(b) > 0 { + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + rv := reflect.New(s.Type().Elem()).Elem() + rv.SetInt(int64(v)) + s.Set(reflect.Append(s, rv)) + b = b[n:] + } + out.n = n + return out, nil + } + if wtyp != protowire.VarintType { + return out, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + rv := reflect.New(s.Type().Elem()).Elem() + rv.SetInt(int64(v)) + s.Set(reflect.Append(s, rv)) + out.n = n + return out, nil +} + +func mergeEnumSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + dst.v.Elem().Set(reflect.AppendSlice(dst.v.Elem(), src.v.Elem())) +} + +var coderEnumSlice = pointerCoderFuncs{ + size: sizeEnumSlice, + marshal: appendEnumSlice, + unmarshal: consumeEnumSlice, + merge: mergeEnumSlice, +} + +func sizeEnumPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { + s := p.v.Elem() + llen := s.Len() + if llen == 0 { + return 0 + } + n := 0 + for i := 0; i < llen; i++ { + n += protowire.SizeVarint(uint64(s.Index(i).Int())) + } + return f.tagsize + protowire.SizeBytes(n) +} + +func appendEnumPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + s := p.v.Elem() + llen := s.Len() + if llen == 0 { + return b, nil + } + b = protowire.AppendVarint(b, f.wiretag) + n := 0 + for i := 0; i < llen; i++ { + n += protowire.SizeVarint(uint64(s.Index(i).Int())) + } + b = protowire.AppendVarint(b, uint64(n)) + for i := 0; i < llen; i++ { + b = protowire.AppendVarint(b, uint64(s.Index(i).Int())) + } + return b, nil +} + +var coderEnumPackedSlice = pointerCoderFuncs{ + size: sizeEnumPackedSlice, + marshal: appendEnumPackedSlice, + unmarshal: consumeEnumSlice, + merge: mergeEnumSlice, +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go new file mode 100644 index 0000000..1307775 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go @@ -0,0 +1,557 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// pointerCoderFuncs is a set of pointer encoding functions. +type pointerCoderFuncs struct { + mi *MessageInfo + size func(p pointer, f *coderFieldInfo, opts marshalOptions) int + marshal func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) + unmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) + isInit func(p pointer, f *coderFieldInfo) error + merge func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) +} + +// valueCoderFuncs is a set of protoreflect.Value encoding functions. +type valueCoderFuncs struct { + size func(v protoreflect.Value, tagsize int, opts marshalOptions) int + marshal func(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) + unmarshal func(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) + isInit func(v protoreflect.Value) error + merge func(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value +} + +// fieldCoder returns pointer functions for a field, used for operating on +// struct fields. +func fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) { + switch { + case fd.IsMap(): + return encoderFuncsForMap(fd, ft) + case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): + // Repeated fields (not packed). + if ft.Kind() != reflect.Slice { + break + } + ft := ft.Elem() + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolSlice + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumSlice + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32Slice + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32Slice + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32Slice + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64Slice + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64Slice + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64Slice + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32Slice + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32Slice + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatSlice + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64Slice + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64Slice + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoubleSlice + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringSliceValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderStringSlice + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { + return nil, coderBytesSliceValidateUTF8 + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesSlice + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderStringSlice + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesSlice + } + case protoreflect.MessageKind: + return getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft) + case protoreflect.GroupKind: + return getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft) + } + case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): + // Packed repeated fields. + // + // Only repeated fields of primitive numeric types + // (Varint, Fixed32, or Fixed64 wire type) can be packed. + if ft.Kind() != reflect.Slice { + break + } + ft := ft.Elem() + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolPackedSlice + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumPackedSlice + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32PackedSlice + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32PackedSlice + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32PackedSlice + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64PackedSlice + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64PackedSlice + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64PackedSlice + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32PackedSlice + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32PackedSlice + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatPackedSlice + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64PackedSlice + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64PackedSlice + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoublePackedSlice + } + } + case fd.Kind() == protoreflect.MessageKind: + return getMessageInfo(ft), makeMessageFieldCoder(fd, ft) + case fd.Kind() == protoreflect.GroupKind: + return getMessageInfo(ft), makeGroupFieldCoder(fd, ft) + case !fd.HasPresence() && fd.ContainingOneof() == nil: + // Populated oneof fields always encode even if set to the zero value, + // which normally are not encoded in proto3. + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolNoZero + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumNoZero + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32NoZero + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32NoZero + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32NoZero + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64NoZero + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64NoZero + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64NoZero + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32NoZero + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32NoZero + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatNoZero + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64NoZero + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64NoZero + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoubleNoZero + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringNoZeroValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderStringNoZero + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { + return nil, coderBytesNoZeroValidateUTF8 + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesNoZero + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderStringNoZero + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytesNoZero + } + } + case ft.Kind() == reflect.Ptr: + ft := ft.Elem() + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBoolPtr + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnumPtr + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32Ptr + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32Ptr + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32Ptr + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64Ptr + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64Ptr + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64Ptr + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32Ptr + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32Ptr + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloatPtr + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64Ptr + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64Ptr + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDoublePtr + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringPtrValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderStringPtr + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderStringPtr + } + } + default: + switch fd.Kind() { + case protoreflect.BoolKind: + if ft.Kind() == reflect.Bool { + return nil, coderBool + } + case protoreflect.EnumKind: + if ft.Kind() == reflect.Int32 { + return nil, coderEnum + } + case protoreflect.Int32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderInt32 + } + case protoreflect.Sint32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSint32 + } + case protoreflect.Uint32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderUint32 + } + case protoreflect.Int64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderInt64 + } + case protoreflect.Sint64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSint64 + } + case protoreflect.Uint64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderUint64 + } + case protoreflect.Sfixed32Kind: + if ft.Kind() == reflect.Int32 { + return nil, coderSfixed32 + } + case protoreflect.Fixed32Kind: + if ft.Kind() == reflect.Uint32 { + return nil, coderFixed32 + } + case protoreflect.FloatKind: + if ft.Kind() == reflect.Float32 { + return nil, coderFloat + } + case protoreflect.Sfixed64Kind: + if ft.Kind() == reflect.Int64 { + return nil, coderSfixed64 + } + case protoreflect.Fixed64Kind: + if ft.Kind() == reflect.Uint64 { + return nil, coderFixed64 + } + case protoreflect.DoubleKind: + if ft.Kind() == reflect.Float64 { + return nil, coderDouble + } + case protoreflect.StringKind: + if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { + return nil, coderStringValidateUTF8 + } + if ft.Kind() == reflect.String { + return nil, coderString + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { + return nil, coderBytesValidateUTF8 + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytes + } + case protoreflect.BytesKind: + if ft.Kind() == reflect.String { + return nil, coderString + } + if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { + return nil, coderBytes + } + } + } + panic(fmt.Sprintf("invalid type: no encoder for %v %v %v/%v", fd.FullName(), fd.Cardinality(), fd.Kind(), ft)) +} + +// encoderFuncsForValue returns value functions for a field, used for +// extension values and map encoding. +func encoderFuncsForValue(fd protoreflect.FieldDescriptor) valueCoderFuncs { + switch { + case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): + switch fd.Kind() { + case protoreflect.BoolKind: + return coderBoolSliceValue + case protoreflect.EnumKind: + return coderEnumSliceValue + case protoreflect.Int32Kind: + return coderInt32SliceValue + case protoreflect.Sint32Kind: + return coderSint32SliceValue + case protoreflect.Uint32Kind: + return coderUint32SliceValue + case protoreflect.Int64Kind: + return coderInt64SliceValue + case protoreflect.Sint64Kind: + return coderSint64SliceValue + case protoreflect.Uint64Kind: + return coderUint64SliceValue + case protoreflect.Sfixed32Kind: + return coderSfixed32SliceValue + case protoreflect.Fixed32Kind: + return coderFixed32SliceValue + case protoreflect.FloatKind: + return coderFloatSliceValue + case protoreflect.Sfixed64Kind: + return coderSfixed64SliceValue + case protoreflect.Fixed64Kind: + return coderFixed64SliceValue + case protoreflect.DoubleKind: + return coderDoubleSliceValue + case protoreflect.StringKind: + // We don't have a UTF-8 validating coder for repeated string fields. + // Value coders are used for extensions and maps. + // Extensions are never proto3, and maps never contain lists. + return coderStringSliceValue + case protoreflect.BytesKind: + return coderBytesSliceValue + case protoreflect.MessageKind: + return coderMessageSliceValue + case protoreflect.GroupKind: + return coderGroupSliceValue + } + case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): + switch fd.Kind() { + case protoreflect.BoolKind: + return coderBoolPackedSliceValue + case protoreflect.EnumKind: + return coderEnumPackedSliceValue + case protoreflect.Int32Kind: + return coderInt32PackedSliceValue + case protoreflect.Sint32Kind: + return coderSint32PackedSliceValue + case protoreflect.Uint32Kind: + return coderUint32PackedSliceValue + case protoreflect.Int64Kind: + return coderInt64PackedSliceValue + case protoreflect.Sint64Kind: + return coderSint64PackedSliceValue + case protoreflect.Uint64Kind: + return coderUint64PackedSliceValue + case protoreflect.Sfixed32Kind: + return coderSfixed32PackedSliceValue + case protoreflect.Fixed32Kind: + return coderFixed32PackedSliceValue + case protoreflect.FloatKind: + return coderFloatPackedSliceValue + case protoreflect.Sfixed64Kind: + return coderSfixed64PackedSliceValue + case protoreflect.Fixed64Kind: + return coderFixed64PackedSliceValue + case protoreflect.DoubleKind: + return coderDoublePackedSliceValue + } + default: + switch fd.Kind() { + default: + case protoreflect.BoolKind: + return coderBoolValue + case protoreflect.EnumKind: + return coderEnumValue + case protoreflect.Int32Kind: + return coderInt32Value + case protoreflect.Sint32Kind: + return coderSint32Value + case protoreflect.Uint32Kind: + return coderUint32Value + case protoreflect.Int64Kind: + return coderInt64Value + case protoreflect.Sint64Kind: + return coderSint64Value + case protoreflect.Uint64Kind: + return coderUint64Value + case protoreflect.Sfixed32Kind: + return coderSfixed32Value + case protoreflect.Fixed32Kind: + return coderFixed32Value + case protoreflect.FloatKind: + return coderFloatValue + case protoreflect.Sfixed64Kind: + return coderSfixed64Value + case protoreflect.Fixed64Kind: + return coderFixed64Value + case protoreflect.DoubleKind: + return coderDoubleValue + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + return coderStringValueValidateUTF8 + } + return coderStringValue + case protoreflect.BytesKind: + return coderBytesValue + case protoreflect.MessageKind: + return coderMessageValue + case protoreflect.GroupKind: + return coderGroupValue + } + } + panic(fmt.Sprintf("invalid field: no encoder for %v %v %v", fd.FullName(), fd.Cardinality(), fd.Kind())) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go new file mode 100644 index 0000000..757642e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go @@ -0,0 +1,18 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine +// +build !purego,!appengine + +package impl + +// When using unsafe pointers, we can just treat enum values as int32s. + +var ( + coderEnumNoZero = coderInt32NoZero + coderEnum = coderInt32 + coderEnumPtr = coderInt32Ptr + coderEnumSlice = coderInt32Slice + coderEnumPackedSlice = coderInt32PackedSlice +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go new file mode 100644 index 0000000..e06ece5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert.go @@ -0,0 +1,495 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// unwrapper unwraps the value to the underlying value. +// This is implemented by List and Map. +type unwrapper interface { + protoUnwrap() any +} + +// A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types. +type Converter interface { + // PBValueOf converts a reflect.Value to a protoreflect.Value. + PBValueOf(reflect.Value) protoreflect.Value + + // GoValueOf converts a protoreflect.Value to a reflect.Value. + GoValueOf(protoreflect.Value) reflect.Value + + // IsValidPB returns whether a protoreflect.Value is compatible with this type. + IsValidPB(protoreflect.Value) bool + + // IsValidGo returns whether a reflect.Value is compatible with this type. + IsValidGo(reflect.Value) bool + + // New returns a new field value. + // For scalars, it returns the default value of the field. + // For composite types, it returns a new mutable value. + New() protoreflect.Value + + // Zero returns a new field value. + // For scalars, it returns the default value of the field. + // For composite types, it returns an immutable, empty value. + Zero() protoreflect.Value +} + +// NewConverter matches a Go type with a protobuf field and returns a Converter +// that converts between the two. Enums must be a named int32 kind that +// implements protoreflect.Enum, and messages must be pointer to a named +// struct type that implements protoreflect.ProtoMessage. +// +// This matcher deliberately supports a wider range of Go types than what +// protoc-gen-go historically generated to be able to automatically wrap some +// v1 messages generated by other forks of protoc-gen-go. +func NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { + switch { + case fd.IsList(): + return newListConverter(t, fd) + case fd.IsMap(): + return newMapConverter(t, fd) + default: + return newSingularConverter(t, fd) + } +} + +var ( + boolType = reflect.TypeOf(bool(false)) + int32Type = reflect.TypeOf(int32(0)) + int64Type = reflect.TypeOf(int64(0)) + uint32Type = reflect.TypeOf(uint32(0)) + uint64Type = reflect.TypeOf(uint64(0)) + float32Type = reflect.TypeOf(float32(0)) + float64Type = reflect.TypeOf(float64(0)) + stringType = reflect.TypeOf(string("")) + bytesType = reflect.TypeOf([]byte(nil)) + byteType = reflect.TypeOf(byte(0)) +) + +var ( + boolZero = protoreflect.ValueOfBool(false) + int32Zero = protoreflect.ValueOfInt32(0) + int64Zero = protoreflect.ValueOfInt64(0) + uint32Zero = protoreflect.ValueOfUint32(0) + uint64Zero = protoreflect.ValueOfUint64(0) + float32Zero = protoreflect.ValueOfFloat32(0) + float64Zero = protoreflect.ValueOfFloat64(0) + stringZero = protoreflect.ValueOfString("") + bytesZero = protoreflect.ValueOfBytes(nil) +) + +func newSingularConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { + defVal := func(fd protoreflect.FieldDescriptor, zero protoreflect.Value) protoreflect.Value { + if fd.Cardinality() == protoreflect.Repeated { + // Default isn't defined for repeated fields. + return zero + } + return fd.Default() + } + switch fd.Kind() { + case protoreflect.BoolKind: + if t.Kind() == reflect.Bool { + return &boolConverter{t, defVal(fd, boolZero)} + } + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + if t.Kind() == reflect.Int32 { + return &int32Converter{t, defVal(fd, int32Zero)} + } + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + if t.Kind() == reflect.Int64 { + return &int64Converter{t, defVal(fd, int64Zero)} + } + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + if t.Kind() == reflect.Uint32 { + return &uint32Converter{t, defVal(fd, uint32Zero)} + } + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + if t.Kind() == reflect.Uint64 { + return &uint64Converter{t, defVal(fd, uint64Zero)} + } + case protoreflect.FloatKind: + if t.Kind() == reflect.Float32 { + return &float32Converter{t, defVal(fd, float32Zero)} + } + case protoreflect.DoubleKind: + if t.Kind() == reflect.Float64 { + return &float64Converter{t, defVal(fd, float64Zero)} + } + case protoreflect.StringKind: + if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { + return &stringConverter{t, defVal(fd, stringZero)} + } + case protoreflect.BytesKind: + if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { + return &bytesConverter{t, defVal(fd, bytesZero)} + } + case protoreflect.EnumKind: + // Handle enums, which must be a named int32 type. + if t.Kind() == reflect.Int32 { + return newEnumConverter(t, fd) + } + case protoreflect.MessageKind, protoreflect.GroupKind: + return newMessageConverter(t) + } + panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) +} + +type boolConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *boolConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfBool(v.Bool()) +} +func (c *boolConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(v.Bool()).Convert(c.goType) +} +func (c *boolConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(bool) + return ok +} +func (c *boolConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *boolConverter) New() protoreflect.Value { return c.def } +func (c *boolConverter) Zero() protoreflect.Value { return c.def } + +type int32Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *int32Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfInt32(int32(v.Int())) +} +func (c *int32Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(int32(v.Int())).Convert(c.goType) +} +func (c *int32Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(int32) + return ok +} +func (c *int32Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *int32Converter) New() protoreflect.Value { return c.def } +func (c *int32Converter) Zero() protoreflect.Value { return c.def } + +type int64Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *int64Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfInt64(int64(v.Int())) +} +func (c *int64Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(int64(v.Int())).Convert(c.goType) +} +func (c *int64Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(int64) + return ok +} +func (c *int64Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *int64Converter) New() protoreflect.Value { return c.def } +func (c *int64Converter) Zero() protoreflect.Value { return c.def } + +type uint32Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *uint32Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfUint32(uint32(v.Uint())) +} +func (c *uint32Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(uint32(v.Uint())).Convert(c.goType) +} +func (c *uint32Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(uint32) + return ok +} +func (c *uint32Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *uint32Converter) New() protoreflect.Value { return c.def } +func (c *uint32Converter) Zero() protoreflect.Value { return c.def } + +type uint64Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *uint64Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfUint64(uint64(v.Uint())) +} +func (c *uint64Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(uint64(v.Uint())).Convert(c.goType) +} +func (c *uint64Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(uint64) + return ok +} +func (c *uint64Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *uint64Converter) New() protoreflect.Value { return c.def } +func (c *uint64Converter) Zero() protoreflect.Value { return c.def } + +type float32Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *float32Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfFloat32(float32(v.Float())) +} +func (c *float32Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(float32(v.Float())).Convert(c.goType) +} +func (c *float32Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(float32) + return ok +} +func (c *float32Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *float32Converter) New() protoreflect.Value { return c.def } +func (c *float32Converter) Zero() protoreflect.Value { return c.def } + +type float64Converter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *float64Converter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfFloat64(float64(v.Float())) +} +func (c *float64Converter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(float64(v.Float())).Convert(c.goType) +} +func (c *float64Converter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(float64) + return ok +} +func (c *float64Converter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *float64Converter) New() protoreflect.Value { return c.def } +func (c *float64Converter) Zero() protoreflect.Value { return c.def } + +type stringConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfString(v.Convert(stringType).String()) +} +func (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value { + // pref.Value.String never panics, so we go through an interface + // conversion here to check the type. + s := v.Interface().(string) + if c.goType.Kind() == reflect.Slice && s == "" { + return reflect.Zero(c.goType) // ensure empty string is []byte(nil) + } + return reflect.ValueOf(s).Convert(c.goType) +} +func (c *stringConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(string) + return ok +} +func (c *stringConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *stringConverter) New() protoreflect.Value { return c.def } +func (c *stringConverter) Zero() protoreflect.Value { return c.def } + +type bytesConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func (c *bytesConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + if c.goType.Kind() == reflect.String && v.Len() == 0 { + return protoreflect.ValueOfBytes(nil) // ensure empty string is []byte(nil) + } + return protoreflect.ValueOfBytes(v.Convert(bytesType).Bytes()) +} +func (c *bytesConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(v.Bytes()).Convert(c.goType) +} +func (c *bytesConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().([]byte) + return ok +} +func (c *bytesConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} +func (c *bytesConverter) New() protoreflect.Value { return c.def } +func (c *bytesConverter) Zero() protoreflect.Value { return c.def } + +type enumConverter struct { + goType reflect.Type + def protoreflect.Value +} + +func newEnumConverter(goType reflect.Type, fd protoreflect.FieldDescriptor) Converter { + var def protoreflect.Value + if fd.Cardinality() == protoreflect.Repeated { + def = protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number()) + } else { + def = fd.Default() + } + return &enumConverter{goType, def} +} + +func (c *enumConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v.Int())) +} + +func (c *enumConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return reflect.ValueOf(v.Enum()).Convert(c.goType) +} + +func (c *enumConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(protoreflect.EnumNumber) + return ok +} + +func (c *enumConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *enumConverter) New() protoreflect.Value { + return c.def +} + +func (c *enumConverter) Zero() protoreflect.Value { + return c.def +} + +type messageConverter struct { + goType reflect.Type +} + +func newMessageConverter(goType reflect.Type) Converter { + return &messageConverter{goType} +} + +func (c *messageConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + if c.isNonPointer() { + if v.CanAddr() { + v = v.Addr() // T => *T + } else { + v = reflect.Zero(reflect.PtrTo(v.Type())) + } + } + if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { + return protoreflect.ValueOfMessage(m.ProtoReflect()) + } + return protoreflect.ValueOfMessage(legacyWrapMessage(v)) +} + +func (c *messageConverter) GoValueOf(v protoreflect.Value) reflect.Value { + m := v.Message() + var rv reflect.Value + if u, ok := m.(unwrapper); ok { + rv = reflect.ValueOf(u.protoUnwrap()) + } else { + rv = reflect.ValueOf(m.Interface()) + } + if c.isNonPointer() { + if rv.Type() != reflect.PtrTo(c.goType) { + panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), reflect.PtrTo(c.goType))) + } + if !rv.IsNil() { + rv = rv.Elem() // *T => T + } else { + rv = reflect.Zero(rv.Type().Elem()) + } + } + if rv.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), c.goType)) + } + return rv +} + +func (c *messageConverter) IsValidPB(v protoreflect.Value) bool { + m := v.Message() + var rv reflect.Value + if u, ok := m.(unwrapper); ok { + rv = reflect.ValueOf(u.protoUnwrap()) + } else { + rv = reflect.ValueOf(m.Interface()) + } + if c.isNonPointer() { + return rv.Type() == reflect.PtrTo(c.goType) + } + return rv.Type() == c.goType +} + +func (c *messageConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *messageConverter) New() protoreflect.Value { + if c.isNonPointer() { + return c.PBValueOf(reflect.New(c.goType).Elem()) + } + return c.PBValueOf(reflect.New(c.goType.Elem())) +} + +func (c *messageConverter) Zero() protoreflect.Value { + return c.PBValueOf(reflect.Zero(c.goType)) +} + +// isNonPointer reports whether the type is a non-pointer type. +// This never occurs for generated message types. +func (c *messageConverter) isNonPointer() bool { + return c.goType.Kind() != reflect.Ptr +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go new file mode 100644 index 0000000..18cb96f --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_list.go @@ -0,0 +1,141 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +func newListConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { + switch { + case t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice: + return &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)} + case t.Kind() == reflect.Slice: + return &listConverter{t, newSingularConverter(t.Elem(), fd)} + } + panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) +} + +type listConverter struct { + goType reflect.Type // []T + c Converter +} + +func (c *listConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + pv := reflect.New(c.goType) + pv.Elem().Set(v) + return protoreflect.ValueOfList(&listReflect{pv, c.c}) +} + +func (c *listConverter) GoValueOf(v protoreflect.Value) reflect.Value { + rv := v.List().(*listReflect).v + if rv.IsNil() { + return reflect.Zero(c.goType) + } + return rv.Elem() +} + +func (c *listConverter) IsValidPB(v protoreflect.Value) bool { + list, ok := v.Interface().(*listReflect) + if !ok { + return false + } + return list.v.Type().Elem() == c.goType +} + +func (c *listConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *listConverter) New() protoreflect.Value { + return protoreflect.ValueOfList(&listReflect{reflect.New(c.goType), c.c}) +} + +func (c *listConverter) Zero() protoreflect.Value { + return protoreflect.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c}) +} + +type listPtrConverter struct { + goType reflect.Type // *[]T + c Converter +} + +func (c *listPtrConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfList(&listReflect{v, c.c}) +} + +func (c *listPtrConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return v.List().(*listReflect).v +} + +func (c *listPtrConverter) IsValidPB(v protoreflect.Value) bool { + list, ok := v.Interface().(*listReflect) + if !ok { + return false + } + return list.v.Type() == c.goType +} + +func (c *listPtrConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *listPtrConverter) New() protoreflect.Value { + return c.PBValueOf(reflect.New(c.goType.Elem())) +} + +func (c *listPtrConverter) Zero() protoreflect.Value { + return c.PBValueOf(reflect.Zero(c.goType)) +} + +type listReflect struct { + v reflect.Value // *[]T + conv Converter +} + +func (ls *listReflect) Len() int { + if ls.v.IsNil() { + return 0 + } + return ls.v.Elem().Len() +} +func (ls *listReflect) Get(i int) protoreflect.Value { + return ls.conv.PBValueOf(ls.v.Elem().Index(i)) +} +func (ls *listReflect) Set(i int, v protoreflect.Value) { + ls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v)) +} +func (ls *listReflect) Append(v protoreflect.Value) { + ls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v))) +} +func (ls *listReflect) AppendMutable() protoreflect.Value { + if _, ok := ls.conv.(*messageConverter); !ok { + panic("invalid AppendMutable on list with non-message type") + } + v := ls.NewElement() + ls.Append(v) + return v +} +func (ls *listReflect) Truncate(i int) { + ls.v.Elem().Set(ls.v.Elem().Slice(0, i)) +} +func (ls *listReflect) NewElement() protoreflect.Value { + return ls.conv.New() +} +func (ls *listReflect) IsValid() bool { + return !ls.v.IsNil() +} +func (ls *listReflect) protoUnwrap() any { + return ls.v.Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go new file mode 100644 index 0000000..304244a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/convert_map.go @@ -0,0 +1,121 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type mapConverter struct { + goType reflect.Type // map[K]V + keyConv, valConv Converter +} + +func newMapConverter(t reflect.Type, fd protoreflect.FieldDescriptor) *mapConverter { + if t.Kind() != reflect.Map { + panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) + } + return &mapConverter{ + goType: t, + keyConv: newSingularConverter(t.Key(), fd.MapKey()), + valConv: newSingularConverter(t.Elem(), fd.MapValue()), + } +} + +func (c *mapConverter) PBValueOf(v reflect.Value) protoreflect.Value { + if v.Type() != c.goType { + panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) + } + return protoreflect.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv}) +} + +func (c *mapConverter) GoValueOf(v protoreflect.Value) reflect.Value { + return v.Map().(*mapReflect).v +} + +func (c *mapConverter) IsValidPB(v protoreflect.Value) bool { + mapv, ok := v.Interface().(*mapReflect) + if !ok { + return false + } + return mapv.v.Type() == c.goType +} + +func (c *mapConverter) IsValidGo(v reflect.Value) bool { + return v.IsValid() && v.Type() == c.goType +} + +func (c *mapConverter) New() protoreflect.Value { + return c.PBValueOf(reflect.MakeMap(c.goType)) +} + +func (c *mapConverter) Zero() protoreflect.Value { + return c.PBValueOf(reflect.Zero(c.goType)) +} + +type mapReflect struct { + v reflect.Value // map[K]V + keyConv Converter + valConv Converter +} + +func (ms *mapReflect) Len() int { + return ms.v.Len() +} +func (ms *mapReflect) Has(k protoreflect.MapKey) bool { + rk := ms.keyConv.GoValueOf(k.Value()) + rv := ms.v.MapIndex(rk) + return rv.IsValid() +} +func (ms *mapReflect) Get(k protoreflect.MapKey) protoreflect.Value { + rk := ms.keyConv.GoValueOf(k.Value()) + rv := ms.v.MapIndex(rk) + if !rv.IsValid() { + return protoreflect.Value{} + } + return ms.valConv.PBValueOf(rv) +} +func (ms *mapReflect) Set(k protoreflect.MapKey, v protoreflect.Value) { + rk := ms.keyConv.GoValueOf(k.Value()) + rv := ms.valConv.GoValueOf(v) + ms.v.SetMapIndex(rk, rv) +} +func (ms *mapReflect) Clear(k protoreflect.MapKey) { + rk := ms.keyConv.GoValueOf(k.Value()) + ms.v.SetMapIndex(rk, reflect.Value{}) +} +func (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value { + if _, ok := ms.valConv.(*messageConverter); !ok { + panic("invalid Mutable on map with non-message value type") + } + v := ms.Get(k) + if !v.IsValid() { + v = ms.NewValue() + ms.Set(k, v) + } + return v +} +func (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { + iter := mapRange(ms.v) + for iter.Next() { + k := ms.keyConv.PBValueOf(iter.Key()).MapKey() + v := ms.valConv.PBValueOf(iter.Value()) + if !f(k, v) { + return + } + } +} +func (ms *mapReflect) NewValue() protoreflect.Value { + return ms.valConv.New() +} +func (ms *mapReflect) IsValid() bool { + return !ms.v.IsNil() +} +func (ms *mapReflect) protoUnwrap() any { + return ms.v.Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go new file mode 100644 index 0000000..cda0520 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/decode.go @@ -0,0 +1,285 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "math/bits" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +var errDecode = errors.New("cannot parse invalid wire-format data") +var errRecursionDepth = errors.New("exceeded maximum recursion depth") + +type unmarshalOptions struct { + flags protoiface.UnmarshalInputFlags + resolver interface { + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) + } + depth int +} + +func (o unmarshalOptions) Options() proto.UnmarshalOptions { + return proto.UnmarshalOptions{ + Merge: true, + AllowPartial: true, + DiscardUnknown: o.DiscardUnknown(), + Resolver: o.resolver, + } +} + +func (o unmarshalOptions) DiscardUnknown() bool { + return o.flags&protoiface.UnmarshalDiscardUnknown != 0 +} + +func (o unmarshalOptions) IsDefault() bool { + return o.flags == 0 && o.resolver == protoregistry.GlobalTypes +} + +var lazyUnmarshalOptions = unmarshalOptions{ + resolver: protoregistry.GlobalTypes, + depth: protowire.DefaultRecursionLimit, +} + +type unmarshalOutput struct { + n int // number of bytes consumed + initialized bool +} + +// unmarshal is protoreflect.Methods.Unmarshal. +func (mi *MessageInfo) unmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + out, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{ + flags: in.Flags, + resolver: in.Resolver, + depth: in.Depth, + }) + var flags protoiface.UnmarshalOutputFlags + if out.initialized { + flags |= protoiface.UnmarshalInitialized + } + return protoiface.UnmarshalOutput{ + Flags: flags, + }, err +} + +// errUnknown is returned during unmarshaling to indicate a parse error that +// should result in a field being placed in the unknown fields section (for example, +// when the wire type doesn't match) as opposed to the entire unmarshal operation +// failing (for example, when a field extends past the available input). +// +// This is a sentinel error which should never be visible to the user. +var errUnknown = errors.New("unknown") + +func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) { + mi.init() + opts.depth-- + if opts.depth < 0 { + return out, errRecursionDepth + } + if flags.ProtoLegacy && mi.isMessageSet { + return unmarshalMessageSet(mi, b, p, opts) + } + initialized := true + var requiredMask uint64 + var exts *map[int32]ExtensionField + start := len(b) + for len(b) > 0 { + // Parse the tag (field number and wire type). + var tag uint64 + if b[0] < 0x80 { + tag = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + tag, n = protowire.ConsumeVarint(b) + if n < 0 { + return out, errDecode + } + b = b[n:] + } + var num protowire.Number + if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) { + return out, errDecode + } else { + num = protowire.Number(n) + } + wtyp := protowire.Type(tag & 7) + + if wtyp == protowire.EndGroupType { + if num != groupTag { + return out, errDecode + } + groupTag = 0 + break + } + + var f *coderFieldInfo + if int(num) < len(mi.denseCoderFields) { + f = mi.denseCoderFields[num] + } else { + f = mi.coderFields[num] + } + var n int + err := errUnknown + switch { + case f != nil: + if f.funcs.unmarshal == nil { + break + } + var o unmarshalOutput + o, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts) + n = o.n + if err != nil { + break + } + requiredMask |= f.validation.requiredBit + if f.funcs.isInit != nil && !o.initialized { + initialized = false + } + default: + // Possible extension. + if exts == nil && mi.extensionOffset.IsValid() { + exts = p.Apply(mi.extensionOffset).Extensions() + if *exts == nil { + *exts = make(map[int32]ExtensionField) + } + } + if exts == nil { + break + } + var o unmarshalOutput + o, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts) + if err != nil { + break + } + n = o.n + if !o.initialized { + initialized = false + } + } + if err != nil { + if err != errUnknown { + return out, err + } + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, errDecode + } + if !opts.DiscardUnknown() && mi.unknownOffset.IsValid() { + u := mi.mutableUnknownBytes(p) + *u = protowire.AppendTag(*u, num, wtyp) + *u = append(*u, b[:n]...) + } + } + b = b[n:] + } + if groupTag != 0 { + return out, errDecode + } + if mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) { + initialized = false + } + if initialized { + out.initialized = true + } + out.n = start - len(b) + return out, nil +} + +func (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp protowire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (out unmarshalOutput, err error) { + x := exts[int32(num)] + xt := x.Type() + if xt == nil { + var err error + xt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num) + if err != nil { + if err == protoregistry.NotFound { + return out, errUnknown + } + return out, errors.New("%v: unable to resolve extension %v: %v", mi.Desc.FullName(), num, err) + } + } + xi := getExtensionFieldInfo(xt) + if xi.funcs.unmarshal == nil { + return out, errUnknown + } + if flags.LazyUnmarshalExtensions { + if opts.IsDefault() && x.canLazy(xt) { + out, valid := skipExtension(b, xi, num, wtyp, opts) + switch valid { + case ValidationValid: + if out.initialized { + x.appendLazyBytes(xt, xi, num, wtyp, b[:out.n]) + exts[int32(num)] = x + return out, nil + } + case ValidationInvalid: + return out, errDecode + case ValidationUnknown: + } + } + } + ival := x.Value() + if !ival.IsValid() && xi.unmarshalNeedsValue { + // Create a new message, list, or map value to fill in. + // For enums, create a prototype value to let the unmarshal func know the + // concrete type. + ival = xt.New() + } + v, out, err := xi.funcs.unmarshal(b, ival, num, wtyp, opts) + if err != nil { + return out, err + } + if xi.funcs.isInit == nil { + out.initialized = true + } + x.Set(xt, v) + exts[int32(num)] = x + return out, nil +} + +func skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) { + if xi.validation.mi == nil { + return out, ValidationUnknown + } + xi.validation.mi.init() + switch xi.validation.typ { + case validationTypeMessage: + if wtyp != protowire.BytesType { + return out, ValidationUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return out, ValidationUnknown + } + out, st := xi.validation.mi.validate(v, 0, opts) + out.n = n + return out, st + case validationTypeGroup: + if wtyp != protowire.StartGroupType { + return out, ValidationUnknown + } + out, st := xi.validation.mi.validate(b, num, opts) + return out, st + default: + return out, ValidationUnknown + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go new file mode 100644 index 0000000..febd212 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/encode.go @@ -0,0 +1,237 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "math" + "sort" + "sync/atomic" + + "google.golang.org/protobuf/internal/flags" + proto "google.golang.org/protobuf/proto" + piface "google.golang.org/protobuf/runtime/protoiface" +) + +type marshalOptions struct { + flags piface.MarshalInputFlags +} + +func (o marshalOptions) Options() proto.MarshalOptions { + return proto.MarshalOptions{ + AllowPartial: true, + Deterministic: o.Deterministic(), + UseCachedSize: o.UseCachedSize(), + } +} + +func (o marshalOptions) Deterministic() bool { return o.flags&piface.MarshalDeterministic != 0 } +func (o marshalOptions) UseCachedSize() bool { return o.flags&piface.MarshalUseCachedSize != 0 } + +// size is protoreflect.Methods.Size. +func (mi *MessageInfo) size(in piface.SizeInput) piface.SizeOutput { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + size := mi.sizePointer(p, marshalOptions{ + flags: in.Flags, + }) + return piface.SizeOutput{Size: size} +} + +func (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) { + mi.init() + if p.IsNil() { + return 0 + } + if opts.UseCachedSize() && mi.sizecacheOffset.IsValid() { + // The size cache contains the size + 1, to allow the + // zero value to be invalid, while also allowing for a + // 0 size to be cached. + if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size > 0 { + return int(size - 1) + } + } + return mi.sizePointerSlow(p, opts) +} + +func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) { + if flags.ProtoLegacy && mi.isMessageSet { + size = sizeMessageSet(mi, p, opts) + if mi.sizecacheOffset.IsValid() { + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) + } + return size + } + if mi.extensionOffset.IsValid() { + e := p.Apply(mi.extensionOffset).Extensions() + size += mi.sizeExtensions(e, opts) + } + for _, f := range mi.orderedCoderFields { + if f.funcs.size == nil { + continue + } + fptr := p.Apply(f.offset) + if f.isPointer && fptr.Elem().IsNil() { + continue + } + size += f.funcs.size(fptr, f, opts) + } + if mi.unknownOffset.IsValid() { + if u := mi.getUnknownBytes(p); u != nil { + size += len(*u) + } + } + if mi.sizecacheOffset.IsValid() { + if size > (math.MaxInt32 - 1) { + // The size is too large for the int32 sizecache field. + // We will need to recompute the size when encoding; + // unfortunately expensive, but better than invalid output. + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), 0) + } else { + // The size cache contains the size + 1, to allow the + // zero value to be invalid, while also allowing for a + // 0 size to be cached. + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) + } + } + return size +} + +// marshal is protoreflect.Methods.Marshal. +func (mi *MessageInfo) marshal(in piface.MarshalInput) (out piface.MarshalOutput, err error) { + var p pointer + if ms, ok := in.Message.(*messageState); ok { + p = ms.pointer() + } else { + p = in.Message.(*messageReflectWrapper).pointer() + } + b, err := mi.marshalAppendPointer(in.Buf, p, marshalOptions{ + flags: in.Flags, + }) + return piface.MarshalOutput{Buf: b}, err +} + +func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) { + mi.init() + if p.IsNil() { + return b, nil + } + if flags.ProtoLegacy && mi.isMessageSet { + return marshalMessageSet(mi, b, p, opts) + } + var err error + // The old marshaler encodes extensions at beginning. + if mi.extensionOffset.IsValid() { + e := p.Apply(mi.extensionOffset).Extensions() + // TODO: Special handling for MessageSet? + b, err = mi.appendExtensions(b, e, opts) + if err != nil { + return b, err + } + } + for _, f := range mi.orderedCoderFields { + if f.funcs.marshal == nil { + continue + } + fptr := p.Apply(f.offset) + if f.isPointer && fptr.Elem().IsNil() { + continue + } + b, err = f.funcs.marshal(b, fptr, f, opts) + if err != nil { + return b, err + } + } + if mi.unknownOffset.IsValid() && !mi.isMessageSet { + if u := mi.getUnknownBytes(p); u != nil { + b = append(b, (*u)...) + } + } + return b, nil +} + +// fullyLazyExtensions returns true if we should attempt to keep extensions lazy over size and marshal. +func fullyLazyExtensions(opts marshalOptions) bool { + // When deterministic marshaling is requested, force an unmarshal for lazy + // extensions to produce a deterministic result, instead of passing through + // bytes lazily that may or may not match what Go Protobuf would produce. + return opts.flags&piface.MarshalDeterministic == 0 +} + +func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) { + if ext == nil { + return 0 + } + for _, x := range *ext { + xi := getExtensionFieldInfo(x.Type()) + if xi.funcs.size == nil { + continue + } + if fullyLazyExtensions(opts) { + // Don't expand the extension, instead use the buffer to calculate size + if lb := x.lazyBuffer(); lb != nil { + // We got hold of the buffer, so it's still lazy. + n += len(lb) + continue + } + } + n += xi.funcs.size(x.Value(), xi.tagsize, opts) + } + return n +} + +func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, opts marshalOptions) ([]byte, error) { + if ext == nil { + return b, nil + } + + switch len(*ext) { + case 0: + return b, nil + case 1: + // Fast-path for one extension: Don't bother sorting the keys. + var err error + for _, x := range *ext { + xi := getExtensionFieldInfo(x.Type()) + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + b = append(b, lb...) + continue + } + } + b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) + } + return b, err + default: + // Sort the keys to provide a deterministic encoding. + // Not sure this is required, but the old code does it. + keys := make([]int, 0, len(*ext)) + for k := range *ext { + keys = append(keys, int(k)) + } + sort.Ints(keys) + var err error + for _, k := range keys { + x := (*ext)[int32(k)] + xi := getExtensionFieldInfo(x.Type()) + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + b = append(b, lb...) + continue + } + } + b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) + if err != nil { + return b, err + } + } + return b, nil + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go new file mode 100644 index 0000000..5f3ef5a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/enum.go @@ -0,0 +1,21 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type EnumInfo struct { + GoReflectType reflect.Type // int32 kind + Desc protoreflect.EnumDescriptor +} + +func (t *EnumInfo) New(n protoreflect.EnumNumber) protoreflect.Enum { + return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(protoreflect.Enum) +} +func (t *EnumInfo) Descriptor() protoreflect.EnumDescriptor { return t.Desc } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go new file mode 100644 index 0000000..e31249f --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/extension.go @@ -0,0 +1,156 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + "sync" + "sync/atomic" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// ExtensionInfo implements ExtensionType. +// +// This type contains a number of exported fields for legacy compatibility. +// The only non-deprecated use of this type is through the methods of the +// ExtensionType interface. +type ExtensionInfo struct { + // An ExtensionInfo may exist in several stages of initialization. + // + // extensionInfoUninitialized: Some or all of the legacy exported + // fields may be set, but none of the unexported fields have been + // initialized. This is the starting state for an ExtensionInfo + // in legacy generated code. + // + // extensionInfoDescInit: The desc field is set, but other unexported fields + // may not be initialized. Legacy exported fields may or may not be set. + // This is the starting state for an ExtensionInfo in newly generated code. + // + // extensionInfoFullInit: The ExtensionInfo is fully initialized. + // This state is only entered after lazy initialization is complete. + init uint32 + mu sync.Mutex + + goType reflect.Type + desc extensionTypeDescriptor + conv Converter + info *extensionFieldInfo // for fast-path method implementations + + // ExtendedType is a typed nil-pointer to the parent message type that + // is being extended. It is possible for this to be unpopulated in v2 + // since the message may no longer implement the MessageV1 interface. + // + // Deprecated: Use the ExtendedType method instead. + ExtendedType protoiface.MessageV1 + + // ExtensionType is the zero value of the extension type. + // + // For historical reasons, reflect.TypeOf(ExtensionType) and the + // type returned by InterfaceOf may not be identical. + // + // Deprecated: Use InterfaceOf(xt.Zero()) instead. + ExtensionType any + + // Field is the field number of the extension. + // + // Deprecated: Use the Descriptor().Number method instead. + Field int32 + + // Name is the fully qualified name of extension. + // + // Deprecated: Use the Descriptor().FullName method instead. + Name string + + // Tag is the protobuf struct tag used in the v1 API. + // + // Deprecated: Do not use. + Tag string + + // Filename is the proto filename in which the extension is defined. + // + // Deprecated: Use Descriptor().ParentFile().Path() instead. + Filename string +} + +// Stages of initialization: See the ExtensionInfo.init field. +const ( + extensionInfoUninitialized = 0 + extensionInfoDescInit = 1 + extensionInfoFullInit = 2 +) + +func InitExtensionInfo(xi *ExtensionInfo, xd protoreflect.ExtensionDescriptor, goType reflect.Type) { + xi.goType = goType + xi.desc = extensionTypeDescriptor{xd, xi} + xi.init = extensionInfoDescInit +} + +func (xi *ExtensionInfo) New() protoreflect.Value { + return xi.lazyInit().New() +} +func (xi *ExtensionInfo) Zero() protoreflect.Value { + return xi.lazyInit().Zero() +} +func (xi *ExtensionInfo) ValueOf(v any) protoreflect.Value { + return xi.lazyInit().PBValueOf(reflect.ValueOf(v)) +} +func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) any { + return xi.lazyInit().GoValueOf(v).Interface() +} +func (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool { + return xi.lazyInit().IsValidPB(v) +} +func (xi *ExtensionInfo) IsValidInterface(v any) bool { + return xi.lazyInit().IsValidGo(reflect.ValueOf(v)) +} +func (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor { + if atomic.LoadUint32(&xi.init) < extensionInfoDescInit { + xi.lazyInitSlow() + } + return &xi.desc +} + +func (xi *ExtensionInfo) lazyInit() Converter { + if atomic.LoadUint32(&xi.init) < extensionInfoFullInit { + xi.lazyInitSlow() + } + return xi.conv +} + +func (xi *ExtensionInfo) lazyInitSlow() { + xi.mu.Lock() + defer xi.mu.Unlock() + + if xi.init == extensionInfoFullInit { + return + } + defer atomic.StoreUint32(&xi.init, extensionInfoFullInit) + + if xi.desc.ExtensionDescriptor == nil { + xi.initFromLegacy() + } + if !xi.desc.ExtensionDescriptor.IsPlaceholder() { + if xi.ExtensionType == nil { + xi.initToLegacy() + } + xi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor) + xi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor) + xi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType) + } +} + +type extensionTypeDescriptor struct { + protoreflect.ExtensionDescriptor + xi *ExtensionInfo +} + +func (xtd *extensionTypeDescriptor) Type() protoreflect.ExtensionType { + return xtd.xi +} +func (xtd *extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor { + return xtd.ExtensionDescriptor +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go new file mode 100644 index 0000000..81b2b1a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go @@ -0,0 +1,219 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strings" + "sync" + + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// legacyEnumName returns the name of enums used in legacy code. +// It is neither the protobuf full name nor the qualified Go name, +// but rather an odd hybrid of both. +func legacyEnumName(ed protoreflect.EnumDescriptor) string { + var protoPkg string + enumName := string(ed.FullName()) + if fd := ed.ParentFile(); fd != nil { + protoPkg = string(fd.Package()) + enumName = strings.TrimPrefix(enumName, protoPkg+".") + } + if protoPkg == "" { + return strs.GoCamelCase(enumName) + } + return protoPkg + "." + strs.GoCamelCase(enumName) +} + +// legacyWrapEnum wraps v as a protoreflect.Enum, +// where v must be a int32 kind and not implement the v2 API already. +func legacyWrapEnum(v reflect.Value) protoreflect.Enum { + et := legacyLoadEnumType(v.Type()) + return et.New(protoreflect.EnumNumber(v.Int())) +} + +var legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType + +// legacyLoadEnumType dynamically loads a protoreflect.EnumType for t, +// where t must be an int32 kind and not implement the v2 API already. +func legacyLoadEnumType(t reflect.Type) protoreflect.EnumType { + // Fast-path: check if a EnumType is cached for this concrete type. + if et, ok := legacyEnumTypeCache.Load(t); ok { + return et.(protoreflect.EnumType) + } + + // Slow-path: derive enum descriptor and initialize EnumType. + var et protoreflect.EnumType + ed := LegacyLoadEnumDesc(t) + et = &legacyEnumType{ + desc: ed, + goType: t, + } + if et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok { + return et.(protoreflect.EnumType) + } + return et +} + +type legacyEnumType struct { + desc protoreflect.EnumDescriptor + goType reflect.Type + m sync.Map // map[protoreflect.EnumNumber]proto.Enum +} + +func (t *legacyEnumType) New(n protoreflect.EnumNumber) protoreflect.Enum { + if e, ok := t.m.Load(n); ok { + return e.(protoreflect.Enum) + } + e := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType} + t.m.Store(n, e) + return e +} +func (t *legacyEnumType) Descriptor() protoreflect.EnumDescriptor { + return t.desc +} + +type legacyEnumWrapper struct { + num protoreflect.EnumNumber + pbTyp protoreflect.EnumType + goTyp reflect.Type +} + +func (e *legacyEnumWrapper) Descriptor() protoreflect.EnumDescriptor { + return e.pbTyp.Descriptor() +} +func (e *legacyEnumWrapper) Type() protoreflect.EnumType { + return e.pbTyp +} +func (e *legacyEnumWrapper) Number() protoreflect.EnumNumber { + return e.num +} +func (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum { + return e +} +func (e *legacyEnumWrapper) protoUnwrap() any { + v := reflect.New(e.goTyp).Elem() + v.SetInt(int64(e.num)) + return v.Interface() +} + +var ( + _ protoreflect.Enum = (*legacyEnumWrapper)(nil) + _ unwrapper = (*legacyEnumWrapper)(nil) +) + +var legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor + +// LegacyLoadEnumDesc returns an EnumDescriptor derived from the Go type, +// which must be an int32 kind and not implement the v2 API already. +// +// This is exported for testing purposes. +func LegacyLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { + // Fast-path: check if an EnumDescriptor is cached for this concrete type. + if ed, ok := legacyEnumDescCache.Load(t); ok { + return ed.(protoreflect.EnumDescriptor) + } + + // Slow-path: initialize EnumDescriptor from the raw descriptor. + ev := reflect.Zero(t).Interface() + if _, ok := ev.(protoreflect.Enum); ok { + panic(fmt.Sprintf("%v already implements proto.Enum", t)) + } + edV1, ok := ev.(enumV1) + if !ok { + return aberrantLoadEnumDesc(t) + } + b, idxs := edV1.EnumDescriptor() + + var ed protoreflect.EnumDescriptor + if len(idxs) == 1 { + ed = legacyLoadFileDesc(b).Enums().Get(idxs[0]) + } else { + md := legacyLoadFileDesc(b).Messages().Get(idxs[0]) + for _, i := range idxs[1 : len(idxs)-1] { + md = md.Messages().Get(i) + } + ed = md.Enums().Get(idxs[len(idxs)-1]) + } + if ed, ok := legacyEnumDescCache.LoadOrStore(t, ed); ok { + return ed.(protoreflect.EnumDescriptor) + } + return ed +} + +var aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor + +// aberrantLoadEnumDesc returns an EnumDescriptor derived from the Go type, +// which must not implement protoreflect.Enum or enumV1. +// +// If the type does not implement enumV1, then there is no reliable +// way to derive the original protobuf type information. +// We are unable to use the global enum registry since it is +// unfortunately keyed by the protobuf full name, which we also do not know. +// Thus, this produces some bogus enum descriptor based on the Go type name. +func aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { + // Fast-path: check if an EnumDescriptor is cached for this concrete type. + if ed, ok := aberrantEnumDescCache.Load(t); ok { + return ed.(protoreflect.EnumDescriptor) + } + + // Slow-path: construct a bogus, but unique EnumDescriptor. + ed := &filedesc.Enum{L2: new(filedesc.EnumL2)} + ed.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum + ed.L0.ParentFile = filedesc.SurrogateProto3 + ed.L1.EditionFeatures = ed.L0.ParentFile.L1.EditionFeatures + ed.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{}) + + // TODO: Use the presence of a UnmarshalJSON method to determine proto2? + + vd := &ed.L2.Values.List[0] + vd.L0.FullName = ed.L0.FullName + "_UNKNOWN" // e.g., github_com.user.repo.MyEnum_UNKNOWN + vd.L0.ParentFile = ed.L0.ParentFile + vd.L0.Parent = ed + + // TODO: We could use the String method to obtain some enum value names by + // starting at 0 and print the enum until it produces invalid identifiers. + // An exhaustive query is clearly impractical, but can be best-effort. + + if ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok { + return ed.(protoreflect.EnumDescriptor) + } + return ed +} + +// AberrantDeriveFullName derives a fully qualified protobuf name for the given Go type +// The provided name is not guaranteed to be stable nor universally unique. +// It should be sufficiently unique within a program. +// +// This is exported for testing purposes. +func AberrantDeriveFullName(t reflect.Type) protoreflect.FullName { + sanitize := func(r rune) rune { + switch { + case r == '/': + return '.' + case 'a' <= r && r <= 'z', 'A' <= r && r <= 'Z', '0' <= r && r <= '9': + return r + default: + return '_' + } + } + prefix := strings.Map(sanitize, t.PkgPath()) + suffix := strings.Map(sanitize, t.Name()) + if suffix == "" { + suffix = fmt.Sprintf("UnknownX%X", reflect.ValueOf(t).Pointer()) + } + + ss := append(strings.Split(prefix, "."), suffix) + for i, s := range ss { + if s == "" || ('0' <= s[0] && s[0] <= '9') { + ss[i] = "x" + s + } + } + return protoreflect.FullName(strings.Join(ss, ".")) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go new file mode 100644 index 0000000..9b64ad5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go @@ -0,0 +1,92 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "encoding/binary" + "encoding/json" + "hash/crc32" + "math" + "reflect" + + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// These functions exist to support exported APIs in generated protobufs. +// While these are deprecated, they cannot be removed for compatibility reasons. + +// LegacyEnumName returns the name of enums used in legacy code. +func (Export) LegacyEnumName(ed protoreflect.EnumDescriptor) string { + return legacyEnumName(ed) +} + +// LegacyMessageTypeOf returns the protoreflect.MessageType for m, +// with name used as the message name if necessary. +func (Export) LegacyMessageTypeOf(m protoiface.MessageV1, name protoreflect.FullName) protoreflect.MessageType { + if mv := (Export{}).protoMessageV2Of(m); mv != nil { + return mv.ProtoReflect().Type() + } + return legacyLoadMessageType(reflect.TypeOf(m), name) +} + +// UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input. +// The input can either be a string representing the enum value by name, +// or a number representing the enum number itself. +func (Export) UnmarshalJSONEnum(ed protoreflect.EnumDescriptor, b []byte) (protoreflect.EnumNumber, error) { + if b[0] == '"' { + var name protoreflect.Name + if err := json.Unmarshal(b, &name); err != nil { + return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) + } + ev := ed.Values().ByName(name) + if ev == nil { + return 0, errors.New("invalid value for enum %v: %s", ed.FullName(), name) + } + return ev.Number(), nil + } else { + var num protoreflect.EnumNumber + if err := json.Unmarshal(b, &num); err != nil { + return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) + } + return num, nil + } +} + +// CompressGZIP compresses the input as a GZIP-encoded file. +// The current implementation does no compression. +func (Export) CompressGZIP(in []byte) (out []byte) { + // RFC 1952, section 2.3.1. + var gzipHeader = [10]byte{0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff} + + // RFC 1951, section 3.2.4. + var blockHeader [5]byte + const maxBlockSize = math.MaxUint16 + numBlocks := 1 + len(in)/maxBlockSize + + // RFC 1952, section 2.3.1. + var gzipFooter [8]byte + binary.LittleEndian.PutUint32(gzipFooter[0:4], crc32.ChecksumIEEE(in)) + binary.LittleEndian.PutUint32(gzipFooter[4:8], uint32(len(in))) + + // Encode the input without compression using raw DEFLATE blocks. + out = make([]byte, 0, len(gzipHeader)+len(blockHeader)*numBlocks+len(in)+len(gzipFooter)) + out = append(out, gzipHeader[:]...) + for blockHeader[0] == 0 { + blockSize := maxBlockSize + if blockSize > len(in) { + blockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3. + blockSize = len(in) + } + binary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize)) + binary.LittleEndian.PutUint16(blockHeader[3:5], ^uint16(blockSize)) + out = append(out, blockHeader[:]...) + out = append(out, in[:blockSize]...) + in = in[blockSize:] + } + out = append(out, gzipFooter[:]...) + return out +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go new file mode 100644 index 0000000..6e8677e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go @@ -0,0 +1,176 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "reflect" + + "google.golang.org/protobuf/internal/descopts" + "google.golang.org/protobuf/internal/encoding/messageset" + ptag "google.golang.org/protobuf/internal/encoding/tag" + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +func (xi *ExtensionInfo) initToLegacy() { + xd := xi.desc + var parent protoiface.MessageV1 + messageName := xd.ContainingMessage().FullName() + if mt, _ := protoregistry.GlobalTypes.FindMessageByName(messageName); mt != nil { + // Create a new parent message and unwrap it if possible. + mv := mt.New().Interface() + t := reflect.TypeOf(mv) + if mv, ok := mv.(unwrapper); ok { + t = reflect.TypeOf(mv.protoUnwrap()) + } + + // Check whether the message implements the legacy v1 Message interface. + mz := reflect.Zero(t).Interface() + if mz, ok := mz.(protoiface.MessageV1); ok { + parent = mz + } + } + + // Determine the v1 extension type, which is unfortunately not the same as + // the v2 ExtensionType.GoType. + extType := xi.goType + switch extType.Kind() { + case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: + extType = reflect.PtrTo(extType) // T -> *T for singular scalar fields + } + + // Reconstruct the legacy enum full name. + var enumName string + if xd.Kind() == protoreflect.EnumKind { + enumName = legacyEnumName(xd.Enum()) + } + + // Derive the proto file that the extension was declared within. + var filename string + if fd := xd.ParentFile(); fd != nil { + filename = fd.Path() + } + + // For MessageSet extensions, the name used is the parent message. + name := xd.FullName() + if messageset.IsMessageSetExtension(xd) { + name = name.Parent() + } + + xi.ExtendedType = parent + xi.ExtensionType = reflect.Zero(extType).Interface() + xi.Field = int32(xd.Number()) + xi.Name = string(name) + xi.Tag = ptag.Marshal(xd, enumName) + xi.Filename = filename +} + +// initFromLegacy initializes an ExtensionInfo from +// the contents of the deprecated exported fields of the type. +func (xi *ExtensionInfo) initFromLegacy() { + // The v1 API returns "type incomplete" descriptors where only the + // field number is specified. In such a case, use a placeholder. + if xi.ExtendedType == nil || xi.ExtensionType == nil { + xd := placeholderExtension{ + name: protoreflect.FullName(xi.Name), + number: protoreflect.FieldNumber(xi.Field), + } + xi.desc = extensionTypeDescriptor{xd, xi} + return + } + + // Resolve enum or message dependencies. + var ed protoreflect.EnumDescriptor + var md protoreflect.MessageDescriptor + t := reflect.TypeOf(xi.ExtensionType) + isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct + isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 + if isOptional || isRepeated { + t = t.Elem() + } + switch v := reflect.Zero(t).Interface().(type) { + case protoreflect.Enum: + ed = v.Descriptor() + case enumV1: + ed = LegacyLoadEnumDesc(t) + case protoreflect.ProtoMessage: + md = v.ProtoReflect().Descriptor() + case messageV1: + md = LegacyLoadMessageDesc(t) + } + + // Derive basic field information from the struct tag. + var evs protoreflect.EnumValueDescriptors + if ed != nil { + evs = ed.Values() + } + fd := ptag.Unmarshal(xi.Tag, t, evs).(*filedesc.Field) + + // Construct a v2 ExtensionType. + xd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)} + xd.L0.ParentFile = filedesc.SurrogateProto2 + xd.L0.FullName = protoreflect.FullName(xi.Name) + xd.L1.Number = protoreflect.FieldNumber(xi.Field) + xd.L1.Cardinality = fd.L1.Cardinality + xd.L1.Kind = fd.L1.Kind + xd.L1.EditionFeatures = fd.L1.EditionFeatures + xd.L2.Default = fd.L1.Default + xd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType) + xd.L2.Enum = ed + xd.L2.Message = md + + // Derive real extension field name for MessageSets. + if messageset.IsMessageSet(xd.L1.Extendee) && md.FullName() == xd.L0.FullName { + xd.L0.FullName = xd.L0.FullName.Append(messageset.ExtensionName) + } + + tt := reflect.TypeOf(xi.ExtensionType) + if isOptional { + tt = tt.Elem() + } + xi.goType = tt + xi.desc = extensionTypeDescriptor{xd, xi} +} + +type placeholderExtension struct { + name protoreflect.FullName + number protoreflect.FieldNumber +} + +func (x placeholderExtension) ParentFile() protoreflect.FileDescriptor { return nil } +func (x placeholderExtension) Parent() protoreflect.Descriptor { return nil } +func (x placeholderExtension) Index() int { return 0 } +func (x placeholderExtension) Syntax() protoreflect.Syntax { return 0 } +func (x placeholderExtension) Name() protoreflect.Name { return x.name.Name() } +func (x placeholderExtension) FullName() protoreflect.FullName { return x.name } +func (x placeholderExtension) IsPlaceholder() bool { return true } +func (x placeholderExtension) Options() protoreflect.ProtoMessage { return descopts.Field } +func (x placeholderExtension) Number() protoreflect.FieldNumber { return x.number } +func (x placeholderExtension) Cardinality() protoreflect.Cardinality { return 0 } +func (x placeholderExtension) Kind() protoreflect.Kind { return 0 } +func (x placeholderExtension) HasJSONName() bool { return false } +func (x placeholderExtension) JSONName() string { return "[" + string(x.name) + "]" } +func (x placeholderExtension) TextName() string { return "[" + string(x.name) + "]" } +func (x placeholderExtension) HasPresence() bool { return false } +func (x placeholderExtension) HasOptionalKeyword() bool { return false } +func (x placeholderExtension) IsExtension() bool { return true } +func (x placeholderExtension) IsWeak() bool { return false } +func (x placeholderExtension) IsPacked() bool { return false } +func (x placeholderExtension) IsList() bool { return false } +func (x placeholderExtension) IsMap() bool { return false } +func (x placeholderExtension) MapKey() protoreflect.FieldDescriptor { return nil } +func (x placeholderExtension) MapValue() protoreflect.FieldDescriptor { return nil } +func (x placeholderExtension) HasDefault() bool { return false } +func (x placeholderExtension) Default() protoreflect.Value { return protoreflect.Value{} } +func (x placeholderExtension) DefaultEnumValue() protoreflect.EnumValueDescriptor { return nil } +func (x placeholderExtension) ContainingOneof() protoreflect.OneofDescriptor { return nil } +func (x placeholderExtension) ContainingMessage() protoreflect.MessageDescriptor { return nil } +func (x placeholderExtension) Enum() protoreflect.EnumDescriptor { return nil } +func (x placeholderExtension) Message() protoreflect.MessageDescriptor { return nil } +func (x placeholderExtension) ProtoType(protoreflect.FieldDescriptor) { return } +func (x placeholderExtension) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go new file mode 100644 index 0000000..b649f11 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go @@ -0,0 +1,81 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "bytes" + "compress/gzip" + "io" + "sync" + + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// Every enum and message type generated by protoc-gen-go since commit 2fc053c5 +// on February 25th, 2016 has had a method to get the raw descriptor. +// Types that were not generated by protoc-gen-go or were generated prior +// to that version are not supported. +// +// The []byte returned is the encoded form of a FileDescriptorProto message +// compressed using GZIP. The []int is the path from the top-level file +// to the specific message or enum declaration. +type ( + enumV1 interface { + EnumDescriptor() ([]byte, []int) + } + messageV1 interface { + Descriptor() ([]byte, []int) + } +) + +var legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor + +// legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message. +// +// This assumes that b is immutable and that b does not refer to part of a +// concatenated series of GZIP files (which would require shenanigans that +// rely on the concatenation properties of both protobufs and GZIP). +// File descriptors generated by protoc-gen-go do not rely on that property. +func legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor { + // Fast-path: check whether we already have a cached file descriptor. + if fd, ok := legacyFileDescCache.Load(&b[0]); ok { + return fd.(protoreflect.FileDescriptor) + } + + // Slow-path: decompress and unmarshal the file descriptor proto. + zr, err := gzip.NewReader(bytes.NewReader(b)) + if err != nil { + panic(err) + } + b2, err := io.ReadAll(zr) + if err != nil { + panic(err) + } + + fd := filedesc.Builder{ + RawDescriptor: b2, + FileRegistry: resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry + }.Build().File + if fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok { + return fd.(protoreflect.FileDescriptor) + } + return fd +} + +type resolverOnly struct { + reg *protoregistry.Files +} + +func (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) { + return r.reg.FindFileByPath(path) +} +func (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) { + return r.reg.FindDescriptorByName(name) +} +func (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error { + return nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go new file mode 100644 index 0000000..bf0b604 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go @@ -0,0 +1,572 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strings" + "sync" + + "google.golang.org/protobuf/internal/descopts" + ptag "google.golang.org/protobuf/internal/encoding/tag" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// legacyWrapMessage wraps v as a protoreflect.Message, +// where v must be a *struct kind and not implement the v2 API already. +func legacyWrapMessage(v reflect.Value) protoreflect.Message { + t := v.Type() + if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { + return aberrantMessage{v: v} + } + mt := legacyLoadMessageInfo(t, "") + return mt.MessageOf(v.Interface()) +} + +// legacyLoadMessageType dynamically loads a protoreflect.Type for t, +// where t must be not implement the v2 API already. +// The provided name is used if it cannot be determined from the message. +func legacyLoadMessageType(t reflect.Type, name protoreflect.FullName) protoreflect.MessageType { + if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { + return aberrantMessageType{t} + } + return legacyLoadMessageInfo(t, name) +} + +var legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo + +// legacyLoadMessageInfo dynamically loads a *MessageInfo for t, +// where t must be a *struct kind and not implement the v2 API already. +// The provided name is used if it cannot be determined from the message. +func legacyLoadMessageInfo(t reflect.Type, name protoreflect.FullName) *MessageInfo { + // Fast-path: check if a MessageInfo is cached for this concrete type. + if mt, ok := legacyMessageTypeCache.Load(t); ok { + return mt.(*MessageInfo) + } + + // Slow-path: derive message descriptor and initialize MessageInfo. + mi := &MessageInfo{ + Desc: legacyLoadMessageDesc(t, name), + GoReflectType: t, + } + + var hasMarshal, hasUnmarshal bool + v := reflect.Zero(t).Interface() + if _, hasMarshal = v.(legacyMarshaler); hasMarshal { + mi.methods.Marshal = legacyMarshal + + // We have no way to tell whether the type's Marshal method + // supports deterministic serialization or not, but this + // preserves the v1 implementation's behavior of always + // calling Marshal methods when present. + mi.methods.Flags |= protoiface.SupportMarshalDeterministic + } + if _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal { + mi.methods.Unmarshal = legacyUnmarshal + } + if _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) { + mi.methods.Merge = legacyMerge + } + + if mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok { + return mi.(*MessageInfo) + } + return mi +} + +var legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor + +// LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type, +// which should be a *struct kind and must not implement the v2 API already. +// +// This is exported for testing purposes. +func LegacyLoadMessageDesc(t reflect.Type) protoreflect.MessageDescriptor { + return legacyLoadMessageDesc(t, "") +} +func legacyLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { + // Fast-path: check if a MessageDescriptor is cached for this concrete type. + if mi, ok := legacyMessageDescCache.Load(t); ok { + return mi.(protoreflect.MessageDescriptor) + } + + // Slow-path: initialize MessageDescriptor from the raw descriptor. + mv := reflect.Zero(t).Interface() + if _, ok := mv.(protoreflect.ProtoMessage); ok { + panic(fmt.Sprintf("%v already implements proto.Message", t)) + } + mdV1, ok := mv.(messageV1) + if !ok { + return aberrantLoadMessageDesc(t, name) + } + + // If this is a dynamic message type where there isn't a 1-1 mapping between + // Go and protobuf types, calling the Descriptor method on the zero value of + // the message type isn't likely to work. If it panics, swallow the panic and + // continue as if the Descriptor method wasn't present. + b, idxs := func() ([]byte, []int) { + defer func() { + recover() + }() + return mdV1.Descriptor() + }() + if b == nil { + return aberrantLoadMessageDesc(t, name) + } + + // If the Go type has no fields, then this might be a proto3 empty message + // from before the size cache was added. If there are any fields, check to + // see that at least one of them looks like something we generated. + if t.Elem().Kind() == reflect.Struct { + if nfield := t.Elem().NumField(); nfield > 0 { + hasProtoField := false + for i := 0; i < nfield; i++ { + f := t.Elem().Field(i) + if f.Tag.Get("protobuf") != "" || f.Tag.Get("protobuf_oneof") != "" || strings.HasPrefix(f.Name, "XXX_") { + hasProtoField = true + break + } + } + if !hasProtoField { + return aberrantLoadMessageDesc(t, name) + } + } + } + + md := legacyLoadFileDesc(b).Messages().Get(idxs[0]) + for _, i := range idxs[1:] { + md = md.Messages().Get(i) + } + if name != "" && md.FullName() != name { + panic(fmt.Sprintf("mismatching message name: got %v, want %v", md.FullName(), name)) + } + if md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok { + return md.(protoreflect.MessageDescriptor) + } + return md +} + +var ( + aberrantMessageDescLock sync.Mutex + aberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor +) + +// aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type, +// which must not implement protoreflect.ProtoMessage or messageV1. +// +// This is a best-effort derivation of the message descriptor using the protobuf +// tags on the struct fields. +func aberrantLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { + aberrantMessageDescLock.Lock() + defer aberrantMessageDescLock.Unlock() + if aberrantMessageDescCache == nil { + aberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor) + } + return aberrantLoadMessageDescReentrant(t, name) +} +func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { + // Fast-path: check if an MessageDescriptor is cached for this concrete type. + if md, ok := aberrantMessageDescCache[t]; ok { + return md + } + + // Slow-path: construct a descriptor from the Go struct type (best-effort). + // Cache the MessageDescriptor early on so that we can resolve internal + // cyclic references. + md := &filedesc.Message{L2: new(filedesc.MessageL2)} + md.L0.FullName = aberrantDeriveMessageName(t, name) + md.L0.ParentFile = filedesc.SurrogateProto2 + aberrantMessageDescCache[t] = md + + if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { + return md + } + + // Try to determine if the message is using proto3 by checking scalars. + for i := 0; i < t.Elem().NumField(); i++ { + f := t.Elem().Field(i) + if tag := f.Tag.Get("protobuf"); tag != "" { + switch f.Type.Kind() { + case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: + md.L0.ParentFile = filedesc.SurrogateProto3 + } + for _, s := range strings.Split(tag, ",") { + if s == "proto3" { + md.L0.ParentFile = filedesc.SurrogateProto3 + } + } + } + } + + md.L1.EditionFeatures = md.L0.ParentFile.L1.EditionFeatures + // Obtain a list of oneof wrapper types. + var oneofWrappers []reflect.Type + methods := make([]reflect.Method, 0, 2) + if m, ok := t.MethodByName("XXX_OneofFuncs"); ok { + methods = append(methods, m) + } + if m, ok := t.MethodByName("XXX_OneofWrappers"); ok { + methods = append(methods, m) + } + for _, fn := range methods { + for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { + if vs, ok := v.Interface().([]any); ok { + for _, v := range vs { + oneofWrappers = append(oneofWrappers, reflect.TypeOf(v)) + } + } + } + } + + // Obtain a list of the extension ranges. + if fn, ok := t.MethodByName("ExtensionRangeArray"); ok { + vs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0] + for i := 0; i < vs.Len(); i++ { + v := vs.Index(i) + md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{ + protoreflect.FieldNumber(v.FieldByName("Start").Int()), + protoreflect.FieldNumber(v.FieldByName("End").Int() + 1), + }) + md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil) + } + } + + // Derive the message fields by inspecting the struct fields. + for i := 0; i < t.Elem().NumField(); i++ { + f := t.Elem().Field(i) + if tag := f.Tag.Get("protobuf"); tag != "" { + tagKey := f.Tag.Get("protobuf_key") + tagVal := f.Tag.Get("protobuf_val") + aberrantAppendField(md, f.Type, tag, tagKey, tagVal) + } + if tag := f.Tag.Get("protobuf_oneof"); tag != "" { + n := len(md.L2.Oneofs.List) + md.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{}) + od := &md.L2.Oneofs.List[n] + od.L0.FullName = md.FullName().Append(protoreflect.Name(tag)) + od.L0.ParentFile = md.L0.ParentFile + od.L1.EditionFeatures = md.L1.EditionFeatures + od.L0.Parent = md + od.L0.Index = n + + for _, t := range oneofWrappers { + if t.Implements(f.Type) { + f := t.Elem().Field(0) + if tag := f.Tag.Get("protobuf"); tag != "" { + aberrantAppendField(md, f.Type, tag, "", "") + fd := &md.L2.Fields.List[len(md.L2.Fields.List)-1] + fd.L1.ContainingOneof = od + fd.L1.EditionFeatures = od.L1.EditionFeatures + od.L1.Fields.List = append(od.L1.Fields.List, fd) + } + } + } + } + } + + return md +} + +func aberrantDeriveMessageName(t reflect.Type, name protoreflect.FullName) protoreflect.FullName { + if name.IsValid() { + return name + } + func() { + defer func() { recover() }() // swallow possible nil panics + if m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok { + name = protoreflect.FullName(m.XXX_MessageName()) + } + }() + if name.IsValid() { + return name + } + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + return AberrantDeriveFullName(t) +} + +func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) { + t := goType + isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct + isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 + if isOptional || isRepeated { + t = t.Elem() + } + fd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field) + + // Append field descriptor to the message. + n := len(md.L2.Fields.List) + md.L2.Fields.List = append(md.L2.Fields.List, *fd) + fd = &md.L2.Fields.List[n] + fd.L0.FullName = md.FullName().Append(fd.Name()) + fd.L0.ParentFile = md.L0.ParentFile + fd.L0.Parent = md + fd.L0.Index = n + + if fd.L1.IsWeak || fd.L1.EditionFeatures.IsPacked { + fd.L1.Options = func() protoreflect.ProtoMessage { + opts := descopts.Field.ProtoReflect().New() + if fd.L1.IsWeak { + opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true)) + } + if fd.L1.EditionFeatures.IsPacked { + opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.EditionFeatures.IsPacked)) + } + return opts.Interface() + } + } + + // Populate Enum and Message. + if fd.Enum() == nil && fd.Kind() == protoreflect.EnumKind { + switch v := reflect.Zero(t).Interface().(type) { + case protoreflect.Enum: + fd.L1.Enum = v.Descriptor() + default: + fd.L1.Enum = LegacyLoadEnumDesc(t) + } + } + if fd.Message() == nil && (fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind) { + switch v := reflect.Zero(t).Interface().(type) { + case protoreflect.ProtoMessage: + fd.L1.Message = v.ProtoReflect().Descriptor() + case messageV1: + fd.L1.Message = LegacyLoadMessageDesc(t) + default: + if t.Kind() == reflect.Map { + n := len(md.L1.Messages.List) + md.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)}) + md2 := &md.L1.Messages.List[n] + md2.L0.FullName = md.FullName().Append(protoreflect.Name(strs.MapEntryName(string(fd.Name())))) + md2.L0.ParentFile = md.L0.ParentFile + md2.L0.Parent = md + md2.L0.Index = n + md2.L1.EditionFeatures = md.L1.EditionFeatures + + md2.L1.IsMapEntry = true + md2.L2.Options = func() protoreflect.ProtoMessage { + opts := descopts.Message.ProtoReflect().New() + opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOfBool(true)) + return opts.Interface() + } + + aberrantAppendField(md2, t.Key(), tagKey, "", "") + aberrantAppendField(md2, t.Elem(), tagVal, "", "") + + fd.L1.Message = md2 + break + } + fd.L1.Message = aberrantLoadMessageDescReentrant(t, "") + } + } +} + +type placeholderEnumValues struct { + protoreflect.EnumValueDescriptors +} + +func (placeholderEnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor { + return filedesc.PlaceholderEnumValue(protoreflect.FullName(fmt.Sprintf("UNKNOWN_%d", n))) +} + +// legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder. +type legacyMarshaler interface { + Marshal() ([]byte, error) +} + +// legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder. +type legacyUnmarshaler interface { + Unmarshal([]byte) error +} + +// legacyMerger is the proto.Merger interface superseded by protoiface.Methoder. +type legacyMerger interface { + Merge(protoiface.MessageV1) +} + +var aberrantProtoMethods = &protoiface.Methods{ + Marshal: legacyMarshal, + Unmarshal: legacyUnmarshal, + Merge: legacyMerge, + + // We have no way to tell whether the type's Marshal method + // supports deterministic serialization or not, but this + // preserves the v1 implementation's behavior of always + // calling Marshal methods when present. + Flags: protoiface.SupportMarshalDeterministic, +} + +func legacyMarshal(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + v := in.Message.(unwrapper).protoUnwrap() + marshaler, ok := v.(legacyMarshaler) + if !ok { + return protoiface.MarshalOutput{}, errors.New("%T does not implement Marshal", v) + } + out, err := marshaler.Marshal() + if in.Buf != nil { + out = append(in.Buf, out...) + } + return protoiface.MarshalOutput{ + Buf: out, + }, err +} + +func legacyUnmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + v := in.Message.(unwrapper).protoUnwrap() + unmarshaler, ok := v.(legacyUnmarshaler) + if !ok { + return protoiface.UnmarshalOutput{}, errors.New("%T does not implement Unmarshal", v) + } + return protoiface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf) +} + +func legacyMerge(in protoiface.MergeInput) protoiface.MergeOutput { + // Check whether this supports the legacy merger. + dstv := in.Destination.(unwrapper).protoUnwrap() + merger, ok := dstv.(legacyMerger) + if ok { + merger.Merge(Export{}.ProtoMessageV1Of(in.Source)) + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} + } + + // If legacy merger is unavailable, implement merge in terms of + // a marshal and unmarshal operation. + srcv := in.Source.(unwrapper).protoUnwrap() + marshaler, ok := srcv.(legacyMarshaler) + if !ok { + return protoiface.MergeOutput{} + } + dstv = in.Destination.(unwrapper).protoUnwrap() + unmarshaler, ok := dstv.(legacyUnmarshaler) + if !ok { + return protoiface.MergeOutput{} + } + if !in.Source.IsValid() { + // Legacy Marshal methods may not function on nil messages. + // Check for a typed nil source only after we confirm that + // legacy Marshal/Unmarshal methods are present, for + // consistency. + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} + } + b, err := marshaler.Marshal() + if err != nil { + return protoiface.MergeOutput{} + } + err = unmarshaler.Unmarshal(b) + if err != nil { + return protoiface.MergeOutput{} + } + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} +} + +// aberrantMessageType implements MessageType for all types other than pointer-to-struct. +type aberrantMessageType struct { + t reflect.Type +} + +func (mt aberrantMessageType) New() protoreflect.Message { + if mt.t.Kind() == reflect.Ptr { + return aberrantMessage{reflect.New(mt.t.Elem())} + } + return aberrantMessage{reflect.Zero(mt.t)} +} +func (mt aberrantMessageType) Zero() protoreflect.Message { + return aberrantMessage{reflect.Zero(mt.t)} +} +func (mt aberrantMessageType) GoType() reflect.Type { + return mt.t +} +func (mt aberrantMessageType) Descriptor() protoreflect.MessageDescriptor { + return LegacyLoadMessageDesc(mt.t) +} + +// aberrantMessage implements Message for all types other than pointer-to-struct. +// +// When the underlying type implements legacyMarshaler or legacyUnmarshaler, +// the aberrant Message can be marshaled or unmarshaled. Otherwise, there is +// not much that can be done with values of this type. +type aberrantMessage struct { + v reflect.Value +} + +// Reset implements the v1 proto.Message.Reset method. +func (m aberrantMessage) Reset() { + if mr, ok := m.v.Interface().(interface{ Reset() }); ok { + mr.Reset() + return + } + if m.v.Kind() == reflect.Ptr && !m.v.IsNil() { + m.v.Elem().Set(reflect.Zero(m.v.Type().Elem())) + } +} + +func (m aberrantMessage) ProtoReflect() protoreflect.Message { + return m +} + +func (m aberrantMessage) Descriptor() protoreflect.MessageDescriptor { + return LegacyLoadMessageDesc(m.v.Type()) +} +func (m aberrantMessage) Type() protoreflect.MessageType { + return aberrantMessageType{m.v.Type()} +} +func (m aberrantMessage) New() protoreflect.Message { + if m.v.Type().Kind() == reflect.Ptr { + return aberrantMessage{reflect.New(m.v.Type().Elem())} + } + return aberrantMessage{reflect.Zero(m.v.Type())} +} +func (m aberrantMessage) Interface() protoreflect.ProtoMessage { + return m +} +func (m aberrantMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + return +} +func (m aberrantMessage) Has(protoreflect.FieldDescriptor) bool { + return false +} +func (m aberrantMessage) Clear(protoreflect.FieldDescriptor) { + panic("invalid Message.Clear on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { + if fd.Default().IsValid() { + return fd.Default() + } + panic("invalid Message.Get on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) { + panic("invalid Message.Set on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) Mutable(protoreflect.FieldDescriptor) protoreflect.Value { + panic("invalid Message.Mutable on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value { + panic("invalid Message.NewField on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + panic("invalid Message.WhichOneof descriptor on " + string(m.Descriptor().FullName())) +} +func (m aberrantMessage) GetUnknown() protoreflect.RawFields { + return nil +} +func (m aberrantMessage) SetUnknown(protoreflect.RawFields) { + // SetUnknown discards its input on messages which don't support unknown field storage. +} +func (m aberrantMessage) IsValid() bool { + if m.v.Kind() == reflect.Ptr { + return !m.v.IsNil() + } + return false +} +func (m aberrantMessage) ProtoMethods() *protoiface.Methods { + return aberrantProtoMethods +} +func (m aberrantMessage) protoUnwrap() any { + return m.v.Interface() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go new file mode 100644 index 0000000..7e65f64 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge.go @@ -0,0 +1,176 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +type mergeOptions struct{} + +func (o mergeOptions) Merge(dst, src proto.Message) { + proto.Merge(dst, src) +} + +// merge is protoreflect.Methods.Merge. +func (mi *MessageInfo) merge(in protoiface.MergeInput) protoiface.MergeOutput { + dp, ok := mi.getPointer(in.Destination) + if !ok { + return protoiface.MergeOutput{} + } + sp, ok := mi.getPointer(in.Source) + if !ok { + return protoiface.MergeOutput{} + } + mi.mergePointer(dp, sp, mergeOptions{}) + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} +} + +func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) { + mi.init() + if dst.IsNil() { + panic(fmt.Sprintf("invalid value: merging into nil message")) + } + if src.IsNil() { + return + } + for _, f := range mi.orderedCoderFields { + if f.funcs.merge == nil { + continue + } + sfptr := src.Apply(f.offset) + if f.isPointer && sfptr.Elem().IsNil() { + continue + } + f.funcs.merge(dst.Apply(f.offset), sfptr, f, opts) + } + if mi.extensionOffset.IsValid() { + sext := src.Apply(mi.extensionOffset).Extensions() + dext := dst.Apply(mi.extensionOffset).Extensions() + if *dext == nil { + *dext = make(map[int32]ExtensionField) + } + for num, sx := range *sext { + xt := sx.Type() + xi := getExtensionFieldInfo(xt) + if xi.funcs.merge == nil { + continue + } + dx := (*dext)[num] + var dv protoreflect.Value + if dx.Type() == sx.Type() { + dv = dx.Value() + } + if !dv.IsValid() && xi.unmarshalNeedsValue { + dv = xt.New() + } + dv = xi.funcs.merge(dv, sx.Value(), opts) + dx.Set(sx.Type(), dv) + (*dext)[num] = dx + } + } + if mi.unknownOffset.IsValid() { + su := mi.getUnknownBytes(src) + if su != nil && len(*su) > 0 { + du := mi.mutableUnknownBytes(dst) + *du = append(*du, *su...) + } + } +} + +func mergeScalarValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + return src +} + +func mergeBytesValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + return protoreflect.ValueOfBytes(append(emptyBuf[:], src.Bytes()...)) +} + +func mergeListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + dstl := dst.List() + srcl := src.List() + for i, llen := 0, srcl.Len(); i < llen; i++ { + dstl.Append(srcl.Get(i)) + } + return dst +} + +func mergeBytesListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + dstl := dst.List() + srcl := src.List() + for i, llen := 0, srcl.Len(); i < llen; i++ { + sb := srcl.Get(i).Bytes() + db := append(emptyBuf[:], sb...) + dstl.Append(protoreflect.ValueOfBytes(db)) + } + return dst +} + +func mergeMessageListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + dstl := dst.List() + srcl := src.List() + for i, llen := 0, srcl.Len(); i < llen; i++ { + sm := srcl.Get(i).Message() + dm := proto.Clone(sm.Interface()).ProtoReflect() + dstl.Append(protoreflect.ValueOfMessage(dm)) + } + return dst +} + +func mergeMessageValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + opts.Merge(dst.Message().Interface(), src.Message().Interface()) + return dst +} + +func mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + if f.mi != nil { + if dst.Elem().IsNil() { + dst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) + } + f.mi.mergePointer(dst.Elem(), src.Elem(), opts) + } else { + dm := dst.AsValueOf(f.ft).Elem() + sm := src.AsValueOf(f.ft).Elem() + if dm.IsNil() { + dm.Set(reflect.New(f.ft.Elem())) + } + opts.Merge(asMessage(dm), asMessage(sm)) + } +} + +func mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { + for _, sp := range src.PointerSlice() { + dm := reflect.New(f.ft.Elem().Elem()) + if f.mi != nil { + f.mi.mergePointer(pointerOfValue(dm), sp, opts) + } else { + opts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem()))) + } + dst.AppendPointerSlice(pointerOfValue(dm)) + } +} + +func mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Bytes() = append(emptyBuf[:], *src.Bytes()...) +} + +func mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Bytes() + if len(v) > 0 { + *dst.Bytes() = append(emptyBuf[:], v...) + } +} + +func mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.BytesSlice() + for _, v := range *src.BytesSlice() { + *ds = append(*ds, append(emptyBuf[:], v...)) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go new file mode 100644 index 0000000..8816c27 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go @@ -0,0 +1,209 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package impl + +import () + +func mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Bool() = *src.Bool() +} + +func mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Bool() + if v != false { + *dst.Bool() = v + } +} + +func mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.BoolPtr() + if p != nil { + v := *p + *dst.BoolPtr() = &v + } +} + +func mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.BoolSlice() + ss := src.BoolSlice() + *ds = append(*ds, *ss...) +} + +func mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Int32() = *src.Int32() +} + +func mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Int32() + if v != 0 { + *dst.Int32() = v + } +} + +func mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Int32Ptr() + if p != nil { + v := *p + *dst.Int32Ptr() = &v + } +} + +func mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Int32Slice() + ss := src.Int32Slice() + *ds = append(*ds, *ss...) +} + +func mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Uint32() = *src.Uint32() +} + +func mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Uint32() + if v != 0 { + *dst.Uint32() = v + } +} + +func mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Uint32Ptr() + if p != nil { + v := *p + *dst.Uint32Ptr() = &v + } +} + +func mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Uint32Slice() + ss := src.Uint32Slice() + *ds = append(*ds, *ss...) +} + +func mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Int64() = *src.Int64() +} + +func mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Int64() + if v != 0 { + *dst.Int64() = v + } +} + +func mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Int64Ptr() + if p != nil { + v := *p + *dst.Int64Ptr() = &v + } +} + +func mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Int64Slice() + ss := src.Int64Slice() + *ds = append(*ds, *ss...) +} + +func mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Uint64() = *src.Uint64() +} + +func mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Uint64() + if v != 0 { + *dst.Uint64() = v + } +} + +func mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Uint64Ptr() + if p != nil { + v := *p + *dst.Uint64Ptr() = &v + } +} + +func mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Uint64Slice() + ss := src.Uint64Slice() + *ds = append(*ds, *ss...) +} + +func mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Float32() = *src.Float32() +} + +func mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Float32() + if v != 0 { + *dst.Float32() = v + } +} + +func mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Float32Ptr() + if p != nil { + v := *p + *dst.Float32Ptr() = &v + } +} + +func mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Float32Slice() + ss := src.Float32Slice() + *ds = append(*ds, *ss...) +} + +func mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.Float64() = *src.Float64() +} + +func mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.Float64() + if v != 0 { + *dst.Float64() = v + } +} + +func mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.Float64Ptr() + if p != nil { + v := *p + *dst.Float64Ptr() = &v + } +} + +func mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.Float64Slice() + ss := src.Float64Slice() + *ds = append(*ds, *ss...) +} + +func mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + *dst.String() = *src.String() +} + +func mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + v := *src.String() + if v != "" { + *dst.String() = v + } +} + +func mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + p := *src.StringPtr() + if p != nil { + v := *p + *dst.StringPtr() = &v + } +} + +func mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { + ds := dst.StringSlice() + ss := src.StringSlice() + *ds = append(*ds, *ss...) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go new file mode 100644 index 0000000..019399d --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message.go @@ -0,0 +1,284 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "sync" + "sync/atomic" + + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// MessageInfo provides protobuf related functionality for a given Go type +// that represents a message. A given instance of MessageInfo is tied to +// exactly one Go type, which must be a pointer to a struct type. +// +// The exported fields must be populated before any methods are called +// and cannot be mutated after set. +type MessageInfo struct { + // GoReflectType is the underlying message Go type and must be populated. + GoReflectType reflect.Type // pointer to struct + + // Desc is the underlying message descriptor type and must be populated. + Desc protoreflect.MessageDescriptor + + // Exporter must be provided in a purego environment in order to provide + // access to unexported fields. + Exporter exporter + + // OneofWrappers is list of pointers to oneof wrapper struct types. + OneofWrappers []any + + initMu sync.Mutex // protects all unexported fields + initDone uint32 + + reflectMessageInfo // for reflection implementation + coderMessageInfo // for fast-path method implementations +} + +// exporter is a function that returns a reference to the ith field of v, +// where v is a pointer to a struct. It returns nil if it does not support +// exporting the requested field (e.g., already exported). +type exporter func(v any, i int) any + +// getMessageInfo returns the MessageInfo for any message type that +// is generated by our implementation of protoc-gen-go (for v2 and on). +// If it is unable to obtain a MessageInfo, it returns nil. +func getMessageInfo(mt reflect.Type) *MessageInfo { + m, ok := reflect.Zero(mt).Interface().(protoreflect.ProtoMessage) + if !ok { + return nil + } + mr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo }) + if !ok { + return nil + } + return mr.ProtoMessageInfo() +} + +func (mi *MessageInfo) init() { + // This function is called in the hot path. Inline the sync.Once logic, + // since allocating a closure for Once.Do is expensive. + // Keep init small to ensure that it can be inlined. + if atomic.LoadUint32(&mi.initDone) == 0 { + mi.initOnce() + } +} + +func (mi *MessageInfo) initOnce() { + mi.initMu.Lock() + defer mi.initMu.Unlock() + if mi.initDone == 1 { + return + } + + t := mi.GoReflectType + if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct { + panic(fmt.Sprintf("got %v, want *struct kind", t)) + } + t = t.Elem() + + si := mi.makeStructInfo(t) + mi.makeReflectFuncs(t, si) + mi.makeCoderMethods(t, si) + + atomic.StoreUint32(&mi.initDone, 1) +} + +// getPointer returns the pointer for a message, which should be of +// the type of the MessageInfo. If the message is of a different type, +// it returns ok==false. +func (mi *MessageInfo) getPointer(m protoreflect.Message) (p pointer, ok bool) { + switch m := m.(type) { + case *messageState: + return m.pointer(), m.messageInfo() == mi + case *messageReflectWrapper: + return m.pointer(), m.messageInfo() == mi + } + return pointer{}, false +} + +type ( + SizeCache = int32 + WeakFields = map[int32]protoreflect.ProtoMessage + UnknownFields = unknownFieldsA // TODO: switch to unknownFieldsB + unknownFieldsA = []byte + unknownFieldsB = *[]byte + ExtensionFields = map[int32]ExtensionField +) + +var ( + sizecacheType = reflect.TypeOf(SizeCache(0)) + weakFieldsType = reflect.TypeOf(WeakFields(nil)) + unknownFieldsAType = reflect.TypeOf(unknownFieldsA(nil)) + unknownFieldsBType = reflect.TypeOf(unknownFieldsB(nil)) + extensionFieldsType = reflect.TypeOf(ExtensionFields(nil)) +) + +type structInfo struct { + sizecacheOffset offset + sizecacheType reflect.Type + weakOffset offset + weakType reflect.Type + unknownOffset offset + unknownType reflect.Type + extensionOffset offset + extensionType reflect.Type + + fieldsByNumber map[protoreflect.FieldNumber]reflect.StructField + oneofsByName map[protoreflect.Name]reflect.StructField + oneofWrappersByType map[reflect.Type]protoreflect.FieldNumber + oneofWrappersByNumber map[protoreflect.FieldNumber]reflect.Type +} + +func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo { + si := structInfo{ + sizecacheOffset: invalidOffset, + weakOffset: invalidOffset, + unknownOffset: invalidOffset, + extensionOffset: invalidOffset, + + fieldsByNumber: map[protoreflect.FieldNumber]reflect.StructField{}, + oneofsByName: map[protoreflect.Name]reflect.StructField{}, + oneofWrappersByType: map[reflect.Type]protoreflect.FieldNumber{}, + oneofWrappersByNumber: map[protoreflect.FieldNumber]reflect.Type{}, + } + +fieldLoop: + for i := 0; i < t.NumField(); i++ { + switch f := t.Field(i); f.Name { + case genid.SizeCache_goname, genid.SizeCacheA_goname: + if f.Type == sizecacheType { + si.sizecacheOffset = offsetOf(f, mi.Exporter) + si.sizecacheType = f.Type + } + case genid.WeakFields_goname, genid.WeakFieldsA_goname: + if f.Type == weakFieldsType { + si.weakOffset = offsetOf(f, mi.Exporter) + si.weakType = f.Type + } + case genid.UnknownFields_goname, genid.UnknownFieldsA_goname: + if f.Type == unknownFieldsAType || f.Type == unknownFieldsBType { + si.unknownOffset = offsetOf(f, mi.Exporter) + si.unknownType = f.Type + } + case genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname: + if f.Type == extensionFieldsType { + si.extensionOffset = offsetOf(f, mi.Exporter) + si.extensionType = f.Type + } + default: + for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { + if len(s) > 0 && strings.Trim(s, "0123456789") == "" { + n, _ := strconv.ParseUint(s, 10, 64) + si.fieldsByNumber[protoreflect.FieldNumber(n)] = f + continue fieldLoop + } + } + if s := f.Tag.Get("protobuf_oneof"); len(s) > 0 { + si.oneofsByName[protoreflect.Name(s)] = f + continue fieldLoop + } + } + } + + // Derive a mapping of oneof wrappers to fields. + oneofWrappers := mi.OneofWrappers + methods := make([]reflect.Method, 0, 2) + if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofFuncs"); ok { + methods = append(methods, m) + } + if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofWrappers"); ok { + methods = append(methods, m) + } + for _, fn := range methods { + for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { + if vs, ok := v.Interface().([]any); ok { + oneofWrappers = vs + } + } + } + for _, v := range oneofWrappers { + tf := reflect.TypeOf(v).Elem() + f := tf.Field(0) + for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { + if len(s) > 0 && strings.Trim(s, "0123456789") == "" { + n, _ := strconv.ParseUint(s, 10, 64) + si.oneofWrappersByType[tf] = protoreflect.FieldNumber(n) + si.oneofWrappersByNumber[protoreflect.FieldNumber(n)] = tf + break + } + } + } + + return si +} + +func (mi *MessageInfo) New() protoreflect.Message { + m := reflect.New(mi.GoReflectType.Elem()).Interface() + if r, ok := m.(protoreflect.ProtoMessage); ok { + return r.ProtoReflect() + } + return mi.MessageOf(m) +} +func (mi *MessageInfo) Zero() protoreflect.Message { + return mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface()) +} +func (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor { + return mi.Desc +} +func (mi *MessageInfo) Enum(i int) protoreflect.EnumType { + mi.init() + fd := mi.Desc.Fields().Get(i) + return Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()]) +} +func (mi *MessageInfo) Message(i int) protoreflect.MessageType { + mi.init() + fd := mi.Desc.Fields().Get(i) + switch { + case fd.IsWeak(): + mt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName()) + return mt + case fd.IsMap(): + return mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]} + default: + return Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()]) + } +} + +type mapEntryType struct { + desc protoreflect.MessageDescriptor + valType any // zero value of enum or message type +} + +func (mt mapEntryType) New() protoreflect.Message { + return nil +} +func (mt mapEntryType) Zero() protoreflect.Message { + return nil +} +func (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor { + return mt.desc +} +func (mt mapEntryType) Enum(i int) protoreflect.EnumType { + fd := mt.desc.Fields().Get(i) + if fd.Enum() == nil { + return nil + } + return Export{}.EnumTypeOf(mt.valType) +} +func (mt mapEntryType) Message(i int) protoreflect.MessageType { + fd := mt.desc.Fields().Get(i) + if fd.Message() == nil { + return nil + } + return Export{}.MessageTypeOf(mt.valType) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go new file mode 100644 index 0000000..ecb4623 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go @@ -0,0 +1,462 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "reflect" + + "google.golang.org/protobuf/internal/detrand" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +type reflectMessageInfo struct { + fields map[protoreflect.FieldNumber]*fieldInfo + oneofs map[protoreflect.Name]*oneofInfo + + // fieldTypes contains the zero value of an enum or message field. + // For lists, it contains the element type. + // For maps, it contains the entry value type. + fieldTypes map[protoreflect.FieldNumber]any + + // denseFields is a subset of fields where: + // 0 < fieldDesc.Number() < len(denseFields) + // It provides faster access to the fieldInfo, but may be incomplete. + denseFields []*fieldInfo + + // rangeInfos is a list of all fields (not belonging to a oneof) and oneofs. + rangeInfos []any // either *fieldInfo or *oneofInfo + + getUnknown func(pointer) protoreflect.RawFields + setUnknown func(pointer, protoreflect.RawFields) + extensionMap func(pointer) *extensionMap + + nilMessage atomicNilMessage +} + +// makeReflectFuncs generates the set of functions to support reflection. +func (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) { + mi.makeKnownFieldsFunc(si) + mi.makeUnknownFieldsFunc(t, si) + mi.makeExtensionFieldsFunc(t, si) + mi.makeFieldTypes(si) +} + +// makeKnownFieldsFunc generates functions for operations that can be performed +// on each protobuf message field. It takes in a reflect.Type representing the +// Go struct and matches message fields with struct fields. +// +// This code assumes that the struct is well-formed and panics if there are +// any discrepancies. +func (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) { + mi.fields = map[protoreflect.FieldNumber]*fieldInfo{} + md := mi.Desc + fds := md.Fields() + for i := 0; i < fds.Len(); i++ { + fd := fds.Get(i) + fs := si.fieldsByNumber[fd.Number()] + isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() + if isOneof { + fs = si.oneofsByName[fd.ContainingOneof().Name()] + } + var fi fieldInfo + switch { + case fs.Type == nil: + fi = fieldInfoForMissing(fd) // never occurs for officially generated message types + case isOneof: + fi = fieldInfoForOneof(fd, fs, mi.Exporter, si.oneofWrappersByNumber[fd.Number()]) + case fd.IsMap(): + fi = fieldInfoForMap(fd, fs, mi.Exporter) + case fd.IsList(): + fi = fieldInfoForList(fd, fs, mi.Exporter) + case fd.IsWeak(): + fi = fieldInfoForWeakMessage(fd, si.weakOffset) + case fd.Message() != nil: + fi = fieldInfoForMessage(fd, fs, mi.Exporter) + default: + fi = fieldInfoForScalar(fd, fs, mi.Exporter) + } + mi.fields[fd.Number()] = &fi + } + + mi.oneofs = map[protoreflect.Name]*oneofInfo{} + for i := 0; i < md.Oneofs().Len(); i++ { + od := md.Oneofs().Get(i) + mi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter) + } + + mi.denseFields = make([]*fieldInfo, fds.Len()*2) + for i := 0; i < fds.Len(); i++ { + if fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) { + mi.denseFields[fd.Number()] = mi.fields[fd.Number()] + } + } + + for i := 0; i < fds.Len(); { + fd := fds.Get(i) + if od := fd.ContainingOneof(); od != nil && !od.IsSynthetic() { + mi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()]) + i += od.Fields().Len() + } else { + mi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()]) + i++ + } + } + + // Introduce instability to iteration order, but keep it deterministic. + if len(mi.rangeInfos) > 1 && detrand.Bool() { + i := detrand.Intn(len(mi.rangeInfos) - 1) + mi.rangeInfos[i], mi.rangeInfos[i+1] = mi.rangeInfos[i+1], mi.rangeInfos[i] + } +} + +func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) { + switch { + case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType: + // Handle as []byte. + mi.getUnknown = func(p pointer) protoreflect.RawFields { + if p.IsNil() { + return nil + } + return *p.Apply(mi.unknownOffset).Bytes() + } + mi.setUnknown = func(p pointer, b protoreflect.RawFields) { + if p.IsNil() { + panic("invalid SetUnknown on nil Message") + } + *p.Apply(mi.unknownOffset).Bytes() = b + } + case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType: + // Handle as *[]byte. + mi.getUnknown = func(p pointer) protoreflect.RawFields { + if p.IsNil() { + return nil + } + bp := p.Apply(mi.unknownOffset).BytesPtr() + if *bp == nil { + return nil + } + return **bp + } + mi.setUnknown = func(p pointer, b protoreflect.RawFields) { + if p.IsNil() { + panic("invalid SetUnknown on nil Message") + } + bp := p.Apply(mi.unknownOffset).BytesPtr() + if *bp == nil { + *bp = new([]byte) + } + **bp = b + } + default: + mi.getUnknown = func(pointer) protoreflect.RawFields { + return nil + } + mi.setUnknown = func(p pointer, _ protoreflect.RawFields) { + if p.IsNil() { + panic("invalid SetUnknown on nil Message") + } + } + } +} + +func (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type, si structInfo) { + if si.extensionOffset.IsValid() { + mi.extensionMap = func(p pointer) *extensionMap { + if p.IsNil() { + return (*extensionMap)(nil) + } + v := p.Apply(si.extensionOffset).AsValueOf(extensionFieldsType) + return (*extensionMap)(v.Interface().(*map[int32]ExtensionField)) + } + } else { + mi.extensionMap = func(pointer) *extensionMap { + return (*extensionMap)(nil) + } + } +} +func (mi *MessageInfo) makeFieldTypes(si structInfo) { + md := mi.Desc + fds := md.Fields() + for i := 0; i < fds.Len(); i++ { + var ft reflect.Type + fd := fds.Get(i) + fs := si.fieldsByNumber[fd.Number()] + isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() + if isOneof { + fs = si.oneofsByName[fd.ContainingOneof().Name()] + } + var isMessage bool + switch { + case fs.Type == nil: + continue // never occurs for officially generated message types + case isOneof: + if fd.Enum() != nil || fd.Message() != nil { + ft = si.oneofWrappersByNumber[fd.Number()].Field(0).Type + } + case fd.IsMap(): + if fd.MapValue().Enum() != nil || fd.MapValue().Message() != nil { + ft = fs.Type.Elem() + } + isMessage = fd.MapValue().Message() != nil + case fd.IsList(): + if fd.Enum() != nil || fd.Message() != nil { + ft = fs.Type.Elem() + } + isMessage = fd.Message() != nil + case fd.Enum() != nil: + ft = fs.Type + if fd.HasPresence() && ft.Kind() == reflect.Ptr { + ft = ft.Elem() + } + case fd.Message() != nil: + ft = fs.Type + if fd.IsWeak() { + ft = nil + } + isMessage = true + } + if isMessage && ft != nil && ft.Kind() != reflect.Ptr { + ft = reflect.PtrTo(ft) // never occurs for officially generated message types + } + if ft != nil { + if mi.fieldTypes == nil { + mi.fieldTypes = make(map[protoreflect.FieldNumber]any) + } + mi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface() + } + } +} + +type extensionMap map[int32]ExtensionField + +func (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if m != nil { + for _, x := range *m { + xd := x.Type().TypeDescriptor() + v := x.Value() + if xd.IsList() && v.List().Len() == 0 { + continue + } + if !f(xd, v) { + return + } + } + } +} +func (m *extensionMap) Has(xd protoreflect.ExtensionTypeDescriptor) (ok bool) { + if m == nil { + return false + } + x, ok := (*m)[int32(xd.Number())] + if !ok { + return false + } + if x.isUnexpandedLazy() { + // Avoid calling x.Value(), which triggers a lazy unmarshal. + return true + } + switch { + case xd.IsList(): + return x.Value().List().Len() > 0 + case xd.IsMap(): + return x.Value().Map().Len() > 0 + } + return true +} +func (m *extensionMap) Clear(xd protoreflect.ExtensionTypeDescriptor) { + delete(*m, int32(xd.Number())) +} +func (m *extensionMap) Get(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { + if m != nil { + if x, ok := (*m)[int32(xd.Number())]; ok { + return x.Value() + } + } + return xd.Type().Zero() +} +func (m *extensionMap) Set(xd protoreflect.ExtensionTypeDescriptor, v protoreflect.Value) { + xt := xd.Type() + isValid := true + switch { + case !xt.IsValidValue(v): + isValid = false + case xd.IsList(): + isValid = v.List().IsValid() + case xd.IsMap(): + isValid = v.Map().IsValid() + case xd.Message() != nil: + isValid = v.Message().IsValid() + } + if !isValid { + panic(fmt.Sprintf("%v: assigning invalid value", xd.FullName())) + } + + if *m == nil { + *m = make(map[int32]ExtensionField) + } + var x ExtensionField + x.Set(xt, v) + (*m)[int32(xd.Number())] = x +} +func (m *extensionMap) Mutable(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { + if xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() { + panic("invalid Mutable on field with non-composite type") + } + if x, ok := (*m)[int32(xd.Number())]; ok { + return x.Value() + } + v := xd.Type().New() + m.Set(xd, v) + return v +} + +// MessageState is a data structure that is nested as the first field in a +// concrete message. It provides a way to implement the ProtoReflect method +// in an allocation-free way without needing to have a shadow Go type generated +// for every message type. This technique only works using unsafe. +// +// Example generated code: +// +// type M struct { +// state protoimpl.MessageState +// +// Field1 int32 +// Field2 string +// Field3 *BarMessage +// ... +// } +// +// func (m *M) ProtoReflect() protoreflect.Message { +// mi := &file_fizz_buzz_proto_msgInfos[5] +// if protoimpl.UnsafeEnabled && m != nil { +// ms := protoimpl.X.MessageStateOf(Pointer(m)) +// if ms.LoadMessageInfo() == nil { +// ms.StoreMessageInfo(mi) +// } +// return ms +// } +// return mi.MessageOf(m) +// } +// +// The MessageState type holds a *MessageInfo, which must be atomically set to +// the message info associated with a given message instance. +// By unsafely converting a *M into a *MessageState, the MessageState object +// has access to all the information needed to implement protobuf reflection. +// It has access to the message info as its first field, and a pointer to the +// MessageState is identical to a pointer to the concrete message value. +// +// Requirements: +// - The type M must implement protoreflect.ProtoMessage. +// - The address of m must not be nil. +// - The address of m and the address of m.state must be equal, +// even though they are different Go types. +type MessageState struct { + pragma.NoUnkeyedLiterals + pragma.DoNotCompare + pragma.DoNotCopy + + atomicMessageInfo *MessageInfo +} + +type messageState MessageState + +var ( + _ protoreflect.Message = (*messageState)(nil) + _ unwrapper = (*messageState)(nil) +) + +// messageDataType is a tuple of a pointer to the message data and +// a pointer to the message type. It is a generalized way of providing a +// reflective view over a message instance. The disadvantage of this approach +// is the need to allocate this tuple of 16B. +type messageDataType struct { + p pointer + mi *MessageInfo +} + +type ( + messageReflectWrapper messageDataType + messageIfaceWrapper messageDataType +) + +var ( + _ protoreflect.Message = (*messageReflectWrapper)(nil) + _ unwrapper = (*messageReflectWrapper)(nil) + _ protoreflect.ProtoMessage = (*messageIfaceWrapper)(nil) + _ unwrapper = (*messageIfaceWrapper)(nil) +) + +// MessageOf returns a reflective view over a message. The input must be a +// pointer to a named Go struct. If the provided type has a ProtoReflect method, +// it must be implemented by calling this method. +func (mi *MessageInfo) MessageOf(m any) protoreflect.Message { + if reflect.TypeOf(m) != mi.GoReflectType { + panic(fmt.Sprintf("type mismatch: got %T, want %v", m, mi.GoReflectType)) + } + p := pointerOfIface(m) + if p.IsNil() { + return mi.nilMessage.Init(mi) + } + return &messageReflectWrapper{p, mi} +} + +func (m *messageReflectWrapper) pointer() pointer { return m.p } +func (m *messageReflectWrapper) messageInfo() *MessageInfo { return m.mi } + +// Reset implements the v1 proto.Message.Reset method. +func (m *messageIfaceWrapper) Reset() { + if mr, ok := m.protoUnwrap().(interface{ Reset() }); ok { + mr.Reset() + return + } + rv := reflect.ValueOf(m.protoUnwrap()) + if rv.Kind() == reflect.Ptr && !rv.IsNil() { + rv.Elem().Set(reflect.Zero(rv.Type().Elem())) + } +} +func (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message { + return (*messageReflectWrapper)(m) +} +func (m *messageIfaceWrapper) protoUnwrap() any { + return m.p.AsIfaceOf(m.mi.GoReflectType.Elem()) +} + +// checkField verifies that the provided field descriptor is valid. +// Exactly one of the returned values is populated. +func (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionTypeDescriptor) { + var fi *fieldInfo + if n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) { + fi = mi.denseFields[n] + } else { + fi = mi.fields[n] + } + if fi != nil { + if fi.fieldDesc != fd { + if got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want { + panic(fmt.Sprintf("mismatching field: got %v, want %v", got, want)) + } + panic(fmt.Sprintf("mismatching field: %v", fd.FullName())) + } + return fi, nil + } + + if fd.IsExtension() { + if got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want { + // TODO: Should this be exact containing message descriptor match? + panic(fmt.Sprintf("extension %v has mismatching containing message: got %v, want %v", fd.FullName(), got, want)) + } + if !mi.Desc.ExtensionRanges().Has(fd.Number()) { + panic(fmt.Sprintf("extension %v extends %v outside the extension range", fd.FullName(), mi.Desc.FullName())) + } + xtd, ok := fd.(protoreflect.ExtensionTypeDescriptor) + if !ok { + panic(fmt.Sprintf("extension %v does not implement protoreflect.ExtensionTypeDescriptor", fd.FullName())) + } + return nil, xtd + } + panic(fmt.Sprintf("field %v is invalid", fd.FullName())) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go new file mode 100644 index 0000000..986322b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go @@ -0,0 +1,543 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "math" + "reflect" + "sync" + + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +type fieldInfo struct { + fieldDesc protoreflect.FieldDescriptor + + // These fields are used for protobuf reflection support. + has func(pointer) bool + clear func(pointer) + get func(pointer) protoreflect.Value + set func(pointer, protoreflect.Value) + mutable func(pointer) protoreflect.Value + newMessage func() protoreflect.Message + newField func() protoreflect.Value +} + +func fieldInfoForMissing(fd protoreflect.FieldDescriptor) fieldInfo { + // This never occurs for generated message types. + // It implies that a hand-crafted type has missing Go fields + // for specific protobuf message fields. + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + return false + }, + clear: func(p pointer) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + get: func(p pointer) protoreflect.Value { + return fd.Default() + }, + set: func(p pointer, v protoreflect.Value) { + panic("missing Go struct field for " + string(fd.FullName())) + }, + mutable: func(p pointer) protoreflect.Value { + panic("missing Go struct field for " + string(fd.FullName())) + }, + newMessage: func() protoreflect.Message { + panic("missing Go struct field for " + string(fd.FullName())) + }, + newField: func() protoreflect.Value { + if v := fd.Default(); v.IsValid() { + return v + } + panic("missing Go struct field for " + string(fd.FullName())) + }, + } +} + +func fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo { + ft := fs.Type + if ft.Kind() != reflect.Interface { + panic(fmt.Sprintf("field %v has invalid type: got %v, want interface kind", fd.FullName(), ft)) + } + if ot.Kind() != reflect.Struct { + panic(fmt.Sprintf("field %v has invalid type: got %v, want struct kind", fd.FullName(), ot)) + } + if !reflect.PtrTo(ot).Implements(ft) { + panic(fmt.Sprintf("field %v has invalid type: %v does not implement %v", fd.FullName(), ot, ft)) + } + conv := NewConverter(ot.Field(0).Type, fd) + isMessage := fd.Message() != nil + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + // NOTE: The logic below intentionally assumes that oneof fields are + // well-formatted. That is, the oneof interface never contains a + // typed nil pointer to one of the wrapper structs. + + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + return false + } + return true + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot { + // NOTE: We intentionally don't check for rv.Elem().IsNil() + // so that (*OneofWrapperType)(nil) gets cleared to nil. + return + } + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + return conv.Zero() + } + rv = rv.Elem().Elem().Field(0) + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + rv.Set(reflect.New(ot)) + } + rv = rv.Elem().Elem().Field(0) + rv.Set(conv.GoValueOf(v)) + }, + mutable: func(p pointer) protoreflect.Value { + if !isMessage { + panic(fmt.Sprintf("field %v with invalid Mutable call on field with non-composite type", fd.FullName())) + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { + rv.Set(reflect.New(ot)) + } + rv = rv.Elem().Elem().Field(0) + if rv.Kind() == reflect.Ptr && rv.IsNil() { + rv.Set(conv.GoValueOf(protoreflect.ValueOfMessage(conv.New().Message()))) + } + return conv.PBValueOf(rv) + }, + newMessage: func() protoreflect.Message { + return conv.New().Message() + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +func fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + if ft.Kind() != reflect.Map { + panic(fmt.Sprintf("field %v has invalid type: got %v, want map kind", fd.FullName(), ft)) + } + conv := NewConverter(ft, fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + return rv.Len() > 0 + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.Len() == 0 { + return conv.Zero() + } + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + pv := conv.GoValueOf(v) + if pv.IsNil() { + panic(fmt.Sprintf("map field %v cannot be set with read-only value", fd.FullName())) + } + rv.Set(pv) + }, + mutable: func(p pointer) protoreflect.Value { + v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if v.IsNil() { + v.Set(reflect.MakeMap(fs.Type)) + } + return conv.PBValueOf(v) + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +func fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + if ft.Kind() != reflect.Slice { + panic(fmt.Sprintf("field %v has invalid type: got %v, want slice kind", fd.FullName(), ft)) + } + conv := NewConverter(reflect.PtrTo(ft), fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + return rv.Len() > 0 + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type) + if rv.Elem().Len() == 0 { + return conv.Zero() + } + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + pv := conv.GoValueOf(v) + if pv.IsNil() { + panic(fmt.Sprintf("list field %v cannot be set with read-only value", fd.FullName())) + } + rv.Set(pv.Elem()) + }, + mutable: func(p pointer) protoreflect.Value { + v := p.Apply(fieldOffset).AsValueOf(fs.Type) + return conv.PBValueOf(v) + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +var ( + nilBytes = reflect.ValueOf([]byte(nil)) + emptyBytes = reflect.ValueOf([]byte{}) +) + +func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + nullable := fd.HasPresence() + isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 + if nullable { + if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice { + // This never occurs for generated message types. + // Despite the protobuf type system specifying presence, + // the Go field type cannot represent it. + nullable = false + } + if ft.Kind() == reflect.Ptr { + ft = ft.Elem() + } + } + conv := NewConverter(ft, fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if nullable { + return !rv.IsNil() + } + switch rv.Kind() { + case reflect.Bool: + return rv.Bool() + case reflect.Int32, reflect.Int64: + return rv.Int() != 0 + case reflect.Uint32, reflect.Uint64: + return rv.Uint() != 0 + case reflect.Float32, reflect.Float64: + return rv.Float() != 0 || math.Signbit(rv.Float()) + case reflect.String, reflect.Slice: + return rv.Len() > 0 + default: + panic(fmt.Sprintf("field %v has invalid type: %v", fd.FullName(), rv.Type())) // should never happen + } + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if nullable { + if rv.IsNil() { + return conv.Zero() + } + if rv.Kind() == reflect.Ptr { + rv = rv.Elem() + } + } + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if nullable && rv.Kind() == reflect.Ptr { + if rv.IsNil() { + rv.Set(reflect.New(ft)) + } + rv = rv.Elem() + } + rv.Set(conv.GoValueOf(v)) + if isBytes && rv.Len() == 0 { + if nullable { + rv.Set(emptyBytes) // preserve presence + } else { + rv.Set(nilBytes) // do not preserve presence + } + } + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +func fieldInfoForWeakMessage(fd protoreflect.FieldDescriptor, weakOffset offset) fieldInfo { + if !flags.ProtoLegacy { + panic("no support for proto1 weak fields") + } + + var once sync.Once + var messageType protoreflect.MessageType + lazyInit := func() { + once.Do(func() { + messageName := fd.Message().FullName() + messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) + if messageType == nil { + panic(fmt.Sprintf("weak message %v for field %v is not linked in", messageName, fd.FullName())) + } + }) + } + + num := fd.Number() + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + _, ok := p.Apply(weakOffset).WeakFields().get(num) + return ok + }, + clear: func(p pointer) { + p.Apply(weakOffset).WeakFields().clear(num) + }, + get: func(p pointer) protoreflect.Value { + lazyInit() + if p.IsNil() { + return protoreflect.ValueOfMessage(messageType.Zero()) + } + m, ok := p.Apply(weakOffset).WeakFields().get(num) + if !ok { + return protoreflect.ValueOfMessage(messageType.Zero()) + } + return protoreflect.ValueOfMessage(m.ProtoReflect()) + }, + set: func(p pointer, v protoreflect.Value) { + lazyInit() + m := v.Message() + if m.Descriptor() != messageType.Descriptor() { + if got, want := m.Descriptor().FullName(), messageType.Descriptor().FullName(); got != want { + panic(fmt.Sprintf("field %v has mismatching message descriptor: got %v, want %v", fd.FullName(), got, want)) + } + panic(fmt.Sprintf("field %v has mismatching message descriptor: %v", fd.FullName(), m.Descriptor().FullName())) + } + p.Apply(weakOffset).WeakFields().set(num, m.Interface()) + }, + mutable: func(p pointer) protoreflect.Value { + lazyInit() + fs := p.Apply(weakOffset).WeakFields() + m, ok := fs.get(num) + if !ok { + m = messageType.New().Interface() + fs.set(num, m) + } + return protoreflect.ValueOfMessage(m.ProtoReflect()) + }, + newMessage: func() protoreflect.Message { + lazyInit() + return messageType.New() + }, + newField: func() protoreflect.Value { + lazyInit() + return protoreflect.ValueOfMessage(messageType.New()) + }, + } +} + +func fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { + ft := fs.Type + conv := NewConverter(ft, fd) + + // TODO: Implement unsafe fast path? + fieldOffset := offsetOf(fs, x) + return fieldInfo{ + fieldDesc: fd, + has: func(p pointer) bool { + if p.IsNil() { + return false + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if fs.Type.Kind() != reflect.Ptr { + return !isZero(rv) + } + return !rv.IsNil() + }, + clear: func(p pointer) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(reflect.Zero(rv.Type())) + }, + get: func(p pointer) protoreflect.Value { + if p.IsNil() { + return conv.Zero() + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + return conv.PBValueOf(rv) + }, + set: func(p pointer, v protoreflect.Value) { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + rv.Set(conv.GoValueOf(v)) + if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { + panic(fmt.Sprintf("field %v has invalid nil pointer", fd.FullName())) + } + }, + mutable: func(p pointer) protoreflect.Value { + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { + rv.Set(conv.GoValueOf(conv.New())) + } + return conv.PBValueOf(rv) + }, + newMessage: func() protoreflect.Message { + return conv.New().Message() + }, + newField: func() protoreflect.Value { + return conv.New() + }, + } +} + +type oneofInfo struct { + oneofDesc protoreflect.OneofDescriptor + which func(pointer) protoreflect.FieldNumber +} + +func makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo { + oi := &oneofInfo{oneofDesc: od} + if od.IsSynthetic() { + fs := si.fieldsByNumber[od.Fields().Get(0).Number()] + fieldOffset := offsetOf(fs, x) + oi.which = func(p pointer) protoreflect.FieldNumber { + if p.IsNil() { + return 0 + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() { // valid on either *T or []byte + return 0 + } + return od.Fields().Get(0).Number() + } + } else { + fs := si.oneofsByName[od.Name()] + fieldOffset := offsetOf(fs, x) + oi.which = func(p pointer) protoreflect.FieldNumber { + if p.IsNil() { + return 0 + } + rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() + if rv.IsNil() { + return 0 + } + rv = rv.Elem() + if rv.IsNil() { + return 0 + } + return si.oneofWrappersByType[rv.Type().Elem()] + } + } + return oi +} + +// isZero is identical to reflect.Value.IsZero. +// TODO: Remove this when Go1.13 is the minimally supported Go version. +func isZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return math.Float64bits(v.Float()) == 0 + case reflect.Complex64, reflect.Complex128: + c := v.Complex() + return math.Float64bits(real(c)) == 0 && math.Float64bits(imag(c)) == 0 + case reflect.Array: + for i := 0; i < v.Len(); i++ { + if !isZero(v.Index(i)) { + return false + } + } + return true + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: + return v.IsNil() + case reflect.String: + return v.Len() == 0 + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + if !isZero(v.Field(i)) { + return false + } + } + return true + default: + panic(&reflect.ValueError{Method: "reflect.Value.IsZero", Kind: v.Kind()}) + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go new file mode 100644 index 0000000..99dc23c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go @@ -0,0 +1,271 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package impl + +import ( + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +func (m *messageState) Descriptor() protoreflect.MessageDescriptor { + return m.messageInfo().Desc +} +func (m *messageState) Type() protoreflect.MessageType { + return m.messageInfo() +} +func (m *messageState) New() protoreflect.Message { + return m.messageInfo().New() +} +func (m *messageState) Interface() protoreflect.ProtoMessage { + return m.protoUnwrap().(protoreflect.ProtoMessage) +} +func (m *messageState) protoUnwrap() any { + return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) +} +func (m *messageState) ProtoMethods() *protoiface.Methods { + mi := m.messageInfo() + mi.init() + return &mi.methods +} + +// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code +// to be able to retrieve a v2 MessageInfo struct. +// +// WARNING: This method is exempt from the compatibility promise and +// may be removed in the future without warning. +func (m *messageState) ProtoMessageInfo() *MessageInfo { + return m.messageInfo() +} + +func (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + mi := m.messageInfo() + mi.init() + for _, ri := range mi.rangeInfos { + switch ri := ri.(type) { + case *fieldInfo: + if ri.has(m.pointer()) { + if !f(ri.fieldDesc, ri.get(m.pointer())) { + return + } + } + case *oneofInfo: + if n := ri.which(m.pointer()); n > 0 { + fi := mi.fields[n] + if !f(fi.fieldDesc, fi.get(m.pointer())) { + return + } + } + } + } + mi.extensionMap(m.pointer()).Range(f) +} +func (m *messageState) Has(fd protoreflect.FieldDescriptor) bool { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.has(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Has(xd) + } +} +func (m *messageState) Clear(fd protoreflect.FieldDescriptor) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.clear(m.pointer()) + } else { + mi.extensionMap(m.pointer()).Clear(xd) + } +} +func (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.get(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Get(xd) + } +} +func (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.set(m.pointer(), v) + } else { + mi.extensionMap(m.pointer()).Set(xd, v) + } +} +func (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.mutable(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Mutable(xd) + } +} +func (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.newField() + } else { + return xd.Type().New() + } +} +func (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + mi := m.messageInfo() + mi.init() + if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { + return od.Fields().ByNumber(oi.which(m.pointer())) + } + panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) +} +func (m *messageState) GetUnknown() protoreflect.RawFields { + mi := m.messageInfo() + mi.init() + return mi.getUnknown(m.pointer()) +} +func (m *messageState) SetUnknown(b protoreflect.RawFields) { + mi := m.messageInfo() + mi.init() + mi.setUnknown(m.pointer(), b) +} +func (m *messageState) IsValid() bool { + return !m.pointer().IsNil() +} + +func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor { + return m.messageInfo().Desc +} +func (m *messageReflectWrapper) Type() protoreflect.MessageType { + return m.messageInfo() +} +func (m *messageReflectWrapper) New() protoreflect.Message { + return m.messageInfo().New() +} +func (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage { + if m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok { + return m + } + return (*messageIfaceWrapper)(m) +} +func (m *messageReflectWrapper) protoUnwrap() any { + return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) +} +func (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods { + mi := m.messageInfo() + mi.init() + return &mi.methods +} + +// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code +// to be able to retrieve a v2 MessageInfo struct. +// +// WARNING: This method is exempt from the compatibility promise and +// may be removed in the future without warning. +func (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo { + return m.messageInfo() +} + +func (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + mi := m.messageInfo() + mi.init() + for _, ri := range mi.rangeInfos { + switch ri := ri.(type) { + case *fieldInfo: + if ri.has(m.pointer()) { + if !f(ri.fieldDesc, ri.get(m.pointer())) { + return + } + } + case *oneofInfo: + if n := ri.which(m.pointer()); n > 0 { + fi := mi.fields[n] + if !f(fi.fieldDesc, fi.get(m.pointer())) { + return + } + } + } + } + mi.extensionMap(m.pointer()).Range(f) +} +func (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.has(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Has(xd) + } +} +func (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.clear(m.pointer()) + } else { + mi.extensionMap(m.pointer()).Clear(xd) + } +} +func (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.get(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Get(xd) + } +} +func (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + fi.set(m.pointer(), v) + } else { + mi.extensionMap(m.pointer()).Set(xd, v) + } +} +func (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.mutable(m.pointer()) + } else { + return mi.extensionMap(m.pointer()).Mutable(xd) + } +} +func (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { + return fi.newField() + } else { + return xd.Type().New() + } +} +func (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + mi := m.messageInfo() + mi.init() + if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { + return od.Fields().ByNumber(oi.which(m.pointer())) + } + panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) +} +func (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields { + mi := m.messageInfo() + mi.init() + return mi.getUnknown(m.pointer()) +} +func (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) { + mi := m.messageInfo() + mi.init() + mi.setUnknown(m.pointer(), b) +} +func (m *messageReflectWrapper) IsValid() bool { + return !m.pointer().IsNil() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go new file mode 100644 index 0000000..da685e8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go @@ -0,0 +1,215 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package impl + +import ( + "fmt" + "reflect" + "sync" +) + +const UnsafeEnabled = false + +// Pointer is an opaque pointer type. +type Pointer any + +// offset represents the offset to a struct field, accessible from a pointer. +// The offset is the field index into a struct. +type offset struct { + index int + export exporter +} + +// offsetOf returns a field offset for the struct field. +func offsetOf(f reflect.StructField, x exporter) offset { + if len(f.Index) != 1 { + panic("embedded structs are not supported") + } + if f.PkgPath == "" { + return offset{index: f.Index[0]} // field is already exported + } + if x == nil { + panic("exporter must be provided for unexported field") + } + return offset{index: f.Index[0], export: x} +} + +// IsValid reports whether the offset is valid. +func (f offset) IsValid() bool { return f.index >= 0 } + +// invalidOffset is an invalid field offset. +var invalidOffset = offset{index: -1} + +// zeroOffset is a noop when calling pointer.Apply. +var zeroOffset = offset{index: 0} + +// pointer is an abstract representation of a pointer to a struct or field. +type pointer struct{ v reflect.Value } + +// pointerOf returns p as a pointer. +func pointerOf(p Pointer) pointer { + return pointerOfIface(p) +} + +// pointerOfValue returns v as a pointer. +func pointerOfValue(v reflect.Value) pointer { + return pointer{v: v} +} + +// pointerOfIface returns the pointer portion of an interface. +func pointerOfIface(v any) pointer { + return pointer{v: reflect.ValueOf(v)} +} + +// IsNil reports whether the pointer is nil. +func (p pointer) IsNil() bool { + return p.v.IsNil() +} + +// Apply adds an offset to the pointer to derive a new pointer +// to a specified field. The current pointer must be pointing at a struct. +func (p pointer) Apply(f offset) pointer { + if f.export != nil { + if v := reflect.ValueOf(f.export(p.v.Interface(), f.index)); v.IsValid() { + return pointer{v: v} + } + } + return pointer{v: p.v.Elem().Field(f.index).Addr()} +} + +// AsValueOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t)) +func (p pointer) AsValueOf(t reflect.Type) reflect.Value { + if got := p.v.Type().Elem(); got != t { + panic(fmt.Sprintf("invalid type: got %v, want %v", got, t)) + } + return p.v +} + +// AsIfaceOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to p.AsValueOf(t).Interface() +func (p pointer) AsIfaceOf(t reflect.Type) any { + return p.AsValueOf(t).Interface() +} + +func (p pointer) Bool() *bool { return p.v.Interface().(*bool) } +func (p pointer) BoolPtr() **bool { return p.v.Interface().(**bool) } +func (p pointer) BoolSlice() *[]bool { return p.v.Interface().(*[]bool) } +func (p pointer) Int32() *int32 { return p.v.Interface().(*int32) } +func (p pointer) Int32Ptr() **int32 { return p.v.Interface().(**int32) } +func (p pointer) Int32Slice() *[]int32 { return p.v.Interface().(*[]int32) } +func (p pointer) Int64() *int64 { return p.v.Interface().(*int64) } +func (p pointer) Int64Ptr() **int64 { return p.v.Interface().(**int64) } +func (p pointer) Int64Slice() *[]int64 { return p.v.Interface().(*[]int64) } +func (p pointer) Uint32() *uint32 { return p.v.Interface().(*uint32) } +func (p pointer) Uint32Ptr() **uint32 { return p.v.Interface().(**uint32) } +func (p pointer) Uint32Slice() *[]uint32 { return p.v.Interface().(*[]uint32) } +func (p pointer) Uint64() *uint64 { return p.v.Interface().(*uint64) } +func (p pointer) Uint64Ptr() **uint64 { return p.v.Interface().(**uint64) } +func (p pointer) Uint64Slice() *[]uint64 { return p.v.Interface().(*[]uint64) } +func (p pointer) Float32() *float32 { return p.v.Interface().(*float32) } +func (p pointer) Float32Ptr() **float32 { return p.v.Interface().(**float32) } +func (p pointer) Float32Slice() *[]float32 { return p.v.Interface().(*[]float32) } +func (p pointer) Float64() *float64 { return p.v.Interface().(*float64) } +func (p pointer) Float64Ptr() **float64 { return p.v.Interface().(**float64) } +func (p pointer) Float64Slice() *[]float64 { return p.v.Interface().(*[]float64) } +func (p pointer) String() *string { return p.v.Interface().(*string) } +func (p pointer) StringPtr() **string { return p.v.Interface().(**string) } +func (p pointer) StringSlice() *[]string { return p.v.Interface().(*[]string) } +func (p pointer) Bytes() *[]byte { return p.v.Interface().(*[]byte) } +func (p pointer) BytesPtr() **[]byte { return p.v.Interface().(**[]byte) } +func (p pointer) BytesSlice() *[][]byte { return p.v.Interface().(*[][]byte) } +func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.v.Interface().(*WeakFields)) } +func (p pointer) Extensions() *map[int32]ExtensionField { + return p.v.Interface().(*map[int32]ExtensionField) +} + +func (p pointer) Elem() pointer { + return pointer{v: p.v.Elem()} +} + +// PointerSlice copies []*T from p as a new []pointer. +// This behavior differs from the implementation in pointer_unsafe.go. +func (p pointer) PointerSlice() []pointer { + // TODO: reconsider this + if p.v.IsNil() { + return nil + } + n := p.v.Elem().Len() + s := make([]pointer, n) + for i := 0; i < n; i++ { + s[i] = pointer{v: p.v.Elem().Index(i)} + } + return s +} + +// AppendPointerSlice appends v to p, which must be a []*T. +func (p pointer) AppendPointerSlice(v pointer) { + sp := p.v.Elem() + sp.Set(reflect.Append(sp, v.v)) +} + +// SetPointer sets *p to v. +func (p pointer) SetPointer(v pointer) { + p.v.Elem().Set(v.v) +} + +func growSlice(p pointer, addCap int) { + // TODO: Once we only support Go 1.20 and newer, use reflect.Grow. + in := p.v.Elem() + out := reflect.MakeSlice(in.Type(), in.Len(), in.Len()+addCap) + reflect.Copy(out, in) + p.v.Elem().Set(out) +} + +func (p pointer) growBoolSlice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growInt32Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growUint32Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growInt64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growUint64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growFloat64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growFloat32Slice(addCap int) { + growSlice(p, addCap) +} + +func (Export) MessageStateOf(p Pointer) *messageState { panic("not supported") } +func (ms *messageState) pointer() pointer { panic("not supported") } +func (ms *messageState) messageInfo() *MessageInfo { panic("not supported") } +func (ms *messageState) LoadMessageInfo() *MessageInfo { panic("not supported") } +func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { panic("not supported") } + +type atomicNilMessage struct { + once sync.Once + m messageReflectWrapper +} + +func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper { + m.once.Do(func() { + m.m.p = pointerOfIface(reflect.Zero(mi.GoReflectType).Interface()) + m.m.mi = mi + }) + return &m.m +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go new file mode 100644 index 0000000..5f20ca5 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go @@ -0,0 +1,215 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine +// +build !purego,!appengine + +package impl + +import ( + "reflect" + "sync/atomic" + "unsafe" +) + +const UnsafeEnabled = true + +// Pointer is an opaque pointer type. +type Pointer unsafe.Pointer + +// offset represents the offset to a struct field, accessible from a pointer. +// The offset is the byte offset to the field from the start of the struct. +type offset uintptr + +// offsetOf returns a field offset for the struct field. +func offsetOf(f reflect.StructField, x exporter) offset { + return offset(f.Offset) +} + +// IsValid reports whether the offset is valid. +func (f offset) IsValid() bool { return f != invalidOffset } + +// invalidOffset is an invalid field offset. +var invalidOffset = ^offset(0) + +// zeroOffset is a noop when calling pointer.Apply. +var zeroOffset = offset(0) + +// pointer is a pointer to a message struct or field. +type pointer struct{ p unsafe.Pointer } + +// pointerOf returns p as a pointer. +func pointerOf(p Pointer) pointer { + return pointer{p: unsafe.Pointer(p)} +} + +// pointerOfValue returns v as a pointer. +func pointerOfValue(v reflect.Value) pointer { + return pointer{p: unsafe.Pointer(v.Pointer())} +} + +// pointerOfIface returns the pointer portion of an interface. +func pointerOfIface(v any) pointer { + type ifaceHeader struct { + Type unsafe.Pointer + Data unsafe.Pointer + } + return pointer{p: (*ifaceHeader)(unsafe.Pointer(&v)).Data} +} + +// IsNil reports whether the pointer is nil. +func (p pointer) IsNil() bool { + return p.p == nil +} + +// Apply adds an offset to the pointer to derive a new pointer +// to a specified field. The pointer must be valid and pointing at a struct. +func (p pointer) Apply(f offset) pointer { + if p.IsNil() { + panic("invalid nil pointer") + } + return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))} +} + +// AsValueOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t)) +func (p pointer) AsValueOf(t reflect.Type) reflect.Value { + return reflect.NewAt(t, p.p) +} + +// AsIfaceOf treats p as a pointer to an object of type t and returns the value. +// It is equivalent to p.AsValueOf(t).Interface() +func (p pointer) AsIfaceOf(t reflect.Type) any { + // TODO: Use tricky unsafe magic to directly create ifaceHeader. + return p.AsValueOf(t).Interface() +} + +func (p pointer) Bool() *bool { return (*bool)(p.p) } +func (p pointer) BoolPtr() **bool { return (**bool)(p.p) } +func (p pointer) BoolSlice() *[]bool { return (*[]bool)(p.p) } +func (p pointer) Int32() *int32 { return (*int32)(p.p) } +func (p pointer) Int32Ptr() **int32 { return (**int32)(p.p) } +func (p pointer) Int32Slice() *[]int32 { return (*[]int32)(p.p) } +func (p pointer) Int64() *int64 { return (*int64)(p.p) } +func (p pointer) Int64Ptr() **int64 { return (**int64)(p.p) } +func (p pointer) Int64Slice() *[]int64 { return (*[]int64)(p.p) } +func (p pointer) Uint32() *uint32 { return (*uint32)(p.p) } +func (p pointer) Uint32Ptr() **uint32 { return (**uint32)(p.p) } +func (p pointer) Uint32Slice() *[]uint32 { return (*[]uint32)(p.p) } +func (p pointer) Uint64() *uint64 { return (*uint64)(p.p) } +func (p pointer) Uint64Ptr() **uint64 { return (**uint64)(p.p) } +func (p pointer) Uint64Slice() *[]uint64 { return (*[]uint64)(p.p) } +func (p pointer) Float32() *float32 { return (*float32)(p.p) } +func (p pointer) Float32Ptr() **float32 { return (**float32)(p.p) } +func (p pointer) Float32Slice() *[]float32 { return (*[]float32)(p.p) } +func (p pointer) Float64() *float64 { return (*float64)(p.p) } +func (p pointer) Float64Ptr() **float64 { return (**float64)(p.p) } +func (p pointer) Float64Slice() *[]float64 { return (*[]float64)(p.p) } +func (p pointer) String() *string { return (*string)(p.p) } +func (p pointer) StringPtr() **string { return (**string)(p.p) } +func (p pointer) StringSlice() *[]string { return (*[]string)(p.p) } +func (p pointer) Bytes() *[]byte { return (*[]byte)(p.p) } +func (p pointer) BytesPtr() **[]byte { return (**[]byte)(p.p) } +func (p pointer) BytesSlice() *[][]byte { return (*[][]byte)(p.p) } +func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.p) } +func (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) } + +func (p pointer) Elem() pointer { + return pointer{p: *(*unsafe.Pointer)(p.p)} +} + +// PointerSlice loads []*T from p as a []pointer. +// The value returned is aliased with the original slice. +// This behavior differs from the implementation in pointer_reflect.go. +func (p pointer) PointerSlice() []pointer { + // Super-tricky - p should point to a []*T where T is a + // message type. We load it as []pointer. + return *(*[]pointer)(p.p) +} + +// AppendPointerSlice appends v to p, which must be a []*T. +func (p pointer) AppendPointerSlice(v pointer) { + *(*[]pointer)(p.p) = append(*(*[]pointer)(p.p), v) +} + +// SetPointer sets *p to v. +func (p pointer) SetPointer(v pointer) { + *(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p) +} + +func (p pointer) growBoolSlice(addCap int) { + sp := p.BoolSlice() + s := make([]bool, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growInt32Slice(addCap int) { + sp := p.Int32Slice() + s := make([]int32, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growUint32Slice(addCap int) { + p.growInt32Slice(addCap) +} + +func (p pointer) growFloat32Slice(addCap int) { + p.growInt32Slice(addCap) +} + +func (p pointer) growInt64Slice(addCap int) { + sp := p.Int64Slice() + s := make([]int64, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growUint64Slice(addCap int) { + p.growInt64Slice(addCap) +} + +func (p pointer) growFloat64Slice(addCap int) { + p.growInt64Slice(addCap) +} + +// Static check that MessageState does not exceed the size of a pointer. +const _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{})) + +func (Export) MessageStateOf(p Pointer) *messageState { + // Super-tricky - see documentation on MessageState. + return (*messageState)(unsafe.Pointer(p)) +} +func (ms *messageState) pointer() pointer { + // Super-tricky - see documentation on MessageState. + return pointer{p: unsafe.Pointer(ms)} +} +func (ms *messageState) messageInfo() *MessageInfo { + mi := ms.LoadMessageInfo() + if mi == nil { + panic("invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct") + } + return mi +} +func (ms *messageState) LoadMessageInfo() *MessageInfo { + return (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)))) +} +func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)), unsafe.Pointer(mi)) +} + +type atomicNilMessage struct{ p unsafe.Pointer } // p is a *messageReflectWrapper + +func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper { + if p := atomic.LoadPointer(&m.p); p != nil { + return (*messageReflectWrapper)(p) + } + w := &messageReflectWrapper{mi: mi} + atomic.CompareAndSwapPointer(&m.p, nil, (unsafe.Pointer)(w)) + return (*messageReflectWrapper)(atomic.LoadPointer(&m.p)) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go new file mode 100644 index 0000000..a24e6bb --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/validate.go @@ -0,0 +1,576 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + "math" + "math/bits" + "reflect" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +// ValidationStatus is the result of validating the wire-format encoding of a message. +type ValidationStatus int + +const ( + // ValidationUnknown indicates that unmarshaling the message might succeed or fail. + // The validator was unable to render a judgement. + // + // The only causes of this status are an aberrant message type appearing somewhere + // in the message or a failure in the extension resolver. + ValidationUnknown ValidationStatus = iota + 1 + + // ValidationInvalid indicates that unmarshaling the message will fail. + ValidationInvalid + + // ValidationValid indicates that unmarshaling the message will succeed. + ValidationValid +) + +func (v ValidationStatus) String() string { + switch v { + case ValidationUnknown: + return "ValidationUnknown" + case ValidationInvalid: + return "ValidationInvalid" + case ValidationValid: + return "ValidationValid" + default: + return fmt.Sprintf("ValidationStatus(%d)", int(v)) + } +} + +// Validate determines whether the contents of the buffer are a valid wire encoding +// of the message type. +// +// This function is exposed for testing. +func Validate(mt protoreflect.MessageType, in protoiface.UnmarshalInput) (out protoiface.UnmarshalOutput, _ ValidationStatus) { + mi, ok := mt.(*MessageInfo) + if !ok { + return out, ValidationUnknown + } + if in.Resolver == nil { + in.Resolver = protoregistry.GlobalTypes + } + o, st := mi.validate(in.Buf, 0, unmarshalOptions{ + flags: in.Flags, + resolver: in.Resolver, + }) + if o.initialized { + out.Flags |= protoiface.UnmarshalInitialized + } + return out, st +} + +type validationInfo struct { + mi *MessageInfo + typ validationType + keyType, valType validationType + + // For non-required fields, requiredBit is 0. + // + // For required fields, requiredBit's nth bit is set, where n is a + // unique index in the range [0, MessageInfo.numRequiredFields). + // + // If there are more than 64 required fields, requiredBit is 0. + requiredBit uint64 +} + +type validationType uint8 + +const ( + validationTypeOther validationType = iota + validationTypeMessage + validationTypeGroup + validationTypeMap + validationTypeRepeatedVarint + validationTypeRepeatedFixed32 + validationTypeRepeatedFixed64 + validationTypeVarint + validationTypeFixed32 + validationTypeFixed64 + validationTypeBytes + validationTypeUTF8String + validationTypeMessageSetItem +) + +func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { + var vi validationInfo + switch { + case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic(): + switch fd.Kind() { + case protoreflect.MessageKind: + vi.typ = validationTypeMessage + if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { + vi.mi = getMessageInfo(ot.Field(0).Type) + } + case protoreflect.GroupKind: + vi.typ = validationTypeGroup + if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { + vi.mi = getMessageInfo(ot.Field(0).Type) + } + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + vi.typ = validationTypeUTF8String + } + } + default: + vi = newValidationInfo(fd, ft) + } + if fd.Cardinality() == protoreflect.Required { + // Avoid overflow. The required field check is done with a 64-bit mask, with + // any message containing more than 64 required fields always reported as + // potentially uninitialized, so it is not important to get a precise count + // of the required fields past 64. + if mi.numRequiredFields < math.MaxUint8 { + mi.numRequiredFields++ + vi.requiredBit = 1 << (mi.numRequiredFields - 1) + } + } + return vi +} + +func newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { + var vi validationInfo + switch { + case fd.IsList(): + switch fd.Kind() { + case protoreflect.MessageKind: + vi.typ = validationTypeMessage + if ft.Kind() == reflect.Slice { + vi.mi = getMessageInfo(ft.Elem()) + } + case protoreflect.GroupKind: + vi.typ = validationTypeGroup + if ft.Kind() == reflect.Slice { + vi.mi = getMessageInfo(ft.Elem()) + } + case protoreflect.StringKind: + vi.typ = validationTypeBytes + if strs.EnforceUTF8(fd) { + vi.typ = validationTypeUTF8String + } + default: + switch wireTypes[fd.Kind()] { + case protowire.VarintType: + vi.typ = validationTypeRepeatedVarint + case protowire.Fixed32Type: + vi.typ = validationTypeRepeatedFixed32 + case protowire.Fixed64Type: + vi.typ = validationTypeRepeatedFixed64 + } + } + case fd.IsMap(): + vi.typ = validationTypeMap + switch fd.MapKey().Kind() { + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + vi.keyType = validationTypeUTF8String + } + } + switch fd.MapValue().Kind() { + case protoreflect.MessageKind: + vi.valType = validationTypeMessage + if ft.Kind() == reflect.Map { + vi.mi = getMessageInfo(ft.Elem()) + } + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) { + vi.valType = validationTypeUTF8String + } + } + default: + switch fd.Kind() { + case protoreflect.MessageKind: + vi.typ = validationTypeMessage + if !fd.IsWeak() { + vi.mi = getMessageInfo(ft) + } + case protoreflect.GroupKind: + vi.typ = validationTypeGroup + vi.mi = getMessageInfo(ft) + case protoreflect.StringKind: + vi.typ = validationTypeBytes + if strs.EnforceUTF8(fd) { + vi.typ = validationTypeUTF8String + } + default: + switch wireTypes[fd.Kind()] { + case protowire.VarintType: + vi.typ = validationTypeVarint + case protowire.Fixed32Type: + vi.typ = validationTypeFixed32 + case protowire.Fixed64Type: + vi.typ = validationTypeFixed64 + case protowire.BytesType: + vi.typ = validationTypeBytes + } + } + } + return vi +} + +func (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) { + mi.init() + type validationState struct { + typ validationType + keyType, valType validationType + endGroup protowire.Number + mi *MessageInfo + tail []byte + requiredMask uint64 + } + + // Pre-allocate some slots to avoid repeated slice reallocation. + states := make([]validationState, 0, 16) + states = append(states, validationState{ + typ: validationTypeMessage, + mi: mi, + }) + if groupTag > 0 { + states[0].typ = validationTypeGroup + states[0].endGroup = groupTag + } + initialized := true + start := len(b) +State: + for len(states) > 0 { + st := &states[len(states)-1] + for len(b) > 0 { + // Parse the tag (field number and wire type). + var tag uint64 + if b[0] < 0x80 { + tag = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + tag, n = protowire.ConsumeVarint(b) + if n < 0 { + return out, ValidationInvalid + } + b = b[n:] + } + var num protowire.Number + if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) { + return out, ValidationInvalid + } else { + num = protowire.Number(n) + } + wtyp := protowire.Type(tag & 7) + + if wtyp == protowire.EndGroupType { + if st.endGroup == num { + goto PopState + } + return out, ValidationInvalid + } + var vi validationInfo + switch { + case st.typ == validationTypeMap: + switch num { + case genid.MapEntry_Key_field_number: + vi.typ = st.keyType + case genid.MapEntry_Value_field_number: + vi.typ = st.valType + vi.mi = st.mi + vi.requiredBit = 1 + } + case flags.ProtoLegacy && st.mi.isMessageSet: + switch num { + case messageset.FieldItem: + vi.typ = validationTypeMessageSetItem + } + default: + var f *coderFieldInfo + if int(num) < len(st.mi.denseCoderFields) { + f = st.mi.denseCoderFields[num] + } else { + f = st.mi.coderFields[num] + } + if f != nil { + vi = f.validation + if vi.typ == validationTypeMessage && vi.mi == nil { + // Probable weak field. + // + // TODO: Consider storing the results of this lookup somewhere + // rather than recomputing it on every validation. + fd := st.mi.Desc.Fields().ByNumber(num) + if fd == nil || !fd.IsWeak() { + break + } + messageName := fd.Message().FullName() + messageType, err := protoregistry.GlobalTypes.FindMessageByName(messageName) + switch err { + case nil: + vi.mi, _ = messageType.(*MessageInfo) + case protoregistry.NotFound: + vi.typ = validationTypeBytes + default: + return out, ValidationUnknown + } + } + break + } + // Possible extension field. + // + // TODO: We should return ValidationUnknown when: + // 1. The resolver is not frozen. (More extensions may be added to it.) + // 2. The resolver returns preg.NotFound. + // In this case, a type added to the resolver in the future could cause + // unmarshaling to begin failing. Supporting this requires some way to + // determine if the resolver is frozen. + xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num) + if err != nil && err != protoregistry.NotFound { + return out, ValidationUnknown + } + if err == nil { + vi = getExtensionFieldInfo(xt).validation + } + } + if vi.requiredBit != 0 { + // Check that the field has a compatible wire type. + // We only need to consider non-repeated field types, + // since repeated fields (and maps) can never be required. + ok := false + switch vi.typ { + case validationTypeVarint: + ok = wtyp == protowire.VarintType + case validationTypeFixed32: + ok = wtyp == protowire.Fixed32Type + case validationTypeFixed64: + ok = wtyp == protowire.Fixed64Type + case validationTypeBytes, validationTypeUTF8String, validationTypeMessage: + ok = wtyp == protowire.BytesType + case validationTypeGroup: + ok = wtyp == protowire.StartGroupType + } + if ok { + st.requiredMask |= vi.requiredBit + } + } + + switch wtyp { + case protowire.VarintType: + if len(b) >= 10 { + switch { + case b[0] < 0x80: + b = b[1:] + case b[1] < 0x80: + b = b[2:] + case b[2] < 0x80: + b = b[3:] + case b[3] < 0x80: + b = b[4:] + case b[4] < 0x80: + b = b[5:] + case b[5] < 0x80: + b = b[6:] + case b[6] < 0x80: + b = b[7:] + case b[7] < 0x80: + b = b[8:] + case b[8] < 0x80: + b = b[9:] + case b[9] < 0x80 && b[9] < 2: + b = b[10:] + default: + return out, ValidationInvalid + } + } else { + switch { + case len(b) > 0 && b[0] < 0x80: + b = b[1:] + case len(b) > 1 && b[1] < 0x80: + b = b[2:] + case len(b) > 2 && b[2] < 0x80: + b = b[3:] + case len(b) > 3 && b[3] < 0x80: + b = b[4:] + case len(b) > 4 && b[4] < 0x80: + b = b[5:] + case len(b) > 5 && b[5] < 0x80: + b = b[6:] + case len(b) > 6 && b[6] < 0x80: + b = b[7:] + case len(b) > 7 && b[7] < 0x80: + b = b[8:] + case len(b) > 8 && b[8] < 0x80: + b = b[9:] + case len(b) > 9 && b[9] < 2: + b = b[10:] + default: + return out, ValidationInvalid + } + } + continue State + case protowire.BytesType: + var size uint64 + if len(b) >= 1 && b[0] < 0x80 { + size = uint64(b[0]) + b = b[1:] + } else if len(b) >= 2 && b[1] < 128 { + size = uint64(b[0]&0x7f) + uint64(b[1])<<7 + b = b[2:] + } else { + var n int + size, n = protowire.ConsumeVarint(b) + if n < 0 { + return out, ValidationInvalid + } + b = b[n:] + } + if size > uint64(len(b)) { + return out, ValidationInvalid + } + v := b[:size] + b = b[size:] + switch vi.typ { + case validationTypeMessage: + if vi.mi == nil { + return out, ValidationUnknown + } + vi.mi.init() + fallthrough + case validationTypeMap: + if vi.mi != nil { + vi.mi.init() + } + states = append(states, validationState{ + typ: vi.typ, + keyType: vi.keyType, + valType: vi.valType, + mi: vi.mi, + tail: b, + }) + b = v + continue State + case validationTypeRepeatedVarint: + // Packed field. + for len(v) > 0 { + _, n := protowire.ConsumeVarint(v) + if n < 0 { + return out, ValidationInvalid + } + v = v[n:] + } + case validationTypeRepeatedFixed32: + // Packed field. + if len(v)%4 != 0 { + return out, ValidationInvalid + } + case validationTypeRepeatedFixed64: + // Packed field. + if len(v)%8 != 0 { + return out, ValidationInvalid + } + case validationTypeUTF8String: + if !utf8.Valid(v) { + return out, ValidationInvalid + } + } + case protowire.Fixed32Type: + if len(b) < 4 { + return out, ValidationInvalid + } + b = b[4:] + case protowire.Fixed64Type: + if len(b) < 8 { + return out, ValidationInvalid + } + b = b[8:] + case protowire.StartGroupType: + switch { + case vi.typ == validationTypeGroup: + if vi.mi == nil { + return out, ValidationUnknown + } + vi.mi.init() + states = append(states, validationState{ + typ: validationTypeGroup, + mi: vi.mi, + endGroup: num, + }) + continue State + case flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem: + typeid, v, n, err := messageset.ConsumeFieldValue(b, false) + if err != nil { + return out, ValidationInvalid + } + xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid) + switch { + case err == protoregistry.NotFound: + b = b[n:] + case err != nil: + return out, ValidationUnknown + default: + xvi := getExtensionFieldInfo(xt).validation + if xvi.mi != nil { + xvi.mi.init() + } + states = append(states, validationState{ + typ: xvi.typ, + mi: xvi.mi, + tail: b[n:], + }) + b = v + continue State + } + default: + n := protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return out, ValidationInvalid + } + b = b[n:] + } + default: + return out, ValidationInvalid + } + } + if st.endGroup != 0 { + return out, ValidationInvalid + } + if len(b) != 0 { + return out, ValidationInvalid + } + b = st.tail + PopState: + numRequiredFields := 0 + switch st.typ { + case validationTypeMessage, validationTypeGroup: + numRequiredFields = int(st.mi.numRequiredFields) + case validationTypeMap: + // If this is a map field with a message value that contains + // required fields, require that the value be present. + if st.mi != nil && st.mi.numRequiredFields > 0 { + numRequiredFields = 1 + } + } + // If there are more than 64 required fields, this check will + // always fail and we will report that the message is potentially + // uninitialized. + if numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields { + initialized = false + } + states = states[:len(states)-1] + } + out.n = start - len(b) + if initialized { + out.initialized = true + } + return out, ValidationValid +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go b/examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go new file mode 100644 index 0000000..eb79a7b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/impl/weak.go @@ -0,0 +1,74 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +// weakFields adds methods to the exported WeakFields type for internal use. +// +// The exported type is an alias to an unnamed type, so methods can't be +// defined directly on it. +type weakFields WeakFields + +func (w weakFields) get(num protoreflect.FieldNumber) (protoreflect.ProtoMessage, bool) { + m, ok := w[int32(num)] + return m, ok +} + +func (w *weakFields) set(num protoreflect.FieldNumber, m protoreflect.ProtoMessage) { + if *w == nil { + *w = make(weakFields) + } + (*w)[int32(num)] = m +} + +func (w *weakFields) clear(num protoreflect.FieldNumber) { + delete(*w, int32(num)) +} + +func (Export) HasWeak(w WeakFields, num protoreflect.FieldNumber) bool { + _, ok := w[int32(num)] + return ok +} + +func (Export) ClearWeak(w *WeakFields, num protoreflect.FieldNumber) { + delete(*w, int32(num)) +} + +func (Export) GetWeak(w WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName) protoreflect.ProtoMessage { + if m, ok := w[int32(num)]; ok { + return m + } + mt, _ := protoregistry.GlobalTypes.FindMessageByName(name) + if mt == nil { + panic(fmt.Sprintf("message %v for weak field is not linked in", name)) + } + return mt.Zero().Interface() +} + +func (Export) SetWeak(w *WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName, m protoreflect.ProtoMessage) { + if m != nil { + mt, _ := protoregistry.GlobalTypes.FindMessageByName(name) + if mt == nil { + panic(fmt.Sprintf("message %v for weak field is not linked in", name)) + } + if mt != m.ProtoReflect().Type() { + panic(fmt.Sprintf("invalid message type for weak field: got %T, want %T", m, mt.Zero().Interface())) + } + } + if m == nil || !m.ProtoReflect().IsValid() { + delete(*w, int32(num)) + return + } + if *w == nil { + *w = make(weakFields) + } + (*w)[int32(num)] = m +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/order/order.go b/examples/go/vendor/google.golang.org/protobuf/internal/order/order.go new file mode 100644 index 0000000..dea522e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/order/order.go @@ -0,0 +1,89 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package order + +import ( + "google.golang.org/protobuf/reflect/protoreflect" +) + +// FieldOrder specifies the ordering to visit message fields. +// It is a function that reports whether x is ordered before y. +type FieldOrder func(x, y protoreflect.FieldDescriptor) bool + +var ( + // AnyFieldOrder specifies no specific field ordering. + AnyFieldOrder FieldOrder = nil + + // LegacyFieldOrder sorts fields in the same ordering as emitted by + // wire serialization in the github.com/golang/protobuf implementation. + LegacyFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { + ox, oy := x.ContainingOneof(), y.ContainingOneof() + inOneof := func(od protoreflect.OneofDescriptor) bool { + return od != nil && !od.IsSynthetic() + } + + // Extension fields sort before non-extension fields. + if x.IsExtension() != y.IsExtension() { + return x.IsExtension() && !y.IsExtension() + } + // Fields not within a oneof sort before those within a oneof. + if inOneof(ox) != inOneof(oy) { + return !inOneof(ox) && inOneof(oy) + } + // Fields in disjoint oneof sets are sorted by declaration index. + if inOneof(ox) && inOneof(oy) && ox != oy { + return ox.Index() < oy.Index() + } + // Fields sorted by field number. + return x.Number() < y.Number() + } + + // NumberFieldOrder sorts fields by their field number. + NumberFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { + return x.Number() < y.Number() + } + + // IndexNameFieldOrder sorts non-extension fields before extension fields. + // Non-extensions are sorted according to their declaration index. + // Extensions are sorted according to their full name. + IndexNameFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { + // Non-extension fields sort before extension fields. + if x.IsExtension() != y.IsExtension() { + return !x.IsExtension() && y.IsExtension() + } + // Extensions sorted by fullname. + if x.IsExtension() && y.IsExtension() { + return x.FullName() < y.FullName() + } + // Non-extensions sorted by declaration index. + return x.Index() < y.Index() + } +) + +// KeyOrder specifies the ordering to visit map entries. +// It is a function that reports whether x is ordered before y. +type KeyOrder func(x, y protoreflect.MapKey) bool + +var ( + // AnyKeyOrder specifies no specific key ordering. + AnyKeyOrder KeyOrder = nil + + // GenericKeyOrder sorts false before true, numeric keys in ascending order, + // and strings in lexicographical ordering according to UTF-8 codepoints. + GenericKeyOrder KeyOrder = func(x, y protoreflect.MapKey) bool { + switch x.Interface().(type) { + case bool: + return !x.Bool() && y.Bool() + case int32, int64: + return x.Int() < y.Int() + case uint32, uint64: + return x.Uint() < y.Uint() + case string: + return x.String() < y.String() + default: + panic("invalid map key type") + } + } +) diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/order/range.go b/examples/go/vendor/google.golang.org/protobuf/internal/order/range.go new file mode 100644 index 0000000..a1f0916 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/order/range.go @@ -0,0 +1,115 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package order provides ordered access to messages and maps. +package order + +import ( + "sort" + "sync" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type messageField struct { + fd protoreflect.FieldDescriptor + v protoreflect.Value +} + +var messageFieldPool = sync.Pool{ + New: func() any { return new([]messageField) }, +} + +type ( + // FieldRnger is an interface for visiting all fields in a message. + // The protoreflect.Message type implements this interface. + FieldRanger interface{ Range(VisitField) } + // VisitField is called every time a message field is visited. + VisitField = func(protoreflect.FieldDescriptor, protoreflect.Value) bool +) + +// RangeFields iterates over the fields of fs according to the specified order. +func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) { + if less == nil { + fs.Range(fn) + return + } + + // Obtain a pre-allocated scratch buffer. + p := messageFieldPool.Get().(*[]messageField) + fields := (*p)[:0] + defer func() { + if cap(fields) < 1024 { + *p = fields + messageFieldPool.Put(p) + } + }() + + // Collect all fields in the message and sort them. + fs.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + fields = append(fields, messageField{fd, v}) + return true + }) + sort.Slice(fields, func(i, j int) bool { + return less(fields[i].fd, fields[j].fd) + }) + + // Visit the fields in the specified ordering. + for _, f := range fields { + if !fn(f.fd, f.v) { + return + } + } +} + +type mapEntry struct { + k protoreflect.MapKey + v protoreflect.Value +} + +var mapEntryPool = sync.Pool{ + New: func() any { return new([]mapEntry) }, +} + +type ( + // EntryRanger is an interface for visiting all fields in a message. + // The protoreflect.Map type implements this interface. + EntryRanger interface{ Range(VisitEntry) } + // VisitEntry is called every time a map entry is visited. + VisitEntry = func(protoreflect.MapKey, protoreflect.Value) bool +) + +// RangeEntries iterates over the entries of es according to the specified order. +func RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) { + if less == nil { + es.Range(fn) + return + } + + // Obtain a pre-allocated scratch buffer. + p := mapEntryPool.Get().(*[]mapEntry) + entries := (*p)[:0] + defer func() { + if cap(entries) < 1024 { + *p = entries + mapEntryPool.Put(p) + } + }() + + // Collect all entries in the map and sort them. + es.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { + entries = append(entries, mapEntry{k, v}) + return true + }) + sort.Slice(entries, func(i, j int) bool { + return less(entries[i].k, entries[j].k) + }) + + // Visit the entries in the specified ordering. + for _, e := range entries { + if !fn(e.k, e.v) { + return + } + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go b/examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go new file mode 100644 index 0000000..49dc4fc --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/pragma/pragma.go @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package pragma provides types that can be embedded into a struct to +// statically enforce or prevent certain language properties. +package pragma + +import "sync" + +// NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals. +type NoUnkeyedLiterals struct{} + +// DoNotImplement can be embedded in an interface to prevent trivial +// implementations of the interface. +// +// This is useful to prevent unauthorized implementations of an interface +// so that it can be extended in the future for any protobuf language changes. +type DoNotImplement interface{ ProtoInternal(DoNotImplement) } + +// DoNotCompare can be embedded in a struct to prevent comparability. +type DoNotCompare [0]func() + +// DoNotCopy can be embedded in a struct to help prevent shallow copies. +// This does not rely on a Go language feature, but rather a special case +// within the vet checker. +// +// See https://golang.org/issues/8005. +type DoNotCopy [0]sync.Mutex diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go b/examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go new file mode 100644 index 0000000..d3d7f89 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/set/ints.go @@ -0,0 +1,58 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package set provides simple set data structures for uint64s. +package set + +import "math/bits" + +// int64s represents a set of integers within the range of 0..63. +type int64s uint64 + +func (bs *int64s) Len() int { + return bits.OnesCount64(uint64(*bs)) +} +func (bs *int64s) Has(n uint64) bool { + return uint64(*bs)&(uint64(1)< 0 +} +func (bs *int64s) Set(n uint64) { + *(*uint64)(bs) |= uint64(1) << n +} +func (bs *int64s) Clear(n uint64) { + *(*uint64)(bs) &^= uint64(1) << n +} + +// Ints represents a set of integers within the range of 0..math.MaxUint64. +type Ints struct { + lo int64s + hi map[uint64]struct{} +} + +func (bs *Ints) Len() int { + return bs.lo.Len() + len(bs.hi) +} +func (bs *Ints) Has(n uint64) bool { + if n < 64 { + return bs.lo.Has(n) + } + _, ok := bs.hi[n] + return ok +} +func (bs *Ints) Set(n uint64) { + if n < 64 { + bs.lo.Set(n) + return + } + if bs.hi == nil { + bs.hi = make(map[uint64]struct{}) + } + bs.hi[n] = struct{}{} +} +func (bs *Ints) Clear(n uint64) { + if n < 64 { + bs.lo.Clear(n) + return + } + delete(bs.hi, n) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go new file mode 100644 index 0000000..a6e7df2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings.go @@ -0,0 +1,196 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package strs provides string manipulation functionality specific to protobuf. +package strs + +import ( + "go/token" + "strings" + "unicode" + "unicode/utf8" + + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// EnforceUTF8 reports whether to enforce strict UTF-8 validation. +func EnforceUTF8(fd protoreflect.FieldDescriptor) bool { + if flags.ProtoLegacy || fd.Syntax() == protoreflect.Editions { + if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok { + return fd.EnforceUTF8() + } + } + return fd.Syntax() == protoreflect.Proto3 +} + +// GoCamelCase camel-cases a protobuf name for use as a Go identifier. +// +// If there is an interior underscore followed by a lower case letter, +// drop the underscore and convert the letter to upper case. +func GoCamelCase(s string) string { + // Invariant: if the next letter is lower case, it must be converted + // to upper case. + // That is, we process a word at a time, where words are marked by _ or + // upper case letter. Digits are treated as words. + var b []byte + for i := 0; i < len(s); i++ { + c := s[i] + switch { + case c == '.' && i+1 < len(s) && isASCIILower(s[i+1]): + // Skip over '.' in ".{{lowercase}}". + case c == '.': + b = append(b, '_') // convert '.' to '_' + case c == '_' && (i == 0 || s[i-1] == '.'): + // Convert initial '_' to ensure we start with a capital letter. + // Do the same for '_' after '.' to match historic behavior. + b = append(b, 'X') // convert '_' to 'X' + case c == '_' && i+1 < len(s) && isASCIILower(s[i+1]): + // Skip over '_' in "_{{lowercase}}". + case isASCIIDigit(c): + b = append(b, c) + default: + // Assume we have a letter now - if not, it's a bogus identifier. + // The next word is a sequence of characters that must start upper case. + if isASCIILower(c) { + c -= 'a' - 'A' // convert lowercase to uppercase + } + b = append(b, c) + + // Accept lower case sequence that follows. + for ; i+1 < len(s) && isASCIILower(s[i+1]); i++ { + b = append(b, s[i+1]) + } + } + } + return string(b) +} + +// GoSanitized converts a string to a valid Go identifier. +func GoSanitized(s string) string { + // Sanitize the input to the set of valid characters, + // which must be '_' or be in the Unicode L or N categories. + s = strings.Map(func(r rune) rune { + if unicode.IsLetter(r) || unicode.IsDigit(r) { + return r + } + return '_' + }, s) + + // Prepend '_' in the event of a Go keyword conflict or if + // the identifier is invalid (does not start in the Unicode L category). + r, _ := utf8.DecodeRuneInString(s) + if token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) { + return "_" + s + } + return s +} + +// JSONCamelCase converts a snake_case identifier to a camelCase identifier, +// according to the protobuf JSON specification. +func JSONCamelCase(s string) string { + var b []byte + var wasUnderscore bool + for i := 0; i < len(s); i++ { // proto identifiers are always ASCII + c := s[i] + if c != '_' { + if wasUnderscore && isASCIILower(c) { + c -= 'a' - 'A' // convert to uppercase + } + b = append(b, c) + } + wasUnderscore = c == '_' + } + return string(b) +} + +// JSONSnakeCase converts a camelCase identifier to a snake_case identifier, +// according to the protobuf JSON specification. +func JSONSnakeCase(s string) string { + var b []byte + for i := 0; i < len(s); i++ { // proto identifiers are always ASCII + c := s[i] + if isASCIIUpper(c) { + b = append(b, '_') + c += 'a' - 'A' // convert to lowercase + } + b = append(b, c) + } + return string(b) +} + +// MapEntryName derives the name of the map entry message given the field name. +// See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057 +func MapEntryName(s string) string { + var b []byte + upperNext := true + for _, c := range s { + switch { + case c == '_': + upperNext = true + case upperNext: + b = append(b, byte(unicode.ToUpper(c))) + upperNext = false + default: + b = append(b, byte(c)) + } + } + b = append(b, "Entry"...) + return string(b) +} + +// EnumValueName derives the camel-cased enum value name. +// See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313 +func EnumValueName(s string) string { + var b []byte + upperNext := true + for _, c := range s { + switch { + case c == '_': + upperNext = true + case upperNext: + b = append(b, byte(unicode.ToUpper(c))) + upperNext = false + default: + b = append(b, byte(unicode.ToLower(c))) + upperNext = false + } + } + return string(b) +} + +// TrimEnumPrefix trims the enum name prefix from an enum value name, +// where the prefix is all lowercase without underscores. +// See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375 +func TrimEnumPrefix(s, prefix string) string { + s0 := s // original input + for len(s) > 0 && len(prefix) > 0 { + if s[0] == '_' { + s = s[1:] + continue + } + if unicode.ToLower(rune(s[0])) != rune(prefix[0]) { + return s0 // no prefix match + } + s, prefix = s[1:], prefix[1:] + } + if len(prefix) > 0 { + return s0 // no prefix match + } + s = strings.TrimLeft(s, "_") + if len(s) == 0 { + return s0 // avoid returning empty string + } + return s +} + +func isASCIILower(c byte) bool { + return 'a' <= c && c <= 'z' +} +func isASCIIUpper(c byte) bool { + return 'A' <= c && c <= 'Z' +} +func isASCIIDigit(c byte) bool { + return '0' <= c && c <= '9' +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go new file mode 100644 index 0000000..a1f6f33 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go @@ -0,0 +1,28 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package strs + +import pref "google.golang.org/protobuf/reflect/protoreflect" + +func UnsafeString(b []byte) string { + return string(b) +} + +func UnsafeBytes(s string) []byte { + return []byte(s) +} + +type Builder struct{} + +func (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName { + return prefix.Append(name) +} + +func (*Builder) MakeString(b []byte) string { + return string(b) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go new file mode 100644 index 0000000..a008acd --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go @@ -0,0 +1,95 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && !go1.21 +// +build !purego,!appengine,!go1.21 + +package strs + +import ( + "unsafe" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +type ( + stringHeader struct { + Data unsafe.Pointer + Len int + } + sliceHeader struct { + Data unsafe.Pointer + Len int + Cap int + } +) + +// UnsafeString returns an unsafe string reference of b. +// The caller must treat the input slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user +// unless the input slice is provably immutable. +func UnsafeString(b []byte) (s string) { + src := (*sliceHeader)(unsafe.Pointer(&b)) + dst := (*stringHeader)(unsafe.Pointer(&s)) + dst.Data = src.Data + dst.Len = src.Len + return s +} + +// UnsafeBytes returns an unsafe bytes slice reference of s. +// The caller must treat returned slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user. +func UnsafeBytes(s string) (b []byte) { + src := (*stringHeader)(unsafe.Pointer(&s)) + dst := (*sliceHeader)(unsafe.Pointer(&b)) + dst.Data = src.Data + dst.Len = src.Len + dst.Cap = src.Len + return b +} + +// Builder builds a set of strings with shared lifetime. +// This differs from strings.Builder, which is for building a single string. +type Builder struct { + buf []byte +} + +// AppendFullName is equivalent to protoreflect.FullName.Append, +// but optimized for large batches where each name has a shared lifetime. +func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { + n := len(prefix) + len(".") + len(name) + if len(prefix) == 0 { + n -= len(".") + } + sb.grow(n) + sb.buf = append(sb.buf, prefix...) + sb.buf = append(sb.buf, '.') + sb.buf = append(sb.buf, name...) + return protoreflect.FullName(sb.last(n)) +} + +// MakeString is equivalent to string(b), but optimized for large batches +// with a shared lifetime. +func (sb *Builder) MakeString(b []byte) string { + sb.grow(len(b)) + sb.buf = append(sb.buf, b...) + return sb.last(len(b)) +} + +func (sb *Builder) grow(n int) { + if cap(sb.buf)-len(sb.buf) >= n { + return + } + + // Unlike strings.Builder, we do not need to copy over the contents + // of the old buffer since our builder provides no API for + // retrieving previously created strings. + sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) +} + +func (sb *Builder) last(n int) string { + return UnsafeString(sb.buf[len(sb.buf)-n:]) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go new file mode 100644 index 0000000..60166f2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go @@ -0,0 +1,74 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && go1.21 +// +build !purego,!appengine,go1.21 + +package strs + +import ( + "unsafe" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// UnsafeString returns an unsafe string reference of b. +// The caller must treat the input slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user +// unless the input slice is provably immutable. +func UnsafeString(b []byte) string { + return unsafe.String(unsafe.SliceData(b), len(b)) +} + +// UnsafeBytes returns an unsafe bytes slice reference of s. +// The caller must treat returned slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user. +func UnsafeBytes(s string) []byte { + return unsafe.Slice(unsafe.StringData(s), len(s)) +} + +// Builder builds a set of strings with shared lifetime. +// This differs from strings.Builder, which is for building a single string. +type Builder struct { + buf []byte +} + +// AppendFullName is equivalent to protoreflect.FullName.Append, +// but optimized for large batches where each name has a shared lifetime. +func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { + n := len(prefix) + len(".") + len(name) + if len(prefix) == 0 { + n -= len(".") + } + sb.grow(n) + sb.buf = append(sb.buf, prefix...) + sb.buf = append(sb.buf, '.') + sb.buf = append(sb.buf, name...) + return protoreflect.FullName(sb.last(n)) +} + +// MakeString is equivalent to string(b), but optimized for large batches +// with a shared lifetime. +func (sb *Builder) MakeString(b []byte) string { + sb.grow(len(b)) + sb.buf = append(sb.buf, b...) + return sb.last(len(b)) +} + +func (sb *Builder) grow(n int) { + if cap(sb.buf)-len(sb.buf) >= n { + return + } + + // Unlike strings.Builder, we do not need to copy over the contents + // of the old buffer since our builder provides no API for + // retrieving previously created strings. + sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) +} + +func (sb *Builder) last(n int) string { + return UnsafeString(sb.buf[len(sb.buf)-n:]) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/internal/version/version.go b/examples/go/vendor/google.golang.org/protobuf/internal/version/version.go new file mode 100644 index 0000000..dbbf1f6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/internal/version/version.go @@ -0,0 +1,79 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package version records versioning information about this module. +package version + +import ( + "fmt" + "strings" +) + +// These constants determine the current version of this module. +// +// For our release process, we enforce the following rules: +// - Tagged releases use a tag that is identical to String. +// - Tagged releases never reference a commit where the String +// contains "devel". +// - The set of all commits in this repository where String +// does not contain "devel" must have a unique String. +// +// Steps for tagging a new release: +// +// 1. Create a new CL. +// +// 2. Update Minor, Patch, and/or PreRelease as necessary. +// PreRelease must not contain the string "devel". +// +// 3. Since the last released minor version, have there been any changes to +// generator that relies on new functionality in the runtime? +// If yes, then increment RequiredGenerated. +// +// 4. Since the last released minor version, have there been any changes to +// the runtime that removes support for old .pb.go source code? +// If yes, then increment SupportMinimum. +// +// 5. Send out the CL for review and submit it. +// Note that the next CL in step 8 must be submitted after this CL +// without any other CLs in-between. +// +// 6. Tag a new version, where the tag is is the current String. +// +// 7. Write release notes for all notable changes +// between this release and the last release. +// +// 8. Create a new CL. +// +// 9. Update PreRelease to include the string "devel". +// For example: "" -> "devel" or "rc.1" -> "rc.1.devel" +// +// 10. Send out the CL for review and submit it. +const ( + Major = 1 + Minor = 34 + Patch = 2 + PreRelease = "" +) + +// String formats the version string for this module in semver format. +// +// Examples: +// +// v1.20.1 +// v1.21.0-rc.1 +func String() string { + v := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch) + if PreRelease != "" { + v += "-" + PreRelease + + // TODO: Add metadata about the commit or build hash. + // See https://golang.org/issue/29814 + // See https://golang.org/issue/33533 + var metadata string + if strings.Contains(PreRelease, "devel") && metadata != "" { + v += "+" + metadata + } + } + return v +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go b/examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go new file mode 100644 index 0000000..3e9a6a2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/checkinit.go @@ -0,0 +1,71 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// CheckInitialized returns an error if any required fields in m are not set. +func CheckInitialized(m Message) error { + // Treat a nil message interface as an "untyped" empty message, + // which we assume to have no required fields. + if m == nil { + return nil + } + + return checkInitialized(m.ProtoReflect()) +} + +// CheckInitialized returns an error if any required fields in m are not set. +func checkInitialized(m protoreflect.Message) error { + if methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil { + _, err := methods.CheckInitialized(protoiface.CheckInitializedInput{ + Message: m, + }) + return err + } + return checkInitializedSlow(m) +} + +func checkInitializedSlow(m protoreflect.Message) error { + md := m.Descriptor() + fds := md.Fields() + for i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ { + fd := fds.ByNumber(nums.Get(i)) + if !m.Has(fd) { + return errors.RequiredNotSet(string(fd.FullName())) + } + } + var err error + m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + switch { + case fd.IsList(): + if fd.Message() == nil { + return true + } + for i, list := 0, v.List(); i < list.Len() && err == nil; i++ { + err = checkInitialized(list.Get(i).Message()) + } + case fd.IsMap(): + if fd.MapValue().Message() == nil { + return true + } + v.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool { + err = checkInitialized(v.Message()) + return err == nil + }) + default: + if fd.Message() == nil { + return true + } + err = checkInitialized(v.Message()) + } + return err == nil + }) + return err +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/decode.go b/examples/go/vendor/google.golang.org/protobuf/proto/decode.go new file mode 100644 index 0000000..d75a653 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/decode.go @@ -0,0 +1,296 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/genid" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" +) + +// UnmarshalOptions configures the unmarshaler. +// +// Example usage: +// +// err := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m) +type UnmarshalOptions struct { + pragma.NoUnkeyedLiterals + + // Merge merges the input into the destination message. + // The default behavior is to always reset the message before unmarshaling, + // unless Merge is specified. + Merge bool + + // AllowPartial accepts input for messages that will result in missing + // required fields. If AllowPartial is false (the default), Unmarshal will + // return an error if there are any missing required fields. + AllowPartial bool + + // If DiscardUnknown is set, unknown fields are ignored. + DiscardUnknown bool + + // Resolver is used for looking up types when unmarshaling extension fields. + // If nil, this defaults to using protoregistry.GlobalTypes. + Resolver interface { + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) + } + + // RecursionLimit limits how deeply messages may be nested. + // If zero, a default limit is applied. + RecursionLimit int +} + +// Unmarshal parses the wire-format message in b and places the result in m. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +// +// See the [UnmarshalOptions] type if you need more control. +func Unmarshal(b []byte, m Message) error { + _, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect()) + return err +} + +// Unmarshal parses the wire-format message in b and places the result in m. +// The provided message must be mutable (e.g., a non-nil pointer to a message). +func (o UnmarshalOptions) Unmarshal(b []byte, m Message) error { + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } + _, err := o.unmarshal(b, m.ProtoReflect()) + return err +} + +// UnmarshalState parses a wire-format message and places the result in m. +// +// This method permits fine-grained control over the unmarshaler. +// Most users should use [Unmarshal] instead. +func (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } + return o.unmarshal(in.Buf, in.Message) +} + +// unmarshal is a centralized function that all unmarshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for unmarshal that do not go through this. +func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) { + if o.Resolver == nil { + o.Resolver = protoregistry.GlobalTypes + } + if !o.Merge { + Reset(m.Interface()) + } + allowPartial := o.AllowPartial + o.Merge = true + o.AllowPartial = true + methods := protoMethods(m) + if methods != nil && methods.Unmarshal != nil && + !(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) { + in := protoiface.UnmarshalInput{ + Message: m, + Buf: b, + Resolver: o.Resolver, + Depth: o.RecursionLimit, + } + if o.DiscardUnknown { + in.Flags |= protoiface.UnmarshalDiscardUnknown + } + out, err = methods.Unmarshal(in) + } else { + o.RecursionLimit-- + if o.RecursionLimit < 0 { + return out, errors.New("exceeded max recursion depth") + } + err = o.unmarshalMessageSlow(b, m) + } + if err != nil { + return out, err + } + if allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) { + return out, nil + } + return out, checkInitialized(m) +} + +func (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error { + _, err := o.unmarshal(b, m) + return err +} + +func (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error { + md := m.Descriptor() + if messageset.IsMessageSet(md) { + return o.unmarshalMessageSet(b, m) + } + fields := md.Fields() + for len(b) > 0 { + // Parse the tag (field number and wire type). + num, wtyp, tagLen := protowire.ConsumeTag(b) + if tagLen < 0 { + return errDecode + } + if num > protowire.MaxValidNumber { + return errDecode + } + + // Find the field descriptor for this field number. + fd := fields.ByNumber(num) + if fd == nil && md.ExtensionRanges().Has(num) { + extType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num) + if err != nil && err != protoregistry.NotFound { + return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err) + } + if extType != nil { + fd = extType.TypeDescriptor() + } + } + var err error + if fd == nil { + err = errUnknown + } else if flags.ProtoLegacy { + if fd.IsWeak() && fd.Message().IsPlaceholder() { + err = errUnknown // weak referent is not linked in + } + } + + // Parse the field value. + var valLen int + switch { + case err != nil: + case fd.IsList(): + valLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd) + case fd.IsMap(): + valLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd) + default: + valLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd) + } + if err != nil { + if err != errUnknown { + return err + } + valLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:]) + if valLen < 0 { + return errDecode + } + if !o.DiscardUnknown { + m.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...)) + } + } + b = b[tagLen+valLen:] + } + return nil +} + +func (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) { + v, n, err := o.unmarshalScalar(b, wtyp, fd) + if err != nil { + return 0, err + } + switch fd.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + m2 := m.Mutable(fd).Message() + if err := o.unmarshalMessage(v.Bytes(), m2); err != nil { + return n, err + } + default: + // Non-message scalars replace the previous value. + m.Set(fd, v) + } + return n, nil +} + +func (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) { + if wtyp != protowire.BytesType { + return 0, errUnknown + } + b, n = protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + var ( + keyField = fd.MapKey() + valField = fd.MapValue() + key protoreflect.Value + val protoreflect.Value + haveKey bool + haveVal bool + ) + switch valField.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + val = mapv.NewValue() + } + // Map entries are represented as a two-element message with fields + // containing the key and value. + for len(b) > 0 { + num, wtyp, n := protowire.ConsumeTag(b) + if n < 0 { + return 0, errDecode + } + if num > protowire.MaxValidNumber { + return 0, errDecode + } + b = b[n:] + err = errUnknown + switch num { + case genid.MapEntry_Key_field_number: + key, n, err = o.unmarshalScalar(b, wtyp, keyField) + if err != nil { + break + } + haveKey = true + case genid.MapEntry_Value_field_number: + var v protoreflect.Value + v, n, err = o.unmarshalScalar(b, wtyp, valField) + if err != nil { + break + } + switch valField.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + if err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil { + return 0, err + } + default: + val = v + } + haveVal = true + } + if err == errUnknown { + n = protowire.ConsumeFieldValue(num, wtyp, b) + if n < 0 { + return 0, errDecode + } + } else if err != nil { + return 0, err + } + b = b[n:] + } + // Every map entry should have entries for key and value, but this is not strictly required. + if !haveKey { + key = keyField.Default() + } + if !haveVal { + switch valField.Kind() { + case protoreflect.GroupKind, protoreflect.MessageKind: + default: + val = valField.Default() + } + } + mapv.Set(key.MapKey(), val) + return n, nil +} + +// errUnknown is used internally to indicate fields which should be added +// to the unknown field set of a message. It is never returned from an exported +// function. +var errUnknown = errors.New("BUG: internal error (unknown)") + +var errDecode = errors.New("cannot parse invalid wire-format data") diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go b/examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go new file mode 100644 index 0000000..301eeb2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/decode_gen.go @@ -0,0 +1,603 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package proto + +import ( + "math" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// unmarshalScalar decodes a value of the given kind. +// +// Message values are decoded into a []byte which aliases the input data. +func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) { + switch fd.Kind() { + case protoreflect.BoolKind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBool(protowire.DecodeBool(v)), n, nil + case protoreflect.EnumKind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), n, nil + case protoreflect.Int32Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt32(int32(v)), n, nil + case protoreflect.Sint32Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), n, nil + case protoreflect.Uint32Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint32(uint32(v)), n, nil + case protoreflect.Int64Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt64(int64(v)), n, nil + case protoreflect.Sint64Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), n, nil + case protoreflect.Uint64Kind: + if wtyp != protowire.VarintType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint64(v), n, nil + case protoreflect.Sfixed32Kind: + if wtyp != protowire.Fixed32Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt32(int32(v)), n, nil + case protoreflect.Fixed32Kind: + if wtyp != protowire.Fixed32Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint32(uint32(v)), n, nil + case protoreflect.FloatKind: + if wtyp != protowire.Fixed32Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), n, nil + case protoreflect.Sfixed64Kind: + if wtyp != protowire.Fixed64Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfInt64(int64(v)), n, nil + case protoreflect.Fixed64Kind: + if wtyp != protowire.Fixed64Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfUint64(v), n, nil + case protoreflect.DoubleKind: + if wtyp != protowire.Fixed64Type { + return val, 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfFloat64(math.Float64frombits(v)), n, nil + case protoreflect.StringKind: + if wtyp != protowire.BytesType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return val, 0, errDecode + } + if strs.EnforceUTF8(fd) && !utf8.Valid(v) { + return protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName())) + } + return protoreflect.ValueOfString(string(v)), n, nil + case protoreflect.BytesKind: + if wtyp != protowire.BytesType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), n, nil + case protoreflect.MessageKind: + if wtyp != protowire.BytesType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBytes(v), n, nil + case protoreflect.GroupKind: + if wtyp != protowire.StartGroupType { + return val, 0, errUnknown + } + v, n := protowire.ConsumeGroup(fd.Number(), b) + if n < 0 { + return val, 0, errDecode + } + return protoreflect.ValueOfBytes(v), n, nil + default: + return val, 0, errUnknown + } +} + +func (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) { + switch fd.Kind() { + case protoreflect.BoolKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) + return n, nil + case protoreflect.EnumKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) + return n, nil + case protoreflect.Int32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt32(int32(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + return n, nil + case protoreflect.Sint32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) + return n, nil + case protoreflect.Uint32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint32(uint32(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + return n, nil + case protoreflect.Int64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt64(int64(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + return n, nil + case protoreflect.Sint64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) + return n, nil + case protoreflect.Uint64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeVarint(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint64(v)) + } + return n, nil + } + if wtyp != protowire.VarintType { + return 0, errUnknown + } + v, n := protowire.ConsumeVarint(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + return n, nil + case protoreflect.Sfixed32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed32(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt32(int32(v))) + } + return n, nil + } + if wtyp != protowire.Fixed32Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt32(int32(v))) + return n, nil + case protoreflect.Fixed32Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed32(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint32(uint32(v))) + } + return n, nil + } + if wtyp != protowire.Fixed32Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint32(uint32(v))) + return n, nil + case protoreflect.FloatKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed32(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + } + return n, nil + } + if wtyp != protowire.Fixed32Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed32(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) + return n, nil + case protoreflect.Sfixed64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed64(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfInt64(int64(v))) + } + return n, nil + } + if wtyp != protowire.Fixed64Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfInt64(int64(v))) + return n, nil + case protoreflect.Fixed64Kind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed64(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfUint64(v)) + } + return n, nil + } + if wtyp != protowire.Fixed64Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfUint64(v)) + return n, nil + case protoreflect.DoubleKind: + if wtyp == protowire.BytesType { + buf, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + for len(buf) > 0 { + v, n := protowire.ConsumeFixed64(buf) + if n < 0 { + return 0, errDecode + } + buf = buf[n:] + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + } + return n, nil + } + if wtyp != protowire.Fixed64Type { + return 0, errUnknown + } + v, n := protowire.ConsumeFixed64(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) + return n, nil + case protoreflect.StringKind: + if wtyp != protowire.BytesType { + return 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + if strs.EnforceUTF8(fd) && !utf8.Valid(v) { + return 0, errors.InvalidUTF8(string(fd.FullName())) + } + list.Append(protoreflect.ValueOfString(string(v))) + return n, nil + case protoreflect.BytesKind: + if wtyp != protowire.BytesType { + return 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...))) + return n, nil + case protoreflect.MessageKind: + if wtyp != protowire.BytesType { + return 0, errUnknown + } + v, n := protowire.ConsumeBytes(b) + if n < 0 { + return 0, errDecode + } + m := list.NewElement() + if err := o.unmarshalMessage(v, m.Message()); err != nil { + return 0, err + } + list.Append(m) + return n, nil + case protoreflect.GroupKind: + if wtyp != protowire.StartGroupType { + return 0, errUnknown + } + v, n := protowire.ConsumeGroup(fd.Number(), b) + if n < 0 { + return 0, errDecode + } + m := list.NewElement() + if err := o.unmarshalMessage(v, m.Message()); err != nil { + return 0, err + } + list.Append(m) + return n, nil + default: + return 0, errUnknown + } +} + +// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices. +var emptyBuf [0]byte diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/doc.go b/examples/go/vendor/google.golang.org/protobuf/proto/doc.go new file mode 100644 index 0000000..80ed16a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/doc.go @@ -0,0 +1,86 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package proto provides functions operating on protocol buffer messages. +// +// For documentation on protocol buffers in general, see: +// https://protobuf.dev. +// +// For a tutorial on using protocol buffers with Go, see: +// https://protobuf.dev/getting-started/gotutorial. +// +// For a guide to generated Go protocol buffer code, see: +// https://protobuf.dev/reference/go/go-generated. +// +// # Binary serialization +// +// This package contains functions to convert to and from the wire format, +// an efficient binary serialization of protocol buffers. +// +// - [Size] reports the size of a message in the wire format. +// +// - [Marshal] converts a message to the wire format. +// The [MarshalOptions] type provides more control over wire marshaling. +// +// - [Unmarshal] converts a message from the wire format. +// The [UnmarshalOptions] type provides more control over wire unmarshaling. +// +// # Basic message operations +// +// - [Clone] makes a deep copy of a message. +// +// - [Merge] merges the content of a message into another. +// +// - [Equal] compares two messages. For more control over comparisons +// and detailed reporting of differences, see package +// [google.golang.org/protobuf/testing/protocmp]. +// +// - [Reset] clears the content of a message. +// +// - [CheckInitialized] reports whether all required fields in a message are set. +// +// # Optional scalar constructors +// +// The API for some generated messages represents optional scalar fields +// as pointers to a value. For example, an optional string field has the +// Go type *string. +// +// - [Bool], [Int32], [Int64], [Uint32], [Uint64], [Float32], [Float64], and [String] +// take a value and return a pointer to a new instance of it, +// to simplify construction of optional field values. +// +// Generated enum types usually have an Enum method which performs the +// same operation. +// +// Optional scalar fields are only supported in proto2. +// +// # Extension accessors +// +// - [HasExtension], [GetExtension], [SetExtension], and [ClearExtension] +// access extension field values in a protocol buffer message. +// +// Extension fields are only supported in proto2. +// +// # Related packages +// +// - Package [google.golang.org/protobuf/encoding/protojson] converts messages to +// and from JSON. +// +// - Package [google.golang.org/protobuf/encoding/prototext] converts messages to +// and from the text format. +// +// - Package [google.golang.org/protobuf/reflect/protoreflect] provides a +// reflection interface for protocol buffer data types. +// +// - Package [google.golang.org/protobuf/testing/protocmp] provides features +// to compare protocol buffer messages with the [github.com/google/go-cmp/cmp] +// package. +// +// - Package [google.golang.org/protobuf/types/dynamicpb] provides a dynamic +// message type, suitable for working with messages where the protocol buffer +// type is only known at runtime. +// +// This module contains additional packages for more specialized use cases. +// Consult the individual package documentation for details. +package proto diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/encode.go b/examples/go/vendor/google.golang.org/protobuf/proto/encode.go new file mode 100644 index 0000000..1f847bc --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/encode.go @@ -0,0 +1,354 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "errors" + "fmt" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" + + protoerrors "google.golang.org/protobuf/internal/errors" +) + +// MarshalOptions configures the marshaler. +// +// Example usage: +// +// b, err := MarshalOptions{Deterministic: true}.Marshal(m) +type MarshalOptions struct { + pragma.NoUnkeyedLiterals + + // AllowPartial allows messages that have missing required fields to marshal + // without returning an error. If AllowPartial is false (the default), + // Marshal will return an error if there are any missing required fields. + AllowPartial bool + + // Deterministic controls whether the same message will always be + // serialized to the same bytes within the same binary. + // + // Setting this option guarantees that repeated serialization of + // the same message will return the same bytes, and that different + // processes of the same binary (which may be executing on different + // machines) will serialize equal messages to the same bytes. + // It has no effect on the resulting size of the encoded message compared + // to a non-deterministic marshal. + // + // Note that the deterministic serialization is NOT canonical across + // languages. It is not guaranteed to remain stable over time. It is + // unstable across different builds with schema changes due to unknown + // fields. Users who need canonical serialization (e.g., persistent + // storage in a canonical form, fingerprinting, etc.) must define + // their own canonicalization specification and implement their own + // serializer rather than relying on this API. + // + // If deterministic serialization is requested, map entries will be + // sorted by keys in lexographical order. This is an implementation + // detail and subject to change. + Deterministic bool + + // UseCachedSize indicates that the result of a previous Size call + // may be reused. + // + // Setting this option asserts that: + // + // 1. Size has previously been called on this message with identical + // options (except for UseCachedSize itself). + // + // 2. The message and all its submessages have not changed in any + // way since the Size call. + // + // If either of these invariants is violated, + // the results are undefined and may include panics or corrupted output. + // + // Implementations MAY take this option into account to provide + // better performance, but there is no guarantee that they will do so. + // There is absolutely no guarantee that Size followed by Marshal with + // UseCachedSize set will perform equivalently to Marshal alone. + UseCachedSize bool +} + +// flags turns the specified MarshalOptions (user-facing) into +// protoiface.MarshalInputFlags (used internally by the marshaler). +// +// See impl.marshalOptions.Options for the inverse operation. +func (o MarshalOptions) flags() protoiface.MarshalInputFlags { + var flags protoiface.MarshalInputFlags + + // Note: o.AllowPartial is always forced to true by MarshalOptions.marshal, + // which is why it is not a part of MarshalInputFlags. + + if o.Deterministic { + flags |= protoiface.MarshalDeterministic + } + + if o.UseCachedSize { + flags |= protoiface.MarshalUseCachedSize + } + + return flags +} + +// Marshal returns the wire-format encoding of m. +// +// This is the most common entry point for encoding a Protobuf message. +// +// See the [MarshalOptions] type if you need more control. +func Marshal(m Message) ([]byte, error) { + // Treat nil message interface as an empty message; nothing to output. + if m == nil { + return nil, nil + } + + out, err := MarshalOptions{}.marshal(nil, m.ProtoReflect()) + if len(out.Buf) == 0 && err == nil { + out.Buf = emptyBytesForMessage(m) + } + return out.Buf, err +} + +// Marshal returns the wire-format encoding of m. +func (o MarshalOptions) Marshal(m Message) ([]byte, error) { + // Treat nil message interface as an empty message; nothing to output. + if m == nil { + return nil, nil + } + + out, err := o.marshal(nil, m.ProtoReflect()) + if len(out.Buf) == 0 && err == nil { + out.Buf = emptyBytesForMessage(m) + } + return out.Buf, err +} + +// emptyBytesForMessage returns a nil buffer if and only if m is invalid, +// otherwise it returns a non-nil empty buffer. +// +// This is to assist the edge-case where user-code does the following: +// +// m1.OptionalBytes, _ = proto.Marshal(m2) +// +// where they expect the proto2 "optional_bytes" field to be populated +// if any only if m2 is a valid message. +func emptyBytesForMessage(m Message) []byte { + if m == nil || !m.ProtoReflect().IsValid() { + return nil + } + return emptyBuf[:] +} + +// MarshalAppend appends the wire-format encoding of m to b, +// returning the result. +// +// This is a less common entry point than [Marshal], which is only needed if you +// need to supply your own buffers for performance reasons. +func (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) { + // Treat nil message interface as an empty message; nothing to append. + if m == nil { + return b, nil + } + + out, err := o.marshal(b, m.ProtoReflect()) + return out.Buf, err +} + +// MarshalState returns the wire-format encoding of a message. +// +// This method permits fine-grained control over the marshaler. +// Most users should use [Marshal] instead. +func (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + return o.marshal(in.Buf, in.Message) +} + +// marshal is a centralized function that all marshal operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for marshal that do not go through this. +func (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) { + allowPartial := o.AllowPartial + o.AllowPartial = true + if methods := protoMethods(m); methods != nil && methods.Marshal != nil && + !(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) { + in := protoiface.MarshalInput{ + Message: m, + Buf: b, + Flags: o.flags(), + } + if methods.Size != nil { + sout := methods.Size(protoiface.SizeInput{ + Message: m, + Flags: in.Flags, + }) + if cap(b) < len(b)+sout.Size { + in.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size)) + copy(in.Buf, b) + } + in.Flags |= protoiface.MarshalUseCachedSize + } + out, err = methods.Marshal(in) + } else { + out.Buf, err = o.marshalMessageSlow(b, m) + } + if err != nil { + var mismatch *protoerrors.SizeMismatchError + if errors.As(err, &mismatch) { + return out, fmt.Errorf("marshaling %s: %v", string(m.Descriptor().FullName()), err) + } + return out, err + } + if allowPartial { + return out, nil + } + return out, checkInitialized(m) +} + +func (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) { + out, err := o.marshal(b, m) + return out.Buf, err +} + +// growcap scales up the capacity of a slice. +// +// Given a slice with a current capacity of oldcap and a desired +// capacity of wantcap, growcap returns a new capacity >= wantcap. +// +// The algorithm is mostly identical to the one used by append as of Go 1.14. +func growcap(oldcap, wantcap int) (newcap int) { + if wantcap > oldcap*2 { + newcap = wantcap + } else if oldcap < 1024 { + // The Go 1.14 runtime takes this case when len(s) < 1024, + // not when cap(s) < 1024. The difference doesn't seem + // significant here. + newcap = oldcap * 2 + } else { + newcap = oldcap + for 0 < newcap && newcap < wantcap { + newcap += newcap / 4 + } + if newcap <= 0 { + newcap = wantcap + } + } + return newcap +} + +func (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) { + if messageset.IsMessageSet(m.Descriptor()) { + return o.marshalMessageSet(b, m) + } + fieldOrder := order.AnyFieldOrder + if o.Deterministic { + // TODO: This should use a more natural ordering like NumberFieldOrder, + // but doing so breaks golden tests that make invalid assumption about + // output stability of this implementation. + fieldOrder = order.LegacyFieldOrder + } + var err error + order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + b, err = o.marshalField(b, fd, v) + return err == nil + }) + if err != nil { + return b, err + } + b = append(b, m.GetUnknown()...) + return b, nil +} + +func (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) { + switch { + case fd.IsList(): + return o.marshalList(b, fd, value.List()) + case fd.IsMap(): + return o.marshalMap(b, fd, value.Map()) + default: + b = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()]) + return o.marshalSingular(b, fd, value) + } +} + +func (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) { + if fd.IsPacked() && list.Len() > 0 { + b = protowire.AppendTag(b, fd.Number(), protowire.BytesType) + b, pos := appendSpeculativeLength(b) + for i, llen := 0, list.Len(); i < llen; i++ { + var err error + b, err = o.marshalSingular(b, fd, list.Get(i)) + if err != nil { + return b, err + } + } + b = finishSpeculativeLength(b, pos) + return b, nil + } + + kind := fd.Kind() + for i, llen := 0, list.Len(); i < llen; i++ { + var err error + b = protowire.AppendTag(b, fd.Number(), wireTypes[kind]) + b, err = o.marshalSingular(b, fd, list.Get(i)) + if err != nil { + return b, err + } + } + return b, nil +} + +func (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) { + keyf := fd.MapKey() + valf := fd.MapValue() + keyOrder := order.AnyKeyOrder + if o.Deterministic { + keyOrder = order.GenericKeyOrder + } + var err error + order.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool { + b = protowire.AppendTag(b, fd.Number(), protowire.BytesType) + var pos int + b, pos = appendSpeculativeLength(b) + + b, err = o.marshalField(b, keyf, key.Value()) + if err != nil { + return false + } + b, err = o.marshalField(b, valf, value) + if err != nil { + return false + } + b = finishSpeculativeLength(b, pos) + return true + }) + return b, err +} + +// When encoding length-prefixed fields, we speculatively set aside some number of bytes +// for the length, encode the data, and then encode the length (shifting the data if necessary +// to make room). +const speculativeLength = 1 + +func appendSpeculativeLength(b []byte) ([]byte, int) { + pos := len(b) + b = append(b, "\x00\x00\x00\x00"[:speculativeLength]...) + return b, pos +} + +func finishSpeculativeLength(b []byte, pos int) []byte { + mlen := len(b) - pos - speculativeLength + msiz := protowire.SizeVarint(uint64(mlen)) + if msiz != speculativeLength { + for i := 0; i < msiz-speculativeLength; i++ { + b = append(b, 0) + } + copy(b[pos+msiz:], b[pos+speculativeLength:]) + b = b[:pos+msiz+mlen] + } + protowire.AppendVarint(b[:pos], uint64(mlen)) + return b +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go b/examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go new file mode 100644 index 0000000..185dacf --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/encode_gen.go @@ -0,0 +1,97 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package proto + +import ( + "math" + "unicode/utf8" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/strs" + "google.golang.org/protobuf/reflect/protoreflect" +) + +var wireTypes = map[protoreflect.Kind]protowire.Type{ + protoreflect.BoolKind: protowire.VarintType, + protoreflect.EnumKind: protowire.VarintType, + protoreflect.Int32Kind: protowire.VarintType, + protoreflect.Sint32Kind: protowire.VarintType, + protoreflect.Uint32Kind: protowire.VarintType, + protoreflect.Int64Kind: protowire.VarintType, + protoreflect.Sint64Kind: protowire.VarintType, + protoreflect.Uint64Kind: protowire.VarintType, + protoreflect.Sfixed32Kind: protowire.Fixed32Type, + protoreflect.Fixed32Kind: protowire.Fixed32Type, + protoreflect.FloatKind: protowire.Fixed32Type, + protoreflect.Sfixed64Kind: protowire.Fixed64Type, + protoreflect.Fixed64Kind: protowire.Fixed64Type, + protoreflect.DoubleKind: protowire.Fixed64Type, + protoreflect.StringKind: protowire.BytesType, + protoreflect.BytesKind: protowire.BytesType, + protoreflect.MessageKind: protowire.BytesType, + protoreflect.GroupKind: protowire.StartGroupType, +} + +func (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) { + switch fd.Kind() { + case protoreflect.BoolKind: + b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) + case protoreflect.EnumKind: + b = protowire.AppendVarint(b, uint64(v.Enum())) + case protoreflect.Int32Kind: + b = protowire.AppendVarint(b, uint64(int32(v.Int()))) + case protoreflect.Sint32Kind: + b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) + case protoreflect.Uint32Kind: + b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) + case protoreflect.Int64Kind: + b = protowire.AppendVarint(b, uint64(v.Int())) + case protoreflect.Sint64Kind: + b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) + case protoreflect.Uint64Kind: + b = protowire.AppendVarint(b, v.Uint()) + case protoreflect.Sfixed32Kind: + b = protowire.AppendFixed32(b, uint32(v.Int())) + case protoreflect.Fixed32Kind: + b = protowire.AppendFixed32(b, uint32(v.Uint())) + case protoreflect.FloatKind: + b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) + case protoreflect.Sfixed64Kind: + b = protowire.AppendFixed64(b, uint64(v.Int())) + case protoreflect.Fixed64Kind: + b = protowire.AppendFixed64(b, v.Uint()) + case protoreflect.DoubleKind: + b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) + case protoreflect.StringKind: + if strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) { + return b, errors.InvalidUTF8(string(fd.FullName())) + } + b = protowire.AppendString(b, v.String()) + case protoreflect.BytesKind: + b = protowire.AppendBytes(b, v.Bytes()) + case protoreflect.MessageKind: + var pos int + var err error + b, pos = appendSpeculativeLength(b) + b, err = o.marshalMessage(b, v.Message()) + if err != nil { + return b, err + } + b = finishSpeculativeLength(b, pos) + case protoreflect.GroupKind: + var err error + b, err = o.marshalMessage(b, v.Message()) + if err != nil { + return b, err + } + b = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType)) + default: + return b, errors.New("invalid kind %v", fd.Kind()) + } + return b, nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/equal.go b/examples/go/vendor/google.golang.org/protobuf/proto/equal.go new file mode 100644 index 0000000..1a0be1b --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/equal.go @@ -0,0 +1,57 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "reflect" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Equal reports whether two messages are equal, +// by recursively comparing the fields of the message. +// +// - Bytes fields are equal if they contain identical bytes. +// Empty bytes (regardless of nil-ness) are considered equal. +// +// - Floating-point fields are equal if they contain the same value. +// Unlike the == operator, a NaN is equal to another NaN. +// +// - Other scalar fields are equal if they contain the same value. +// +// - Message fields are equal if they have +// the same set of populated known and extension field values, and +// the same set of unknown fields values. +// +// - Lists are equal if they are the same length and +// each corresponding element is equal. +// +// - Maps are equal if they have the same set of keys and +// the corresponding value for each key is equal. +// +// An invalid message is not equal to a valid message. +// An invalid message is only equal to another invalid message of the +// same type. An invalid message often corresponds to a nil pointer +// of the concrete message type. For example, (*pb.M)(nil) is not equal +// to &pb.M{}. +// If two valid messages marshal to the same bytes under deterministic +// serialization, then Equal is guaranteed to report true. +func Equal(x, y Message) bool { + if x == nil || y == nil { + return x == nil && y == nil + } + if reflect.TypeOf(x).Kind() == reflect.Ptr && x == y { + // Avoid an expensive comparison if both inputs are identical pointers. + return true + } + mx := x.ProtoReflect() + my := y.ProtoReflect() + if mx.IsValid() != my.IsValid() { + return false + } + vx := protoreflect.ValueOfMessage(mx) + vy := protoreflect.ValueOfMessage(my) + return vx.Equal(vy) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/extension.go b/examples/go/vendor/google.golang.org/protobuf/proto/extension.go new file mode 100644 index 0000000..d248f29 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/extension.go @@ -0,0 +1,95 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/reflect/protoreflect" +) + +// HasExtension reports whether an extension field is populated. +// It returns false if m is invalid or if xt does not extend m. +func HasExtension(m Message, xt protoreflect.ExtensionType) bool { + // Treat nil message interface or descriptor as an empty message; no populated + // fields. + if m == nil || xt == nil { + return false + } + + // As a special-case, we reports invalid or mismatching descriptors + // as always not being populated (since they aren't). + mr := m.ProtoReflect() + xd := xt.TypeDescriptor() + if mr.Descriptor() != xd.ContainingMessage() { + return false + } + + return mr.Has(xd) +} + +// ClearExtension clears an extension field such that subsequent +// [HasExtension] calls return false. +// It panics if m is invalid or if xt does not extend m. +func ClearExtension(m Message, xt protoreflect.ExtensionType) { + m.ProtoReflect().Clear(xt.TypeDescriptor()) +} + +// GetExtension retrieves the value for an extension field. +// If the field is unpopulated, it returns the default value for +// scalars and an immutable, empty value for lists or messages. +// It panics if xt does not extend m. +func GetExtension(m Message, xt protoreflect.ExtensionType) any { + // Treat nil message interface as an empty message; return the default. + if m == nil { + return xt.InterfaceOf(xt.Zero()) + } + + return xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor())) +} + +// SetExtension stores the value of an extension field. +// It panics if m is invalid, xt does not extend m, or if type of v +// is invalid for the specified extension field. +func SetExtension(m Message, xt protoreflect.ExtensionType, v any) { + xd := xt.TypeDescriptor() + pv := xt.ValueOf(v) + + // Specially treat an invalid list, map, or message as clear. + isValid := true + switch { + case xd.IsList(): + isValid = pv.List().IsValid() + case xd.IsMap(): + isValid = pv.Map().IsValid() + case xd.Message() != nil: + isValid = pv.Message().IsValid() + } + if !isValid { + m.ProtoReflect().Clear(xd) + return + } + + m.ProtoReflect().Set(xd, pv) +} + +// RangeExtensions iterates over every populated extension field in m in an +// undefined order, calling f for each extension type and value encountered. +// It returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current extension field. +func RangeExtensions(m Message, f func(protoreflect.ExtensionType, any) bool) { + // Treat nil message interface as an empty message; nothing to range over. + if m == nil { + return + } + + m.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + if fd.IsExtension() { + xt := fd.(protoreflect.ExtensionTypeDescriptor).Type() + vi := xt.InterfaceOf(v) + return f(xt, vi) + } + return true + }) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/merge.go b/examples/go/vendor/google.golang.org/protobuf/proto/merge.go new file mode 100644 index 0000000..3c6fe57 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/merge.go @@ -0,0 +1,139 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// Merge merges src into dst, which must be a message with the same descriptor. +// +// Populated scalar fields in src are copied to dst, while populated +// singular messages in src are merged into dst by recursively calling Merge. +// The elements of every list field in src is appended to the corresponded +// list fields in dst. The entries of every map field in src is copied into +// the corresponding map field in dst, possibly replacing existing entries. +// The unknown fields of src are appended to the unknown fields of dst. +// +// It is semantically equivalent to unmarshaling the encoded form of src +// into dst with the [UnmarshalOptions.Merge] option specified. +func Merge(dst, src Message) { + // TODO: Should nil src be treated as semantically equivalent to a + // untyped, read-only, empty message? What about a nil dst? + + dstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect() + if dstMsg.Descriptor() != srcMsg.Descriptor() { + if got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want { + panic(fmt.Sprintf("descriptor mismatch: %v != %v", got, want)) + } + panic("descriptor mismatch") + } + mergeOptions{}.mergeMessage(dstMsg, srcMsg) +} + +// Clone returns a deep copy of m. +// If the top-level message is invalid, it returns an invalid message as well. +func Clone(m Message) Message { + // NOTE: Most usages of Clone assume the following properties: + // t := reflect.TypeOf(m) + // t == reflect.TypeOf(m.ProtoReflect().New().Interface()) + // t == reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface()) + // + // Embedding protobuf messages breaks this since the parent type will have + // a forwarded ProtoReflect method, but the Interface method will return + // the underlying embedded message type. + if m == nil { + return nil + } + src := m.ProtoReflect() + if !src.IsValid() { + return src.Type().Zero().Interface() + } + dst := src.New() + mergeOptions{}.mergeMessage(dst, src) + return dst.Interface() +} + +// mergeOptions provides a namespace for merge functions, and can be +// exported in the future if we add user-visible merge options. +type mergeOptions struct{} + +func (o mergeOptions) mergeMessage(dst, src protoreflect.Message) { + methods := protoMethods(dst) + if methods != nil && methods.Merge != nil { + in := protoiface.MergeInput{ + Destination: dst, + Source: src, + } + out := methods.Merge(in) + if out.Flags&protoiface.MergeComplete != 0 { + return + } + } + + if !dst.IsValid() { + panic(fmt.Sprintf("cannot merge into invalid %v message", dst.Descriptor().FullName())) + } + + src.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + switch { + case fd.IsList(): + o.mergeList(dst.Mutable(fd).List(), v.List(), fd) + case fd.IsMap(): + o.mergeMap(dst.Mutable(fd).Map(), v.Map(), fd.MapValue()) + case fd.Message() != nil: + o.mergeMessage(dst.Mutable(fd).Message(), v.Message()) + case fd.Kind() == protoreflect.BytesKind: + dst.Set(fd, o.cloneBytes(v)) + default: + dst.Set(fd, v) + } + return true + }) + + if len(src.GetUnknown()) > 0 { + dst.SetUnknown(append(dst.GetUnknown(), src.GetUnknown()...)) + } +} + +func (o mergeOptions) mergeList(dst, src protoreflect.List, fd protoreflect.FieldDescriptor) { + // Merge semantics appends to the end of the existing list. + for i, n := 0, src.Len(); i < n; i++ { + switch v := src.Get(i); { + case fd.Message() != nil: + dstv := dst.NewElement() + o.mergeMessage(dstv.Message(), v.Message()) + dst.Append(dstv) + case fd.Kind() == protoreflect.BytesKind: + dst.Append(o.cloneBytes(v)) + default: + dst.Append(v) + } + } +} + +func (o mergeOptions) mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) { + // Merge semantics replaces, rather than merges into existing entries. + src.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { + switch { + case fd.Message() != nil: + dstv := dst.NewValue() + o.mergeMessage(dstv.Message(), v.Message()) + dst.Set(k, dstv) + case fd.Kind() == protoreflect.BytesKind: + dst.Set(k, o.cloneBytes(v)) + default: + dst.Set(k, v) + } + return true + }) +} + +func (o mergeOptions) cloneBytes(v protoreflect.Value) protoreflect.Value { + return protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...)) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/messageset.go b/examples/go/vendor/google.golang.org/protobuf/proto/messageset.go new file mode 100644 index 0000000..575d148 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/messageset.go @@ -0,0 +1,98 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/internal/order" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" +) + +func (o MarshalOptions) sizeMessageSet(m protoreflect.Message) (size int) { + m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + size += messageset.SizeField(fd.Number()) + size += protowire.SizeTag(messageset.FieldMessage) + size += protowire.SizeBytes(o.size(v.Message())) + return true + }) + size += messageset.SizeUnknown(m.GetUnknown()) + return size +} + +func (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]byte, error) { + if !flags.ProtoLegacy { + return b, errors.New("no support for message_set_wire_format") + } + fieldOrder := order.AnyFieldOrder + if o.Deterministic { + fieldOrder = order.NumberFieldOrder + } + var err error + order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + b, err = o.marshalMessageSetField(b, fd, v) + return err == nil + }) + if err != nil { + return b, err + } + return messageset.AppendUnknown(b, m.GetUnknown()) +} + +func (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) { + b = messageset.AppendFieldStart(b, fd.Number()) + b = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType) + calculatedSize := o.Size(value.Message().Interface()) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := o.marshalMessage(b, value.Message()) + if err != nil { + return b, err + } + if measuredSize := len(b) - before; calculatedSize != measuredSize { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + b = messageset.AppendFieldEnd(b) + return b, nil +} + +func (o UnmarshalOptions) unmarshalMessageSet(b []byte, m protoreflect.Message) error { + if !flags.ProtoLegacy { + return errors.New("no support for message_set_wire_format") + } + return messageset.Unmarshal(b, false, func(num protowire.Number, v []byte) error { + err := o.unmarshalMessageSetField(m, num, v) + if err == errUnknown { + unknown := m.GetUnknown() + unknown = protowire.AppendTag(unknown, num, protowire.BytesType) + unknown = protowire.AppendBytes(unknown, v) + m.SetUnknown(unknown) + return nil + } + return err + }) +} + +func (o UnmarshalOptions) unmarshalMessageSetField(m protoreflect.Message, num protowire.Number, v []byte) error { + md := m.Descriptor() + if !md.ExtensionRanges().Has(num) { + return errUnknown + } + xt, err := o.Resolver.FindExtensionByNumber(md.FullName(), num) + if err == protoregistry.NotFound { + return errUnknown + } + if err != nil { + return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err) + } + xd := xt.TypeDescriptor() + if err := o.unmarshalMessage(v, m.Mutable(xd).Message()); err != nil { + return err + } + return nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/proto.go b/examples/go/vendor/google.golang.org/protobuf/proto/proto.go new file mode 100644 index 0000000..7543ee6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/proto.go @@ -0,0 +1,45 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Message is the top-level interface that all messages must implement. +// It provides access to a reflective view of a message. +// Any implementation of this interface may be used with all functions in the +// protobuf module that accept a Message, except where otherwise specified. +// +// This is the v2 interface definition for protobuf messages. +// The v1 interface definition is [github.com/golang/protobuf/proto.Message]. +// +// - To convert a v1 message to a v2 message, +// use [google.golang.org/protobuf/protoadapt.MessageV2Of]. +// - To convert a v2 message to a v1 message, +// use [google.golang.org/protobuf/protoadapt.MessageV1Of]. +type Message = protoreflect.ProtoMessage + +// Error matches all errors produced by packages in the protobuf module +// according to [errors.Is]. +// +// Example usage: +// +// if errors.Is(err, proto.Error) { ... } +var Error error + +func init() { + Error = errors.Error +} + +// MessageName returns the full name of m. +// If m is nil, it returns an empty string. +func MessageName(m Message) protoreflect.FullName { + if m == nil { + return "" + } + return m.ProtoReflect().Descriptor().FullName() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go b/examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go new file mode 100644 index 0000000..465e057 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/proto_methods.go @@ -0,0 +1,20 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The protoreflect build tag disables use of fast-path methods. +//go:build !protoreflect +// +build !protoreflect + +package proto + +import ( + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +const hasProtoMethods = true + +func protoMethods(m protoreflect.Message) *protoiface.Methods { + return m.ProtoMethods() +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go b/examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go new file mode 100644 index 0000000..494d6ce --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/proto_reflect.go @@ -0,0 +1,20 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The protoreflect build tag disables use of fast-path methods. +//go:build protoreflect +// +build protoreflect + +package proto + +import ( + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +const hasProtoMethods = false + +func protoMethods(m protoreflect.Message) *protoiface.Methods { + return nil +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/reset.go b/examples/go/vendor/google.golang.org/protobuf/proto/reset.go new file mode 100644 index 0000000..3d7f894 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/reset.go @@ -0,0 +1,43 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Reset clears every field in the message. +// The resulting message shares no observable memory with its previous state +// other than the memory for the message itself. +func Reset(m Message) { + if mr, ok := m.(interface{ Reset() }); ok && hasProtoMethods { + mr.Reset() + return + } + resetMessage(m.ProtoReflect()) +} + +func resetMessage(m protoreflect.Message) { + if !m.IsValid() { + panic(fmt.Sprintf("cannot reset invalid %v message", m.Descriptor().FullName())) + } + + // Clear all known fields. + fds := m.Descriptor().Fields() + for i := 0; i < fds.Len(); i++ { + m.Clear(fds.Get(i)) + } + + // Clear extension fields. + m.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool { + m.Clear(fd) + return true + }) + + // Clear unknown fields. + m.SetUnknown(nil) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/size.go b/examples/go/vendor/google.golang.org/protobuf/proto/size.go new file mode 100644 index 0000000..052fb5a --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/size.go @@ -0,0 +1,103 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +// Size returns the size in bytes of the wire-format encoding of m. +func Size(m Message) int { + return MarshalOptions{}.Size(m) +} + +// Size returns the size in bytes of the wire-format encoding of m. +func (o MarshalOptions) Size(m Message) int { + // Treat a nil message interface as an empty message; nothing to output. + if m == nil { + return 0 + } + + return o.size(m.ProtoReflect()) +} + +// size is a centralized function that all size operations go through. +// For profiling purposes, avoid changing the name of this function or +// introducing other code paths for size that do not go through this. +func (o MarshalOptions) size(m protoreflect.Message) (size int) { + methods := protoMethods(m) + if methods != nil && methods.Size != nil { + out := methods.Size(protoiface.SizeInput{ + Message: m, + Flags: o.flags(), + }) + return out.Size + } + if methods != nil && methods.Marshal != nil { + // This is not efficient, but we don't have any choice. + // This case is mainly used for legacy types with a Marshal method. + out, _ := methods.Marshal(protoiface.MarshalInput{ + Message: m, + Flags: o.flags(), + }) + return len(out.Buf) + } + return o.sizeMessageSlow(m) +} + +func (o MarshalOptions) sizeMessageSlow(m protoreflect.Message) (size int) { + if messageset.IsMessageSet(m.Descriptor()) { + return o.sizeMessageSet(m) + } + m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + size += o.sizeField(fd, v) + return true + }) + size += len(m.GetUnknown()) + return size +} + +func (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protoreflect.Value) (size int) { + num := fd.Number() + switch { + case fd.IsList(): + return o.sizeList(num, fd, value.List()) + case fd.IsMap(): + return o.sizeMap(num, fd, value.Map()) + default: + return protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), value) + } +} + +func (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) { + sizeTag := protowire.SizeTag(num) + + if fd.IsPacked() && list.Len() > 0 { + content := 0 + for i, llen := 0, list.Len(); i < llen; i++ { + content += o.sizeSingular(num, fd.Kind(), list.Get(i)) + } + return sizeTag + protowire.SizeBytes(content) + } + + for i, llen := 0, list.Len(); i < llen; i++ { + size += sizeTag + o.sizeSingular(num, fd.Kind(), list.Get(i)) + } + return size +} + +func (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) { + sizeTag := protowire.SizeTag(num) + + mapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool { + size += sizeTag + size += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value)) + return true + }) + return size +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go b/examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go new file mode 100644 index 0000000..3cf61a8 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/size_gen.go @@ -0,0 +1,55 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-types. DO NOT EDIT. + +package proto + +import ( + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/reflect/protoreflect" +) + +func (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int { + switch kind { + case protoreflect.BoolKind: + return protowire.SizeVarint(protowire.EncodeBool(v.Bool())) + case protoreflect.EnumKind: + return protowire.SizeVarint(uint64(v.Enum())) + case protoreflect.Int32Kind: + return protowire.SizeVarint(uint64(int32(v.Int()))) + case protoreflect.Sint32Kind: + return protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) + case protoreflect.Uint32Kind: + return protowire.SizeVarint(uint64(uint32(v.Uint()))) + case protoreflect.Int64Kind: + return protowire.SizeVarint(uint64(v.Int())) + case protoreflect.Sint64Kind: + return protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) + case protoreflect.Uint64Kind: + return protowire.SizeVarint(v.Uint()) + case protoreflect.Sfixed32Kind: + return protowire.SizeFixed32() + case protoreflect.Fixed32Kind: + return protowire.SizeFixed32() + case protoreflect.FloatKind: + return protowire.SizeFixed32() + case protoreflect.Sfixed64Kind: + return protowire.SizeFixed64() + case protoreflect.Fixed64Kind: + return protowire.SizeFixed64() + case protoreflect.DoubleKind: + return protowire.SizeFixed64() + case protoreflect.StringKind: + return protowire.SizeBytes(len(v.String())) + case protoreflect.BytesKind: + return protowire.SizeBytes(len(v.Bytes())) + case protoreflect.MessageKind: + return protowire.SizeBytes(o.size(v.Message())) + case protoreflect.GroupKind: + return protowire.SizeGroup(num, o.size(v.Message())) + default: + return 0 + } +} diff --git a/examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go b/examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go new file mode 100644 index 0000000..653b12c --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/proto/wrappers.go @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proto + +// Bool stores v in a new bool value and returns a pointer to it. +func Bool(v bool) *bool { return &v } + +// Int32 stores v in a new int32 value and returns a pointer to it. +func Int32(v int32) *int32 { return &v } + +// Int64 stores v in a new int64 value and returns a pointer to it. +func Int64(v int64) *int64 { return &v } + +// Float32 stores v in a new float32 value and returns a pointer to it. +func Float32(v float32) *float32 { return &v } + +// Float64 stores v in a new float64 value and returns a pointer to it. +func Float64(v float64) *float64 { return &v } + +// Uint32 stores v in a new uint32 value and returns a pointer to it. +func Uint32(v uint32) *uint32 { return &v } + +// Uint64 stores v in a new uint64 value and returns a pointer to it. +func Uint64(v uint64) *uint64 { return &v } + +// String stores v in a new string value and returns a pointer to it. +func String(v string) *string { return &v } diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go new file mode 100644 index 0000000..d5d5af6 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go @@ -0,0 +1,78 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "google.golang.org/protobuf/internal/pragma" +) + +// The following types are used by the fast-path Message.ProtoMethods method. +// +// To avoid polluting the public protoreflect API with types used only by +// low-level implementations, the canonical definitions of these types are +// in the runtime/protoiface package. The definitions here and in protoiface +// must be kept in sync. +type ( + methods = struct { + pragma.NoUnkeyedLiterals + Flags supportFlags + Size func(sizeInput) sizeOutput + Marshal func(marshalInput) (marshalOutput, error) + Unmarshal func(unmarshalInput) (unmarshalOutput, error) + Merge func(mergeInput) mergeOutput + CheckInitialized func(checkInitializedInput) (checkInitializedOutput, error) + } + supportFlags = uint64 + sizeInput = struct { + pragma.NoUnkeyedLiterals + Message Message + Flags uint8 + } + sizeOutput = struct { + pragma.NoUnkeyedLiterals + Size int + } + marshalInput = struct { + pragma.NoUnkeyedLiterals + Message Message + Buf []byte + Flags uint8 + } + marshalOutput = struct { + pragma.NoUnkeyedLiterals + Buf []byte + } + unmarshalInput = struct { + pragma.NoUnkeyedLiterals + Message Message + Buf []byte + Flags uint8 + Resolver interface { + FindExtensionByName(field FullName) (ExtensionType, error) + FindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error) + } + Depth int + } + unmarshalOutput = struct { + pragma.NoUnkeyedLiterals + Flags uint8 + } + mergeInput = struct { + pragma.NoUnkeyedLiterals + Source Message + Destination Message + } + mergeOutput = struct { + pragma.NoUnkeyedLiterals + Flags uint8 + } + checkInitializedInput = struct { + pragma.NoUnkeyedLiterals + Message Message + } + checkInitializedOutput = struct { + pragma.NoUnkeyedLiterals + } +) diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go new file mode 100644 index 0000000..c85bfaa --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go @@ -0,0 +1,513 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoreflect provides interfaces to dynamically manipulate messages. +// +// This package includes type descriptors which describe the structure of types +// defined in proto source files and value interfaces which provide the +// ability to examine and manipulate the contents of messages. +// +// # Protocol Buffer Descriptors +// +// Protobuf descriptors (e.g., [EnumDescriptor] or [MessageDescriptor]) +// are immutable objects that represent protobuf type information. +// They are wrappers around the messages declared in descriptor.proto. +// Protobuf descriptors alone lack any information regarding Go types. +// +// Enums and messages generated by this module implement [Enum] and [ProtoMessage], +// where the Descriptor and ProtoReflect.Descriptor accessors respectively +// return the protobuf descriptor for the values. +// +// The protobuf descriptor interfaces are not meant to be implemented by +// user code since they might need to be extended in the future to support +// additions to the protobuf language. +// The [google.golang.org/protobuf/reflect/protodesc] package converts between +// google.protobuf.DescriptorProto messages and protobuf descriptors. +// +// # Go Type Descriptors +// +// A type descriptor (e.g., [EnumType] or [MessageType]) is a constructor for +// a concrete Go type that represents the associated protobuf descriptor. +// There is commonly a one-to-one relationship between protobuf descriptors and +// Go type descriptors, but it can potentially be a one-to-many relationship. +// +// Enums and messages generated by this module implement [Enum] and [ProtoMessage], +// where the Type and ProtoReflect.Type accessors respectively +// return the protobuf descriptor for the values. +// +// The [google.golang.org/protobuf/types/dynamicpb] package can be used to +// create Go type descriptors from protobuf descriptors. +// +// # Value Interfaces +// +// The [Enum] and [Message] interfaces provide a reflective view over an +// enum or message instance. For enums, it provides the ability to retrieve +// the enum value number for any concrete enum type. For messages, it provides +// the ability to access or manipulate fields of the message. +// +// To convert a [google.golang.org/protobuf/proto.Message] to a [protoreflect.Message], use the +// former's ProtoReflect method. Since the ProtoReflect method is new to the +// v2 message interface, it may not be present on older message implementations. +// The [github.com/golang/protobuf/proto.MessageReflect] function can be used +// to obtain a reflective view on older messages. +// +// # Relationships +// +// The following diagrams demonstrate the relationships between +// various types declared in this package. +// +// ┌───────────────────────────────────┐ +// V │ +// ┌────────────── New(n) ─────────────┐ │ +// │ │ │ +// │ ┌──── Descriptor() ──┐ │ ┌── Number() ──┐ │ +// │ │ V V │ V │ +// ╔════════════╗ ╔════════════════╗ ╔════════╗ ╔════════════╗ +// ║ EnumType ║ ║ EnumDescriptor ║ ║ Enum ║ ║ EnumNumber ║ +// ╚════════════╝ ╚════════════════╝ ╚════════╝ ╚════════════╝ +// Λ Λ │ │ +// │ └─── Descriptor() ──┘ │ +// │ │ +// └────────────────── Type() ───────┘ +// +// • An [EnumType] describes a concrete Go enum type. +// It has an EnumDescriptor and can construct an Enum instance. +// +// • An [EnumDescriptor] describes an abstract protobuf enum type. +// +// • An [Enum] is a concrete enum instance. Generated enums implement Enum. +// +// ┌──────────────── New() ─────────────────┐ +// │ │ +// │ ┌─── Descriptor() ─────┐ │ ┌── Interface() ───┐ +// │ │ V V │ V +// ╔═════════════╗ ╔═══════════════════╗ ╔═════════╗ ╔══════════════╗ +// ║ MessageType ║ ║ MessageDescriptor ║ ║ Message ║ ║ ProtoMessage ║ +// ╚═════════════╝ ╚═══════════════════╝ ╚═════════╝ ╚══════════════╝ +// Λ Λ │ │ Λ │ +// │ └──── Descriptor() ────┘ │ └─ ProtoReflect() ─┘ +// │ │ +// └─────────────────── Type() ─────────┘ +// +// • A [MessageType] describes a concrete Go message type. +// It has a [MessageDescriptor] and can construct a [Message] instance. +// Just as how Go's [reflect.Type] is a reflective description of a Go type, +// a [MessageType] is a reflective description of a Go type for a protobuf message. +// +// • A [MessageDescriptor] describes an abstract protobuf message type. +// It has no understanding of Go types. In order to construct a [MessageType] +// from just a [MessageDescriptor], you can consider looking up the message type +// in the global registry using the FindMessageByName method on +// [google.golang.org/protobuf/reflect/protoregistry.GlobalTypes] +// or constructing a dynamic [MessageType] using +// [google.golang.org/protobuf/types/dynamicpb.NewMessageType]. +// +// • A [Message] is a reflective view over a concrete message instance. +// Generated messages implement [ProtoMessage], which can convert to a [Message]. +// Just as how Go's [reflect.Value] is a reflective view over a Go value, +// a [Message] is a reflective view over a concrete protobuf message instance. +// Using Go reflection as an analogy, the [ProtoMessage.ProtoReflect] method is similar to +// calling [reflect.ValueOf], and the [Message.Interface] method is similar to +// calling [reflect.Value.Interface]. +// +// ┌── TypeDescriptor() ──┐ ┌───── Descriptor() ─────┐ +// │ V │ V +// ╔═══════════════╗ ╔═════════════════════════╗ ╔═════════════════════╗ +// ║ ExtensionType ║ ║ ExtensionTypeDescriptor ║ ║ ExtensionDescriptor ║ +// ╚═══════════════╝ ╚═════════════════════════╝ ╚═════════════════════╝ +// Λ │ │ Λ │ Λ +// └─────── Type() ───────┘ │ └─── may implement ────┘ │ +// │ │ +// └────── implements ────────┘ +// +// • An [ExtensionType] describes a concrete Go implementation of an extension. +// It has an [ExtensionTypeDescriptor] and can convert to/from +// an abstract [Value] and a Go value. +// +// • An [ExtensionTypeDescriptor] is an [ExtensionDescriptor] +// which also has an [ExtensionType]. +// +// • An [ExtensionDescriptor] describes an abstract protobuf extension field and +// may not always be an [ExtensionTypeDescriptor]. +package protoreflect + +import ( + "fmt" + "strings" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/pragma" +) + +type doNotImplement pragma.DoNotImplement + +// ProtoMessage is the top-level interface that all proto messages implement. +// This is declared in the protoreflect package to avoid a cyclic dependency; +// use the [google.golang.org/protobuf/proto.Message] type instead, which aliases this type. +type ProtoMessage interface{ ProtoReflect() Message } + +// Syntax is the language version of the proto file. +type Syntax syntax + +type syntax int8 // keep exact type opaque as the int type may change + +const ( + Proto2 Syntax = 2 + Proto3 Syntax = 3 + Editions Syntax = 4 +) + +// IsValid reports whether the syntax is valid. +func (s Syntax) IsValid() bool { + switch s { + case Proto2, Proto3, Editions: + return true + default: + return false + } +} + +// String returns s as a proto source identifier (e.g., "proto2"). +func (s Syntax) String() string { + switch s { + case Proto2: + return "proto2" + case Proto3: + return "proto3" + case Editions: + return "editions" + default: + return fmt.Sprintf("", s) + } +} + +// GoString returns s as a Go source identifier (e.g., "Proto2"). +func (s Syntax) GoString() string { + switch s { + case Proto2: + return "Proto2" + case Proto3: + return "Proto3" + default: + return fmt.Sprintf("Syntax(%d)", s) + } +} + +// Cardinality determines whether a field is optional, required, or repeated. +type Cardinality cardinality + +type cardinality int8 // keep exact type opaque as the int type may change + +// Constants as defined by the google.protobuf.Cardinality enumeration. +const ( + Optional Cardinality = 1 // appears zero or one times + Required Cardinality = 2 // appears exactly one time; invalid with Proto3 + Repeated Cardinality = 3 // appears zero or more times +) + +// IsValid reports whether the cardinality is valid. +func (c Cardinality) IsValid() bool { + switch c { + case Optional, Required, Repeated: + return true + default: + return false + } +} + +// String returns c as a proto source identifier (e.g., "optional"). +func (c Cardinality) String() string { + switch c { + case Optional: + return "optional" + case Required: + return "required" + case Repeated: + return "repeated" + default: + return fmt.Sprintf("", c) + } +} + +// GoString returns c as a Go source identifier (e.g., "Optional"). +func (c Cardinality) GoString() string { + switch c { + case Optional: + return "Optional" + case Required: + return "Required" + case Repeated: + return "Repeated" + default: + return fmt.Sprintf("Cardinality(%d)", c) + } +} + +// Kind indicates the basic proto kind of a field. +type Kind kind + +type kind int8 // keep exact type opaque as the int type may change + +// Constants as defined by the google.protobuf.Field.Kind enumeration. +const ( + BoolKind Kind = 8 + EnumKind Kind = 14 + Int32Kind Kind = 5 + Sint32Kind Kind = 17 + Uint32Kind Kind = 13 + Int64Kind Kind = 3 + Sint64Kind Kind = 18 + Uint64Kind Kind = 4 + Sfixed32Kind Kind = 15 + Fixed32Kind Kind = 7 + FloatKind Kind = 2 + Sfixed64Kind Kind = 16 + Fixed64Kind Kind = 6 + DoubleKind Kind = 1 + StringKind Kind = 9 + BytesKind Kind = 12 + MessageKind Kind = 11 + GroupKind Kind = 10 +) + +// IsValid reports whether the kind is valid. +func (k Kind) IsValid() bool { + switch k { + case BoolKind, EnumKind, + Int32Kind, Sint32Kind, Uint32Kind, + Int64Kind, Sint64Kind, Uint64Kind, + Sfixed32Kind, Fixed32Kind, FloatKind, + Sfixed64Kind, Fixed64Kind, DoubleKind, + StringKind, BytesKind, MessageKind, GroupKind: + return true + default: + return false + } +} + +// String returns k as a proto source identifier (e.g., "bool"). +func (k Kind) String() string { + switch k { + case BoolKind: + return "bool" + case EnumKind: + return "enum" + case Int32Kind: + return "int32" + case Sint32Kind: + return "sint32" + case Uint32Kind: + return "uint32" + case Int64Kind: + return "int64" + case Sint64Kind: + return "sint64" + case Uint64Kind: + return "uint64" + case Sfixed32Kind: + return "sfixed32" + case Fixed32Kind: + return "fixed32" + case FloatKind: + return "float" + case Sfixed64Kind: + return "sfixed64" + case Fixed64Kind: + return "fixed64" + case DoubleKind: + return "double" + case StringKind: + return "string" + case BytesKind: + return "bytes" + case MessageKind: + return "message" + case GroupKind: + return "group" + default: + return fmt.Sprintf("", k) + } +} + +// GoString returns k as a Go source identifier (e.g., "BoolKind"). +func (k Kind) GoString() string { + switch k { + case BoolKind: + return "BoolKind" + case EnumKind: + return "EnumKind" + case Int32Kind: + return "Int32Kind" + case Sint32Kind: + return "Sint32Kind" + case Uint32Kind: + return "Uint32Kind" + case Int64Kind: + return "Int64Kind" + case Sint64Kind: + return "Sint64Kind" + case Uint64Kind: + return "Uint64Kind" + case Sfixed32Kind: + return "Sfixed32Kind" + case Fixed32Kind: + return "Fixed32Kind" + case FloatKind: + return "FloatKind" + case Sfixed64Kind: + return "Sfixed64Kind" + case Fixed64Kind: + return "Fixed64Kind" + case DoubleKind: + return "DoubleKind" + case StringKind: + return "StringKind" + case BytesKind: + return "BytesKind" + case MessageKind: + return "MessageKind" + case GroupKind: + return "GroupKind" + default: + return fmt.Sprintf("Kind(%d)", k) + } +} + +// FieldNumber is the field number in a message. +type FieldNumber = protowire.Number + +// FieldNumbers represent a list of field numbers. +type FieldNumbers interface { + // Len reports the number of fields in the list. + Len() int + // Get returns the ith field number. It panics if out of bounds. + Get(i int) FieldNumber + // Has reports whether n is within the list of fields. + Has(n FieldNumber) bool + + doNotImplement +} + +// FieldRanges represent a list of field number ranges. +type FieldRanges interface { + // Len reports the number of ranges in the list. + Len() int + // Get returns the ith range. It panics if out of bounds. + Get(i int) [2]FieldNumber // start inclusive; end exclusive + // Has reports whether n is within any of the ranges. + Has(n FieldNumber) bool + + doNotImplement +} + +// EnumNumber is the numeric value for an enum. +type EnumNumber int32 + +// EnumRanges represent a list of enum number ranges. +type EnumRanges interface { + // Len reports the number of ranges in the list. + Len() int + // Get returns the ith range. It panics if out of bounds. + Get(i int) [2]EnumNumber // start inclusive; end inclusive + // Has reports whether n is within any of the ranges. + Has(n EnumNumber) bool + + doNotImplement +} + +// Name is the short name for a proto declaration. This is not the name +// as used in Go source code, which might not be identical to the proto name. +type Name string // e.g., "Kind" + +// IsValid reports whether s is a syntactically valid name. +// An empty name is invalid. +func (s Name) IsValid() bool { + return consumeIdent(string(s)) == len(s) +} + +// Names represent a list of names. +type Names interface { + // Len reports the number of names in the list. + Len() int + // Get returns the ith name. It panics if out of bounds. + Get(i int) Name + // Has reports whether s matches any names in the list. + Has(s Name) bool + + doNotImplement +} + +// FullName is a qualified name that uniquely identifies a proto declaration. +// A qualified name is the concatenation of the proto package along with the +// fully-declared name (i.e., name of parent preceding the name of the child), +// with a '.' delimiter placed between each [Name]. +// +// This should not have any leading or trailing dots. +type FullName string // e.g., "google.protobuf.Field.Kind" + +// IsValid reports whether s is a syntactically valid full name. +// An empty full name is invalid. +func (s FullName) IsValid() bool { + i := consumeIdent(string(s)) + if i < 0 { + return false + } + for len(s) > i { + if s[i] != '.' { + return false + } + i++ + n := consumeIdent(string(s[i:])) + if n < 0 { + return false + } + i += n + } + return true +} + +func consumeIdent(s string) (i int) { + if len(s) == 0 || !isLetter(s[i]) { + return -1 + } + i++ + for len(s) > i && isLetterDigit(s[i]) { + i++ + } + return i +} +func isLetter(c byte) bool { + return c == '_' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') +} +func isLetterDigit(c byte) bool { + return isLetter(c) || ('0' <= c && c <= '9') +} + +// Name returns the short name, which is the last identifier segment. +// A single segment FullName is the [Name] itself. +func (n FullName) Name() Name { + if i := strings.LastIndexByte(string(n), '.'); i >= 0 { + return Name(n[i+1:]) + } + return Name(n) +} + +// Parent returns the full name with the trailing identifier removed. +// A single segment FullName has no parent. +func (n FullName) Parent() FullName { + if i := strings.LastIndexByte(string(n), '.'); i >= 0 { + return n[:i] + } + return "" +} + +// Append returns the qualified name appended with the provided short name. +// +// Invariant: n == n.Parent().Append(n.Name()) // assuming n is valid +func (n FullName) Append(s Name) FullName { + if n == "" { + return FullName(s) + } + return n + "." + FullName(s) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go new file mode 100644 index 0000000..0b99428 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go @@ -0,0 +1,129 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "strconv" +) + +// SourceLocations is a list of source locations. +type SourceLocations interface { + // Len reports the number of source locations in the proto file. + Len() int + // Get returns the ith SourceLocation. It panics if out of bounds. + Get(int) SourceLocation + + // ByPath returns the SourceLocation for the given path, + // returning the first location if multiple exist for the same path. + // If multiple locations exist for the same path, + // then SourceLocation.Next index can be used to identify the + // index of the next SourceLocation. + // If no location exists for this path, it returns the zero value. + ByPath(path SourcePath) SourceLocation + + // ByDescriptor returns the SourceLocation for the given descriptor, + // returning the first location if multiple exist for the same path. + // If no location exists for this descriptor, it returns the zero value. + ByDescriptor(desc Descriptor) SourceLocation + + doNotImplement +} + +// SourceLocation describes a source location and +// corresponds with the google.protobuf.SourceCodeInfo.Location message. +type SourceLocation struct { + // Path is the path to the declaration from the root file descriptor. + // The contents of this slice must not be mutated. + Path SourcePath + + // StartLine and StartColumn are the zero-indexed starting location + // in the source file for the declaration. + StartLine, StartColumn int + // EndLine and EndColumn are the zero-indexed ending location + // in the source file for the declaration. + // In the descriptor.proto, the end line may be omitted if it is identical + // to the start line. Here, it is always populated. + EndLine, EndColumn int + + // LeadingDetachedComments are the leading detached comments + // for the declaration. The contents of this slice must not be mutated. + LeadingDetachedComments []string + // LeadingComments is the leading attached comment for the declaration. + LeadingComments string + // TrailingComments is the trailing attached comment for the declaration. + TrailingComments string + + // Next is an index into SourceLocations for the next source location that + // has the same Path. It is zero if there is no next location. + Next int +} + +// SourcePath identifies part of a file descriptor for a source location. +// The SourcePath is a sequence of either field numbers or indexes into +// a repeated field that form a path starting from the root file descriptor. +// +// See google.protobuf.SourceCodeInfo.Location.path. +type SourcePath []int32 + +// Equal reports whether p1 equals p2. +func (p1 SourcePath) Equal(p2 SourcePath) bool { + if len(p1) != len(p2) { + return false + } + for i := range p1 { + if p1[i] != p2[i] { + return false + } + } + return true +} + +// String formats the path in a humanly readable manner. +// The output is guaranteed to be deterministic, +// making it suitable for use as a key into a Go map. +// It is not guaranteed to be stable as the exact output could change +// in a future version of this module. +// +// Example output: +// +// .message_type[6].nested_type[15].field[3] +func (p SourcePath) String() string { + b := p.appendFileDescriptorProto(nil) + for _, i := range p { + b = append(b, '.') + b = strconv.AppendInt(b, int64(i), 10) + } + return string(b) +} + +type appendFunc func(*SourcePath, []byte) []byte + +func (p *SourcePath) appendSingularField(b []byte, name string, f appendFunc) []byte { + if len(*p) == 0 { + return b + } + b = append(b, '.') + b = append(b, name...) + *p = (*p)[1:] + if f != nil { + b = f(p, b) + } + return b +} + +func (p *SourcePath) appendRepeatedField(b []byte, name string, f appendFunc) []byte { + b = p.appendSingularField(b, name, nil) + if len(*p) == 0 || (*p)[0] < 0 { + return b + } + b = append(b, '[') + b = strconv.AppendUint(b, uint64((*p)[0]), 10) + b = append(b, ']') + *p = (*p)[1:] + if f != nil { + b = f(p, b) + } + return b +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go new file mode 100644 index 0000000..ea154ee --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go @@ -0,0 +1,573 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated by generate-protos. DO NOT EDIT. + +package protoreflect + +func (p *SourcePath) appendFileDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "package", nil) + case 3: + b = p.appendRepeatedField(b, "dependency", nil) + case 10: + b = p.appendRepeatedField(b, "public_dependency", nil) + case 11: + b = p.appendRepeatedField(b, "weak_dependency", nil) + case 4: + b = p.appendRepeatedField(b, "message_type", (*SourcePath).appendDescriptorProto) + case 5: + b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto) + case 6: + b = p.appendRepeatedField(b, "service", (*SourcePath).appendServiceDescriptorProto) + case 7: + b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto) + case 8: + b = p.appendSingularField(b, "options", (*SourcePath).appendFileOptions) + case 9: + b = p.appendSingularField(b, "source_code_info", (*SourcePath).appendSourceCodeInfo) + case 12: + b = p.appendSingularField(b, "syntax", nil) + case 14: + b = p.appendSingularField(b, "edition", nil) + } + return b +} + +func (p *SourcePath) appendDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendRepeatedField(b, "field", (*SourcePath).appendFieldDescriptorProto) + case 6: + b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto) + case 3: + b = p.appendRepeatedField(b, "nested_type", (*SourcePath).appendDescriptorProto) + case 4: + b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto) + case 5: + b = p.appendRepeatedField(b, "extension_range", (*SourcePath).appendDescriptorProto_ExtensionRange) + case 8: + b = p.appendRepeatedField(b, "oneof_decl", (*SourcePath).appendOneofDescriptorProto) + case 7: + b = p.appendSingularField(b, "options", (*SourcePath).appendMessageOptions) + case 9: + b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendDescriptorProto_ReservedRange) + case 10: + b = p.appendRepeatedField(b, "reserved_name", nil) + } + return b +} + +func (p *SourcePath) appendEnumDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendRepeatedField(b, "value", (*SourcePath).appendEnumValueDescriptorProto) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendEnumOptions) + case 4: + b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange) + case 5: + b = p.appendRepeatedField(b, "reserved_name", nil) + } + return b +} + +func (p *SourcePath) appendServiceDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendRepeatedField(b, "method", (*SourcePath).appendMethodDescriptorProto) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendServiceOptions) + } + return b +} + +func (p *SourcePath) appendFieldDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 3: + b = p.appendSingularField(b, "number", nil) + case 4: + b = p.appendSingularField(b, "label", nil) + case 5: + b = p.appendSingularField(b, "type", nil) + case 6: + b = p.appendSingularField(b, "type_name", nil) + case 2: + b = p.appendSingularField(b, "extendee", nil) + case 7: + b = p.appendSingularField(b, "default_value", nil) + case 9: + b = p.appendSingularField(b, "oneof_index", nil) + case 10: + b = p.appendSingularField(b, "json_name", nil) + case 8: + b = p.appendSingularField(b, "options", (*SourcePath).appendFieldOptions) + case 17: + b = p.appendSingularField(b, "proto3_optional", nil) + } + return b +} + +func (p *SourcePath) appendFileOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "java_package", nil) + case 8: + b = p.appendSingularField(b, "java_outer_classname", nil) + case 10: + b = p.appendSingularField(b, "java_multiple_files", nil) + case 20: + b = p.appendSingularField(b, "java_generate_equals_and_hash", nil) + case 27: + b = p.appendSingularField(b, "java_string_check_utf8", nil) + case 9: + b = p.appendSingularField(b, "optimize_for", nil) + case 11: + b = p.appendSingularField(b, "go_package", nil) + case 16: + b = p.appendSingularField(b, "cc_generic_services", nil) + case 17: + b = p.appendSingularField(b, "java_generic_services", nil) + case 18: + b = p.appendSingularField(b, "py_generic_services", nil) + case 23: + b = p.appendSingularField(b, "deprecated", nil) + case 31: + b = p.appendSingularField(b, "cc_enable_arenas", nil) + case 36: + b = p.appendSingularField(b, "objc_class_prefix", nil) + case 37: + b = p.appendSingularField(b, "csharp_namespace", nil) + case 39: + b = p.appendSingularField(b, "swift_prefix", nil) + case 40: + b = p.appendSingularField(b, "php_class_prefix", nil) + case 41: + b = p.appendSingularField(b, "php_namespace", nil) + case 44: + b = p.appendSingularField(b, "php_metadata_namespace", nil) + case 45: + b = p.appendSingularField(b, "ruby_package", nil) + case 50: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendSourceCodeInfo(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendRepeatedField(b, "location", (*SourcePath).appendSourceCodeInfo_Location) + } + return b +} + +func (p *SourcePath) appendDescriptorProto_ExtensionRange(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "start", nil) + case 2: + b = p.appendSingularField(b, "end", nil) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendExtensionRangeOptions) + } + return b +} + +func (p *SourcePath) appendOneofDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "options", (*SourcePath).appendOneofOptions) + } + return b +} + +func (p *SourcePath) appendMessageOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "message_set_wire_format", nil) + case 2: + b = p.appendSingularField(b, "no_standard_descriptor_accessor", nil) + case 3: + b = p.appendSingularField(b, "deprecated", nil) + case 7: + b = p.appendSingularField(b, "map_entry", nil) + case 11: + b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) + case 12: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendDescriptorProto_ReservedRange(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "start", nil) + case 2: + b = p.appendSingularField(b, "end", nil) + } + return b +} + +func (p *SourcePath) appendEnumValueDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "number", nil) + case 3: + b = p.appendSingularField(b, "options", (*SourcePath).appendEnumValueOptions) + } + return b +} + +func (p *SourcePath) appendEnumOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 2: + b = p.appendSingularField(b, "allow_alias", nil) + case 3: + b = p.appendSingularField(b, "deprecated", nil) + case 6: + b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) + case 7: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendEnumDescriptorProto_EnumReservedRange(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "start", nil) + case 2: + b = p.appendSingularField(b, "end", nil) + } + return b +} + +func (p *SourcePath) appendMethodDescriptorProto(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name", nil) + case 2: + b = p.appendSingularField(b, "input_type", nil) + case 3: + b = p.appendSingularField(b, "output_type", nil) + case 4: + b = p.appendSingularField(b, "options", (*SourcePath).appendMethodOptions) + case 5: + b = p.appendSingularField(b, "client_streaming", nil) + case 6: + b = p.appendSingularField(b, "server_streaming", nil) + } + return b +} + +func (p *SourcePath) appendServiceOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 34: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 33: + b = p.appendSingularField(b, "deprecated", nil) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendFieldOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "ctype", nil) + case 2: + b = p.appendSingularField(b, "packed", nil) + case 6: + b = p.appendSingularField(b, "jstype", nil) + case 5: + b = p.appendSingularField(b, "lazy", nil) + case 15: + b = p.appendSingularField(b, "unverified_lazy", nil) + case 3: + b = p.appendSingularField(b, "deprecated", nil) + case 10: + b = p.appendSingularField(b, "weak", nil) + case 16: + b = p.appendSingularField(b, "debug_redact", nil) + case 17: + b = p.appendSingularField(b, "retention", nil) + case 19: + b = p.appendRepeatedField(b, "targets", nil) + case 20: + b = p.appendRepeatedField(b, "edition_defaults", (*SourcePath).appendFieldOptions_EditionDefault) + case 21: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 22: + b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendFeatureSet(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "field_presence", nil) + case 2: + b = p.appendSingularField(b, "enum_type", nil) + case 3: + b = p.appendSingularField(b, "repeated_field_encoding", nil) + case 4: + b = p.appendSingularField(b, "utf8_validation", nil) + case 5: + b = p.appendSingularField(b, "message_encoding", nil) + case 6: + b = p.appendSingularField(b, "json_format", nil) + } + return b +} + +func (p *SourcePath) appendUninterpretedOption(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 2: + b = p.appendRepeatedField(b, "name", (*SourcePath).appendUninterpretedOption_NamePart) + case 3: + b = p.appendSingularField(b, "identifier_value", nil) + case 4: + b = p.appendSingularField(b, "positive_int_value", nil) + case 5: + b = p.appendSingularField(b, "negative_int_value", nil) + case 6: + b = p.appendSingularField(b, "double_value", nil) + case 7: + b = p.appendSingularField(b, "string_value", nil) + case 8: + b = p.appendSingularField(b, "aggregate_value", nil) + } + return b +} + +func (p *SourcePath) appendSourceCodeInfo_Location(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendRepeatedField(b, "path", nil) + case 2: + b = p.appendRepeatedField(b, "span", nil) + case 3: + b = p.appendSingularField(b, "leading_comments", nil) + case 4: + b = p.appendSingularField(b, "trailing_comments", nil) + case 6: + b = p.appendRepeatedField(b, "leading_detached_comments", nil) + } + return b +} + +func (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + case 2: + b = p.appendRepeatedField(b, "declaration", (*SourcePath).appendExtensionRangeOptions_Declaration) + case 50: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 3: + b = p.appendSingularField(b, "verification", nil) + } + return b +} + +func (p *SourcePath) appendOneofOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendEnumValueOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "deprecated", nil) + case 2: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 3: + b = p.appendSingularField(b, "debug_redact", nil) + case 4: + b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendMethodOptions(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 33: + b = p.appendSingularField(b, "deprecated", nil) + case 34: + b = p.appendSingularField(b, "idempotency_level", nil) + case 35: + b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 999: + b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) + } + return b +} + +func (p *SourcePath) appendFieldOptions_EditionDefault(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 3: + b = p.appendSingularField(b, "edition", nil) + case 2: + b = p.appendSingularField(b, "value", nil) + } + return b +} + +func (p *SourcePath) appendFieldOptions_FeatureSupport(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "edition_introduced", nil) + case 2: + b = p.appendSingularField(b, "edition_deprecated", nil) + case 3: + b = p.appendSingularField(b, "deprecation_warning", nil) + case 4: + b = p.appendSingularField(b, "edition_removed", nil) + } + return b +} + +func (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "name_part", nil) + case 2: + b = p.appendSingularField(b, "is_extension", nil) + } + return b +} + +func (p *SourcePath) appendExtensionRangeOptions_Declaration(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "number", nil) + case 2: + b = p.appendSingularField(b, "full_name", nil) + case 3: + b = p.appendSingularField(b, "type", nil) + case 5: + b = p.appendSingularField(b, "reserved", nil) + case 6: + b = p.appendSingularField(b, "repeated", nil) + } + return b +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go new file mode 100644 index 0000000..cd8fadb --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go @@ -0,0 +1,672 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +// Descriptor provides a set of accessors that are common to every descriptor. +// Each descriptor type wraps the equivalent google.protobuf.XXXDescriptorProto, +// but provides efficient lookup and immutability. +// +// Each descriptor is comparable. Equality implies that the two types are +// exactly identical. However, it is possible for the same semantically +// identical proto type to be represented by multiple type descriptors. +// +// For example, suppose we have t1 and t2 which are both an [MessageDescriptor]. +// If t1 == t2, then the types are definitely equal and all accessors return +// the same information. However, if t1 != t2, then it is still possible that +// they still represent the same proto type (e.g., t1.FullName == t2.FullName). +// This can occur if a descriptor type is created dynamically, or multiple +// versions of the same proto type are accidentally linked into the Go binary. +type Descriptor interface { + // ParentFile returns the parent file descriptor that this descriptor + // is declared within. The parent file for the file descriptor is itself. + // + // Support for this functionality is optional and may return nil. + ParentFile() FileDescriptor + + // Parent returns the parent containing this descriptor declaration. + // The following shows the mapping from child type to possible parent types: + // + // ╔═════════════════════╤═══════════════════════════════════╗ + // ║ Child type │ Possible parent types ║ + // ╠═════════════════════╪═══════════════════════════════════╣ + // ║ FileDescriptor │ nil ║ + // ║ MessageDescriptor │ FileDescriptor, MessageDescriptor ║ + // ║ FieldDescriptor │ FileDescriptor, MessageDescriptor ║ + // ║ OneofDescriptor │ MessageDescriptor ║ + // ║ EnumDescriptor │ FileDescriptor, MessageDescriptor ║ + // ║ EnumValueDescriptor │ EnumDescriptor ║ + // ║ ServiceDescriptor │ FileDescriptor ║ + // ║ MethodDescriptor │ ServiceDescriptor ║ + // ╚═════════════════════╧═══════════════════════════════════╝ + // + // Support for this functionality is optional and may return nil. + Parent() Descriptor + + // Index returns the index of this descriptor within its parent. + // It returns 0 if the descriptor does not have a parent or if the parent + // is unknown. + Index() int + + // Syntax is the protobuf syntax. + Syntax() Syntax // e.g., Proto2 or Proto3 + + // Name is the short name of the declaration (i.e., FullName.Name). + Name() Name // e.g., "Any" + + // FullName is the fully-qualified name of the declaration. + // + // The FullName is a concatenation of the full name of the type that this + // type is declared within and the declaration name. For example, + // field "foo_field" in message "proto.package.MyMessage" is + // uniquely identified as "proto.package.MyMessage.foo_field". + // Enum values are an exception to the rule (see EnumValueDescriptor). + FullName() FullName // e.g., "google.protobuf.Any" + + // IsPlaceholder reports whether type information is missing since a + // dependency is not resolved, in which case only name information is known. + // + // Placeholder types may only be returned by the following accessors + // as a result of unresolved dependencies or weak imports: + // + // ╔═══════════════════════════════════╤═════════════════════╗ + // ║ Accessor │ Descriptor ║ + // ╠═══════════════════════════════════╪═════════════════════╣ + // ║ FileImports.FileDescriptor │ FileDescriptor ║ + // ║ FieldDescriptor.Enum │ EnumDescriptor ║ + // ║ FieldDescriptor.Message │ MessageDescriptor ║ + // ║ FieldDescriptor.DefaultEnumValue │ EnumValueDescriptor ║ + // ║ FieldDescriptor.ContainingMessage │ MessageDescriptor ║ + // ║ MethodDescriptor.Input │ MessageDescriptor ║ + // ║ MethodDescriptor.Output │ MessageDescriptor ║ + // ╚═══════════════════════════════════╧═════════════════════╝ + // + // If true, only Name and FullName are valid. + // For FileDescriptor, the Path is also valid. + IsPlaceholder() bool + + // Options returns the descriptor options. The caller must not modify + // the returned value. + // + // To avoid a dependency cycle, this function returns a proto.Message value. + // The proto message type returned for each descriptor type is as follows: + // ╔═════════════════════╤══════════════════════════════════════════╗ + // ║ Go type │ Protobuf message type ║ + // ╠═════════════════════╪══════════════════════════════════════════╣ + // ║ FileDescriptor │ google.protobuf.FileOptions ║ + // ║ EnumDescriptor │ google.protobuf.EnumOptions ║ + // ║ EnumValueDescriptor │ google.protobuf.EnumValueOptions ║ + // ║ MessageDescriptor │ google.protobuf.MessageOptions ║ + // ║ FieldDescriptor │ google.protobuf.FieldOptions ║ + // ║ OneofDescriptor │ google.protobuf.OneofOptions ║ + // ║ ServiceDescriptor │ google.protobuf.ServiceOptions ║ + // ║ MethodDescriptor │ google.protobuf.MethodOptions ║ + // ╚═════════════════════╧══════════════════════════════════════════╝ + // + // This method returns a typed nil-pointer if no options are present. + // The caller must import the descriptorpb package to use this. + Options() ProtoMessage + + doNotImplement +} + +// FileDescriptor describes the types in a complete proto file and +// corresponds with the google.protobuf.FileDescriptorProto message. +// +// Top-level declarations: +// [EnumDescriptor], [MessageDescriptor], [FieldDescriptor], and/or [ServiceDescriptor]. +type FileDescriptor interface { + Descriptor // Descriptor.FullName is identical to Package + + // Path returns the file name, relative to the source tree root. + Path() string // e.g., "path/to/file.proto" + // Package returns the protobuf package namespace. + Package() FullName // e.g., "google.protobuf" + + // Imports is a list of imported proto files. + Imports() FileImports + + // Enums is a list of the top-level enum declarations. + Enums() EnumDescriptors + // Messages is a list of the top-level message declarations. + Messages() MessageDescriptors + // Extensions is a list of the top-level extension declarations. + Extensions() ExtensionDescriptors + // Services is a list of the top-level service declarations. + Services() ServiceDescriptors + + // SourceLocations is a list of source locations. + SourceLocations() SourceLocations + + isFileDescriptor +} +type isFileDescriptor interface{ ProtoType(FileDescriptor) } + +// FileImports is a list of file imports. +type FileImports interface { + // Len reports the number of files imported by this proto file. + Len() int + // Get returns the ith FileImport. It panics if out of bounds. + Get(i int) FileImport + + doNotImplement +} + +// FileImport is the declaration for a proto file import. +type FileImport struct { + // FileDescriptor is the file type for the given import. + // It is a placeholder descriptor if IsWeak is set or if a dependency has + // not been regenerated to implement the new reflection APIs. + FileDescriptor + + // IsPublic reports whether this is a public import, which causes this file + // to alias declarations within the imported file. The intended use cases + // for this feature is the ability to move proto files without breaking + // existing dependencies. + // + // The current file and the imported file must be within proto package. + IsPublic bool + + // IsWeak reports whether this is a weak import, which does not impose + // a direct dependency on the target file. + // + // Weak imports are a legacy proto1 feature. Equivalent behavior is + // achieved using proto2 extension fields or proto3 Any messages. + IsWeak bool +} + +// MessageDescriptor describes a message and +// corresponds with the google.protobuf.DescriptorProto message. +// +// Nested declarations: +// [FieldDescriptor], [OneofDescriptor], [FieldDescriptor], [EnumDescriptor], +// and/or [MessageDescriptor]. +type MessageDescriptor interface { + Descriptor + + // IsMapEntry indicates that this is an auto-generated message type to + // represent the entry type for a map field. + // + // Map entry messages have only two fields: + // • a "key" field with a field number of 1 + // • a "value" field with a field number of 2 + // The key and value types are determined by these two fields. + // + // If IsMapEntry is true, it implies that FieldDescriptor.IsMap is true + // for some field with this message type. + IsMapEntry() bool + + // Fields is a list of nested field declarations. + Fields() FieldDescriptors + // Oneofs is a list of nested oneof declarations. + Oneofs() OneofDescriptors + + // ReservedNames is a list of reserved field names. + ReservedNames() Names + // ReservedRanges is a list of reserved ranges of field numbers. + ReservedRanges() FieldRanges + // RequiredNumbers is a list of required field numbers. + // In Proto3, it is always an empty list. + RequiredNumbers() FieldNumbers + // ExtensionRanges is the field ranges used for extension fields. + // In Proto3, it is always an empty ranges. + ExtensionRanges() FieldRanges + // ExtensionRangeOptions returns the ith extension range options. + // + // To avoid a dependency cycle, this method returns a proto.Message] value, + // which always contains a google.protobuf.ExtensionRangeOptions message. + // This method returns a typed nil-pointer if no options are present. + // The caller must import the descriptorpb package to use this. + ExtensionRangeOptions(i int) ProtoMessage + + // Enums is a list of nested enum declarations. + Enums() EnumDescriptors + // Messages is a list of nested message declarations. + Messages() MessageDescriptors + // Extensions is a list of nested extension declarations. + Extensions() ExtensionDescriptors + + isMessageDescriptor +} +type isMessageDescriptor interface{ ProtoType(MessageDescriptor) } + +// MessageType encapsulates a [MessageDescriptor] with a concrete Go implementation. +// It is recommended that implementations of this interface also implement the +// [MessageFieldTypes] interface. +type MessageType interface { + // New returns a newly allocated empty message. + // It may return nil for synthetic messages representing a map entry. + New() Message + + // Zero returns an empty, read-only message. + // It may return nil for synthetic messages representing a map entry. + Zero() Message + + // Descriptor returns the message descriptor. + // + // Invariant: t.Descriptor() == t.New().Descriptor() + Descriptor() MessageDescriptor +} + +// MessageFieldTypes extends a [MessageType] by providing type information +// regarding enums and messages referenced by the message fields. +type MessageFieldTypes interface { + MessageType + + // Enum returns the EnumType for the ith field in MessageDescriptor.Fields. + // It returns nil if the ith field is not an enum kind. + // It panics if out of bounds. + // + // Invariant: mt.Enum(i).Descriptor() == mt.Descriptor().Fields(i).Enum() + Enum(i int) EnumType + + // Message returns the MessageType for the ith field in MessageDescriptor.Fields. + // It returns nil if the ith field is not a message or group kind. + // It panics if out of bounds. + // + // Invariant: mt.Message(i).Descriptor() == mt.Descriptor().Fields(i).Message() + Message(i int) MessageType +} + +// MessageDescriptors is a list of message declarations. +type MessageDescriptors interface { + // Len reports the number of messages. + Len() int + // Get returns the ith MessageDescriptor. It panics if out of bounds. + Get(i int) MessageDescriptor + // ByName returns the MessageDescriptor for a message named s. + // It returns nil if not found. + ByName(s Name) MessageDescriptor + + doNotImplement +} + +// FieldDescriptor describes a field within a message and +// corresponds with the google.protobuf.FieldDescriptorProto message. +// +// It is used for both normal fields defined within the parent message +// (e.g., [MessageDescriptor.Fields]) and fields that extend some remote message +// (e.g., [FileDescriptor.Extensions] or [MessageDescriptor.Extensions]). +type FieldDescriptor interface { + Descriptor + + // Number reports the unique number for this field. + Number() FieldNumber + // Cardinality reports the cardinality for this field. + Cardinality() Cardinality + // Kind reports the basic kind for this field. + Kind() Kind + + // HasJSONName reports whether this field has an explicitly set JSON name. + HasJSONName() bool + + // JSONName reports the name used for JSON serialization. + // It is usually the camel-cased form of the field name. + // Extension fields are represented by the full name surrounded by brackets. + JSONName() string + + // TextName reports the name used for text serialization. + // It is usually the name of the field, except that groups use the name + // of the inlined message, and extension fields are represented by the + // full name surrounded by brackets. + TextName() string + + // HasPresence reports whether the field distinguishes between unpopulated + // and default values. + HasPresence() bool + + // IsExtension reports whether this is an extension field. If false, + // then Parent and ContainingMessage refer to the same message. + // Otherwise, ContainingMessage and Parent likely differ. + IsExtension() bool + + // HasOptionalKeyword reports whether the "optional" keyword was explicitly + // specified in the source .proto file. + HasOptionalKeyword() bool + + // IsWeak reports whether this is a weak field, which does not impose a + // direct dependency on the target type. + // If true, then Message returns a placeholder type. + IsWeak() bool + + // IsPacked reports whether repeated primitive numeric kinds should be + // serialized using a packed encoding. + // If true, then it implies Cardinality is Repeated. + IsPacked() bool + + // IsList reports whether this field represents a list, + // where the value type for the associated field is a List. + // It is equivalent to checking whether Cardinality is Repeated and + // that IsMap reports false. + IsList() bool + + // IsMap reports whether this field represents a map, + // where the value type for the associated field is a Map. + // It is equivalent to checking whether Cardinality is Repeated, + // that the Kind is MessageKind, and that MessageDescriptor.IsMapEntry reports true. + IsMap() bool + + // MapKey returns the field descriptor for the key in the map entry. + // It returns nil if IsMap reports false. + MapKey() FieldDescriptor + + // MapValue returns the field descriptor for the value in the map entry. + // It returns nil if IsMap reports false. + MapValue() FieldDescriptor + + // HasDefault reports whether this field has a default value. + HasDefault() bool + + // Default returns the default value for scalar fields. + // For proto2, it is the default value as specified in the proto file, + // or the zero value if unspecified. + // For proto3, it is always the zero value of the scalar. + // The Value type is determined by the Kind. + Default() Value + + // DefaultEnumValue returns the enum value descriptor for the default value + // of an enum field, and is nil for any other kind of field. + DefaultEnumValue() EnumValueDescriptor + + // ContainingOneof is the containing oneof that this field belongs to, + // and is nil if this field is not part of a oneof. + ContainingOneof() OneofDescriptor + + // ContainingMessage is the containing message that this field belongs to. + // For extension fields, this may not necessarily be the parent message + // that the field is declared within. + ContainingMessage() MessageDescriptor + + // Enum is the enum descriptor if Kind is EnumKind. + // It returns nil for any other Kind. + Enum() EnumDescriptor + + // Message is the message descriptor if Kind is + // MessageKind or GroupKind. It returns nil for any other Kind. + Message() MessageDescriptor + + isFieldDescriptor +} +type isFieldDescriptor interface{ ProtoType(FieldDescriptor) } + +// FieldDescriptors is a list of field declarations. +type FieldDescriptors interface { + // Len reports the number of fields. + Len() int + // Get returns the ith FieldDescriptor. It panics if out of bounds. + Get(i int) FieldDescriptor + // ByName returns the FieldDescriptor for a field named s. + // It returns nil if not found. + ByName(s Name) FieldDescriptor + // ByJSONName returns the FieldDescriptor for a field with s as the JSON name. + // It returns nil if not found. + ByJSONName(s string) FieldDescriptor + // ByTextName returns the FieldDescriptor for a field with s as the text name. + // It returns nil if not found. + ByTextName(s string) FieldDescriptor + // ByNumber returns the FieldDescriptor for a field numbered n. + // It returns nil if not found. + ByNumber(n FieldNumber) FieldDescriptor + + doNotImplement +} + +// OneofDescriptor describes a oneof field set within a given message and +// corresponds with the google.protobuf.OneofDescriptorProto message. +type OneofDescriptor interface { + Descriptor + + // IsSynthetic reports whether this is a synthetic oneof created to support + // proto3 optional semantics. If true, Fields contains exactly one field + // with FieldDescriptor.HasOptionalKeyword specified. + IsSynthetic() bool + + // Fields is a list of fields belonging to this oneof. + Fields() FieldDescriptors + + isOneofDescriptor +} +type isOneofDescriptor interface{ ProtoType(OneofDescriptor) } + +// OneofDescriptors is a list of oneof declarations. +type OneofDescriptors interface { + // Len reports the number of oneof fields. + Len() int + // Get returns the ith OneofDescriptor. It panics if out of bounds. + Get(i int) OneofDescriptor + // ByName returns the OneofDescriptor for a oneof named s. + // It returns nil if not found. + ByName(s Name) OneofDescriptor + + doNotImplement +} + +// ExtensionDescriptor is an alias of [FieldDescriptor] for documentation. +type ExtensionDescriptor = FieldDescriptor + +// ExtensionTypeDescriptor is an [ExtensionDescriptor] with an associated [ExtensionType]. +type ExtensionTypeDescriptor interface { + ExtensionDescriptor + + // Type returns the associated ExtensionType. + Type() ExtensionType + + // Descriptor returns the plain ExtensionDescriptor without the + // associated ExtensionType. + Descriptor() ExtensionDescriptor +} + +// ExtensionDescriptors is a list of field declarations. +type ExtensionDescriptors interface { + // Len reports the number of fields. + Len() int + // Get returns the ith ExtensionDescriptor. It panics if out of bounds. + Get(i int) ExtensionDescriptor + // ByName returns the ExtensionDescriptor for a field named s. + // It returns nil if not found. + ByName(s Name) ExtensionDescriptor + + doNotImplement +} + +// ExtensionType encapsulates an [ExtensionDescriptor] with a concrete +// Go implementation. The nested field descriptor must be for a extension field. +// +// While a normal field is a member of the parent message that it is declared +// within (see [Descriptor.Parent]), an extension field is a member of some other +// target message (see [FieldDescriptor.ContainingMessage]) and may have no +// relationship with the parent. However, the full name of an extension field is +// relative to the parent that it is declared within. +// +// For example: +// +// syntax = "proto2"; +// package example; +// message FooMessage { +// extensions 100 to max; +// } +// message BarMessage { +// extends FooMessage { optional BarMessage bar_field = 100; } +// } +// +// Field "bar_field" is an extension of FooMessage, but its full name is +// "example.BarMessage.bar_field" instead of "example.FooMessage.bar_field". +type ExtensionType interface { + // New returns a new value for the field. + // For scalars, this returns the default value in native Go form. + New() Value + + // Zero returns a new value for the field. + // For scalars, this returns the default value in native Go form. + // For composite types, this returns an empty, read-only message, list, or map. + Zero() Value + + // TypeDescriptor returns the extension type descriptor. + TypeDescriptor() ExtensionTypeDescriptor + + // ValueOf wraps the input and returns it as a Value. + // ValueOf panics if the input value is invalid or not the appropriate type. + // + // ValueOf is more extensive than protoreflect.ValueOf for a given field's + // value as it has more type information available. + ValueOf(any) Value + + // InterfaceOf completely unwraps the Value to the underlying Go type. + // InterfaceOf panics if the input is nil or does not represent the + // appropriate underlying Go type. For composite types, it panics if the + // value is not mutable. + // + // InterfaceOf is able to unwrap the Value further than Value.Interface + // as it has more type information available. + InterfaceOf(Value) any + + // IsValidValue reports whether the Value is valid to assign to the field. + IsValidValue(Value) bool + + // IsValidInterface reports whether the input is valid to assign to the field. + IsValidInterface(any) bool +} + +// EnumDescriptor describes an enum and +// corresponds with the google.protobuf.EnumDescriptorProto message. +// +// Nested declarations: +// [EnumValueDescriptor]. +type EnumDescriptor interface { + Descriptor + + // Values is a list of nested enum value declarations. + Values() EnumValueDescriptors + + // ReservedNames is a list of reserved enum names. + ReservedNames() Names + // ReservedRanges is a list of reserved ranges of enum numbers. + ReservedRanges() EnumRanges + + // IsClosed reports whether this enum uses closed semantics. + // See https://protobuf.dev/programming-guides/enum/#definitions. + // Note: the Go protobuf implementation is not spec compliant and treats + // all enums as open enums. + IsClosed() bool + + isEnumDescriptor +} +type isEnumDescriptor interface{ ProtoType(EnumDescriptor) } + +// EnumType encapsulates an [EnumDescriptor] with a concrete Go implementation. +type EnumType interface { + // New returns an instance of this enum type with its value set to n. + New(n EnumNumber) Enum + + // Descriptor returns the enum descriptor. + // + // Invariant: t.Descriptor() == t.New(0).Descriptor() + Descriptor() EnumDescriptor +} + +// EnumDescriptors is a list of enum declarations. +type EnumDescriptors interface { + // Len reports the number of enum types. + Len() int + // Get returns the ith EnumDescriptor. It panics if out of bounds. + Get(i int) EnumDescriptor + // ByName returns the EnumDescriptor for an enum named s. + // It returns nil if not found. + ByName(s Name) EnumDescriptor + + doNotImplement +} + +// EnumValueDescriptor describes an enum value and +// corresponds with the google.protobuf.EnumValueDescriptorProto message. +// +// All other proto declarations are in the namespace of the parent. +// However, enum values do not follow this rule and are within the namespace +// of the parent's parent (i.e., they are a sibling of the containing enum). +// Thus, a value named "FOO_VALUE" declared within an enum uniquely identified +// as "proto.package.MyEnum" has a full name of "proto.package.FOO_VALUE". +type EnumValueDescriptor interface { + Descriptor + + // Number returns the enum value as an integer. + Number() EnumNumber + + isEnumValueDescriptor +} +type isEnumValueDescriptor interface{ ProtoType(EnumValueDescriptor) } + +// EnumValueDescriptors is a list of enum value declarations. +type EnumValueDescriptors interface { + // Len reports the number of enum values. + Len() int + // Get returns the ith EnumValueDescriptor. It panics if out of bounds. + Get(i int) EnumValueDescriptor + // ByName returns the EnumValueDescriptor for the enum value named s. + // It returns nil if not found. + ByName(s Name) EnumValueDescriptor + // ByNumber returns the EnumValueDescriptor for the enum value numbered n. + // If multiple have the same number, the first one defined is returned + // It returns nil if not found. + ByNumber(n EnumNumber) EnumValueDescriptor + + doNotImplement +} + +// ServiceDescriptor describes a service and +// corresponds with the google.protobuf.ServiceDescriptorProto message. +// +// Nested declarations: [MethodDescriptor]. +type ServiceDescriptor interface { + Descriptor + + // Methods is a list of nested message declarations. + Methods() MethodDescriptors + + isServiceDescriptor +} +type isServiceDescriptor interface{ ProtoType(ServiceDescriptor) } + +// ServiceDescriptors is a list of service declarations. +type ServiceDescriptors interface { + // Len reports the number of services. + Len() int + // Get returns the ith ServiceDescriptor. It panics if out of bounds. + Get(i int) ServiceDescriptor + // ByName returns the ServiceDescriptor for a service named s. + // It returns nil if not found. + ByName(s Name) ServiceDescriptor + + doNotImplement +} + +// MethodDescriptor describes a method and +// corresponds with the google.protobuf.MethodDescriptorProto message. +type MethodDescriptor interface { + Descriptor + + // Input is the input message descriptor. + Input() MessageDescriptor + // Output is the output message descriptor. + Output() MessageDescriptor + // IsStreamingClient reports whether the client streams multiple messages. + IsStreamingClient() bool + // IsStreamingServer reports whether the server streams multiple messages. + IsStreamingServer() bool + + isMethodDescriptor +} +type isMethodDescriptor interface{ ProtoType(MethodDescriptor) } + +// MethodDescriptors is a list of method declarations. +type MethodDescriptors interface { + // Len reports the number of methods. + Len() int + // Get returns the ith MethodDescriptor. It panics if out of bounds. + Get(i int) MethodDescriptor + // ByName returns the MethodDescriptor for a service method named s. + // It returns nil if not found. + ByName(s Name) MethodDescriptor + + doNotImplement +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go new file mode 100644 index 0000000..a7b0d06 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go @@ -0,0 +1,285 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import "google.golang.org/protobuf/encoding/protowire" + +// Enum is a reflection interface for a concrete enum value, +// which provides type information and a getter for the enum number. +// Enum does not provide a mutable API since enums are commonly backed by +// Go constants, which are not addressable. +type Enum interface { + // Descriptor returns enum descriptor, which contains only the protobuf + // type information for the enum. + Descriptor() EnumDescriptor + + // Type returns the enum type, which encapsulates both Go and protobuf + // type information. If the Go type information is not needed, + // it is recommended that the enum descriptor be used instead. + Type() EnumType + + // Number returns the enum value as an integer. + Number() EnumNumber +} + +// Message is a reflective interface for a concrete message value, +// encapsulating both type and value information for the message. +// +// Accessor/mutators for individual fields are keyed by [FieldDescriptor]. +// For non-extension fields, the descriptor must exactly match the +// field known by the parent message. +// For extension fields, the descriptor must implement [ExtensionTypeDescriptor], +// extend the parent message (i.e., have the same message [FullName]), and +// be within the parent's extension range. +// +// Each field [Value] can be a scalar or a composite type ([Message], [List], or [Map]). +// See [Value] for the Go types associated with a [FieldDescriptor]. +// Providing a [Value] that is invalid or of an incorrect type panics. +type Message interface { + // Descriptor returns message descriptor, which contains only the protobuf + // type information for the message. + Descriptor() MessageDescriptor + + // Type returns the message type, which encapsulates both Go and protobuf + // type information. If the Go type information is not needed, + // it is recommended that the message descriptor be used instead. + Type() MessageType + + // New returns a newly allocated and mutable empty message. + New() Message + + // Interface unwraps the message reflection interface and + // returns the underlying ProtoMessage interface. + Interface() ProtoMessage + + // Range iterates over every populated field in an undefined order, + // calling f for each field descriptor and value encountered. + // Range returns immediately if f returns false. + // While iterating, mutating operations may only be performed + // on the current field descriptor. + Range(f func(FieldDescriptor, Value) bool) + + // Has reports whether a field is populated. + // + // Some fields have the property of nullability where it is possible to + // distinguish between the default value of a field and whether the field + // was explicitly populated with the default value. Singular message fields, + // member fields of a oneof, and proto2 scalar fields are nullable. Such + // fields are populated only if explicitly set. + // + // In other cases (aside from the nullable cases above), + // a proto3 scalar field is populated if it contains a non-zero value, and + // a repeated field is populated if it is non-empty. + Has(FieldDescriptor) bool + + // Clear clears the field such that a subsequent Has call reports false. + // + // Clearing an extension field clears both the extension type and value + // associated with the given field number. + // + // Clear is a mutating operation and unsafe for concurrent use. + Clear(FieldDescriptor) + + // Get retrieves the value for a field. + // + // For unpopulated scalars, it returns the default value, where + // the default value of a bytes scalar is guaranteed to be a copy. + // For unpopulated composite types, it returns an empty, read-only view + // of the value; to obtain a mutable reference, use Mutable. + Get(FieldDescriptor) Value + + // Set stores the value for a field. + // + // For a field belonging to a oneof, it implicitly clears any other field + // that may be currently set within the same oneof. + // For extension fields, it implicitly stores the provided ExtensionType. + // When setting a composite type, it is unspecified whether the stored value + // aliases the source's memory in any way. If the composite value is an + // empty, read-only value, then it panics. + // + // Set is a mutating operation and unsafe for concurrent use. + Set(FieldDescriptor, Value) + + // Mutable returns a mutable reference to a composite type. + // + // If the field is unpopulated, it may allocate a composite value. + // For a field belonging to a oneof, it implicitly clears any other field + // that may be currently set within the same oneof. + // For extension fields, it implicitly stores the provided ExtensionType + // if not already stored. + // It panics if the field does not contain a composite type. + // + // Mutable is a mutating operation and unsafe for concurrent use. + Mutable(FieldDescriptor) Value + + // NewField returns a new value that is assignable to the field + // for the given descriptor. For scalars, this returns the default value. + // For lists, maps, and messages, this returns a new, empty, mutable value. + NewField(FieldDescriptor) Value + + // WhichOneof reports which field within the oneof is populated, + // returning nil if none are populated. + // It panics if the oneof descriptor does not belong to this message. + WhichOneof(OneofDescriptor) FieldDescriptor + + // GetUnknown retrieves the entire list of unknown fields. + // The caller may only mutate the contents of the RawFields + // if the mutated bytes are stored back into the message with SetUnknown. + GetUnknown() RawFields + + // SetUnknown stores an entire list of unknown fields. + // The raw fields must be syntactically valid according to the wire format. + // An implementation may panic if this is not the case. + // Once stored, the caller must not mutate the content of the RawFields. + // An empty RawFields may be passed to clear the fields. + // + // SetUnknown is a mutating operation and unsafe for concurrent use. + SetUnknown(RawFields) + + // IsValid reports whether the message is valid. + // + // An invalid message is an empty, read-only value. + // + // An invalid message often corresponds to a nil pointer of the concrete + // message type, but the details are implementation dependent. + // Validity is not part of the protobuf data model, and may not + // be preserved in marshaling or other operations. + IsValid() bool + + // ProtoMethods returns optional fast-path implementations of various operations. + // This method may return nil. + // + // The returned methods type is identical to + // google.golang.org/protobuf/runtime/protoiface.Methods. + // Consult the protoiface package documentation for details. + ProtoMethods() *methods +} + +// RawFields is the raw bytes for an ordered sequence of fields. +// Each field contains both the tag (representing field number and wire type), +// and also the wire data itself. +type RawFields []byte + +// IsValid reports whether b is syntactically correct wire format. +func (b RawFields) IsValid() bool { + for len(b) > 0 { + _, _, n := protowire.ConsumeField(b) + if n < 0 { + return false + } + b = b[n:] + } + return true +} + +// List is a zero-indexed, ordered list. +// The element [Value] type is determined by [FieldDescriptor.Kind]. +// Providing a [Value] that is invalid or of an incorrect type panics. +type List interface { + // Len reports the number of entries in the List. + // Get, Set, and Truncate panic with out of bound indexes. + Len() int + + // Get retrieves the value at the given index. + // It never returns an invalid value. + Get(int) Value + + // Set stores a value for the given index. + // When setting a composite type, it is unspecified whether the set + // value aliases the source's memory in any way. + // + // Set is a mutating operation and unsafe for concurrent use. + Set(int, Value) + + // Append appends the provided value to the end of the list. + // When appending a composite type, it is unspecified whether the appended + // value aliases the source's memory in any way. + // + // Append is a mutating operation and unsafe for concurrent use. + Append(Value) + + // AppendMutable appends a new, empty, mutable message value to the end + // of the list and returns it. + // It panics if the list does not contain a message type. + AppendMutable() Value + + // Truncate truncates the list to a smaller length. + // + // Truncate is a mutating operation and unsafe for concurrent use. + Truncate(int) + + // NewElement returns a new value for a list element. + // For enums, this returns the first enum value. + // For other scalars, this returns the zero value. + // For messages, this returns a new, empty, mutable value. + NewElement() Value + + // IsValid reports whether the list is valid. + // + // An invalid list is an empty, read-only value. + // + // Validity is not part of the protobuf data model, and may not + // be preserved in marshaling or other operations. + IsValid() bool +} + +// Map is an unordered, associative map. +// The entry [MapKey] type is determined by [FieldDescriptor.MapKey].Kind. +// The entry [Value] type is determined by [FieldDescriptor.MapValue].Kind. +// Providing a [MapKey] or [Value] that is invalid or of an incorrect type panics. +type Map interface { + // Len reports the number of elements in the map. + Len() int + + // Range iterates over every map entry in an undefined order, + // calling f for each key and value encountered. + // Range calls f Len times unless f returns false, which stops iteration. + // While iterating, mutating operations may only be performed + // on the current map key. + Range(f func(MapKey, Value) bool) + + // Has reports whether an entry with the given key is in the map. + Has(MapKey) bool + + // Clear clears the entry associated with they given key. + // The operation does nothing if there is no entry associated with the key. + // + // Clear is a mutating operation and unsafe for concurrent use. + Clear(MapKey) + + // Get retrieves the value for an entry with the given key. + // It returns an invalid value for non-existent entries. + Get(MapKey) Value + + // Set stores the value for an entry with the given key. + // It panics when given a key or value that is invalid or the wrong type. + // When setting a composite type, it is unspecified whether the set + // value aliases the source's memory in any way. + // + // Set is a mutating operation and unsafe for concurrent use. + Set(MapKey, Value) + + // Mutable retrieves a mutable reference to the entry for the given key. + // If no entry exists for the key, it creates a new, empty, mutable value + // and stores it as the entry for the key. + // It panics if the map value is not a message. + Mutable(MapKey) Value + + // NewValue returns a new value assignable as a map value. + // For enums, this returns the first enum value. + // For other scalars, this returns the zero value. + // For messages, this returns a new, empty, mutable value. + NewValue() Value + + // IsValid reports whether the map is valid. + // + // An invalid map is an empty, read-only value. + // + // An invalid message often corresponds to a nil Go map value, + // but the details are implementation dependent. + // Validity is not part of the protobuf data model, and may not + // be preserved in marshaling or other operations. + IsValid() bool +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go new file mode 100644 index 0000000..654599d --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go @@ -0,0 +1,168 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "bytes" + "fmt" + "math" + "reflect" + + "google.golang.org/protobuf/encoding/protowire" +) + +// Equal reports whether v1 and v2 are recursively equal. +// +// - Values of different types are always unequal. +// +// - Bytes values are equal if they contain identical bytes. +// Empty bytes (regardless of nil-ness) are considered equal. +// +// - Floating point values are equal if they contain the same value. +// Unlike the == operator, a NaN is equal to another NaN. +// +// - Enums are equal if they contain the same number. +// Since [Value] does not contain an enum descriptor, +// enum values do not consider the type of the enum. +// +// - Other scalar values are equal if they contain the same value. +// +// - [Message] values are equal if they belong to the same message descriptor, +// have the same set of populated known and extension field values, +// and the same set of unknown fields values. +// +// - [List] values are equal if they are the same length and +// each corresponding element is equal. +// +// - [Map] values are equal if they have the same set of keys and +// the corresponding value for each key is equal. +func (v1 Value) Equal(v2 Value) bool { + return equalValue(v1, v2) +} + +func equalValue(x, y Value) bool { + eqType := x.typ == y.typ + switch x.typ { + case nilType: + return eqType + case boolType: + return eqType && x.Bool() == y.Bool() + case int32Type, int64Type: + return eqType && x.Int() == y.Int() + case uint32Type, uint64Type: + return eqType && x.Uint() == y.Uint() + case float32Type, float64Type: + return eqType && equalFloat(x.Float(), y.Float()) + case stringType: + return eqType && x.String() == y.String() + case bytesType: + return eqType && bytes.Equal(x.Bytes(), y.Bytes()) + case enumType: + return eqType && x.Enum() == y.Enum() + default: + switch x := x.Interface().(type) { + case Message: + y, ok := y.Interface().(Message) + return ok && equalMessage(x, y) + case List: + y, ok := y.Interface().(List) + return ok && equalList(x, y) + case Map: + y, ok := y.Interface().(Map) + return ok && equalMap(x, y) + default: + panic(fmt.Sprintf("unknown type: %T", x)) + } + } +} + +// equalFloat compares two floats, where NaNs are treated as equal. +func equalFloat(x, y float64) bool { + if math.IsNaN(x) || math.IsNaN(y) { + return math.IsNaN(x) && math.IsNaN(y) + } + return x == y +} + +// equalMessage compares two messages. +func equalMessage(mx, my Message) bool { + if mx.Descriptor() != my.Descriptor() { + return false + } + + nx := 0 + equal := true + mx.Range(func(fd FieldDescriptor, vx Value) bool { + nx++ + vy := my.Get(fd) + equal = my.Has(fd) && equalValue(vx, vy) + return equal + }) + if !equal { + return false + } + ny := 0 + my.Range(func(fd FieldDescriptor, vx Value) bool { + ny++ + return true + }) + if nx != ny { + return false + } + + return equalUnknown(mx.GetUnknown(), my.GetUnknown()) +} + +// equalList compares two lists. +func equalList(x, y List) bool { + if x.Len() != y.Len() { + return false + } + for i := x.Len() - 1; i >= 0; i-- { + if !equalValue(x.Get(i), y.Get(i)) { + return false + } + } + return true +} + +// equalMap compares two maps. +func equalMap(x, y Map) bool { + if x.Len() != y.Len() { + return false + } + equal := true + x.Range(func(k MapKey, vx Value) bool { + vy := y.Get(k) + equal = y.Has(k) && equalValue(vx, vy) + return equal + }) + return equal +} + +// equalUnknown compares unknown fields by direct comparison on the raw bytes +// of each individual field number. +func equalUnknown(x, y RawFields) bool { + if len(x) != len(y) { + return false + } + if bytes.Equal([]byte(x), []byte(y)) { + return true + } + + mx := make(map[FieldNumber]RawFields) + my := make(map[FieldNumber]RawFields) + for len(x) > 0 { + fnum, _, n := protowire.ConsumeField(x) + mx[fnum] = append(mx[fnum], x[:n]...) + x = x[n:] + } + for len(y) > 0 { + fnum, _, n := protowire.ConsumeField(y) + my[fnum] = append(my[fnum], y[:n]...) + y = y[n:] + } + return reflect.DeepEqual(mx, my) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go new file mode 100644 index 0000000..75f83a2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go @@ -0,0 +1,60 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego || appengine +// +build purego appengine + +package protoreflect + +import "google.golang.org/protobuf/internal/pragma" + +type valueType int + +const ( + nilType valueType = iota + boolType + int32Type + int64Type + uint32Type + uint64Type + float32Type + float64Type + stringType + bytesType + enumType + ifaceType +) + +// value is a union where only one type can be represented at a time. +// This uses a distinct field for each type. This is type safe in Go, but +// occupies more memory than necessary (72B). +type value struct { + pragma.DoNotCompare // 0B + + typ valueType // 8B + num uint64 // 8B + str string // 16B + bin []byte // 24B + iface any // 16B +} + +func valueOfString(v string) Value { + return Value{typ: stringType, str: v} +} +func valueOfBytes(v []byte) Value { + return Value{typ: bytesType, bin: v} +} +func valueOfIface(v any) Value { + return Value{typ: ifaceType, iface: v} +} + +func (v Value) getString() string { + return v.str +} +func (v Value) getBytes() []byte { + return v.bin +} +func (v Value) getIface() any { + return v.iface +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go new file mode 100644 index 0000000..9fe83ce --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go @@ -0,0 +1,438 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoreflect + +import ( + "fmt" + "math" +) + +// Value is a union where only one Go type may be set at a time. +// The Value is used to represent all possible values a field may take. +// The following shows which Go type is used to represent each proto [Kind]: +// +// ╔════════════╤═════════════════════════════════════╗ +// ║ Go type │ Protobuf kind ║ +// ╠════════════╪═════════════════════════════════════╣ +// ║ bool │ BoolKind ║ +// ║ int32 │ Int32Kind, Sint32Kind, Sfixed32Kind ║ +// ║ int64 │ Int64Kind, Sint64Kind, Sfixed64Kind ║ +// ║ uint32 │ Uint32Kind, Fixed32Kind ║ +// ║ uint64 │ Uint64Kind, Fixed64Kind ║ +// ║ float32 │ FloatKind ║ +// ║ float64 │ DoubleKind ║ +// ║ string │ StringKind ║ +// ║ []byte │ BytesKind ║ +// ║ EnumNumber │ EnumKind ║ +// ║ Message │ MessageKind, GroupKind ║ +// ╚════════════╧═════════════════════════════════════╝ +// +// Multiple protobuf Kinds may be represented by a single Go type if the type +// can losslessly represent the information for the proto kind. For example, +// [Int64Kind], [Sint64Kind], and [Sfixed64Kind] are all represented by int64, +// but use different integer encoding methods. +// +// The [List] or [Map] types are used if the field cardinality is repeated. +// A field is a [List] if [FieldDescriptor.IsList] reports true. +// A field is a [Map] if [FieldDescriptor.IsMap] reports true. +// +// Converting to/from a Value and a concrete Go value panics on type mismatch. +// For example, [ValueOf]("hello").Int() panics because this attempts to +// retrieve an int64 from a string. +// +// [List], [Map], and [Message] Values are called "composite" values. +// +// A composite Value may alias (reference) memory at some location, +// such that changes to the Value updates the that location. +// A composite value acquired with a Mutable method, such as [Message.Mutable], +// always references the source object. +// +// For example: +// +// // Append a 0 to a "repeated int32" field. +// // Since the Value returned by Mutable is guaranteed to alias +// // the source message, modifying the Value modifies the message. +// message.Mutable(fieldDesc).List().Append(protoreflect.ValueOfInt32(0)) +// +// // Assign [0] to a "repeated int32" field by creating a new Value, +// // modifying it, and assigning it. +// list := message.NewField(fieldDesc).List() +// list.Append(protoreflect.ValueOfInt32(0)) +// message.Set(fieldDesc, list) +// // ERROR: Since it is not defined whether Set aliases the source, +// // appending to the List here may or may not modify the message. +// list.Append(protoreflect.ValueOfInt32(0)) +// +// Some operations, such as [Message.Get], may return an "empty, read-only" +// composite Value. Modifying an empty, read-only value panics. +type Value value + +// The protoreflect API uses a custom Value union type instead of any +// to keep the future open for performance optimizations. Using an any +// always incurs an allocation for primitives (e.g., int64) since it needs to +// be boxed on the heap (as interfaces can only contain pointers natively). +// Instead, we represent the Value union as a flat struct that internally keeps +// track of which type is set. Using unsafe, the Value union can be reduced +// down to 24B, which is identical in size to a slice. +// +// The latest compiler (Go1.11) currently suffers from some limitations: +// • With inlining, the compiler should be able to statically prove that +// only one of these switch cases are taken and inline one specific case. +// See https://golang.org/issue/22310. + +// ValueOf returns a Value initialized with the concrete value stored in v. +// This panics if the type does not match one of the allowed types in the +// Value union. +func ValueOf(v any) Value { + switch v := v.(type) { + case nil: + return Value{} + case bool: + return ValueOfBool(v) + case int32: + return ValueOfInt32(v) + case int64: + return ValueOfInt64(v) + case uint32: + return ValueOfUint32(v) + case uint64: + return ValueOfUint64(v) + case float32: + return ValueOfFloat32(v) + case float64: + return ValueOfFloat64(v) + case string: + return ValueOfString(v) + case []byte: + return ValueOfBytes(v) + case EnumNumber: + return ValueOfEnum(v) + case Message, List, Map: + return valueOfIface(v) + case ProtoMessage: + panic(fmt.Sprintf("invalid proto.Message(%T) type, expected a protoreflect.Message type", v)) + default: + panic(fmt.Sprintf("invalid type: %T", v)) + } +} + +// ValueOfBool returns a new boolean value. +func ValueOfBool(v bool) Value { + if v { + return Value{typ: boolType, num: 1} + } else { + return Value{typ: boolType, num: 0} + } +} + +// ValueOfInt32 returns a new int32 value. +func ValueOfInt32(v int32) Value { + return Value{typ: int32Type, num: uint64(v)} +} + +// ValueOfInt64 returns a new int64 value. +func ValueOfInt64(v int64) Value { + return Value{typ: int64Type, num: uint64(v)} +} + +// ValueOfUint32 returns a new uint32 value. +func ValueOfUint32(v uint32) Value { + return Value{typ: uint32Type, num: uint64(v)} +} + +// ValueOfUint64 returns a new uint64 value. +func ValueOfUint64(v uint64) Value { + return Value{typ: uint64Type, num: v} +} + +// ValueOfFloat32 returns a new float32 value. +func ValueOfFloat32(v float32) Value { + return Value{typ: float32Type, num: uint64(math.Float64bits(float64(v)))} +} + +// ValueOfFloat64 returns a new float64 value. +func ValueOfFloat64(v float64) Value { + return Value{typ: float64Type, num: uint64(math.Float64bits(float64(v)))} +} + +// ValueOfString returns a new string value. +func ValueOfString(v string) Value { + return valueOfString(v) +} + +// ValueOfBytes returns a new bytes value. +func ValueOfBytes(v []byte) Value { + return valueOfBytes(v[:len(v):len(v)]) +} + +// ValueOfEnum returns a new enum value. +func ValueOfEnum(v EnumNumber) Value { + return Value{typ: enumType, num: uint64(v)} +} + +// ValueOfMessage returns a new Message value. +func ValueOfMessage(v Message) Value { + return valueOfIface(v) +} + +// ValueOfList returns a new List value. +func ValueOfList(v List) Value { + return valueOfIface(v) +} + +// ValueOfMap returns a new Map value. +func ValueOfMap(v Map) Value { + return valueOfIface(v) +} + +// IsValid reports whether v is populated with a value. +func (v Value) IsValid() bool { + return v.typ != nilType +} + +// Interface returns v as an any. +// +// Invariant: v == ValueOf(v).Interface() +func (v Value) Interface() any { + switch v.typ { + case nilType: + return nil + case boolType: + return v.Bool() + case int32Type: + return int32(v.Int()) + case int64Type: + return int64(v.Int()) + case uint32Type: + return uint32(v.Uint()) + case uint64Type: + return uint64(v.Uint()) + case float32Type: + return float32(v.Float()) + case float64Type: + return float64(v.Float()) + case stringType: + return v.String() + case bytesType: + return v.Bytes() + case enumType: + return v.Enum() + default: + return v.getIface() + } +} + +func (v Value) typeName() string { + switch v.typ { + case nilType: + return "nil" + case boolType: + return "bool" + case int32Type: + return "int32" + case int64Type: + return "int64" + case uint32Type: + return "uint32" + case uint64Type: + return "uint64" + case float32Type: + return "float32" + case float64Type: + return "float64" + case stringType: + return "string" + case bytesType: + return "bytes" + case enumType: + return "enum" + default: + switch v := v.getIface().(type) { + case Message: + return "message" + case List: + return "list" + case Map: + return "map" + default: + return fmt.Sprintf("", v) + } + } +} + +func (v Value) panicMessage(what string) string { + return fmt.Sprintf("type mismatch: cannot convert %v to %s", v.typeName(), what) +} + +// Bool returns v as a bool and panics if the type is not a bool. +func (v Value) Bool() bool { + switch v.typ { + case boolType: + return v.num > 0 + default: + panic(v.panicMessage("bool")) + } +} + +// Int returns v as a int64 and panics if the type is not a int32 or int64. +func (v Value) Int() int64 { + switch v.typ { + case int32Type, int64Type: + return int64(v.num) + default: + panic(v.panicMessage("int")) + } +} + +// Uint returns v as a uint64 and panics if the type is not a uint32 or uint64. +func (v Value) Uint() uint64 { + switch v.typ { + case uint32Type, uint64Type: + return uint64(v.num) + default: + panic(v.panicMessage("uint")) + } +} + +// Float returns v as a float64 and panics if the type is not a float32 or float64. +func (v Value) Float() float64 { + switch v.typ { + case float32Type, float64Type: + return math.Float64frombits(uint64(v.num)) + default: + panic(v.panicMessage("float")) + } +} + +// String returns v as a string. Since this method implements [fmt.Stringer], +// this returns the formatted string value for any non-string type. +func (v Value) String() string { + switch v.typ { + case stringType: + return v.getString() + default: + return fmt.Sprint(v.Interface()) + } +} + +// Bytes returns v as a []byte and panics if the type is not a []byte. +func (v Value) Bytes() []byte { + switch v.typ { + case bytesType: + return v.getBytes() + default: + panic(v.panicMessage("bytes")) + } +} + +// Enum returns v as a [EnumNumber] and panics if the type is not a [EnumNumber]. +func (v Value) Enum() EnumNumber { + switch v.typ { + case enumType: + return EnumNumber(v.num) + default: + panic(v.panicMessage("enum")) + } +} + +// Message returns v as a [Message] and panics if the type is not a [Message]. +func (v Value) Message() Message { + switch vi := v.getIface().(type) { + case Message: + return vi + default: + panic(v.panicMessage("message")) + } +} + +// List returns v as a [List] and panics if the type is not a [List]. +func (v Value) List() List { + switch vi := v.getIface().(type) { + case List: + return vi + default: + panic(v.panicMessage("list")) + } +} + +// Map returns v as a [Map] and panics if the type is not a [Map]. +func (v Value) Map() Map { + switch vi := v.getIface().(type) { + case Map: + return vi + default: + panic(v.panicMessage("map")) + } +} + +// MapKey returns v as a [MapKey] and panics for invalid [MapKey] types. +func (v Value) MapKey() MapKey { + switch v.typ { + case boolType, int32Type, int64Type, uint32Type, uint64Type, stringType: + return MapKey(v) + default: + panic(v.panicMessage("map key")) + } +} + +// MapKey is used to index maps, where the Go type of the MapKey must match +// the specified key [Kind] (see [MessageDescriptor.IsMapEntry]). +// The following shows what Go type is used to represent each proto [Kind]: +// +// ╔═════════╤═════════════════════════════════════╗ +// ║ Go type │ Protobuf kind ║ +// ╠═════════╪═════════════════════════════════════╣ +// ║ bool │ BoolKind ║ +// ║ int32 │ Int32Kind, Sint32Kind, Sfixed32Kind ║ +// ║ int64 │ Int64Kind, Sint64Kind, Sfixed64Kind ║ +// ║ uint32 │ Uint32Kind, Fixed32Kind ║ +// ║ uint64 │ Uint64Kind, Fixed64Kind ║ +// ║ string │ StringKind ║ +// ╚═════════╧═════════════════════════════════════╝ +// +// A MapKey is constructed and accessed through a [Value]: +// +// k := ValueOf("hash").MapKey() // convert string to MapKey +// s := k.String() // convert MapKey to string +// +// The MapKey is a strict subset of valid types used in [Value]; +// converting a [Value] to a MapKey with an invalid type panics. +type MapKey value + +// IsValid reports whether k is populated with a value. +func (k MapKey) IsValid() bool { + return Value(k).IsValid() +} + +// Interface returns k as an any. +func (k MapKey) Interface() any { + return Value(k).Interface() +} + +// Bool returns k as a bool and panics if the type is not a bool. +func (k MapKey) Bool() bool { + return Value(k).Bool() +} + +// Int returns k as a int64 and panics if the type is not a int32 or int64. +func (k MapKey) Int() int64 { + return Value(k).Int() +} + +// Uint returns k as a uint64 and panics if the type is not a uint32 or uint64. +func (k MapKey) Uint() uint64 { + return Value(k).Uint() +} + +// String returns k as a string. Since this method implements [fmt.Stringer], +// this returns the formatted string value for any non-string type. +func (k MapKey) String() string { + return Value(k).String() +} + +// Value returns k as a [Value]. +func (k MapKey) Value() Value { + return Value(k) +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go new file mode 100644 index 0000000..7f3583e --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go @@ -0,0 +1,99 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && !go1.21 +// +build !purego,!appengine,!go1.21 + +package protoreflect + +import ( + "unsafe" + + "google.golang.org/protobuf/internal/pragma" +) + +type ( + stringHeader struct { + Data unsafe.Pointer + Len int + } + sliceHeader struct { + Data unsafe.Pointer + Len int + Cap int + } + ifaceHeader struct { + Type unsafe.Pointer + Data unsafe.Pointer + } +) + +var ( + nilType = typeOf(nil) + boolType = typeOf(*new(bool)) + int32Type = typeOf(*new(int32)) + int64Type = typeOf(*new(int64)) + uint32Type = typeOf(*new(uint32)) + uint64Type = typeOf(*new(uint64)) + float32Type = typeOf(*new(float32)) + float64Type = typeOf(*new(float64)) + stringType = typeOf(*new(string)) + bytesType = typeOf(*new([]byte)) + enumType = typeOf(*new(EnumNumber)) +) + +// typeOf returns a pointer to the Go type information. +// The pointer is comparable and equal if and only if the types are identical. +func typeOf(t any) unsafe.Pointer { + return (*ifaceHeader)(unsafe.Pointer(&t)).Type +} + +// value is a union where only one type can be represented at a time. +// The struct is 24B large on 64-bit systems and requires the minimum storage +// necessary to represent each possible type. +// +// The Go GC needs to be able to scan variables containing pointers. +// As such, pointers and non-pointers cannot be intermixed. +type value struct { + pragma.DoNotCompare // 0B + + // typ stores the type of the value as a pointer to the Go type. + typ unsafe.Pointer // 8B + + // ptr stores the data pointer for a String, Bytes, or interface value. + ptr unsafe.Pointer // 8B + + // num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or + // Enum value as a raw uint64. + // + // It is also used to store the length of a String or Bytes value; + // the capacity is ignored. + num uint64 // 8B +} + +func valueOfString(v string) Value { + p := (*stringHeader)(unsafe.Pointer(&v)) + return Value{typ: stringType, ptr: p.Data, num: uint64(len(v))} +} +func valueOfBytes(v []byte) Value { + p := (*sliceHeader)(unsafe.Pointer(&v)) + return Value{typ: bytesType, ptr: p.Data, num: uint64(len(v))} +} +func valueOfIface(v any) Value { + p := (*ifaceHeader)(unsafe.Pointer(&v)) + return Value{typ: p.Type, ptr: p.Data} +} + +func (v Value) getString() (x string) { + *(*stringHeader)(unsafe.Pointer(&x)) = stringHeader{Data: v.ptr, Len: int(v.num)} + return x +} +func (v Value) getBytes() (x []byte) { + *(*sliceHeader)(unsafe.Pointer(&x)) = sliceHeader{Data: v.ptr, Len: int(v.num), Cap: int(v.num)} + return x +} +func (v Value) getIface() (x any) { + *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} + return x +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go new file mode 100644 index 0000000..f7d3869 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go @@ -0,0 +1,87 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && go1.21 +// +build !purego,!appengine,go1.21 + +package protoreflect + +import ( + "unsafe" + + "google.golang.org/protobuf/internal/pragma" +) + +type ( + ifaceHeader struct { + _ [0]any // if interfaces have greater alignment than unsafe.Pointer, this will enforce it. + Type unsafe.Pointer + Data unsafe.Pointer + } +) + +var ( + nilType = typeOf(nil) + boolType = typeOf(*new(bool)) + int32Type = typeOf(*new(int32)) + int64Type = typeOf(*new(int64)) + uint32Type = typeOf(*new(uint32)) + uint64Type = typeOf(*new(uint64)) + float32Type = typeOf(*new(float32)) + float64Type = typeOf(*new(float64)) + stringType = typeOf(*new(string)) + bytesType = typeOf(*new([]byte)) + enumType = typeOf(*new(EnumNumber)) +) + +// typeOf returns a pointer to the Go type information. +// The pointer is comparable and equal if and only if the types are identical. +func typeOf(t any) unsafe.Pointer { + return (*ifaceHeader)(unsafe.Pointer(&t)).Type +} + +// value is a union where only one type can be represented at a time. +// The struct is 24B large on 64-bit systems and requires the minimum storage +// necessary to represent each possible type. +// +// The Go GC needs to be able to scan variables containing pointers. +// As such, pointers and non-pointers cannot be intermixed. +type value struct { + pragma.DoNotCompare // 0B + + // typ stores the type of the value as a pointer to the Go type. + typ unsafe.Pointer // 8B + + // ptr stores the data pointer for a String, Bytes, or interface value. + ptr unsafe.Pointer // 8B + + // num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or + // Enum value as a raw uint64. + // + // It is also used to store the length of a String or Bytes value; + // the capacity is ignored. + num uint64 // 8B +} + +func valueOfString(v string) Value { + return Value{typ: stringType, ptr: unsafe.Pointer(unsafe.StringData(v)), num: uint64(len(v))} +} +func valueOfBytes(v []byte) Value { + return Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))} +} +func valueOfIface(v any) Value { + p := (*ifaceHeader)(unsafe.Pointer(&v)) + return Value{typ: p.Type, ptr: p.Data} +} + +func (v Value) getString() string { + return unsafe.String((*byte)(v.ptr), v.num) +} +func (v Value) getBytes() []byte { + return unsafe.Slice((*byte)(v.ptr), v.num) +} +func (v Value) getIface() (x any) { + *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} + return x +} diff --git a/examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go b/examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go new file mode 100644 index 0000000..de17773 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go @@ -0,0 +1,882 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoregistry provides data structures to register and lookup +// protobuf descriptor types. +// +// The [Files] registry contains file descriptors and provides the ability +// to iterate over the files or lookup a specific descriptor within the files. +// [Files] only contains protobuf descriptors and has no understanding of Go +// type information that may be associated with each descriptor. +// +// The [Types] registry contains descriptor types for which there is a known +// Go type associated with that descriptor. It provides the ability to iterate +// over the registered types or lookup a type by name. +package protoregistry + +import ( + "fmt" + "os" + "strings" + "sync" + + "google.golang.org/protobuf/internal/encoding/messageset" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/internal/flags" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// conflictPolicy configures the policy for handling registration conflicts. +// +// It can be over-written at compile time with a linker-initialized variable: +// +// go build -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" +// +// It can be over-written at program execution with an environment variable: +// +// GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main +// +// Neither of the above are covered by the compatibility promise and +// may be removed in a future release of this module. +var conflictPolicy = "panic" // "panic" | "warn" | "ignore" + +// ignoreConflict reports whether to ignore a registration conflict +// given the descriptor being registered and the error. +// It is a variable so that the behavior is easily overridden in another file. +var ignoreConflict = func(d protoreflect.Descriptor, err error) bool { + const env = "GOLANG_PROTOBUF_REGISTRATION_CONFLICT" + const faq = "https://protobuf.dev/reference/go/faq#namespace-conflict" + policy := conflictPolicy + if v := os.Getenv(env); v != "" { + policy = v + } + switch policy { + case "panic": + panic(fmt.Sprintf("%v\nSee %v\n", err, faq)) + case "warn": + fmt.Fprintf(os.Stderr, "WARNING: %v\nSee %v\n\n", err, faq) + return true + case "ignore": + return true + default: + panic("invalid " + env + " value: " + os.Getenv(env)) + } +} + +var globalMutex sync.RWMutex + +// GlobalFiles is a global registry of file descriptors. +var GlobalFiles *Files = new(Files) + +// GlobalTypes is the registry used by default for type lookups +// unless a local registry is provided by the user. +var GlobalTypes *Types = new(Types) + +// NotFound is a sentinel error value to indicate that the type was not found. +// +// Since registry lookup can happen in the critical performance path, resolvers +// must return this exact error value, not an error wrapping it. +var NotFound = errors.New("not found") + +// Files is a registry for looking up or iterating over files and the +// descriptors contained within them. +// The Find and Range methods are safe for concurrent use. +type Files struct { + // The map of descsByName contains: + // EnumDescriptor + // EnumValueDescriptor + // MessageDescriptor + // ExtensionDescriptor + // ServiceDescriptor + // *packageDescriptor + // + // Note that files are stored as a slice, since a package may contain + // multiple files. Only top-level declarations are registered. + // Note that enum values are in the top-level since that are in the same + // scope as the parent enum. + descsByName map[protoreflect.FullName]any + filesByPath map[string][]protoreflect.FileDescriptor + numFiles int +} + +type packageDescriptor struct { + files []protoreflect.FileDescriptor +} + +// RegisterFile registers the provided file descriptor. +// +// If any descriptor within the file conflicts with the descriptor of any +// previously registered file (e.g., two enums with the same full name), +// then the file is not registered and an error is returned. +// +// It is permitted for multiple files to have the same file path. +func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error { + if r == GlobalFiles { + globalMutex.Lock() + defer globalMutex.Unlock() + } + if r.descsByName == nil { + r.descsByName = map[protoreflect.FullName]any{ + "": &packageDescriptor{}, + } + r.filesByPath = make(map[string][]protoreflect.FileDescriptor) + } + path := file.Path() + if prev := r.filesByPath[path]; len(prev) > 0 { + r.checkGenProtoConflict(path) + err := errors.New("file %q is already registered", file.Path()) + err = amendErrorWithCaller(err, prev[0], file) + if !(r == GlobalFiles && ignoreConflict(file, err)) { + return err + } + } + + for name := file.Package(); name != ""; name = name.Parent() { + switch prev := r.descsByName[name]; prev.(type) { + case nil, *packageDescriptor: + default: + err := errors.New("file %q has a package name conflict over %v", file.Path(), name) + err = amendErrorWithCaller(err, prev, file) + if r == GlobalFiles && ignoreConflict(file, err) { + err = nil + } + return err + } + } + var err error + var hasConflict bool + rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) { + if prev := r.descsByName[d.FullName()]; prev != nil { + hasConflict = true + err = errors.New("file %q has a name conflict over %v", file.Path(), d.FullName()) + err = amendErrorWithCaller(err, prev, file) + if r == GlobalFiles && ignoreConflict(d, err) { + err = nil + } + } + }) + if hasConflict { + return err + } + + for name := file.Package(); name != ""; name = name.Parent() { + if r.descsByName[name] == nil { + r.descsByName[name] = &packageDescriptor{} + } + } + p := r.descsByName[file.Package()].(*packageDescriptor) + p.files = append(p.files, file) + rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) { + r.descsByName[d.FullName()] = d + }) + r.filesByPath[path] = append(r.filesByPath[path], file) + r.numFiles++ + return nil +} + +// Several well-known types were hosted in the google.golang.org/genproto module +// but were later moved to this module. To avoid a weak dependency on the +// genproto module (and its relatively large set of transitive dependencies), +// we rely on a registration conflict to determine whether the genproto version +// is too old (i.e., does not contain aliases to the new type declarations). +func (r *Files) checkGenProtoConflict(path string) { + if r != GlobalFiles { + return + } + var prevPath string + const prevModule = "google.golang.org/genproto" + const prevVersion = "cb27e3aa (May 26th, 2020)" + switch path { + case "google/protobuf/field_mask.proto": + prevPath = prevModule + "/protobuf/field_mask" + case "google/protobuf/api.proto": + prevPath = prevModule + "/protobuf/api" + case "google/protobuf/type.proto": + prevPath = prevModule + "/protobuf/ptype" + case "google/protobuf/source_context.proto": + prevPath = prevModule + "/protobuf/source_context" + default: + return + } + pkgName := strings.TrimSuffix(strings.TrimPrefix(path, "google/protobuf/"), ".proto") + pkgName = strings.Replace(pkgName, "_", "", -1) + "pb" // e.g., "field_mask" => "fieldmaskpb" + currPath := "google.golang.org/protobuf/types/known/" + pkgName + panic(fmt.Sprintf(""+ + "duplicate registration of %q\n"+ + "\n"+ + "The generated definition for this file has moved:\n"+ + "\tfrom: %q\n"+ + "\tto: %q\n"+ + "A dependency on the %q module must\n"+ + "be at version %v or higher.\n"+ + "\n"+ + "Upgrade the dependency by running:\n"+ + "\tgo get -u %v\n", + path, prevPath, currPath, prevModule, prevVersion, prevPath)) +} + +// FindDescriptorByName looks up a descriptor by the full name. +// +// This returns (nil, [NotFound]) if not found. +func (r *Files) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + prefix := name + suffix := nameSuffix("") + for prefix != "" { + if d, ok := r.descsByName[prefix]; ok { + switch d := d.(type) { + case protoreflect.EnumDescriptor: + if d.FullName() == name { + return d, nil + } + case protoreflect.EnumValueDescriptor: + if d.FullName() == name { + return d, nil + } + case protoreflect.MessageDescriptor: + if d.FullName() == name { + return d, nil + } + if d := findDescriptorInMessage(d, suffix); d != nil && d.FullName() == name { + return d, nil + } + case protoreflect.ExtensionDescriptor: + if d.FullName() == name { + return d, nil + } + case protoreflect.ServiceDescriptor: + if d.FullName() == name { + return d, nil + } + if d := d.Methods().ByName(suffix.Pop()); d != nil && d.FullName() == name { + return d, nil + } + } + return nil, NotFound + } + prefix = prefix.Parent() + suffix = nameSuffix(name[len(prefix)+len("."):]) + } + return nil, NotFound +} + +func findDescriptorInMessage(md protoreflect.MessageDescriptor, suffix nameSuffix) protoreflect.Descriptor { + name := suffix.Pop() + if suffix == "" { + if ed := md.Enums().ByName(name); ed != nil { + return ed + } + for i := md.Enums().Len() - 1; i >= 0; i-- { + if vd := md.Enums().Get(i).Values().ByName(name); vd != nil { + return vd + } + } + if xd := md.Extensions().ByName(name); xd != nil { + return xd + } + if fd := md.Fields().ByName(name); fd != nil { + return fd + } + if od := md.Oneofs().ByName(name); od != nil { + return od + } + } + if md := md.Messages().ByName(name); md != nil { + if suffix == "" { + return md + } + return findDescriptorInMessage(md, suffix) + } + return nil +} + +type nameSuffix string + +func (s *nameSuffix) Pop() (name protoreflect.Name) { + if i := strings.IndexByte(string(*s), '.'); i >= 0 { + name, *s = protoreflect.Name((*s)[:i]), (*s)[i+1:] + } else { + name, *s = protoreflect.Name((*s)), "" + } + return name +} + +// FindFileByPath looks up a file by the path. +// +// This returns (nil, [NotFound]) if not found. +// This returns an error if multiple files have the same path. +func (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + fds := r.filesByPath[path] + switch len(fds) { + case 0: + return nil, NotFound + case 1: + return fds[0], nil + default: + return nil, errors.New("multiple files named %q", path) + } +} + +// NumFiles reports the number of registered files, +// including duplicate files with the same name. +func (r *Files) NumFiles() int { + if r == nil { + return 0 + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numFiles +} + +// RangeFiles iterates over all registered files while f returns true. +// If multiple files have the same name, RangeFiles iterates over all of them. +// The iteration order is undefined. +func (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) { + if r == nil { + return + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, files := range r.filesByPath { + for _, file := range files { + if !f(file) { + return + } + } + } +} + +// NumFilesByPackage reports the number of registered files in a proto package. +func (r *Files) NumFilesByPackage(name protoreflect.FullName) int { + if r == nil { + return 0 + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + p, ok := r.descsByName[name].(*packageDescriptor) + if !ok { + return 0 + } + return len(p.files) +} + +// RangeFilesByPackage iterates over all registered files in a given proto package +// while f returns true. The iteration order is undefined. +func (r *Files) RangeFilesByPackage(name protoreflect.FullName, f func(protoreflect.FileDescriptor) bool) { + if r == nil { + return + } + if r == GlobalFiles { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + p, ok := r.descsByName[name].(*packageDescriptor) + if !ok { + return + } + for _, file := range p.files { + if !f(file) { + return + } + } +} + +// rangeTopLevelDescriptors iterates over all top-level descriptors in a file +// which will be directly entered into the registry. +func rangeTopLevelDescriptors(fd protoreflect.FileDescriptor, f func(protoreflect.Descriptor)) { + eds := fd.Enums() + for i := eds.Len() - 1; i >= 0; i-- { + f(eds.Get(i)) + vds := eds.Get(i).Values() + for i := vds.Len() - 1; i >= 0; i-- { + f(vds.Get(i)) + } + } + mds := fd.Messages() + for i := mds.Len() - 1; i >= 0; i-- { + f(mds.Get(i)) + } + xds := fd.Extensions() + for i := xds.Len() - 1; i >= 0; i-- { + f(xds.Get(i)) + } + sds := fd.Services() + for i := sds.Len() - 1; i >= 0; i-- { + f(sds.Get(i)) + } +} + +// MessageTypeResolver is an interface for looking up messages. +// +// A compliant implementation must deterministically return the same type +// if no error is encountered. +// +// The [Types] type implements this interface. +type MessageTypeResolver interface { + // FindMessageByName looks up a message by its full name. + // E.g., "google.protobuf.Any" + // + // This return (nil, NotFound) if not found. + FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) + + // FindMessageByURL looks up a message by a URL identifier. + // See documentation on google.protobuf.Any.type_url for the URL format. + // + // This returns (nil, NotFound) if not found. + FindMessageByURL(url string) (protoreflect.MessageType, error) +} + +// ExtensionTypeResolver is an interface for looking up extensions. +// +// A compliant implementation must deterministically return the same type +// if no error is encountered. +// +// The [Types] type implements this interface. +type ExtensionTypeResolver interface { + // FindExtensionByName looks up a extension field by the field's full name. + // Note that this is the full name of the field as determined by + // where the extension is declared and is unrelated to the full name of the + // message being extended. + // + // This returns (nil, NotFound) if not found. + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + + // FindExtensionByNumber looks up a extension field by the field number + // within some parent message, identified by full name. + // + // This returns (nil, NotFound) if not found. + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) +} + +var ( + _ MessageTypeResolver = (*Types)(nil) + _ ExtensionTypeResolver = (*Types)(nil) +) + +// Types is a registry for looking up or iterating over descriptor types. +// The Find and Range methods are safe for concurrent use. +type Types struct { + typesByName typesByName + extensionsByMessage extensionsByMessage + + numEnums int + numMessages int + numExtensions int +} + +type ( + typesByName map[protoreflect.FullName]any + extensionsByMessage map[protoreflect.FullName]extensionsByNumber + extensionsByNumber map[protoreflect.FieldNumber]protoreflect.ExtensionType +) + +// RegisterMessage registers the provided message type. +// +// If a naming conflict occurs, the type is not registered and an error is returned. +func (r *Types) RegisterMessage(mt protoreflect.MessageType) error { + // Under rare circumstances getting the descriptor might recursively + // examine the registry, so fetch it before locking. + md := mt.Descriptor() + + if r == GlobalTypes { + globalMutex.Lock() + defer globalMutex.Unlock() + } + + if err := r.register("message", md, mt); err != nil { + return err + } + r.numMessages++ + return nil +} + +// RegisterEnum registers the provided enum type. +// +// If a naming conflict occurs, the type is not registered and an error is returned. +func (r *Types) RegisterEnum(et protoreflect.EnumType) error { + // Under rare circumstances getting the descriptor might recursively + // examine the registry, so fetch it before locking. + ed := et.Descriptor() + + if r == GlobalTypes { + globalMutex.Lock() + defer globalMutex.Unlock() + } + + if err := r.register("enum", ed, et); err != nil { + return err + } + r.numEnums++ + return nil +} + +// RegisterExtension registers the provided extension type. +// +// If a naming conflict occurs, the type is not registered and an error is returned. +func (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error { + // Under rare circumstances getting the descriptor might recursively + // examine the registry, so fetch it before locking. + // + // A known case where this can happen: Fetching the TypeDescriptor for a + // legacy ExtensionDesc can consult the global registry. + xd := xt.TypeDescriptor() + + if r == GlobalTypes { + globalMutex.Lock() + defer globalMutex.Unlock() + } + + field := xd.Number() + message := xd.ContainingMessage().FullName() + if prev := r.extensionsByMessage[message][field]; prev != nil { + err := errors.New("extension number %d is already registered on message %v", field, message) + err = amendErrorWithCaller(err, prev, xt) + if !(r == GlobalTypes && ignoreConflict(xd, err)) { + return err + } + } + + if err := r.register("extension", xd, xt); err != nil { + return err + } + if r.extensionsByMessage == nil { + r.extensionsByMessage = make(extensionsByMessage) + } + if r.extensionsByMessage[message] == nil { + r.extensionsByMessage[message] = make(extensionsByNumber) + } + r.extensionsByMessage[message][field] = xt + r.numExtensions++ + return nil +} + +func (r *Types) register(kind string, desc protoreflect.Descriptor, typ any) error { + name := desc.FullName() + prev := r.typesByName[name] + if prev != nil { + err := errors.New("%v %v is already registered", kind, name) + err = amendErrorWithCaller(err, prev, typ) + if !(r == GlobalTypes && ignoreConflict(desc, err)) { + return err + } + } + if r.typesByName == nil { + r.typesByName = make(typesByName) + } + r.typesByName[name] = typ + return nil +} + +// FindEnumByName looks up an enum by its full name. +// E.g., "google.protobuf.Field.Kind". +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindEnumByName(enum protoreflect.FullName) (protoreflect.EnumType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if v := r.typesByName[enum]; v != nil { + if et, _ := v.(protoreflect.EnumType); et != nil { + return et, nil + } + return nil, errors.New("found wrong type: got %v, want enum", typeName(v)) + } + return nil, NotFound +} + +// FindMessageByName looks up a message by its full name, +// e.g. "google.protobuf.Any". +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if v := r.typesByName[message]; v != nil { + if mt, _ := v.(protoreflect.MessageType); mt != nil { + return mt, nil + } + return nil, errors.New("found wrong type: got %v, want message", typeName(v)) + } + return nil, NotFound +} + +// FindMessageByURL looks up a message by a URL identifier. +// See documentation on google.protobuf.Any.type_url for the URL format. +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) { + // This function is similar to FindMessageByName but + // truncates anything before and including '/' in the URL. + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + message := protoreflect.FullName(url) + if i := strings.LastIndexByte(url, '/'); i >= 0 { + message = message[i+len("/"):] + } + + if v := r.typesByName[message]; v != nil { + if mt, _ := v.(protoreflect.MessageType); mt != nil { + return mt, nil + } + return nil, errors.New("found wrong type: got %v, want message", typeName(v)) + } + return nil, NotFound +} + +// FindExtensionByName looks up a extension field by the field's full name. +// Note that this is the full name of the field as determined by +// where the extension is declared and is unrelated to the full name of the +// message being extended. +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if v := r.typesByName[field]; v != nil { + if xt, _ := v.(protoreflect.ExtensionType); xt != nil { + return xt, nil + } + + // MessageSet extensions are special in that the name of the extension + // is the name of the message type used to extend the MessageSet. + // This naming scheme is used by text and JSON serialization. + // + // This feature is protected by the ProtoLegacy flag since MessageSets + // are a proto1 feature that is long deprecated. + if flags.ProtoLegacy { + if _, ok := v.(protoreflect.MessageType); ok { + field := field.Append(messageset.ExtensionName) + if v := r.typesByName[field]; v != nil { + if xt, _ := v.(protoreflect.ExtensionType); xt != nil { + if messageset.IsMessageSetExtension(xt.TypeDescriptor()) { + return xt, nil + } + } + } + } + } + + return nil, errors.New("found wrong type: got %v, want extension", typeName(v)) + } + return nil, NotFound +} + +// FindExtensionByNumber looks up a extension field by the field number +// within some parent message, identified by full name. +// +// This returns (nil, [NotFound]) if not found. +func (r *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) { + if r == nil { + return nil, NotFound + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + if xt, ok := r.extensionsByMessage[message][field]; ok { + return xt, nil + } + return nil, NotFound +} + +// NumEnums reports the number of registered enums. +func (r *Types) NumEnums() int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numEnums +} + +// RangeEnums iterates over all registered enums while f returns true. +// Iteration order is undefined. +func (r *Types) RangeEnums(f func(protoreflect.EnumType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, typ := range r.typesByName { + if et, ok := typ.(protoreflect.EnumType); ok { + if !f(et) { + return + } + } + } +} + +// NumMessages reports the number of registered messages. +func (r *Types) NumMessages() int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numMessages +} + +// RangeMessages iterates over all registered messages while f returns true. +// Iteration order is undefined. +func (r *Types) RangeMessages(f func(protoreflect.MessageType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, typ := range r.typesByName { + if mt, ok := typ.(protoreflect.MessageType); ok { + if !f(mt) { + return + } + } + } +} + +// NumExtensions reports the number of registered extensions. +func (r *Types) NumExtensions() int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return r.numExtensions +} + +// RangeExtensions iterates over all registered extensions while f returns true. +// Iteration order is undefined. +func (r *Types) RangeExtensions(f func(protoreflect.ExtensionType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, typ := range r.typesByName { + if xt, ok := typ.(protoreflect.ExtensionType); ok { + if !f(xt) { + return + } + } + } +} + +// NumExtensionsByMessage reports the number of registered extensions for +// a given message type. +func (r *Types) NumExtensionsByMessage(message protoreflect.FullName) int { + if r == nil { + return 0 + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + return len(r.extensionsByMessage[message]) +} + +// RangeExtensionsByMessage iterates over all registered extensions filtered +// by a given message type while f returns true. Iteration order is undefined. +func (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) { + if r == nil { + return + } + if r == GlobalTypes { + globalMutex.RLock() + defer globalMutex.RUnlock() + } + for _, xt := range r.extensionsByMessage[message] { + if !f(xt) { + return + } + } +} + +func typeName(t any) string { + switch t.(type) { + case protoreflect.EnumType: + return "enum" + case protoreflect.MessageType: + return "message" + case protoreflect.ExtensionType: + return "extension" + default: + return fmt.Sprintf("%T", t) + } +} + +func amendErrorWithCaller(err error, prev, curr any) error { + prevPkg := goPackage(prev) + currPkg := goPackage(curr) + if prevPkg == "" || currPkg == "" || prevPkg == currPkg { + return err + } + return errors.New("%s\n\tpreviously from: %q\n\tcurrently from: %q", err, prevPkg, currPkg) +} + +func goPackage(v any) string { + switch d := v.(type) { + case protoreflect.EnumType: + v = d.Descriptor() + case protoreflect.MessageType: + v = d.Descriptor() + case protoreflect.ExtensionType: + v = d.TypeDescriptor() + } + if d, ok := v.(protoreflect.Descriptor); ok { + v = d.ParentFile() + } + if d, ok := v.(interface{ GoPackagePath() string }); ok { + return d.GoPackagePath() + } + return "" +} diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go new file mode 100644 index 0000000..c587276 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoiface + +type MessageV1 interface { + Reset() + String() string + ProtoMessage() +} + +type ExtensionRangeV1 struct { + Start, End int32 // both inclusive +} diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go new file mode 100644 index 0000000..44cf467 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go @@ -0,0 +1,168 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoiface contains types referenced or implemented by messages. +// +// WARNING: This package should only be imported by message implementations. +// The functionality found in this package should be accessed through +// higher-level abstractions provided by the proto package. +package protoiface + +import ( + "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Methods is a set of optional fast-path implementations of various operations. +type Methods = struct { + pragma.NoUnkeyedLiterals + + // Flags indicate support for optional features. + Flags SupportFlags + + // Size returns the size in bytes of the wire-format encoding of a message. + // Marshal must be provided if a custom Size is provided. + Size func(SizeInput) SizeOutput + + // Marshal formats a message in the wire-format encoding to the provided buffer. + // Size should be provided if a custom Marshal is provided. + // It must not return an error for a partial message. + Marshal func(MarshalInput) (MarshalOutput, error) + + // Unmarshal parses the wire-format encoding and merges the result into a message. + // It must not reset the target message or return an error for a partial message. + Unmarshal func(UnmarshalInput) (UnmarshalOutput, error) + + // Merge merges the contents of a source message into a destination message. + Merge func(MergeInput) MergeOutput + + // CheckInitialized returns an error if any required fields in the message are not set. + CheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error) +} + +// SupportFlags indicate support for optional features. +type SupportFlags = uint64 + +const ( + // SupportMarshalDeterministic reports whether MarshalOptions.Deterministic is supported. + SupportMarshalDeterministic SupportFlags = 1 << iota + + // SupportUnmarshalDiscardUnknown reports whether UnmarshalOptions.DiscardUnknown is supported. + SupportUnmarshalDiscardUnknown +) + +// SizeInput is input to the Size method. +type SizeInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message + Flags MarshalInputFlags +} + +// SizeOutput is output from the Size method. +type SizeOutput = struct { + pragma.NoUnkeyedLiterals + + Size int +} + +// MarshalInput is input to the Marshal method. +type MarshalInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message + Buf []byte // output is appended to this buffer + Flags MarshalInputFlags +} + +// MarshalOutput is output from the Marshal method. +type MarshalOutput = struct { + pragma.NoUnkeyedLiterals + + Buf []byte // contains marshaled message +} + +// MarshalInputFlags configure the marshaler. +// Most flags correspond to fields in proto.MarshalOptions. +type MarshalInputFlags = uint8 + +const ( + MarshalDeterministic MarshalInputFlags = 1 << iota + MarshalUseCachedSize +) + +// UnmarshalInput is input to the Unmarshal method. +type UnmarshalInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message + Buf []byte // input buffer + Flags UnmarshalInputFlags + Resolver interface { + FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) + FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) + } + Depth int +} + +// UnmarshalOutput is output from the Unmarshal method. +type UnmarshalOutput = struct { + pragma.NoUnkeyedLiterals + + Flags UnmarshalOutputFlags +} + +// UnmarshalInputFlags configure the unmarshaler. +// Most flags correspond to fields in proto.UnmarshalOptions. +type UnmarshalInputFlags = uint8 + +const ( + UnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota +) + +// UnmarshalOutputFlags are output from the Unmarshal method. +type UnmarshalOutputFlags = uint8 + +const ( + // UnmarshalInitialized may be set on return if all required fields are known to be set. + // If unset, then it does not necessarily indicate that the message is uninitialized, + // only that its status could not be confirmed. + UnmarshalInitialized UnmarshalOutputFlags = 1 << iota +) + +// MergeInput is input to the Merge method. +type MergeInput = struct { + pragma.NoUnkeyedLiterals + + Source protoreflect.Message + Destination protoreflect.Message +} + +// MergeOutput is output from the Merge method. +type MergeOutput = struct { + pragma.NoUnkeyedLiterals + + Flags MergeOutputFlags +} + +// MergeOutputFlags are output from the Merge method. +type MergeOutputFlags = uint8 + +const ( + // MergeComplete reports whether the merge was performed. + // If unset, the merger must have made no changes to the destination. + MergeComplete MergeOutputFlags = 1 << iota +) + +// CheckInitializedInput is input to the CheckInitialized method. +type CheckInitializedInput = struct { + pragma.NoUnkeyedLiterals + + Message protoreflect.Message +} + +// CheckInitializedOutput is output from the CheckInitialized method. +type CheckInitializedOutput = struct { + pragma.NoUnkeyedLiterals +} diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go new file mode 100644 index 0000000..4a1ab7f --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go @@ -0,0 +1,44 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package protoimpl contains the default implementation for messages +// generated by protoc-gen-go. +// +// WARNING: This package should only ever be imported by generated messages. +// The compatibility agreement covers nothing except for functionality needed +// to keep existing generated messages operational. Breakages that occur due +// to unauthorized usages of this package are not the author's responsibility. +package protoimpl + +import ( + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/filetype" + "google.golang.org/protobuf/internal/impl" +) + +// UnsafeEnabled specifies whether package unsafe can be used. +const UnsafeEnabled = impl.UnsafeEnabled + +type ( + // Types used by generated code in init functions. + DescBuilder = filedesc.Builder + TypeBuilder = filetype.Builder + + // Types used by generated code to implement EnumType, MessageType, and ExtensionType. + EnumInfo = impl.EnumInfo + MessageInfo = impl.MessageInfo + ExtensionInfo = impl.ExtensionInfo + + // Types embedded in generated messages. + MessageState = impl.MessageState + SizeCache = impl.SizeCache + WeakFields = impl.WeakFields + UnknownFields = impl.UnknownFields + ExtensionFields = impl.ExtensionFields + ExtensionFieldV1 = impl.ExtensionField + + Pointer = impl.Pointer +) + +var X impl.Export diff --git a/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go new file mode 100644 index 0000000..a105cb2 --- /dev/null +++ b/examples/go/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go @@ -0,0 +1,60 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protoimpl + +import ( + "google.golang.org/protobuf/internal/version" +) + +const ( + // MaxVersion is the maximum supported version for generated .pb.go files. + // It is always the current version of the module. + MaxVersion = version.Minor + + // GenVersion is the runtime version required by generated .pb.go files. + // This is incremented when generated code relies on new functionality + // in the runtime. + GenVersion = 20 + + // MinVersion is the minimum supported version for generated .pb.go files. + // This is incremented when the runtime drops support for old code. + MinVersion = 0 +) + +// EnforceVersion is used by code generated by protoc-gen-go +// to statically enforce minimum and maximum versions of this package. +// A compilation failure implies either that: +// - the runtime package is too old and needs to be updated OR +// - the generated code is too old and needs to be regenerated. +// +// The runtime package can be upgraded by running: +// +// go get google.golang.org/protobuf +// +// The generated code can be regenerated by running: +// +// protoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES} +// +// Example usage by generated code: +// +// const ( +// // Verify that this generated code is sufficiently up-to-date. +// _ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion) +// // Verify that runtime/protoimpl is sufficiently up-to-date. +// _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion) +// ) +// +// The genVersion is the current minor version used to generated the code. +// This compile-time check relies on negative integer overflow of a uint +// being a compilation failure (guaranteed by the Go specification). +type EnforceVersion uint + +// This enforces the following invariant: +// +// MinVersion ≤ GenVersion ≤ MaxVersion +const ( + _ = EnforceVersion(GenVersion - MinVersion) + _ = EnforceVersion(MaxVersion - GenVersion) +) diff --git a/examples/go/vendor/modules.txt b/examples/go/vendor/modules.txt new file mode 100644 index 0000000..8a4ff05 --- /dev/null +++ b/examples/go/vendor/modules.txt @@ -0,0 +1,67 @@ +# github.com/golang/snappy v0.0.4 +## explicit +github.com/golang/snappy +# github.com/google/uuid v1.6.0 +## explicit +github.com/google/uuid +# github.com/klauspost/compress v1.17.9 +## explicit; go 1.20 +github.com/klauspost/compress +github.com/klauspost/compress/fse +github.com/klauspost/compress/huff0 +github.com/klauspost/compress/internal/cpuinfo +github.com/klauspost/compress/internal/snapref +github.com/klauspost/compress/zstd +github.com/klauspost/compress/zstd/internal/xxhash +# github.com/kr/pretty v0.3.1 +## explicit; go 1.12 +# github.com/pierrec/lz4 v2.6.1+incompatible +## explicit +github.com/pierrec/lz4 +github.com/pierrec/lz4/internal/xxh32 +# github.com/pkg/errors v0.9.1 +## explicit +github.com/pkg/errors +# github.com/rabbitmq/amqp091-go v1.10.0 +## explicit; go 1.20 +github.com/rabbitmq/amqp091-go +# github.com/rabbitmq/rabbitmq-stream-go-client v1.4.6 +## explicit; go 1.18 +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/logs +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/message +github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream +# github.com/spaolacci/murmur3 v1.1.0 +## explicit +github.com/spaolacci/murmur3 +# github.com/zaphiro-technologies/protobuf v0.0.7 +## explicit; go 1.21 +github.com/zaphiro-technologies/protobuf/go/grid/v1 +# google.golang.org/protobuf v1.34.2 +## explicit; go 1.20 +google.golang.org/protobuf/encoding/prototext +google.golang.org/protobuf/encoding/protowire +google.golang.org/protobuf/internal/descfmt +google.golang.org/protobuf/internal/descopts +google.golang.org/protobuf/internal/detrand +google.golang.org/protobuf/internal/editiondefaults +google.golang.org/protobuf/internal/encoding/defval +google.golang.org/protobuf/internal/encoding/messageset +google.golang.org/protobuf/internal/encoding/tag +google.golang.org/protobuf/internal/encoding/text +google.golang.org/protobuf/internal/errors +google.golang.org/protobuf/internal/filedesc +google.golang.org/protobuf/internal/filetype +google.golang.org/protobuf/internal/flags +google.golang.org/protobuf/internal/genid +google.golang.org/protobuf/internal/impl +google.golang.org/protobuf/internal/order +google.golang.org/protobuf/internal/pragma +google.golang.org/protobuf/internal/set +google.golang.org/protobuf/internal/strs +google.golang.org/protobuf/internal/version +google.golang.org/protobuf/proto +google.golang.org/protobuf/reflect/protoreflect +google.golang.org/protobuf/reflect/protoregistry +google.golang.org/protobuf/runtime/protoiface +google.golang.org/protobuf/runtime/protoimpl From 12e4cada6b85bc7a019b292b64e8170387494789 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 11:00:07 +0000 Subject: [PATCH 15/66] Automated lint fixes [dependabot skip] --- examples/go/faults/main.go | 114 ++++++++++++++++++++++++++++++++----- 1 file changed, 101 insertions(+), 13 deletions(-) diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go index cd53350..9cfd8b0 100644 --- a/examples/go/faults/main.go +++ b/examples/go/faults/main.go @@ -22,7 +22,16 @@ func CheckErr(err error) { } } -func generateFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.Fault { +func generateFault( + fault_id string, + event_type grid.FaultEventType, + measurement_timestamp int64, + fault_current float32, + location_probability *float32, + used_measurements []*grid.FaultMeasurement, + impacted_equipments []string, + faulty_equipment *string, +) *grid.Fault { description := "Example fault" tm := math.Round(float64(time.Now().UnixMilli())/20) * 20 @@ -45,14 +54,36 @@ func generateFault(fault_id string, event_type grid.FaultEventType, measurement_ return &fault } -func generateLineFault(fault_id string, event_type grid.FaultEventType, measurement_timestamp int64, fault_current float32, location_probability *float32, used_measurements []*grid.FaultMeasurement, impacted_equipments []string, faulty_equipment *string) *grid.LineFault { - - fault := generateFault(fault_id, event_type, measurement_timestamp, fault_current, location_probability, used_measurements, impacted_equipments, faulty_equipment) +func generateLineFault( + fault_id string, + event_type grid.FaultEventType, + measurement_timestamp int64, + fault_current float32, + location_probability *float32, + used_measurements []*grid.FaultMeasurement, + impacted_equipments []string, + faulty_equipment *string, +) *grid.LineFault { + + fault := generateFault( + fault_id, + event_type, + measurement_timestamp, + fault_current, + location_probability, + used_measurements, + impacted_equipments, + faulty_equipment, + ) length_from_terminal1 := rand.Float32() length_uncertainty := float32(100.0) - lineFault := grid.LineFault{Fault: fault, LengthFromTerminal1: &length_from_terminal1, LengthUncertainty: &length_uncertainty} + lineFault := grid.LineFault{ + Fault: fault, + LengthFromTerminal1: &length_from_terminal1, + LengthUncertainty: &length_uncertainty, + } return &lineFault } @@ -128,14 +159,22 @@ func main() { data := &grid.Fault{} err := proto.Unmarshal(d.Body, data) CheckErr(err) - fmt.Printf("Received a fault message: %s, event: %s\n", data.Id, data.FaultEventType) + fmt.Printf( + "Received a fault message: %s, event: %s\n", + data.Id, + data.FaultEventType, + ) } if d.Headers["type"] == "LineFault" { data := &grid.LineFault{} err := proto.Unmarshal(d.Body, data) CheckErr(err) - fmt.Printf("Received a fault message: %s, event: %s\n", data.Fault.Id, data.Fault.FaultEventType) + fmt.Printf( + "Received a fault message: %s, event: %s\n", + data.Fault.Id, + data.Fault.FaultEventType, + ) } } }() @@ -148,9 +187,22 @@ func main() { fault_equipment := new(string) location_probability := new(float32) impacted_equipments := []string{"EQ-1", "EQ-2", "EQ-3"} - used_measurements := []*grid.FaultMeasurement{{PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}, {PositiveSign: true, MeasurementID: "M-1"}} + used_measurements := []*grid.FaultMeasurement{ + {PositiveSign: true, MeasurementID: "M-1"}, + {PositiveSign: true, MeasurementID: "M-1"}, + {PositiveSign: true, MeasurementID: "M-1"}, + } - startFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_STARTED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + startFaultEvent := generateFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_STARTED, + mt, + fault_current, + location_probability, + used_measurements, + impacted_equipments, + fault_equipment, + ) header := amqp.Table{ "id": fault_id, @@ -162,7 +214,16 @@ func main() { time.Sleep(20 * time.Millisecond) - endFaultEvent := generateFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_ENDED, mt, fault_current, location_probability, used_measurements, impacted_equipments, fault_equipment) + endFaultEvent := generateFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_ENDED, + mt, + fault_current, + location_probability, + used_measurements, + impacted_equipments, + fault_equipment, + ) buf, _ = proto.Marshal(endFaultEvent) publishMessage(ch, ctx, header, buf) @@ -175,21 +236,48 @@ func main() { "type": "LineFault", } - location := generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + location := generateLineFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, + mt, + fault_current, + &probability, + used_measurements, + impacted_equipments, + &equipment, + ) buf, _ = proto.Marshal(location) publishMessage(ch, ctx, header, buf) // second potential location equipment = "EQ-2" - location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + location = generateLineFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, + mt, + fault_current, + &probability, + used_measurements, + impacted_equipments, + &equipment, + ) buf, _ = proto.Marshal(location) publishMessage(ch, ctx, header, buf) // third potential location equipment = "EQ-3" - location = generateLineFault(fault_id, grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, mt, fault_current, &probability, used_measurements, impacted_equipments, &equipment) + location = generateLineFault( + fault_id, + grid.FaultEventType_FAULT_EVENT_TYPE_LOCATED, + mt, + fault_current, + &probability, + used_measurements, + impacted_equipments, + &equipment, + ) buf, _ = proto.Marshal(location) publishMessage(ch, ctx, header, buf) From fd0bb3d9292a01d55af86040dc948d58bacb9ff9 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 13:52:33 +0200 Subject: [PATCH 16/66] improve docs --- README.md | 48 +++++++++++++++++++++++++++++++++++++- examples/go/faults/main.go | 6 ++--- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b0300ae..c9eb569 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,53 @@ Python and Go, code to: 1. Set-up the infrastructure using `make docker-start`. 1. Launch the example `make example-measurements-go` -1. Press any key to stop +1. Press any key to stop. + +```bash +Getting started with Streaming client for RabbitMQ +Connecting to RabbitMQ streaming ... +Sent 10 messages +Press any key to stop + +consumer name: my_consumer, measurement_id: Dev0000-0005, measurement_time 1720698360980, measurement_type 20, measurement_value 4592455024224327647 +consumer name: my_consumer, measurement_id: Dev0000-0006, measurement_time 1720698360980, measurement_type 20, measurement_value 4604241342922663796 +consumer name: my_consumer, measurement_id: Dev0000-0009, measurement_time 1720698360980, measurement_type 44, measurement_value 4603643564277470555 +consumer name: my_consumer, measurement_id: Dev0000-0001, measurement_time 1720698360980, measurement_type 28, measurement_value 4598295346455196891 +consumer name: my_consumer, measurement_id: Dev0000-0004, measurement_time 1720698360980, measurement_type 20, measurement_value 4605375802349382247 +consumer name: my_consumer, measurement_id: Dev0000-0007, measurement_time 1720698360980, measurement_type 20, measurement_value 4605095969928423361 +consumer name: my_consumer, measurement_id: Dev0000-0002, measurement_time 1720698360980, measurement_type 21, measurement_value 4600833284970982103 +consumer name: my_consumer, measurement_id: Dev0000-0008, measurement_time 1720698360980, measurement_type 20, measurement_value 4597854724057569946 +consumer name: my_consumer, measurement_id: Dev0000-0000, measurement_time 1720698360980, measurement_type 13, measurement_value 4603013690508174157 +consumer name: my_consumer, measurement_id: Dev0000-0003, measurement_time 1720698360980, measurement_type 21, measurement_value 4598093240485266093 +consumer name: my_consumer, measurement_id: Dev0000-0008, measurement_time 1720698360980, measurement_type 20, measurement_value 4600766170106400936 +consumer name: my_consumer, measurement_id: Dev0000-0007, measurement_time 1720698360980, measurement_type 20, measurement_value 4606916483465028581 +``` + +### Produce and consume faults + +#### Python + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the producer `make produce-measurements-python` +1. Launch the consumer `make consume-measurements-python` + +#### Go + +1. Set-up the infrastructure using `make docker-start`. +1. Launch the example `make example-faults-go` +1. Press any key to stop. + +```bash +Getting started with AMPQ client for RabbitMQ +Connecting to RabbitMQ ... +Received a fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_STARTED +Press any key to stop + +Received a fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_ENDED +Received a line fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_LOCATED, faulty line: EQ-1, probability: 0.330000, length from t1: 0.526424 +Received a line fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_LOCATED, faulty line: EQ-2, probability: 0.330000, length from t1: 0.484818 +Received a line fault event message: 1948cd36-f835-4dc5-83c2-ba5a7612362a, event type: FAULT_EVENT_TYPE_LOCATED, faulty line: EQ-3, probability: 0.330000, length from t1: 0.315550 +``` ## Contributing to Protocol Buffers diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go index 9cfd8b0..4229c62 100644 --- a/examples/go/faults/main.go +++ b/examples/go/faults/main.go @@ -160,7 +160,7 @@ func main() { err := proto.Unmarshal(d.Body, data) CheckErr(err) fmt.Printf( - "Received a fault message: %s, event: %s\n", + "Received a fault event message: %s, event type: %s\n", data.Id, data.FaultEventType, ) @@ -171,9 +171,9 @@ func main() { err := proto.Unmarshal(d.Body, data) CheckErr(err) fmt.Printf( - "Received a fault message: %s, event: %s\n", + "Received a line fault event message: %s, event type: %s, faulty line: %s, probability: %f, length from t1: %f\n", data.Fault.Id, - data.Fault.FaultEventType, + data.Fault.FaultEventType, *data.Fault.FaultyEquipmentId, *data.Fault.LocationProbability, *data.LengthFromTerminal1, ) } } From 45380aea386c5e611987db97dcae80d116858988 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 11:53:58 +0000 Subject: [PATCH 17/66] Automated lint fixes [dependabot skip] --- examples/go/faults/main.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go index 4229c62..b019a53 100644 --- a/examples/go/faults/main.go +++ b/examples/go/faults/main.go @@ -173,7 +173,10 @@ func main() { fmt.Printf( "Received a line fault event message: %s, event type: %s, faulty line: %s, probability: %f, length from t1: %f\n", data.Fault.Id, - data.Fault.FaultEventType, *data.Fault.FaultyEquipmentId, *data.Fault.LocationProbability, *data.LengthFromTerminal1, + data.Fault.FaultEventType, + *data.Fault.FaultyEquipmentId, + *data.Fault.LocationProbability, + *data.LengthFromTerminal1, ) } } From 3bce3966261fa4df595c858d99ba09e19ed29088 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:11:06 +0200 Subject: [PATCH 18/66] remove python --- README.md | 16 ++-------------- examples/go/faults/__debug_bin293364222 | Bin 8722434 -> 0 bytes 2 files changed, 2 insertions(+), 14 deletions(-) delete mode 100755 examples/go/faults/__debug_bin293364222 diff --git a/README.md b/README.md index c9eb569..d23695f 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,8 @@ go get -v github.com/zaphiro-technologies/protobuf/go@v0.0.7 ## Examples -For your convenience, in the [examples](examples) folder we provide both for -Python and Go, code to: +For your convenience, in the [examples](examples) folder we provide +Go code to: - Produce and consume measurements (uses RabbitMQ streams). - Produce and consume faults (uses RabbitMQ exchanges). @@ -80,12 +80,6 @@ Python and Go, code to: ### Produce and consume measurements -#### Python - -1. Set-up the infrastructure using `make docker-start`. -1. Launch the producer `make produce-measurements-python` -1. Launch the consumer `make consume-measurements-python` - #### Go 1. Set-up the infrastructure using `make docker-start`. @@ -114,12 +108,6 @@ consumer name: my_consumer, measurement_id: Dev0000-0007, measurement_time 17206 ### Produce and consume faults -#### Python - -1. Set-up the infrastructure using `make docker-start`. -1. Launch the producer `make produce-measurements-python` -1. Launch the consumer `make consume-measurements-python` - #### Go 1. Set-up the infrastructure using `make docker-start`. diff --git a/examples/go/faults/__debug_bin293364222 b/examples/go/faults/__debug_bin293364222 deleted file mode 100755 index 976d22c5987bd7542336ee0dc8e5b59df63ae01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8722434 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 J=1g9-QT5 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.WLt$s&WtfY>d@DLj2?G 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�SOmOkL<8Jm&LkrcF$=8%l*!2mn3r?~D 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
                VL!JP1C_qQZ#T00hR1Af^yKm0sv?9UHB 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 z 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%0AEeLF{a6Jv?Y^Ol^nIjn!6xjd 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 m)d=r^ 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

                BhWVJs--|+p)Y{p$`;m)L5G4W@eC8 z$#DXCQ;grm7@sPN$4ah!WZKDA0{z<4cWixzcY>$7M18ae@zHvb_daC$@aTr@8f5IN zgZOCcm`5WSdobdoJ%o>zfzRDIf#7S*%GT_PpW)F)WK8`0ab!&2OWC-yus^b$33MW3 zM%f27rwu)lv@yY;&KlQ9qE8a9Qr?@umhMC^jHeFCPTJjz>`%;hqXplg#bfeOS3-wq zUg2Uf-&gVV-o)2K?;aujR&V(JVP(TRhn2B^8uKMn>}7Iw@H#+ulq4qXMS0>Swi7x80$@PN*eWO0% zuQl(AKHShKo%XTp`d@`Q$@EdUzGt|dDP4MfkG~8(upAw}0(~=% zbqLD?-~8|j?z8cc=TM)ye4EPeDO|H-+1^QkF6x~^nyH-gMqFIFXgu`moy7N9q?;AX zK3fy(e(vH1Y{t;;BU7rn_hO5Bo8aSV&|x}sn1L>8MkmoH(E6XLI?Jxw;@Q*XgBZVq zlj+_)!CVEkQ7>gOk2c;boG526{3M+I6@F43xHXumQMAiw>N}SDj^j5p>z$qN zKWjdl){Lgdg3q{E_EF$@;a@<{q2}-3Qi*=wGpxYh*S_`FS9Jb?J~z$pic8=f;H-Yv7sAkZ1M` zGaL1pAH9`}6{w!y3G4aK)G62>f0*r$fBV1Z_s9Qfq`m|8M~j@N9itr^h_5-i7Vm{7 zk_Ge%)(>{u`m)G=7T|CDX0pe2f2;PxAK9I19}?G^u2gHVe}m3>YrtkCrct-)tlQa# z{LtRwnfdq{we&Mv==(O|lWv&ETo3$Le&_tx&oiGzF`On~)K&%j8bg=m;A2x7un(Gl zmV~cs1i!Wfd~{za_&0>`uLg$mFJkn=HD)7U=pkst-kn)DX4kunZ_8p?#y+-J!V~(f z@uLjyoh`{wH|6c+TOabLF)Wo`92dQUvL{iuhk)<;^;?KFI@(A^QuXjTdLxazrDqXC zVNRO&@Qk?TFlz4pSHJ#tZk<2^Sx8np{wX*9QQL}dE(rPNYZ2aX?W^^u!>cq`vT!|h zKYM3uZz07})K*R4DL zPG7e!iEc@ubCTi%@x{(qU2+%i(FYn2Oj3^&^+sQv}|LHkC{ z_3Fybj~%Sv?cJK3PJ1~dUJ=Z5LzukJ!JKz;n8IH)Fx%6T-!D?KqQ5^Ry)>^z z<%tG0yYZ3!Kr}0W`J*Uo9hr%0khhu0R(BeY?E8Cr1Rj@6dI5-ykuF{=3ES zDb#;SbguND*7|Di%0CxA=&U3j8I>Evfxp4Uw#4~M+Y`y8)NLw8OO^rqgO9r9VdYxk*n7$$>DLm0fz z!I&DrFdm)G?-?cFIXzJf&*_O`c)&1tGXhzZf2jHu%bWDP_FT3zaH&@;?As~5eWM@g zz8O5~+klN|4C@Kc)G5Z=%p9)k$SeQNo;$o-Nn>-v?3uY^`mQ=p=5lqnZ})h&x^gGD z{ND)j3y=B`w({t_9hX=5=z1@g!8u%1CUe4EnIj|lEbZrm`C)=3|Dyh{f@h~&OVP@e z=k5*NCaL-;>Pm!0suZ(oTw|rLM-i z$b!Sm_*!tNgZm~t(SrqYoJ$AIEgdp$=_H@XNdq#Vdgs!CS5!{uv(**jsQhZ<`f&bC z0j|))_d;_Bf{BU^cQT zh!40vsroLj&dS?w?G>kbxWAx2LH~5}pPXQS8}>f2`pBNH!p{W{(JM{=ERBDWp?vLa zt@y_a%ptOULiBAp?H7&cDZ}7m`vrG1 z^K}I~{Ve;H?DXnfoKkZoZ5=9QsNckT#oRu6^C>GvS&2lG)^ zczGi90mWMZUj+SG&9m>K4BPt!{9}}*{lEvKV}+~x2CwcM)%|hmto}_6x@Ho64q!Ok z($GQeBU(%YW|}s+oxKgQp;^%-1I{UMck#$y)9%&8CS`LD^Sc8YDSdBwneD~B#T(k$ z*NjZHXm4=u^}|(N_XFG30js^>E1Tc>B6%NNdh=DXE7t-`^DZ;txm_I}iXGfM^D777 zpJmD~nv%xaT=bTGQJx=>C(U^vT|e_~b?I0Op06AHqIyjvk9ciiq+Y6%_}ta&yTEew zVln=hMbxX2^z2Q(zx;Un-L}^p^-58%=$=APJwtoWdk5`_FQ<0A6Wj)C$2H(#^03~k z>(V+~+OZ&Qgx^=WwClXO`;_)k(mo!mD?6J#4_5M<`cI%f;$5|?cwO?^#oP?>?ozA& z5Np>KenT^BSI*tt2pOI=L7OC*S64DymzL)Ll@0qO5-1K1uoW4f zO}owEz4;x=8)=U}<9#FT$sD6PoyE`^+V~pY3sz3&04r**ff=;p8n15U+o8@0Vf#uO z(NF08AZ@!>_j#q2F5`Sc=_lb{wS#>($upijisx37zB%N1*$t}`ywV){!lJG6B{>h^ z81;6~3pwBLD9=hS{?lDose0?2%?9e7Y=!rL)f?usvcSd0{lMk#@xSza+je}iPzP#X z6Ji4=ZLjw;$MF)bDO~U4YT&wzYZBK*Tp#Arca4utuzPGG5a&XL~R|v-^D|=4Y;lHXE>&U82uO+oQi9Idf}l{SDY3>}Yy+elEx* zY9pSLeA7Gu_{HWW&OqNf8<_0kymIkQS1`_|_Vd@r>RPb{w*Ou5-r}}CX5 zzdZ0Cv}Vz7C(Ro4S10LdzclTaUd8WLz2`SFqrDBKgUXecXGdFq72n%Mvx-+5_%8bR z&A^-wp7Y@cz9;y;2VQk~v_@O=Xq~9xS%RL5k)^4t;H$qN+Sb#aqKEQrS~{_S7J?^O)^5NvxuPA{ zqGyxjm+ew)^Z@Jc5+!6r`z*i69HxKa`Z?FnxDIk1;QA?7PBs`{cf2r;@)A5dUU0rl zHSdM5_&~mq&F@yakj5^Z*6+G@6%QBGf%H}f_%c~khX)3!!xr#-h)Xi3bC@6D_qVyK zOX%ZYHx=sRjgh%qP9JN0;W@_k|6^2%{dLFU^V>Z1v*H&%kIyp>JSRbC;uS*}S7w~{ zvFLs_(qsFXk1@Vna!S9UDv&YSi*d?eERs0&fPB)S6BwI*lDrehtM;X@me13Moh5$) ze9WgQA2>Gfy+~d6g>erzesY(cEitfu>O=d}&;^ltzVgqfR?qlJ>ZyLYKaFwtu)f7( z^|yz0t)YQSp(u9-L+s*Az+~?Lv{oS07-60*+*7_?LFQLx;;rxb1`q|>& z)YzhV2;il7?(ZXGd&(mjOUl2Dybs{NHyCM!yICMG&v+wlVtren!%N ziqHA;0$ipF7k&$u1@P)Z&AUKnX&md@oU8eB#XsPWB>dshwSXIT%=T(^?-o#xg_=__ zowV3e<=v~il4)$d4xi8ZKZCV_t}JJ(wC*BFzJf6^ z=8I^5Y>P9xHn1~c^Kn4&!fzV`x&J{?`$y?>3+E?A_j@w?fbA?eBZ+pAEcVW4P6zzb z2i@Jgryuh^!E;jIprf-N2YJ62z1X|NtLrNty0xEixIV_l`<4e|Xp;3qjKTG;VIKqD zx%x5(tFCv2XL|_hop^;c6Lp6egX<-K@3QxOFd*F%VLHB9x>nMG z?|^iS^B6q7Svu;WG>U=SGj!(p3DHFDqxR^7=6#cx3pPbni>Nw;Sq6dyzMEzxI@L zdyMz7$9Ny|*Ngo1)@0mwq@zV4X(zlbhg}lvNtN7i@)y{j`Gu^6p zT(rB!Q{bcR4e&?cvkZ$L`w6yuo|k<9om>|BE7AG?(naOy{`;BdQ(GSBx_0I#v|Lsh zM{nfxzQ$)V;CNGL%ZumT|4;I3pSI$?kDZN>kDGx9ZwltN4cO=E%Pv22#@xI*&WpG5 z)t^y&`N+Y8oVBGrOVZneHofVPMaS<5}>~FB2%8}WMe-!Pf@*;G93EuaI)@kms z?0gWn8{VCGF~&FgyJylq!~|)Z>9Pk2>E@%O&F2%F6gDK*Ue6#Y}kPq)C!JNv)r&(S?`;l{2 z+`Gg_=mFKo%@3GBxq9}gC%WFoX+|?1)xvq-t&Hu;Hk~VeMmLq$1bv98Pi?ZyI`J*c z5puF@{#8vyyqtC1^2Pm-rsi8k<)A&FhpTUY>pAE}&XH_=SB~!AlTX(P&TFA%JMh+^ zbD*`>RHizC4Ns?*^L~ZC^Sp*FGr89;2h3CH{Dab zX7;wQE;G?lxiz!WOH0VN44BBM^se8+b2HZ*e$Tc2&CQ=T9+*S9b5FnnAuhSO$1ADh zDldCP`_NO*B=vOoHiURa={}S;`2={@l&jo4p0pSKH03sN-rbpuS?)f=>`GM+aEakM z9#+h$RJw&vkgk?^F5`S|oWZqEI*fyh|FtH11GLn-ygL_{)yd9iEaP_k1I2?=JUc(* z%ftlbXUNBYKlh-G&&kbMi{g2X&OB%j>rcD;w0j!7WqUHTZTeZ-en0PM`wVT5ZOmr& zC`~X9l75!=`*}|rX~94})9vW>5KrR4_a%6r1eVs#5!)pW&F@yqe+mY%N%m+aYXNdP96vB8kDK7xEyyE#hbVusJif(z9+SsnU#5#T+Q9V=biU?V zo`^T2yn}q?+VMv54tyis?P%)5bNHGzzMiWSvb1YB*7Rg1;d|MBhIL1IOXJ>(eFXiRAdmHvsDBDNIA7p7 z$`lR>_)KeSD$k&f*azwU$Lu}jPYv5Kv=1A%(T-u76~fu*G%DAJjoOm3ACcD447%D_ z7kTCHX{-Z%pG8*(eOPGBJh^P<5uU@jDCtK@^EmHoc|VEwTX=qi=jlApP#c9jR12Py zVitEC_P_B_DJvP_BeR3FW2Orjo49Bv^_ivPGU%{$7tfn`cI9l~c|8~Hl!lK^w|#PW zO$Vv*QVY3l2D^1OyC+l&4Lqht8uFwzfa*iZLS#ZcH!*WZzbi!^Wt~SyO6Kv@8NPd@9=0ho_FzW zPt4YEDHi7MUl+41q^Z3o`|JbVcL z^67Ij=I{>NI4VC;xf!Fmq>M97;9ecko6?zo`eD9Rfy0Pc_8+3_Z_$y`m)%!LUly(x zb$j{-eOk`fW4*QZ$Tb_Y;1bi7yEIoKTn~$YjwwiUeUN5|pyq`vofw|zLi zkoe>-)%SVodoa++spp~5LA5>Y0UtTPDyV0$Zq)Q7ydYeBaB_O`i=m!WUxKwX=*f<| z7oaB{JttP6GeTUy4<6zj;hO@E(=$uLJ_mEivPpQxe6c5{2mahYg6pKfFX|@0@~M31 z7kw(s>ytM@UhSjM-+x|r0zON^XPPfMLVODUCE>pm_4cVZHd%TkFH6uM4GnBuy`Arp zBjm}S=VjCLd2Z)fvbcob%hZnxWeb1KY|N4q)6eRSTsiz*-7f@x=f8~)X(@Z7d4YD8 zE_h3B2$2N!0&n@|sq!yx`}tAo71AtMFDGC9`mZ{`_0oNw%|~9^jcCqdtK@qVJY7Bdcz%WFSHbzsSk|A# zGdkFRh37u5cUX_)JYda{PKUPhfissr=xlfu-LWjg*i$|H)1-DlChMs)xc~yyZ%8kquQoP`5`b93j z7bCXd@=MRj_tuyh{T#EC$oLE1V;996&}mxB``7=SwY>2A>BxCRmps-O+Voc+Lk6c< zoZ)*7^hL1$W7Os;lfz)X@)vkFo;LT<0h-erW3L5g8}RLOIzT@0A9Lksv<@0Ahej)6 z*=N2Fjn-1fb*Dz7?94%E6y`S?tq*CmfqR#&cP^mO%y&Q|!PTYMd`{m$3!@48=G8Y# z@G~-NcJ2_o>T@}Mei6K0;`tEYeRz<)JGAG!{}RtHay9dLd zmnWa4@zc`#O9bmdG~W_=qCUwb)CXSPDB6Xx=IZAoYwByeew@`cI0%CC2hR&I{tZdxG&`A3Cm5%%>XJucePk+*I;d+{gSZyk>n& z;-^j?7ZWp0kS|F-;eL*M%Sn`htoYQYp1D%U$_*?q8RJvO6z@dW1n14Z{LQ!4%a7Ll zOSPr?$ITZ9Wk+L&irF?zjAcJa`RXH!@0uriS;a+M|I+1G8EMLx8Nw;NCPa)~ORdO--cDQ=^y{9f{q0`~~s*VExSScd7l~m7njh zQu>o~GSP{mdCSGYd_J3N-sP!}yxr#4h2Ix|=R(rBc}k*jn_>|g=wFlG)!*+5`qzxb zB9pl<}<+KYS4zS5OQpI<7FB z=iO(rXANToRt|K`$$w5#uaz$r(!LbFvbWRWQ>SahbL}4t^vo^r zn)u7sd!JK!K9<_Ee;wGZylc^N7A z%jRl_>rjcQF{Z-Y?R$dtbH<~3j;y!4oHWgRS38R4mvO25(Ol7a-)d96*Zf0!&$`$~ z@<>0qwZ+O`!{ype>2c%7fj<% z)rEDL`sVP<)wyW>aC5kR*rn4vVTWJz9;I)!7p!g2*i;PqCe|}Q9r^n7Yw!YmO}Q2u zQ@g4C&5nih*Bs0g?bWDQ4eicReaUn7iv7WJ_6po@lHYxb_Ua?wC}FQ=4q~rj zvF!h({G7dtoy1;+aEk5K?IDbrz{}YyV2LMWM{;xQPGGP8s;J#hWUsC>f8_-BYUWAo z6?iTrP0n6H_23Wnv@!?K-_mtIag{o3mDx1W!=KjH)5<(R|Ha^&;l+F==oRSj z67^OZ?IC75yNH&0Hy1e z;oX{3V7_KWFsD`P!rZ%sp4N9jhn4sytGsNYc1S$76CUfLqS`7J_>gM=dy(`3i7-1@IUq4`3dwz>r}qlRDNF$zesuJ z=aMFu2RxNt&mW8C3ClQPy=x-%_)pebK9JgPA+eD0jOV5p-`ZcI9T!lS1hR$iVSSG8 z%NDLdA9d1(%s;k%8gPC4Zj)q#h z^qAIbhPqz*B?T{}XdA)Rc#g&kQq%Lg=Pur{|7u+`duO<`4ql3OOhL~^+QsA^`06h- zf^V~f9ce@6I$2uvIjzo&=^uMIF9UjabPM!A-$1t~rjSm18frWv0Zzh=IQ3(0-o;&- zALD4+ijHbWpHUaZRWob2uyN@Yu2z1xqub_rHb$NX@AQl4Px{5l7HEq;Orj5geUFPt z4gC(VfhFIupv}hwZT^V}jU7Fb;FtnO)#Dnzi}srPWi(mbP$xQzR!Uz$ugfF!B8}w( zN2QfMFx zn~haPcyeq6j>>LPn}q2S=JI7TcuYoolc&rSoS-EtarK2*1HVc zPb*a~{aW5FI?4u$rm=H~JGOlw{>vBNTF<mTiHBI zaI*CgHa9=8tK#=-u{EN78*pw1MuNUuvf9-rNT>RIH&UOdpMUJipk6jkji3LMi0$|I zbN2rh+pA=t{ZGxJevIF1t*`7zs)>5eqMp>%)$=Xw=_|Z;!pq}gS>~p2W&yDf>YX89 zFZE7`_10dbvgHZJEEBunY32oJen8ZpkiQbG!?Q(oI2fse!~eR$_B#{a_{Q(i`gqYl z$Mdl){r&r#zn_o~K-wgJfcnU4AN7;fKL~gyq;-g!c;U-r1N zVE`LUyF}07-IAU3E@D*h{J$74CO)8Lc=rv!YgwzV>A-eqOJ zDj$F{q+6tOcPp;$ofW?w*>o{~=GbiA{srRev%zhS*0fMB;83q8q(8o;y4m~FPlRQ^=eH4Cw36~x0n5>F3%?)XS_zC*z~}au zaW(O6Rxs`@|3Kp;#NI64Rl&2H_pY}7jL|{u3ogXd#E)uKi=T;Sq^ zOKL5+uH$(<&l`BAe)zXGMxgO;A6z7}^2vmYVstL{CR}{lCq?@R7p;rP>8%}kd2ab7 zva%vL$8`uYY&r~iet>v`8>ds7N-t@Bq}s1SdquO)?5|%qwmwZvSMW2`ub2Ai9Ja4U z&S9f}{zCCNQTv!rb747aZI|ZHVY^f3u&oI8dZlbThfR5l_j%n(UiIyD*5E}|LERqo zg8O9T($;# zo4oA16{M)7-+e!3*X|-r&-OFl3+Gv`$KGPg<=}!OyUD zQurE-Q&-p=uU^L7haUgR-J98CN%~VdPx?I5B>0}K*-9hZnHfC8GxBL1PBsP(Z1a7? zIU1k(d*~429s^&SFG$(K!P15EG`^;E@(D`RQSo_=L8QUm=4wlx!a6v;q+-z*SW(13 z(jP}mf1H~i`GnrrSBatYo4Cv9SiPi zd+8L?=jO7N7s}!P6XN(%5q__?2m0eV+yB0B{VRJ0XH(6{af`}g&pLQPYX@zvZ8JKA z^2&uDJfLyD&#R9|8i%XKk)%I-+Sj zuL$#7OpbA#kAu6`Dzrw%p41O-W$ek-tCh8~N~iiv`N|l?glW$3%|oT>Lk`&_n$`&?FpX_W2`{B^me)a_4Q1T%<8y=TXVA~s(}~6g$Ae!&`bD-M{;Lkhu4;JS7#$mA zPYZt%eA8udGNXgyCe6poZng7hc(1ypx`H@?$++r6`BtCE_*QgmOS(!p=4cV7d*ed` zb?}EH^)KFk{<$+GkA?a-iLU71fIOlT6pxfXn#etk-cd|h?b!g%_MLd9&wKgP9sEv{ z)}@*5(u6Q9J-(>?D4+C-t0s~46nZNG9UqP3UqcVzPoL!S3O+C`FFv={Us_&%oA0Q+ z=zxupyf%*l_=}0%wcyjG(Yu=eA{dJ2E##f^MWl0DvGZ?JOLj^!@=q>5eG2ig(sb}UDo1-i~UmfDgG`S^-%OXG0YCG==Z;KWza{<)s^2-Jl451#3FO`;dc~|yIh)? z5jgyg!a?2wx;nie8pG437obtGUg*9juNRiPyiPADuhR?4Tcj86kK}E3dBgUwwnZ2C z^S!LEy!=ki3-!_bShh2gcaF=ec9K3)x##nHZkU(fitm^%n;Xlnj^wR(dBgUzyc5Zb zp0#rMoy0e@ytCQwKazK<%d2*AQ_SbDuFdng(O-ETpX;~dbLB1K^MvxA zs*P$7{icYIba{l1--C{#pX>hw^YaGp|7b3CW*PD92 zKfbHRdwn)Kww7o0xzh9KbMt=VvDSn26_vK{nf#BY*RbIC-q6v7&u6ebk=D)e8>Byt1tce4rOa3v__Su2Sd|$(3S+oY6;L zOM8-)6GN=nx)9n$`+Hwxp4)9)>Nl381MhoB#kTFPsNC=Br*(>VP(Q^$b95kG--y<2 ziAXxhuF(Pg;^;70bbtoLT6z-o+-DTg0XRkn+DUZS#dSUS&Ecx9iL4PEh3**bnZ3xM z%X;xy`tVr}Pl8{X%IYM~_g&V3#wpZCBvnuUXs%Jbn@W2CtFf(VUy5hq8a*?|eEHx_#7{SSQ{xXVUHs(LtFJw{ znRhqyZm%~;D-_4Yle_x$@@5&44GB&=4@-|VH z$|P3X(|GnBqcuO8^~6ToJY9qO71A|dze2j^>sLtE(K)&VT&h9#TZ=7R`F^1$}Xnc51*vQ2D&8)ugM;2-I8Jrk{iX4)R)wI#TynaU33+& z;MXBrrN8c&_@n#j=f2)}S=arHvEQ45$2I0D-b;^?o-f-!o>+fl%~SW+ldgeux1$4+ z;9)ugxO|T%!9#v`f;_*+C+`pSwCdyR+3-lv?d|K_7#KG;$7%>BEdQ3o_q z{8V@})Oh!BCTBc}e(~9BSmQdTr_lq_k$37mbJD6V9jvF<{Cv%kdhqOut?8YdnLxP@ zq3?Tld37BXm0Q!qQ57@FaBV)`eDJ{v(ve?rXICG^O9P!SI=;CE+*zAVAK!47FZ1AS zHBTCifNi=Dx+Q6c9ni_%3m4f2XugGanin#HIfhCz-0rKlRoVT^+bX$Na7kB62YzyD zc75^u!~Ymnv>zb+Sa$pi2Q{`Z@M3k^|HkbR8{%J(U+^{tZ+97rXTZ%pup z1bHs_)`9X1ewE8J6S=?Rvc`Rlm*w*eS@4wuLl!*r#*hVjxq5SX+s|t|(0<;=H`>qJ z&6OyGaV{{<&BOTi*1HdUd+XLW8vpd?T))e~XzFO(x2R*tz8dgTe>VXQqI(ufPTXH9 zdOZN#2Y}lE+y>x6pSwlB2^|gl8am2y^!h{8A@vSu_fFes0(_u0t%VQNmQC=$qTNIG z)xrm|1*bwUr(Y(ID2mT6!*0UEwol?&+H>e!<~Xh1ra1hX=ZJ6fP0xzsNC)A=^vI8M zd!TDC%GOY4Sd0?iD5?i$AWIW#yw^I|gGKrPJrQrIdHVj2^J53Qkhd1}K+Ecx2jvr@ zYYXyDA#ca$S0B8P{F}+Ynf$%z2kDZIiO<}>85lWTB6|TYl6m8 zS>JuWOOLdMexdp<_(M;sPLgZY$L2`Ff6qx*lQu~n&5el0ACu^%QOrq9a$fS8+(&Ya z;4*(`1U>16-Un?GJSUr=Uwtrk#<+k;;~|3c3^zU*})e5+RH@rCZf_YC0+pG^$MI@8UJc`&}LcHI@)7WFUN zZoBZ9>0#cR9tP*1L1$~DJzd3|$1KE8x6 z(LaLvTz<{LA;9Ym*Y9di7${Qg4t`*ZwW8vH(gLHO=tyt^^{jZb<0^}+A& zEIwG17_!y$U6G&T%6Ibn+>j#qrOh-Bk1wBn<-z>9hTpcep9SX{-ZTDZGvZ(W7i5~Y zkbe~AXZ5*7hpizU(vi9ghXVgQtbYPqHyF;w?_qo{&^ZI+bE)N&xdOYs(qp~}{e@QU z)Mr{F|EsTI6K4w`vK?DU4qd1q!m#Hd(gKESpd(&;Gn+V5ymuX8RraqvoOwK`u1It^Vi0+ z=hytj$JU<#kE#yCxF@3D+s=s3<$J+9*5!VJccpk*F+0}>Q@dVXg1@8vuKSAG`~Qaa zoAL*3zu30NITztX?e|K{vGw;eH%{&M4b71&YCoUv1@CCTU-9l#+VAO02I{AiwqJW_ zZ>&#II=*9boBzFS`k_T7rW%>Y;HCS*_AydiOo!6YNF#{xSSJE080 ztPjhm;rHfP0DltqU~jM0xib2|yAVF>BhfKY`2Eb|Rr#7zawjz0-1gph20g64Np8|F)Tq{Ca`gLbYh zw0l=R-7{f2AKQ_{cBEFqE9lzZR&;JVv@O!%@B0NhT>Fl^C)DA@a4@v&AfV)|nW>U3)lpVS8pHC-QO9YeOG}_Z#VlR>L#$J2jq? zi%+&dqewazpLA)zLR$RLV}3LBnG+)x8S81%IV{b@Kj!1x&f`9pJNRI`dK@0+`+%2? z7dM6YAuA5Q3nTb-!1J2N!$KXhqtba>7KPjF0v>v_Tx9FyRh zSk8SJcW_LCtKmtRh9~&_5?<7qBKE$1Fgz>b8NNknc@^d6Xo;P7wCwPLw8iw4ziRZ9 zjSuPhs?G#)^jrddEk*RCOv4lWgs1A3;u^15FLg;#U&f|`STFT!bg^FK`7`37CGaFX z?dGVKiuLwB8pe8?DuOj+$o21;QzJk1?eLxr?{9_o--Y)#xnn<=V{bmg3-TF0vFO

                C1!Tj(=PnsQ>B^HyZdfcXpm7wC%%UL0Is)Y5j+ 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

                m3d>ZybHV_(nN^^f(&pI@1a^@^8!^sRh# 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

                E4H+2W`0d;(vf|Y=Y<24q?tLbAtIPQ#Q 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 M;LwBt+UCx7M+8Lv3tV& zI&AG-5iI;X#+d?}h)Bf7CoQ@BDU?Z;1KF7l|BK%3o`U}cTX8aaw}BY*l(|7W?fP*JJ;H(^FXx$S zcnv(eJH79uSpO5`rg3oJ$ zFUz>rd)Qyzk!|tuD$3JpA47S{3^rOhDD81(8Ui{hZRrn*1CRhooI>gF|o8y z%MNJK$$0Tk!baB|?+d-h`jg?F>2XhjKK=AJ0AJ88#ib>2weV{u^@AUgZD9^6_-*(^ z+v3x7^@D#quXs!)$Ai38TR-@LNFN$kZkhE@w0kh?2Y=%582zlrMvfj>{ou!+3*8zL zg)O2xGM`ytal7b8AnPTts&-HCU2)?YJ~Z`%`^67rGljgU{;-eb`ljZ^d{Wp{?WJb% z2l5%JLvUI2J!C9}ElR^f)hX6DeU*dOd4r-o!=Vzipr0si_w+crh+o($hufV}-_zmi z41Tu)eBHy~Aa4b~3&w6gdic-~F%mv5JeLYzgL*AT?9AU9!S6yh<=5qlh2PcnZ}o%m z2R+0E-IFmM`#}M|MQaCs+o#`bywt*PA;tt55MD&s34>|kIXy4T;WOqVi`LhfH3NRk z$fmVzvLkt9uATFu2E*p_Ccrf9HW;?HL}8}&gLmnB!K;z)HOM!9!q*pJyjA~d4Bg0P zlFd$6im)6GlStgLOqfG_^HOt7?rF03C)?{1uCZ~4(~mN^-HQ(^Vc(=LC2$C@>0UawSsMRo=|km>MnyU<56 zpcuwrHHbwVRwFjvAP(_yyGO^-4jVkhz6{m2e(=MxvF*qf@->Ba%-6?0=a}<2yma|0 z&e#RmXX5dYcEno-`z-&DJvaF;a#&-X=u#JSMyDR1OP`(m-o@|T$a4$7wenjV`Xf3+ zJNImc_k0|~!;yE5|7J{PeTl6+6!n95CCbP-{1=YlFHt}Ea`Cbk+O0*lR%~eQ;f(p< z5s7!OH+g}u))SlMFZjmEEztW`=zUwV(5aY#zo)jsi*3AzeX0nryD}E9yT#&lw-n)Z z@x#i~XWQcOx;M*qGTuDn<^0DBA{bzEHU-}noK5M&ey(Gj)3h1lCz)pvUiU%oY>Iw^ z7A_Z{{h1>CB+t5hME*hVY)a%k?axHiDqi;z#ZuB&@m_ugdth{sXQf}pw=MU48+vQ;*;Vm-3?2EM zzQI03UmKCTP4E*RJAnP25l)veDdtPvfh_M$7BZvUTbrVsuE9CR$VriJ^l-Wt3mb=T zyvSUWdoHy1e{ZjE;A$|j&FK!t!jwVY6d+ zJ)dV%k@v2#?-^_-zFcRnVsW~@oVhlvoEdDnkJF9m+sK)F&&pYN{wfBidm-Zr5obG=fVdV_J5aM)sUbvJgINcSoINj>xjkxS}HITP4#w4Dk;bmqpX>-|(&b!iU6z`TAQV_sVZZ7lsnW=g514^W#7A$J0Z7JP!+;;6HbMeE)2nT|92Ge`_bw z&_4tHv(P^mgNIsl47pc)jqJ%`i7Q9Iql}cp-`+QidH8KFzjEYm`7rNqE+y( zj#aD=l*?&~w?&hc&~llcPmYk^AIT{1 zhCY&u9O248?wgAC&rO{r^=bBz%JtQeEPUZ;c-Io}j`R2<=*x&~cuI59838-SqWw-c zR^%>)Jf;^go`r$UErlCh5yyiPdnlhMA)oh@t4~V*@6}w;mrxEH6C?28`BUnqSp4W$ zL|^F`G;Kk4r_?X8&xO9l>Qlm>3;I-R{OI|b2Yd_X0iQLGgNYw~xUN|LGU#MlIe~+u zleauk!bYN#rSPNE*~fFlPvmi?_VF5jEM@HD(kk(y*`s`ZT3M^WPHu?d$v+=Np1jPb zL&Q!-@uISq_dHqtq6&M7jt05+czbyV=aOYFbuF@&_`MJ>>THl_FW)2D$oF6mv5VMB z>?5{}EC0A};$HTX7{uX?OkeD~o4$m}clI)_FYM(z#7pdNpqs^*$Se7db>hnUYhSt% zOe8iHdur^;9~(5E;u@+C&nkn74xHnj5bjW(`PeJbrWzgB$1hiLy<^TL3+y`LfKKGWKDB_Xc^VHA(DtR&yYivrXKs9NCTHODBEM zHfy{ueUGs%e)88poN55PIoWJ~qVPK2$ue)% zH}zx7DYmlA`276za*eYOTgg~C(>Rh@hi&YH9>`f{9rxYbcXQuf9WAKwF_P;|jO3Wt z9n9-9=*#ukGjLgjPe(9IiqC`*T#x-+kNv#;I*Z@yy>jH_pnm7=jy~_Bj^I_)5tL1h z;`crZ#v~TMhmTMlQzJ)~Z$);~<|?xrc@BE8ulXf#B1er4!DIfG-UJ)b`k%(UX z&`0uvPEyl$ge(8JUtJ}=dZ5?Z#E5cWI&+&_H$9!+=IFF`l1~2me{6Ly{w(vzF$dWQ zmse}z|H0@@t>-v|%xz?yw<%bsYoE-~-ap6c>N$!JQ9Rf4;X^E*YfWW*_%-kU>e;`I z&#MiWKAU#@k$1uzn#D)x_fJTc>ah_GQZIG?f-&!JT5!wjW_VK>&=LK)h_`dJL zFaNyx{v#EmEu37_V^dsyD1)uYV#{*WI5W0Zb{mZJH~((17k1)ulwfWglhF zSdUKPsgT+5oH@ES-bNl4+hN+1&b6UO=wT6N#GW(H4tiL8=qvem`JHbijGYR{tTS*~ z`duv=E@%A23q#OQv4sELZ87iV(1-C3bfJs)x)~$7YtFjDJLfH zxScioh~LM@mB;YtY1(MAxh7=6V4eB{tW}-(vGiZd~Z3#`L1NF%2i1$4ZPRSWm_1 z8}g(5(k$}hYUWM%z4R9GdnIFTK@WM~$2-09S^Q>oD~fkos=4~_K?kiLYKeFH?PH#f z`n*E_OX8h|EFQts6RY5R#t(pZS_j^V*j2Sl9zwSt9z?#;5%X=Y2CkXl`&9XL0p4lC z=BUiRuzgPPgfLIK8q5>)RLzJCV^tj$gM~rogzE@o!se}r9Tf8@e|xNG%G%4U!?f-q zz75x5T9-xEVN?2N9cKDxU6!k`f7#VB)=BSPLf^=a_FB`}D%pq>_96|Bh3Sf$N726J zkev@QpF#)1+!pdG&gv7DDg9= zPW-7Pex|j_(%Q;+6hBk1TumqA?Lua{tv`Y8hY~;Y(?3jaXF~kU=;1$TJ^ZN;?{C!i zBW4wUKVk>-7-k+fAv-r?hi^glZ^aI*J!~X@>ufNUvzzzt#m0D#ZQ_12_gi(JG;0%w%Srd~H^mp|x^g?lrr2>|OYReXMpuKM=?;8<2LGlQ+0?sR zL%+lZMlVKZne|*3{y)!n^Q^gwY^C3BU@Px4wz9%@{ds;@YkTGRnV-q=V_(eNTDfnr zwv+ftIjmaE3;Qv$T;FG02R-|t=Ky_SzXz}(S>(It$;1&B4?JF{?={Zel{epPoU?16 z`EKLfU5Ue5?^oVjwkHLz)9^Y2uiZXfrb99@Kd6Tlp>dJDwX`<%W}$)bA7?}Nv0mC* zOS^s8Ek~o3j8pp{t}w!QO_o$Ds8-XuTg==aIvGYsi(%kk%gqXV?#Hq5WdpiV#>d_D z`!Y7BgpbR5Yb}4hHLuiqOR^7dvrEYR)T8(CTI-^Z$_6(fZ|K4lf7h5Wd+KJdNAEc7 zf?apDN`@q>jdsn&Jkzq-`Wv#dNM~4hFNkT%`^78cXnU8Ux3_J@eS#(R(rMv*4U-GT^Y_Qyh!8m#^=^>MSK0cQ!PD8>IbssYLNfwcV+Z}d26r# zikNsw@m|UGnBw%giNc39zxm9cIHCpH9PUr@TOgct=GK2IlZpMe*ee(`7c1$7a}+H=)>rt+3#1JVfU|s zdRx$n+`+W_{oe`Juru24H+=>BSNB!2-~Xp0;T<+XHsoOL_pglOL5Y2(YWMrUqq$&% zG#BcVjF5*byWjsc(H9#()BXNg{#?+fTJQINO!J87)2f5K-~X#WPSweAt$z-ZPTu<4 z5_S@utaiWuW#VTQ_Hm0pmNNFS+Wr31i}@MY?h5SW2V;2hzJth@*vUh@-@n`1 z%iS~C?|-joLvG3BnUq(mY`@=}v&U`*=j@$r#>Y;<77&x%`DApHb%nJtMKzGv@86QR z^4M$79h|b?&wPsa`+o(tVo_b9@J#l=o{9fftU}CbuKG^Tc5K+8*zf?Qtkv?VT*saOJL-XMQG)N7{?Dua}&WO4YHzmXT z!{d@G{+`-IUz_O*{uO*RcVf8RVHEo?(5EX%F%S!fMJcs18SHAJ*|qKksM_ zI%?|=)!F@i+TSU@tf4*HPLjL$4sDqI{?(EFe&&hy5sKSn9dZAMn_g&n#RYxb~vy|Hs zE}{$$!qDekjy_$wdwZvzxO2U&9X^fU+w<>4U(aH zYyvTb+uv`OZPMRbB5U~tZY>|lIrRj4s<}tKIpgbUwZFerb4B-!ug13>jxGtypgpq; zx?$vhg=9SDoC-FgR{Q(keGIzv(I0j!-Jd`&ksc6*yHkxPyJ+D8Q^u^#8ALf8W$JQG8SF{{AA- zwEF%1-F7c-x7mw>pOxSX-2VPfeRC4u>vF`h5r=Aj|Eh9)F0uD0eE6XZ{lV`@3a-Eo~~@-`_0R9fTLe zp*7gw-(qdbmKyKxn;IF|$}QFI@Bdh9`Re!gtD2Yg_q+9-Mq;W|KlCN$mpl((L;f1~ z_pfm@TFE$PzQ11`jo9BmrUo?nYuw+z9^6)AmHYemJW|HSl<;x2+TZ__Y%sA|%C5nR z{2hLf{K^+g?eDish7{X1PVVnNB%7_jVc*HMR=mIefjAoA7Z2wCez)enhOu_U_p?W^72|G4I-br@~6V4Ex5-yi#5Pe;iKlseD9)YPAy`FZ}Y&LKCz8eB0a z-~GB1nYc5>x?E$7`<~X%e#<;srDymWVmiLjOw84?h z+I5fCb^g0n|7(E*_^3}Oe_b{@wf?N|82b;>`G3U^c7JPT=l_E>?}+T7@r%MyFC#W( z%@dw)UCuo;^K!OZZ2r2U^Z%>FYt~@!Y~)ko*$Q~w67U+EdFR2X1#o&CUrOvj{VVxN zm%qE(;KfduJj>!_#eT2uDVj@zC%27>JC9hj=)_e0j*qAM63zIJ3yvV?iI2E*(brEp z@gvpw#L7~21O82XsYl-7MUmbvw7I;x_*~xq{jykZeSaeP z+xetv&QlX(=SIQA!GDA4pP03CjNJ5nvjZN6`r6{nn>tkCyjy~KCp7N|?7Y1?RXJ+0 zfxTR5{0#a!PHrWS-sk9V9D9%_KATXV$XtrNoX!9g;mGO&9GU71Z^u@c?^NM`$7svd zwD`eqpdB{C;Y7z6({GnEo>tDlde3Dn{`4-b+5G1jOSs;zU@T*Ec^(^^UVzTPAO8%^ zhkSlS?89~sv*qM(I=t2?l8Y+r`CI&Pl(FZRRcX&JkbGEs?tNElTDyLUc;(w>?E2N> zmG<1HvFjb;oByuURmtuIb%dLc3G^o|`vq1r>+qVR5#5R5+ajM{5x#xNvlsKs*|*x) zC)jT56X-ekSFOS1FyhFTM zL!ZPM#1UV*4_PRMZ}=L1rc!*v>m^e$_y#jRYQGqJ$Jv^6neqAfhCc>t)6)2c4s0uN ziH~oX2`z}TM(%$$GTepDW4$U{cM>|a2)nl!Td}xAO@oU~O@l?(4!u9XI*fHC?|ddT z4HB0>^Q&&(-C-SMhoe}BH-WvW71jZ~LlM^D-yO}6qgbqiFd<#gtgVbcD#xGBQ zW)AnDGdWmm#)f)Hk6?EItKMwaGUPS8}{2Bbgf#4p#0xw6NQ6e|T8R}BC)3W<3 z_kBP1zCSY^-r=W*V}Dp%8h?izSBrPJRC1*C5P1xTcbG3*rN7y=WSHB)Z^oXnv3Q4_ z{#@~mQM|)FPpPh+!4A!})6VrTh zvHwgkBISJaGkuwe_~>`j@3iZ)M(i7LovUx~Rn0}~G-4X!)lKR<_B;);YSxVCrs^9U z9ygBR()fp~E2$TU?Hxxh^IF%VixZsFni!n5Q@(19HI{PMs+&1G*5=B|>CEZ} zjwO%UnD|p7dC`fB9Y5`R!o<0?^dnQ&bI<^pORrF@&bprUnBsY1aw}ew5$BIXUw0mA zWM7P}sz)BM4K81LyN#<7_CFI}4F&ZM=9!vuhpyg%VgS`U;Cf%Rc!-~guI2C$k#(J4 z??C-(@6z-?(|QN2!@jT#{cTFzxoIIXfS>+L;38gJj^`!zjD|cJaQa(veYO%kBuAN5 z9iD~6s>rDFPftJ2$bCtC#5cqjd{DLch&gfdLf>QY5u<_pE;aQ!rdh9H`^WpG^VFGR zZmLTmy&oesa(4Iu>GT@-iG7fNF4_x|oxq+68)EEmBf5nxbKehHik+8jOJg6pc-MS; z1v?QvUl~2``OqWKtD8Q1unAhXVM9{b9$~Ed>KRW{U}KJu%*ki;@LMmog0-2CmH1I) z{TE%&iGD@vIcP8re=9ww8tW?}c4%9EdOP%CD}%=V*m?+;Ejsx15H1#PJE3zIvRPq0 zgf{uCLEagHH>?23GEl5!x?;h&1eO- zI#XRKb&cOgjWPMn!I|9 z&uA=4%}ZZ(A-P; zOFQ>k<0nr1U+9C4bN=$Pq9L>|g`aqOIMTp8U!?o=zGqV-%RsE=@>?B9Io&)P!yxG=|1YCUIj3|sthkYgx? zpV(jJ_Ye|)P8998rRo_Yv6#jfho89Sm&~J8dWLUr$Ck5RYLqN_e}m6PuWNyec%?u8 z1^9=B#BW-ojTYBOm{%Du?%*Y>e!e*uT2o#-(<79QuRlzJG9$=7QbUT(tL>S|GYu%p7zI zYvNdZ!Yf2i$tLUmBK_gnfCrJiSgSu@_veEC#O+@R&oJ)@MKqo)Ha`VH*`X(KGNi^qDLmlk%X&BML zYU?5VRO79}9-i-yrHnnSwjRQNJWbedh#Y;RX>SIvN1@y6Fc6eoCV*EVQn?Oq^>!?mb1=%oOND@ydr{(C~p@sJF2V?lUuuegnwL{QQ`*Z0|&aa9-=!0TFLmTwS==lFb-TQz?d6jwp zlT08`+J-jRv`uS()Y3{dwN%p>H4~K&`B68k zxQjM+*}(3?TUOc1u2iF<;z}*AR>fWBZvv$)c4=)#iurxM=Q(F`W->Dg3GMpkx^m4t z&phXx``rJ}ec$Ii_;H?&H2Zo@->NAn)i<%?+eE*{QF%lbzotB&-e*Tm0cRjw(p$Nf zngZ-syfM%vQ85B=XZ%Q9f%w>Ah@F8@< zqv(Xg@HnzMB3{y2n1hkbr$mDe+SY$+?E4P-BooyGu{{y`M)vnbGT#tiaX-F=v9>Z+ z8?xWe^){||=sJ=~qJMJE(Ok>DXik1NS2uLiZX<0LF;2fd|DbzX_I(Gh*O)69gT5o^ zh3`NYQy;J-@B9Pi^F!=Fd(u*bF^KsKJ{(+zM zz5`Qp0e@+&rv0Qv^S)Qr47$m8s+FmORLl-o@4Gh^WY8OHr4|@xtG`+$-L9yM*Ok{ zoUGfjJGllKpYd zIp~3xHbJA!L5%z%d}@d1G;j?8*Dx@;a}H#$^7H-W;QVFbQ07zkDpytp{TQ1Rofyu) zN&A0)Ns(Am3Hx+3K5_dLKZAV#M}CVwf#;2VnnJ!mB7UiXKD9PhR2|AxNe}2A{Md|4 zWY^+VF1K2EE%8tOT(M>O`Tohizo1cbh2PCw{|EE^pFav-)`A!Gcmkew=Np_*EU1BN zWVX=z3pN&Lcc%G%!QjDWY%0&Yoc;^>{(=Ud z?p4^JYGkSgSO+6het*H=XkN3xIsSo(TOzv?$?u<22&Vqx`Teu`{(@PeccbJ7K0)vL zxwpBqiSt?6%0J)W^NJn$?ds`c0ev9nXX|`}@5Bn|Bhd=^cR78%C&rIgIRA6P`OxFM zzhF1-FCZs+44wZNw)gl(=D^%ceiYsf)=M)6hIiZd7g)c*Iu}FpeKj(>#X6IIQ)`W6Um&AjKXKy*D_{q%vbAu&CTdoWM>F|bou%# z(bKY}s`F_BFD74)e`xac&Gd;rNWfP~ba!k8W47@u{QA2g@U?>9+xUGY{lnL8Uq*G6 z#kGA_^+bM-exqV5URwhfFc{qrtdBzLG;M}xKg?JY-UHM<4o^aVS1a_-N5xyU$M(bj2jKsM&;nT-898Sl``+G>bIo~k@jc*m zZzS_E(Gq-W{h2&j;C%%fX`grYT$^~8``OxT=oZ_|bsx0ZLO;zBbFPwaZpEzPLG1qV`qrdyQr(Gn>)Gp4}9gnO6ZItcI($? zDZl<_(y8#d=sQNogB#)>Mb9TVshCzhZINM9BMqN?Tl}MY(KE}huPTHC>|CMz`q_H_ zK%?fq3|OIgvALh^{Q4Wy;AbUcwj;afs{4dPa9=FH{@T3fi{;mAWpC?|3G{E)-Y&QH zHp+O&aRPZ>e4eE@`lnEx+t-if!e?wK{koWBLN*k=^+LXX;6MMfggn4&Q+fZu8-?## z;G;HgOnwEH`#mxFr){AI`O;w`B$NLtFd1-_)vo{T7KP}Hy}UaO!Di0 zESw-;X5Ayb1TJFLe4^XD7^yj5!1V3!M`eCva`(v8G|{R#pw$bRU#~5M^Rt{^f8-hF zg5J*ZU6t@sJiq>D!l!t1VV?Ye(^C2MqrdWG8u>Zf`SmYr9(nSkdAyMM^+U;Ac~eg3 z-HLg8k>O}85u`kIvr{HrUuFM zJ%RlC_n$@{8%OmDvY5@UN6eo6OM4qu=jPY<7TB}@GwK(9AM)$}df3xnj?P7N@tNe; zKPxhpPC|ne64JLotWen>_E=@1=fO-4)C*%^R?+G#k}+L>jpmJ=08b@!4AA>V3o{|n^%Xohv4lryshWI z#TqwdaqRE^b$NB+J3p^}4frmdS1*n4qqHABuSg83L|*;EUryXECB2xD%Xf^opFZ*5 z=o5I}*rzGv*WV+asexBmcf0-cjnV_U*POSOsB&xZ!uj=|{=%Cxw(M->*SBe|E9_kV z2lMOy9s@7vwfy{gjd0k2u0w7M<=1x>Xm_^r>#tNi%7e|=)CDh2etm^c_dJ_g?0lr6 z=bP1Gqw2wBJ+*0-q0B>?*DP>Otm{nj>(>>6ssF{vuP+k48zn#3gYGY8e*MZL;A;hAw!uI0+pxVZzur-4aorZ- zw@4;GzrItk6|b$){qXFInP30eqvPw9|B3wiSEX;kr`Den&98ThcQ?|e2U={R9eO;r znd?5Tx9A!gAm_flEtX$LmzXm*^l9D~uo|7RhCaxbOeMc=`VDmB!;{Ug|GD_4k$Gu; z=(xDZl<2hYM`Pc=`3o;^OKl;^Ox)zy4+F zpz0=>U;n|+O6ZItcI#~A*Z)pBbpd>dZ=f|)PJI}5tyF%!R=iSATV&Yf*B^8D@b!$J zT2o}LRD}#w{Q4bv z&rdbKe%~}pZ}d;0{Q7^zbKx^KwEo4-uTLw)3yMu*%bjmN+4KKDD16U?=JeGJzh`Ua zD;=MPOkG!u>p0IPY<@lVQ%^=&(-+&n9-RMQ;{0R$lS1c-$DU+ukNuGhayI&Da-OGE zZzdQ`ejQo#_htX;SIlDxFfIi~+2Gp9>Do&;k3jOc1llf@ZN|o!^Imh$|9_Wg?6+;8 z4f;NT4V=hX<5}D|8Airk9{#U=Jo)RY!LjH6yZxN+HSzqjzn@d~NqgS)c_#U$KNWt! zhgl;n;1j%ohOm&hl+l==6-atAg|YSB9D*oc~{`_-s|=bc^QQ z77EV(=QkHOkFP9!_W#|Y2RwGBIsKFWH&@`(A*v|MT?3BZu>39e6GfJn(X%v;Y4@F`E}iH*E6hk*6Dq@n6ySSTZ<| z-BdRpx6C10lmi4>nF5!et~E=*T+{L z?cDkQPM?2fvitLq@!$-T%7H@r^U<|tf4)9*^f@{;TL)F3exOV|A{)05{VV&ZwGFbotH35mYg1?fG}w>7tZfc^RNdh1q>sUH}#KmU8wXDAO=@XY_} zNai}xp7Vy>9)H!CWNik1cU(BrK79*kZmz7zzJL<>n!i8f=}brGA~xfU&XctJ^}qQz zc!LH8ZzbvpDnv8#1qzZQfj5JwcTA$YBECOz{z|FA^)D(*nLTcjr?Nk(Y4$QRZPI&A!29 z=Dh#s<^QGD1@QrMc8c`+>IiT}fQ$XZzXU%Xobvy+Tm-Mc<0>H*npO;}@H=42+JJ9xc)Lsh7a7%g}Ael62Zc&h{tI&Yu2xy`TGlJ==d- z1$mHfoX0^kQ zcn19uM?TFuB04$z?6&wxbVV{TbV0nc_&NR#FK;Y>mz;h5tT_blRQC0&ZqVVn(7t}^ z560~4KNq|gtUp*XF}#1D_WP$5iLsTiXaD_^iQBUylc+y9=Q#QWo$LI7$)4wbvv{Wl zo*^#b>JMt97j&;VkdJJv0v&5=CA$mPAAHT9Gqx|k{$R4_`5%0YxvsEteKG3~uuuLT zu)qB|cv%Zx(CdkH=(=U_(4tW0S;flGN7?#=+T3=V3bZR&e^5^!*jr;G@v;1Ko-fu~ zR%>;9z`1v=dLH_m{`Wb7-F4?kYtL7qxJ#wr^Wb)VfZMy0My~vNp0jzL|Fu3(;1Fd$@qUs=-%6FSyv} zgO*;d9`?NxJ^y^X{r>2hVEt8kzrSp|tw+GVdi4RoY3c*;>!h<(*J1S3pk0To1mEr4 z$Itwda4Gyrw!xo?wN>*8pXKlOXFRhvSDz+#2>nbw!Z_n;ZIq~np7o*A59z(cOX+_Z z_m(qeBj20(4n0j>LV><=_NKZyRMHN<&)I_nzu+rBI9z1k|65DZv`BvE)6m!p$K{0G=jWpKxiRxgpO5>k|g;`z9vJ zuj^QU#eKM=^o)X*6K|G&t-W%NqhesfKMvM#!ARyV(H8t_9iCkDsit=J*LTebeOU2i(QafD?ec2HSBRInpRE-~ zPvq2!L#yNp?!i~_PUzP~-z&I>{AAAquyBphIct&e4xX=vAF%zYdd>rYMu~Q-<7{2> zZNN4Ryu-koa~^=-Z&0srkI|hI?ANdR{zLIk3vt&IVW*G5W`y znU{pVuD&PPEerHGw-%&xhd|9Ph8?|(4RxrX=0*Z^pcz9@P= zz;VUUz?FI;_=&fjm)+~M(p z_OCXW``JDp;0-@zO!&&#zb^`h=$%xpt@#FDzP-FI?|IqeLiYG_czGiBc>8I_!^W<< z!1#4VZR|h(A{Wkl8ykBOZ0w=`C?OBb z*WG!y31}_9S^jP;T(*6tco^Q)`b4WF!E1B0(@tt=c zo-jHffvzukmO!{jP6XV!c=fw{JmjsFzvnFGG;RSQSl zcWa&`JR%w>UYm%bzu-Zw>3!VE4kzI!FP3f29uO=hF9yw$&@5H}2E9w`ZKAX2vH+Wm z-Pif|U;DGC`?QvBgT}2Dp$zfCdv52PYUX*pV%gLAub}2faoHQmZ(UIt=m>PT(JLw8 ziT4_~F>~Uw#nxpdVuDZnsDNA+$#H$kr*|}1zZ@H{US%b`6eeFJUIcDaQ_~j7%o1+E zd#x|KmLBpYvoau>5SMWKpW}z1qt)|?72u==8Z}2U3q)VzrMaVjojT2J?{@)+MC7>=-ukZuR%sr&_98^ z=IrZ+wqw@MgMkg*Scon)z&sdf`m(2sv@SO55u3le#n{sl`8(t;job|-k-u)_ZzJ;8 z18v~*?0NA0W96^S?pN1mPQDpimpu>O=D*zeW`2%tk!;X%<_padZNd$7h5p&xAh=3` zGn1P}uFM)9oJl5~{23U?OB)#cymSE=_FWF$gW8kExyV$kBa-=G8lDr6G(ZbzB6<7? zdlcQeSMs=p{et=OIG5U?g7S!dNC|Jn&W5-6`0C8iuQ$LSspe2-1O0D+KT_x&@|2kb ze5&_}<>PQnU0Deke*VD3W%y6w9cN!}sVHq<=L=up-^eJsC`67r&V03wP@Dvv6!?=> zT!YJix2-+p_m_+2=&Liez2EoegY7LCKe77fGv*y1CF$PyaBta?K6;Cc zlJkyKJLVX^fey}=f5gXY7456xU#nAgcsj-C6N}%#o}W2>Hu?$O~&H?ne(eJMl^Mz}c`9r+-*L_AO2Sw`Z^AuYP76fBHJn%#(N7 z;JL_!Im^Y9`|HJ{laT92d{~j|U*^L%Nq@RRa3i};PYLe%4sI(urTpq2{e<}}LC)|G z6Yz%ft1r|%z5BjzI90!TlaGr$SyUWDcHRBu*!L>w>`B;n^gy`d%Cyp*jcD`DT8 z9|c#-!Ql#U*cJ+W=_uFW&(!|NmzK@<^qKr4`QhW*_X04;o_{I{-SHV5-SMHb=hnAocWbka{d z&+7Ab>oeSm56}4vSs%XI_IW4IIUjzNeE2%)TQ0o0{J<*Y692d+1vW4qQ!VR_3f7E#=3bco=^1^suvkuNEJ9_njZ#bJ+{;$G;Hz z`SXQnWA$@Ry;nG>zkBZmzn}6QRj%hnl<$L=Lhr4CJ*G(B`0t-hj4$t>ymfqezvhvN z$@>pKGI4pYv3*Wf-ixjg;FatefwiCUu_vJ;PJVylI^vy$>`!;F-VbWP3!GQZd&U%# zdxdC(&Nq4i8(fb53sWDXSd{!&#Y+LgB0sZdUZ}h$4s1rB)9*aat%++~ z`kEKvJLBqnsTgeye!KJHV(r12{5~It_%GkEcnb8Xm0zPzt4DLvYZ<45Ij>`kPV|45 z;vp4H<}9cY;vvKZW1W%AkvMo;>EX@Q&w@+mmn1#;bM>=YPY8dSo8Ct?rjAzjrk!!y z^**ymW&<=)ElmpCr@FkFT5#ak6>U5SK0Vk|(TG{6{)b}N-hDGJcHGs@rWxmcaGC}t zQ%AcNn6TBu>lhdM4?%yOXKm)a2-q8;7qrh^%Zy(~+v3wA&wu(-A^sf<=<}J`(ytec z(x(gjc0-?y(5FXus%T1Y2G0J9rr|BbN463l=?7l;Y@}VeS>lR4kxYl^C4Ow*kbO5+ ztBq9>pLkfYN`0DG$ujzec4n_`yRCU04CXkpQn)yGAO}xYxox=$L><6a!0wU(c5^d$J4+ij|arAwirxZfc|Jw*S?K(Gx4^ zw~aoL5BWHEz>9anH+Lg9tKgxPp|a!1)ve|5oZ^+qaO8n2riXTISbt&fu{(lVRMnwQ zn_bbf;qi|h8d?GUk;!d=uk>(!9qRX~o47I@%1nFDozK0jGT`Ou@44c+6ytAUe8$au zVup#$jA{EIZRNX(w_V%y^0VNrlxQY;EsTK6)}|ak%i{k`{H*)-Ph5w#dpv0LLwCS` z1LukVE*#}Q^g=fO-VNOFVLFO_kc^B}q92I$!WWOm;5T?7t5=8*VF}ku1&gO2>ftwJ*yWeIehiO# zu!~m7C6UZ`#k<~pw@jNY+4;m(c=e1{6NM`5Hx{B{073>wFKnENK)kEhr= z_v6qn(FrWzJVy_KBiU?!O`H_Ypifb~Qv!xRx)`45D$~Bm#wa`y+Z@SUEE-#Js(2u;8E#6*}Gh?ZZO%lGedv1=*JE#m zho!$1Kf1bD{HPILfd}&I?cVSk_^A$>p*!SbDIa^kc&tXxM>4F3d*rhjzRb_VR`CqK zrC9f>rXX4n=19{oJopCAv_2NN6jRlEs#NI?Wypz?RRUwem}wmIxex0u^HFYPcNX4g=$|%8yiO-%*#tV ze1N+&xEunn?mafof42ZVrGskG_jT|&x%E9(7lrsU_GmD$N4FSzRKg$H#CV$-Zy~j7 zyDNAaJ1s=-RYJK0*>y#8})z3lwQ z$T#B}J}6OZ`)8&2qDT$WpL_E3gNf`1XHG-VU|2a`OJmi4Cs%?KR~-I-Se{>X(P-SMR%;t@Eg5&~RLS{`9~_nMnR@5_ zS&(lhJKJW4b`6s&man^!y<@}ViihF%r1UwqW(Zy^rH>|~C*J>^6858ro*1*fi3ahZ zTPn4_DG^UroCtinTwSXtvs&Ba)Z`;qe%*QkdnS6U424ZxNc1sva_HYS+M4&);a8aV z)_HpNvZtX@3p50$@0{gg`z;j+KLc`t)Do_417|LCo39nBi_7CvmEgZKYwj#e*@heziZxcdKv4v+9w z7LVx4G4KCd2k)(9%y!0H&HMj;$e5nIy7iaVQTtBv+cNNtY^W|g$@9vGr|ll>;N5BE z*v#O=lfCvgC%4E zSmaCHWA(0lDg7D!Yu9(uzvHg&`WSZ$us7@dfcRA5X-&tr;ZyCvr`pL};9dDjqdpZe zjLqP^54>-QWIifdifY#tc3K2t6>ULEMiX3@KfYkZex zp3m0J(oezlnvIeF;@h755F`HuvSQ@J+J|6`R>D4@PfWca_%||uFBwBW*9&%dJ`1~x ze>DPQGd$SBC;COOX3q%2*HgSeYvw~gU_S7^(MKzwZ8LOkfzFMQ%ngcld%xxS=q3Ea zXbHVC7_3`A@8hG2@v7l5eghL9%aZXiLBlLk{mh4BgiS zHW?p#mx=dT*wXNdV&{t8X-$Rx`hzY{gx+(j_-=p1gt7#&$_LDV%C5K@_pbi2@X@>Fdb#>2QQ4cd=~g= z6y4yhG4k31?xWxoy2rs`R$hTUwgNmO>j`i?{C#*0IaMAa!C2DgW=#lv-lW*G_nRNL zX|2Y8uM1*|X5B}hL-aXJpJ`wmfdRxM9{J4mx(RZw z@@tfHF}^-Jk~~RJmplc%rZcg&FmF?r3_g9m`s@qW9DSN-mK~;! z0ereRNlqMX0{U;Mk6UN2tp584k5{tzw)#)`{1?z)y2tuU!JZ@J=1lyh-w0n**MDZu z5&lxJ=coh>(s%C=AFYEPYh;hl8*p*+l0K4&UDs`|n67;ab9$fqJYq(Q(Y* z)Vy>T^pWn#_mRF!UB^^(+?nXBf8IB7eKjWDW#xUq>~}kJc|Y;<3CKILdDi6}9pcOT zUwtoErhR$;?*qBN`F_^$?7aB;6!cLEKP%W*wb1xk!M>^~`dP0kM02ZW{P&+cW%bK| z^7Sv=dTdJi<-bIq7g4{wPc*mw74<*Hzk0p+c#8VwSMQj-zWFIW(Ny%!0QDPF(Kq;1 ztShrV)jen1r~2eKC$6L3R=^(_F!A^T`blwk{G;@v&<~qpe5#4mYvN-mR;2Z?_E>BE z9IwSs!H0D9nwRMwGNoLf@_(w=)S0gH@M{wCH_$<lg<;k?5iy{QNZdQ{B#AD1Pt# zW?*1^6K@ATQ-&{}L9`EL#6~b){q4 z*3))w7{3EpbLvXrbL9mL4>d4vcp)cNHyH55nfRgS7UKURvAWl1lwu`bzQupDE_1_+A`dNWcqDc=o!DOBb0UXXc@pnK zcjx~qcc6HQu{pLrCtajJgKy-<)s^Mw#!|ICHZJ(de=DvV|I*qqUq8OL=IrRl6gtto zo7p>qquHJTpifiR4xbd&i9PVl$OSn%@jB6u`=dG#+Iu`U5uIpYAZKV`P+fZo7`}NP zJh3u}1-}R0l+GXcX`u7PzwdH;a4oEgV{W0f>(6Z8R$!DM4Nlh0hWUL65bq! z*N?*MPG5F1_k4XhMD4;v^kt#8kJ5H3`f`IiBLRBe32erXMhD5>$}g0UpKo{1M91#l zTR@JA=-6wlTq)M1KNp|8#pG8n9j)C*N5q?UWbZ9!Ma7y9vW_`RNI&~d8w zjMp(AYEM$iZPcobt%0qvIo0kWHJ`*>mDBk|!8sH@&)?MR8sC4M^NGNBwtf#d-8n_V zw_m^4{cT`IKNhOryI1o>$Hu{jVu7mRGiRlsBa^1yW4b*PuVVXfST!F(y+=A+x&0T4 zH~ReogX~KJTQliB*5KB!kG;MS-fDoc78_89Y>@lh?a|!Vr=MXz=D7amPGojBW3Ew+ z>@;d*spr^7J;xyR9Q&CEcrj}Q;4){duqS1B_b12J$lB+m+f*Z~PgA#n-5gpDzW}fN z>{K%UOxfao=ud^;E^vxoF?*cAYmN>^zDyn${#A@Qv6OKZaSy(gA8P7Je7MlL1}@cY zOc1Ul^Ul$?z$1S--Nq;9UaHn#G;ekO=}N0_xv$*6uWx_ycI23Lah}mSO8pwY8NN~e zP3s%upVH3g+Z8;wfc}xSAF8I3`>GR2w9~hzw;T1o?$z|WhUeFUBj)U6TYHEK;XbGS zqnO`U18*>Y)=Cc!7daF6bKfYSn;d@@ssC7!&#zH`e`bmL3a$IAnIE=HwGp>_vMXOO zr~a-E`T%>3IS9`QU=ki&{he9obDe-++GuO)@8C~UHwHbN9DnXHaNEpv3%C`Z(XaI2 zed0~{EKyCr(52ng-~pc*kG@R}9x#}7KF=ASD_W%P!s^Kz3gNRq()4xTUkcmxzNx<} zah}3D=+_DTy6_LfdHXgyBG`TA-xFk^d%;=-Oh7`TDa_|wegAh;w0ZX_L|>moUx%kR9ovt-K7hVH2>i?=S6{PVXE(Ur18(hEm(F?xIjV~Q5=bwNEIo)+xQ+NkmIowqUO4#wPxY=|D*&+ZdzfS)#V-N(GP z&}Tzr@_KxNaES-9KC^`}-43iH)ZoB#IXZl`r^DNsLl9#yKJ%(up)2j&+EV=%)Zw%< zI(#K_TtNTu_B&Kx%YD_3B;Y+i{{20@qj@d;cJTZeVG??$ zpm!R2D<+d_hG&pP?cFLwzZ_d&={Uwet)UP4E@ca5mg4y$wjko!0_U$jMT|`EbNWG} z{Fmvu@^AzkCBe}!^E}R+76ddj`9iIKj@Z2TJHc;KXTP@m%+*X~e_Q4KW_6USznga( zzd<9@j(kDvaHt7cc=-0VC7Jc)7(=0JdlQF4z31P2lJ&~^rud^g!ye+-SbLycWi$6p zKhWItLm$dLjOph{sQ39Lwx2`lr|W?$)K6U~quMXUEAG0AH6Jn(-^!f(ne#U2i9U$W zT0W4hzI7lz3;SMu&VXc1u@AS-f1lcI{>TLzMw-%7h_w3|Mlx?K4R zvEfK20q)|*;TiCD;UCbxi|2vE%;#bcFX)>1LHa%9{ho)nFV6s1>u>0NILet8`*@Ci z6O6&W>kMnKhx5;|`7>&W=7mFvL||1o|xNt@Zkh&$?+KRrAJy+do|~aOb_#2DFyC{d(rlJcP%@fk-BK5cxbr9bF{A zg%7jhKh5A`KDfBzhM?B2eiq+358{fd059`z;JlyLd3_#XPwCw9rtBD9;0#=}bFL3L z*zCDJm)m~pZyv?*{F{S*BYdd+rswH#ksJd^Gm_@ccoyXZ86yHDFz#DWUGqtOzdDT z-{`Cb*~-<#N`}`r_YQZ4GOBT`gttbn4R|Z(nN`6vm9|~BZ6vs_>)}TBx^iyT)qHn2 z`WNA7r=#CRxj4cXDTSlA+qtfWw-$K3H4JYZrEP6lz+3M{u5R(_o2i)600 z?JCd1pQO$3x=~q>-H$DRPuHLW)}jMCu+i%x_;M~DJH6mL_!K|6ZqHbM^3|NVZv01E z&k>x7IW}J!t&C)DoW+>PrOuUzR`IZLUqCy97J}b&~!-%f1bQqpLutH zu@5FrgbtRDtenMj4Lr9fl!?{yiM=Y6!xY@9uaCm5_hAI_iNN0t@?m-Yu5861D zhuS~Ybgci4O)+fEFfbmakN99D^VnhLu|JYIek784JPAx&fN3i{(1(v21~1Eixx2i{ z`3dqpQ{9W3k}JUNV0lw=6W5!0eka$vnHT($8szsDuEDi@eEFP-mHgHYPqZ*@cyUvZ zV+hs-K0c#o3HA?{m4JN-uth!CySVNKz9qmO^_DuLM7{plKEDtLcZey77gR zV{6y1^7uVbMc>toS0q;ZdM6LvL4H{8Pk*{QFF)+jI0?U|;Ma6?T2q$)HP5A%|D*7K zqvSfs?Z=sGte?3pjbttr|FYdrrgF&o$ z|JO!!PL>8Wj5Qc(`f8!|#yI*jkt`p@w}s2-n}y)49yl7n4|q{5>7oAsFH!D67wOPX z3(w3?KDN=J3z=UVup}2Z5uY@^Qj9(d=}+j?BptfhpAR)4hrBri`qajQsHZP^KGY^~ zqR?W9pWIFj4o`qg_ zE3bi!m^Q>8)#e=fm+bAO-8b;hHTRpCdv@MDBi~7F67X##RMxZB^#gAv7_*JGi~aNG zpuO7Y4E-3-WchUhIp7MPcdLLy`mhFCAdBvNmZt_Q&3gZsS?|xxUGKM)W#ZAYOkzn{ zCb_gMlUi1mNiQ$U4E3MWG~8CkyK%}g$HKFk9$Q_OIliVW^Z44b%t%yni4V|qF=q{Z zwoopZ^{2@N1ZSKL!Y}*b1$17#-r230K|Cv5mN`{FqqnOoG!ScP1(sG|Y0dnz;+Omu zuLQPPzy^=U4nT{8(CHBUt!1tox#z>bk$do{tC3MW;Eo_4{IJ*2Xgz_&S|XNtL`fSa>lzgAy{ z%zE>C+g|3^8G10jx2#Du6v@u@4<@@p4<`5C-IUx{)})xM*4D``?sss1ANTi^HL0FV zyc!|@qIX{~$6a=g!JfGib9}sG{ew?*L>|~$cHSDDop`40MVrT&!xPX){OaDpw1Bz& zQ(5Q$vFZaS!si{RdVbSqKUY@O^EkA565e_O-V&Ve4|rnN2gqMNzBiP4VqYjDm>ypj zdT{HsV2y&`AFONpWiRIpnD+(r!)woS-Brh0_ws?qp~V)~3SYbg8@lIiVzf(}hUn)_ z$f0nY+!--^bZj;F-;FHnftJAh*qYYN@wKg)^}K5emnQ;qfL)@0z2Dy{CwZoxXBP1LLU7a2%Cq1J z_@CGo$~?J){;JKR9?C9Q>g@n|K9tPxS-uHuU`tCC_ALnyW!pYV+rzXyBDw(gvewMda&Vf2ABR~( z9gkpNLfd2EitUe?oYS=J$4$;@G~YB7o=I)MIpm^dZ4dSTrZ2S;`bNd`7Y{g_l3QmN z*p_M3&Qzjt_nFF@| zShSV4tN|BAXiMzOdtcjA;TgvMUfrbp(>b~J7rMl;y9w-W61$sP0j;pRLrLs!JN9=q z_BV?C#qJ*OKyKD~_ICvPn=EL5cUk)z?B&MxYOU{ZW&FD7qf^r8I`P+I9oXV^XK0HT0e>U&Xhsg4E$#w# za_?DNypU%a_#GSkL?ia489V|16FaakJDFowgy(M@wZ#oQw~&8u@HjY-EtcI#v5xtW zKC#8=9mqO*QL&jc{5S+ZI(w|=-pzB)Ca>bV;WuoDUnA-IY~%NlE#PwmdtF5KPJA;@ z_SPV0*wi?FMq&Z7xCS}vL{CoFr;Z}87^_{0xb105Hfmk%V7y-s9p zmDWjznLjjkaf@N-n#5;03O$cO&lLJx`ObIWO#61=!>>x5Kz2^@56x2ePstAOhfk0^ z!SzYt#&1aBH<)@yY=3eozhnE8_y{R{ge0^{L7Qaz;wEBsjTNE`cvnrG!>e$v`v&*? zrq47sRlNRg{LUkxX`?ou`-5%;k;yuB7d1gfU@d>V%vD?}8GIranm$BO;$biYw zv9BbB92puQN8*ELpiN1-KzHfNB>4X-@f+idA%AgblYln83HY*$>u#<$q7R^t)~Sh= zt(pJt`^eu~XlKV8@ zaVPgjcYag7N`>FWfO^wsr}eeNajs7=Z*=<5v-IoZWSINMxd%?t;3UO(DflDZBEFe+Al1ls=AgA%s&eZW zS+_K`vPM&WG7Y}=g+foIxqp8s@<^KB+&U`V(%J-m8!zNJoi8BXTlz2HW^CYN(2G%KiQ$C2m1jRSWNaBm7_6hm_K&-Uf7wUG4$ zvYtfNv$_Gh8ed1-PUgJ`e(8zO7qmrZe^$EUFuxz+cXWsAdtA9*WaXOvvTYRigm)D8 zjCC-^I>zV(x9Ej0JAFXAZuCJ?a3F(D9-sRto zD4TiUXfxlTe@oen<42L%qrNPIg9*uUGxMU4+jdVumUn|QU>gP(IkG%KIuwl=)S(mV znfC(bxe%N*5Hn!!sNw~4cb4!&>VTylTrG&u4*WL|FJO;g@^o-kj9d^ue?M@s{Eu<+ z_Xp9NhtN}x0u%CmG&#M=z2jJW`jnrKL+=Fi{_y8n7q=*OWzUJ(2Yv>D3A(43(g*xC zj9i&^OKG=^cFQH#-k#mTX+aG|@{LWePz@WgYWiz@h3s3O+On=8SALY=lZ-ul7@lN& z*;D1sWmDyQD_@T9das{jPi{hPHiOeG;078U@8f?B*K5IX2cMg`zZu-MbB$g;wubAq zJk!BF;C~GGj|0D1XRHS9DE%!#zj$*A?5mvv@HyPPb{eq2!^Y=c5y_nMH{i<7?N-fA z{u^_V|7Om{fyXr;H?g2ab-OSK_?r-CMKmTofUm55z?e)-lst~^<+i1UXe0&SHFh@O;>oi-ck7r>SM1q`z1@) z$EHp&{z=Avmhn$X{wkZaCuC#=wAGn?$D!kiNG5TToRV_Y;MCO!oW6!yD)?ih>mup` zY6gJE#d%E-Y={-+<#1-LC z=3T_aUIwm&^E;{aGyXk1^AP)|L!qkPpFR3aUy}Yzzw{|zEopg0`90O1sJXaupjmW_faFPTk!;#F>^3{$2 zUlN)Q^Bed|uI6`emRb|wExi_blq>B0R}p#&n{})9));+Xp#RH? z_5UdSABG2^`z7n?|5S(=ROFGQtzP33#nSeLl;a>CeD6 z5^0KogCJ%HtsgY-NCp!Lz&Bn zGsWr)!+l?|_MRR&SM8ChWW9yEZ!Fwytyy=y2mcMl;jiNzXi?~Mcd_v|0sm&;?+ayq zw2ARsLZ^MayY`Ad7o=M^?KjfCCzSa&wQmlcrcU_u+_|e>8e35U{#60rFQVUKe7~^R znClp`lQFwOnf9%W`7GC`3gcZhI0fNeLz}hq(E-1xj}u&<1o!A|*@%R#PfD72V#W6V zb-O@{!}I>3rgzrc(S<8$+s6D~jtyVVcfmeQ`yejtZAhN%`!TTn2me3f z{{a6#j^-@q6Zo?)#c_RO^P&z468%pEfUalj1FninqkDm+>{wV=d>&m*W?=nEkhN z%${rT5a&P8N8w;C;648yJ>P8o=w{B(mfdELgVqR=^%(b#+{-=T3>+rFq3odG%hs(C z=a8S>&bod=b!+IIIJzs*FxuB&TuWVVSbOMM10&z67u38}10Sp7y580V+C7J&iRhuv zqVsHtWGcM*T&%vhw0Z(f$W%>3$eIw$oVOBZUOYDf{lO=)8rw+yp5_D0acGu+ zW(z+D{VYxs%qO`ipx^DZy+duSOey|!YhK&S)YjmJzTlG|$!XeSi;Zl0H)Ok*1F!t6ze>trd1}>$IG` zt)FJy=k&ee4~B;DED0qe2jUOW{1c+Ng=en4_fz>B9-j2v6?(1%+#!pJPH^SJvkadQ zfA8oDd{+xwPyI|pZ#j5Uj~su&ACd4Bt-{t%yhtPp=t z6RrJ#w_F5&bmy&i9;Ls-^mim=@SWw49`0>|KOW_5^KXM21%J+8{@?fTT$jfmjG4n9;6C0J%Di9v z;lXNZ@u7k0t|!7DA)h~>Zyb6i;IEg9Kad5(AMo05#S0dmcZff@_lLUYjjd-}InQJs z@9~izrrd^}>(g_4fOjuA*cZy|`#9G-xZcV2ZvGFz?}LoJpU<`2hrbf=S8^w7OwOf` zH;1zCVGT2eexJ#weotYeHgGo0r*48TytaZxzb6~%2YyfS-JF%MR(U7Rx?jT>jf}Y? zlIg-u#ke2uh%hcNYz2mXe%}_#+4$L?Ui%z)01>&}a}d34Cp zj~nT~2Oi$Tz9sSSO2%yG9&=BAmiaE{dIi_eJGn29|KY<#H*NPuGUw*C{l97(rR@@) zSsKc05MM9K=YJc&0*7(bn(9&QeB zezc_&-_OMNJclzEW^G?=d0p|dfY&V#R07W|=3;q${Xnk1zuDt;xdq~PbN)}c_A*>H zdS1~2`dLUn4d|g7@VEfnER1j+$t)BtYq`h$z}A!n_Bn6t+w;bj4-@zwH9`IP9{C@a z=w zRGc?EN9HtNcxTLJWHZJ*=Do?*+HD!7N8N3qrxM_F{zDbn{$fj`ncEA|Wf}Nb4nCFx z{|XELsUr9oxheCOeE2=O#Gs4tY<&9FQNurR#w~*{+`KMp#2%dx?t?kBVQ=&I#_yzd zWNw&u2z+jI&-2{Rjm~dAaV4X($ivJ3nJe8yjx0`&%;+rnpH64>(GH!U_fb7GgZm|Hnbq0Cj8D*KjhU+|LUhhF^MwsKD(B3=)!e^X9de*;Lx*1 zPm;rnlfyHxyx)W6VCcd4il|wGaJIrdY^m-2o5;z&X9lPDJ`IdpLZR8GPrPB^bbIJ0 z7gFbXx<2%ia@I}SZ;>GPXU1U-79$5}#u)~W$IF2UdXv{n1bqIr+2R?V*BtchJldE! ztOKr23zy(^ID&>{#LV*fFMg!l$Qk`-`%_=))AUz^uBZ+4M7fXiBfym`&m`KS*!y6u zCB1Csy#Cd_r#MTZ(42qzKrrVr=ByZ`;~8_7!U^sj3T0I5s`K*Q{Ivfg3y+oaSw6hN zzk^r!=gf(X%6Zerr6rzIo9r03S^S+umz*eXLPzb=`53FF%b((Wj1%R(Z-lSS`4~x_ zIk^78585%rPb2GqnS6rkqer?f85kkA`{W_c$YlLXjn14Wk1THDyQy*4^G_lhhsiPj z#|6|zM$3&~9zOyfBqN#RF!t&=whDX$*i@J*b#|E3Y!N)1)K4c=Q>mPt}Wm0C@{eGT=={pa-F zQ56|Dl{}~S&Kf@JXZ60jE;5j)s^Kh%i#cQBl7X+De?%-4TRKcEn6g~m|uPcAZ^Koh$5>en^0{lyXpBlWO<;)>Dv-g87g8iJ{4=v%d z{hZ#8<$Tir2U|h|>iI~q(6B=WQ9V2AVdT{etQhJQ~B4Z?ImpEvBV05*7 zOZk{C4*Bsg_`YEMBlBm3wj>sMI@an8qhrw-u{G=`egK_;pDCT7z3K^IOTlX~Wc8W) zQ18?Am-PDj`|q$}(%&ZDLd{CNe`Zr++svlqj+srVX85mrX7BB@;Di2`@EPLV6y$Cn z{7V1Q+w-t(S-o`}{d^f`lAIg*a2&fXJuQDp`cdmh*GA9JyWZ+5>-UJC-0wMk4wpAQ zJy?|k^E2R4Fpo3?2RbaiyyC(5I`G!OH8_Yb;!|^%jMbpuYq{Rc_eMTvt>Ao}+Xm9L z??4u+%$!bzXZN;Ohv4-fg{a%qXufH=*x!{-gexWsp9Vdb9 zii*%r1Xq6k_hZzb)Z@!cyX(&9T>dwF*A>qt8LyM^Zoi9M&&LA!^v}hS5A^}s$`85| zc&@;=*IZV8l(mj++x|K1!L#T###dkMtJs@(AoL*dhzH}(w(9&Q{GIE1H@6^LCj+~$ zX9Z{eSZ}j%;s<2r*|G4y&6x6Y%pP6*qX(&talTuQA9jP~yPeQ+cX?)HEw*Gw$izqt z5ALvWZTSy7?X!LSzIN27n$P@no#5Fv=CgQq@T`%;-8{R;u1S60#o95+f@(VByJ^3N zc17g!UoDS6dF@Cx?yoV;{DApqtdSD5)%X$o%vQUkA6MQDNl^M99+phM9=JZCPpXQo4owb?}+KkwNym(nlwK-3d(Z0-ko@N_UrMQX9)N$sXvvF_cMl z2mIpdW4fpv)xOqx=#t!s-_pG}(|uR_bIAo|S$^$`gg%_yv-OKf@b(8htNnLL>h?62 z_&GJW{=p5;bseIwHSRglT0E6RUogi;UCZb5+a-b7Jj1x{s&xjwUqV}Rk3P-4{hc9sa3_g=wCpQN?Mb2W^hKH&~>vUL?rCFoB%lbh1`gsm> zHT5~jy3@~hQqLotrL5fKx2be(&<)u(I$Ns`ziacT?8JZkOg1*>cp$4&dYId$vdo=V z<7dPB+22FcvfmfqDLx22m1J$#u9^m(Tg;k4^fh)L_?m%p-YQdv@l>4W=Gk?ep^J?n zEc0mO###JM=opGTF#ny-2fM0w-nHO&V_D`~WubfKgAHM$9t>|cf9hU(K)<~IpBXAIPVjj9gg-hN8#)!4(Cnd!KttK)pe2hnNU7IS}bX7_yNv=4nS z82J7P&fQ!bI;VHO?6(J(TdU6n_5{zi0lU%3`&rxKL!=Jyd9W<=<#N`Bv#WdWu2}y_ zlKnL;Cx{pK0mGK^%-?9Ny^N(exv}vV_74B@WZxtI7}&0tfg|a(VRZW$&*|{!oc>bd zJjytS&tOhGo1N1UJEtU{!)8to^LCluxSi8E-kjPs)}h=vJ;0p)w!oa;1g+}kvj2Pu zI%+9+T!!r>C-v9;#OaqrxQG9^ERuQ6Z%5x3s`z~HuF$dP^DnNXu3;8!8t7+HD6_bV z@AbrcI0H3NA2IW3#qKZ0?yLV6;@vl6^InDQEyliTzOC3~_69wu*uJin=hpe$#_w$e zPUTth`vOkam+EP9`f4uH*8=)lNMDWk4dgra)`af)i<%|DJ~HtGH4#H5UKcj!{_BkC z^@^=hFA`%u0ne8kp8qYl&G2t<3BM@kAv|6oJc5%rIQc*Dkjrn(oTmK7<)itHI@*9I z;V)6G_!#)A&cj#T=p5y5yE!ffU#hR@1XuDG}R^nLx6|9Q|E8`>>*PM|EE*;FuJIxgjI6f=__jbW;=hh{-;WHoZALqd> zUipFtvk&i6(cpai&lsL5eLjA=J(L+@PxJ7aQ0C~`Q07=ifPXV5@j5W+TzvB`hpvhN z<Gz1Dl7HLyv?yy6?ISE2jhUOwT|TI3}ZLYC;m z$VoKFE9SJV3fjKZw*3dS6`$v|ar`Mdw|H|cDo^HJ%wylzG6G!ES8c%N=3~}G_MVxK z#z&uJ9t0L>zDY1KFU_Z%`8c0h`MO}8*WCN=S3pO}ndS91&(6xfR{Z5WYPz(Z)7ciz z{?ElG%jUXvbA>NpH2AXbgmLg1*uaZmd&I)_PQk{w`E7iBo&3tE{wetW!|=Jm`6btv zlfOMbH-C#S5XTQl;0GkJi6hJ4ecmHBGNLmQXAH#m+xX&*z$87w}1+?^zHUNcFU4QjNiwCZAw_Cq8I?=QBDZXxBX>Xg4?` zXxB(P<`?|VbLMwG&F_(cRNwT0p{V;Ou8&m^FQc{g5^_{9=(C`%&&?ZW39 zn~=qi;yw;Pjb*v<*Jgt+6RU8~>sjTZj6PY!^IC`ToOsFbOLMEqrF~m5XYmg>Y?gg` z6XSr#pdD-CcZQy7eOdXfInQ7_vd^@`v#a@cbiB=jvw`!-W*JyFw_FkW@E_u5oMw$* zc3EU|%k1F#3xY@2#8&nD(%||~OGW6z@W8F}9lY&UPYS-(ZeGAgowc3|T>zhe`@`h^ zJHyxXuC9*^nD5bRdf&Uye(%1fcg>>6z;OTcfnz%=2afNaI30k|#D6tba<;`;F_@?W z*K{yfS!9G2c`-SrV09Psp>8b!v7v#Wnu?N$|9!wWc4W_vhgvsvXIbM~; z(>LcfW22N=uf%3```LqaF(c~ei1?v(v{@9f{< zr=m0Y&FSgkMXgOsu!R?+2dyr7LHI9T0$#zHJO1?!hw%UP4u|mn^^?Y7(ebfA24CPs zaG3fd3#;tFJhzVN#0GU)A4@jE#dRC75pzfT$l`TjYtt}z7H)kS%n%J0OoRr_9uAs4 z95nyW;h+N?tUEItX#SUv$_KplT5n#j_2%{3Nzbbs`@Zt}K>r?tkIgmjvyi=iS8#o3 z_vG{a_7?oS-OP6ne%@aEynXm~gZO#-xvu&n z>ONNB=iO#}ygRBw#>X?h9zL9Wy+jXwqkJ`dz&lhsf{$l>J@Y%YBb%nKY%GV4qk8x3%Z9-lX1H87g*(U%$+&G+t?P6ft8Ex;(e zCC?kj=31D3&U2%*tafumP6 z8(3YPll4JNuG6k}^Viw(-<*#T$H!>JzAmEnB4_&tMUS6JsG!+~Bg->0fqz?)$DH^wq_D+ZJ0&Hs}F(=-oH(>y#)n+l#bx3FH# ziI3Pdc2>_6gVC1$z-YdAziKKl9%`|E(zvv=c-v=T zLMOmqA%{2kE9BuVG&Pv4U-T8mDyb_h&;PZB3I7L}>I_Wgd$i8LWWIOTO$DaSE%+cg zy2AQNj&n?DD3=3K2mso>DMs7Zsxa<`SdWqP0VjI^Xt?6-opIe%KYB;KQq7U zy*v%^E|VV$Vv?qQ^*nq=hYRE5QvYFcLTkvaQSYQ$$!vWe?TqdtR@sWb`(~F@D&()$ z5?c#fe-#@eJ*Bgn;GZ+k2^Gs(-4OVSugsB!mwU4Ca!(dsK51F-{nrbed=`W0`T(Zs zIWX0FFx7f6)lLm2>%V68eKDA<&WO$Qbw;@dQ@ICI`P5*t{_3|G%kWAun5@6LCkLi; zJ($k*U^;gyFpZxRDh8v~|9@p+4D|mZ17o277a14>{l91`FlKW?ADSTE-j##5mw9-5 znTNNRO${dNzmCga)(>mRf$1U-ri(n7E}9xl)?b}F9-gef`VtFMK)Y9Zw0osTyH`#H zrmRo>5vSjXsY>5n5nLZqPFz0FcU_FN7{9rkQO($#(XVEbuc$_+@>{v>XSile&In&1 z@W~I$7q&jR`91}oylBn9*qAWmpZ&aB(eYi*2)qctCTC=EtGb13&WOD$yk9M-%PE#K zqK_YPmTU|ZG9hOm88G5$9)#2Qzixx_*Uk7H1Ms=_wFhAR^zX&i{Z_} z_<>Qp{kk)Jfy3LcJEIpky#2bf`+}+A&91HAG9KQn|94XkOmjV$=6W#Aof=H}YwL0F zR5uC}{1xaI!)wt%znJgcQ{;J@gBY1U4u4rZo#Z*Ktr;8IReE@;^zc+UX*?Cx<+lZE zhkwY=BlvZA%UNfxD3T-4nrnpfVztJa>Y8i0mor#l*MtqDb$A0gI9ll8XrYIrg_FjS zzvlX!qgyeU?3(ND9GEWiV7knM>9VQ8l)vUG29xEbwj7wk9!y~mrts8YvTLr_kB29_ z=DIEirt>_Q&hub8Zz?d2zve22H>*EqjKYXs2tE{wzh)H2*r@9qj`1(9b2!GoxNa&qJ|vuK zU3JNLbhj{_|6;(D@4ptqla-I76{B_~f@MitjyT-$t zwWS}(foYxx(>xERc~gTa-+vtkPfJE&g1>@wKRN;a3fBGRd-vqm{l-pN|8>Cx@l-ns z6SSM*;c144rx}yS6FSx94CeX!K;(b&9)z>ve->Idc>X8*;5=J=wKvDBy*XYz`8j&~ zK)&Ph9K~R={^x@^FkR}wbg2i^rBj0`-~TKIla-mxqcFjrWez6zv&_MS{wtdrOxFMW z)A8_R{iyflz%zW-SaZ&pV~Mq%9L+1Fj3ecd%>`)d79&cZ1k_Ylup zyj?sB6STa-!`l@e-maJm-p2Z$#qeb9>wmLWwQFTydWi?qOFWofGBud2|9L2XUF_G_ z2~XDl{Qf9R&@QNFLk~l{pq|Zq@19aUTh{-aQp{g4m+(K2geT;Gg7>rUV;783Sa{_V zdj2otXY(rPm26%Gy)yZ{O40FM%-`lnipKmozbDT5J!UViAM;-b&ga^FB6+!#Vf_63 znEzjj28#KYUIT!GMvwO!J>GAeH1AIt2b@_H=PaW$!GY%gEP1O@nGWjp0-q+R*9&}_ zDc0-RwZ$)$Ba=T-OwZW0#qT}8Z35Su&m7lZcrkFDzh)|iYpc^cMqxsKzRvMA`tx;; zud#ivn>1e=pVqFK-aa1vtv&t&3)3l+hX`VO=6f`V?V0c0Q;O}4zh)|iHw)w3QM{oK zW;?v06K6ZTp%Z6M4R3bM6dn(6*8h7B*&3DQpbpWf(nsb4Ifa`nq}k9N~N+D)H4?HnAgR!T8__PLo_t9Eq9 zYX0qSrVi^|8*^uGLaec@Dd#uVT&5lMYBBcSpQ8S+tBbvFQTy3#KL>-)IKRgia7I#l zE910gUOk&LDC!w+L2wqpx4mVZAKegb4s(9MHqQ7QUf
              1. Cm(u^|6|BQn4l1-(vgtF6Y#x8|Z^~*yZ-|`riGsOZRcT z>thamz*|G)_S0d`Q?BG(`e!zrQ$? z5q$3kzBdA&JKJj8Wz_2NY#Yz2ozCS=h5zz_R0E%j$};QAd0*!DL%n6wg0rnY{VUG4 zY6gcb{8xd`Q{-eg%gCJb!Mne%{r<_m+Alucw;&wK{QYH-%$1eF*;c>eOqKoA*v+=T z9ndwjKG$A0GcOdtZGg`A^tuJtz3|o~-}0_tcj=ceCE! zbN%V__X)mJywA;tZ8Gqk$eW{Z`WXMm?0wBw_|v;M+*ra{oc|dAzqBy?yZ|hE-qG?o zo>e>D6K$X7|D?UvJ<->}a+>e?wA3@Ar-LPB+p2#Di=NTH_~TdnAGXhkra$L@CosBm zYuuSfI`1cX&*=Fz?rfvCJvn+F)l-9I=KPw^4C+j<3r5c{>Oyv@-yPwcrjf2`10##L z?y~Xs|DU|~fv>u{@Bcr^P52{NRIpg1CJ;2WxZ=Kai)p%YL$K(uqaC)mr5#8>w6vog zZLy7OqQO!dSGbM8W#6T1wA8XdTd33@-&-=X3`5>F|cB^j(O>ArAJnSLQ5VZ`Y3EXs#Wdd*;@0S;tT=S(-M=S?A~@)}s4$ z?w);By4SgGJU>Qk*~IKG=3Y3&zHit5gLM_rUUQAz*O@8lin89p>T*-IZn!a%X3RRv zEKw89Bsr_f=Zvb7lZ9$CggCy<=)m^jMuYp36ex34GOlx5q@Uo;io#(|6q@agMSctS+{A)MDgF*$J{DU9k@ny(I)c*f*F5pKq*8P=6ik zvvaw8_$49u!5Tt7{0YR*IvZ@hH{on4=ZBj4Aa=!^ zFM~}Meazl&YkTu-_LJCN>g4RTAK2@Ujc2djx)=IV{PrDZpJ`Y3ng@+-pQ}RS5AyQz z#y|5cU*@o%t~dGc!Q zb^dtX6lyOxM=Y;B%?~GLuaEUv`+TPzkK|ovZAf0tHD_&%vd_b3p%1Km&hP)_q5cQ! z|9So2cNX$$?emg6ddv#J5B7ED!S9?fy*vBRmwEhK)Lz$x@D;3qyY_^`bqmh|U)CPv zkIPaYkCNNu*WYC ze&@vKY3u{~G*7;){tk`jsP-vX{Y~sW*s~C7@94UH6PD-P{K~CU1^B9P@SksC&%r4B zu<0!5ZS{Ak|Ja|4Lhys!t5E-+U$^2c=sj9rgP&RlAN&OI_YnM}>xL&bKQQN@+4mS%fczZmQKcbpyQ3b?t(;;0&ZtyNqjMeog>uP6$?z3zi3K;lyAW zp2Fscr*bisYYKSmt$~gW(Fh#A!?h0%gZ$)B`$yMxP7H^}C!{^;@ON4qGCtrh48afb zOY`7wIt%y(bGQJ1^BjC=5#*AD;6J~vbHez`&EY1G^dBCMgy08x?|JYyO<1Q)WDWG~wq4tihTX7aLZ*BHZ;9J>{0ADj4eDD>Vs}q9%{JP-@>#&^74)GKCx+DZY zI8QYX{>-z`DFrq==)V_&ADoer4}Ze+$j#yM`#&`VKRCB55B|c5;YavB(=TVwwSMO2 zc(uf9>qla?W{uP&RN#u??)`JLa(_hVy;rNlxxvpZ2A z&3t4kYdej=UK+%MSu5M?zL8Q9`i5|W?YCJg8*B^Kxp+rwWn1}PYj~}!2KjbtWrE?> z%Jgj?joqx39RtQm*2?l=jI5Q71;edp{R3-dN#4z^XD#DQiphMdWjX&>cv{ce?%h5; z_I>+Zlb`;K^(^fx;taCi(3lr-&3e{@<$PxWzaCJ{QDk0G|Xlr zy^a^>M3Di`kvD6>@Um>}n;56Y5?@3dANnU6iRDx0eHVKVxbI}>8vu!F`|W`K;9Cnh zm`g%1ksZOjXbhOm6~H8)O5YV&GSxe}Wpzy~1#Eo-Azn$_)o%SDXroxa_`b>+`{i&K zUgvr2z7ZU{b)LQ8+2KH{e&vXZQozJk2BQykWO+rF;B%J^!oVK6fUcIrpBj z#Gr+L6Yz&DeDLPZxj)8yK29G_GoM?tgLQlQpzG$H4d(ya-JFfPkah0}-woAwQjCsb zJn%@B`9|+=$BxWGj$6D;8u$aW$G0Ui(l>7HTQM$uZ{ibQezEJy2;UuJ-Q0a|qFmp4 zY6A-yWzXfI$f|z|IEfW#>AV=!M-PqH|7;N zyzz}Z;cqS9^E)Hn+7`zCRCr@ea6G(KkA*jUVCmh7;O)|h;tiO|V-|1mx#Q!_&htd$ zEt-o7mv(OU+u&#h<%Un~eCp=lK6kdC-g~Qik2>gqo39#=1~yN*B20t!5Dm6k8gM4_ z8EN4CX6!Q2pnZHA{C#W;-ff>a4GsWfLc9yiLhvtk=13R}9E>{J5;+Xd33YR~& z^W!o3+2%6$Q%`!}IB~Q!jR7uo-Mo}M9R9Cec1B$CjlG)KV>7{J=O|nrEz|=W$HHaj zn7GXQ?y&U0Z4<>MFq8Ng=z+b>(aX<>%ka749|Vu#bH(qc&G0<*Q{2nWjEPs5Z_WC; z=pfo$8LBT`tZ$ffUV>6Bf-z8ad@OsY8DjiDl z&1}6>4t!{JbWPv&nXf+gLKol3ouzM{8G8s^^+DI^)6qKenN0psIvcIK9^1P(O#gi$ z`tP^&KR6Ek+pdebo*w z`u~UIO8A5(@(THe zXVAOoiu%~!T?DUe8lP9zj>RjRCeABO6Xg|PCi|SOxay3&V(gqV@zFO^PN|R z@wO?1x6KxBE#u&=?d`FT3vXM;$J?97!rRt~AiVJ^^{O@s`uHtM6%>w(YuxbYsppv2l%Y zeQ4XC0p88Y!-^1HS6aF@jYrq3WB+*}blo;ST_4;whVI-pak_Q^V?w$Un8|ue*VR{y zN7rMEZU}siuL!sN#-yXog>DGrtvQ6Z^%id%#=)C+P3)V(TgUi#`~9)-)-iFs-8fOa z0W(=^@zz#(X1obc@NqqUyv`BJ%>nmdQ}$^dK9hLSEaF9Fu|zXv@Ox6c-^BGQFOyu! zfA;Nz%SV3)SV^uIGrv-~Xpn5Sx|vzyA7YrqwGOn)4>_X7xX@0bZkQ*3b)G_>Q&uhGrP% z=WYQeKH?2~Szl=c_EO+1gGXpTQN#6o>+iIe1#{?v_mg*y^eLM?4<4S@>+dLy`5i%D zQnc^4!yj9@Z`IH6=A(Q&cvhNglUq-@`kF?b4k8}|Tgk2G*-p#DE}r?@)KNWhyEqFs zsQV4ZFBk)xDQn?djq)|H@A$ew{yx{H4a)P{AZ{?ovz?aLT^o+qzad_yKe>440?X?Q z`Cn^!{X<^tp-7Ow{})HWgZLYHIu(J}k%us^N8$DP@HKPZ%ueDMHIqm3_pfy2j6>z( z_3!Z$9~a}Z%Zu=ta`nB?pNUuX2j8EaI!XD-7mws8ucB|wjBh>kfR}Q-hHUHGNl9on z{k!l3e4+jKJIa|;wGks=+-2;|xRSlE53@JpA+M}Maq@U1vg^9fF@E?a0S=Pjz+Ywg zlQA_zBVYIfcZub|Uja`pi)JEiyaUfB8hK}F5uWQ0zR_F^2fx@dTGskQIB@aLJIwcu zFB=(q4ei0xiV^wrC)>do=SNMfD7i42dHZ)5_iXA^co{eDN-r{m?A%-i@6GX|oI@Oa zMAz|1<*o!jBWGQ}>117?hyUIDw($dYFjpusvQumvyNZnCCyb-;8`Ifo(g!8Ier15y z)x^bag^$);04{l!n8BE4BC9*RShn9Y?S9cQ#`t%0rv)o>$H&CDD+Bge+cGL^$v$c^~RA0Mg(JG9p6F7!nTeW5jtBzh~}7|r}t z`VM_4{U^KY)37{ zXZ%`^L4R#;W_>R78%pyp)tMQ`sekA_j>5Fo=?LQ*wl0J&%XI|aeemX^}vLlv%Y<9`s}lzKK)PD zXV?B1JX(ErU&&~F_VWY7UHu)!_1X7a`2_XZqxZb=`t0ZOQ_yF>t+C|kv$w>4*1}lN zQlC929e9rV>@!8id(Qd{A1bWR{z-hFr_bI}pwH09)*s8$XS31C_+g3J=tl6woTn}> z-^}`H{MaJ|$O`mP}6g+W``s~iZ;`;18(nrwq#c!UQK6_87Pydtk*(*N+k5-?3 zz#Fa4zWz7EUE9bFDK_7{&y`P5pWS`;8?VoPq4)!Gn#{gXpwBLeJ@i?|dY1a^qj&Mn zIqI|Pi;VZ2^;v;`_UGR!)Mu9z>a%hDv*>}wS z^x02$pPN3rDAcF_#`@nKfZsstBE|V zV*2a@u6%;}?7eMoygvJD&BM@VKYndQp9N#NH1;vYanDkpT_>OJ9QE0SMaFy1`mDe| zTO&Je{j+vx)!cSzp+0*<{Ig%Qj;7&%SABNhIj#ppHo+4U)MpI^>j4*}1AV6R?!xN< zf42shmENmfbj=m}cAc9}`#*m&(yup2r{(m`8yG{&wQ&|Pv^<^G`A^`%>a-KDj@D`Q z|L<_uRbMEs)2dwg1a;aaMdU$w$1bL1;v057;Og<#18NjMEANem)&st&d02J87sTwp z=MQ@^#mH8B(F5^%@4zQDzWT7vu8J+x+R!q}z(LV90p_hK>9o+Az-!Wtizq`snl%CX z;^OsY&US`1fhRvVS||Ly#lgA8)7~b#o~Pfc^7LDk7yX`_f5sy|e7Fy5e0jQUPV5!MG0sxA9hN>kN8R>d5gZg-?;Ll%pum57L2{6%-{utR zw^v8>+xoBO^xJH3rFG8P(O1C{*XXyih_8LL$awzS>9_tMpX0uZ$mi%U$mi(6ZtcK^ z?PQ&1cW6zDJdVW9XePNkn(6#F{GfTxChGJQq7l@d)<7WoR7|+zbX2t{EyT&?zid}%K6~htDO_3F^QH?;5QGb@pPue;1rb_t^B} z=g}oa3+R%CzQ(@;9|>@-JeTLi3-E+;&9bfM^(ucu>!)|KUvCcc?@F)4ZL3 zq_yFscnRESJ<{!ooXd0Ju!^xYxZL;ZQ0{xyGr8~DE0nB_W>$ILDdn~&DR;T+N%GYf zldq)tNwPJ77X@wuFrCcwEB3OKc9+pUwn+QN@_ohNoH@6iFikYtK%Ia_M-^B2VgU@- z))LxjRNhK6v|kVGrBT`eSNN(QP>w)7aFCs3>sg$c}%je5M_Ye``lgPvyhj{1Ia-=ed)-a>O6Y{9rElEx+T34dxXA7 zuMgQHu1y=18++v1z>W{{O!g?;MxH&QZq6RHGX~kCt^DsW_Go)JhPwHO;Gq$GF7+}; z(K+#Eu0y)6@{!@L^T;kh8a>Lb3Bjlrd(-3P$A|)_|w^dLHFDa9ZZ!LXIe_SrnMUpGpmR`l0V|ydLeoZu! zLT|5=&SsoWXUkqXo!w0SpY*n|q3CUY4BhQBwy^$I{-Cpw%6}}X$L${O_+>r5rsP)!yoQ%Hdm6&KU?Qm(4ZLEN_};ob#P~XMuO% zsfR~+MK;)+6YTnTNvK`RPpTt*<7xkP+q_s)IqSsBXd4@&{R8+~M(?cQ>~egqcgXh= zKb4TnH7An4f4fBcxAA|P7>n^K;L-GabR7G)rMn9EZ@*0bL^UwR-M=lL3c0S<{_U#E zVm|Vi6wg*fk;~|~xpe>bnbCUaUidMf_pg_4KmTLsiuK@Y1H9i=V6UN}@xjpF#q#a1 zd#ZT+>54xBCgc04XleN)2~C_15X}O68k&1`gNq*Uw1YkOp+3D4@u#pI%CmKh{~)x_ z&AqUv=bCRHZX?gub%bmkJYj4d@}L+obFVyG_qRU)kISLW3NLf<%h-mET!(Dk+P%YF z%i+Odw(dq(K0#a8P=v>d#-G~HJwMgNBgwn`+DnW@Iv_WecgAkjdP;~_CX%0ejcg-$ zb8`hZC&CKV?$>{OK_LJwiK= zqic`h2ho3%!+nG{AE!UZ*srz$o<>*7C-e^&=;IFF-9|a~MEdxlx7hg;^L6bt`RV@& z^zlcrZ*kt;5@8?dQzi~kEBhS}wR7)Hv}2#?41(~p*M660^fN&}lk`*PUWA{2HPpxE zO6u;X?m;i}7g{$6y(haYdu!%0p|%%)n0kA7XCLEdKcK%ann~;l_WezvzTf0!Rukj% z4!tF|5nZAAqI89WrMZ>jjf*t5o6Ovfaris&CwE6P{t9&IN}fLzt@DplzJl_Vl+UMp z0p-Ujf6}XC@1QxOCow>vG+f2H@5t&Bl)y>|X@^)gl3TN&D)@yg%BCkw%Ut(W=0e_%6KaUIwUe7%ceU;j4w zf8>1>vw!!w@(J3%yEl*4ozsiScmE_K-%}ST9zG>szAH=6`6Zbo-wpEl7EVsStJx1+ z(?CqAAu}TskJdLcve`+!r<&v{20cQq`xg_0V#T<^zpZcCw-o-%Wa)|HqIS=>z10HXb$cH?GZ|UdnUw zjNX$BtuAOoJQA;L$ozgOGG%quyHvI?nzOYnAE93_(Z*@yfVwU8XEia+TftkrpK^5W zJFlS5Nv?;f^HP+UP-G}k73fa?H1#M`{3pR4zxH1QI#g#+h1>au4*|pWL1%k~pZ%fw zuoU>qg85El9x#EoTJs>=xAzx}&FI|FI38XJj1Yb`c88yETZ@W}H@80)8A^5pW0ZZk zl{ui`BU(0fVrtkFxY{6{wx>ZO1AKD2rgdLQ>P3x0)OYT`Pimp=Ec z;jTN#RWaYOVon|Yj#V?|Mqd@tONIFU!5y^Y__mO@57K5I{^jM=u{@SXlilF|B)Vc4 zn(Sa4JGt-CFQCbLL<6o3z9={N+HGlqEgj@pAx+#j#mwGhWM%+*r@Np-H+1OKFGLHj z4Q$HuU{gNWJq|7CM~)VIEG_o&fB$G&YzoohM=wH)ZTYmQfEJU+poLdJi+@7j_wnoD zS1c~{@~1}Ih!(!9l(#Kx8oP0sC;RV!L z$g^tM2EMI?eef4T#|0s~fUe2eg+rIdu7U^srPK-Ag<9IEC;sg0LLd6SmUilCZxMZH zq@6zW|3S(ZQI7sjR8U??Ie9z@_QW+fyHFAGkt(g8Z>1ixF|4>WeNEKx?tE((=xaT) zWb6WcH$K&7>a=(nW5b*I-^6`W$S!bg>;mOEy+>IBf8yT?+AwmmEt>g}&Ou~c#HVWK zz|Zk&>en!q`O(a;v`2O$ZEOM$)NP?ZIlHie@|9lZyO&W1Jz`=X8w0zbwF2PXJQ;Y3 zp=%x5*@jpC&7DIP3C^Kn-WSXh$^t(y)c()ZzJqPs&*|x9;A%PjLMKU2yEbJXCSDW?)=%%4s`%inku^8^n)6ra1Lr*DY_4#d zq)ajy#kQLDNobvbR}K9wK9kUH_ydf4DbGS<6klrpJl`M0#+L0G;2f`Hq?~x}q+R=7 z$>y&!ivQrJ5g$8ZaH~E0;;Fp#AndH+t%bY;zaJH!oJHFYOt5X~0^#@NPX_Y;ZHrTb z&qf;$F>}`0Blv{A*$T;Uq*v>ydAO^gzu@mC^|zjDD~~?)&V;Mm)n9Nf{h+nzQE`3N zgUo!y_V-7&zyA{IubE$$iuRX}^c9?EThRl^_9z^?wQYE;@)qw@93L}IUBmbN!5(~v zpS`xdflzy=8iV!3-b(4ig7w5bjAb8V*$;jXst@J8ng^;6I!`XX&(arsscmznT-M0@ z%~~^ebyZL2%@|&Q@8tJZ0Hahe;JK*$FnB6=E*&tOj!CcvFFnW4%u^jqbAF9$zY&;A zEllg%8JLcC`=j(fn%Vm-^s&4cH*t!}*nZ{tw`iQvOp>wDuI68R3**rrCRb=q1l@;U zFcHu%jiS=i~Q2{PKR)`C4ZtRo7#pdyGap_pN*c`}_KMpR=8w(e_pX{-? z@G8!T3*q0bK^tCxzJ|ZL=zq85`T}h8g}sSt&N5m*GN$AzuAAZMCjMi;;H%&)Bd(o& z6KtnX728N*<8+ph_@WuQa{Z3Hvy8f;v>DAj@B;W-32dv2+u<>HmQna!=hvFEjBH)g z<_0hDYd7+LlPACSX!tCnsy_5lEB$WwGM`afE4U8)+U=Te|KqOVu6^WkR7F_xfX}Xk z&jyk8Z&Nmpvcj{Biuq7GH;wk8{=@oEMxXXueQ}BA*9H2bkN)&C{=?{tBha8)bl?nx ze(-Y`+8&8!Ub>AjFg|1V`wHS`=$j<^#^sycda<1!Z3^ss*}n#JKh8{?mE_%~u)UKE zgPU5dO)TIVIhPKuy_tKfbCTf8r!Oh`lBO>|Sj{u(0q^qIquL__?<-bm{5g2ItcWaY zUbqH)&IO-k*jmYQ^)#;03-e|KdOFr_rYu9Uf z%^B%uSP!m{ERmmpKGHg`&OqC%_~lai4u97xPTmL)@_!3FQiA^b&Wf+>(jS@k3M6!gIu?j1+s-K$$y*jQR;>Hjy~n(Ex7fZnkfDgeMFX4 zu9(<6>IZgp`{K4Kv5!1IcCK1$5q#$PdlsK}oHx$;x^f^wxctdi!DS`mL6+nfn)T&M z^u%Q4Kb)7#e~3t?LT4{2=RrKDHDlt+b$&(EoHNBdzK%I$oxVBi&jud3$v*r371yp& z{n`0*o;9LN2)Ex_2i~BQ{Ll*Mmlw0LG*_&#g=e{Wi`9Al($Vvl#4_MhzVFF`ITCm< zI>XY=Jsp0dF3r*;PNHy zE0`cIzkas3bo@CEEmhe6p9BJ57ED*VgZ#E#@cme}m;^*S~S_f7Mv{ z2Ts`Us1p9e@(2&->;E9mV#XZ8*=IvIQ(k1YmGc>)mGZ!SaFYTzzs~uL@}-;?f-EFg9_3@jrHkq3M?XH=?}!%B&x$uZGsb$p{Aa}|v*;|X?T6PnVh@ej z%dvcq>F{iQq3;1K*+c0++5A8UmIU)#?n@_o&&vn6k!8XL4@d`xR8q4AFwYx}d;h~}9CDlLKV1HE+e>p_|-%+2eZcQTR zvMaCrK4q4_l1nMGFxFxZyTMa4zS|b^ThliFJz(PB<+}z={Cg7d@5#H`6q^k3wclcNhJ`&95llTqjugn(kWX8XWcba);J+zShZsOf`?036od}Zxz zNQ3VI?D%bg@3P(5O6R*=OkS4!<=fyX&6}?TSGU1iSIr3K`fKrB*5SLfKo|KBKKzzu zo|T5i>G|-Me36ax4V#=|ZQ>!#kD#gMzFMm>`7_w+r(5Ye^h`m^G<1x!hLM1d$;gyl zH;^L`@Mqws6w`Nue>~c5emSJ?jJ-7R`TX-Rvy4Ojcw&Lob>Oavu~dQ62J)g!Y!Y5} z{!*O!iJ9~r+Yq*aPGlbaCsnA$+`XOTXJCRHG zVx%D6xD(jB!QmeGaUb}HXSA=i9vqnUiQN|O=%&h>y;HZkd<$3ShG-`4>Y$Gk_5Ah( z@0&G?583w@P>v4JK0&`;{HOJ@QoCLjfw#)g73I7BA~j-@a{ZVWYNHD{-34u|wry;q zypuMp?2Xk%tJ>H~-3~7k#aHsY*|E=SUy5Xuu_PIr;*a>m+Y8q)t|5m?^M}GU47YC} zIiK;>FrTn89G-v3R$RvWnoC#1+b%vimsn=*{SMyW%CjIJe|zEk)7|^*H^{xuHyz{X zk2th5yb&o_>k$6-SsbmTttRN4okDDXDzSaOYq@!3+{ukxZvuxK_`e|(+vnQE_9>Tc z$;D+USIpDK_H+Hsi|wzB(q=UCS0}*ndSGu3F zi0z}NQ|+GS27AM?{i_ckD~srNqnEiyZ8dWZpRvz~eAw!I%4t=nosGH2{ldtje>72iLH`Egb;b@d%wjW<8O)yDVT886e1jl}l@ z-o8Bcxbo^nPwY{_{5XemXJhUH7vk?B8`_*y=L+`n$~Z0xCG@87UG#o2W?&o=RW zbk;$1ZZ5u$OrF)g3}i4g&(8S{PL?Jx&(7Nu|G~e32bY1@v?HKNQ zhFpwd^K9Rh%Qr!u#*6PC|LAC$3di@)b$(qQibpfQ-riifSh4->Ti_2D+dr52^)t^{^Y zK8%kKlUqBNZLss6_em$Lpbz*#$tLQp5B%@7*qmm3GWp{AAIxW!$EAF(k@@V?^jULS zuY@^m7|#|?-n;>OOXqm(c)fyl0tih+mv{(943EqD|DRtsOEfqTkcdVBin!JU9~Ixe$*jcsdQQ55Vh+XUr{v)6{I> zRRF6pn$fqfa`wZSDE>80JY$n>_w|Tp+@<)LrDc33G(}Df&I{rhAGB>2i)YB*+-PFW zp?J!Uk~+m6%wBHfLGezLH?^aI@+jr#0A#ny=KQ+nDdJ-(->XXv@?#HCYKRyR^(F6$ zpQY$)+$UFjFj|)!;yb+aqxt=uQrHj4jppC+){;8E9XvJj zerrRW-@<(}_viw@h5JnarU|Qe9AO`HT?(g{$_B) zf5k+StD-p{A-=JpE|7&XvzC`M^Nh;aX1>8tS>)WQoQ;8h2df!3y!y<1#(}>2{2e3u z%GvOoy@8(xtHD4jgy1#8-7^v^{M&${}!-UZXx^sYT1)lUxJ*JWYX=W z2L`Ios~cQal6iW0N#>aq>f_ow-+7hq$n*b0YNqbM+0z zmM-Gk>x+5stJL{cx%ZP_M$SL7fbsnJ)z;1*mqfpOf61FVPJo+};O04Svl{rOU)$KD zGSxeEVt>zHp4d|&-ne;MxNYF7f1g*|{P@v{n&QUPI%-VHh0CsoKD42>lHjK4Pq6#Q zMuKt1ck_QI|Ajy5<bhdQM;oX}ybR+orE%mXaLc&DCY@5^)009?Wj-Yo5bIf2f4Zd3G;o|5y2PILu$ z*ZU6VIX<0W{{`>FM(==uLHmC;HTvb}dP?f<=YP+I-Y24rWhU@b?e`o=Z)`ijxj-8l zC_CGBvdGxth=PG?*4me8#+7(+`f|OL!9$x;JW8`^Zfq1qnS9*brzuH z;NO99|7TXed;&PyBkKc8zTmC*M>C0+uus(W_@=Da_P=7=`9_I+PpuU=Tw}K+zehiM z%+UAf$DX`CbK)R<=%ZigWpMrIExbbjap!#>~7DpHl{Fvr_@#NsL26R&cx~KtN)R1|0 zW&?fIejLr+&fB$GbGLT*v%0J<$-ZBo{l&?4##Fte&g3mc$|(oN4EUS<&c60LW2^kg z^>y-def5?7&f1HsJsmnLPUr9>!2|ewRDAUXenXAW!j1Pg(6c4ecY*NC5M?dUYQu%( z9>9|)*l!}e0Ikga;i3M;bsI{ePYhA!f*HHXz6$!KWSEy`i36V*BXK7@dLdBJwA6g z|Mv%Tky7|!u^qSetSr?&cI~OAKWgtdd+`g`QT~mbh^mN}na{iPCkHy5HjSQjV;kaq z;Y52fv&-R;_R>1X2YMzP-d2KbAI8Ul7Y5;l6ug>%7i4pi@WRuU7oJ%TAHWOmE1};7 zv>$@@C!qaM7yQ~^RyPFgPt1U4W|w46RFq_fx_I8tbNXNN=?;BjD!P_eI-(qmBeemjYI@Cs*HV(qOU!#8y0z*0V@#FB>Q}n?{79QvN z7}rnYTW6!0hrCH0$_a2VMe_vDg)5)uYx(x>mbO{3YfJIVcvsK#uG-aee*@!Z4xZw= z*(*DedR#G{NJsn#^)^H^+TVUP`ND4OdY(Q8??1`;a^OKZ1Hwc2{4TARc;G>6TN^@h zraS@1hq5{9LlQpo`=V#`zf@1_jMA|~;O_)@R2lOXgGc-td?)Y7Z+IT|dHRtzVV^hP z6Aj@LJ%@chfls9R(lrmf8hn>qHjq7DzomW{9-knurr@V;=(Ayt3{X`m_mxfmb zOJ`oD(7kQm`mcJoRK3Z&?%KD0S9yW9dkJ$zCVCu!y*v=(ZF+C7;*&uZp)RzdeX61b*y#X!1w=-penDi%r|L#$2~P zvfBKQKJp&(zjD_SdoO-g&ipO5{N48dyZArm+<(89lo35DNJ6L^w-u?~6@APf*G_v#D^RMO3 z5<^!Ro%|hmA=}CxHt1dt-RC0DP5iIIe`u((YvNY!v#nQga!1{aiU%xx+)6{vU+S13Vkt&H5}k7wW%TpH)5S&^@$i);Wpa zX+2XqY$xl}N!}MP={|W7+clY3QXl{OO>V+b?~>n)eZMUDuKcIhW5eK)#7V}DzR-C~ zX=pS6jgrJJed3mJ))^AyT7`9mV8@q7Gl>=O_YnNO(%Mh@vKU_3rsw3({l`h3wF0-D zer@$K{~n{g?h^VIeImi!10FKATjM#g()!>H(Yg~nQyV9Gg88NK6KPNUKZiJ_@_S9* zRS34jU-qzc-CK;zIGBHVF}NJQukLAli2>+)Qv?|DQCb-Ty7C!hE7cC2wjvkUk7tpw zA$*NC`Q*UMogKCaJVr|E(%@_WoSit#_>V+0zkD2D44?fueD+`Bhn_(1J{MVBcVelR zc@DjN0(pDxBz5o;p2G({fiL&mj0WmruQpL0shFEfaZdAgd|Qw{O4`QVTE)41yInHN?*5M>8J@?T=M__v(oDp5@0%nFG{iSMXcu)xBAJbMU)h2BKf6RDn z@%oix)_3a#!Cu8N&KHJ{P0lVj)%oL!Tc_aH@~PhQ6N=69j$-;gc=Z?XeqXfC-_QL5 z?xB&tpL=N6h)yuES!nP!&9iCG#Aazv``;=!%T=-2GX8G~#b#xT{Dri^eEQG_g7?IS zS@I#1$P~J;E&*+|{&R_FQ^`2slQ=)4+xmmt#lL4?;9{>bwuoI=yl??AGq?Z7JhSmu&9PvPAJ_llKP-4*SO)5jn#9N^8hm873q+mMVy z6GOkkx;eRR4)E!P@!1@$+Z)2A$6w&z1?!JjlUw%MjM3|l$sNSs=~D$`^At;{_cDL1 zagkdhJEJx1rw)M&=bT!fU*f^C3RT^Sh9VCU|)j^_$@@_))wrK6LxfSFwLg_*|&6h46F}dH8p(d0FeE zqKo$OBLk0K#dAZachDEf4t@Qi`if0SE(^x7*n_Vb-(tom`pCb(QRC2fRJR8{;JNFs z_O3|2bT66mfzv{ppQTNWyD>srlnKsi`H_rU`&pVjuS0uX931s~ahVrOGCrN%lmHL) zz^QtGcj2E4LU_M`b`tbGPMu4&2HdDPfcL2STfsY;Zzn8%8@!SZt-ZN+-2WVW@i_Y6 z<3Q|{G)<(cgx>5G>7aC{C!g~{*KuF1AI&I#Yn;a#jRdOdBMqT z(4!L{qzgZ-8z00kt8?F5(Ro!SuVOuQI^e@?MmO_ajtQ)r@s4smG;i_YL+1W<{!84$ z3(~3nOWY5KbTjntS8T=UX4=ypg|T$=b>PZJwxpZ?;O5{xqnnWxb6$b=9-Q{-(*BY< z;vIE5pFX}7x^=>rUBK>+YQ04EG?U8>fX7qNZ~*xkT*bOkGk)tP?EYrfoLVSfLHSC` zHc+;ad+0g1nR+dh!Eb}`;nPbg-#|IMIZ#VkJ^iWSr|%PDClZack1V*gVUs&n3vTNz zy(4ADW;>hlNW6&6m`OipL$3?Fb{IUxA;YaK4D#joE!TGk2 zT?Kz|7Up05=c3-8QZM#uwfB?wQ{csiKL(-I5bd3$z4pmnQ~ zm-_!j#Yw4`*w0uGGS=OUbr0A3sI#B?2dNMJ{T9kwDc?=`9?GDzG3rJE3zw!?YOy=5c8GZ?rEuy(a=~L@UZ=%g9L}?hwtG zyp|%g8h}=V(CTSuHE;wzdmK4D2G2pOL1;D5PuXGak8uAu^^Q^IQ#MFFXf<${@_v5J zT(9>sOToeGN-J<}Y#TKBE7`WELbh$bm-&Mbz9c_dt4mYoAUJur?E1QgncJpAxJ-jf z*7R$o0~03$KE9<7JGe5igV$1C!Mo+eLMLGhCkwBgjIE0?cSA#PDg36vtM-SaJ1EK<`w2;yz6X;_)Izc%J1-NpdHsHzPmLV#CO|iqZ(Rv zMl;_b7gT#cQXTYR8}C31@=`LI13P|k|HqP-iRh7>PdI}<&7_Ulw9y~v%R6r!Ltpks z>kcqSD?Z<0e#E+}=3_{0k*)_dcgK;Z?|A*W$_YHh1i>n-eSf6Tmb%-bMsX9V7)65t8&olWVkG)&=a(ceK>>=j4gV^Uz z)@^o^FS1AZBIoDwcVyGj%rT*hStHio3aRa(6#<6XGijsMlYw4Y2Nv+^pPps z(U2L~$=dI3)^;`^vm24=O|q-gd&B!4^X=+%V^{mgm4HTOO7jgVebOoW6zibivUt3`aIZ;}A^!&z*Y%AFW1zcx@FieLqI) zUY|Za+$9~am{|4*^nRS*IDOik->1DsF6h%_`eb~MUjs*JVs)a?<@8(E0gZ^~tRxP! z6rOxseMLU7B@f}ZyLB+}oA}!&9%& z6n_FY0bI3l=!?JV%C=tG>vNw{dz7V!^ZCRC)5HXo8{{tv?0XuS9caY*b@ z`dV{01#^*<34@r0IK|c4e>)iy;^sd1-&;45PgFZ`f zZS2sXwL?Dj&~=GD(aa3=t511qh%uey9ppEK{Ib55Sx)~(bVww2i^f~Sc;_SI3&1~X z9H;#tSL1Yh@ISFRunXHb4gHA)r&wdrdP-7x8PyH6!?PBiwNg&}H_19nVk2dnxZliu z3-wwl3+boCCdxPRJ4QdB^h_Ms_&j6Cj(-e1JqeDQy-aF7wB7&?H^LX2tWNC@bd2zy zhW8#uHq!9uAHdh?F@~&IwH$2O8f4P_OSI}Rs4bPsoJo^%DEN4sy@z>FP zKIN$_V~Rl65YPTjm}eQo?q?>zvn?T>T}Gem{Tt4+9q{Kic(yadv+a~^<-P;H+{V~C z3wXAj@~xB|2Om!bvM&8uKKw%0r_aD={&Dd2)cCxc^9N=?hnZfUzj)%0LcYNaV9f;P zY-oVLm|=}S&tIIad8gN#yv%4B=SuiwDNQul%+={FwEU{P?#!PeJkFFDj-3uH2l|#SqJ|)>3<3m5iyS#7c)fmL!9nU&?2{%_4q1DeVo`fs? zIevc3^!Kuny#UZAn=R>0!h=of7qYTgYXh^r1B>BdtuKl{i4i>D?60f4xQ+NQG>qum zd(k(=eDSXM8F@?~kEY*|k$$VMuYEX>+h2^)zdMTckG(9eO|@tGSLq#CHN`Xe)UJ;+ zi}W#iS&(lLr(d}}9|e8-SKFtjLVYsx3u3g3N-r3?u|o65f_U8FfR5e;UM#-S%iQu8 zFLosk2fBL>Wr>55Z_YVrnJJM;M%G=u z#Aea_;@(7axyi3kUrgT))s6IRbMd}?ajd?*V!sRE9hn@!b9L@T&ui~pdMA2% zH$VICJ+#wK8z$#=2mRg&zv7QH9>Z7O0G>CF)NQ*g(CLNwZ8w02Ind}H^vPUHqr0o% zf7;L(q8hK{x(j&Sto!@e{`Dizi_v`{Fs09z%nQyY7H*>RM*4CuFt-3Ry^XTYk@9;O zXFKCeZbesiFrICUr;{^x6(ek+eLqr{9E{ZYLy@{vJMYb2-kX{|tvA&kWzIeVXAA8L zw|9FbG4(GzX07FW5@YUoX+4-KjV{^^|qC9UUV})(pv+boms$t zGYamf72Hd=Nk{zZLxGN{49R2Io^MCDTu|aY8l4P&r!hXhb5+86P1ufKSjw8`4lmYI zdg0LbU(4S7Vzn1z0+AWEFr7ZUuOxrHU$Dv5&B6X5a&7cjdtfiszi-jM=YbP$87r!p%Gv*{?h%=VNG<0Tj{=O^eZv7d3)Na>Dr>V~ujp%UX zIRTx``cQUqubb!0fhXelk5#g@@LmGmjxXmw`Y2cDt)V(gDPI=&)>lB&3V5LuIm_8= z2LnBnXr$lRan8!#+gvp%ru}RQt*2I(#O^4Eek-ZdM4c6kbvb-y*IL7QY&v)6OUJ2e z`y?3`FC`m^&k|!%UUQsx6Tq1D&q0210)CCx0=wP|>`Qwj@MCPf^Fs9m$HdR*TblN@ zr&{qjon7eqy+(a41`oQ(FA}}qZ~0O5`D%!NPDO(AjqbQ~?D(R-L8!CreRNC;9plz5 zd}!vQV-=f`uGY1QsZs9mAQ~lGktcnx&$~F*wT-?a`w3(}NjzWcaj8yVLbDV&WFAuI z+cmuu`0&9|3R?N0wLPto>wNv>BJhgu(Lnn>!ud*a$7Unj(Tdm|$6qjU5))5eNxcqm zUQN3-`tR&|xxst3byBa>pX8K3ptauwd{kxh#I>>CV-Hyzy>XCl{DyP!rBCAGL+Ik_ z9xP=Z2Cc;dm3Mi)m3Ni!E9DpIO>eR}b4!`KL)V?;{0XKzJ5)H6?M#wqa8-n}!Lgk+ z&`_|2_ivQ@rgzjGrGYKFEvcYN{w z?fHD682&&fu)BcW4P5v_>lNuP%DX9_Px%7MS+_`^^y-MOncNA(7Yk@(e!v&xI*stf zA-?IrcXNc#iSR|7@hOJw_$KfL1D>fe-|r}iZRVQ*?)sBlS5}SW;z;f`H8HNqz?p_U zv~m|{L(e;tevK0EX@LH+Cz9b}I@RdY#%adC>#awA8_&;=AMat_yN|dM=T)7qJ}>x& zAThhtKIXwsAy+)F+OZtS`yDJ<2`&nSggsH`+Gg z!2~?0HYLZoHV<7E`$O7PoJVr)aNuHetnZ&P`SOfgakha4#M>N?GH&9ib?M0^b>(mM zYQ<+Rj+Y#(z3An!cNc4KropY*f0-oDUU=3w8^J9;A2=pPLrkuYJyvze9?FS_B{zWM zjp)@%<;9kmb<|e+kexiT2P``*dB37pXFk(ib`i^62w@N#9w^kF9~8S$u8=4H{{mx{7&EyXGs!=@wZXF zl72SPUv!7|C2K#g?6LM<9e@N35`IYANCUT@x2D^CzHSVapi~Mhkl;_T4%e<+y}ns9ii*n zxIP^T^ektG#L`C?i=#n5V>`@!pMC*8ucp7cHu$7m{ZAjUzS3cQ9iA2XN(9i1pDn*A zN!=!Ng5FC$4u8?d)G_`)>18~fbGY_W)&^T1QB3OO*Rcf^@L6R^=7yg$wuA6CdOm8_ zAuoz`Z6EHshrFk-|D|sjDc0j~@>y_FSzzZs^9Lh#{?brB_9+{Gx%!&o@fYRnn{PN1 z%kUX%im_#X0@DX%EC5138B zTm?LxEy0-zMz&T_zJl_Vly9coo;eZt*Ry()=u*vF8nBVSA-lZM+2t!@F>q)24EfNS zO=7o~iPv+zNdKLG9mH(f$W`{*&X3)t{VK>y6=ySe-u&2|y5Ac3u;F;K@vAogEAXpL z-L$?9wxPIRU8$JG)_@1JHY1<7@cU=yL(}RAaS37_^Cky8)@a{LE~n4nUhAY;>B?@} z?g8fV04BQHz;tJ93itBUUnbu}v5xDpF>XH%whOrqc(;Omr?+ihTGU5>hIb8*F^|sq z==k&Q-2q@6ho^tYbMybG_Si&TcF!MX90z&+HT36$_=yiw@1Zf)j(;#o`zK3c@!??Y z_)7F?`6cBY!c%y^j>)rF&)91j`$GECOss@=J>JzhURy+i_28*CYV1Y2IiN=$^PE2B zIepA?`ZUk6<9B_0h;e<5`A1=U!r@Mf!*4K#t1Mj}1mB}!1o}b#m+Zh+-ql*5tM?Ez z_!=-|&y(%YlR0vK3Fj6*|90l}fBML$N?z>J8lrFpo{IKmi|Y%pa(xj!?R#OGFqWf* z^R`c(fu_bs1deDqIK?|UcP-52 zN-sS9{G2N6$|^78V$yRy8O`WB<;ItW4-@cVQaTnrCL7A!$k`=R_NC*{sk!$* zH1YQndLR5N7YhCS-Fo2}o=|Q_atAouN!va8nK+b*&zNguMCCc2*h!nznW}U2;1$Ky zlkn4LmTS&>k+(Z78(UG*9 z(~+{-_I>d}vJ)F5n+>f~-RK4^u>l&f$`mpV-IcY)4F+?*qWLNZkS=D9T9G!SktosGxztBbfNW-_1@vZ2`DHlxc zm{bmrpSbH-F>e$~s02g#mlZlivrY(I3SPO27p*^TThv_1}c zbO2spkjwrv}Iw99U)K?z13xP z-$xnwUv+(l*yCNx9`7bICk)QdDX0tmg1RZ{ZVl=>T&J6maoRFCTGe1=UAas?ZKZ%C zd3&hDJ343HZ^n|~_EHaByMVE+#CKc4nT?!>C7oTvI|CP#cYGiEKWy;inWgUB=En&)kQf)Mo! zW!_PK&%dzcuEy>y%mKH&vb?kXmG&de@Vq}Cc*BvGiNVBLurb1uem*?oM?Uw658ucR zrZ&Kr=I7$ z`XKdF+^6VwdOoz7Qr^Md{*HTY@M8Gb_!6^Bp5C9GLhg9JWlC9xcs?$CATwLM@{TRk zm9Lt5(j#v$7>m|;u16n;{}rQ@UX4R%#T(;0DBDRH@;1O2%y|+k3UX$6u6zTZ=Yj0c zihYGX=-q^U*Wioi{&H{zABne3&dd({Yw#WKp$+td;zs`u_9dJLkcy_x`Gs|D zat82;p?~cIBl?(=!w=jE*A2|MKMQ@;w_Lw^Xn#kM zeyyh*UXMS{|6}|=!v7=hC?x33R&|w_=0HkfDi)KY1Rsue3`#t=`(~La} z%t%S*+IMollKUpv+ADhH6Ua9ZZsiMVTxLv%Dq|nEW6F#94+G~VV$zH$K@2{@m|V;| zQNwuVLu1C2;M~(h4dY=w!0k=o?25vp_DNS(>yI;(@2y>Ken@okK=6TNU6-r5HK8He~#&%(cKma}WZ z@^_1+HTw@sE{h&pbe(7NfDBKB>miedCx(E1l5-PYBIl)x>+TV}X0xm*gx|T-zO$8j z9YKD8`db0cOWy^bF$aihEuod??IUpVV9c{HmQrUKKj16p-Cr2ZB%XqD1Cw2qZnM$X1ZD7Ua3{*&-U6MZyx z2Ai^kycFgmdkf=RA0Yp$IzoKwnoxY}8u-Q1;=p_JW#f)I?yXF@Hlo)CunXsK?*{f9 zU^l*FB$un<9l`j;vqpD*)Z%85cfj#-)yGG!Wz%KvtE0u+xRN$Zz8JKqo*dY=x$gp} z;Mn*!;20f|@xgJb0LQ;A93P}^7j?VAWeC@+dhu_cq_4+$ZgJUgL-9V8(Fe^{81*G ztm|Sk)t=dt!2cG;k*Z`p1UtEo_?P%ToX;iO)C11vf%Dba_bPBZcN*8&`KlQK53RNN z!-20c&E|VtNIuJ(dfnKf;7aFaq60DsWa9JxiQd`>&up@`7JBCN!$S1$E!a5b-@+*} zeDj6$L$Qc@$-*Xh$LR_5k>bdPW?>i$fU(xvln`AK(1rHv9IQEd2Y5!;sof9p4(%q! zYZrYhf4gYARioR*PSnxYNc9-++ih_36Ggj7%4K465b9}U!{jk|79l>5oLo2SumvfM5*#d)$cG})L zV&evowd2$|gx>r94b(fy^I`NXx-JPW6l3wB<&>|XOYy0-j(i%qy{-K{857HnFXZg; z$wR`)O4f-KgFj@}4=;^n{}1%5FUff3?4>JWr*%IR$nvN)pWU>J?sj!=*LUT12lJvA zDen&LW9>ukwTI9j3icQ149`OSARKKY|3>;@-8Cce$F zVud&p&!l$JuN_{d&BWBpVi!RN7wb^J?|EQp@8`dAL+=;9eq-+!zxlhpYi5=8-ga4e z@9py@^?u}<$-Vb{h&@Hvd8c0+u~&;}U$#3r2<)f$|5PY0t?M#)jdI7wamw(mGt+(w z&oOr}xjc-$i7`aUXI8%p{gheY*!U?`BR)h!6>Zt~)CaxqBL^wuVhOfga0-2?Qs5Y0 z3R!TpYQ$$41*Zi#n}LIkF9zrNKeTY(7lMQD;Nax)`k#dFk9(P4d1j_~(5aE^gr=2xwp&njCXnUt>{XKtc$#eKAP zf5%?;{iq=Jtu`I*Q|Nl~(rcB2lcJ4o+GwMVyJ;hSm^O}hnZGCAyZG8`VmnIPo_Ip% z^VvSR`gdD72-|DP({6AgA4_>TbFCb-AqTE)$1^#b+(&!;Ugn{fvB~SX-T?lvQ;X?e z&VQdrznuSW>o|CE5E>Tl zkJ9;fXVV}2ljmK3(p%Q6Cwf8FZ;SL?qq z@pt*iewa#lyBe8ThD@M8q{rOso%m$Cndk0N&i$m`#BO}9og?4Sxq`Wo&QmzOV_J~+ z-rA5^t^F!(Z;mBc+?~TY(2w7Pz9P<}d}ea2>&VN?q*{Q}LVsHE?YfzxcTq0i6F)we zzt=^1XDGM6*|xDV%G^7Md7sAbP;Qi`xplNE_TZ0gF3v{UW3H!s=XfoAhc1@i6ReNh z+n#PiON9q7kz=b6dpB}U{oGltFd zUvVMgL#d5iZ{oL^F)Y$G<6*9;HB{w<^IhUcHP_HOS`s)}VhE?(gLZQ50W)Z?I+kIN zTR6_(6PrrWZgM&8l2e;nN#8r^M;GPYl+y?G#pSFgJGt+oUN>dU^kF^t-hljVqr8J3 z{nC0x|Aj%nvdc;`O?-FhW4qszd5-HBn8<2W zBM<2w^3vKV-%5ES?JlLw9?G``d1)qh+R4LGaN8KjgUOw4xAJhPD)tM$400kmZr+>0dz7uW@3}rKw|yv~50zCT zdz0MS>ayPhzmpk@eB2q)%;Ca#bfahD(NoK{Uvu_|eG)IMU@R+ToAkXv&dko1^JD)k zc#+OYu4KNg?=CN(?n3I;z?bv+Er8Yw;q686DD?7cxS!8GxJ-dd6JLf#ekJ$SyjRP0 zJ@97ptOEI{1b(&EPmQJde%}o0;JaU3Fs{PyN1y9>j(7goj3@Eld^%}7MeRK}o9O&5 zuxG)3+#Ah)+~VJ()&5VD_qzcaY$P|fffz1yOh8x7ts^%f2h6`$YyFJ&6(85ygx_b@ zKW~n6E*Jao>*$blmsPxVFX6qiu$e-_@+d3~DG z`}9k;L+cej{FFletC*iFA2i{Y#JI6)zy2?CZv$Udb>;ovZEannexpfyZ;9huJT{9$LjlDQ+qWz9h>L`FvY0jIn1c_Ce7A+WcHJ z2#wE815cKzN4g``5HWg$*v5yXL&S4WQGR)(A||~sh=yKyKaR%$3;N)~0G?B0BF^`H zxE9WhJVfpJwNtR~qJi@=c7vO}&~6`f?g!_<(BD6%GqoH3+Y7u4;k`wCYto-@-v+_iZx@i4qQ(<_)v^p ziui-nKKIOHohL2X(t7lK?63;zEyE8O!3TJiY|l#Zq^CEBxq1`WJv&1-N4?IjT>~8L zvK}KG;F!S9;|cD>LQsO{%=~ML)3y z{W{-V*>^ZN9JqwQ~XYn0; zcyvy*QqKxEhQ#a}g|_L|2)0VZk!^Ia2U`W&ru#_;mYG(+>HNKI$Z~sNkA~tX9$SFD zN58HLyEemP+Rxom9eZp6b=h(UdG4qD)A-__4n?{j`@{h6X}@JU(2um&j~x}Uf2JR@ zr!Cd2&|hetei8DKENON7rdgG)&$e3$h0&uJxVLk`+oP`qiI@q z8AC_$xL5Y9eZ8AAf^Q4Z>|y$P_ds8TtMp=5r=;P>gYaW|F7P%0?;QR4>}Y-)JDPM4 zE@N|{Gc^{XSD1&D#G>Ymj*{4y0{SJrmio~z>GjmVfx5+moSmLtPx=PZt4XgR{RHWI zU0fLbVr{Wn?SJs;7wtFAsbA<*9KB=4z^JQp9$>FsUCZ>?f@hAe@qW+ecUjOr9fN*D zcRw;K+xC&}{zvRo&!2c#j{C!9Z^|Z>K1@tS*6n!CeFB*?tl}jhCsFFbmhC@OyUTs; zdiQr93y*f~;oCI-zbHFCqdwnB%*toZna?-uIc)ZxOUF;+YyU3Mq;!zOoHUAALe`uSV(^Uqq~GZt=6XAs>v{T!3 zXs_36Z%1Wp9_{r8+uHyxH@fYa`|W6td+pF0;Ium5N!R2%y|mZMe%;>cI^LnH&_1HBs%Ehdgw=G380iJD)J!Pa!%Vkr@?#o%Wn6hJR*?H9I zt<6oOEOAS>QdWAkpO};Ws*p1Y+eG$>_MOLpB{>_I=eRsoB^-$def;Oz(*wNc&tG}A z{Pa7q1%0qB;+%Jy_>O++4!f|1)qigu^BU==p$TI~?~;Kt1sq^JaT+I5C}=lREm{$L}lIU-T*d`ohC@^|7bFk3IeMitUE}Y3P3t`u8p6_cDGrMI# z9s3M4258MI4K21qw}Z^-4zfhBeOQWn0A)Hzm(B=0*XIF*3BGH>(D7^ z>&}iX1{FgF#E0xV$bh9zQ&`K=#=3JORLi<>sPIGeZ~pi6P4)u#kJ6q^HhF` zOScZmOSS+wN=7z#*cEl zpTDE!#F}q@#O^_44xtzx?dSiRO&ia=Kye6rNz)qGY{g|_E9ks~>-c>VJEM0ZJXFQ~ z(ClNA?wU&&BKFDEC5Lyd;(y)!e;M<=VjEO5YerInhFKA-#-;8sAjM zNdDr@w9S0xfjr_8p1O&)@9X}zC&8iOSjcP2FSbiUc=iQbnkFyFw_a&%2^Rmgb^ z8kn@On_q1_EV=~71kOk~)v4-$oCRuJ+SW z_l$O(4c*7L^~^2BtKNQZk5|pv6XX?Nt6Z{Pyvjb-Sv+SWKg7s{9(`AAzP-ot!#-Z^ zL?%sKlaE(lZ|2;3Vh%K~^UnVA&YtjOdH>Tx+sXfN%V0ZsjxQd>_&0i7f8U6a@+Vz5 z;LmM_H(Rlpp@YstbA1~H+ULyrdvz>P0-r@gv9>R}=XO3h%sm^EI|Z?`xfiKkv^`sqaSPa%HjKH>%7wNxePjG>Zg`IR*f zHafG%_5ZDTi}~V3z%YusnJ4_65AW;YSNW3k&)~b&^`F1r;QNvRe9xtP18~zn`HSQ` zZ(;v*C~{@&kE{XS&+iI;YoCExOYGnb2Kp}CA{VRbT8d)h;Y+;>SMcYcz1JUxm&S*Q zD?-O9#z;JB&S0&CmaH3(v$XtPflEu)voh{NKN_MAFcR6)? zWjx=C-sd$InYQAhZzDKw0_V{AI>~L6e%I4JG}9cd#^PHvF?48k{rT4qk?!F=Sq$FB zxcI-!hyP?T?Tuj%D0J}Vhi5w<^G(*6+_pnzJ|mi@>(72ZrYleHbmR4Z#eA@*DtkWI zU+56C@pySxi)8R5R2N0g-gXZGK1&^f6^q%U;WfQ@gizLvQb>q6_n^#(i7 z?Wr<-M4#ZBy((6s`04{;#pmKL7!ezz_tW`?pZqj8^{p?UKPEoc~F5JEtEB} z!@~oyzm#R4wtUe?mxsp1Jo@CK=^FV?Uvq7OR3G$8MIFXL)1Kd#DqrUU+LNy{51Ln4 zJg|q|Nzi}Ex$*1Mf1^`d-E|h@*N0zft&MHgS#16|c{6_fQQ)gMJa|6W>|1A{9y5-? zUv-Sv@`WYoYm&b97(dduSPEWB!b|b>5qQeeoi0!5{t%VVz&n94z=QV)vT&l%ZQnm9 zWG<@pSox`CTeS{VegnL>vA~p1l7EnGwVL|Z6gtWFLMOGh(CO_cbkge!or4<+oxY8Q z&WoE1okLp+otL&1I)}Fxa>wzzrk(1!D0Z^-nk?IDz2)0P&rH_R^PTt-?AWDsu6<)| zt1Di_Mk>ZeVjcqCpZKU?UgXZ9l4mE@+2LUB3-iX!I;9%>&F&MF|SBr51wqjJgZ!%R}MK+Iq`7Q#~4%cLYpeajf*9* zlZ`#U2%cLE&nFtb zFcjJEM%Oo!hnS(0~>vy42AZ;uwQ$IpQl?LJzp3D5%g*1ZfZ+I_TGV`;%RKir?OaOa{$3jXO8 zAHh$(E3iA-!cKZ6@`~M>!hTJy!1lnl7u{0WdcD|q&78L*J&wO)Y;q2Kur}X0xwg(Z zRe3>HyR&V($$jqpDZZb0mIz}CbMJ`Rhl_q_4LhTzGrwQL@1^L9Wnt%ZWvQ{B`WFKa zzf&vojf^IjpgWdE@tH-PJ6zvFmMt&>cpf4qME3Bfumz;UCXC`YW9?PglIp|ljLX`; z)CZ5BRCYD>~0f&z!bS7}+dxZI%3>t;77(vvp1nRsJ-5 z)bHAA+HX6^*6E}E!v#+ANP&|&QNSFaz)7Dja1QntIGh#YyjTQ3jKbC_#?~2wt;Ap+ z9f9XhU>n+c%=b<1_h0LKAKwq7H}I>n-stq=vpsks;`Cu-zQ|filC_jW%rD~MqOO;W z-)wkSUwA~kfvH%9pCC!WXkTWwYS{nQ_J;p_lT&yTb2PIoPR-8IbjtDz^eD0KQ~HYOdDH_jc<41@S}c zb`-=O#Lt|o{xJ1x4yJob->$y4vL`iR<;vJd*qY$F`eDi@N?c#QS@SEcb>}OGq2UobM-)F88MNc^ zX83puI%gX?XFEEl2c5GMowEy_v%7%%j|-eb`wE0V^{HDvj8$jq-k54?w<<4a+5L=kI)=m?$Jr#np# z@`uhtM+`%6jKJ4EvWwuGhm^l2uVvcgyYNTqIU?d5T8wX<^akEPK)Rl_q<^50`C1`< zI?MY_w3i<9$Q^77b=^ITrK zlRMKGL$34W?{l}hzT6iVM4U;Mmkut#CZPO&=+j4ir}c~wcYBYUelQ$%b`rbT$DZoG zos99jG|s#Ee?B4N?6{nGo^tkS2kd&YwkF@R?0WVG-tmVMYt#qvQYCAR1*5~pzCXBY zrqj1`Cg&DbzApav+xU{tsD-%|Uh?GgE6B3P|MSbak8Oh6-=P2EI?77lEC5E&A2^S_ zx?zh?!Q%g|_Y^#B&aac)z{gFTJK>{U=)B$dfbhpR{bpF~QO-Df?#gW2a54W!@Xo*I=ACsG<^{l$;hjxxU81Yu5$vz~;EC_CrlB>u zTj2|xDWez>B13 zsY}hgA~lP7M19mLgcj>qr_`DsI@6rfr@i}kP*;=cLe?ZNiV>C`59sqekim!8g; z5M@q)&P~-&=XB;KQO1O+=+0_%XAOE(Hn+~=o;riH8Kli{QrqCC?a-7mcGk)n+>ZS;4LcP)RklWKRz9L;wGi(+UE?i!S*4*AN9Y0mc08}3@0 z)>zE<*?b3IP4key`jFEFp1l}U54ZU5$0pm6jXvfgeKVa1_^1UR@x9=6A7^VELT^t6 zr`3`Xd=QL}8Ykxu!SCp*7nX;vj=k5%Tb`auS2Jg+&Zp{Fi|U*t3P>!}CPQ`)PY zn1WBC%3aITxdoKenr1NuJ-NIQT zV@rUZMH$jDpCtrt*R= z?zb~(I)7)zaMB{AaR!L;RV(d0(&iO(6@2KMdwRd|!{gw8k?Jq!+w{?HKCQJ!M^iuN zeW~1)yw{D5OuM~2zpL)X$llavzOo1SO*#35J(~|7->N3p$CqWRikF}IfQ_|LV#$Tb6nLovw_4BI1YX5I52I(Bpi`VR;rV)^M;pz1bN46B zGt%8)o@HHs&9kgLus>xCG*kRvttrbK1e_N`n=$AsXJCEj{lm4Ed4~Hd6$e<2UdN`Y z`73PI=8&<2hSLWxJzfG2m)bRwsEq||V$F?pxA$n>%9fvU4&}9vpa#8X{PyVba``pr zllDi5o|4f_o(ag2m!}F?rVhlUXx&olV;?(2yiyt8D&g~7@S^K8dkZY?=H$R#H?#@y z&t0E%*Mpxi>yv};W4mAH9L(dK>nXIE3dKhKtzG{G=Y|Iu`#e4Hu+G~64|7A# zhc*79OWZZgqD~VVjc%^RXD-}pT{nISbD|v+Vqe}t>>qNc^(BwbwBDISCM8p5orAdI z1Y?2x|K8eZg4kSi`ZTRCN=6gal&PW31EdodPg~U{RtfqUTAT--;R8bp_%^YK{L7@r z+;J&5U+I6pJC@cW@7|gWw9EJ_M=iDYQ`$S+iURN6dZqaIXk>toz4ggsJ;i4IaPr++ zKfEw|{ct*Kfl+i0aiuBZN_&YbP0z`94l-BoYshzAY~*_@@UI9B@ENftrf=Y1d}hvz z!XGJqlO9m4hVT$yL4V*mlNWuM^PDQ^nAw9v9T~bba!%E3&Z)9>8UCieOuODWRcC8= zHSMm+vDZZHmRp+p+D+1Kau(y|Y{o^>H7*J!>82#_h9AjON4k+M4?fA32Os!KfG@8v zr}2v@PIR6*ujt}fg7-&$#@u`-V+iF_#GECFW$LAT+W02I>DL-TxWJjHQ^IXg$^#}{^8tZ~4` zdnKtuuvi_kDyTzVB|bs+cu0_0C_+)yH+fS3w`6(9r9n@aeUwvboBw@%lAxpxpRz z1M)5Uc8!Cs{n%>Zd=r1Hv7~~yQ}qw|G_fwy7s|Wj67phm=UwieKkDgE^;P;ux@ETV zq8k$Egp|&+J3-yAp)XG7Ijbk|ewcUs1>Ty9+L%NcbG}_;XlsHs6~;Xi>$7n?xYC%3 zpDj5Xd72f{9^W5bMt-%azc}kKiDmF`v(@vAVMf>5K6(5Xxzm;9AniZo;r8wU9M#?( za&*3v>i2YE61cSHqZq8zQrfe9JeV4YlRjHpQ-^5F-;VJ7QPCs?p8E2Jq>09D<-Nd9 zlWRhsH#A`#Lb_G3d$cQ1zB!h5lLqps?c`j>j=&i4C48J-A3qzw-n% zev9q>c!>5U*tHQqt%W1gUIXnlf*)^8zLkD@W3p_O+gzLY&)_M6t~U6&4jG#ovS$fi z6?>VuXzhPF*;AM`#ykPfX`IyAqY16i>1pd2e*-wV7F&n9G{8*gyi4~~r=gAN*39-x1jvGH2)Y{$l0`dr61%_}_L<__>{ z#>6&g?~RFDLeAr*$c`P)By*)2D>sLnHl^D!an&ZqynWzyKRhl!EWX>J#>WrdMqWF{ zCfm+DK3-+}F=%|G+*=tRFQI(S@zGcQY~y30R|oRvjX&cxK6-V4Lo+^l?-s{(tTT)! z7A2DpztH$lc$)WKai`k{ja`2FX-++!IYsJb7k0_a1K5pqk;_b6XGTtL@yW?8`_X-V z9puLMUTESTr$gtP_%r7q;(tOH#6G(%cT9C}2{wBve)%%iU@D2vpUAk#Jnp{t4b0;_ ze?)HyHhO7dwvg|inQw>l&3v!(LhT>sVyq(F*7?fa~ zH|hB6GwF;88l(LA?`K~@#gE=c9GA|Hysvwn#wOV;b3&AhbpJ``KSp`4r)}()RFyp& z6`5&b4JthwyvzYF#+EK%twy$VVb>v3-!OPpbE+czr^B(cM|4H?DnU~#&X&IcRWhF-_);{m^0+;8}*pJmHYZp1H6nWad=HW7sI>Zf=pcU_8U*G`D~W| z#*HsOL_GeR#W~{3x9LnhozF77lR0WkvGVb4EnD9Y&+9w|5109c?B8g4uhBh0U8QmI zr!(EL=1S~yZ(UUTe6-J{0bEGllJH)y)}Y{Fo#WD?{SR*p+~YO+tJuc$Edj6GrS|C~ z>#?iWv9~pijKz_$IP#M~e*CfEo)0Bi8rmxP`xkJ4FVXb}mbPsDSr$Ir^BYF!KKs_d z`3?JMdp|HAfJaln*oS;ai_9KGv*!W1OYTP}?{m*?*rq-$bnm{v&f65)ab;{TaI3H4 zr#$R8oeN_4&(cljgnDB>vS-d@Pf&*`AGwM-bbi;*sUtzTq|eut+zf16INKUum)Ym4 zed(K#n=QysBRUA)PUF)`;{!`KlHMe_A{`k_YkxYvu9?V36R>Fwy1#i$XMgk9fipn_ zD>7(c<-5*zNUjAB9pGWT-hpQ=eP6?05AQqqzKbU|OmcmM*cslp^WMYzPV(#`ElOHF zbs+P)$0oU*w7H};@P5Gc^Ianx_R%))=@idpz}rloR&cVI-%I$tlz!CX(+v%4OH>L6 zu8k(Yj&zjld#&jdn6;>}v3KobF9&7yO=U$7v*uF+W;!Z@#!Q8RhQ06(J)d+TVY$#+=RVEDN0LAQ|hO;jU@ijEs5fb~BN& zjC{4xp5$vK&(+w)x+m|2Q0#kQcQ4!z-iIFU059vIKk$mDwf@n&{_L>E&D~t%V?A5X zFc$W3{s{8-vl^fL6;t;Z+9&}>J&|c;Ru(nv`Tfg>ilv_h`q=Nm&@Gria%M;l(e03*h8;^;YJCiRFU!4Pd z9xq*c7G4V4Rg=!ZSAM(d(|&z#&+C~y0eyeA^LjRfrup^zXy&Wg`h8-oA;?P$EiXZD z**8X~q7#znh72z)^mu8K;iV6VmnfITOC6M7@A8t_i@60@kj>P3@`2kFv?sP<8sosU zB=k=~|0MjIf`5~nN#7VUw%i2q|8BnT<@;j3FX8(l{kiaHUSWPCA4>OhTAc5RB@w4> z8}qq#U|CBUct*NK_F5f$>CWZC*4J6Uyh8R~Vb>1$vme~W;gL8`!;AJTk0fxUfJd^a zn51lcPKp%`g->`p0dMy=a|h5wV6DuB&&dX#e}s<);S(L9wF8Zp8GNn=mNnD`AE)4B zgU{{Yb1v!VYuP6$WHZS*Vjez;l^N^ji3bPuVRGzuw4Za#&+x>Boo3HsPM)~h^x+q| z`p`xnR=RyK>s#=I=2eDx$$Cu-3z9|GnCG^l}= zap;j**P*@$-}&R77vXv|cHjk_8mpAo?9oIQ8C}WuL@RZ#07pyF1IzSIn=8N_Ix4l9 z_bq(i#&ap@=w$6F1CN=woYXebW|20VI_8kRk$fBYtKs+bkdYUSb1pA&_V?-L&VG-N zX4A$Tc(8OpPf8!l9yI#V)L27&C_RZY{6!=fZvFMJE_I$-5_J{U2=XWOHUqf4XIJ38?*j?WPAGeJc{r!0+Sen*@cj)mC zQ?a`({*v&lXB%Ygm92tqRz5=bAnQ5MKKYgp=fVBBI`8`~_Pf4WeCfbmTzFHqtZ*F%KG}({=!`%5E&D-u>G%48&Xm41 z=l=Qnkb#>u@_%?MaQEbyvD};62<|(5aQ~JuF4y^v{hXy72k!~w#4GDR^F8GIC;n1@ zCl7HxzRr}6qk9wd>G464~Fw5ADr5s?lo!n+3qi&e1UL0cz?O{ z%LlF);74Pl3g_?!y3E7{NO!ol-PN(B|9*Up^g_ZnSCWrIdR%b<=A22+-O!nLz17eL ze(#;l_Y&5KIitsm57QoSoiUK&jGh$d5-?u5YsBkqzsKUe?o9k7pJkMek9uwYWVS0S(ddVi?B2#dh^Vt8!{PurgI z%({ke@TP2!Qgn70*_N+no@~Y@(ifsv#jA7q-9Y(9`nU*OEXGD%f?a5QE@5J1<#Unm z#U0aA#LM>Ln@Hnx8Bd&s2V+*>i>PxHb;1wg&mA{p>$2rO+KUG~etTvJev_O_#xk-} znHSsnZ*M`y13c)#^PK=Z@iW4cc$5hGUvmN8PJ*VsyF}cZw`0rOc~ji$)yqJUj#F}n1B}z z&)(|eS#*pS|1?o@;48OE<&b^(5C-x3EYfF(oC7+K5xRN42gTp&e1sG_Tl0Q%h8}6s z5As35Ypcvy2FIc>0v)02+=w$(eTR0^uY+U+dL^Lk?Sp0Hg^F7X zW8YEVt$cl6eTRSiecy40zN^3AAELj%vVDBBILG}c@Tqq%iuV++X&4@e6CH*seM5lcI0^%*8#MIaw8P_Fc}{KpozgHcDffwW;-ey1wIs2w@Ax zDQo1(>Qhq}aQf4-U<4;k0i5jf(R(QUDLm|Fy<%Q-y%Xp6+2#jBou8V7-dSg;VwW_O z(w{QuijK&#iK4mfim3tkQ$F}Te7ooK|8w}n{;Y(uA#x&Vw zvdQp)Ov6`V?EDINAyWtQnDc9=X!8cx(*)MGl0+UtXVE-(J9@9;l}Bc+U&kAXPiP`0 zU?H)87l5m#T4(78c^2nQ+wq=IwR~vtg|*HXY+8izh_i6Ux?{{pLtA3(j88I3%QTfMaR1SNu8mh z_gdm&q~8QfqhMJUGX8jds|(dl(^-^tz-IObEW@8Mn>^F=oEge%?`QPpOWwV>dLN_q zTV0>3X#+hf9NesOl=r@U9C+%&z)9W&_4k@NS-7i(aXV8l{V;ng=#h=o?8AL z_@D;)yOlbDQ#iaq?OMFm@?GPq`ZmdH_e11urjPzSjK6}d%;x#M@@#ZLY!)26f;#-P(PDY1k z#c$m@-HqQ$5PR6dI&`Sz>R6II-{(BXyD6_aGW~yu{-cM#r~X3=^&cPbSlvAor+*v% zf$?i8`q=XeyLs&0*e-1pCoCT&im`J+%SNfFy#w~#ZB%F zu~v-y><72Zd&EEN`El6iq>cx*nfCi>`iealvlm%6zFCpe=WM6b@KQM%C*t%QKJgfb>@ydeOzMoMR7!n=8yx!d_ z>)|!Nmi9V;X??`mIu9EjJ~ciiEBDGL*^|$;hQ3!sSQFrzk(XjOE?Z}G%CK0!A4qQjW;02h{z;qCp&Ly75-^Zcw_^jIY@JKto zw3DVC7k8m9;j4x`o*p8G+rjVQ(fS4Hjal5`6hGkd2Rxm1{($k*ZKiL`HImd7(fPQc zi(>!zpOo1gF}f-)4F$ygW)a8-Cp>;HC=PO@-#9C5pk*7;HhGJ#6L+t*(D(vbkU8EbH@a)Lp6i z3p&MPP1-*mx-6DzB(3?p&Uh0juoGUii`I zztVvIEq1|93Jz`QtR=^}sd@ z7-ol@OB#W-hWF{bM?+4WJ|-sedy1X^wpyQ15$WL4vpc={gKVcS1?c9Vt377zP#52J zy~p4?N4yreOf`X*g&`-s2)qJEe{*4{x3-c5haXum0B;<8nzd2%<*iBwZyNtgk=ZaZ zoAGamZe{chJR7_TUu6UPrc0$Kco)AkP?o)<#@>tsdW}$##>G%{^Vq9 zcD!YL4Y+CtrnTU_1Dvl1=NrHiIFwJ(J6Acmmb1)!{2WIwC8U=&a9@nlr&CWf2hQn} z!*xEwQWoo0I_gTEdud3?~WN#g^mtIO6 zy3a+t(tm!Z)=Xtf)Ut;ptoj#+9L*tQC&%Ft=_pU0{_8p9iE_%Lbq50@`7-tdzl}Um z&dAe3@=c`v`iS#e#lVuDSWKNusJnrB8u{K7a_asDczy7vkjq|VupPcq{L5S78Sr9w z2K;IM;irYi<4I)J<(Yz<^FqIT#{ME(ulnWlZ?ojn?uRx0?zf;1Ckp?_=TdO73|urv zoKK5hQSbrH{5o-g(%+_hzFV|Jj&jPU5BL4I(*}5vE|U((FNZeBrs1hMq|asj?KSd1 z%LKGHc@&f6<(Wk~Ja(yQ=&Lsc&9!cOPBa8wPwt-;4ShHoEca*EvE^r=VT}5XezpFu zP7@D%X8%_jUhOZH+^~KzJHl8Ee&N+03Wt7~wm6(8U04NvM8ih%Hi_>!cU}3>xe4$t ze1`q`;Sb59S)bH+Z1kn#f!+Ot+DrN~-9zDPUphL0&Pc-hhQFg{*NMM>_t5VM*p@Z)U3(fD zc$PBjX9YZBRrs4ns33J)*BNq$!sZDs5&zTITojNWVG?jU|91@PmoX{V|0pdDw= zw2r%pb>|G;e6U=Rz^-0GAD8ks1^BAK*~Ex5PU(wCTTH)~Am7NR%b$wJch`$cz^BFq z!-wGV5Z5(>vGZhho~V6^G9ftHJLYa7TN;`9L;p z{B)7+l0Ys5OQIAw(Ji`Ps+&r-L+HC!Ezo(DGc79>vn{wYTI#P6p9%^$wc1;C# zjclF%{t=zBG4k~teIeZBg?KOEOho)E31m*OIa*&$BKz@Kq|N3j`XiUgDSSf?Dmc$p zeaP~!@ZHQW_}*Kfvv9}8zP$^3$X8bIsC){(OMwg7ZaR}G<6jZI;YH1}V#KbBM!n!R zjf|ygLhRwgo{X}lGuOR~?kRl8|948aS(z|62EX!i36GjzO1}vY8V_y+FY$#D=R3BH z@Ps|O%GjfpZfWRZ?kxZpS}Uma>``cC>`~ICFJ+H<_`gB;r<|vY4gQ5oXlHQCZ)1;A z&e)^EKXgfe^LGpXq$>tU`Z5LXd%=CW{;lD^a0vW+`t(e6_)}Fj??2+#e|G-yHI27t zn19R{E@y|FczeY88~t8t`5hYMix%)jY7w|W){{%XE&Y?dkyu3k!KrX%#);_zcSFf{ znif9Vz(ZTad5k)AuZYf_I0$a~z>W4jWYMpYx|z$ToAn%R;#y_zWa!sw=~oZ^nzQNm z%U?l1%1MVR&dbn`d@1pcXv1$qKgt>UEh8VYqjFORM^%xhjk(3@lZp= z`6crBjFrdW8EW?v4>K_w;{2&QUcaiy?Mu;}SH7MGmTkcDJ<2{ZMAkC(W$~s_ALqE|3xXe9UvR@64wdU5Z^8-9~m({O|@B5mGx5~YKwz?i(8UtUUn^x&} zvCCJ9G4A+?uOFMut|Rq?2G66=Gj)NsHHY`~i`sv`Suf4qzI4kMEDTnEPfIkram!|X zrHuKK?|Y&-f{qVm{P6}SL%?-;0IvVCa0xd3lm0XKF?W~eUe6VLf2H?<$ZMEX6rKJp4N3l;E$)>g(_exjeeyXzaS ze#yOtntWHbe(~1BjehTO{YmcqGP&bLt`>Y#;DILXf8zHn8g$MmX1iGhvXm1Io|T!jJJGu_5JwRPo6@zq9;#b7%uTR;=C==<5`HkY4CThiF_rh_3UkXRHdYXM7zRg zc`U~q3*K)H;9ho+%UwSHI)nV}yBU1LPm;gi==UJ`YuSqYZ9Nm8-yVSBT;=cIEDWyv zwQR)}+6sSP@5$c}ecuyhEnA_()-1jpLjG>I@4XUm@pr{wSW%z^Sl$=^Gn``aD=#s~U& zuJZRg!Dr=fuYUipkiT)UH+KH_#znsGiQ}XB$tiDN{yKzjD}N8`_uG)a zp9k7MSNVIu!Z4Kl{hjaoxyavl0&u-u`TLaGKcoCz7JJT%`5&17W#sR#eC3Cdzt2GT zw<~|Q2l{!g^7mfBXXUS2zyDXr-(|5IpFW52FNgeHhfQ&&@h_MBjd~mMmmk3Yx!9k5 zQSfc$4}at!`6Dj;r{$s0PtP>}OJ1EV|3Ue?>n#44r!5SUKeb0Z!cT{nmtVmcc$+r| z{HZSwW8zPlE&O!ci%>Qn~rZ`vmn*trq)&3kG!2h|( z-xT57%HJgY4vc@u!=I7AKc7kd@&oOktNe|$Fj)EfGcf#lc=^06`OEX=i5Exy3~&GW zt;pa0$=SN$?a1G&b>QWU@>dZ%f3W-+7$tvy@Rc7*{vIcGe>uj#FEW;$tNhJ^4(BR=bpiYb2joxw zaIG^|vYw*xI(T+*8SswBZ;rmttc#v)zIaIh-roh*D@K^{C^x)X52&*+d-kf~e6T-7L+@8pe=ZZ8 zIpkaM39N50zq}}R@sG0oJM#Ni(C<9kpWvD1Tj`JJqP60RB0bGH(k8Ct&Dw$XhSCR} zZv`Ji>^uIK06wzL|Fi2MohE)Sw?8&1_*i4mddLC&E@S-yzh+Hvy@R!mRFrS^{6X(Q z->34uns2O&BN*g}eGfBifSe_uw3dUG=ZryEpyDgMa@d>zs<8 zNY3UAgE_3DQby~q(0Y?-{i)r@*QDw1Hu`(eSND2o{e9Lnk;4}ja+g`X?=G|VL9eTz z_rpFpd@SR)$-Q=RU4TyC_SuGvZ*F`-j~gHIwexeI7h+Jd^_s@4(_`NMW)2=SkL_;v-wVpi#M(&7J{QiA#;w1Ie+N@=PWIZ zkVZaeo&<-91MI2TPdfBX&LSPUiLU0}k-hFZruJWX>uKgpCFoSHSiwf}H3_znorxyO zHxiGA{t(@@#-_WI417DL#NG#did{+i;7iV>JnP@ur<8$jE_oV&1Kw1ux`A&W@WFdY zcu%nwN%7D=;I{B7-ooQ=10OUu@WC76eb@GJV@wRby*;TtL#M@yXk!%o%^KN{Cl2VR zHXn_>^;dU)X|}#Ky0x79b;g98iZ>2?)vifhr~QD^t>?4P(W6t)HdCA5wQUYMf2P&l zpLmx!|1+>Zac-W8Aqs`^V!8+7^4mEFc&@z%k+cN+3s3iqF!zBZcqZ6)D47S2Rdu0v zn6pv!o}9%V#lZd8^09r9cpT|Ot(R7UAIa}{WJ)nw@l<~7#!t9+=iE;$oW5n+z9q7i zd!jxcVLqnw+y3^G-kmb;o=7jBbh6?qb>?M!8FC6NwVbVCXbGQ~`(C))Ah9-oS}k>% z`(Bp1dMmyRJv71Q-3?58-SzH#dp1Wz{0hHi?t7sQ5C7@4b<^$`;qKo|*!onL>NITw zPXc&2V;_D{3|W3AzE$^ST$YE9-AA7Nu@gQ6O*B}ey@Y3N;mqR^YXVzFO%Lkv6dJTS08)vDJ(vl z{gBetN%D#ZR8IGu_38{q?vd!N&ePeun?k=C8>_HqgTDI<=*sQTpeN+~{W^{H>`fA_ z?3nO-`tTI-6pDFy40sf`BH5BpO|mYT+i{gE=T})7_vG8%zkNmKtcq34(LbCQdLmK; zP0$gKA!kO0Tiy5))%6YPI!Zkk=0}{99iiCT{0k4?|7QPfC!yci{E%~uZ(jYAM{8^t zd|sF06-@j#XA-8+&x%j)od~Q`xIYs7vR9G2TO(VEKib;6taVSp$sc6yQk%jz?b%+g zdwe42$8^V?mAG@(2I`8_aZ#}SQ!CyR{8}^pr z=MH;G0Cwu|U}xX#*i@wp`$^eGg1r)$^!prP_w4@ss=a}?>Nj_aa%YK=ecc%^TqS1BG~-Uiya@Sbx;l0>{DOT@#@WbJh#iUp#lozsOzkhqz1rrHR}R zK85?inayRWFrCm;1 zys)cqRNJ1y!yAsLfB5Y2EAM{gxOe}j__vKekB>hH{?%XU4Ep2t(Z1tk&GgY3mfgn_ zya)UEveE*5Oe-zW$3G}7(8qmB3-s{?r3L!=O0+dH$pqJsg||4n*78qWvTn7oX$Z(A&O$ns<-hkE%`| zz5hip1?as-X#rfUQd$5PUsGBD7Y`^cfQw~H3*h35O0&2~|M2U3uDtv4P(r%pvL+|F{pe zm^-ygxO+G?GqX3moP0{VojXZC`}gjiaK#(GT0hg-&%M;oUC16rl?gBZ)Js>Y}hsR;=?|3;pXIkBj=<1cy+t^R!KSKUju|1ApkND}= zUYJeKZ*yOo_@62d9Sz*@t7yAdX_H8+rJZZsv}cue4Qca> zyB1&b^*xKvdtCJ!dS9pduXXe7Q2p0NrXBc4S7rwB0(ZnGxFa6AZ)(~69bVX8V|jsbE5i%een+r3{k$*^*fsa^r+Kvhh>!LUs*gU}Hw!lb+TWwJ z0PR1ov;gftt+W8`o0Jxy{U?+bp#4XcW@*3i`ETr5{M_TmkG%5y@!ik8n4x{8kM{NC z_tU;sTuhIgvpQMykzGvk(evqNP(U+F?6IH)x|J;DSd>?u-h*RmtpOLPo z{(daod80dSJ|}o@aOJPje)r!0THoxrIg+;gdX)XVgY@X13rK?o{&Dkud}UxP(;UL1!EEyTY4CoP572;fhX&E0 zMrj@mp8M*aDK!U~1NO$V1M<^D zz4C_yW$0DXM3i-CCD=$xz->NkN0$vsgDwVcD<6+44ceG-*3#j-N`nq&oQ3a2n{O%YM$#B(7r*?CJx88>{CL#| zcOT#Q^#QnVw)oH3J^joV!tPl2S?-lTkQX}qDrY83jzm+9fwv!-=~R7{vw3)rhcD<7 zP4OL>xwhnUjNUyv>NV;+%^iu9`|JsgofizQ@3omuX^#3-@2lauX`GW^J;=u5PWQJn zt{$3Z$5rNinQ;~0%MpApo_!nzZ~pO=zK@;$F_&L8M-W`z`&53<&kG%`xMf7_=bW3F zcfV@~46-2(gNGw79-2<)up#0(Gs?c@kaGvNYZBX8b77tLHiP}Rb?mcEEyf?V1mE3KcaD8B zIyTGSH<{Q*&HIz2tE>laav5jMHOuGM+?{OY>?h{g3Fg;T&j4!!^XtX}dF@)lQ3T=Otw2RBJ^n2**8MpWyjqF?pKKkDVl6yU)+L*vnH)o__bd zyDI3FY{fUUjC&}XYaRBu<-9L*2InR%Z@DS<>`&Z1c9p~P+L~UzcW+Z9k2|HqZTQAF z`PXsHIao{S?^=A8?IGvXk^(29vzMqN5$3*3;QJD1y~UT#AP+u`cFtQ_GQ;>nPV&tU zcddtG=#vnAppD0K9*v&!v)O2MQoF#r5h06!gsMy25Xfz5MRi4NF-{o0# z4D<4gBG2i;G&%~6@`jz6MopGR*FvMwuim?Nbe(84+R*58tnq!=uJIWfE%wo9QGiCk zH(E4W?4!{lOC!GdY4jf+j&smRFdu`zPQYi!TEouK6=CN@8}hs)~sC%@x!%FUBvY>8o$^w z^ha~p`P<91ZpiN?=#r&j=XAK#toigW3ghQ4jinann|)=;#psqLQGEDO=MHyWbdx`x zcLebC6KkL~pHHziBcJ&M{N10D|Ge1k!|nL*vD-|2>Qib-zLQ3`rI+$thCV)0%UNr+ zPV%){{P%@j^{3$7xxm%{Y>nu=S^S>O?>XRTAv&*#HIrFU=U`*V`K@rY1UxPVpG$dG zgU=f9Ii0)>;Bqd1)!=iE#phh`*)V|5sPH)ld@juAug;0k2dzoQPt#6+$a!ifupFWN z6O7~N#{3CrHW%Gdn&W&Im4sph8e86f-CN1PjDx@f9%-yBrxU}JI?<$ zV~20N@Q)+h@nY^`O74w1$quc9g~p!39~|`kmV11>5gytMp0+TaY-5dKJL@$)tn2J# zU49qq^1E4=-y3mW+81#S?~gbyAHa8$A}+s=^Pvt~e}4FCv$yu>dT6j=fCdesVMheI z74kRJxsdgc(Zk3yH_tiRz#o3!vi#7oW31~PL*FB>Pp~#RR%=~}2KbwGp1My=k45uZ z_Kf~6ecleedctN+yBB+lvqdxOct_DSl&^jdli%cPxgqv9+S@nP=Aq6sbz?thjdjo-&Qjz}@k^uO(`%78 z$rSdzqq&698Q^v_I`Jqp7CuMU@f#W|W=Y>o9%R7ek&M9iCJ!=l19^@%f%}C6^dSaf zY^o8uFUsey&g?&*Putpyjx0Dj7c$8@<;8{Qlqk5bNA{4z(><3O{HE&BA%hZD1QcC>N{rTTK2JI`dCdAIY+i%#IkL`2Jd+;ep|_b@T{*JrUs>{D+-%3_Ixr zc9J)qnzq4(!4|KVOv_>5DS^9ep zZT2pOPg42()j1E+|K;>Qy$~C15r1tV^4j|^>E{fO*E!oYu_&9@Kl+_B^Lj71puD;J zHpAFZ*fwGZxqdsn;o(|?YK#)J4mbRX-g zN!C;5v7QwQO^?+*O__!6Sb2(XC;8Uyv&BXdUuxE|o9diA?(dd-3irL>ZaFqsZ!7W! zzLrP$jjh`S?tOMN_Hs!qgH<^m!`peDOO*ahVIKgrQV?r#gXp)iV*_#-}8JJ9k$QJ z4BglLTb}cH-^(+?^VdAfdG6MC<_yp2IV#ePfrXc&gp4dM~=Kdkass`vgz5yP2oj{a1ab-Hm$E?&EsW?gpM} zx6^#TuY0{ok94my@6FvE<{9b!o_Usat>vlqzN>fIYv-x<{)wmBTfmfpzG1%K*WG5)Bi&y!@6FvS%rnycpm~;cwVLnub>GiZ?KJaLJ74Chc9!Wo z?R-g3+F7b6?ff5}YG;Z0eqZx)+&eS=U|W`+eODd8(Z|c&eQy zo@!^lzSB;lp0x8xJ!z+br`q{z^ZmZ=xh6f*{ZaGY+&#xUBi(;#o@HILd8)n-n)fev z&(f3n-mfS1)$>$+GtKw=x}zpN(p_ubo4co*XQcam=2_NNW1e5`o~9@DRO?AS*Yi|8 zQ_c7Ly5DWmBi&Wzy}A3H<{9apVxDDPll7$hL_H~gB~O*FG~e&*t}yA5?lSY<-2D#o zjC7ZpXIa;!JaescH(jCnBE(vui;5#o{p;E14;+iy^9s#*qS^QJ=v+I+!_{EBDR!uV zr{afdC)l_h={96>HLm{7?*Xw1MgM5PgU&NFmqpEvdR~`#<=HB7#Lw|<6acl_1 zql~b4-hgfm*?*b%6BFM&E)(Ap2S>WcDp~L1G-EfH0#jMY`5T@62JRBzAPEjG5I*Tw z0-UN$t{5rKM>8?032+b}L*5eGr|>{*rQkg94woN(51hgKANsi)E?Ht>!ltOzxsLQt zaeBG#fKdOAMcwm5hB`0N-0d`*c)ULn55?2)5_KD1qJEvRSFX9T<)2b`OmhnF>{;>0 zJbkYO4*I6=`F8`CH;*7T$E&yE+KAz~WL3-7dB%o(SFDG92j)B~_|}WPR9V&g=yy5u z%<`Gpn-1>kE@M}1>}L34StbL#iW|D<-W2j zNnb5F)!m-Oou@Ae9i6xFW+%BCe65T)vp>Vxlq<;72Jbb)>#h7=fqb;_9o|feZnAT* zH6-tn+c+|+*d&i;S-9;fF!Pv%2jdJMj5bc{+B5ZIDeWzz4f>U-1AZ`lgcmf&?QcH6 zQ~m%iRxd$XauM$q_l8fJNb~W@G(Vp#<{RZBx*ILTo$Hn1*gM;?TN*>oeD1cah;Uvv zvMSwS;*iQBHs;FhTNVw(s~!!+t9}?7vSAn}7~sTQDbqIaMiohoE<;)4S^?mwX5H!~b;oIJ!ph{azn}Fl6+nIg2%S{9X!~ z(fwRHvs^qUzK=(-6Ft3x&JA(EX_P^#V{Xf>@jxUo95BTqP|CL9{k)7x$%j1JgEm}_*MG~MEf^NkyplZ zoq;9Ze9De1e*58A>lhP{*csFLe-~%RBeJG7t4s5#d?)c*o#FkO9A`KDVFEU9IOL3< zG;nrU`6OVmWyUiemopY8SHsh5LS}5vjLW;pw-@M#9=7u4AIG<#8~f^v4anGy-n}mNo6X19oMOBK7ZlPvU2db!L`+6#4;o{*J&?6bp!R7an0hcLbUVxD%x3I zsu&G?jr8#ZwA^CsF!l`H5StGzGj`Zq`rm**mby~ZafGQD8W< z5ufO0e4<JAO7IB}zaPATq z!F{zOyAFj%b-ffmuj_F5{H~W-Cw?V7y6e^OgW zh_&CH=k)E(b6(uX_YKHaK(2&W`M5otCOgiL{l}BcV=P`z^L~4Ar1Ny@{MdpLo|PBG zK2^rE>4Mmu6C<7D&kJ=<7@OC5)#dq}lO}{ally9&@!oXob)P|aXgx3XEk7Q3H+bkd&&5Odd>0SV z^K;{2vx|pPKOQ1JJRpy zsiYsXfO9tem_tA2(ht@G()jic;@j)PU;5&rfqwYcS_jcHIx;ri-w)nRKUzn+{pcC# z_9HwhcR%pEim%uE`yo5S>j!IC@|Via%1P5%|2>+H5iTau*D2tl3S3MD7uDdR23$-B z7g2CgKY)uf@^a_M;{rdhaIqkl4A=kn`gz9{^fOF9 zisAe)bH{-Ooz5pI6&{ zdc65X`6%`S!vSDS0b?I99tOrEz<2@}UjxR|12FpcKo8=}o(p34`eEeVz!)xeVT=~L zFt!%whViru;~B>^^nPL~{OOHt*iVTlW0yCsg{H)|>u#p$t`9u1bnrN#HJSUy=ia+* z+Qv>YK5gu)&Oi5;>|-Biyk?-y;JBmuK23ebp1a0p&s~F!w#eFOtF4W819G;;+9Ms* zx!#2{Uv`RT-^g}bG+?_i){jl(D&J1|wQhN>p>rRasUzc`X``N%L)$wZ4#!h2Sq-nZ zfyDunSSHdr>cY9?k=x<^w_;1B_Vy(!vnXZXFg3T1KvNTwdn+ESV z6AkE(p#k{&S8VX1Y~1|UoA+w(gwX@GQ3W!U1|IrXj(5PFwo`G)d*QwUfYS zY;$-dxs3S;Jl)JbvRSONNp9H}?D~*o=cOzUVdv?$|C_OOH-`r7Kgq}xaIo3he#l62 z6FSq%(0KKgHq{>SuTC>_2K=%Le*H~n!C%t={+?7{dC!Tzec*4u#h+hhT1j6K8kk$SWAPJOL)JcXGq+d)Or8(I zn?sP#gFCUswX6TiSEfR9D#{t0+IfP9H^ciA;VbxF{15MA_g@p6!rHg&>cop~M_$ujt`azJjz-$I?(P!-sd!jpH8fnX7i6)QKv+z~lFwh(?6PB~BG*9D`)CN3*o z$$pWtI?gh$d>tCS;I|i4{$^-&B{XU+7}&S`AZzLw8JK|#++t+l1^?VcWve|I5PY5t zM8L1bqw(2$I9W}f)>s`TTzNVS{uK=?LZLSK^glqo>|YVs zfYUL;X@$XQ5HH8dU7X$zPCdK`ryf64g46L9r~YwLI89R4j1Ry!-r}@eI2Dexern}I zFjY(6S=khSBp46aOMWb|kA2|qtJd8Wi&;1hKQMe8&%whV=X%!?5a7%1PrfuDmlPs!Z&4e*3%)GY0Hq#fK`%+8WA?lxTXSu0=9x-&-zSnuOxPk~e4<70Tg?PJ{df3AtOJi@qMVs!bcik53} zM*vqdbS`oIJ-KvICHSiVe^Kz~ouN=GxuKl&vdZQvcQNJ0Q?ByXfpX(-rT-R|PYRZ) z9xT@kz%q4cSV9(-h>w3zi^{9WS%?BJ(|u$MQameg!|G#}`D8)zD*2 z4tkW**D~(86+MV^Z$^#=(Stbm`9XS6SB4&Ia?|5-;h@UH!K48kR1J-T?Y1vN(u1v8GLJoxGF zY9{WB3|1bnuac_R=deE7r(U+kq2H=o-33GTKuSrXQj25Laq-{JSBbM z+RQbvHqmV&@K%CrWFQy5|AKy-@ryb<{x3)N4X!CC+0h!Ak)ay&!F24&sC#x+m^j;9 zb-u%+p|4KrbJy+cUH3ceSr)Zg;|pCBoAALLckGUFb?Pe@gJa=o6zvz&{+NjKeT!%5 zR{itveaNg`WaHc57+j%|-SuJc_>*^nzh+maO>D6D&8{cu{w`PlyK7BJaM1uR3@w05 zwAiLPpv7N`7T{Sp%D1#oEQH>57tk`E^LWljHfbXt7$ z_;BF$|NW-_r33K~=#T`u)ZF(`gKaN7ikHv@%LG4TLp*Hxt<={?U{sz5ln30Mr#=F& z`lNV`6#Z9xNEjVkVEG_utF{xTA-y6y&$FxGQM>N%;x)(zkK8&mA1unj2mbf~-7j#L zIWO+)^uO_cfc`a>{=bk+`skkrox{W7RZD00d=cHX8_wb>kDk}te(lahPoqD4_u(vr zp3I$-_%PzLBF?X_acLOAR*+5Qj-h`M`})JkK6FOzR#il%xjGyA)hu6W8*86_o!>wOm zxNDu+>)o}iaY|++k8$+fzxr@2o8P1(qo(~H+dlau7mC+5CODq8oz$<(w z7Q6go=FUs(JWud5PI>E*FX3D0Zzc|nv?Tc(sL!lPl0Tv~$))69W_6|f9p1dMI&oM{5F2=DJtV!k#T9ce?`Od6KN*0#dcH}o$X4|oTXzYe#N#gO7yN#}Q*CffW zewuT(C}Vs8&A`=a;qtFZ?g~vqf9*+7K4Y`(=DfCTA!A3&E=kz>%$g+aoBCJ}(0%ff zi~Mq5Kk*GG@C_$d*D_xiSd)wt>h7xRV;2#ZlB>@zBL|W-vnENOJy`m&7sTVW`1Bvt zI?guNo@D=|yN2k&CKx=}@KY!7QwuldtU8Mu)p?$;KL$SwY=7`^YY&OPjCcZH&a^so z&$YgCX1&sDOLT2_>FW0JhS)UdDjlh@GO6`|S$Qs>Omgv**_*NgnzTXRm5h6W${0cM#X`6Y~9p+Puiup20Qs8Q!U; zt{Phx_|M2lkOqb~q4_SC=F;Kf1;g9uyow37KKhyP^)th-e)y|sbLv}Y6MlQp2X{rp zhXc27)jBuG=!>_)dpig4@s@dyGN%5WZ?oURsmGr|oYKD!`ukVz%WG*V`c3ru2);GG zc)XOs?RCC#J=j=oKdTkrWagsMKh@BPIg6n=7(S!(3bHp)ZIdG5OAl3!RTh-b`8eT=f?LOPu<3fAf2O%orNLf$&>PKc@>9YinJcUF)W) zE}cX1G0lzkAs6;L_Q$56Z{RR7LuPJ7+05LCJs(-Ttuf5wC3Kw!*DdD}N4$&rccWwW zhMd=51I`}acMh~^Vk5Up2eoW9x-s;w*f4Zse49HCC3eDFJ<^jQ*;Rw!>j6GvR}~Dv zm*?|eiDrV;z{_}S{E>|17qH*QwJF>)D`h*$e)xavy?>n6Rhj?)o*ytE83-uqSTp0O zXqf0?;Y7tfGb$Rkli@~1yMUvMM!RU#(l*(QJARj3wuL*Y*_v8ZG8*`7u#rnd8z`G( z)cS+U%8L8P{16cl(X~6$`95Fgea?NK`#tyk;+Ouh^LWf-?s?zubIx^M=en+QUDvtJ zIh)6aHq#;2#*F>YS`y|%ja5F>i2Qu0E%XCA#ZR*1G|!oPPtn;guFcO6+fLq@<}T&3 zwwQTtVm!q=<>b*AJCE{)p4Jg2*490jdm5?tuXwJ{Pf>UGyzuX?%2>xE7uI$>d~sbz zPxZ)-eN)Ohx~GonaJZ*t;G1BJ>3qR1?7wrBcf1-}+d@o7+PQs)Y>_EEpBiKmtwr&K zat&wme*@z&hdE|S*xtieGQLwe`&I9AM>uCO8hJ3bEApd!=+vB8=7aUbUsq6mW!R3( zeO#b&lf(53#fH+9cl_K{UR!e&{H*`q#BY*zbRTioI_lXFm~$tM+%xCh%NVziFC6T+ zIR5oGYdr0|hpm*Yi#bs_dVkyob|ugRZE0xhgti2^I*xwHvco*V7`&Y^&|Snn{$J;R z`6kIRAz!>zd{GuN{`aS?9c}odKFr6yRrlrANAj`3!QB_m{{I@SKT0N>)X&vckKG1s zZB~y>CZ8Dn(%W3d@2C#FZ**NiyUVC+8GV}Eveog=CgtKS<@rkLUdlMXAx4f*ZAaCa zbsed(BRe`Lm31V`sb|d99q9?PI=afQ;qw?ib6;-xsj9z*b)}l*nAtqLj%V-X`w~8v z@_9rDyjp`jXl%S|p&8kYH+%&ip*>+J9jCJ=6TD-vt1k_6tzF;5H?D8C%;}VoEUK<6 z#cxf}-weOC2ALn%!9Vbw$wP+Ui+vk(Qpi6E)(QG;k2rs}y%iyietQ>2+WUjrv-~dE z9cp`q{sR5h7%RWo$D+_P$5$pd7oGFv({j9}*v>~i{*pgG+T54o`M=1L+go7xLp+2} zR4F-|imf@>;H}ZMDly^t)E9WPJJL6w%&*xLE5hTGi8@sZ6@AOc%pQ}86^!fTcjhEe*?(u(r^+x&Sl*sse zHE(>v`D$Oe#wRjgZG`U4(7gqnwhdo`dACdR@n*{}qSx_}<*_7uo-8TC*Mo<)qfeQO zJK?W(;xqLcneiOSl+Bp@SuK8U&BU|jHe}k{lfl0oXOc%0s zK6h4Vi(Nojo!y|iD{Y**w|4~lE0{Za%R2l$|I!61#wgKP6#v(+zS`Cej!#kl!_pbx zxI<$%E76gt{`cd9r*XAJ~m?8}+uMOL|Y^ zO#0HeVlmS3n)^#vQvVXZUm9Ze5PPud*t33aXe+LAwyZmYx)QrE#k=$9zpztojX8rF z8SG>ZTEMwC!S_bQ7uqwZSIxtIT~7Tg@Uj1ewiff5KC-qzoML?Zidl!-s_mGZUmDAt z&zR^8>O6U!K;4s&v+~f6C?A)v>lMfEoP-^Njvi;_IIusVeG$s@trG{9=iVv8h&h|_ z75`Ly#KUkhe0WZ559dSPZekr%iZrL+V0=yczVKF=O7TOregDGT`xkBw;JMZA|SH82e8nBt*jo#kz z{7&d_@>3<7i80kWY^ov0$Bo}&92sx&Gi#Df5u0h{X&s$y<2#b=)U)Dx`1Sqp>m25f zH!we(%KY%gjwJmjZp8d?9nap&vp?tEk-S^RyPA9WeuBX_oIlnU#ZN)*jBLY8DR{}* z+^K199U#L0(!-Ab=Rqs7RnC|eTOAhD7+KwxLT{!SgHGP>LU(k-pR#p(OkAyme00U! zm8(9IT=go}Z06DyykquyM(A;TZeq@{@$t`GU0_`T`{l34=JWLX z^X8+_J|2DgAofCYX-8r;G_}Pt@BdHyMAyHSp}cB6w~jG&djdP5e+_Zss`2671lj(u zzVPrT!t=xwt8#T7x`4Q|WJG^^L)%cXrT=dCMN zEgvRP4UOnj-^QyPsq;h5jNkTEc#H8c`vlREPXCCPWhFI~pirJ%798XKW84UMUOXjB=^4ZXdiI=a$D@vbF7 zcy2#<_kcV3(xz>9kBU3ffio#HUC^}+`o0O>%45;|(6t!P0p^?eu5 z)n3;UduI#Jdltts-wfBtvU7*i%j@0%-MlLdR4%m?oyj?7Iy<5hSw$~z3V!;gcyes> zchd0kTRx0lo(|44$Wiz_nA^F>@#_;;9d7$Ca!}0O0L1k*SGv0aw($G{uv`b7lX?DQ zc=h{HoefX_#~br``n|jp-JjSy1{x-X`nD2m68!J)DID;9+K;|(^nHol-^-mFFP237 z$>l+21^deq^|U)n_BH<9EO?+kf3G_}GJDCi{jnQFCy#JUfd5_u)S_DHU)AfSxQZfWzN!j$Sv`eC(^v*=7%(NBInaD zfNv7s`y&qWK71s{u z>ev#iV@s`$9g(MF|Nh8JZH~q~Jjy~l;4I5utyWiR%71li{+%~ID$R|PNX z@44`>WU!L|YtOTDvK=e;uHo}?Z~;fzl_k=r75vW_CZIDp$!jhcDX6RPjad~ZMJIn~SRs`59 z#0Qd`(Qq9+B>N=I`E5<~sZlw=(AYVnW$PN{jIARM#d~gy(wyNSK9Wu3$}FTzqhi>U z(b^v0-*7#94I4kT;16l&$a@!?RqHA#-i?{F0H(xuaBqo;2lB4;S{gZ|jt9=PpGB9; ziNGH;dnwZNt(hFE2d@t2wG{muzcifB{*|>Y)sePXB#;ZO6Qx|tVdt1I{^Ia?r-u)H zjnTgwv_9s(ALo6)g!Y#fSi5Q9Ics=Ha1`d+w^=pH@=c}Xk-2<7k6+HxN^w?}%MH?f zG%3#flAcbXZ_*9Qzb@Widx4#^XTw80dtq_dzn_AOYe#!T=h^mZ-TLGr+E~o5rC(#O zbv9!M&Lr-!D5NpP9w6-tOdDG$cehWA>?VuDeA+tF$Xz7OK}VW;I;m6VH%afLk^4K5 z0i#EEyfyw0|NKH*8b7Af)1jTLnWR|@Ttj@{oEJj9Y0d%bAiL z+XUmFGs}Lkg1NDox?98X8j^p+yTaYf!^@!;|G#que^-(h!FjL2^A+(sN9jDO()HJT zQ1dY3!8+Z&YO9I1z{t(R&(|Mrdx{(ctsnUQksH4%zb}r5ET83#zvDC4U-mnxzelQ1 z3H#0eI;+#24fk2m(heVRnPsTAh#CS}^+;i`iAkn)4~|w$ILm zFJ(LKVct-C17Ue&ZOGq8()Mq)eUyb{z!a+27m72?{0(j zW5J)e`-*b`#h>?hSZBDiBC#=xH8G9x@oT_(n!_3$123N{HUea`CqInX?pcHNv%&;PT~ zeRIP-47JRq=vyOyMdD7?W8LAluUf2q zdH#}p=JJ%qW9qMbx=TJ9&WD%xC*Otm>&YB{y<2qbfsQAK!C$UO+Var<@3M(x={t>O6`cb_4f_KaMPr+96ie4=93&Pw>jR%|9FI*sRGnu2$e6KHEvfc-)~ z;EuPOGj()UQ96zE+heR*>`S z7s6l4LrGQy8P~=wY6BUdZrZRp{jLr1>Huww?yn8X$@X?_G^h<^Eo|eW{C*%41GVw| zgns%VS(=<{TgBjp+loaldWjR>u4y_!zt=YRq-t?LK%eF@d%w!9V5Lp%t-AXEnYf zK9kned$8@Eo@VX4*1l(dec_ax9MmH(P6kYTU}wnxkC+_i-1#)hX|5YXn_wneyBD62 zza+nYhV-;zhhS`UH5fR5{?WIyo?+u*vPF$g0d2BH<(E5qG_*xSTC;V^esgs;@a`Pi z9`jk|-oV_askP8r-4XD$s(3B?(!~4n4bI@sAn~ZR70q0Hb8Q$~lpgpq`u`*P?flp9 zzV6(4cGO=FxO2H0f?h zHx~M9#-lzQ5AG#FA5F^XBk;)5312JLp&U}_B@-XCbEoh&v@&K%FzFA!L*Ic`+n*CLiW_(0GuJr0@|9p+j33&b7zKOeti!R*r>W(@@}`!^3W;q*~UQ$c=gJvEG{ z+)O;Bb!>h-r59gK`xxzB$WHb`cCp{IoBgIe>`i^TqL_OYi@9g9n0pqBGtW*f&K#Il zoOy2TX*CCD6r)c@6F)wM-!c5Yp+jdhCD~V+;EZ##F1O6`%5@fJc&Xxj!J(qL_Wt0P zZQO?M6P$-&#zODh6dbyDwv7q!PLl8L+(i7YmHL-6=OQbqWyG3@XLK&5tXbPAUB5v7 zd_}Q|Yy6hDhR&p)$GdeGhV^H2Xg5>O7RGxUe6}5%W+!p$UBs_<6BmAz9NInT?I+2h zeTp2~z2wlAl-0ac!u_p!Rz z8F6A?nbfRUCf%Ex>r#9c-G9N^&AxrCIN2C}QyV$|Yy&o-_DFD6bht-iT>OEJ+*iJl z^A$G4%v|_l^|(Cj?y%VDZopd3D9{*dys~X`WHdz#?6hpqx(vOO&_}7>#(`T8~1A{Pr2m$Ad?tLEGl?se6_GS zY_P$me@AZI4}0UzXK&o|+A`zbM&DNV?OUL6Z=-Lk3-|5Ewr{EExYM3D?s@HLOwMq9 zi}JJ^Q&+wpY(~2BQEVueY&88q-izbc37dls8|w>{b2rODi%li#JLo2(FL-8XhBpfF z(LVAPB!@Q<6Up+C_(pt0S;I%fZPK=$Pu|lHAFTxI6@9V3|J(4c!WxA+)8+3N_yr-P|=`DY|{3XR$^q$tByOz@5 zW%QeMobIvITc+Qz?u%3xpH1C7&#Rl~J;eUM8OALib9H05hIK1$2_5sGL*-JFSszf` zateQ^7G+u#SO3PiY>fEh?BXt`bdEUc1R8$7?aOB-Aj!P_#OZmIZ;yCeb@dxc%#*eSh@oAO% zp*0+jPj3UqdHvw{7X@%kj78^7U@RvwkCbDlS0Izs*y)q8)2CpkPsL83hMhhgJADRr z`ph76pgzbvS6y6la5iP|jp|3@_l`xEO+c4TLYI}J%PNp*;sf22(PdMJy-Zb%hO;TB zb2jA+&ZeBn*_8F1O<7$>J+aKU{}lS1&fg64uXF3?$J^Hw-7k%Jv8@wca=xyMFKGS# zqKLoQr~Ur?Trg9-OL=DZE6xL!@_X~v>34?f^rGSC(2(|MQ2!5=j4=M>=qlx-l;!)A z%tdw8>}4XiSFxvhaCbgOo$#lvI&u?IPw^LA>l=7Bi*aJC>gMo2bB)Pgn};6*o!a}5 z8e3~}3%`$^Ofp_N%kRE7;p;38GO4G?OJH5M4xRU)o?!>d-cf$W-QD<$@PzVOQt-s* z_wzq_dfKlNW8GW+i}shewI}7wd`4xwI?mBv;GN!dpDRqD*38d ze?-qboOg=eDPjJO+uH-)H|T6CzwV3lp4~en9Mrc?awS;pqTl%HM^3sy#so@&LO{oItsd%7Gk7 zeooo?7TGC&pN5HDtB0M-nbKJx+4j$YXQ9Wmeo zD&y60`XBgzK6N%0&<(SAJ{!8G_oEx&u`1T|l)GkRns&p#=mvC@@{Y2)!K2}Z2n`<; z-ByN7dE`fBjc%ZA@nij~`E;kLuaiD?(Wjy4hTVre-Qdx3S%j9i>ie&>YP374%{=%=RL}pIVzW^5K^sCY|>}XSgO&V&o`MMtfsucPz9_5It{R zUuk*Kk0;NI&TsW$zU4mMr&3`5UUsg9=QMZKj*Xc$z1mjJ$7tn$_)>FQbloMfl0NHv zXPa-N`%07a+sHckEYjsh*5O^nGg9zXqMFZ>`3#1pZ*D(b1@BW|LiNGVDR6c3V6UFd zrX0MQg5P&_G6vwE1b@lS?tT2fhka?}8|CpjJmGSVzOOP~9Us;{T{|}A(Rr|mx{+PY zIR)oI#`&*r^?03j4X-{)&J$SV@w!LDS0XfgU38N>CHzczo1b?qIQnZ_cSPFzd;PzJ zzAXi}W#S+11{FVhSW3?~fkz`czLW6_=b6$z^UTxcOvbYHK@oG!5XM)$D}Mb%NvJzN zYw|IO*yJp;b!@NxGsS4*!EAJj1-&VV}{tbW1rzxxdct6yC1MiJk z@x0Y5B{{vKu{qU_O?y;-xb@gKXnb<(v6?HSJCf!6WqdRj)gl{p@Q}l}cO&@Dk7a&y zHe<0ZluyM6&2#uK)NgjpwVbi!-MxBOV>Tx@mapoW?Z0f_htptC0p9S2Z1A5v&HtNe zYfIQhb}TEP1s+L(%~qB1>iCc_wK}2CSi)aP_)FLp97}lPW`8Vc*No*BbO8O#(*Yh0 z{~Dp;YodEQbW=v<-MKFPVU*CGTrl-o0wmbk?MVjIt;N7v}CdF{2xTc243 zZWXoY`C2n?O5e;tpJdO!VC*Vx2oBX=WY@wLGd9GQl1pNl^qAVrr#{8{(o*U`KOLy2 z9%4>O;##RmtfLUy>ZESPySgXi=TE7{&#lGJt;Nr+#m}wHJe$6@rsphp1vxB4TPJOG z(M~7))y3FXD#qS&M*REQWAP|woCU$AyMl>v{)Ya>qv8IJZxEO3;W&?3Tv}& zW9zZ&Hkb&Jz@HGMf`2*+fLWF;vDWf zJ>2;`Ant3Rt-UX8_d%O-ce86s5uW&H6nBRy?KOdmU2p4y>G#Ot5T^sgPWCD59IJxh()bqjZJX=cjC`KnHZV_r(6-TM4T5s}(2cT* z72nXFfHd=)eCjT2mhSn)?HY;OEwXD6C8I*$nK2WFRq~w~Lt{^`2-w4?SkhSX|HgH2 zw|G3+L)|N=du1&1ax?U&d8a4D|31!Q@zxx&W1bgpT?`FNpyjC`)4dnn_@sWleQ$g= z@m8Kohjmf+Ht6c+dC%T(-y7>0oBFH^C~nQW^LSU~Qv1=Pid!G#@8Lk}0-J*GRm78J zpE3E&AG;3U{AFlA5@dd)e(d3M=$o_NH$Fb`ioiyAIt4$?yjK! z)r{L@#&-(w)~Uo>rx9Cgmv4Vgf*}J*(E>3K`^()X_DBkMsr@g4a z{j_yu@Futzd%MxIw`YO{c=Upoa!zGaCE%A&=$<2FCk5|1yL+{s%>nnhJf9b2<|VOl zz*hED3T)>qzGiLiGsF{=jS=(I9vGxPYhSCZZ0Sz0>;lW7`1U_Pkn`=G@8@EN?eO4T zid``t#y6h@O|zk?0okEn&Snk$(tO+aYRdzgJlo2R=b@d}zdjZFYG-6W;~MH+OB?Ix z%LecizO-fVUG3ou9ck#u#(=;&E&AZA#F|*&Qtgw zUQP+`wY0S^M!R4*+lx&!*#0vfNybC*ra#ILB<_Mdnlp(L@Umh(iWPN&z2Ze(Gl?gI zZ)kg#hWZICv-)Y4_4nZ$tsD0?k3lyThx>IHP2)*6PBpIh~eKFep<*jy$oCi6csr1-$&#K9dl|D)Kb_ilPJa)FF=As<80 zOW%Ih%1vu77g{`asqLHQDyL60KZNHS=kkFyX2#c^#9#T^(9+wE--yhWs2^)WzA=8I zo;%;V#QN5g;0fLxrFYF(=Wv*;XP(|TxR<_G2s>~9k2TT_<@jyn^qI4%sNd)STelmh zS6&U}C3?Q`q59DO9DRl2j}iY9zf}q+{7-zt1iqo-wgvsqkC2P$`JeJV-~3Jb_%eMyLZ9(D)A*df z_=M++&ZbU$&?G)+3Li9$586pPU9{7U588td`ZPZ1K77z;@Rj!CyFOd}o|-Gq09*L0 zkT2@mNinu*c(u~_9cRQR+5INOFwD6O{6$A2OONJk&lI1f6aOOg_g1+*Xo`Et-%D-5 zw%$ygWy&G5IgD#Z#qYYG9L6oovYV}K%`@K@y$&17)M3ZFZqh&|si>~U=7meb60e#E!MI(KCjycKU9`Qx#+ZFLI zsBb$>-#F*n`Xul~YNv-gp9jQ!4Y;@W#l80%5nnVy+b&C67WZYeyA*z;y(Y%l`l8vn z+hKaT#k7wvs(6lM%#{y)(LUuzxbpq`qF^&2K3mvqx7h5Mp5w{w9yWX)5SuozS=|?# z?+KeWx-UO60fznKaX64 zE!oSQP*RjRSN+(d&pBK2_R9~qeFTgP`Jx}-c_rg}erdSp_IUZCSH9BMCLOLXT5f$& z-`+SW`9FU;T-YDA_S|T*->ZN9`6_10rk(5Ci0%1<_SP{gL&MnB~@JmTzC z>mS~&^L0;BKWxl-k=Tly8dBgW9mw7&= z@o$ckKl#c8#{W3_lNr@F2i|GS@z|N-v1#Bjo#)6%;ndNRm#Jw?2CFY(?q@!lTdz59vx9wgp-n0W8Y#Cwk@-dk34ka<3D zEz|A)+Z)TI(y?sbgw~0S9dtQ!4!(}DgI?ym#HIGR_Wmui&u7z5{LQ4!`|mBPK@M)v zS*Y$^y(fFh)X@s<%fq~aV%6c!&z(gbmAN`(U(0^s9>ki?BSkfxFNZmXmwNSTy)}=9 z4^m#|>_bB>G?+C(ORu4U_YDndOZ3`zU0dXTn=`UYXrq_DW}o-hXWCO=b=HvUtFap$ zE=%d_vfP~?aO? zkU0Ed;_xpMhd)9bK0T|ZaXkE3FFT>{-p)?i>Y|;_2KZ!7ptV2NfZi5=yY_8tbL+t) z!u8;K-o@tLhV5Y1gZbRf=P%*sYM!~7dnehWVeXwY>%r^rDb@z^!5<5p58gO3zLq-) zI@jS-thGJ`&wL+zF>{IW1$$%RdNAXgqOEzfRhxj%pjQ~_4BRH3-N@RdKhFtE`Lqv^ z&tZIwE4@88_*y#WSn<)yk*vMo(;rb@`xfJ4u)bUr`WW<8aRSpOYu`ye&!8>&^wG8q zFRh`k?S1=t3w_OB=gjZxrM9mr`f7Z7+DXoH<8Vp*=b~-1^?zb^?^`ppHPQdgIsYe0 zlluQj+y6f6%k-_2vhDQ8tS{Sow7#r*`uOy1^lf$DzFkJ&(rt|6>cZogAve#Bqw(oA zjqghtskw33=#2xP2ONi$(7K{8ts^xKE1`8oVOsyk z(wZFy(dyb2&n*MH=JjhQRYUbaGGHp-PpADvrfun70E9r5UC0XynZ zo+^GavUO?vJ;H8-!|tsicCO701M|s#@@6C_ef(s~4Qt<6$;g6vnn$zd_>;`B`+0A( z`N=11z3~ocF1X%U60VP2#QDzA{658KO>QmoL0uUU2@Lk4-RpT&1G zf=qfQ&u8<01OM0aKl4>xEBif2GWGN+mRf8KNRRVTT7%I`lPedFg|UZ66(#~c{u zF3*5pXL26cVV-+*WPPRS&Q}`v%+0T{KI7W<+bfRr$GwwW90OnE7TN6t$97~_`v(%> z*`j>{9xa_ynct>C2ehQEPuywu7j)VE1=>&2$@!?A^iBPaV)aG!dooz*%s}0P;$hVd zR##J|9IU#*Tc6Ed5!!v~j9^t`n)o{H>+?-L#0a57pKsn@oB1o+&3ku`_wJM4yHC|- z=J2lUBZon_R*_rJO^#u_$HF@k_+<^|(LeN+wfys)?fM?;yTe`It7X4c@~NQ4U*~HZ z2QTgodE=PY*eV!D#&)&pgQtDJ>^pjfY&bvc)4yh1;C1Jx>Dixv|#x&b8zFc^8kd z@uuOdAHKul>Bp5mq-W?P7Z<8hpWuBLXL?Zkfh^`fB$wZRcewuEzp(~aDArVI`{w(5 zhjxbN>0eZ-cvIwljO{_Vj>y=Ub;Qm5Mb9SDv$g1lI`o3mk-eOOoY;;XJ(hl=U!}`r zSDEK-eR1cAFb_bwmv^7nyN!&?=A1t`RycX%_2jR>0^Oa2KU3(RG`c{%sQpyGQY?wK z0``$`=7G&~4ck~Ko&rz#n-ymUhpxrHsH99qX~<);LnZfGD^F^^V4isPCt-cjx+*3H zhw3Q5MdfW>|52d)2j#mmPnfk&e4;+}To~3PpRVHKkS5&;9HrwD)_=_$qBYb4^*Fw- zxICfM>aD_!s4FZx*c zn)=Y=(f(xVzy}mQi$%wR{`+;N#snG2t_?@VOzlK}lMU8SR!-ZTSm<|dfFCw8wjSMw zv=?YC&)4C*HFNhtGj|rWaz92B?_rzC27Kq=VfQWL9sGeA%x(91`|GhUA9HJudFu;n znd8p+ib>q2c*Lm36sJnY9J|^F-V}HHscIU{uxZ*dJ>&CnD zcvt08%>lV8;)+)m#qYIuZ~R9cam5wTzB0(1qJAvma~M~|9~dA1&?Sf4 zt|ag1f)dVhXU?8nMhpWTrZbV=&GSm0`|Atemr zs3!NEcIw? z^A(H@P*zx**nq9a#s(hi6B}r!Z*6`1_7?hy@ZDnEFc3axAxI0W~&tS?~PlYf& z%VOGRz2C}LHeN*xs!;jSu6%U8pLS*Ih2uUU-XLtYSZso~=Xi39hYgzFm=yM)MtMBiQ&+W&=&Z;Xz2TkTLIfyCd&+K|U zb6R>f^WIe13*0d{nfY}Y_V*i@4;KZQ)Z&~!Fy>UAA&XWf zAI8WD*SS_P#VV$R{$z@{LW;F${E-1$#P;2t>iE>zV5tW#cdxS1HWt!;|wM)#yA*RRsK5| zS4s!?a!^6Ps^Q(q?!1vu4wB`(PkldAedr`V4*aa1&7>UsEZ^q4KZhsLD=sG{O`A>N zY;uEWb4a;CL!im|Vc$I*%I0@0hDV#v{$=$8`u%v+19~=tzRG6Nj-j@9)?jl=y(?Zssq1&uImqB|`X)N9 zUmAarXYJlz>aU^K=X3B`cvwF;tH-l`@Lqh5 zr_k3r^Va!e^kL0c@HzJ4b37F@W5gLPdHDc~Y@g)&nKg2-)PC$V?MYWD|Jt87oR9ke z`7;H5jyZPxDPL&Z*HO-lJA9KJcl?Nt`(tYMB-t@N$haLw=dcGNZN^h)QQ5I-d0Tug zXSBYwwz$t&UFMI~aywRY8Mk@hI-jv>WULl3R*M;{C5+Wl#%dX3)x=meGghsPRrQrM z`$scYv)ovn5#MzOW0iJeW$$j7MV)DHtoS_OSUt&D?TL&PeYjj>^(14p$Bq@xeE$0r zG9&&=F9$pJ@~3G>WAw>Hk#Y<2WK6j+FFneAD`x$lvnNYVU!O{s#mi~qrAKZ3{O{MF zu=OY17*c<t9=Sw#TnDRx3T-uIJgc1aGer@BU8j*27oO>vCHE zq-V@uN#?l}^W1+wfxbm=yL{XqKgs`t)SoD)Uls5}bu9DUNcry#v-~yM8)dO8XPooS z)0+xi(}L{!RJtLS(S3WN4x7$>t3~l~`1?W7vXyyyYd9WuPALoLifUne=z)54)q<6vEABV5%8GUnh-HpPr zg8!>|Z*q|NYvDLp{Zm32tkV22)!KLHT=9#rERN0(@In%-&3FF%FcsRNzYu;OwD{%O zTlJxT`^foy*K=j3%f9Y?3Y!C+BO5)1&Ur}vf#-xnMJ!woxgA+@Ye!Z3Y}cW*PHp7O zEB~JVru<%O7f`pM)vi-kj0)FUMsvQutFMI5(K;TG{{-)wwHAC}og0-`&pF;&)TNO% z8;_P1;#tP7zj~Zc>eiwrsBd;HN_KgauDPALBdXV8`Cx&1KlwQI zvBm}OzM}eX_3Agd1>hNDpQ`j|VoK~4blNKm^bS0f?Hlj7{t)-C>4O>TTv|tbqiDG@ zTu0>W7t=@GFSAU~uL)Cw+?cLt_&C_4#+aXhD8<82j=3_^ZlepTph4+;>$H#`>~zldw=- z#YNmTe_mO5hXOiy9x|!;gzgE{{3HK1QL6l_H^;v{`7p7JSmul50LgYZgue3I|ESFi zPosBrp3-$-h7-xzp~$}1zjLHV=28EA3eohK7G&Xp7D?m&Dyx3k1~cn_~&To zb9AnR&Oh<%{?})>rk5N8K4ZfTi?6Ytnc-`dsjZre)&riLcJJRPnVtY*|F=pUxh zFPQu!IkgD+4e<3er)#d8!Lur2TE=f<{EQ7j-_qFj3HlM{hLvFJ zm#+VQ8TBBK>Z`^z$@qrY=G!x0v~>T{((UjK$1lR4;tBY(UNkapkMHVjOHK%FhROtY z*}L)Ena`I^1;($VNOOJR`ls0X`>St}t?z*4heP%DypOZ-*Xtwk)RpvoHTQq1&Y3~x z8=@H=5tip(39rQP#jgQF=BQKy@6ItcnX#Ed@PD z!Q{B=*YgsdOJ|0EE7pq!=}*3!{w_WnnxrqMGA1iynJ45Qqc3$ni2C*p^hRxovT6F?#5)Twq`dSx_eWy`GjB|ZU%K3!hnPv%hxPuz)~k6&Wj@V1Kt1&?P<)_? z_L?c*ir%x|F93suVBzwM{NO#!fuK%0$UHe3x&?ysz z^QWTk>YN<#Ff!@kp?o>jRS6zd!lMza7ICf%c+~NJIu8%|=flH9bFZ_b)F1zI5VeTpz3)yyFJ156dV6jlX}YH;gCRaZtQebC7i1^5=5%TV(-# zcc|XpPiOq0{QK$Lx=wF9Hd8|^bE#-SPyO)W-ZppNx@;NU2_jwd#RPK%Jf1|~rPLqz zTfU}~$0TEzLO&*F@SHxnJVnhZDRf@4n!X`}vZ2)8D79A~KJPQuYoH0bLjJRQk}^l+ zTd556m@+8yRENdR*$2}-{1n6A>|rSV>+rj^OggeKeksueZnp_H zFfeC8dAMCI+<0#02;ny^mO=mUKeP%%Fw>fmbfLj*I?sh+1UHkr1_s|(dyIkbG#Fr$ zIKFq-{)c;~5Kh9+; zQ7qFYy5ODjg%y1^>!Ije&dqk+kUIX#)d78dcy2c37zf3{ zuMp1-rOpVxUyk6r-p98!l;7|?vi$wuS|du$M-Max!~z48tCyG?%e>o;{ZD@c#?!&L zmov%cLF0TdhR*whG0%lxN_;6?g(=vj#GBxs5`PL;$vM235^sV{3Y^8a!dQ8oYVQoS zCmb9;tV@d@Q;q0W@atU6T$7D`hPw40<{DRiq$>|?eel)T!^3InQcTLlJg@Tkwl!x* zIomuv0ZbUvF2+=P@?8;((-Wv`5_F*}ln)s2b2R*%9u@NQ?ZO(|qWnDTIP>#1wa2(; zZ42&ob+SJs-eWx0yE@!>`8w3&=fqL+bL!cAec|)7*1PU5aDS(}uQLHJ{)^~i+|B`0 z{r_2uvDPjPe_ZGF8J={qpBT$$#y!Qj8yRlR_mO^J>H57l-lC_&(39^UIbEGbK0d1U zsq+v24L$Jahb?{5p@yFKS$+r4G%{rN_ZQ&zP_N`@@_AJ}`o#!t;?Y9)w~j94uQoAX zA}7;C8yH+w%HL)iQ{y|+cElI>lx^>s2p$9Z!@GY62Gn1UJvAJE_%Cf+!}W(Zsy%o? z_~Q?g?>97mxORZ{2J(kj+xC9(v#_6o`NNZKJI)_=_me+j?1g-Nt+P0cewI&+uFza& z^aZ+A^SylH(dbmIHQ*C(3U-7(@r~RoW7Zn*EuC!{>TS-841z-`a@F$J;rBHT4ohsW;v2occY0k@P z49+vLCCvlkH_d(i`?5{N%gOzr4%lXS%js7m{{#5nlZ8JrC;$6WeWq>0YuN5b>wo{I z1iWqE+&mx3Vs73L&EK^&56Ay56OG8jp`AnXzuRpaj$e%a8NmNOC>>1w(rtxgc)6`_ zIR5uH_88gANSvIXG_-qZn5>I zk*B8Dum25pNAG{na@e6u`e27H!PlSe{O@;0-}PJyE4#Y%J{Y;I>q^wHNT?nLUk}dWbGbw?pzPQqxHYPX>nU6+?YF}{`X%C zH=aA2?pXcr&#FD<(kyNT{O?b?cM9Po%&{F6r&tb7gZbZYj9_#u{`Wl5g$;0(u)+q3 z`YYwaO124jWn($grO5En_}|mi-aN`XUF_?K2A|!*mwQ;-{-nI2Ju%uD4rWi zoe>`V&wV)=77zOVinHg2<9`?1v48eKFrF?s&iB6`()T<+UjFxQenWlo+Z;Z_^uK@N z%3}xik!g)RJe+Q1{LvH6|GwGh+adVhe;L8}c=_M!L_7Q(7uE&%d6BR_j{MxL_I!Rm z3jh0WT^(+`d>yKB1ZTyQf?w0tQSftd1Z$t4hvI*~U-Xp+nRkMz{O>x8@v-{fzkNEC zv*G&Rm#BU8!7 zcyDXC1{kfscRuHWFb{1zoxJ+`EAb_Z_M83JJon4Vchiqsj|}4jh2tfP^*Vo2KH~)C z<-kkkIrE*yG4#C(#6hqJ=0wN9^B<%1Yrar_O`q2Wap|r~t?%%x5dG2euKzRfp>?Jg z_URLee){hB|5_6-%3m*4462uLmz~zFybQ)ZX73BobLmj&&&r^9h4{nwdWSa`3KNINMaF*VYilMLC*dl)u^hT&?~5k4=Td7A zqN$sl3GJOxPV2drCi-OO>2Msh4xo8fH2uCSN0UE4oAp+kpEBCqZ`(J&VzP2bu?0kr z_HCIM0Wq<{KY z-TI7K2gJ_N_pFthz1V5+)w*VtFGv4tEVS z4)x*M#!UF9qO#-{{&;-a8;>;}kND$pQ9t9+^U7f3G0BWa?NN-!J5J(wXr0ZChy1)7 zU;OMIHzw~nhB2ua!kGMqccNo*x;G~OX2-$PTmsIR4zWlzX{PO%AS$_E;GIq2wyqdg}es!sp;Xg0H zFL!(6aXk3tlU{xP_$pr1AO8)+FAEFQcRc(nXHOLJ;hem56v~glR*-(3ptuY=IL2DL z@>`?ps>~_o8~}XrRaL=+_{{R0tZFWsV*AyFO!di`mQ6w%nrmd6B#9+g{b}!ym6M{} z>@3ZL*ej0|SPxcwL34v>PpB^Dh@1AXpYlj^hqHZr9be?(@8U}ipGQnCXkU9su>!>i z4E@Y?hIZy&^@%y`0qvdEXOk1bT;|&#JIvnWGviaq-%m_2woIRW*IG+`l6(o-LM68uNEj=cM$Wpg}2x$`J@Gv%BObrW-=%B7jp6VPq&VJ?>qAe$ft zJ}$pnF|}HqW7+xgkHeeSk6LZl?q7Q+R^=ZnOKkI(x!1csGNg?9OcaAN1PaOYRW)AVufI z_RKslxSh6hd$wplN!$N5hx2l%pYNt?57@$@mM4;}xwG!Ss`^#_!mzw@#7%pg@u&B) z?S9N_mmK^fjicht&Fs5htbN<;^)z=;UJ=h|57wjflQwndcQ&V=JMmK7iI?OqJobq4 zeXJ(ApLZ%KUk$A`?!`WQ%9(Q?&3d)+Yv#dUbr;e;ykhu6m@T4>#qi7$_+lyc-7@UE zCgQBk#93R3vo0sjx`H_CO5&`miL_-sV(WERz}oT?c7r ze=KwO``AlQ1{tl}x;di3VRdm7tJqOt^=)Cb$6~do09Lc}lu-XY$yTGb`WQf(y z{5|`hc3AC(4iBqu6~M~vHxw`FS2?5ln}9DO$Jp`UXZ6XvJZ z6naZzX2&=^hknoH{22DV8T)=`m`{A`rOIc|-yfX>uhb&yS&Y7l>aF?Khl+t2SQ6n}OzRS}wx2PRY z$DHljbvkB|rIGy5#9~V$^OyFeN~gVn_ml3O^SpP^8S?u^iT}XTmsRa|F>P8|&9!M| z)zx>DZSLRNx6MmzzZ}mO#1(#(&Ti)n@P+ecX|E|cOP9t|PX_V2+qH+TrG~RaYR(0( zI?g_kt)u$7N7IGHPTU zc}XIhZ}sS%qjxAX(_$muRGB2Y)7TD*>J>ZA8c*4!+UucuCwcX%j(75_zwWnS z|B)l@=j$U&PX+NMw^>=*MjkD^I3Ia=FSy6fJpg{QakocTv_yUxixFQ*K;KDCA1X6Xv~ z02Ox5Eb;m|A=s*Ua;xj#gqE%U6OE6UcyVNXdrq)bdC>A7q#xwVU=KVX{u3{ZklzCh z324#xHg=kK&XN3>HgYrM@2kA?e;6|p6HZgMiLxfvI0cw9#dl( zctHNrD*xdEpdvxp)(s zz{G;5Sl<-98{dh21}}Hdj%9kxUhmTNPn*3SBi8S;_kcWO_K%jar*_o(u9DH~V?{H6 z>2kBGDxsNrjQs>JCE;9ld)Gx4jVM??^n+mH%Ra@&~>0dE?KSGQ_T(1sS8E7r-h=KGeO^KAK9VR_e|1awCGQ$)RqF@5{#^x@q`AC~8GdEnP1 zW37Bjtub`MS8l(P%ZoJU{Gj6uUm#OvK72!nt=ad9?sNO_5@V?kJ&@h!R3FN7wyrbb zF;^El$?eH$j$-UGxxB^PcHuZh`FD(@A{27SD}GA z{(zke4ko7={-1$dn?3rHvpM$v1ua{VgRNQ@xmD{v$V3u(Pp!abMK`99Lx&^hP}gub zKutC;Rk~ktw36q`Ltj>B#3<&cSlKT=g-nCHd|t+rc#D&_aBeVk5;Kyo8~Rz^oWa~E zJTCU|cn}Qo?Tjx|cwJ$rP(3+;>uQ1;yf2~yU!4!CDe~l84HZrGbY~cybsq)Rcb{5qrS4v~i%lRb!XA|?(e8{|>2BS`mQ<^!)&SiP}(ePql z`RfG_t;;dL)@YC3UHoNzZgC8qB%4ihs@D4&S?`lAAzMT5FW}iio;kirgKu*X>{mJY zASw9kqAOo$Ex8@&~fzF629YUAeqIF-CR#s=o=H0X9Fx)t`%GGs`c^V$VDM$*YsM zTl>-H8aKmF@Q3Wr^Y|;>xrQ^GgtzQ`^ZmG%t>^K}bJHLBR@rjAZ$2|lhTq^Dt@Rt7 z4OWT+t$!zWA8pA$$kNUKgYit@@yyTASFS&yz21*}NCs%%*y6qn@N6Od8%PFjsV^V{ z-k3NU(ERWEVR&o^efin%a(c+O*WGzD9dGXcycwNukzQ%!erxAyBlp>{NN6nhPR|=l zTejZCuN$W){qIJ_w%*0B`|eSFM;YCb(TI#oe`#)4T?=@&kY}3jG+${?W`*U6?UYk2 z`b`$A@4I@iWgCg_E6-Ot+|s27dKYYMl*G_+BSH$kY|Zyw9&+~=A3T(XSLDF`M!1GxGwkGIFB~?b#0&zLp&~| zjf-hx33V;CZSZU%&k~DhV=>Q`{;v&3BL zna8vFxq3dVdKzPy6}FzgP(2Qh+Zb1Vq1DJA{=50EF%}E`M)3rnCA-SkknG~yh3{O$ zJ3Kdh!{<)q-1S-cBWk1ZeO^6$_I1Ei_m0}49`imvgkrYhpM`u@yelPHpF=*#j8N90 zVLIzUc{G@^S5kJiEz4(Y*RU-9$URTW`zq+4whVw?3AMt1NP&Hl>Rd z|5mK?EPl`ASLe|=nUy|vpJiifoyz^MxS0Fw{%Vi0`|Rs5_e}C>bXmKb|4Q@X60*I1 z_S>BN7kl=n+0S77^?vl(RK_P@Or{yR&yL+>Xp-L5bLqOf_;urIaChI0;yZrbcf!Hg z32&g>ILiAvl4lEf7S)kDk5N3Oxkt9bo8eK-K?(fCP=|+hfj=(|RWC00aQT77C9pqE z-}jgQX67%(KCADoEv7Zo1z=|MJ^DyCxUfRTjckZNWZyhn8|npviRu9-qYE7-s)uJr z7s7+G51s84#pKu26~$!Gd17Z@JE`8oqrd#O6NSgOjw2plI!<`>K9!T3LU=g;t;57; z3ixlbanMUy9+}A)N{2LfJTjfJoxwB4yTZ;nmx)Kjs4Mx zEs@o8s)uI_6=U#lRy|Rf?xe1$Oe>b*u+>~JsLm@OsQE?W2>9g63-)6OU%Ed3%+0RfgnCBzC7o6r%e;thzNYxJ{mDP|-tb~|5NFUc z{oUs@Abm~5c>1Fcx@Nxsea-lAyyw&RHxc^&>nQ1S`teqCW=T#z3d7q zuq^>wbeG~|!l@3rWYg;NJZOtSTP?IX9n=L~&QEf2PCu5i?|u3FT4U){K6;2A?tnryV7~4l3{c(6@CE`o0pO zZ{M$vUf%CE`I)(VW{vkajkndAI)krw9x_e*N^zeV;HOxci;XAv&Wvqq7|+a$U*ju0 zWNCA8>y#VgwV_UW&>Q3E{cgseC_vvT$p`d_E=SY3@Su26droTyp-(={*DPJ)f5UT@ zo?1^f3Z0Mjh@mGJI~88<6JB;6R}9shAFcQ}F#>}ZwvfTgV(NI$;AUf{QQSTe!A<;c z=&TN9<4zB^B;PrGQi#6CgctOQE=N-yUPGi$xc#}MOY?_MPmzb4^vyu@42l;v&2aI$ z@MPjOMEZnR@i6fU_XFkY-%VEkDt@JPE4N;ybtQkD$zX@=#X#DlBa(+o_EccnX zv26@_t;*vyx8C5!w-CLTy7>Yft2>z;jd?tW%{m-jua(2c>zyYPuOZSWyv{foc%3(VyqSjl5zJ1Cz8{1> zVODyS{B=}##fFa8?|+eRN1PPA2BA-Qeb3T$QuNoAL&xh2uLWL%&?me;b~5q0X6Sfb z{aWBP2z|n<@?_$5-O%y+7>k$gU~0Oo@f8O^1p{Gk4ME{ z9~nM>{n*my?EDkTUqhr%xZP*z8Y+Js6JHv}*yGu6 z9E>=Wa<)a=W=os1DYWldd)~6^lQs@D(E8-H1?V;F;U2w;)s+O{zEZ`+8liW=Kr}+z zKSyZG;%8~bHkULP{DIzW;U1}a^0!VSe@l7fP4NDW?1#$c6q~$o@(k+joQe#; z(oA08cGlh~Z{)T<%=KP2D?g8Gm!&l;pF_wW*k|a?otJLn>B=8ao&&i9+OH#ebv}bW z4~5H$_tp74^mf}9J7?}y$!5qhg%C-i=$A9~kC=zaNrLOC1`Kipb?e{Xa7cj#Q@K5I{)Y}{hzdD*$8 z*tpswt$if^Jiqo1_yF5my4vVyJI~({q4Q^!&ZEiKJ`w!;p?>gfh|s;}DDXWI^j_Z& zz10zVm%dKuy{sR4U*?>Jipmmmp1Ew*S+5g%4~UNo=(F7sddpuY^q$%ey=x-$9{kzx z^}~ta-@E&vcWH#)okv0Mz7yaN9Qw?__QX{Yy1!)UJ{o)IMBv>a`U~*$qzK)MUMF~8 zCjJ<}|Juhn3BKN_IR?B>1izd%2>n|l^pAd>(f{5-=)XHc|F3`g`m+DO(ljvtd?-SH z$1%`9puBRfnqnlwjhEan`lsRxQ{K0urbOs&vUCr}-a8Tee)=GIzrq;_zP!Ho81Oz3 z^#9`11M|zzBJ{uM80f#dfW19V@e<-3N#Y#ZpA)sYM__Z0#OCh8=I*vOw>dMCc$PaG z^EPz6&nx$MG;4pNIS&pS>$%;bth$)^Z(N+j#@ZhA;v|~CqWPEu^7~Q72k#aB1?HzE zULRy1Znw0**8G0jApBk%p*wEr9qR2&gj!K#oTlbh&i8fPK+|_ca)xYe8+ri&MHD*=^T|b@w-l)4Z$8nomZ~& zTRUg)Kk+-AW03X#;6a`Fn!@MPnK+IgLtYH`I={jh4Nm@jUYs4_#hqDR4EH{B<3e`7 z`Hwta6i+ICccSsxE4%3=;PXH~_>>$YKHC3UNM0|E=o`Z~cAhe44e>e4FX)^k{Ghu= zOT;heALXgLc&x8;TKnn8<3GvQIf}oU*sRq#_j)=<`pAv1=)b6dzI;BipD_(znmDti zTX*K_TrTZz)EPEfi_6jtkLJ#c%s+F+=t%J~y5<`ZnzeSAm0wHuP~!X77NGyJ2>qg6 z7`ycpt);XhufkmC6}Aqy577UK2>n`r@G&p)_B=|Tx_EfVFNN1rl1n)!R`Go3l1-zy zkXuv9o-t(kBek?;>$1QA*ZCw_y+E#maKGBoJ)vc57VovgSWhXC4{73A zmJYYST6;hrX-nPoqt7Fkm z(CX{ew|a6Sdhf9GX8FzPqoMHI@t`-ea$tIkBJ^JW8q<5#AoTuXW=;tz>|qj%(s=p32iQK3KL&I-u-BPAo&*TnOEkvlwkefw{> zrQ7);S$%K$c_{O1q4{c4f%SirufV(|-Rb5kbN8(58~Ie|vI&wyH(w!x(RKgXUO&Vq z?UsJcpJr~g^VC53M0cCBhjRBT$d(^B0$Y9-?ahV`Z2Dek(m6yroBk@W*SfhrZ-e%G z!2e$G*S)rmR&(z1Z0z!eSmupjpO{8n)2R!)NcR}H{u!NO?@u_>>x(}oe;pZHz=?1#~&f4TF~O#k}H2QWDqHXk5wOq>nDSlp-n3?UDo^WFI}e7WsM z*1t`MbMj#R?LMQ=^X(sVHWYZe`^b8a1U0(bNn<0v(&s*713z*8Ip>^XPhyL9($7Zm zS1)-mls9A18rne*c(nUtQ4$%8C*4?BK3nM7&HmX?zI|~#<)ds6`Dpd}A^F&|E7VKF zk&glACojGb^-~tg9+FIW{60mzQy{MJp$MHFmd>NmpC?+L*9-F@$n$w#pL`zrxb2(M zvBQ<;st)O%CWh<0=wt~)DcJq*Ig#>xLli&v**QFkP z;$i8Khb)ca-=mSweFgl%=k0k`qE%-ci&o_|IJ+hdpJ?t^u9?pDy%j&!&{-0W|Fs^S zqVX%1#_WFkYU{6h{-5%DrI+20n=cFH&#jU@FcTW;p#i%fja|@*UC=d$dl{KWxR3Jz z-BYB`q}N|(0}Dn zE8eXBE%e49H8z%UdDLB;>8A7BjqQ^T`&{eU2akGvcKt2H@6q{HXVS*#qsu!P>5WY{ z@)(_0yXa@4WaRpFu5Ybj-}Z9Wenn+T_P%sKzH@PbKE2lSYnvZ0u{>z_&h}@6*B_0` zksl3TehcA$wD$7KLG*cZgx*Jwg5G^b-{jkq#y>$m6pNBwbtSwaTT-9fk>wWny(<*$iX{nb3WNz0D&#dXcBz z=FzNom38ROspOJaCbg8gY8mri6Z2p*b70ApHGjJhnX$4bU)!y7^)N?1jZE#+JUNef zc0TtXHwKv=bjs7rFFkX3HkbeB@&A0@YvdX2Kh1o*4_%`3&~-PjyZ=ac2fA~CjZE6R z;PTGtM8}(XmitJ>2a7C@&Q{OPvpZuo-*xkBV~IK2w(8}aAO4?wmz`gYy_0|b=8 zG#Ax8!x-;pjGuuo_M?-ZY34cgCudP7JmJ>mxnJ7)?fGZMJG;V-rPkz`j6tA%HFU2eB!AonkTI17PqqQ-u z(Q18c+11`T%h0O3A@bJstlilv#t$b_z z(t+Acl*X@9o5-!&Ownc<9a3W3Y}_+@E9;$?>#hUgdKPV-OPeLMS#8@aF3{$Le%eey zQ(aj2m;7!e<@HYW|O&AkJ*c~%zNUk}t~P#S+}4s9Zf zL+R&3Lu~U01GO0&75|mmWF8qxoA(c~%{2qHnV1mYrZ(pdtp(Yy9s9o&!p|rckwyU^cm8a(u%vqX?7BVl?+Ic~Dfv)ELO6G-m+SJR~@!h9djjf*Qjtly^%g}A4hg>yOBOr(T7usp}f`hnR}Bm2R77Zwh?Q5Zf0HP zV0~TY`B`fAa9D)M}W0~i;m)qSj^jte-))Zw9Ldy}+a#q;( z-_kbqWczR#ZNHVapLM~u^?%LWt{jRM&Gw#~@^vt`q?yIiL zJTtj2v!8xGOMgHA1@0?8jIHxBe#a4P(%vA`SyGhgDl5u#k15LZj4jGMJ)tPGZ&Fd_ znew8{{)(c^v(@xdHn16Lt61fi&;*K*N6gss`v@N?PiQ04Kgi7!2{~Qe#M{nGu~PwdLO=9Vj2Bw;_Qth%^kfZQ zr$YC%BG!nIy(zWk9wyBr<}-Yh;<@Td@Lh6RZRYU*zR>mxb;ZetTE*{5e*cBv&-1JG zmKFBz-TeI=zs$qW2QA~{cZ${>r^VBhPt6Z~srlR~Ct12#_2XN~#!0r)W^)WZ73^nC z>xRD?2?pqix?39mP>1f(y|4OS@40tw;GOz$!HR{@t9N6(`~NfdE$~ql_x>jd2~R}@ zMMcetk(WT8Kp+sZNeD6W2$CRHuw=8l2`kBN+}-dHC9zP^qLOp*Hoc|QAXYC>B@I8bV?sotG+nT-4fjIKGlahS5b{RGNInWs>u{7gKadEt6x`&(%L z)5`VQTfE<`EkmD`C-qsIP%e#Q-+~WdoGAD3FqA9kkn_9(c|M0S+l~Wcz{z@n6Z(cC zZ~~mgX>85&F}#0V@fQDz<3z_deOs652I$HkpnY3`m6?$I;AzyAh=a;8`{`_0W^9b^srF_;V@=V0D zXxq=I{ojg4``|n7nFILsuW^liFEf6k#_Y}<#M6F3X@ihvLfSB%wvW<=A*~o`SMju; zQrcBWt3ldGp7s+;8;P`fq+QR`o}sksk@h;$ZsKWmly(!+T4HveI``z!Qy>5I!lN(! z?!ueVpIo56gX*sH5;#qx@9Ji%{M|?KZZy8do_QO;uA#i}{c}dcc%HV7((v7LM#ChY z=AyJoNGp!nJ@=C*k3RazOH|e>V_CFrAv1};W1+H=P}UTFeIMm9g_re{S*BxifBMwX zKzWeNXHMtuETlZ9n`RvPLBs=cS7Mbh zVNWhapSi5F&zv&=a*k^nSCH(qL3VT*PC}UxkQ;Rn^yIP#@6|toZaxHT9ENTxM7Wge zA)<@=%6lSFU+{@AcuJJ1Upt5vfuHM%770Js5I+p~8A@pe{0yKp1AhL2`Wx}{H%c?$ z=RBnu@be+13H-e9-%lQW;pLYuoErS@g+~)UX80jGP-h=z{)Fdc%>16-7nq@TJoV0# ztR3mSBzjNa=)dVb;ONlrB3OSuUhwA9&MUO)YJ9schwE3;pSqp$3%o=6lfFYb0Qxg) zrS;1!=-Qtlz5TpG_II=L`UvectP5a$!G73ku)|Lth+yNI;-N7#_Ngs}{+cWF7xkw_ zSOYT#`isUSrNifX#|j-r*S6s?-UCt4m3WRYqvI-28$L-iNo}|p*Ty!ip)^AquA?+V z8@edXpaWJ>nxPG?lxAqd`zTGc;hWC@Meg%OvLkYTVnpKOIyOH)}<{+Q(7O| zatPiJ)RqxQ_qFBg*J}3$Ys-m&+wyN%JK&SqL_=F9#(3{Dv?bwWDfOr5TM367aLwdZ zT(6bn^?&f3+{Q<7ZEWKslxAq--%y&NjSo_qp^aaqG(#Kjr8Gku|0kvC{pqeJjy`%N z`qL+W2YuWrukbne!Xw=+W64~*nRJC8;tnG`dwjnJxKW{ z^{n45$2)=A--2|}{tb$0l=dgAtuV?mjf0DGV!Z2bP(C&GyQ@X}(=(-co$XK8w!9ec z|3!4|caI~D%Ansd#K{&U8V8AV{kmGhLK@L5^~=e)He%s+N;6;~p3)3hxQWsXSh$wb z3|P35(hOJ_NNExlN*ym>7<=w_7hX7b#%EhClCXdQtsfRH;@XIXbChPl!bwUKScrM* zsiR{*?!*F(^K~2ie<^=pLASw)pRx`9W(Bvw!`1n3;Qc^2X+pXWC$Epx76rq}=)gER zhcz3dCm2p*4LFI7@fITgF7}zgg^YuL$8$0cw&L1|gU2Y%fP+UU&47akDb0WbH>DYH zP)=zE9M~vL;GlH(6G!L13mjAg$H7uOFYEog=zW7uxRcThILM*2FmRAY`AaxRruU|F zj>US40~PNF!oet{cjDkW?cMYs`eJ5a9NaJCAk%<@%oy+cz_t+wq$l1c%$vBLcmi=s z)2|<;xUlg)MqI|nXmz2 z_!cuAY2P)YLeZ!hzL|w;`-oYL4E@?r&&RS-Pq57It0TcoPdv zjW@C|cK7uN_4=4mpOLtx@~@%$DE}&iRQ{C+sr+FGsr(^yALS3C5aq{Ei1G&@r1B%# z{SA!@OE)$Clhznvj^is9ni~Jk!r0wkBGk*zLiwNLn##XG_fh_*2&w!}5K{T)5K{Rc z(S4NvA%!Ua6on|i10j{)#_n%uY+>o9#=o%Z>c&5_(9}qHZo!(R|3RpiABXaPPw6Q4 zC_*Z?86lPXE88fl*>!azTR#_NYWyX; zj@|tWgnGGADEC!dQ+Yo}NaZymr1BaNQh6^^i1L0)AXEHpLV&%)Tev!ew#v+vz$Vd zb1y ziaY0LXs)_#JLS>&F3s6R4O6z{42#;*ejca)Y>e<;iXX;&nU}X>uH#~sx8sW}Z#&XE zHsks{;?)t}-waf0H>r_Y#}=gFxs&rSZ;JVC%KOyjEbr-!Sw7!0^+*3XQrR;2!}Z5r zTsh&(0fQAbu9D}0NXL(V<6_-d*vkW=`8-hkP{gl5d^n#Iiiw8*`wIBBQBFI`lj*n> z?_(ZsOWRr0N1mU-+zy)?GbL(le&z(;{{ZV(smGv8|u=g2rGh@G`xjgW1J=)xj zHg`*HPH}2;q*I%>;JS5vmN#0o`A*RA9DY0StH;l;jZIf;m(E|P+l_SEQ$g!wPrr7t z?%Q8aV7}>n(?h0hv6zda`SPn!-|UArYq3`v+Hvy6fwc**ffa)M=d3MD*+fJuL%GSg(P)4M)A=YjCfo z>9^pkydM3`V4|^eJvv*5z7I6*M?P3b&|$%xN15V1g*G|u#JX-b)&byLEt>NeoGr#*G2EZ_@xNNdwigP*h}g65Ux zfiKs9?pEBVdDBB;&i^)~?Hm@pB^z>qGxEJVF~4d7-rLazw7*>6YruH4k*`f}L*164 zZaJ7Qr!@k4UNnD1>j#RlexO8OKahxaOI5t_)3F{r2k|`06Cv`J^K8L-hAY8y3Wv$O z9|2yC0f1|FFCA=*a4 zKe>G-4Efi#Pi_y|ht6W4`BT~-OnXe)A+PmHypRV3!NvT1%+Z!66E_IF!# z%;>(Yc4B?mbNG>bGZ_h^olfl+GSf{v(Y!IWlm3s|i}b~r0PFiJ_4CFoz)2bO19_?2tKphKFN6dw`F9Y^h0Q(kTAG+f7DqtVF;tbOjIGYc9 z6@BONmGN^(2tTw(iPrs7f6Dp^fboyP|mq3Db8ue1Fux9B=5WzNvV7^HoEi{Y}Rkc=`VmZx0&y)f2o0 z)7MEPd%EnTK@ZG?j>v>=%Ylx7ZEza>+J^zhPpzQTX4S>?MPz>m5ux3w4YOo~;ZnIh5i!eyEGuCjM~38&$ph$O@&Gz@c_4o`wWt1# zwd?6R)8zdD(TetZn?kg`32VH_Z%saH8l#h4cpUerjoT1!L))`)Wz8Us&T%G;w@^ES z->mM3xlFeq@2nWC0aZq5>wkj0K|hTXb$aDziKpK&@bulEbDsXjfPWnyUGSU-`VDx- zTv4}pR{9IiqOIyhy^VOz?**QV+1{K%TEViAcy17QZeVy8Yhp?NWU0{_={p+t-y&h! zg18^fAh)*~`0o&OGzZ~-H~6kq>St^JMS4FBd>4wcWPG0qj&C2m7Ls21)!>km;^EJ6wG&@crRFE|*4ppE1}Q`ZpbmvHy+sWSD8adCe59_|uDZ zC$3c*iuYuDDKzipVaY!DMw!m#Iz`4O>DaeX?nz0%4vrvSPpq#mM1TJ@dnbqYfAr2l zyz{xlTjDY4kIy#7u>ErrMk+<0Zye;ee-3)Hq2vd*KHk2%qlI2-f#SdQ4v5*~yooPouE!t368leWcRxboP~gd%v!PJk#E< zw#(>;qq4An0=j>r!gyY?o%7uCEDxVc?-`R5zh$TS$MzPV8vd= zw)gPNF+6iz@%}Yl(LM*Am_zsNZTll+iRk;~XOO!!;Kh2LSMeq0r*DvL1m;5quj9aL zszWh&q5{thhv0=eRK!8EI$Xp-n+iOVPGIc{e$(^o+efl_28vg2j}&RwcBUN=X_o6c z(~d;)zER+a`nxw#AM&>mPDcQz_X?c)`nTZyg&%FQ{ZkKJq|{_+hriX?UwjU`Naov( zf^V@&oEPT(yj@E6b>fz6XWbU6eHZ)%AIN6?1LCq=5*<$qI>=WGH;cIhLVuB=&6pZqfAN+mL+&p^*h3A)ppCU5Xw_vim_1ZP^u{XQM=4AVY!7Y2 zz25W{kB~i7Gek?GvrNg6Y5DUT-kHBbsddo3-ye*Bz!!jgK4n`iGx! zUC~?n=UW51$MYb8=l-&P{!`Ss|L~lqExo5xUx&oA*xSZzd(#k~Z9h)Jb2;MvI=Z@X zqJi&g1PwjHbNwvs{nYUAyh7wJ>*uiXENEo*JZKDL&!7Dr$Mel0@O*op@O-28?vC#8 zT;2GGU-;{ZxDa^WW%R$~bsew%B&vHn7h&B$>E~9gje@*(wdZ@{gAqFVVgr}MKS=g< z@AdN(ZRgT3@htXbGCUU#_u<)1?JI1K*AVx^^FUMM8Ux=Ci~9En&+07g<}mTRN95lt zJPR5boX@vZzdI%j}J-xbK$Sik>NeWb1~L=DD^WndrElv`HQ_=-owPRk49#12pSolL1Q31 zZzOtQZ@fZb5Inzud%ef=NUgLUd55&2H#All_}V1s?k%1(!oc%6tRv?7c|*V9d5frb znEJUJJSS)~!^QJR3D5O7#|^$b@+A(H@Vp3dSwGifo#Jo<-pF?P=0^u=i@K;$lmA%&l9!HOTyI8*GqVQ{T3gdms0x*d*erl%Xp^sx62HCe^J!G zM|iGJ*CN8i^H!06uk^E^k>MFM2Ey}bf#(Gj2GP&=;$H9d^Of2^p9zg;;%l^luXhQ$ zd#j)S5ZWKk@Vse;Zg2FT{T$z~cpk4EW9NN#oxg-%!`BxxdqbQFqzXY)I? zarINQ56`gqo!a8FY)+uoe4d9T7emkQEJm3TmtWjGJ5Bk+v>9FLDL7Vejn!h=UH4t%p{-(BgV3t0AQ(Fvr#r#ceG3XKVH?_s6w={oKYsNep(XqbWH!o9L zeIin%jne08YO61aG|Tm!X+xvB%-`INcGc%^cK-BYT}gNI9rM^)9d8Z%rAker)`q=D z;jX{hg8WR`3Nzl{Kk6qT+8P;DtAj;{<`m51&=D^{(UJA``b#x=>;JTTW z&1@{O#zk6x6(xAtBGv>IhSbx<9e6c=J)FDCC;hVDl zN@06Ku5 z1dT>KKOSU0eHqS53FiM}^XW>ecAmadAl4Ha=hJh+W9o}zr(=C0>A>S$7nU6J*M<6g z`Y+!EmY5!degBrhHphJW>sS*c+vdZF9;_|w$$UEeC(VjFTeD3L&pyAno0lQWXR!Hn zqOlmX>9p#0P_X&*8lo3{Pa}mvZ1Y37XRys{!|`onJ{@a{CTN!J$UCGjFn0I-2EM*3 zXzt5=dMNu`$M=U*`$=DmxthmBy^Z(|W}lmYZ$%lWWwEnXr)bLQi**NZc6RZ^9503D zL>`u;=7d~-bwA4OseOJQ-U(@+2UveaxGEXS_pTb(UuA=qKg%sa#^rsx z`ueNMSa&0@zp9}=R*BZK@I2Y(lke)@HmCJhKgah-o_^zMzx7Ek18;$BbmDo*XwGv> zEDx>mu&Fm={ft?3sDunF8@lp}%d;cqwcn3v4sGwjS|cf5n~= zyt4@1Wj)co{k~ezxBNrMp0M93uVSoKGwM{b-`lXpf$Vqo%y4eM6Ai`S1=;T`4w}h+ zXK~P`+wb&_d3Xd%U*FE{a(bqEbd*TDf!XRTZKg=G+}N2mudDrDiniD7_kFv%uD_ZP z%KpJR#tT!ZPk>E5ulxNI+mU}??Dr2QglE4$BFYJ5{{-7V!P=u;==0P5eHPL8*qvN| zhqB*k{hDk$uMqVJ+kOvFeoyW93&59LhuNYIM*HhuY46xWtVhxN11sUCAMN)6f=*+9 z5E8#iik962{GR>KzTr19O#Hqt$_a$ukoG%pOE@k8jsn^5$Md_xu&J@cfS;E|U5xk% z%YF|~pWfK-8HPGNF6#7k+3&A}SdRic!;cZCHKcMp_m};?NYK~=JlEpLY3(VhN0|CJ zO_U+qyFD3?t{)$sKE7F$(?dKrn>l`(8J?vzUnV7jjYs3V#dCGz%UFvf>%+gl$Yr<} zcn(+}hG*1Aj7P)R<5u1HxS>ve5OwMgJa<`-vZd?(wumtB{8b9abHA*w5@XWsf==0= z9%4M&9Be$=BK8B#TS!>v^Fzk*=riCk8;>qxwpO$G3#J>JOD_8N?fQ81`oqwTVmx{u z;(l{Q7?0khx0x7!tRz}`J|1mQ>f^OvQ$K(;1l{d-D-dPK@)=@0+FT6Up#K@I-Hk{8 z{08p}t|YpHj7LY~o;)7K9?nn08ISH@dx37#4%H#=ZpNc;VvP@zPr=t~1kHUJkLHJ1 zpQ7vQIRf8(_8*FRcf7#yVAR+7!Tl{k@mv)>K=7VPJ|O&c60zUxF;GQNYYkCo}QkPL^h-aB4kdhS8uB?cbv5OfE^ zcNhC4uj~5nZv5rU-u`_O$9KQjCj#ScQE%Bk>5cwo_^yf2;)CHkkp2#`2K>V7o%l{O z;u~v)|AsX;GQP9>itqXv+JB4-58vbZg6}ZagYP5Sf$x(P2EjM+r}y|)wD13WH~0pR ze{A6Kndi9<=`FtFLab-e_4iFWzWZ@K_yJLG8Q*6N{ylxaGW_Muii!Elo8wxhXj595 zzr4A474xw+o1Hu?afkMoKZ7!R>Mz&uPGEoeK(=4`xA+#}=Nkw6?N^3<&`>hM=r144 z_AA3*&i5-n%h#W@?WDCVBguwpAX|b$8XxF3^8xs2X}>c3w*mJno3Y+T_Luwe-zxIo zM)_aUHGg5V?4bO=8WlMI*G%4gIsexbuP^^JX~#3C z@yuEA%og#?R`JX>JaZn;T*Nb9F#Dl_{06LzxgVjydKUitOL*oop27MWh8fZR7Ct^~ zuwKG5SR>O8|9uC1?QG9A=#=*kuM_mGXoK$P^!Yawk6=Fk26@~{KL3+gLm_;Ch&Vca#Ls8 z7TxF1Wr5C;wxjLojN>vE#_qNuq&|f9EjRAOdF9gnCwuVmiyxhXKqvD%@$+XsrElq4 z?(DShjN|iPpiIIDlf8j?ye*>gd@?BSy-q#^K92zAu=jd3;{G;X?CzGpQI?GF5aV+ny%v(= zFvjOI1;#5V41#guPj4{ZO8c>K2E;AhV%*d?#=zqT1l@t`yKu(m2ZwZz@8>6TeD~M* zd`=L2Pw0jIR+#@OR=apdV0`O3jP;+?)ol$6w(#`zr5#)c^a{^mjK?<a3Ar! zWN`QTd6tgnejI}%^1 zvNwY4$A0lZC!WtCF5|f#`*!zWjgYKIzIc|)W4L%W(fI=EH0`ci!_&_ni2Qqn=P>qT zuOfP3Z~U0TAb8%5d%eUn{6LY~!dm1V!rmahE-~Z``_jvyO?HtejxgXmt z>K&$j?gr1dYVqOXImmwOi@)f^^K=8AY2WY{SXU$CIj1*xuAi#?I4(RqPwWex!`P3# zpXddi&rlcy&wsW5^vL8EB!t*A?W&KRw`N}cyeXFQ{&-C+D?Ti{8p4W){d!?Vl*pD4W z^a9UQDGY+=Y~1TTo@Z#Mp6UkA;Ooa&QzPq%8GXd_cVoKO&*c+@z0r^Rv4{36o^Q|& z%n1|Es&rn4GQoGgz?LTPegyYRHzV$cXY4QDYT)~cANRuEz+UpHVdD9)$iG*37BsT+ z1wdm#YT>je+pIo#+Lg-=Q!Fp8tefZx)!w-!JUlNG`G=#QWg3}(L(s_Z3>pLB`SgB{=Nm%c zd2ClahqcGl98G%xleD*=2#sgr>-$(2B*Uwq~i0AX$ zxg3Ur=b6|m8O*=Y0^TV#S82~?hl%G&5}u2v`|#|f_7(QV&k>jLTnxHt{hG}8L!$mY z!n2yH-4G_8UljTG3eSQ@hG))h_7n zt-TRyKaq~-AC2XBHuoc*XZ9v3mO@oL1Q31R};OkH-1K85Ip}1_j-@# z+qIG{$UB6+L436v`1*>VySI3b2(h0?$Mc6{IG$Tket+2;n?=24{Tyt)Zuj~b-y;YY z&r>*_Y42CWwck0Kr9^DeF&!gedLH7kj;@C+4>9omZb3tD)^org-K?l7+DkWuhwqsI z@I81SeLtq__p@XfX7-1mc>-u20Gf;O{pmm$fAbZN@h>S1g7N4+Vf;32*Y`qWocP>; zbxN}C`078nY`%9(-(>{AVG`@+?Ut+C{jPE&pz_%7+Kaq~_wYLfVjk5boe~;={d`D<+ z(Ko)r!S^f)-(~*z{{GK9@qGeuKYR~2HU7}R_ftRMdZpL+R+F`iF!6mvl+`PI3z`|e zL31#C-%a$xMtO|FAo}~?aj*CI9<9yj4&UIj$-w6)1ns@i-=X#s0pHCuetbP%;2UN4 z7rs}BI)|yhn?sBr8{!2)_Rh_hfvtvlGMk1|obU z&2h^0+9Qu4?@%^4`23iG&%dwhy?qiFVn30N??F1gQFedf`$bV_8Q;P76REVHsAilN z2b(ocnX0M3zgV~ZT70v3PmY&D^Ijg7>#ybJ`6Gid;M7yrTexfM< z{Y0>dnu|vp&c}`7dnm5{_;TH!FI=u;G|?Hkm-)UNe3Q_7DSi;!dqMA$EK*3asjv61 zgZ)hBSqb-{q_?>@7+`{=U6S z*jrRg=a(phv^YFZ`+ibpW8V+HCa}!*``|pQcI?5@zp=QT zc(9$ftL0f9T6bcf&SuOli8H=#jjTCJ=kT&;4~SIdFn;KKw{RbEvvp`*x8G6RBxtz*50G84r-yi33_cJqW!+4BdOpQk zh`1aD_VCcQ%Wnqwna`ucXhSBIXd-X0~=Ze|!_ zX$M4_<(AI0BVtdFz$5MD@z7chc$9u9r~V%=QBcqhd8*pJ3RsHeW42m2jr zm6~+TN#76)U|-RB1hFdTg?SXmWXXt5%*%UuW;cSr-~;XD*@(EGeTDjGi~8$(d7c6d zE!fM`OZ%!pQIoWj*N4~txJ6mAeHCm!54B-2Xk={(nsxaOwx35Ky3y~XP#C1&$;7?h z^gF*M-#pr<{ZZr{vfqi_{Sk00_wUmL&3)O=(~bX!*;gy$xP2AdPitESiFzCN^Xv+; z-@z!uGQMjVzEidR^i45=Z{vQop}-|OPv(vQI2XE?eSbju*7U}obz=R$5%Is0m+2d0LG-uW-b{A~+0*lGLno$3bis6W<58^9k@d?hf{xzn??kO?RCxM3sxSBs zV}H+9q8<4DHHAU&P5kK%zPS!h(_G(0-XV2(b>lh%kN@jwt~UbVI~@OJH~t@n?=NFH zzWZ~3Po1c@Jbnm)?*`chll6BC*51>8zOjETK|6R|c=(LxBIxd|{*DXn|6%xk>=s>r_uu^M zxB&PL;s0q+UT6NFhB$SqR{tLJ|1=bzW#jk;^LZYYTnz318Gi_x2zXkLE#IW;Z zb`2;0&mh0^WMB_9l*Aj(lZhI{&Xa-91Uwx~J`=S0joQf>@R@vpF)hv(8LiaJi1e7e z@CEHQDVcwy?AC;mi_~>@#U7Il*~h`GAMkc7LCV{_UdeRL4u= z*~{YDs5wTTNkhrdIpkMpungy+bp)RA_nELhk!ZGvKGHh6d!I=fa7;AZ{66HV(`V99 z9M60ve)^1jCOffyL-rE`K3_;f z^@%8v7OVS58mcdeG>h7qHgo|0c9Cd9@{g+pXv9}v%1_;C&^3|CaA#i-N&N#nnO z_1VMQTKG&G$Y(lVug_jlpM8PrGfl1!^6{(Bp04#t2&X=)M17n*q%)z$>-BMp`nUtv z=Nh>_$j7fftGd=_NI3PGDC(0a>XVw|9iZ1IQPd|jaD6_(8VO%}As@f`Ozc{pQ(749 zg>S%dtniS111??1Pb9lnaxpR>e%_YrgM9qzb2gG=TEfp8;nZi3sLx(epMBZhU+VSQ zE9$c^aD85o>w|p!>a(Y7eV&o(^O^2%|M#x`_79)DSa%vf6SL(bwO05v+n_@olP=a# z{1VApT@3l#8qC{c7_a2<0Lfals2e?F**4c3FJz6bi?_vii*fFaqD;|RVdGKWOObaw z;_UesdES;iJa5@|PI<4C^0w}r>%C3Rd#98)_6JbjCdwOemiK;<_kqB9-zDX3-Z$6B zQ&#VNG2WNRHiaMha-Py;Qm~fvmlN4{`C0}(+}MJ?r7f?fsg>p`s9#cU*Q#hQ*7|@l1vPmaLDJCDkVE^FE98+UE%A2Do&6}Pdpmm@h+XP>IM}YFa zMdfYd<+Y={4wN@Qlqd6%%DWEb(fq~$l&AABij`Nbm-p$WnguXUh2E6GWK@|IG0X9aFiUI)q(dZ5;*2Sy6q2Gj$*yoOD4 zqFH%N?*u4sCY5(Oyz;)p+Jc~Z0OeVUzSnMJA!%KVWjnFq}r%J0{wHrcW+w z6|`du-Y+IO!22|R*b*dXXQr_lc zes(}@@v#{1o}0mgLul_brKyJaSCgc*>{q<64*>rTK>pJp|A$2Tll;>juYH1N`yu}a zLdZYL4l4gBZxh)8Pov*LdACJFJ_3}tl*-%7%WFq@9VjoT{G+^p@`!e5=jAnQdip9> zUI*w4RNhP~Z%=sTeTg+70m~yh0OdW;^jjRKFD7t#u~goR;g$F2VC9h=fbyVkKHXH4 z#>(3iguW;$Z)bSry)Me@qHlnQKr-@kJnz#tn+^JAbF}v=!rHTtZyjfK0%zNSzf|a( zI_R72&^OO^>YLH@O@*zzzOAWT-{Adb1-NO!`zmnLg7=xe36jSU%418HJQ@^Wf%0e} ztg}3zZ-V6ErL*rh`{z+lbbJ-Z>w)%Vd62#dlE;UX$437=iplmyn^8S#eD&B6G>_wy zN40+*E#Oz6_E;ph#}-3-Y>D>PfA3=5v-s`433;wZ8zd@Cs86j@K16GAgD*o-k2TN% ziO>P-J9U7I_Qg3x9o*0XYl7>5MARXu4nTQxNC*5GwmHgUwt0Z^?xym}czNw8uLI=; z(*Yv{W&_#)dU>-Zhb%9h%Cm%5-WOOi5L5^7@)|a^B(d^-LpDwT`fj1}R)kmHiD2cC z4$$fQQE2)isk~+3l}GD+h`ug50C)(5xqW!vrvtVcFt;_@JDjk#6n27+vjTy$Lf~&A zbU*=gKp}L%(oP+4BVm3XuW#!_pUu&%05>i4K8;!NJ{t=J$zw3(kryBjV8K5Rj01w? z@g<#~p3^0d1_kX)dAv@x59-0j073FNO?k}hl1Hw(BHLozc%T2G)^b|d7H0$77Sl!E%x=NC*phFgwzyrkTQ;z~ zucEv`7kmB-k@uy*dB@3l<2-G@yf1d<9S5FMy}jdrQ^Z-`0|&CPsAcFt#uKBxHAK!E z>mB{_jv7cl9bs>Aze^kP7Jipn%P5ie=)iej#CieWSQvA{aRYtp^J5xizUGsB zvuB^UShw&J|7NuBJZZ!Ct7}J?yh%~YD>O#b&y~jb`;{v&#%jgbc_zlls#4R0^Ol>2 z9*5t26l7sEa5x;{2=Pt$s0ii{ULSSAZyxjr$_HM(^gYR|BTe4V<0G_ZBd zpT{fO$Vljaqd%LS@89XqruuyviTcH&epF_x$xHR4wM!J2>$mrhe4dc%#^wlxpK*zy zUOy4_YS-)4uCRKwO7-dx^-{z?;@@Y76+ZvM_Mlzs^SM(U8wR3|(6g7po6DD@c2QmF zyWp)WczqL4U)UkI7qja!@wz&i-IMDdMf}Axt&qPq$ZzIh|NhBgI6@6hE^w&)A z6Z)#H0QaE}sEyj--)P4ey)_f*&>`)4NS}vvUEiTjZQx&fJbszz<8n;ilX-Xtb?iVJ zo!+8 zebk=glqR%&liZ%Ik^VSK?qz#kwj`b9-&gJYo_kN^VItKpggopw)N^1j*biKo)lWpD9Z=#`o>w8f@ zJDZ!h-ZwWv^O7`QV8Wb963szi{^8`#2<;^17HAIO6y^y|Vs79R<_1n;p5P?r0dnzd zG@hmSPX^#V(rG;=*4d6ciTQ>Dm=ijMd#5p1@B-Fuj>dTtrC7H)SFGEl^?7$}y;wIc zO7Xsc_s0(8^HeWljV-OmT!!~4uQtqWbYR_42j(|A&~Ia^rCBNG>z&)NF4FQo_Nm~0 z#DTxo>E-jiUwm$Y&Rl36ia8C;btUP%!aU7EG5_#cR1}-9Idc`Q-;Va%FGK5MTKAwn z%OaZE_rb@zD&iom**SR#yg00QPrs#jKRkkOd%UN3KRTv(&mPB|%{W^7MSE#((2B3d zJn2^CvCl;NBSgBY-An1)kiIIb3F%Gz`D?TyO5d({chGrz-~;hYUQbEv+KKnw zsP`JAAHX%0aRm3@!~J8pw%~pl?yo}q>P+6hPUQS42Bv^pwicN7&+4?aMqRtR4Rmb8 zH_!e$k@0`z=eU-?c|1qZ(^`!(@J!Ysl!?4y4~cowXg0s4W2kMk($qcz&rDPfc8mrN zV!2G5#`7PdK4*Z@k5YkyG>*5YzbkwtLy`aJ8oZ0VCz|jsCIX+p&&g*|ubsf>i>TKg z)N3#5wGZ{$4}8u<-H87av+ykH@hr;Rk2>r@eRiTAdr>E}=|}sh&S<~QXoD>#@6^la zr!zY-yz44p1#Njb>Th-D)|O?x7vm<2%~sf%6Umn+H{fu_4-ay62|3 z%^|xkR}aN+7=BmmI+tnko-0$lA0w}iS1I04)|kAXFie=395~U=1)`ltp`Fha;MsY2 zE)P5a_HrQ;lcE&wts_m|TL&uM$wLvp9`WIdH(>>$OBZKEt=eT60il0m_?) zvhp}aG9OZQWj+*vUnG7}yC#i9Ue_a!o4{W;_y+!Q{W73W*tnvX*jO*HK~v5gAAG;x z<1t4K!@BWytU>R$y^88j{2BWkU7%j2RBKw zHQa<}On3%(hHRaJY&Gfn{qP7TKaW2J{v5v6Pkv6&zMB=fUX{)qQRB4%!=NuAH)fA%PS38nMnfON@F=e}C%qhnKCBjdefU}>WhB;g;LPr8v?$W!qAzRN zhPFUo)mDdaJK82Ha(52;FTe7td3igd#QVHFzdd+*c^;{}D167w^17kCjiS8G2)FR^ z#-Y5+U*JqH3#YM|)38*2`-y|jkAwH>@3-$u7tSU38w889a@HEJJ^cw1SWA&^IlXC~Zg+{P~LVnYmgiqI;Lm zcGA;=^3$*Q3TyT|>1aKh^=h-n)M0VOVl~yKY-n{ z$oo9-yYouM`%CR26m2c?|1>TsUTedd)wCa~1NoeU9d!ynlFPJn$n!XOa{@g202pY8 z-T)p>0uLV@haNbQHT<5r1vB6_bmAPQ618^PdDlnO%%CS8FBxvy)wWgH_2s!Q z>RPvCu{`Km{ax4qyKeaS3$`z!^*HSCRlveq$o~l1@VyA{n{>U^Up-$Hmq(1tw^PNHpTgjZqbRYYj3 z=(-R(+OQ9eo!v5&c%baopZy=&TZ4X*@|V9QKxfOf7Glo~=?=)?t@X+b{hIb}#>3X2 z{N?>cM9XckXTHF?1O2Q+rcc*S(Qbo%(z=xA*MWTLU87F@SiCm|?J!2@)Z2h>y{=P< zu7dFBdM*@Q1qQmrb$4|Ax;wg%PawKzy$|tY40NoIF6daDuFF?|u6g0n#lG(rq`l6~ z%kplA4)_@D_2dp^hJJk-?X~%4-d+{Z4GV;Bp!Rz529tLS>NiiICLrNLk8~7{tCAIvx@h3WQ!k;V9(I~+pxxQ0?4YNrZp>=dEvpKtCww8l&@qQ{ZjhESh zGEbsR@H!wik_0xQC2Y{T{Vrvi0+!j3{rl;lb3@|~sm#>y${Zoej6|6<4xx6UGTXqz zw)YTXyw$cJdOzn1)<<97*V*T_?q}ym;QXX`?cnr(U>^{8zZW_j&$Oez=(vdZ9@t@f zVUO)YersTht%prk9qDa5k971KZL5&xMB18c@5%Mq-c!}t*s}=SM8WPKi2Tk17w@4C z=Yb9MvFCvWrT)7|)v@&#o_`oNwS*(W&8a$$r_<= z6`?l64|dpe=2zkQsM|pa%{B%&uzdnWQ^5O9%GOUJtXQU%MkUqUGUtE44tBL@5hCQ=M^ZE^lP^=R1;c; zeoJM>hgW8{D03KOXp$sD=O9DpAVY-FaIo2dvmnmm9EdjPs+S0(hw$!;L1gbmA$#g= z+F#NF%icN2-p7!=Pau2e=E3GIi1dC^2>TbZ_c3JeTn^ImfYEutXaO)<7#gEj0i)+o zzmI{-Ct))h`vJn`QxPWb-?6?RLEw`0A+Jo=o{Z=nA6E5%4?hZr4{4xzCisvk@nIa& zCV~%X;KNMtAu}`|-bI~^e31JO)|Y}0uYnJKed&Moo(~gxz=wOo;lpUq91A|gOMDoC zv{B&0Xz(Exe25RthbK@cKVQIbE-z2udvMerA4q3=Nd4__hH`IDU*x%;+v;CpBv#>a~K7;z{3py+4qS76NWES}qm=h64Hqwi^d z7X8jn^fN<2({Six;GX#fqHsMhlKk5kA7Gq}@!A7tK4bgz+tJ66P23U{wR_};m+BPL z4~`Z;yyL>)htSu2fP3vG@1MMv>%R5s1%77R;cJ;+ZHeLfF2gnXfM(TPtlKR1uK4_6 zhp*uN(lO-k8Sdxr$sUM)ZyfsIjpYA|@$-LWLg$eG>vCBH)Bi0Svp{={HsT!UxU9@D zDN5RP5z5HFMn!7Icb^mQc9el1$8au|A@A{0-kZ>t%-#V{Ved3=BHIJJrM(!ivEYkg zHdd`}dmL6T)X`qT2()p>X*_opV{!2PSta@`>Qq#Y7s#j4g7LfQnL*$v7 zCQ{yqQ4aE^@z<^RzCkw5k-ZgTN#c>Q&wW!oZ;pj)5|yVGINe4AFiy1ns&v2nIGIKR#w<&rT!^Yz{nT?LgnxF%#{+ zirUH0?&vqKqIRDMz9+)o{4z+pL#Lda$=m%WXm=XR_}ae?`EHN!Mp7GX!*kF#bicdy zpBAkBQ4Y0n9LixK;UEV%$T2nT!aOSZc3V*f-RlkqHwVK3-d~3Isa@NkD;W-6M7XCb z4yGG$K<}LT=jBm+-_mfV_eigu+HkS%9i;2~qaKf-@0s1=o3Ew)M~fnqS4_}nEkhOW z-%eiQx^tuA%i|Bo<5T#+*`B(ceDB&L|Loj<^_lRG(|W(|@_*s)UGqN}M*d1S|C&cC zpI-eo?5@bzKeG6{Qv9eC|DzQDlN4{0;-{qeM^gL~DSknU|4oYjU5fuxibrO5)-6Vg z50TL^> z;&)5&d!_idrFe-HFO}l=OL2!3cS-TpQv5+FzCntAM~Xix#lI)TpOWJLCdI!m#eXQp zpONCvN%0q?_--lwvJ`KW;;%~aUr6y^N%1$N_?uGvZ7Ke)6hA7(|0u=(B*p(C#oMI# zDJlMu6#qnuUy$N|lj47u;{TN5kvO+fm(3U{K17ONDaEgm;@3&>8>RRyQv6maK30m~ zF2xh1c#0ICCdJdG_-rYjEyd?b@jIpXLMgsjir+28@0H@;mf|H+yi|(cFU1{F+$F_V zOYsM#_y#Hd9Uc#+MvIf&lNV$>w60+7w>Nm^&bM3DW%o@O6K9_=Nu4l0U0t*wYe8j& zxnlX+q@*`qDY`dh>T>h)lI5k#9m`$IJ0?$Wl_afAx+lqLU!9ULQ%y`vNUSUw zQ#8MPzGr^b0>`a*ykJSr!os4A_%YU5vu4j8`|XJtlQVA5NX!_MF*f6&jBjU*9sAHj zvnEfRIC*kLMqI|MjM*9K8D&m;>6i!Js9%2T@^Q72qU#{#FL zsLHm~W-VG-HP>Y?G<)teJLcL-7MNXGm97Qmb$3=d?yM@$swykARTfx03!SUy*epwm za@2~93F*kr>akQNCMM<<%uP<2IxS_Y!|YgSUTAlCD$JFY9#=v_!udl7OYIJ4$^B&( zbxgWiR;jADkGDHi)sdl2R#kP8sxDZRlX2f9Rh^~U99DICC%bK)Rkn4D3$x}FW-VEqKPF}B_z6QCHjmlnUNC3Mf;m%*isl#Q z7Uepu`3s9?feo`W#(q1a)ahDncIDYTc1NibHM2e7vQ_5ZH8~l-6#P;>>nd#?SCtJF zU*@uzt0 zn}Xj|{HCd94=`Afp}H&Sm#&t(($!ML%kZnH%$R^?tgudvaIZ8+*ew;6_Oc4b=an8$ zWu>z+)m`DKtN{D1c5}IU#o!?&sC$*ezSicbs&JSqY~|($*R8RcS5=xlE8Uf5N4eeY zL0-xDrIgq`?uB@!2z*R#jt&xBl; z%jsI(6*OXI31pq^POmtvML)I8cpe5G(RhU;rxQU z{Dn5hiY0{>)NOJy!8&a^S{DtOJPm(RQ}Acn6l&P%W|zyn&RuS|*r`da$ih;mfF_ZEbPx>w`HZxx{_c4XgkZw+!nK=Vx`RtV45v9aMEsZm*ZWt zt76&|)#C7Elv(VKGIc>V!~~qlP$5}E)C%+347|D;K=8O!LIfns?orhWH=YBSGE|SV zGGiGYhJ2M)rW2Um)VgjvaGpYcQt6MIwf0IUn$J`2PFHiyuJU!cIgl_^!EGxocbYvV z>p(=A%UM-fYPXeJSDVYL0Duy-mB;MzSV(?y9Uj-ZJeSS3s)CsJo50Vjlsv&0RNb)p|)fKt_L>PyC`RUUge z=?|wxEd|q6h`1SAwbErl_~Q+6tRzrPEqzMxNID z-2}!ltJBpns}oojInE03+)`mpEOSEfOifOKuvu-cEC)F1ns0NIL4mDvTRi23MT>KD zi|{vpVV=FB(&_TJ*Vxg1`R=6vR3R&CA**w~dp_s`80Xp6%_WI&GgP`69NYy}9so1X zN$L+B59-THbQ2%Ze~n+1wJ<*?gGp9u3Ja!9L0{|!>d*&QnO*D9-#WpYNh)C_0ex*k z!Wb*au>w%50UmI5m1pJJ60;rokz^OHL8ohT+0l`f+Z@R=rc$3YBW)UKFuMczw_6F6 z&=on*Jag*ELgg55(6`OBm&hCbv$W5 zSOMA8t)c~O=%mJ|Ig4OKsSi3UO6(Bc`;&lU;vfR19$|bqDvjdt{u0sK=J9S#z zc?ENFvzO!*+RGe}dN&UU^kqr(zBQTpPO~)yfrrT$5Ks2TU@)l)qQa^)VKA}9t)?^f zK!^Z$AjIihRaL11JoeQ#Yd+L1I>%fq1Mq@5DU)HCzy_hfjYrJo(79`ERx~jM)22X; zxy@zJ?3Pss@W^WP9WY4Hm~NXDnL#y}UFfUaP|E}qhTnA6=}x5X18gNUm_5!4bP=Rh zp-EXVbs7cGrW63+>FK5TmyR9=2zRF>Oih@QFpUSPJebOZG#*Un!HoR*^K6em}y4hv?)WVW-B3!F6Sag209c5dlY>)(t&R?v=1pN3pBH6m;^G}NRO+P zPR6rID$|#QI#Nv;*;#Yc#aRpIsbpJLxm6)NPmubjeo9W5vGVRRfJPSI8}txM3^SR=^~sV z!epMIE175LO6D25psVShE175LO6D25l6i)%WS*fbnP=!q<{7$DM1CnEzZ8*QipVcT z*G^5Efu4wkP17+)PRb zQRpHY^)DW0`Wy9S&P2ulbk~VwFygwT%3f}TZktH;$1hdr9)wK!qzdhmO6rH%d07j; zbr%`e$X_UubgpHRlSG&-!ZZ>SClvn*(MPa)lvI`GyBDF8w_E1Io+Kmi&ccF)6e67o z6#8G*;pPgugi>-Ba?R?_cju7tZ+*~S_Mo{eHHC-MrqJ+#{>`^LY-|Lfatk6|9ls#I zun@gJM*QQUbrxr-7#}-W$BaR+hiNO~S~)=hc1(H|4BT{ZKx0^(6_w?-wbQ0B?NJKtBYJKq0;n!@4Q`Aw z+`LPIKC`*#8P}S%{6E-MnoW9(!MPG3V55xrHgoA3aI+9<%w0i$=Rm)a?qm9nG$xBM zEk~U-8LFxqNP#hFs{qwjixZ|lpbjgz6518aCnMCsEXxYWL1h(&9OIdtV4a{+VaW-w zA}NwW5qCnly}}L!KdnO6*~EB6;hHgfh$@>* zrdm`%(UuUqpkbLIVY8NH@XpognyxE#)Y)FfZD^Pf%upUL^!5bCwi0mTVV`E<`Bh|O z+sojDuwzJ=;8@G*!-ijz$YOT5C$S5A)Dj4Xvx9$O<5!{PN)fAz?$r#$RP8;ZjacgtsTgRiH z%wLFJpQLbM!QHuwvnS{##q=48R@>@Cx5o+@A=7vc;544a=965yQH}?&Fk8pOEyY+A zR>ydZTy(P|&PoITM+rKp>Y$Bca96m9iiwh6?F(V%P{f z-3{VtfFPs|NSQ7ML2x0mSZWGl7Gf1<409<~1tEldK$(d&bdmrUb^Fv^PM;!T=pH3g08cPa3o{G&0FyfELV%k~ zGIa|)MrmBADUHYGut6{(lpEd@v%)AK>9(w64v-aAo29(W37KVs4%~&#Bx3@Do+=Mh z0Ap4UDTD_B0gW<14TkH~?Wb4?gcjGjN)HTza<|>R&_>$UZCjkbD0jh}$;s1_n9O9s z9)k0U4KmgIMNI5-3L*DAc1Ko0As%724J34xy%OzT248wXVG#{B=HxEnqsV*4+#@W2 z6=Rs+Z!x)l+;^DWV${JpdQw&B+R^zlmlL!HhIt<6DtH@~+C3|C%IEIP@)hueaHYarilkYD2&5)W zO-|$9LF$-*Py#ErBv@Cio9ieFelMsC*h5t|lt<%@e000wfr8RfcUif!#9W@m2G!I> zFCaGn_pWhCgd4L2Lne}@G7B4pP%p_;hZXtr!3n7gj8m#$(V0F z+p5q-vtpU}Ql&{^;8G$l6^sGqp5mh&UDdE5&v76qggGW`BoZ?Wn7LZY95e@}p zMxIoU9VR_QLia?W;TWOLAvacfCN@q;{&El)M5MemS|>Svm72 zkj7*^;6!zNrxKc^R+d+l*&XSf>??z-pcG>OTLN5c7VsY;hVdA)S;TmOAq;8@j@A+v z;Z?1)SK1iQ_-NXm=w$T;QlX6;P6snj+*KtNcHjr7pI?xZHGdAemHdT^a|>4#EGo(` zSXg)mlcW5s!rVd{5!0vyeLA_)l9*lZLNpz|LUdE((Y%lr;2+9cwGp&ROYJo9r9iE! zv}RRS!s2Gbf<=q-@6Ia9Rp;e?OBZhVA?I?J2B{hr<(f#C-joV+8MHIa!Zi?UdTNw4 zE8vDQyFs3=dYGj_Lwd7^^px4f3Wj}wIS*DzjJSbh+e)*0rHI0g;o8YkZb!>7Ma9V^ z_dfhGiD)OGv}mBEr#@(}gd(QlNuqF@u;|oj+4HmJ<)*l4Aj6|2auk|dPt`{@cjOl4 z7tApWo5pT)qkVPdMt(8s=&H(AGQS|#U~{2cgsUXS?1JhAA3W=z*Ypt$qKjx02Gy1C z_Gvjbew~b7)n#*Wg|;+*PSG6`$hJc97}~%zH&>cV?8pxF;Cc#1H>Mwwr>0Duo;IC% zrqiaS%t)Ovg}DS(uo5N#8*l1yGW>L9l|vRj*#%3{kwe$B&Y$-#ZW3N7vqGqEXcW4r zv{~ThDzju`!Y9jRbC}(1Cc~GGUI(Zn`=P>YU2O$29jNn4@BqyXzpUM3MaKzQCI4O} z8+f35vY{2rOPNWPPzmEl*BX2XK^lbgf{n?y&pLt&k-dT04;ot7prbH8fhL26Xy&R+ zMTN}{5oe>63^r}V2Pz_7W+9g(s%n#j8~$=;j7m2;i*5kkMXVZo^zA#*MaBWMYvo%nHvitaUg!xiHgE!K{*( zJ!=8QsUM_HO4lwlm6)88mVoJ%gk<<#FpuPc^9?d?sRU%*RhE^Qf^~a*1|MvF-@Ayj z?!Ahn10GUgj*xW>{a591n@dr(3N{@`qeYnTE?b2Ygb8i95(8_l2Qks>i(6ECharM5Qr{HM>ywYnb82;#`Re|1eXX_nTLnb)${^K^5ppS3px@ zMxxZS0u6}wTva9O^kT2%m%`k| z`C0Q9E?JPBySUJ1S%e93%en$P_c1|5t&w&as5P=ID~gaDNQ03_LwK&?(g zPnvj7d=RpUQKOT(2~r)@#lyI%@{oap)-Qt{hxT(iRdgt2w$$m#Q>M*GOOdBS_-xkL zwF#v(d7~0Gtmg8f`Ex1@Vexu0*I;~2$SkCZSQ_OmuvKJPJkU$xVr~_A(3rp$($KF6 zlc6x47w0oyIs8NDrF<6{EHRm9lOu)sd3PR1` zrj1E+COF8_g1yKuxW<6$Br=8WWck{xOUZ@9!G>`eS&pRL{vUa78)I3z-FMvxti-K= z{2>r0Amw*|{7p1RX7b*rj-uJ8C#Id4^6x9e@{RCQ0;awI~G zO;C`5Btr0o4drOTriJHyc1`@^a!61Z84E$Iysz9SWD-eQ8CSQvh~UO zPE$b+NTzAlCB0aGv`NNhkL&{Qun0Z3c6N&B(_dhV6oB%A*$Z%B0l_;BanOuHAXUXd zX2iATgiFK@8`~39uG^Ed7iab+k9<7M2CjB{_rr_&;YrDK7=|cQ1T7b#*#)P*5DA6ha{Yfm8_WdE{MAp&`O#|TMK zWz3FY9=`zb2-zcglJMt8r{|}hGffk~1-^% zGb;M~cxr^t0=4=Te%%*6v&eG6zD`6K7R&qf5K8Fr{ja)&!Gk43I?N6TysdSxRI!Y1 zE%{mx45E8w7=lG27c6Ta^CKo#05g4bPgp=#QM-6;%M2u)O@PQY*)t3=VY$p@arb&9 zLuO;m^2GGjM12q?z7_?AE3}AzHs^OhDWJ|ve3#Z#9y5$tv$%JuIbf7d$b<*2F8e;L zksM%hVeS>aIUgabVPRwTX8PlJcyh&1oIv!aSDGp_?Doa!_%!0X5(^-M8IH-(jv1eH zIN->V_y(9)&7}x&o=<9z*VgwB&t{JgPo8sn7K^3`t(nM=ncvfMTTys+K4r=?D=|{nQ)f--IwTleK>|Jm6`8BO-<(7@O8PZKv1mw|mW%e#?mFA533H5q+C@E_NgD_46at;voY=PSnYwsx< zL2w7l$T_(}kb$(IkyPFb?|gZ&-xo?iNoR*29Gq+2O&vKzrki->n0wAkIXF}_TtEVG z8ZugE7*bHfl-wKAnTru}hrNe40=?*mwdxTc$CHf!DyYw=kMWfpwIo(`o zbiPG$C@*%Yd8aZ8Crc~?B$Lq1!-MpENe{>!;8I~>mDMo2lT!3Kq5FncOn9w;CbTmKDhikH_DRVm z16aV z7w(po*Rr*DXLNuvzh-YbN|L|nWEQT zUxIuH#VU?ntGR3!6+o04#c$Q($Ri&GN-UIjS#>ib7A+tF zRjdj%ph7AWH9Y%7-eoc-Lli&}Sp>81GP7ov!EbgySH~lu0zzR}bLJ28I1TqLi!=Et zTlTZ!dRd>B$2=b_Igxo0&&BG>=pDN$WFt6lafF$hD?6*vXynfr%6d+cn>FO5r$?{q ztc`ue9*<0G_w*c0a8K8_x%H}(;*)rd#@&@TX)Pv;%r8BEXJd}5CDHWzfP z$1yuNJv}&@E}Ma7o-cnkI>cUHEEzLbYkU!cv1AtBGXVC$Xm^8PX+GkQj2ONoH8TcR z87<2LAkhGZia_>sa+RJpF3)~q^SQFYHH%1V>$}^`DDvc``GJtSHbO6Vs`>nCI&Xiz zS-jx}4G!x3{F2p5xcr%mW4|rcV69Of)SC#+tPc2G@h=gn;JGv=0IwwjZGK^TKPl%W*J!x6Fu>@soW7zwMfP&p zOOU+h!>iBo8%GGAB`+e+SD&HjqHM$sJt4L(gN1i8!4l-~cG<=QP_!I@>hy~jLnb{o z$K%r4aRZ0-a!QJgnVFe;r@&IU>ffE+J2zC{`HaBGsa?qFNPllh0 zWXGomC(M_L*{8Hr?mynzF@8I}vAMS5Z=9KMu!Loq8{>*iW@;Pzm5u1(1Z==uMLDr& z6ClT{iZoy)OujEK<%C|z4k`?{eT7!P0)oy_@dtEO) z0Qg@LV3#QQszqDJyjI`YAWE&iv&+P-z9ZpFyt7*S7Jl3;p|Xl1!hRG&*!eHBT8iRC zn}V$1RVS2J;dpG_@UL^1Jd%^tA^gta>EvK|J`!#PImk{jDi&rZ`?#%0y99LQj$RRp z!$lE~fYx421xb%4GH*vfa*~e$PvEB^IV}t59^sC~C!hJeIS zuX_0rD-P)nZ@{^ei}Cf4_fXfMqd@t?rB6vpS904J}_9wTORN& zq44}$BEHPh;(8zmnQ!O#X?+0{AW8@yLqs{H8m5jcG)yZX(=De-nwFV$$P3)0$<>jX zlx)-@ctrkr&dawmm=ojIjL9*Qjc6mYYWZ87M?VHjm*Py(j5X22LS}|TC>nM7LJsS= z(tvIJmIb;SPo6&7qyXR!aLP#ayLz193`^VbGl+g$&G{i3IH{f-?>0MwMzh%k3ldm+ja9F+(pc#?K!XG9 zpwa$S<7Eom>RS&=q+#6=<^u_Kt4D20IW_mz?8)Jr{oH}jnMzy7TEI7FE*XnuSc&J) zz)6p9|2|V?ix6*#NHHewHJ@43en*jK^{u;l%YZT~!Hdb17Wj(rp20n{ z6NdQ0Yfot7a?omR>;xP&!q8>j+!xZ|OM-MC;cv9ONB7*9|J2 z%E0VBeNnbs?xPmyv7i>Fc!P7X3!kx^nAf<4b1jVN z#kWoU;(UXP$*1=)@{bY!a^egyb*Xu_BDY4r=ltm8QnWS?Mlp=Pm6%X7GYJ6^4}z(! zVzRVSfro~bD(A8nx5`HaV&CK0?s3i2lUIoc;Fb>NMnabwX84zW?$|u!u|F<>35_+^ z%KJ*ZR4z543L9^hAJXxhSb>sfIX;^18==Cy2-&pxw`}wi*L%UA>v{Vy$Kyu3CP#tA&BqmnU+7d70R~8aISOdrV4*O9vs3vGP+x zxwwLZx*cUMAVBfiDFt@APJ&3p`{#!^@o6z`xD8jkXxbQTBu9fF=9FLwZ46(XK%a&Y zXQgBu$w34Q6%rW3On#{HRvP;fRh-{4_QKddQN9rC!y{pRPVjW|BY!I)V57ABt@L$^ zL zf$^aE?cELhT?yKU6uaUPQT50rrZaicin$FNh=lxQ@f)wfMdNApJ=O?zsNHL=v<3}g zhEBIR@CvB#ZaMcRP&DuHg!ilOJ+`XT>U%Kf1fC}5m4&s@bSQ`qauH6+6K>0xe0@)tRl{$4|Q{8;2IhFZ<0#JqPc1DaPuGDpQuom+a z?$n&_1?Fwu#mWiJisMMIO^>Y@#NVT?!EW5Gn>%rX7V^B-r@&%@TPFErR7~*>gA9bc zSK{Ao$*N#U_YvTCM5>Lx0msHmSKk|{-pi+N2#w@u@_Q0c2d|La2(yg2BR>Q`;+5-U zhp_@#QH=9srt0?-|9)^P46cVE3f!%QH)c3coXwFEgk7G^dA9AtgBKaB9dpD3zP)pC zIhqjsxz}oBw`E|9T5gYtJjDg_SVSPoBR z0W?CK*$e^j->fj(amCRr+0B5xCLLrye)pLlgS=lf)5AA5yaHAHr20 zKyw$i(>))uf(wjx1cqLG62wo*9kDoc@%R!gEY+=XIfPlIC+vxC-Co(VWiZt2cU#@g z3L#Ca-59KRQQV;2gwI*&VWL+$y}sASX&vY^^8EfwTwj_ZYxg%5*IhU^XEoUsm`p3Q zils~PI1E$AqV8W{75ox*7_yL7cGoEw(omF2IIo;RNB(gv+u}JDHxWrXVy)kBeG4 zI4F!_Y2K0Dv%(_jNUXBO1NMTAr;gUImJ{WB&u^B+6+8mtR+MmquKw7tTwV0ej>xyD z*Kt8lqAzEON5)u7|Z;o z%Lau2o7Ad?L?K>-ZVD2$nIVQtC(gWO{EZx2#<6viemIDw_+ASY6+EZ?T+m5lw1;Ow zDZ9sDb7^j7Ztt3H%&Jl6*G#wyfi(#|{DU=I?4E<&-5=iCaArG1k&S%Vb+h+)c(!?+HnMhCji{%9rPt?onu;I6-0WEZsnEbT{Mq%F~mSEEzP zckB@vO2(*#j}lY{$QqHP*^ZTvu--v9u3rqqXbL6+iSeh>XXd`u!~lmPIgvsorM0G0 z8<6DJ?2#iCOZuqvKJZ~y*U>!3=@(>DQ?;X9RhGEpt~61Oj!e-R^-o6mm~c5;vI;cI z@Hxcs1u!;>%E7WzMzef|!i|)?g8(<9I0kdVtLImh?4?}(E)=NWb-K-b-j~*hDS+<$ zyF7sXOy1PhjVlEU$JGB_>{%9152cmDcZ0sE&Qji7li(`AXj-9BQvlMU>jj3^T*EA` zfp1uq)&#MlQCU3Im$&RL?Z<~abTK2~fEKhP4OzsVl13Y+D0EJ8qRB#0cM_PO+CVXo z_;?1;=2OHsktG4#y4uw~OT2vL-Mr=_5tFmX+%s`Tl8fL}OJdogOuTH~6ATRIBTkqG zE1iFzwB6BF##V$4l+=cJf1;*QAv9#RN9HY^A>g+Oh;BnMfO84x7%iDLiwehA77G9{ zTojVX3FruwsLp7O^H1z{Umt7ys44iuqX+*=4vcQnz*9csvvL9kwsZ}jUs8wo7bKw-*fFpm^P-o;xBxGSrpW7 zXq3a^lvtVT30qT#K*H?&uoNls0Zx?2`tkPWQ)b*UwXgWV)XqU+yUy>&TS`_WU}k8l zzKy1-LCBRY+^zVT7nh`uP5WpG+@i9nT3AtjRq|Q$5lT3hWO!^g%2s>MBYS~tD$F{R zJWx6LaRdi%X^ARhb1?o06$C)a=n>f(!lv;BrL-q_xofBPHHV2)3c8t9S2={vVy-A&JO3mjpJy>gUO1ZuPg z++|?hDW&fyT)32GX5Lo?l+1UTpn~SpajrL}gR~wZrp02ma=0Wgq;gxtQK|bHxeaPO z5PrJ*&2G%dHj^byh(u7R%XKU2iyBnIt11Vi@s7jZ`ygR5>v+?R(JmGEi3zF`fwfq9X{5MX4J_l@^nl+YHqw}i%_0}p&}?pj*mShQ-4Tk&6-G4 zA-zr1q_?-|@eu64RtfK5UEn7HLyO)91TA_SIJDsH^pg?8rU{YIgF9sPv!es;?HQRK zg&gTqrLOf!(0f(uy;?Kjf@g0eUr43S%karUkFKG%$O%`49BwXSv$M6azWHEtE|atQ zWREsf4`~^)Q_1E$dyUFz~L9^YV7P8T6c|CSAlq`BC-qU@8KdZ>bVTfXc?oFx<&mNWEca!Yzr}LPpRq<6& zi46S#ZP`$*!YUSh_e} z8ZQZE%vSB+*_p@pSL45E9wdISdRGDM+wCC=bWi_e-qj1OtSPRV%S`0+&k0~1!ingm?*~z# zp!g9z#Qj+~c~BCOsPN%)2oI7?0xq9tX+$J*>$*D0XPDiTQ(X6=UKzI-+m?&3vKo3`n zNUJExO7ACg?;Jlc<#j#PN7YFSzUmWx(+K@b$@hBXWTxAKA#TRyq!9w7kavOcHZxte znd;yd_E->^e_A=+B+n=y6lR9dThw)d`3+)IWok8pR7hm4gYw!-jpkCLwcA`-ZFE*m z$hu0ued+HAw=PlB$)rlouRc9xgyF{|ZeRoXge!klTUG<}TT<@!=Pl}x+Qb&>5!`N* zap;n5Py^qzis!Atdo%quR`mN{eRfC}bM@l8fPI}J3@+yno-!NB{k{ecRzJWXB$BP5 zwi1>#vEik4pAn;lvp!?_Nu%LeznYTSEO+b8C}%~iWriab$uIq!W+)ph@NW&!iPsM~ zkgLW7RxVOvAz;AVj_aJ4C(L|xdpS_z52Gb08U~{%cU%pXIEq5AH**h#(I7iS@@?h> zZj@G)BQHxW__rxNVX-Cb!Ad@0f=0+>gkSBU3QY?ufcix&x+`MHLFnsb9nQ>Fa#*Aa zumh)O8VAcsXqu$YuBRJ$C!b?FsjTvAifVstQ z6~xYO_#+FLpS7hCXwh9!NK6A_=aM9xb(=H-inZ$d6RY0fRCoq4Zq{`|xn8Halby;` zSBlru4KDsbn~{)9Nds$6uQcrMe`fNZ__+Lm>w@9~b@#Huz0|P5GwVY8rvjPlJ3LYoJEv#vkRuZJoSK_- zXO^(?I(H04km}$9NJ`@@MAx;i;G@7|mdITXp3;rp_Haa4^Y|OufW+zxmQMGVuIwBo zrN7t|(g6H!%*>?LMCKU}p`hHPq5eBY2tKz;gv2XXy~6tN1W&PuzjE^G{*~gW>UWZh zQT7?TS@du)qlh^$Qz8uLOEFz#0xCRnT8T?cLINO5TJ#$G5lfpd3y>L!q*5kc!z_7eVw93UOg z^*EqFZ2T(LPB9N{G++AlFxAt5qUg6mG;t@m#4{QIBQmEc~4S^g~KR86(SPB65QIjy>{ibK7$;T0^YOEE0LAnybqwxlNE% zo*vz*i92;%6vv7pEo_vX0GlC`0pwR1V@*~*U~MK0tn5|7!eqM%->nCFtx%bc5Uemd z#T&HHp|k-@tKv#ZVRh9dtSjRZ5=yV|1ZCwuV#fAiRp-sEbSSnWO$ekxO#0Jop~;xL zJu(uC3QecgL|}*3(Kp$tpPnBqliN0jF>hHlFm75CJK|Ykc@;$p>RdGS9XbNvsBj}O z=-ydGytsy1#0^7Wv4bUI$mZJHrsqj?c|nQHALATKx~sCFiELMv6v$p5a1B^&0-1T> z&XHt8we*Wm3{zs;Qr;uxfwUeVvNWT_DZLPKDrOB!%M|}n)SH<=LTf5;tg)baEwb5# zp12jwmLI%w24Ve5x$b$BS^6l`{)vW^3XsxjVF@KD6nT?|=?!}QexnB&&}+5^D@}L- zYfDhIw9l+%U#NeS(_WWXw&eCB`cyE2p2rrkuNG=azfr0|;-hb}{7_MyU3%}J9Oo3g zznR%GPJW0V^y*8?LNbxEi3#iQOF!rB&dQiy5N-D~F848(3R4i_NXdR^hIMx6$+behk8Cg$H$iv07^cVlK_S{gnwlRDbPod z7wz&sGpmRTPy-jl0|a-{3CMwdEnz@eo?(19-m6qW6y8L>BrO6)#UQjxJZ%PK3!6uk z2wdMJQ9o~yk!o3sxyDhZip=FsuwaashP^Q>T9hQ^8J|SPD=Pr_63T zg$+cUX3_C!+Goveys%VS^akmz7_(T2Rv#M|pN=b$^oc|-KFUP>wT}w2{@O7Ejm`T@VoRj@+KA6d2~*WeNu%+BHJX<36~7< zR=1l>F8VPBXh$W7Zh$`Is?PAXA3sAQ#yWwi07#+jo&p|`7wWV1r)nG_;!%4h#afer z=Ce;XpR9k3UKK=x-!U_!F!I2X0BZkqz^LmvxVqVqM7G6pJ=Kb9hR{f~#8+MNytPfH z(brbG8y%oD7s5B)fiu0Ed3zIh(Wi7t7c(dR;s$6BsUU4O$LnWuakg6gNqg*r$J89) zg$TcZ!YU1y4PdM*F4W|``oLX;ry3#!DEw4PNO;2|y|F_C_ejQeLO^NB>pU(mEvpa? z)B~sDv$CWtf;_}K&?41FZSJ2^10z-F%oM+&2?XEx20Mi(O`Y|MP)`n!-!urQSkM&$ z7DS%S*nLgxLoAmA8xsxdYwfx88t5=aJEg~p%lI=I8`6FZbj}5tE6ejm!60uta8KwfQBVQ>ZI7h+Ads#bJiRP-z%f60@~N#T z@`N4&Nd|pG=$7u1-mo?Ao*}WP`_J?l8<@TMv$>!zksniS@Ed(^b1zDLzf^XkrFJA{R>}W~^Q&2(+2|FJJbF%v>j2F# zk5(!g~fKhvICnlJa6Sm##)y(Ye|q=VBoiwHTa%8yMn1u)7{aV_-|yjxV- zYRXw2UwBKb5Grq~rUcTKy+DvP9wdZ_r4AJ(onCvT(eHO@oYcgDt@L33Y%_azGB@(xO5PpNbr)q&ewlx(IsQS(f6+eFx^}41$idh(Up%h8hwJ$L zY{=->F)qB-V|8qMMgt}T zKOTUVifb$|*in5?QF${t-DarHCl6Bx-K~f-56()Bc5Q#{L>Qhd0hef=M;pUv6yR=5 z{jkD$Ah1dMZ`pe1ils|?=x(RDT6lMyw?)wjSx4Bx9!MPx!8l4yC`~( z)}@Eezgg@*<+EKhcP9NT8R;@4c{NKs7U`%2ZTUzXg^(=&b?LP0mF;G;kSr}{RtPu* z7?*sI)?l*e?3mL&)=F ze-lrG*f-OMp4PHL5$svw9V?Jr@f>y-o8;are5PfqYtnrAwt4fRp|U{StqZXie3RyQ ziu(9=QEbDr-ZS2GwnrqoC!*Bo4#-S}lMz%D(PKiLLcwHj833Nj@QAfI5+Q3lZB@cO zoH$x#TKvU_LnI@48KopY+^&5Sn|$+!=i|HV*7 ztnb3DP$4db(RQ@}zCK9*v$j`fFUK>sA+Axjz7#Piy}INoF%UPX#CGh%q##4ywO&l4 zHLALix5(ma=%@@+dOj)hJTI5#txQnnnCD|y&0#eUF6Fy!zoJ5DlG+Jm4M`0nD39rW zJycw27W!$5awgN2$*`AwJ*?JMlU>3pEJ-#PrJ~T<9gCD~i~GCsqLD&d=3b*rAfZ_; z_3~t|HmJAn;&}05yN`AhYf(h!@RE727}TEt(EDbV_gD5J!#yV}mXsCn*`06%H&mNhBqN>5qpvIyWv zt_BEm{d&v_8(!TEv72?kEpfb+DR0Y21!129GuUAHwf1>I+LzX^n)T(;&@)QmJ!9bN zskG$M2O&62w7t3Hn?C;%9~jhU_z`G#d`G;sZ*wo2^&g9 zM&5Klv5rg9L*i0k4v>=;jlZ9Pf;aHd6twu*KgBzvSoHaWiD9%LTFH*NL_lFRfJM_R z%VUHjz59U$CssblwW{e`9&3$r8p&%C7fXlbt0EdOu1zj5gP>~M>uJyVl;+ObliK9T zj)4Naea>*s0}C&ldUkTi)op&16(AWck(-L<>9zL&fo?5Qaf?&ZF&brrP>JN7BD@^Y zv!MRXr`z{QXkz2RRTd)}Ywpo(V4;WxZGBqcln_LjYA#rSSy*8I7%-kjLiyCMDpX@ayij*cx*EEgUQQppG_xEhyqO*a z4cYRLn_|qHT1v?y><3#btY;|;J=!=0i41jgR+kd1ANQD^Oqp^`!hg_?-k+43OyA5q ztzDE70hi=wi{G|&Ys`z$OYU-Fpp}9a;p{&Hiip{)aEFBiE%J4kg17w0&vI zB5y1e8)_QvP8l_P6W;>Cq!Yvil(Ke8#^=@$j8y3(Lz)&A zc$XXdb{Q-e28{*03qsZ`#VAX0;b9*X5c_Fb1KlWY`j{QHsGa>}W3HYlikxox*nYc! zOd9gSvaHtTUBpAROLHZ#_`0h1!7Pe8RW+ol^)9X{YA!~MN@0-aPtFFi-=V56IUxVI zbiC}F+b4PS6S@UPK?F+3)cSHSRkh@BD4XQ;42>6!mB$!b3onb->7InR$)JX{9Zp$f z@krHuE6V;YotC<0g6^`DnvN$gicq$AsOcL?DT%e!4W%ny9OY$Z)EL&{v|6deIM1+_ z!-@Rqn?Bzr_K43}2cQ=vYtW-uZ{`sBRt1we-ZbV^y_yB~jnw9n+5TsSki*qh@bvP-4X&#ROo{JY4_`{j7ifuEQ zQ9Uh5%<;J4Hx5u4pENry>ki}M`L_VWT&x&Xb0|VkTt4J&WC=-;vfUV;zoJ_T-?V^Q zi#G8~T3!?PJQ#i^tZn9`{G@x|i0##Z_#Mbt>*r>qYlV*$H|lL&ab+J3&&kzthlsmk z??kIENWG?ErYL;zO|Y@`!bN#}7O=8nPTur6A`_|ZJbGF1eWJ%#`E%OT*~;^+V*o>{ zGbW>mt-&&=#vVa{;Rh6>hwNE`+1Hs6(~#NvHkm42!&Kn- z3U0_Y?_>I?@=Md$V}=OIlC(YyS|nnU!!6EopuWtu7L=xySgNuI%boD1&hT#Iuk!9G zC6;!cx-C^4&3Q!k5De5S0W{`|yQQ+bu4WCZKC$qI{_EFWYIwaZ+Xw)Hr~3WU4+ljU zZqX&S;lK9B{Z=bTU;q4O0qiTDn1NDkp*BB>P$4T|=7p=~miDyCn#)(;Ggy}cP%|`= zEqXaw?Y$Dcl|!irvP|@gSM=bmoUa2D%TP$jcf;qVd$P~VBH6;J#^}H{Ima9Xw1REH zP{r9b!<;FCbPjsK=TV_nu%cQyJoxy9`2L)8FXl%YPi{v)oXKiWt!g856Gy`%2`$5F zX;DgKyRdS+41XN{&p)36`}p%ID|8Nzsl1z0>1gk?6x}Hi8rKO6A!)|p32!BPojGRW zS>-wE8yJTKQ-FyIMzI-E(?dB05%dNNh!kP=OtKveGe=dAe+bEB8fD5nl|S~ z5!nsr$oYYl8DGE1e1J3C*AEc3OWYiP`eDWo#=^HI?09$f@g%^7_r)Sh=47Gn>*3MM zHy|Z|(CsV5(CZ&R`iM1Wdl$&x6V_;6@PvT?6T>>2PbyePIMpL-zzzp|^TE!yR85UL zvTV4k{n9Kp>H3@CPIiYLJ2Q6;PB4|JynVV;`wX{kAd7e6GwI_53a(~rIv5k3lpf09 z+x2NI^umByh1rG2HJY}P>MkeAIbb3C8+eM6YP#-uHC3UnUKrDx15cf9=S0>P^m`#@ zg#8r?SMli$*lL~=t9_ok}=XaySsUHucW@s_? z%4eu*w;CS^E229tb~c*dX)bBFbYna-uiLD!2YQz~o)>b(9;zj!7g{t;cmGA1Xzn`+ z#>IKq2R2pAfO97{v~+hdNK1>@gzyUd>nBSpzI=chNwU->R;*YUnS7!raMmgFEIRdQ z#8aS>&)|{P^)uuH445zYiGt(SEf(&YRpDHCPH|&NlwLtzD%G5UGZpMnmXvnzmEu{g z<3kTXkS}k+qquf}whsX&F`_E+sFLxv#Qk!uCk+whO&6&#H(hpF?_P#n`CRj8kj1?J ze0Wp`8m{vh4Ln876a+_(w9KKOB1E$Tl2b7rK%uy+Yh}w`1fb0N@g3XS2&A_0g`2rJ zz!7H&kqnQRAh3tWRY+G7uBEKGA0VFoynu2z=FHtz&%mq#K4Z{y6V_K|mf3n(DEF9I z?O?w1J%=rlJEhEp?k!iR)xMmc=9(4g3K1L7rlm`F1;=)G=kOq@^Z1eUr*&xG5ElGEbbSH@NEU ze+}6X0y2I;njJd#hE9a(C>I^Na&A7BlZ~t)qh`%um7hWUCiSZFgD>d3ZH-lpUH8VV zM^^>J@f1KjF@@}gab7L{iTHgk47PIiVtM}rK$I@mo+f698xHK6ubYwsDA!EayDy_wP@E>Vwo z>*c`~whrf)dO5(>8q0k1y~HLuPEI+@%6bc#-W#(TLS1izWkx|g+eQ<437tcL!CZG< zTv*fXYIYyYnCK}Z09M2j=?PR(mBGZLqcz;caJCS$c#KkQTdg)X5AX%nGRAz2T#~rM z;yJjQt^jX%kns!hZS0|qORhuPQM*aX{fvlzPJW*61)Hw|t@|K2%5P00>4u+$6}7+S z$?HlWZ=Hg;MLudZl=`=&?1jtmY)M$Da{d+5ar4Sr!f6tmMF=&aIB{a0eYLigV<=nr zq>tqB6-buqAn&l=t9ggJsrROD!&NXa#_eFZ&#$r@BFk6uBzOY$4Psbt@0vTxo}6+)Wm(SB*X369a*NHX-K(Xn>f1f%xVTQ0;@QsN6hyg*4e)hzDW?d+@k>$;f)D*y zlE12?qjeLxCRnYPlxc#pV(u6NmPahrY$_b-cDx_BXw?(BC`Fu!b}&&~Fo{Wm9@Ruu zV#1xwTH}niTDFXpaLmH!)U|0oC@WRhBzt=% zaXG6=wo`7kxD?LsdYM9aoEkXzM(-?lHPpJ89$h86ctYVIxd<78BuvEjS$aB$4uzI7 z!MSv~u~LsGNFvjC&EYFUX!PB&?urUlMMkTp*(b7yoK#A|UUBq(M`4-}DX#+|yubIp zhkv0I0lQs}Rp&>sdsG9KqaI6RSl7cGT1eqx20tSj4V>>6DsRp7&bsBW_P${ZgJU`o zw?k~4;%2f`caoEPdal-Q)ek9LOE!<%tIJW6AL2$KncR|Lmu2un(zr?(YPxF%Za;Mi zwr7M{*F+%uDm61ta-VeuEX0EArc?0wjp)OCJz(Lns?C;3aGBobjYMgPwv1;HK+ORj zKjAS!x;D!czljeGL{32yHeMBJzGVvQok|nihL7wU!Nc&PR6;6ifLh1y^sg~tciUa7ct z>*KYZjXi2fpCCuy_-N0IYCqY0^3fhUt8VN)-P(8(sQ{26vO(MtX92d{ZFR>2w->Z5!VwRAaXtDZcQs ztuEmp?J&IcUCEb%gp|X?l$3obJ&~HNwtD9E2gA{rc>LhS;dfphu}j$5=jXGF%U7?z zxcbqE8`Ts^WGlCg_*AdZBuQr}#|b;U@pzX)aICE2uu{j2z|ph>*>~>E_c6}ouK{K) zGZCfi06L50H%pHNNl0v|kt_?Ysi@ZZXL;M9+jX3Ze7rug>nV9Ue@ycE>Q{LG^62G# z?`uJTNq)l!M!8Voh)N%A>ytD`<}w!6k-pMZV=aN$iOFIjuY62+be%>1UU!i^emH0am$Bw9C?crdZ{kDwJvZh4hPZFHC$Bj?zx$Aj8~I77jOUde7in%N+w3fgBR-^5nfk{i3$XvIUH9;;?I0g_|mEt6qPdtvV4m zK$EaQl#elQSUn~ZyT3T0!?Yy$XOg( zUK+GZ!cl5nhE#y_{Axbc>cR(YIWJ=0)2-<|NdX)_@6Hc|x?zbz8F@Ugr_>OJWjO!N z_H)5eS5j!o04O0ud<&DDcXe4zmR7`bFM4Xo&TD=b+3i$+#oVBu$K32lb$y#_D?83m zU4uMe16M!0Pl<#8u0Q9ixd~8NKqJw1rh13sNd=6V1T<7NogfC8%;y( z%tw=e+2}Hr##!L`rqplvQy26IF;$CrvchyJ*P$0M{hUAEX<5J{EM}YX5OS+OF5_T`1FFfc+ zlHEo?YOf=L4t9RSqL}E+y~|#FfjzwrFZN7<9YjO8J?3r7N8jZ4c5|z!iZ?!H-*8FL ziaMs!W7*mIbbE7mqsaI$(1n7JI17d_gmW}}Mg3#&No6sl z{DLhPx8JL^9aa6aFcR}=t~(j$9N4Z!WUTfc^SQX6jeBnlK2%+ATX>){Sm>=8{)^(b_hxrqP>j1g#r{u zSgB%ZElelI1G4QFOZ$ho$0u7Jm9~rH$Y!(IXt4uptHT~kbVFQ0q^;nP=7{~qpuzSD z5^3{44g`VdMX%rLHCpt~XwvhE!&f@ZY9B?TPA|^ocq@xX?|)Eu(8v(t7#0YoDoH=f z8`iXeQ>1ZR>UjH#{jY(z>S|e7MxLm~z9>>XP-{9JSKt-BQm^1tI;|_4f5>d`PDb$b zR21N=Q^i_(r?g>P%9VP|Q#TO>6Np{CzgDvOk{yY83G7!EBI(y}3R3MebKLW7oJMM! zI<<6_uwqD$0tOjP>k%{t3D;!D<;WyEx7c>kT$;i|3nQ<^hI4Trd%RJda5&rH;>PL< z<`>TlPcX%1yu?5rmp31hQuZ8Lg;|K2H&(rCn9pBwsT@CLh(9mTbXYJN^63tup|nmP815mRM0wrp2b7I5~~ zqpV4h9hDsAjaMJ{$h0b1rSdP@xvK6k#a{@|^|cFe(h6VvC~cF)E-yjNVmqwjr!YO$ za}_MF{Q7(}S3n0xKwC zoxJ3i7Y1z*B5*`EDs5Ax(E`2g9Kq_L9(3liM|+`9sWded|7UEd&;6)PQ9Jr;PS9D; zc`rySdv$4h=y9z^6ni8yc_?^x-KCN>6g9DDd}M^iVF|VWt_fms1lq?>ep_)d<#oa; z(bPiDGv`Dr!0B47H!qX)jR(YFsyTb$#`9Y|&=;1a~P%$xWi+z|V?PJ#*4?eXZ(HZgNf$_oa3J z1pfqeag%$RcRVV@$5X`NSv!)vc-1eZAQJOOZp^Bk0B#mZC?McG$|iCjS2em&A?}WlgbeyJJ8)b-EPtx?Ia@ZR>2k^Yn1tB#PfGkK9ZfeT&md3BqRT)oXD{sX z6e{^MfTO(Ds8>ycje$A9^OIIMtr33l<}6Y)w)%O{ByZ5*{J^Wb`j;9M|IoYo11$MM z0x`!g^tDv^LwcGv`3RlJmnk*D)MAfR zFG5W*)7~QkjiRbCxw^cOt4xaVn63qBw);J_Fg-fd+xB(TmaNdFzCED7E^QlDTKp-R zlKt)a{Q-aT58K(Pmjms0yMrFwCP_N-e9_Xdl-Zk8$z)1j2rJykYVCoZjqg2@*h*H8 z)U}2RlDm0sq~gnT!uuqkqD1P$GMfrLK++?S5?BzsM;@ED%Qd?USeeP z{#z9nn|W2lEAwiE+MhXM$bEAg-1QdnzA zx8O>7y&t>4SgYZH;&$m$(qIkQ*-TrS=~dlw9MWp$@e5|yeSOxI%1@eVHy?MSF4RXm zA6MK^WDv;7sf5Ve_1`);IvoM&IQ(-m(u#g;s5J>J^`#GFFY|&;yGdvp6Jj1fK&7Ty znRy+bnhP>)u~)sFH)4a^6Z5wDGymmM?1MtXQ!wrzi_BQIqJ^HZ#IeR`d%%T%BJSp~ z*|bi-oRpRF%P47l4`6rAWr^h?2Q$84i^s^nWDn!&#%LR;)KwZO8E%Fl?jsJU#;O&b z+s`=162`Zgf5H7(n1#!lJ1%IgN*2MyE7zl@w4$r*B-{cB8yzAb&6gmMg7ad(|{&(yBf7=bNrZ*5SsmXc_-e$+$&1b=7Ze$%CZx(Qm`zlbd3d zf+=(J%>qB2)i>a_?lkTu)K7pK#O8J^e$$04_Ly>;*EK(7Kxs?k^yD4lpNHE|pFR1A zu@>Z#cd-DF0pzE>aYuT?>^!@=4oK{=nF~(OHtV935n*4SedBxmcAsruy_p}Lj0vm) z3$NO!t*Ot`Wb@==`GNIq;xB6IVR0&MWQ}Fy)P5`|<7N#JB)_EEbGuZg{6fbRO^8)Z zk(gZyrA}(g6mBh_5G;dI&d*Oyi&FoaJc%r%KARVvX2FR?K+7_@E(?6v0kSW;UoHqog(Oi=DA)X|RPil(RgZ^srEfdXl&j(| zDu99CxAJo9GmQ5PbLSN%N#r`ua?XojRDD?F-Yj0>9SKd@wCnUt8W$@kxLeqAo^WjU z65hf>9Q=sg&@G!8C7Z?KBH7N#)N~dQVSJGuq3^b({HuC4FAK(@LyAN=3L1;#) zX*ikQ-sRD>e)ybob=;S+CexuOIZJlZZtsnTGXHwGS{ZDZ2p2i{)uam-)S_P_A-Uio zo53VuzELYU4ed$F5VtCz(nuHOFPQ_mD;uR>hZi?dRv0;}8JkpCt2sKVFu&3YPD}Rp zEryy6NoHZG1v?!J8jePhvFnh9xM>^mMeK(MFH<}|A^Zk7;J>NZtz>zVUeeAf+e#aS4u#?=@n=%N+H zaEN=^>!aY{7pw2)ENm&0QDm8&J1Kf19R5{c?RgFL!)RDJLp;_;`;gYa_L&l_EL{~Qo;~ z^yM7rH=b>-izbNm?xw9^VH`oG?F=|hqmQM^ynF(c*A>1cwOF;5D7Ow{boJAfnxdrf z@krflM&`b?#6{a;wj?d62HELCs>#Q&u6SAD2Sxx7eL7N7Kug@-v}af9J|IiPX0E?I zQ&duxT8v?U)LIF}9FZ)Zr_JM&!#7T{Zq)Z9Fp(8mr5g|*m8W->chVFdZfA=Jk=j6RC=u+#*qg#UcbaV#*CoSs05Af)-2LAJW3iD#~N~QrAoJ^P@uo zTWUT`RP4CHP*q_*WCYpOk6q(E=7Z-bH89t1Z=!uLMMA(hWP8bi7pW-I$we9YyL;-E z3;d?dCA4U`&0_hK)-O8?QE+b?1m@U9yR3>uvr4|wv2wg-4DyFugya(`zvas^J^$@u zulpjZ13a0Mf3CJK>tqTsM`>YJ&%5YYM<+P`h%9Ylmjo;^>R~5ns*jDl{dwRsKfPm% zeeGYYiC||q2BYIxIPYuHJm1ZD()RgshGkMdmbX8@_1yuW^LxCx7*Byg##Wt_%R6N^ zuB$nCPF`HdM5PV}&NmWRLV}GEw`ZXz1*lE2qC@PObi*xycD0B4kV3Q%IH0r zzLsuMwj7dvR>Qs+Utl0V@_q%Ty-8P6pxWZt>lFs_WhlOKwFbMRSny=aON&yzf9>(s zH{iHT9-;-jJse^19)AOxwY+zjLA=xzvqnwCDK1Eyx@Chjo)Br8gVpdmX`z@LV=49o zF5ij;*EqHB|GZ1A9Wm|vnbQ(*Pt6aj^E0SW`25s#bL{5;U!MgKM=W9d{ zlS{T$#*wpL*jyXq1+L=y`3?qJUo^vcaEj?4=yECN*aU&3bTAoPbkJZC;DywG#Ca~VRmaglivm;3ynq)6b30z=KFPKNkD}*7z)QXPM8&#Z*yuK(b_Z*5 zH`c3nrtnmP6OQP~EJu>$_HzD~$%=0ma0n%U+=m6Ez|h%Av;N>{c#wDQU~dwas|q19 zMAUp*X5EErTI080S#t@{ytmxoDcsb30t5W&b*A$0%`RwYDf1L3w;Vjb#UQb7uKh|~ z=7Owm(Fhxo2ZmnV5o~R8Y^985$5PemJV+LsM58QIvDHlK>J!GG?nkRFP|61g1{$Yr zCs>s7w(yV@W>I2ApX^PE`~&~H5@h-Y27XELEN)+!=t^zhD@vbu{;pOs#OfTSGfqrI zVSj%%X^tf7+e0c#NoHHaEPVNPV*}4)t(%XOFf_|0waM9wEBe2~Y+Ef3!yVUfN4_e6 zOjr}kKTXfSh8eu7Elutjw}xrCdkb@<3g^@S$!1(6yjfyr1V*Rhbu|XEWPLV!HaKBs zSp+)DEon)uLCNSF*n6u?(k_ErzD?}id~Q=MMn$`+Hd8{W!V9Dnf<1$GKU%qN){RKZGkqg$6 z9l2=I% zmDFCSh=C1ARGV~^0Fj?NxuE%9FX3bh7oDq7D@AVaz;>;|Zju*C>|b~_JcHE1r>6(( ztMf*AnHekV=A5DAJj{XPam>bArYDS#n$H65D8IhDy~^(GG2Prwi>ZnB$|f0G938u% z6iKXz!znQN9K(IS5i6)8Bfgw`aCxasEgAU|o^W(8qo@obPw(iczHxs3fU-W3hlW`E zm~>NkW=gdAmtk-Q6TIcS=V-fH7{+AqpPOnaOM*znddAQ)vhp~vccefvSQKYt20v!& z;w(tgC@sm5NcdsYrBeg)@E}ICBJ%UTo1(dn#U4U?70kH^@0?>i-~_Rr>1N~vqdAa; zwqP@ACe0%h>tSBNV{jcDBRrb{uDX=WUOZgi&F|z;8+#*TXkXKV;NriQeTp~Ze=CAj z#Od`T!^wBhyxAm~K$)1`_Z?et`QnVJ#7VFzT9Ss~SnguxbP8Z$YduV>kbqJMX)|2} zIpU$OvHKZLCl|SB+fl&~(_^ycSRBW+zxQQ|HPTiXxsvQir9elAFZEOEr>5)!HV67l zElG=Ly8?=f0t$gwC9E9!h8ZnYi_qgos#{H?H_&)u`Zyx`xe0X%ozA21e0J6)U5siU zW0=^v7Vo_63}A{d(*~$jgnu@B$$rg(>DelTINZ%$VH}H$2b40y&BURbUk(@j@UlY* z16K}(ahbFO1QTbiZ}nVkfpZa=oZ9JK4>X-*~zDfER`&;z>4klg;lYd>( z4ORZpwsvQ(@hL>wKF<$7QqIA=$*e9)pu7{5PJ+bR?W+v#fFvJuV$m8DUo zO0D3%75AnbpcB9$S>m^$xf$J9DQYl`5R3KLsc6 z!p|{Zm^E|!eRbtZETU^9yE!+28but-wdmMZjc;y~ncCXb{1(Lvw1zfLPVOrVm-n)j zX;suzK-4!+E<6<#v8>^NY}^xodraUfN(#s1=*G^gT!Hy;m?7U!%0Fc3%E_lM>*D9s zB$|iXGFzQ{emm>^Gur_6+coQZCl4H}IJ~7w6tZ7}{+V68gR(AF7`ejEt{kM*QiUC>l@Q(W&**i>Y+<&EjzHv7=?z8rIjaM1rpL3|_kX`7J~yo$GEJk>2Xtl| zUg6P2)Hu`%jhME1Qm?k~nCW)3$E)&I^%!2T|4UtnScIahgUvh4h^D0JMX<<6(|so80s+y=8I;^Nso_YPAi%~95l&(#cRCp(6nLW>f)e|96*+o#JV-uFA z@G!lQSOasE+cueb43JX7J>>+YVW12R0%BFoO9DaoN^ON8Bm7`S1^ zmxpRP#@}oLk8P~&SaqfOf-^U%X$rnM zjbhKizYuY{k(=*iFAP9F?R1V3e=|oo9+p zERb6|X169Nq7C6_J;n|`Kny|m0;YgwQO(EG0c7xdn$92GVi~PY{c7HZ@{VnEV@8P<_J?3JH_6Scd zaiVb4`brWtWPZ#!!ll%dVD@tQI)WxWVi#0_H?L3w(1RetRM0b?&+?u2)_j@a)wT}sWu!7lT)k>;&Hal#-?i9 zOeTR_Dd0Bt*T|drM#=;hF=u6cWQ{{EmJq*D4w@~Fh>W`L^}~{t93F%BuF%H4wZP3{ zc4$ZYEf_X+(#829N0@2N(mIEIJ+!R>{;3kvBOZ2Dp^-%t2x8M|tg-4MSxq~maRo|* zt=#&@L9_arYSW@PXM;rBMO|F6j1LbN-Abiy$EkkvXlHD8f_G&-(Ib_3lI^REhzijY z??-nR;@8;aJeoZDLW*_7aa@oQT%{F|*@%+&BeCz%GSx@IcIsr3w2wDO^+5uZ9e%1` z*P2v3z+j4%C=&rj1T&3&Zkcpv&!juq%a(nhXBxPih0ZWHh4+0c=yED+6wS<^@CD05NI71-}7OC;D{YE-P0HPrvgV1>2hrn$THbPf2Wuf(3M zRpf9ud!$r{PsvnOEa-tZNEE2H|{GmtAV z%9E%0mAMj98&}_ko>5EkM^BM2awx*7Lqsr)ak{50g3~-t(2_-o+=P{a&zE}Ae#f4P zz>_ZmW`;q*!qvI7g{JIlI%3cMol-dY-A$@(Z<%@t+!$ceeBI^AnO9x}pPaNjC5)*B zRj#fl)}lcgYfeq*V$yIprqYx-7zOxu-GS|lwy%A8|wR2*|>F=8w15~fa@K?<{zxH1YS){bSENisb(LI142gNWggcV3EX zfU!yl)P}_s9L~^3h|lPHd8p6(yd$%+!V$tqdv>x^OlBL20_5#h#l4HeN>7`+Pm)W@ zTh2Jy?h$;J(R;{Ka1s;o7@FA;44L}gxzYSsixDfB-$bLzAK6vMZXMbu;OT-WVr+9Jwy;{pfA%y*O6h*GkRrP4HfrzUu= zaa>@23s+t2_=OElCx5#EE+sz8ws^*5k*?0?O5{OrC+%O(@{#K~s69M=0CH!#|8~9< zU%|i?5TxpzRwF4nQFZjmWEopIJ7DE1{C5 zpoG5E@LRiLzI$2>oNu`|%`G?P%56brBvXf-!9WLvYtx)2mIvc?jGNHY^jtW5TGwRS z4iU5}K}bklYaWI)GNY4O?T!iW!nG!!@bFYJqr31PxtHX3=kMf3V~PlHlhQwl!TxGQ z7KA}bcX`VT-|EJ@Vwy>L`!sU}rW`*TSx+ZX*T*2(!YZQ~J#sXExUytu&4Ua}a*wdh zq+n?VBJ(6A0XSJcxRTlsxW;R`;5>u36FYRi>bL&=d)1b-V!^*Loj(F&Z!f3Xa{-mKplKNi3>4n-x=6(9Bed$xP4+hOTi+ z%bVrW=gvi^Kt$wrz(YN69S|Rx(+GFM6Vz(7a3#fwT9R)Ig0RtE_oR?iVoi({jM;2T z&#&O)2pg{RamglEBTc_@MuF2>?-R^^6vnNuS;YL};^IuCp#f-&Qe9mESime|IM3yS z)8+l)=UCtO}Jx3-h{pP^-9O+Hl9c4vU zYoC%9KnQqwrY6ul`PG_2_`n$4QlZZ`v#G;#WNB(bv7ad>ETA*4Rv&2QjYOL1Kez~xvH|M}i zSz`7JO+*1{ip)%;m_2vV%FzXXNNi#^Uj&vuWr}%Nd{Ra>so(>UN5>i3_oE@aQSnjz zV#K#4@`RnEZ1I)>5v%PmHfksgsN%b6ZLWn{7SU#;WBq~N71M9{zLwEze$Hp+y0UPa zK3E&)=k}VW1qI?R-=uu2Xtl}>xkh1leVFFmgx{s{z$GxZ=r$AK6aqx3O=kD-{4p-; zcSBXNHhAi8g|cE&;hX?v`b{Ibl=cV(L2TR1J|Q22gfQJIQhW{Xqwv9OpKE?W;||ZKENOMk!yY3XjshH8^p+t{8opU2yu8~Wf$QU@>lU(aEuNL2~bSFQqB}BF_Ki^4j&8KFdu`_ z%40rri+%!(1^zQrRGx$H5V4e}XZfpHA(pb8UT7#TvRc;V@S^%v4+gXGf~JRW`#FYUXLYAdlpf~mSzcls4sUO^m}pU^wZi;c%S z#dn9JLyAw<&JSk0+&%tHH6n;Qx6V%wXfKp1g|+drEsu2uG#4JvC-XugCr@YQg|#~t z*a=+r@RZ~P7pM;O=eO*tD+z}pg{r+aa(8E;o4`(V!|)B$cklUHL?OJ_lqN%CB6+UNScSy-h>>OM7~a(ytZZr9+B2w9iCrk8piiD z9bo`cn)`3YS! zKUG#sCp_aRRnu9sBcd4-8b=VMSczzgdRSIp_!IrmO}Ac=++=*FSmm_{r0)Z*1@EK70P@H-GqB<>gTnxU>3( zbd)|E@0osC@{B!PbEx5p8RV0t%-t{@We1|-%Nouz8j$8eRF#e`2ohhw+B*HWL6kt! zF@Hr&J$(9j0aZ+M4l?-ayoA7s;pR z^eK~dl5b5VhXvhgVUk<#3gNQuX%4ri&~Z6&Lj%)Hu?6#zX84Y=CgKd-0lxE62~`p| zRZ1Pr^`=n9uDA;G?YJjn5^kOlH*YyuOtc?Z{@s0lX>VmXW@F+>e>iLp2kmKZ)Siw; z6Pj>$>8{irjk_z&NuxVzjK?eOQDeW`9*w8%aeLb8O@P`nm$}4OlJv@yQXkC@2V6tsy1m@}oi@9j2%<$^f z0KQ0dU>(J2^RFUQvyKYdlylVzj3!b7v`S<6Q?0NJrdMl?FK&PFQS^g5 zJ+DU+IZ-}|Na6PJWm+kpV`PlpjpVG^Vm?3*w@JpV_XO zhMbo$Ta>u>Bo^0%cJiOfV`n841ymK|H(<$UhWg$SQ7$x4+>)tz^^*mAo~URZX4OVz z({1hM6WldYn$EUl2VLhv)(|w@@}SaezMfAUt`6gaL8r?;!p)UNw@vGDUi8=ms?q1) zgKk@03UQtT99Or|V4uYXEzPx!MWfqo;ZbpfZ#ze8WuU#K)DFGZ?BG-Be%Na@yKFuM zImzZ!-DX6rFOVOtif4FHQZeVYUByxh>_j|#NP<6T;`A_!sRv_ay?n?ic={;P%tG7N zF^(~{c>tTC?XYjpD$X|>++t-LwVM#uM#?BCgew+Eo*(%EW#8(*X2yuM!U`30c{;f> zyK8GM|4xWk=vKlmX3;+@Id46^%DhL%daBK*LOoLCFeI^O?$F^G{=e2`Pas;VM z0f%V8=(C)k(f*#ce5?{f?YwY^`5t`|5}0s#QPo(QXY&b)s%Iu{-BDC?->#+XRn&IS z%(Hqa*yZHxd%2xJ=BWx1L+*-zC1bOSnY8fc_1&?~C2te3;*pdiV4EB%2b?pw61-dw zPiSPO{Qv<4!RD-=9#aZld!l|;Hg3fA;C^j4!32aO8&2}rV!VPkSI*H}DA~Cr4LG58 z*c}s=ey0A91T#FTTC>sVv$>3K=dp0I$S?3L=jIH7=A!9RfgDouS;Cl0BY*&O;uz#x zNW|>tNf|qo1dmUBpYQHrO0(U3n9N?nc=|@kadN?xDeov)i9Sp~_EfGf z;C2g&i$}FvVZ&@GmKqg>P}dpW`;`6~%bQqE8@MFvwCl+pAg z?FEjV>T(zS$U`??QSE!^Eltkm79a&Asbju+U}sLWKnq^tn@;_nXrgm+Jylt zgRGn>$w#&|Y4iuJW`oRRtJAmrO?qni-T@!59#b(=)o^x7c9N^j**&oCLd z0idr@Zf5(FpCn212A0ijTRPT7q|rsIJPxG=XGU385eu;ZX85d#03xOcDrMwo7Tz-6 znw;GR^OK8KkDM?tT%||091JM%evXK3ZNa}}v%u+*6TngR;^eKlC{DN;veTWHhiA|2 zQ5LEabp>TwSezxp6eF#JxFqJBR6iPw(m}ridmXt< zi-ho$Np!}lCS&H;hv)=th)7wpPN6d?|87>}`R=}Dg3(Q;mI%&V!oTQ4meG$bA)7Hb zc{r^zY_c}pq^ynq=I%VD#TMcIn|*J#SqYeMPu3U4-87HLud;S0`m$Y-&ht&M1nWMJ zwMq*C3)W6!)k;GKO^bO-6ssy3O3x0RnVG2xIpBkH^oz+B5bP;#oRYZBzZmTyhGbqY z9_v8SJ6tHe9nRT-6@?Am8QJ3dG`f7{X;Z*g??lV!n4iB*SxaeCPg#AltHqn8H5Cu2 zZYH+AsiG87TRF4fF4p6QqVZ=@=HcMn9*i#9pQ+EI`Lua?QQr~1+fp`tV|~jLDOmFa z_QLUM((@)$irD;ao=Ws@$v0r`L#iAF;$%Szc8kEplMZ>HQ7J;!sBfuwHM)XeRqp;S zro62oZOTLrSNlTfT1{`9sGj(oq^SPo9}pDo2><|var%k!~)}7G}LuY zZ*oZW!MVlb0!zhdT;FKtE@RKqO1YLr`$}~5sTUVsN~>M}&`?*Rec8Z*#6!{+9iV%< z9MxeY&=Vb@hsbK9WiuYL;^p0mN!v+Wvkr^cv1ZZwA723N#Y^ti*pq&Mue z`FlKQOoxr>%Knp6-;j76+ZRn%s&Ak?SUb5Y-g8%3yx!b@NVUp|zH5h0<_~Z%NgFOE z7EupG4YrpS*=Ep8LFZWF0~sG3WYr*S*ku-i*IJaXwY3<=;qW+o8RZ`$s_^z|J%crH z!1iISX?4`@-YlLbG$>F!NHy{8wP)C`hfg=YxwWyq`FP{W?!9!D7ABnN?+{kZS}jNX zT93KAioJ+xw9~VTS^Z-e94S`s+_hrk+MUZ2tv<|2uvs5?D3Ms#5M15W{n8$731n8g zqoo=joV~c~Os83#=eAhazPh#fY}_l4iSRl2DXG&HXu7aYh%RatC5-H zI<_Ys2k83JDe=~*n#mkBwB@X*Hnu+k)FRmH4H}&W3>!$e%bL?Jv4dWFfc~$;uI|Rx z4LbeSKwGxAAl6z<5o?1klwBL#%&sHdE-SXR!sdc~P6MXyvXe-URlv6IY&iHk{mt&6 zvBK4{AyapS(+pTuFoN30aL^xM72pOz+u(WdHWvzV2d#Hn-A>!=W#KyTSd-d&>l@p< zn-4bE*LFAFvwor8k^m=HvZfB=BGaP!FO#t~xg;^T$Rl8a{Os!e2eC3X4E=<|cA&h$vcyl+LFWLhJ1C7D?a?kH= zZErqjC~BW<{P26+wXJgdjo;DDHyXB+)^s%JHv7}&7-J|CIcznDjS<05r!k!lTa#h0 zwK5tEl#JYOkNP9_+rk4(_nQrpmF!#0qg`oE$Gz!*1ZA_k(i%6=kB&yo(SC!7t=FFH z_xtThYuxVaW8*udFejbvXr)m1(bsKVm1HR-e4;WZZ1^hOPbmVShp{wbLJ=ckQoq zhnx*R(8H^>o8#7W1#N7%(QNivJA>}9heIIS+klH6_lGO{qfTo~s&_O&;)>?B(-{y{ za!K8Ovp3uyO(3az?I~9}=9JSO;p7T8$ZT$m@lm4z{&0UdY4lj5EA4TQ&=rYpYs{`a zXlthf?c}*XX?D@^{*I#jwBKBki%~;P32(r%$J7B}#&@*orwRfjA&PxGsMT5AL5t@_;*X@DU4iL9|8xWfjvX23db50DdMNYEQAEXNeJ8_XFQk50GUSz(f} z#M_K5Ndpi8h5^g9!nQ>uvx(vH*(;qvk5MCf*M3KxeuJq%?!4J*4*L8Ezu3hxkU&`J zVUVzA3hNsyWFr1QzBn^N9i1BV(QfO;nuFd7wi2Vu|M!|u47|&AYET%NCc88>u$@@g zb`SA1+q7bR+54Mm!VqDcfkn({awfdnZw#7DGj2?j1y|4c8Ol~eL(*zPI;;RyI1eTp zG=+ehNz1VE%WdW+3!|y52s3b{!|!+c%tThN_KDRnq6F`;bL@aMp)5?hix*JFhU*+~ zQ8rBxY{PKauCoI!x5*;X-gzs1oB~N29w|Fc@$=YbPDGlAw~8L-Ui{#+voHpI)^F|N ztD=<*e%peK$f7V0%@bO#RI%zY^KG(v>$?>|VRvcLesQ{5tLd*bzA1ta1w81*Js=^d z@0MZg!Yu_j)Q6`UT&lFsYf4hmGWgc5XJ;O2%5#>^L`ealMLGz6mbgdT@h)9r@^Agt z|Ih#Tr7!*9ANUL3`*#|D@9Ovbm4CSRfB%`EzxzF+yNfBEnK?VtGePu>3B-}?L~9{=56`JTV? z;7dR8gs=a?^j!Y?f?99|I;rF|C^7y%m4WF z%fJ51|J?`w%r7kclmEs){hR;6ANuN_{Or~@UjOwk-v7m4fAZ5``t z@%umfZ~dpg{FA@(`Y-MOv5VjOD_{H0zxn;Y{_p=wfAf$0$fKYA!~f6l_x+`ZAAa*+ z`v>(u-28oi{EOfFw|?^1?tbTg`)~i&pZeDy{8NAVXD?>I_~pOx5C8nugWtIIJ%9ga ze&&Dp{V)IE&#wKW(d^Sd{~!MHuRi*XKfCns|Ma(klqNBMh~wKJ)`V62lo$x)V*E zTR$++M=0HUrd{&#LT8mh$#>j4lkaB;ByJVi?dp%GnUv8?@h4R@n{UOnDn@JkEbuDu zkdF-`WwIWLW4CunEmNtZo%I#Ep3i+U<00_7V7`QVJQ8-_26yrj>{jR?P9~3T$#p@f zr&;a4=Bohf$V3F3z$|Ow#PEPHTi_HkU!;0>w;tm~UC!-$uT~l_v51-hZY!H#gZ<4} zW(de0!ky9E7%Vw~&ku@*`It!yB}mpReRGdOvm{5!Va#@(-GF#ND+~y}KRA(zI>gfD zn|Ea`eP6XoJL^=Mad-seMPdpjed^%fe{Pirf28yu4Yrl~b&DgmZu44#1Erbv5JCE_9HCbZEg_AH5=E(0rG-=gDb@!23#O z&#+sgLZagbmw)$2ZW3T7gT_?97Z)za68$oBuKH_OU75EnwI{+iB7>e*DZbn1Why=y z%mZ+ff#f7~Gwuo6(+Wcls^VS5gJVxpxIiTv zq(W3RX4jWTig(_o?_~6?d2k9BLLh+q#tUT&i-2n`{y%l#f>=rQgDiY6@6{u>1Cf9{ z)>NB6qEgly@$!dd3riWpa5kO}Sg|`|#8n{T?*X#+?PQ%?Jk`q`372~p3aqvycJco$ z{w#Gl@vu%;dTa_@qrr!n=aWV;eIgFHoaivWbp^YF7!7|UPA|~IbTTFq)$4kxtyaiU zK3_gSi;qo~{7QK#E|jss3)E;U&5{HfXFtEOmDxgt+{}mnbM)RQ_veOx)+`HZ8?>sryPK z23WxemE)UUW`%oM5^W{!AonqPGtw!Mmx|mgh7XU17FoK3(p}k^fCNtaTmH80(c)bI zgm^(5?}Dz&|Nj^4)S_lysfs_vVUf__{>9-0;a&)`HNosmE>?Z?gGXhu;dC%NKU!>1 zDsB8?XTkK@>g>7YhT^i+o$_HkyMw^34;!Q@tbaZNb$X+JN6GQkhQM|(Z!a|w#t)h* zk>ex!pUFMC_|k<23u>fTGwJAe$NdCfK{dOFr78`YTwMo^ zK6z+ROI>Jb5T%abwiX?BWxbIM-DU0I)pH`uHhqolBBYwe!2!Edkg@iH@+mE$fd zLuKniXO<{pmbCuKjZ08D^g|M3%$Dvkx5-(E1`=qQ_g2G=lzRw(AMG-&#g^e}(JC#~Kj(@>Qs+OPLseBpu-t&x8oYieih2Ia>8Zsb72P{S?PqF3~W67wxqE z;+OO)ECdsCzpmFpYSY*KPYCPD(n)H^_byANil1;^i3z&50Fqeyx7}~X&^xv#y! zmn|{gOW0@-LoFZ8EEl&vQcIGkrZ6bWBXjFh;m^P>2$z@Js`6@Uf9at;sL?(-JsoH& zOMu7ur=}ja3@u2DXi9ieSU_LQw5c-TX3J`{U0#4#k_|eRzVYI@7Xv47N|Z=FU`Sc{ zX5yKMAY5~1+nA#m`=UoAN06Uke0Mo%mWmtVJ1Qy^m^VYSm@=^(B($MrPqax+p`*=u z$2!f{^u;{DA2qL1RO7n%+*SpzXl#rb+$pII-57zXV!8bU{TIR4MvIoRcC2D z_u}RkFh}S2Jlzdo_dK0w^^UZM{IU4Njg*-(rA~qV>Dee?>zJY(k}doLm<;{x?D|DV zdrgt(iu2f`v1RcUu{B02R!@7rxY;t2?u3P@y| zM1DXnnyng~mV2bak(H9yF=Bv=mId>cZQHqXp9m8P3OE5C#=?UOr+vpbn^u&A`;{;L z?SK+xJeq>9u8+BEa*y~+LU^F05P)z=gbqX?XDKSyDtdv-#bZ?eVywBg@_x0Qt+S-N zNjDd!)kZ8IF|BPo|H6lWdbj^HcsBFuZ?rhE)^%+rs`!Y30PG;sIQqsGX-@pF^1#|c z7=c$wxo=m|v?R8?G+>bXE}6&uF5ZVcd92QUZ`RHI#(gFx@B#tFp_*JH(~$6HMk|(- zD5J$@{f-N2QhJ$#E@{XDS!bLOS|oruD>1P7`G zBlRCx&h}GYO_A$KojFs~l6y9M$t1ugnk1re!qPcP(TOWd>tF?dE<+&Rm=W24n|XEW ztDfa*f{!Z{jOYYHVG*70Z?wlIxcjR^=($>vpMp0_Dbs}c-BOG4zf3vH>}Uo z5)xfH;C+W@PhlpiD}el>ICT{yC7q!+JQIhtv~Ez4vwhjoNlaJQKwY}T0jQa467iOj zlsOQA<3zQw9X5M{V_WsFZXoR=Q$CPFAHvdbBb1?q+2Ag(%JOZ5IdV(JEE)I`W3ES! z3w#IxVwRB~#(hT-mT;EI|3Hi^!pA~r;Ca2fmm18g@neVsbMVk~>gi_x@7YaI!=@D= z;8!^AR8#suaBcqA{yVIK%9+fSENSU|+QM7=Fu1*!%{)*Jbp@?SA7&}DGgX`FOCvP24 zOi&ElP1UF4th^6RYVqqqY6Wk+Z@0zPTY^=>h~m@YLJyXA1C>O3wcg`LJen6bOzl3U z)-|Kj4n5C6f}f>2ROJOt4UDw3Gu`{U)kTide-m@e1p56yJIC+FDu(hN^)dDNKR}}O zbG-cE)ikjBS(PF0nk+3ZGGfkQGlTgJx^gRC{nHAJEuAvwh5XdGUGa5BBhH#XE%h#} z_iB=5zddR3RV_G<3D<1Q$+1sAkq97YQu38O$?9S4AnI(grfjr0?NP8NL+ZTTVuq?J zU2y9@P?gf1~TlK-CNu04j(l8l+wnW^eit$Wb#K z$oT_QZ)6XSaMhckzrv)D^kg>3o z$MGDT@Tym12JX^!C##KzQyfY%POeOHwJcJD{@|^AFcX$mIaGMN0`Dn zi@X|@1@K-ck!ym!U{@>zsDg+#A?28YC(W-@8Uz_MxAXWi^R!s3vcHV9levNQO!4jG%p zkSTzyj>bh{nt>Fc#4ciOczTUGtRTLv`ZF*sx>|u3qA_Llq}xI#ogljps#W9ZEZeQ& z%wx4APj7cRw4W+xW>FuV$4_`bc)RtxboXo;g0n&N0^iQmd!pYePPn;F`o-SOxA51? z3z6&|S}sUH=C|L3i55#U?~FK>hcg$>9q8~NHzu5v=JxE%ll8CuR$PRP<^2Ix|BDo} z%q|x};&gb5noMCE@Vsc4OjKUuGot(0Wyi@&lT;pc3$t-$mcbXur;*Pu{ltjKvD|*V zZzTU4%vt?UFeedMoaK#8T*D!mA3(YPW7uJ7fG#db6kGAH*NgLO6|+XMfgQ`_UKDEG3 znmy=p`AiGAKEnNS-%q81yU==v z%|ar~5K+dL(a$MY)_ZX=%8CV)De|SRRUs91ga=d_f|^Jz@q}EjH#hmgjIl*nNV?(- zx=#uObYH{NEv#3`>ilu*nm{A$#8raVx=-wOdx~N0S+ihDZ|x>YbQ0q&kxPG#9^zSA zaQs5oY%(-z10tiX6ztqul=GmORMFua%az~?)3p+ ziyeTKTY2Psk8;|9`#~!0AWG%|>`&BOXrHZ6|EJ8|*FOE1EevGR4@UX)g6k#}Bs$e0 z*VST}0Dyv_(_5ogGYq87qIx^1^CyKc`1VfcinVL4Z7zWtkt$nkJ@ipvDBjq_mia-< z+)Ga4;R?VmG3RjZ=BoZ^uW!k)0#+5w^mr--ly0aYGk$@?uvoE?sTCzKjx${ve z?in$Fzc4Ccupu+#{(sORxGv;%_Y$*(WNzmY(fIgM9CzC!K22>eN@zju<493e*&%(E zVR39KvCV@LV;N-OP%eU~KfiO#W-((+CH6SX=&r7(?>ea|sW*TC_eQ@%`fPWw`c#O`sFZQT`7%I&l~Kg6R0^dS2_tKe9>zt z_34{UCS#LFPAm_I_7|~2a2G@F;Y`Tlw>hcwme3;S$j+DM)xOKFVQ3K0(5#D!(Vsl4`s4rxG5_MqaNn0>_ zFBz$7LlOQw1{#S0aZ6Ve0CJ5tS1R5{srqIx92sL=NnG2seQRZYODhuuW6*lieQ483;WXkv2V4S1cn)1gVQL?sZs?@~)oX4AN#wiiA)-VG#Q+&!4EFm`f*Q z{FvDuUqMhSh2vJcY6#RcF84aa74|jk4iP}=*$Ymi-oabE5*(REu1U#+WoSaVmyFYu ztrKE(TuvHR2}X&3bMmgFl%BSD95=?4b@kq)6t2&D8e^8U%jNRbhmH%-nmg4`WgwE#;Y0@v?ydZv=-v={cNMPc!uB3~y0 zWd5UT1l*`Tux-rRQ3KX<$Z=bHl)^XTu1kPJi?GLq2#~pXMaW^M9v>KZ0i~0>-OPZr zpU*vrO;t^r`whi$%695NLf|VDQNo%0dip)4n~9^%yPpzUl_3Y!GcjNqJ0S}&CNxhwa4&ZuDC?KNmq#qe#tViCuWJQjSaKtJx=8)f- z9;f>yS5KcyXg#h~U+ERJlpe9n_eTN3t*E|8{ZOa|-#`Eu7|tTjg5E;P2W%R4BwA5y zWFs#*XtMZ`&qjt6fr0;5x8$G#VbTj%-IRdeWj-xU!!6TR-d04f{um;80%7QAm9yMf zq$pfyxS|)Rm11nas6pJ(n96iODSN&X;ImnR#FSQ2Pb?(WF0|~QeA-ZnjxZfmY%zmy z0!GZMp3`f*1%KQO!eF8LH@F6!)2tfvi%(G?Q2>?PF@vn4Dz9SnbW@|TD)Y42b9Vem zPu8qa;iiFQl#LsOB6AX;^u04N(eU8fgk@ujI>02~2f`uZa z8_L>!;S0ybJopcckqeX*ixma;rQ3*#7`Kbq`k|)${#=!Xjxz*^E$x8`w0`&tBf!V^ zhf8?z(LO5Bo_}^=9i3Z^Kk|zvkRrKg(}p!nkgbB&`zi&NWZbc^Hx?872&|p+grSJk zpWm`2_&gO6EJiIMRmBZA;Iqc;s)=me!)3Gs7t4Mbge}5c)xX%Jto>fN(Og z?Kf#_E>h)pI@%a)&AY=0$!S*oB-u!w8z1+xOR6?b#y5S9NABO-Pg3_b;}tPQA9rtAXMrYj3!1Yl@c zz2il4D=7AA2g0Q3lpad*VXkBGb`@Ni6$3{VS9Cr9_$nEj;VcL0vwnq{37d#w8@R;@ zqw3Zo?B5wQ!_VTNwfUg4W!s##zi^dJQa@G|>~%0NfZ#Wm?d9N8#{?_%=W1-!2Ic@l z2_~f6fc7~rusYf|J9DX1h?{CSU4^bR5iVhy?TF#NsMuN5?SsIJpf70Q4=qt4O_VU7 zE`<53e2TAwt6smRws39Iu3_3xRmu!pKGG7#wF19{k0uw zJ%AK7Gv*0(w*zm_6umU!UUa)8z)6Hqi{7-?HSgU|Gn}-tWVa}HWdAYXA9c*c!-WpC&b_-!|UsqW+7H=ISJ3Z?+;#pkpvYP z8Qh|PR9uHnOs5LY$a1sMsNTW)cYhslpJ#BjYHhUux<1ZOBk~|l00>STV2v3?MQhb} z;niB)3F_IpG#b*D$c`-mPrImv66!yzKAHnHh}OackTCcpUG84#{}Xmg zZmFa`BE1s+-waclbGGF!T#o`ccD<=;K<%MDFlC^I6vD(V=Eoi>u33`87I(uY7(u!rGN1w=ATVj;+Uzqi}X`XbJzRYC7Jn25_LLRuhROjv4ksHZh> z+_|AnekPlYRJqR;I$84)&`UKTZeDJakBn-}G2h%l!nFiV_=<-6UNmnCnPbahxw&CZ z?{AIdqTxn@#3NkJJyg-=74YdDZ75RPp3zosg5UOs2iD_R6de9t9d6ugu%4uu=qB6y zp%lqrl>+s&)3Yyxc#F&Iz9O9ZZN*zUVGA? zO@l(+G;ABUCal>ulQNgI@#URL={e6DXxuP+*KF_1fLzeFne3T@mq|6#Ik{d)^lL}K z*M_TMKE>S~VEa;ll-)?(5j8pM#WWoD<^Xoa^^r6m=dmTV@iPb}awQ3mHulE#9247M z5)-WVwE8p&^!?l*vl$AwPvy~F>36-=nb!}ZH`|64$BPN6@@=rzjVl>!eO9k?Cc z+3xsLao#S=>rxS|3A(mFgy9viL8|cPOx>%ZGxL+!d{(&`lo7o(1)nf?R0e$OTh*fYkkZOC`f@;bbZNcF|};~RVp5l7v$tzJmvxe`G=aSMkDjBc)0J#$tA z;^8N!UPP;Fjpn4GG|B4r^q#}<&iF@F72vGGe3KDPR8W~$0VE~7JW`jtX5dYU67lTq+Y0CKQqB9d3jr8twO8R{O1ZITK z%9rt}M=i3nk{)HzPB+%ziiNoEdN6N3mrQc&5Q-y8Qg7BtDC?<`N_*WN=`W75DW3?6E)PqfoVh~eL%sh*|@W3zZa3)-@xh)OTKZjmcVuGO_4?PcaI`qhV-uw<(t1~=ro9GK91Fb3b zBgosOzL@@+w}Rf~FP2s)k5==M#bDbCSqxaHC`uGc#~(~TAhVbxW;;)e&WPeLTy;G> zV`V2H*T0s%4Ql8>Wg7q|m??g^1cV?38O!j%&*j!q)=>^%5S!y|0g z9$mk)Fc~8IuAXz8p&|%tz$KWZ(@QE>sL)Yk*9||=@`-OjD z$-snubW?H{z8xkV*075I4ULt;gyjWeB=3v#D^)(*MNg$6oWPH}?mX;+Fv{Y_Z9sg` zO}_y!_NQ%PmJZX)7OMXHseu3!I%izUe*S73-Gb0g{7A0@w`Vw^gIB6*T>zTPV!@u!WJgm(++oDiAmCFb(k0=_?L(eQ& z6eOtW?qIx&?2SU8nsNf4$5hqzGG*-59N1ssg3mfIa;E?FbHm~Ty|Y1M{O7c&sDR&l z2%y$dDYuTJNWh)DJb(bO_{@G~3eO4a;b$1YRE+#aw(uqp`H0v{|9w;P4V^;O#z=t4 z`%W(OCCLE7oF+d0_PlCDTD8UHXROuR0n#gOD3@y`#{$N~cZhSZG9n$Sozmz@uo@wdOUabKRV+l_09+CukhxI{HtzANaEstiU|DQym?JpS1HAr*#d>c#HGLJw(~M>P z@w48lmI7Z>9y-+RxZ`65oN=hHYB!(9U%cGXip|pub<3aIKQNB47(_1x{}do)Ek4hL zQ1=PdP89g?y?&Tm^3(G0JM=f$RHM&vt%hCqiiX6<(Anz8$VLBLGS{%|fy|Z}N2~25 z7-92OUH|T&cNsxNF}}t)AacdTg;15WOZmSwQ!Rp^;>f1hN{KhS5iGJa0#u`POzquf z11(+h#qQc@srf=Nwr6M%U^djY*Jvzl%?Cm$gbWE!_o(i%Xmif%V*ZJKUrQkG zlo_&F;L#Z4ieqUzWhxMmX)jpo)o@Dq^$GVmmnSxpd5b(|q+RPbJRnW+{rxTb+o9a4 z*fN`s)OYaDK&$P$pN9*dHu7m0o!W-3@DD|Ac2-%}QBwTS=qte3gh}uS5YncV%zjB6 z8akj;oW2=Ur41b+ob^&UDG|ouBVA zy#Q)YN_SG4c>$)54H;4?ZMZ?~45EB0|9`UoVlX$I@p>RLPa|v4?2F9w&K^9vc6R-lndotM+CCk<3ITu3}s8#;j%g94=6X9&5v0Eoo zG8e_8T_Ao1T2VF{T*I4Rl0wO35Ab@Q)weuj6uml(Ze?-NDy{_w%^G8*;=o)5wxEh? zZvbwhWh>VcMX$Wo7S_b?qoV7&bYw~vFLYBI+5k9zP!DC^Fc!Z!AJJ& zXkp{Z?3SZyq#T{)y=D53X}Ed7N;v9wwGoHNDyR-Hx zI4GyqdG}T#(`Zg8=NU~qLLgJI^Eex-8Quf;M1;b&&~u~aWSmH0VP+&^B{w&GSeauL zGhzOBQg1F$R;Eg=ba8P49@xMqE(?4ydJ&d&dZw8@a;7MW@E4;HQ%HeUr*Wxlwy$DT zMv$E%zWdCVUKqlUt=(#18fwp%$FmmmF(i$VGXawPAMBU!$+BL**%g|*Z2UsCg?L@h zAXiglzKW}8?9|R(aZaNooF^1^rdQ8lyD=)&j(7v0H}pg#sH-xRQj-xt14m*sbTHj( z5Fg6eX3b=o`>WNhz3Ez=O_L%$j*u1Dc3Hhw;3zLPN;I?ILsZ<_EcrWNiSVtL5&$O@ z6(CQ7nSTZXLz1>AXdqW35#iUDkgDty8+S}v)9ssvA2Y%v+veLV? z`c$0IE%w9@V@zuXL{MPPFG}=BI{KUeN|0a*TnwD*fx5kzz?Kc_~o8V;f+Tx3`G*B25ybR%`aJ^QC>JE#| zK!iT{COs(+&7c4tFGKk~ypj7OBf0PbRdOAFrTXq!Fd7bY{kNYI+87dCNqF#)=k+|g+P?G2D z(K_6(aF61vkMK;Wy9z54_7%t?nF@Dp2VHX$0&Iu3gP&H1x5L-nlr|1Xa^9*m1e6NX{s z-SWuUYvYNAc8XDk6lh1V&X3v4W&WWNi$C=)hu$xM?2kPSx|$t0pPDiqpA(IhhsD{h zAqU#0_PJaEY6b?KUG3wWULKGZRs+5#^Vef~n^wuw4!H7~eBMm$$Cb_f6{F5zp%5tW!#N%$fGVTo7?OH{c+8JrjSJ zQP*);A+7}OhO3z@j1LpA8tlR)ckz#w=wJ(&3Y3$jq~Wp5=^(Hb?G@|`pk&Nc*LQ+* zXhAca(2!BKAHyx+PbpKblpGq(a)ag&&48l$lpv=KihHUuQUp#U1Dv*jnwC}Bn10H% zlM=8xkJcSRF&2W1bHgHJ5TN-_Ecit@^u>?$pc=lcd9*ul!Ww!IH-)uV$ZObGlC;sx z+PvNr-&ZMxuEf`9t0d4_PIJ_?*nWV_mBh$EhhMX~9VuGfu7tjoxlj0Dvw-?`8m5iL z)m7Y770Mk%i&>l}J9oJwnbZ89zcxG_Gc%dvjVX?VOf6P_qM>(=+s|;TxL4{`$dtNy zcyF$q+uS&6V}CXWPfW|zb`G~cl%I=>wy3%gHLxFg(4Go-M#93MRBaU$1w6`ucVIC; zmBJHL+1P0;UX|m5(tF(c0JF3KdBS56OQG|Nn~C5ylKl$W#>?!HutJy8(OPe;9lLJ# z9H~2l9x>mm?g*?;qhvYvjsK86ECehCT+;T2^@ zg&BqlJc<>1bg z!|Ovhey3pGVS|-r-p)X^A`A(2kiXPt!ndkI-Yk>Wuv+c;7`oYDMsB7mraNk>o~wKL zOR_Q!w&OyU16|ddO?(DLYEGo4)P9~@Y-X@Aif8qFdxs#lm^rQi1J#zZ55UD&LUX2a z<^-S^`}t9bb?EEZi~mHrnO(-@WFEJZ{e9oAj!TSd=LDE4FS@4orA||wemfr>HcKsxv)+KyLUm#_)lY>B>fU7S`?aSZ}_afw>n;5(*Y;!uba2W zSFYVZqPrp`lN<6vQ#7MWZB_n&oc&?DC1tt?IiNF%A^+hJusC}WQmRz8X29y^@{}MM z6ppg;G7ZXoqGpo5tNS6b=CXDGGvWJC7$_A0iI?nwH3{{1|8?!%v1tWS5UY=|@ON5t~X&;vNC)JOw-nt?d8tbokU7jB-&$D4v3z5|PEb4IFOJJdq= zCLx8JrQc=;N(DvzYZ5kI4V{mQPdL~6_@T`FW7YM5b}=ZafbvyP%1F<6wI{NH3*Z!` zlqne5st~}IMc|O$ zKpq%YeI|>H7d)*pdC7ecVvy4tF@aJYAflePTfFOD)-}-dT(_nVVec@?;F)16aKY#b zR+(#R)V~bF9AW0wYqx5cTXl=K4j#Qrku-Oo^M2}9m7)Jkz~Wai)oIR-i}z&&;ih;d z<bk46W;82(D&&>bUC7iK^B`2h z_0%3oNV@U+Mwx~~oDCpGt+#5M1Qq5*4 zTI92O4}mgAo%)mV1^>}n$E^KYl%eyvk-A4Uchny6RD^fQiQ^vDh{!X6^O=>@i{^E#>-ZM zw$pe~=$l~PiquT1eqCkV-K_ppv7W+p7BVfLOw6EGywX$3)@jl|}csO{Y z=5JMxRE?NZxIeEmJbA^Vsz)iSS`i^FPD$RZzEHZ(tBYR=$4B&3 z`%K8U7)$QY7^bU@_^`;}m0SRtMnB&<7}4`663>`@1-(?uG9QOm#Nh%O1$oOdc6}g} zg{&cz1O8hki_S=Bepx;Zo*x(qWa1R`0no_}HHythH|RtJPkSE7-44*H#zl^l2zs~J zAPnU^DYtP0XLKo7T5&){a;})?scJ&Darx}))p_%n)T+C(*KcdoX*v0}M*mge(kbJb zIM>XIBq9StNF4?#W7>;LS>< zUQ0hlwo<2M%G1-H{vO>1R4~46dg50ZUEP1&w~miZeK>Y#O7-L|cE<^nN1S*Evzc96 zO}>IQd2Ut=I3?pi$J+BZEnu$XW);5b4HO=Rn#3ky?&<~&PvK=dPXZVGo5twzqfvol zXs79@!^6nb1F zG_F%oIA3I7T)Rks2;;Ao4sTXOh<6nNYQLurF=>owwX@#R`UI6i$rnv+i5KPYAmFK? z<-3hSq|9f%CNW?Ahk+(o5J)X-Q00UEN3S z5%za5htf$pFMAZSf)Cx;umi@+1M&GZ3`QBA*BAp_F7x;oL8!Wjh>Le7a=_d-JdY<2 z931Hz(h$a=_uy!ReAM8;?5z_b@SARX{sq>|`%~Db?&b4+@_$%y%4n8{98v`uZ_Yat)w$%p z4*gTjP%Rh#O!qUP>lE@6xa6CMGGg%?|oMsfgSHENs8VujAU4|u* zCxg=qw?3=d>@=TSJ-n}6bzgq%xj zWtY>T*nNre)On9{z+buoHNA0;U}vCp-n1ki^iJg^Vf|j-jj%sd38W=RNZyqq%w?F3 z86TqG4sLNbibBU<^R1$nmQTmS%J+FZqyY>>u6$dKCBZRuD?mYuz#$lihaIrW$yJkI`+9Cz;E9j*yO9Yugbf(L za(vvwwVC^>rKzy4L^vG}ill<%XSUt9cyXGgBW~%1IYp(o^y=VEYN|30#!JfC&uDO7 z(SHF;ie{a_eez0a@Y&6aaJtpX!}cm%xm#(v(p--VR zhT#ANE(VA@>uy{vBn`{vK!E`b6^d?V<=u>t+~WXUs63uDV|TynojB+ zE5nVr4W-BdA3ki6+63xwU9diYW!MT0OL6Y6dEg9^MOhz%iD#e}ZfNCNO1J2~W?4p! zB_5)4rZ|-x6oc}?9KD9*mJUzPE<1Sq<#d*)I?a0ef+P&VUO^D`!)`HJAcb`Vn9>wV zek}d#FmJ#aJl;g+x70Wv9NS7Z&RumHDgNVIj|Ds`vbT(*{x<@{(kvIg7cP31FeyX| zTcKWg4+2=JSc%ujH;=V-wxpZrw`1xW!w(D$`?M|}|ED?TmF@c!mSLmyfS9XMag+l8 zw%*&^XsC=4#ar!qpEQxnm+>Hk%8vkAD?8Zssw3!L7ksuduQeg`+*BS`)+Yx;p$p=% zbcbn}xa3i>aqEOT%H7GZG0=(3}_e?!cOC&R3x?WT@_%{d1y zE1o$*>EbHoU;>-dXK5ufWsuB;CDc@T${_{Tn+>y9?SXd)qEEgHO5^zN!C++X_Jj-s zuvUYFudyU6z9RqAR5;AH)@Dd zjxMb;ndfhKSHv12Q7q0({Jfz6+9&CW_v*`JmNPEGe6l^3`pyZ5P6}?BXHEHM7a@? z0Sh*>3xtxU@+5ouX{OveHGBZW$=>|dAlesCI-xJVUt%b8!P^?Pv7#YXQK`RWi2z3b zAjUZfX-ORE7l(b)Ef|+MZ0a>o&RXvaVZy4KB~&@xfIL6D81Fgy!(Usu5NYn3;6o7g z;{0V+XQ!WR)y`qta@ee8;t*-hpRO)}f@zoufX>DdzA4#Y1G!QcyK<1#N?MmO87#ot z!JkO=qATF*kmS4Wpb|H_1L=X!mvPu_9Nwr(ea}p2)j#xWuacn(Hh|CW zCM$w!Q~)p!mc9Pin)O3GdqBE^oFx9`%7#pIVuf}mKLdm= z=!?;?ULNl+Sb7eBmWlcy>890(_Pn|Ydeiev?%!p^leA@N@RTsXHFg}Di({W&@MdIq zW_Bf~O~43fugv_+k9Lr@F3MuFHMo7#0`$)O{o>HT`VNrUIJWQ2$?uDrX3=sh@hZK{ zbXUAK#WN0vH2Vn|vM|b8@_qNBkHhuzfxj#8#dLv1ey^^jB?YcjJVUyw(ul=YYJl5y zm+gJC?ZAq2Ak$GF%x3Pk{Uvq{U=SA_W~_GY(Y^D*9+UAy?ipeo!DW}7f?z&;)m-T2 zOPHgPY|_0`42ubqjqvK^7QkDcyp$_F)Dbyok<(QXaC6sMY={*HuplOOH{e;ifU4}t z0e?}BQ)n7NgD|fsf#~sY1D8v|-jUnGTw(_?tO0Ch`ToOt1=V-esIvE6zLJ?@@~|X1 zH2~$vdG&hjK@*cb`nXA*wWlm6BSNIaxPwO-%RS@*6YT*!K~By@e&HvPnQi;6vom$S zhVIIiswL(xkoJA#s^#QBHMfivN*j9}fHG;L;wPTTapjls*$}{X%RsKcXEBMw2*dJN zdF#`i@20VN2r&F@BBwS6-+p4V&}{8~!+UJb`%WQ{X^jOc`E}!FC3ksDZCEzyD&ZPUkN1u?|hqV(e zF+uz3VrBl$@$Xsck*4-c`~`YPFw8yu4+~)=W1&`AHCsDx@u4K_Btlb-6k93*clmox zgWSBG#dDIIeCnT5c?EAO)QLX&$- ziI(tjj(qa19w7WaA4;E{NAm=iDsV!l_}~nr>$A2*{p!%*!NDn?bNOCSonabBkpMm> ze4Un@U%@lJuY-khOA&<{CuAdqc4&@{D>cmdQKFP{zd1eE!|X!XrqXk{g}KCHXTvcm_-NU_@F+kflkD zEUcir2e=2cK>Iq6|7k5Y9-X9Q@5_OfKBKa}TT;pL3h30BI#zQvazOG{ZsA z;;AO481CH-SSf`zsHM&0eVu^}NAsM|VjzYk@a?ee5WxB(HT15rq!TqkF)&NHBHJq9 zlE+)5>Y?e1J(*)19?jEit%{0h&c&ykQi)Tda^38u;aW_M?}BiEBa>U;Tk zvrTg!jdO}R{om9MM6{Hj4B zYbOWXn|q6--CJUV`Rd=a{G;;vcUfCYECugE(7y1Ibp~;N=%2?<@*>J}oX8uWO6H#W zH+>Hbbqa`Ndd!24R8Hg1x;X_85e#;WK|P2S@v%&*O+No={9m=_Gbbl81(Li+@kW&2 zBG)t|TZnvX{N`m(L~5vR@xxk18hRYj@vaF|Q0ACOL` zmPy#ygvb?^<%+jc$zX)XgKPS`4(LuZbc;{>9 z;W#xhP-Vq8i~eyMGn;E67TFwgk2t#vU4pHOhWI&qwKVpxY0P!hPk-WWN!8HHSbn5` z;3LyNc_xZU^Dz2yn;OP6(U!K!*~ygArhr(e>??VdnFFsyM$Ek#Vz(Sy;KEjZepYdj zzrYR<$;4rXZwKeu1iZRi2z%CQsgqt=1i7D@B;5Pz!6tRL3*GEz(?kuG*1(+?nK_j_ zYj%sP^!0B2QWLzPu#u>aLEdO zR)P=G`1McJ*>MmU4J4lF4mM$CM7gxA+rI&_MXtWX8X7+hW0s`s^21wf9GVZim+is zP!M}E^Lpi>f`VbF%ROIGa(=ztNTksfxRdn!mX9r8sR}zLObWVx z0H9+)QK5)NSe$BJ!eo`o%MaWSdrevnbc#Qt+I1pSm&(p(k@SP0IeAO=ENw!+&_8lj z<5eZ%MDfH1ZEmSy4v2@{sAxykm22DSFT95Yuu7eE+?M{5Y|EN%d z58-wOiBHGj_}ZOj2?%}JD|OshxdA#wT_Fs@+p8!Rb1CUL3(3)D6u(a@t_zY@c27QXvA*%S1YLl%)Z5z#a+-2e%C3i2=@qs03O`nx zPna{dof4a6N`9m-x=Q1Moj;z@f^W67G(^e>blSGG$_v4{2AH+{(gHh2Z{DGaUKoYc#I_C}ljb=DTl&NOZC|Dd2V!@ zK37XN$A4}>P)q$rKhSl1*q94#!yH_pEk_^mqdQT5Bd^1%ev(pWhdI|}V4(U7&c>It zaxMg6BcBSy4DH%VyTLCU;lkbco*E2yr5$6xasp^X{!EI)T>D~jpKHh6cd@G`uh4m9 z)sc8;wJP{?AtQ3BXlE-KW*>~OJG<{#gVCnj5uCC*ZIQ5-C!SG|;)s#(7~Ir<%CMN@ zhK^+8scqGV3NHJ5*c!HOa(A1_)`E7E>KKQZ%_~-pz;r93WT6uZEgYBI(_z z&NaQ2I0WMjmsN$~!3cIN8>x)M(i* z27R|J0JB)Un{hr^oy0vo-REdnUOE9lSAvZjJf1v97cn8LwwZjVqOc6|i1@;@qexuJ z)F&z7OI%EjgpW}cKk~54dvy#ViT8w->s>Ot9KAIP;SGKJhOxbcmMpU4P;<~h#zpTw zIh8*|ZF|u14~Mw(Bo~>HK9R?U*2_7ZdD>nc{M2K|m9^be?N6)=xMOP;wO@W|{Ge`R z$??#-2zPU(EU6J+bSRd3mWG;GdGlePWuixA3eRNA3pg_{^cWI!irEk3}jaMZwt!GaWKI!sZl8H1p+=6MNW{UB2#2h@}0(+eHU zx`3+u2EYmxB>>V6#@Vrw3wW>4ehy(V&Z&TIM8EY*wIDnl0USibmK7PHZTEMylt4`@ zTP~Mh-j-fZl}Srk4Tnz(J89by+ikXgkkXz6I%WyKN^&xb>}qdLTZ~r)dYIEL9ac9ep&j73u|&G z>{v|RLk$CJv5xIm&z6(4|9ok|aHqE-D{h~Uk!>Egf=S#2{bk-J6fO?`KTEf-y9Wo&z?%r_c}IyWUcL!lfxHFq4S zlswYyjdKkc#HdCoSKi>TTN-b57O0E4Faq(^Gb<4c^Tsk_`~TRT5?OTxzge_L8z^da zXFK{jy}@@nmnnFFvk3=bqczEVB8ho^3Yz1p_!s@UW059?UR*Bp>SM-uj>!jZqb@?4 zAn0U*2x?4`v*;UMrBCbwMXXETXn3v4r|!B(%Qo7<;B^S_5CR^{xApzVhc`M+ehhve zbQ~)t^+WJ2*K}a%>ULxIj_wrYO*!7h_zVkjao($Z}0_%>($ zMw&&th02})4Zl#d>!LlnYrzISd{r{LAzSkiX9qA6Be9k65q2APpgM9Dyn-}n9f3&!*P!oCprIb+$oAww zb|ZrQ;gDID+khSUC8F=z%$7Qp977k9p+Ee=svAbMgu%N9^x`|5(*+G3-gejQA$o^W zSb__bdQ%Ul6a+A$rl}!7x*R_MJd}3sPJ&Qfx;*&o{M(?w^R$ylfm8X{P4Y-$L3Cl= z3H#(t)*@2{r*quWp0M$58leHm04o&9GNG8Tgk*AhR^cXN@3r#-{7YBR(!N74a*uX6 z9(i=we(6lJpBQ>WUy2r%ESoF5i$sbi&$d?DQBug?n5YaSo98yz%7T!mQH~nZo_j6= z$l*hZF@4;fX!y$`3)L_f=Fy`iRJ|0()|_xW(zD zFmZhF@IKrOCkacVzU0|%yp~}Z^6OjuehKeub7l@YDTnH~^C%JC{M~8= zG0as~@E9cFG^B?a=%3uos+2CqkYuI7hNP6UD~-$4gH4M4vC{vjYI*ARdCCM)t9511 zhHJz&)$sIKYYu1G#U4fo(XI~oQ&4dC7TpxiTlCsx&$7fxEpI^4&hYU^#5bcW-IA1( z#|(h_j-b9B6_ZOIbPC@1^9+I$eGeSmf*JqH=G}x~8ItegZuv!W+1DD!px!CIjhr#~ z^)Bdu+#GGQe;hCH`CSQ!*w3T6G=Iq92m&;faM#t#QHYV`>>5f!aVucK^|9B2Pg2Gc znA7mJ9k6SzZrS$8o+aK}IPxD2d-gDDgRu7h9A*ZvWy}Oz4M>iEhSJE`$jk|}8sES-_rLR<>X!kPZgz@^L>>j0Pbc|s{%g!LcEQW_) z(KIynUG=UJI6QIi_~U^|z}GCknJ@o2)M)Oerd=!NPPTcQxq^FfIO@|Rwhl*4Es}L+ z)Rj9_>}HQfS zmTzRqLBeO~--!50i}oawOD*9b-*KhbVr!bqgOnF-vb2HX`Vo~fmTzVsr8?E*vw_kU zy*+n8ej7)lCyouW zKde>_OKTI`U`Dm%js2z(9y${5nRlb=|Jy`-!D`NTxj;qltYELGb5TjK>T^XyH$>|( zV64&m4ObEUn%zWOwAuGDat0#ZY6iHp@T2(HD)|+n;;i7ANDiKWi?jNz3eCMz00I~3 zYEVXXX96HDBlimNNPOKO{ zcmiQp$4_!U=);lBKjEMC3y<)~!l;to_Ggd%A})V-F=^N{hykmW%07m+9c?Bn@3k>2 zbGK{GfM1cuC#g@^?~q^8)}e2$NNYvtUDtalWLt!KP|MQn*Hz*w_$;Rc;$WmBTmn)= z3R`_GRIU)(t_712Ls6*cze}O@6@!)jWm7mN7&bpZP}yc{qqD-I?eu&!v&Ryh5k%+F zv_+-oahif@v6D={{1;)2kh?8~JzBFMbIDBwf%t2MPr#HPyips@8!kojIsvm#|3M5S zeoZ1p^m_1WPtv1&<+;6Mr$zJEMuLi8yU&-iF+aCuv8<7Ni4{wbY`AGKoawY5PId%rlQwY~G_Rg>bkeKN) zAAi`uf@PvMa;lV8#=@}WxDi55L06)ir>X_8n(*L3_;Lni9LPSu`NgC9@B`qQH}*`h z$aNlv;1_wHJUF5JS->4<2}oq7PGP9gU1E6w4Nb#{=Kw+>h6fprX*zdA_sA`7nI2=Ok} zykt;j^8?mi0`*&`bx6-F($&!A0+XvSKoT&p=BLo~p$boX#bV+vAi4{sSb9mU%+KZ? z(w`9QCmD+7%$BuU=mI+Y3C%HSC7$94ez<(91$n^^? z#&T}APR8^(Un)G$j3A1l5!ce70~k3QR1`c~!PJHTG$tGx@DtU~tfEpT2_yhkgN}xJR<8 zFGT5RJq=Wz|L#;7zT?WP-aa22F*R_oD8-ehz`T~XI$g81nA2YRJj$Eb-BS}~v|wt{ zQ5+h(7hI4V`CNa21fwSkzt*1f3}(bu9iI2GKd`V=696{xJE7w$D=QyVP;#1W;RYcE zeTlS;f1psC-@Ap^|4D2;Dq}*pAO~Q4UWm7>l(yd7f241D(cp^p6h=6+N)o*(y8L+R z5|4DAJrTPYFwLi#?;|{q{oaEH#Xl^YNr)@|MSA&ae{M7(GODgHC-YE*G)Lz_%GM9N zxWK{`!56Q2Ac(01a^4%J_caFolZ5lo6R^V=_qqp`t}LUvvy~virX4q)kU_A$3LFDq zo*F~GZOjpFkMmo0l#zZjN-9Qn@JGHdxIr-A$+I(sy<>Y$P1mQUJ>o-E#y09HmZ#-^ zeS6Ivz{(Rx_pu+--YAeo;SZ{pAXgbX$|JFNhJ$o%bf_W5%&TL|di)%4Jq6_gGi3tF zzs9&*<1;+z9s-&`ODw14CuKhkfE(epH{7;L)WMH*I~C;3a(n^}pr61&HAHGWKt59w!r}b}u8qrrcE~^d4|6!&ixT zQ3|2Ui*oLBQ7pC*1g2h4yx6oWM%9{dR~e}m3mh0|DnWQ0{?zM?^xwd|K?AO4=mT)i zMZC5fq$G;!Z5r{yBuvm66$eykdt2Il(#c}>i#t*-u}}&d43Upp>j{8}brwp3uQm0( zDk}S&UxN=~>-;J)DVy~_IGq+M-0(4yLJOq~Kk<$NmzCL*}uy>fJ! z&eZ1G^wJ5wZsAidE4foH^bZ)up)@Q4%$vo+Ml3@4)&n@As1#gJ_pcZzi=YsIzphoh zL$mb|Ag@^dLhc0b%(6R6X76`|c8=x+i5V}3dob93iLeP8SVC1sw^dGtS+r%rERvLn;Bc5ojvhi&?Dk4|bL)LBG)| zWlaSI5TcUQQ4tE?4-qqQIe)DW5MUXMl9h~NGw^#Q$dPR99Y5?{66P7&coC66@UaIt zXG)OT-agsQ?duC#dKgtfoighpN6`0?vvBdA2}$%Q_?gOSdNKWNm!vc++rvm5#ghK$4^C>sXqFgsB-Tfu3F5QjEq7D_w+u^?7s_sy;ms%u)PQRH6&|*`7In1&qEz{} z+?!|o%$0%f@XFBHP0|dAXTS$R ze1!s_o~Z$2FZht;d1cr)k{slUW#F-S9{rR3`dns$2821l)LvX!xhfYjt+6%goD6?N~(u?uZ>)RY6)u{vVCY3Ly zuu;C+hEaBikj``T>2_0E*jrl*fbHW1=D|%;l_(@$(G#2PVEpVf>{`Acb|Gr0JENXd(1AD9g=^TWHSdIj?jJ@xqe_u% zeP6Q4G;y8Kh(7My&zW`P2cfsdQ5#|C z=UpGFs!;3s>gs9?_w7(G3|n8NW=@s8wRuqn8) zV79oM##LYOKBu3Ecp&fW8DGbq5-TWRE1R*$Fh{@cC-bttz;nr2_MPjP+reeQ6G_pW z8lCslef5ALC^=?t0t69Bgn8ljzC9%vRz5#BG)p`|;AAY;MpauYcEwkDGPSMqjg^w{ z(92!Ey-)T;bVV$6fj}LC!>hD;*BR-X=PeAqcrGMLX@nKYb`$oLZFQuWC)_l=r_B4I z@Qn}|Q-@xii9RW=0qo+Da5a+eq$tT{&@T3eiK5lOqv{HbE;=y^Tj;BvZS;vceW@+I zo`}-Aj6V=+0)&)bJJ^ScpA}M-0`IZbAR^n(8o&c?bfCTCpFtF-vX@VvAXO#zHUzBf zb0-#}W;7uFS&pJ?TMk{SZ zpt^-oUGVL`i?6u2jgN7r$5V#g{{YX6wEh%8;i+8P_q_bK{n**)?6h+snK&l; z=iFWkV*$qM_~&{1xpUiyayIm*yGZ04S2eJ2LALdxk%**Sj~kev`unv1kd^@3#u+xZ z+PjPBR)cbLLe$1J>{H~}@OJ$vio&W?C0uv#}oRRL{EKZKn$87_fzt zdcz61v&fGuu$iID>yLGeAUlsZMVnmkkh=2TgoS+L%$2ho8g)`oU(~_tKHYC$=(g;t~H7mE&`FmzNhTw%G)S}*2I!gFwQ{D?-F(;*940ouAFZ++T6Kpg;?+; zP23Iuc|wK1=JI6f-wE8666if_@|!n@L>ttpHSuk2EVfW8g9XrD`?3vBE(DP~{a#b&j)78#H@Ssy&SQ_X}z4C}}T2Y|e%wvz7$St*sDM9KHeh`n5~vXHLL{ znOxy`_PRVRnyc4pB27|Q>H2*Q2>_hJ*inZ$^`#3fCb&A?y!?tg1fA(ACplL-l)SDx zCQ|#Ha6rwnDv3LrUt;oEcf#GWaG@RJ>1l({6gtVr#S0zTkA-!PU zYD`peVE+Qo2j({1jM<8*EPbR2X7%+R9Y?>Qtz_~eX863eT%M|j1`M}s96%THB!S5_ z6sFW)V~K&Lj@hZNxR25;GRI}MFqK35v%#|g%o5Lq_HqG+0Sm_+IanJa?iINt+ZUrd z@co*^|F{=f#@>fe(9`65Sw?^70A&E}!J&ZjC2#@5s7*bzd6oN&V$bjF7B?Rj08LzO z5dmn#>nEIkcA*`i4!T}fOaMnx6czrrb0duQZO%HZH@sc`-@|oD2a2NGN1>u+kx}l} zAZ#QR2Z7VE(P&V)V1aau0q3z||A6!QvGoHUEX(uVv48K{r;+@qIkoCxwfXZ0x7~x7 z8xVlmc5=054==d=g9vu>@54)V-q(phtHNDF2DSsN?pxsBQ*O=8B{RHY=<)Ky15bA$ zc@Nzi%u+=ma>|$LM(mvMN}A`#n~PPX|JWyRh-BUL=6QSRDPjw4(Mg>3D#U$djvkZ0_X<=xLuRHouB@~Slp}e2<>uGlJ zi?JHrCEuGq_2yMn(QM1}3(N$7km!|3?^{{Hno1C;S(N_pJ`$)FW7bJHRQcz$EyHtE zc%BUj(k?Cs1)rTMlZyEYqG}BGJk!Opn;vU%3*)lMSG1)^22?p6(p z0**_%72&_^^sJY&ry@Q;wy0hJ#3lrVl9o=Ul`>v%R-~p`ys9F+LRnu-aVfd&f-(BN zXknVVQb7=9rWPV-W0JN5jgUrAsLOvO;ES6c7z%=ySL=Zh5}+_5f%2dshNI+Q6FQw}yJih75&*M4z+d({G> z;k->GTQ1V|+)OHQ*Gm_>1%f~Uxc#Q-hZA0Du(W4Fq>%-o87nhp^Q_Dk+3h4yij_1) z%rw4B7#s$fc3FW^iHT!e5ItqB{9b$B29erQ6sC%%S~H*oy82Ive0?+akg1OT)XtqK zSBxgMvnV#~A*#ZOaFh9w(`G&%ZuFzFX=8oOGN-g65G+7lxWkz)lT<6d{LFpg-?3JE zs@X`8HR~8jyu(Bnd+dSAp3bkf74poM+Pv> zgsr8sldQu-b$bD47 zyt=~1ipx@su7UnY)JR7Wr}2P4@I+X|O5gahgtt95{_!mmkCCmw$2{}7B@g6PRbD&i z&;UpICNr=I`Y2pa!kt}%6_~`~+Us+f z;}fKH!j|a(@Lx&C*SAK|mF>Eh&<^In`8aN@1c<7;`Nl;C44INqn32Faq~^-<;q@C8 z|2=WrjI%B>i;&Ud^=E)W zu0s^F_95vzS?Xkx?a!h$df-`Nxrr6sVy6uXIlIP;CfPC^dmfV1`gTH=E88?M=S0jj zZN(0^MP&&_I=)$II?ra8y#47@n@-T}gD-pMIY0Gh7*7lVs@+A)R0+BH=HnZ2iieMkWN7Tbr*u7?V~^;GQn;ZxqNg zql6Im(b29mnPirbFji3WuWnY)IWDd6S5P!0A%h=V_Ky?|&y>&9i7o`QSPW8x?3*zS zs$o+mb|xyVhrEvhqi@J>X~C`G*Jf+ba?J{p;P$VC*i*}11i1{K{UlR+R?2b%>uZ$XmxeUXT$Lv4+Z3XybsBn zTF9F+5TW6s#B-ymlLM`{GD5Z~t$h}-epmIfino*j^8^-)G%4t>l&T9tLuEnT*!y=b z&8L*KQTA_aGnod_|8Z7oiJF(p(qC`yj1<_Yljso;d(UN|28o!3gbl@bakhcpvo(q} z>kWLFm(syi$T~s@hhYifX`gYi`Gdh^gPzQS<1W%cY_bu+Q zMG`0I%AB)LKjfFGq;MYw4{(VqA5;9WidP_0ehOT9dd@u;@Xhy1B7Uu>z?9;T1 zMR2i(xtqbpJ}yn|1Ou){Nb|)am!E8)m3EN|9IH$hbAN38r||p&NbxZqu!vNN2mL~r zv{IREjn{DjQmhBraS;|;Dr)i~G>JFCikFDzx(J?G0@pSeQ>uO_14ee=JsRRgfL^Ter8qNoXzcT)kH2U z`L}ZvE0#{SIWGIZ{Bibfk3fBj&)@iUFzTKqm}Zr#@Pwk+KYfN!qWrTSX`Lotdvze* zrMQzIK*I8-ZNTeUGx^gqoO7~1DR>d(hSt1r=cCf@L$7EollP*%06lPyMgmp!VX!Zc zm)zy8704(`kfF(>Rt!gtQ?JwQj6E4&yqXpBju0SUBsVH}aX%s+2p9S~r}FHLZXha@ z8C8y#V`>JXQ;oTb2x>a2BoQrq#^($?5t?;z#?DCkXKzo_bF<@nayI>W)Kyf04LqUl zD5T|Hy|ETw>i%of3gb;6@K^y%e<4mtpnO*JHnvEYUtn!pn6~C0TlcmlnY06HT0c% z*4SDQ*kuo?xX(<1y??6XfX*8V(g>BUkuoQIwzRaesp2051_J2t4bj2aSb)6zt7M(K z4=Qo8xkHHr?>##d+3t}4b>~c?I;(|1ki2`!)L&rxUB}{Nr8J8VHiF}PpLHcySigwL z1>3f4)L3jC))y&y%OL%cVCUQ|8{+d zQi`go%BxMup(C$~49t-X4kABlEXOoT6fzRu3&Ok`-VUPLLN9I=1)y{c@Ik~&j7xL2 zrAEJ`$yR#)^H*)&U+o&Z8r&GjmpsVL>o!+kO>~{m`AT(Fe|R+G{v?L9JNA5GmO7 z7beZmf=?1~7isT}UN6kd48yokC2)dTSB@I$YK41Ql&i7tFM_*{<0S07C|L+`h`Emu zJw|~4YR9|7^(M;{HsJf+j;qw}EziK4SL?_@t~<#UOaRQXqwG3euKPx@njR0&H4Jc$Swq>RH zlZhgW7=tX5^~(&G;qyJKFnjo_dit0LVY0GLs&nwkib(PzwAAl)r8{NQg6~4l!R47_TwH{S)W!gH#=>m+lfanrt+V+$+dD7xcre0nvZOK%SQCI?6*0= zCH6=XfkZHO6nuMDhNI;18nuEDP%$rx0`e==jHqrOprpwdSbingl|J?sn^Ck7`i|Yd z5UCB|bBXP#DBB2PmQJB)=`P2G=Z%;|e^v7mzhuDgj%r_26=h!$UcvZx>hUXJL4; zN$RV&pO^Z@#^Mlt(y_F9-mfFX!ePBw(}tJ$6lUvLbZ>uafn7>_4mJr-q%q`7kqN^x zpeKyjiD2` zxV~l%&2}^~_192IIgPMo4n3yEpGQ-v?g<(~=b7}8n683m*r!|&xmc?-JKH+qXDL{` z!0OCLM6QYTYV~`3W}K1N-1T6w7wnq6t;*e>duiq;RV zdj632G8A+?uLc#wppoVIWmUVw8&9-%8q^S$-b<+DWu2fLY6|k$VDLicoPYBDJ1S+L zb3Hp;w!OBWu7B*d++FKhZnp0fCtsOTT|{Y)UFqH+cH#*}Eo>VW*C~N99AYx6!B`3L z2|2K1uk;%Ejz*03&87RFLM#?>lRI@oBWN$zoF89Ww8|-#+eNagBNkVgnb$uF+Xuxm zYy+=S_AX9bjsXRD%HxDhTjGuT&q>IV z`UBg$X+h|xLoOtam2chjQTpVKT151JrzL4gi4EycD(B{qV;?KyNM^k$|8mOE_3{g}=l52P(0L9|!XbeFldTecPSy~u|x@$SOoi8|WzadbSJyOrLQ z#S++CA`f6|rFAP^e2`Q%4z`W(#XPAQGlTlpJU(>EgBJKfT&;b65Hy_G=fQ9X3BIN| zO56_9x6p<)aMU(n`YR^`+IEZ-qzDh{2TBW5-N8jEO`d7B>m4JQSlr6s0Dq^){7K&q zT0W=0dj*rxOnL&%ev2;}0TjlwG)EC=d}n939iZn=KPP@(zS)WI2$%>i%O%nWL7vrp zqWAI1xejSEA%8J%X+TM zmRXhCiZfap`B7kXR_4gD(6}hNA8}@o3c~`qprv2PGG5)_{MD~|3)^^x?m{v=kS}7OSF6;$dWCB!Ktoe z&h?`GrBsozucFYV9e|ZgM=nT9!V$L6a+$$V^Qd5Djz%3JWY2qPfOYGU#QTWu(4Fiu zE^L**(pg(h`Q6-PXxwvUcJ90(BVPT)2AW>)__U{0_<(ZV7^(Y+#;%KC!m7JM4?r^y z@Ux@j=JIAKx-C6*lTetH8uzx$Bc#qB12d2N<_Ad7jhg^WmD^n9&tp;O#zD^)kIVyH zl6wOxJn->+Legf;8Jxr97;JmGBt3#p3m=dZknb`s9F+L+U_)pw2`DU5|GEw@lWZm9 z(#|JW`bv6r)0RI_!Gz?)6bjxW znY}pcBuX|SbQk5Ijqx3uiqqJFk4_hn6W-?l#+NSLb-|%fm~h24P_8ndL6DYf2%>g7 zQ~k^S=)%_bapn=evHcECHRNgv-^2MlRK>{K}DuHk^k zooE+CzkMorK(9Xz`~<)(h7sSMF7UFmx1pd9UJCJm>^6xbrmQfU4fFy9zdZO&iZLu` z#DPY1CY%l!R#%uV2}c-4(0RV#0ljz%NFJ}b9i?*QS<`K{y07CQIL>03F>@ET<<7;s zpZ#ytFpJ=~5XLr{##?UBV&a_g&qMRU6uD?MPA*dAvyu_;WTz}V!(nQl8d66=S$zLSScm-DZi-xw?flyn0* zaR8B%qQk|N3wq;EBX??R$zir3n!*BM&mI)k@v6g9FS0wHP?eEa6V)OFbXh52?R!%q zI0zf?iE`jIZhg)FZrE*%#FQWUoDb`QAG^qXxh@;#x8R;JPS-Rp{!&`Dn)f>p!&0M< z>;9`+Z2y-9bIJAZkG{VMMv$lG90=A)qWr`(w;WkBF8&$Omrb^QivWYI$Q2_PoZ>bauyAlm_?;%cpXSrY? z@FK+>bN4N0 zzIQuc_@@{0eFWSs*;!u2)Hx)LP3Guzq}4Dzz!sVrF2I|_g$H)j2rpP~^-p~e*_}_X8&UHKW9KpNQhrIjDdb^+E{jGZ@ zjzytX!a3k*HnbdF{TFIdqMS@U6M_t(*a5VG zL4IwLC8erTvD(k!tzR$oC=;}Noe%5x)p#95i>8}za=bO3J8PivA3j-C z0#%|F!M@);)Gbv;@Tj}1r${U_@e8e^R{YeOF(ke*+AaC#sFmQ0()R;}A$XWT=r5(b zO~NVu+HEK6WO^NzRLy`wz8!yw2sY%^(l~^7sDUpwkQRlgQcZr*wFJ8F9P(mPb4(%! zCq$Yb7sfMemIuGE76=}ZsC(O~MK=Rk>TfV-kEg)k_pB=U8zrrSII6XVaJ?q!?OHTl zaakR))#DjHn26V6r|QQ@^6{&%FsJ2%{p0$CfUEm2TXs_+4drD$e-iqG;MBbk8+$o) z!1J8bpS7_J3HVtMpAndS;T_zjHjGGJJT-LRBaS^f^Qsh+^}2Y#b>J~P%F#wTpnMO< zV75oBYnm>Ps$XH9{S|xdRE3s6>!FW=NThmxM6`P{|DOWU z(6TEpZK`Z!DqaU0HRmGUdAN>ZY*3m`V%5CdBz~yyu8tvZy&oi%mPD*05*!F{vB_s| ztZKC(kA@Z@x4ihHkG(W@9BH;Qy|xB(c^WuoN0MyYctE90L=tMuQ4npZkuK0R`rSlF zXyrFY_p{o?#m}7dZ0R09-@%%X3rIVmaRm%Kdpb+iv%W8xyUkr`Ho!GHTS2ni^`KIk z?Gr?_S$Ea=(=!Xed2T+vOO^n+fV?eKwrm}J6WLD10X<0D7LXe*;wWXj0mWZyWUXw0_|meo9PrX8j3raC zuwB=q>eiFA4SnbhE1E%*g#OqAkK~~`vIxcY`bYOkHPtm5S2yuExcU6zSYDs?JpHHc zY#7Hmt!pSR`*vR9(aN3U@7cNp>BsGmQRiT#wd@Z*25)M^tk|xF?NCu{uOMx_&uq2& z+i5JA9u0n}5Pp1$V)d)jp?K-eXt;L-ExCF#i>BjZxTS}bmjY28)L}Zq1_od8CX;U` zz7!}fJpRTM98xb)bKk6eO-2_)et&n<`SlR1q6l;uWFZ}DktkUh)m5(QUKaC8Xm#IN z?@rj&WP?*0J63QNAWpUa?@Vi_yV-Qyf(Cln%f9?<5tH!(qyP?mv!5nwVUEt_E#`d$ zIQObkLETSv5uvM_v~V}NSyxeEIzp=W>j{gJ`$5g2MIu=?iABc$oVu z$s0FpWp#p_AEzFn00SJNl=l?nRO%*}=jsT?R2moMR9Md?*YQhV>NBkmm26Mqjvbr^ zuXm%0=T21N6QPv5iS$(Hw=bDA))9|KL!_drr)dEI4g!_0)JYu+5{}>^SCo~8IJ&p9 z`wA$iG>JAoI)DhParQA~-+=j%M{*kKN{NtAqaBT@W?NLHQxieI`}CcP2$-WhbW#-; zS1q{SOu^BDBGaUJIODeG3Ia%-0&e3_x2ZS#M_Aw)IG(aBfp+-t7dq086Rm^}m9y}G zM0;)Ede$%WuBhMkIx|uv>OPHw?8Wu{I*qcep9GP?_G*n99=`woWO+dfc^viXp3b^? zDG#zXA_77II9+xrw*_nG<85sK;tsw#uK^wb)o!`WT3xYqAO#J?TYu;m_##$IIhFrB}1C=(+fy9B`>YRZdokP9d!H!-Hg{24lB?lzRR$fV~f+bhq$xbufX_ljv9S)tJy zon24itmF?otPfOuN{PlKo2G+C>u;^@2V9f-CG&rXy)57hIL5r4jPU5rMc}3n^naY# zT=~UB5^J#Zm8Yt={ zMKVJXr>81}xS?S*J?5}6?&nXdPvxm{1z_}~wdd6|GfBWPNYw_C`-z1*RfA>B^>C`? zNmk-Y33&)oMg$NCMUc!-98>~rX|U_2=iZ_|8jN*>B1>~TFW%g(rmIfUMWm~z;Ldhv z_Nq0S1ghn!1PgwIJ`jJjwnbB@&zXdk*AuM@;T924}TQkpw$>gadCT(w*EXly1rR!B>oIn@B@ux@Z0) zohc49FVB-;2St$+`TUouUR(6q-Peml2;f^y@ITcBK8!W@9_d}f&3wP0!Jf9iO=zu` z*&l%Ne110jI3vs_(*H(NVd9XfZ~uvQ02(uS2UotY^Wg@?LDEB`Vw>K5xy}9RFs`74 z=>}?j-@Q+O7Qe~FV`0;xaRe7$WfL*3s9XPlF}PPNZY=t~>fm=7CrBKZ>VGp;#q;^g zfhD9Oa1S)&5ce3u3*O1#&awl}4BW!Kr7trNa5PlXocDYb~PN<6L?}2Qpm4)1} zxAUP4E}tEr2u9u~r-I$OIluE7NF;`3d1^IzQlR3_Zf~+m(f+I2a;oi-dOMbGE@X zn&w021BFJ|nIyC-rwi%nQ~;`C5h+N#@e_?TCV%?3aT#4`9i?YJsT9$e357x6 zVI>7lV4q`I7zkYzNn8gq980!mJ2avyYCiR6DPBYy-~_327bp9@bB%~73*_N^8-1zj z_BDPkm!PkyDtBSfS$rRQ#K%fQntPk)N)jP%$Lu1z^UqoZ(^$xa$$I^ZoOmR_0^KxJ z{Cl-Q>Z#n2-?!qE0Vkk$IjTx!~2! zVc<3}yd?;O|MsSJn_l*T1SVT9H~0Zbz*YfBGq+c`tA>A75ky;a4(;QJE^{*~4QMyR zAHm5n%fFeW!~s&NQTT$gmETQ;irPZcwC$Zl+|3WM&q^fGLI8;@7jXQ?%5pH9KL+TW zg{I9K_2N-~JTXJkc$GcZr17ItZqD#zdRutfElesz6=QZTdo7+jqjK5g{}_VACkw`W zk)0HTI0(m&%pOKBZ!`p4sZd5?^8M-StY-GXH?=ihgS@(k(Gyl=KFQ(5I?l?78WA5A z1hDy(`o-G^TLY!X*GZmWr;e3V!1NQ4*R&=Dy)QmlyI$UAHw-RJwD^2(cs`hni~MqL z*ZD{zW1FjQS*&pDfiBQk_t+Oin|31g|8#N()nhQ9tmqFkPj9UCx)ceu(b;m&TqV4> zgjs{Lj{~KAr$1d36RVG{#-q)8XoNj#Qlm)6GJxYJnMbQX=L|#oDK@QnB$ULyjen_#` z0}r{(ACwTsI4Yd_?am};BRFhzBLgiNSR#-*jssrm8Rby1k#$1HWhlDbNZXTvUb4>; zjBx5ZW3IH_A^3suE)cHT*@>VeFp`~}>S~9eEfU0W37p}(JL+Q^42^FAc7TaH6St#g9s8GrvE%c{MQ=BNuD-reA;NjC6+1_JLS|5R2977}L(d zlQZ-3TX$lH@^6EE1j)d9VK0tKuPgGyrlxHd-k#ETW7-E6Az!6Hk>gSnRyd1=Ry-U2 zXTsABdLmVQ-Alk`2~I%fRsPcZy!@Q%NzZ{g74LH9=JFe+Z4T3+9aXXrqpfyS)uW+cY0;xu>ncTj7 z_58W1ljpa2Kg#lSDC@o*Bl5Vdh2Lan4h8~aRMqQO(jYT7;UbNBK3DzO?R~cE^@U$3 z$yMu$6V|K>@P%mDq#b#ABVVvYXM$c9?MOu^==J5ExM8-1%t+OriH60Az&CIuvJ5Ht zZ!kxj^z3&A>n^%hwW7)qk}_-9(R(vFjwL24k;2G%wW-BT=0X{Chdo3V3_ub1_@c>c z4o>TyHEEoIOCb!-b8^1nffcrdf%}?5{|3!;oelw^tnQ<%-^Ul6E2?9F(`?9e{}e`Z zv&5B!%wi9j$^hP@xL`2kF<9xE+f`jfR9awyvj$@rQ#oQOq zJ+3IXt8;?xNAMx|CMgjebQ(!ecZ5k1x!>UZVW)p+t2Ly4B7h|>=Rx6Y*^uOk!zE>Tb$%M7C0EG{2K^usk!Qso)(eY3JUVW1sq5?L_iN2D zaJJ^Yrff2&*Fo}`RyCDioirK%*V{_&k>rW0YQHrLMs;r!^mYJ$J=$cFx)_?#i=wAu z&C;@NamitaAC$VyT}r;Ai&0P&(qetjg2~e$P=UH5o#HkhoE4^kQ*ZgPDVeY1`EV(1eQZg>KS82rv_mYBoC0B&O#L$g%3kr_Mn zXrZ=mmcUqADB}oqW!=|a`luaf8_EJ?EhnGOhQ2yroO~83Ttj1%LMmFs!S@tM&B`L0 zB4T9}3`aXMF=SG-800q98cxkXz&n!xJ>3sOBambV-fccTu_Ki(?_>o_PrP}M1u+eb zSUr7%XK8FnUpo?sVD@=Bu$u5To)oh0Te}cS%46{Zm?4GxHK z?9cRiKaoAYZ>BPHy|m7LO33CiRgWT^ny19=nrSbio)noWaA6p75sqwaQf^d5Pf2vG z{^#$BIkh}1F|aS>4(6h{BS;Qs4gFa7ZDTA+eyhssa7HZC{Bqzx9Zoc|W@>sx{@gc@ zDj&$+)%ifHKKRvPJOtnIb|Cu|Pah%L9N=Rvk&1j4ErP|rz=@H8mGZCYK9OULL(YRfA0+zb|Yxo9;yb!1a|aqH1+ zN7X1w5xkF#KfGWA?6$`A(Uj=+o6WNrCkSg&zkd-Ds8acJ^;?t?uw>{fWSa>>rH=82 z;*3-Win4GgoE%&!C=WT8!v<2zLuxK(_}aRTb1P702TY*(j{dqQ1g`cQFGJdNJ3x&m zXo4LlR~tu@tdWZWAH{aEX=n)n(tX8k0l|4&rGRXJUNj@Nh#=SLNkh_!;P#w819~yl z>iEcWof^hlJz5X($in$Z2bF6G-xMTAlABbn-;9BIzZIlndZ#2kb}6#cpY<)dM9&}R zjt@nEhM5Z6{oP|H^1Nu4dWb>UPo2)q!P-NcxMPb&VNVr} zJC~di(4@V0mPA~|(0zQv(yO~AS7WKBWAoRo@?(Bm-|=%Uf;Y~caUZ#|YN6%fJQko^ zBbZ3!trg|=GMsht&+Zk5`0?VU&a0;D84YX;oQ@&sqs zlJ3!PgL6)ewH|Ehi^9tL1&;Dgiy?$84Q_0H(Dza-7M9=-@Jtif!;FmNn&mM{f_u1M zX5|W8rzX9!TJbL2Wfyo`^{(q7#$xBz-W`ss8gFD)EJu!|Ho5#-GXLFG^l$7pE*krGGU z;qKfkXG6wE$l}b(z)r74pKD2KECe)Q^EL=7>SAmQkn^DwK=tuHW0U&llWnJR3bP~A zQRM0mwaD)OhwlWva>1`o2S7+{8y?#`0s_9~q16!Ku3BaluHhscC!L&piS`cq2eu-e zDrTSoNAV(O&Sb+FO!pymZ4^cXxT~n2PI`AaC*0)QMWx`j`<1o0N-?EiM{J69$%-M zQPtk7=bKS<5Jb1gxLDHzso4+?3$XxAw^G_Dv9OY31j%&^n4&~yZ29-7uCN8eGWjeR z9YQVy$~H!xP+k1?-*(nt;2+CJ3zn#xkwV64ZQf-81|!fwnzFdoPV_r?y_nE$`x#Ei zBVoS(_X!_hI!fZ8#fh$mDy#)woKA)Z0A4IP{hkkn-WyTke`cS;k0~*PZ9vcUUC_XJ z$Pf$p67V6Fa8fX;byx@4~Myxnry(Z}7ix z-D;9 zjo5np9SQRU>s;R7 zUIsH@#zj029~~

                {91|{aQAz?{4VkPM`+$aw3>YHmyuCE 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

                XuWbtEV2NOC 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

                Mq@ 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±=JPik?iPRCKk*1u* zfBvzCdqG?->UUHku>GtFPgn!}XSGg(t5FCD9SNO)-+k~M3LtL#Z2hCxI!X#5;L0v^R zW?6xF@qmBy50(ljp9+(n46H?AnV(~e6eB2PET)V$S@0~gMIMd!;j<)(*BEjCFtaN3 z`2|3Mi;~~}Ir;S6>mm#YC2&KP<@|?!Dfi3y8(}F2?Yxq@JLGeW^0(F#wn~n%e>MET zg(n&GWEZW3lVDMGDPt1jm|Q%-wH?`6M4*aMggIws&V%Y-;XlCpB+rCyk~3FmpHeUd zDr^`zrUhJZSHuA18k&VR>1~ZM(28!jKty0%fHIc;wzUOhB`+-o5$Wy2a*4yC3_=UA zq0fX%mZcfPq+%pjwZPw{eDO{j!(`aUI@@0@YCYA_+7Me(O;%?b;}m#t(yCV)axhSe zZ~g|mMyl&@4PcvEy5L^wmJ}yWH^E;1R(C$q6}JW74mD~SVFf?&txxw6@b6J~4{mS_ zR8gxDW~f**2~i9ol#nfIwar8_i63wM93%o))OAf(dHAv z>NmJMdNE=Fv{KSCl%pDiib8{>95)bQ_huF>PWf8kAVod^h=>z_EXUx6mw~znAEv~U zIR3sVXB@43m}!ooP;o36)3o%!1-8(0JO#I#tS{CH6etVbie3Wcsvo=z9MD%bOS+K3 z-vtPWFqOKNs(TSjBsO+U7$hlG))10vn0k0VL?M2gkpX0Nr1#5CL33Xu3B7xkm$Zbj zC$IpeV(hvp`4lUV=;|<3DOd)A2!V&tT@70miCB>ehj)bR5~_)q{$J90=q~7Vh}J5@ zdRDNnx*v@S$u=w2(CY2pFlyC~kMg5NGhQG)JuqVE2AqNeXGm`e*Rt*9P2m!9BeY3U zrgT(w&_RtR;A-Vd>L^ZFF0dfI`%3|e$g^FLS zR2NtgFJdvjhsCMrx`4fmd9EpD$ZVrDhAfc6a}79*;WJjy0WBbjqr^Siyv~OY*gU0n zJj;%CX;~f!WLloB6xHp(-6p)f5-4Jd&IH9Ku^qB#4Tg=C4R#g%nwV}NQhcD0OIB^- zOjCme=LaCgZHp^MDNL(b=GZ!ivtC$yO>0VieT~jJ(7OQ^Hv8#F$AOVU7005 zSIkv=0eR&CB>GzmeB(<)Muz1I2vKlj7f&sFqT1o3amB&w7o9eha;27T<=Odwc4ZyU?n6Gq6UL9kXA2_X zA?oXSmMe8B|58(t4uL~bJ~=wy2f_jOkk-Hq{VghIh4UCF@L=PD3?7P&s6~gAL$;Kb z+LX^CL(F-AhG6SssWQ3<5v;~_lIXBHJwO6UHXLF|nRY}V9!XmjAXZw7?o`T)7s0B4 zDNBzjgw-PaO54GAbHctH;*sQ>l+zat@0ANuETBeEgKu_kfTn4(CxL2rbgpH7&F;md znwe8>yuu!=D)s=O#kRO;4ZD^j{PmYJoZt)r@ft!$I<(ryBspTkdZoc#MR3RdMeBhM zfEr*DWI!dULZNmo79t*oSk;wi8{S3QH;@GsDcwyyy{w4-Fx?rzBpjg+xWD2CA)aAE zJVS!O@U{lN51X~d1FsC4k2yue2;P#jLO}s7R3esQQzOJJKSp5__)|#PgB&Z|u8h`_ z;up1fMb$kBDOYnrqO=W}jq);FzJMN*iG!a6nVXh83f4>_#{*#xJ0mb9JQv>p6W|(MCNp(xvB2Olw$kasYdlK(Hau-F=lNQZdi*nNeVJ~Y5f>X)dKu#0Xpu27A3DVbS zvheDJV08Ok=}vzhd)A!CM78O&0vNo%ghP4>?Skc^CESyDFXKaZa6IA0sC$kZTGFP^ zs^A?ar_G~hmw+CDJp#SXvo+TTIG3tJ*YydAeh&ng-M5%r%7@{#JzK<0DbPs11BP5V zL-N5tVI9d0ly(rwK5N2$cg~K|XLgpAbx$Td+6}`&wk9^S4!>)BlzMOn*PXjKy&Nto zFb55r36$J{W^8spQ$XN(AiDF@%a}pD>22P%tXWG*x`CHSG^U5!?k&U@iE;oBMvc4B zo!kZN;;IIHwEwuaC{(HCJ* zY88%wU53581HKOS?u&NJm-5W*y(__nq{ne3#8#(;sBHrDGB9WXI2X#OiCeDkVNlV5 zX|0n-78pR zF5zdi7gP7Em{{2ho(Ze4MDv+2T#?j(bFh>#_OISW`Pyf-(I?Lw)=y*)I#vH8aR^;# zg1W*4tYjrdX?v2#KZ|qI^HNB$Z1?uL@1dn&s*4JnF7Iu)?~Ct%1vPXLzGyfJy2zu% zNZg6*zwv1Z*f6*Jkx7|9!>M%;NS_}O@4^7X&LX*;uWo{mu0b5Y(G$rSq|n@Is(73wHJfLe86h{W@&9g{ z!AmvWAYEEqy|96+03Pq>v};|LwRZy{HkG}}zYZyR%RsL!;n-QX_kjDF#TUlnDQGAi zWYaXVjj^~%*F*{t(fh<-(DwTYJ|5|Vh*QYk<+X$+xfGevxm zA%P7@pp>{NWbhX_Z(w)Fw*sC{UIdoqHCqmcmssf`vtzOZ1=@R)yI;ekUbaYffLTH| zXXGsdEe#1!7OMxc(2~L3(o(&UkPDf)!}XW)<-x@s#V}E@DL%PDSWx0aZrBYb4I!CE z3y#xD(_{jXn0Ay2NWB_2M^Spe3|V;ZsC!dy@I0M*23&F#I?-AU+eIk)iHoKdtE3IYZj8lcjdszcTxZ;%@p!ZaLG z^PARu+A`t3hgdDW6|=3e&TX8V?sfTeutF>=Gg)gyubV6v1m$6qlegLNIy-*Qj)(1- zE)lr3_az)!o0S^bRe^Art&mSS_5c`&QJM}4>>0$SncOy za<$cGXq}Se+;Dk4mUttuO-(p8_)5`FK_*Wf%*&qWuIXk{xKknOihrV8FkU-oeZo%HsMUnGbLoWgLLE z0>Mc-4UEXzU8&-pu)GMu!xA%@h+3xDCg`rF6)m&I)HMGhkNPA>n6`cHCA10j2>l9b zL1mkjAb{@EieK~_7sQ+8onynj#q(krKo)2WG@xmBMIn1NEQV&L3$UtpvOiedpk5(x zb+;EYfG#2CP&{i(#j{rS*eXevV3GG8at~p`2X+`vhM7dwJSJNwavL4PKEkVUO<+Y* zwue!a+5~uN#4dHuQ$9O;sq|R$qA#r34Y@S!Wixsn(9p=cYK`mYh7z4H$uhN>`7J|c%qIi*7gn5o`+2ZbV@0X4CtPM@u4qfUosTY z;N|V^8NDo~4p`xjbwVE{&`C*Ts{aN8(d#@VGY{qAFm5fiFw|^+)jb3)Ai;%DABs<= z+O}>ThOokJ%DkAkhhf9smAu152?-M=@D0%(cao%CYv$O4A#)@;M3T_kzyW)tcFw-SjKynT1yxXpdjtkU zhPd;kDHN?-xGm3p_;y>^(mPxij1ygDeP;hEGyWI;sB{u01`Z)uQ);)f(l?_s}MrwzlPS3SjM?MMG zr`9&ZW(be|SkEXQAk%*_+(AAsJepl*q#Xl>w@JoE0J~E*o~c!WJuChQH^y z*ob-pTqh0n?6h_!cI@vQDf<@SnLzDF>l97gW1n?X=BMC%!<-Gce@ ze41&&wohBAoE~EH%i0nzSS#um-*~O^5E4xCDOxe_ZxF)nK2~$HUv}?iBz6JHQ9yGPqjXUeH5uKfY-IOTv~q(&$MevfGcOq-BevcVjea#hgox zV-+`h)IGz<;WlDG!8UEN7HJ94fJ>B!&rV zyn%m-V2%S()yxKIb!7r#D-!k6W)Lu*W`>ZxmpJUIp$bCMLZ%#urt@B+X)&eWnJps41|0#fsVF99vR+tG+z1SN$yZ zfpan$q^ZmRB!@0<@cVdTFd0I(I?XfWKb2k$s~m6nOja$wpX+3Q!%91gt{zIju4YG2 zoo--`BJcGLo)!kd_{Gq)v6&39$8tBiy1F8t!NJMDL47P{li}IrUXtjtFHa~kbrp`Bt;BbMYw?uqxqndY{loN{Is&4$gc`#)5HD}Y&lmz zwit5a8NhuhW_^@+O?1qkXl%u~BnxNd`)L1#*qYh9!&YnJ|0BJT0rnh-RZ2D#qK-r_ zA@^lAai9Drboit0Rd6Fi46XpL%AQZ69OO{oVi@`q5I<)(voo0Ad|xe?)VAl9 zv@-Aaz#GiYxqIZ&7HaAy4aW8-OvQLrhH(lQ4pXovJB_)K?;LEbv>fTtIjX4&1aEM! z!IaZ)m~z%8NPs_GpuaH-A{pelLw-00g1=^>OcKIQ2}Fdh*KsCf2NX?9668jD^kxe0 zrtsrf_Rc7|Ai=YIxX$)FK`qROP!D>gHbzDr&ypshyjswbI;#uU?ny1?YP!-W7OSgUY6>G?!!4S4zvh63%9o;UFYkugrw;- zYXq-zv=dhs?f`vuH>B<+U<@2XpD1|I56Z>s>do%Uh>w7~)KnDAgb>dro&rTuCT1Ol z4urh1ojXdnQ$>c z%JeZI_(x{!;Dd_1TV#nA^1PzFnQ=6t!g^eoa6jZ>!%MJgj2fQSe1#O(Ny*$*_cnL6 z-xIi7R8F>cNDPCDCbS|g_D0~p3Xev)nhyElOATFjSMPEUqIn$zzyN>R9WB8i)im*q8I`B;PJ0O`2=5ui##8RU{G*Myn4HPJ;^7+7|9u= zsa4lE7;iN!I*CKd#6s|kVaSfbjx!6P$32H1;FC0sxF2L8jk-_@$gm0UBJ9HxQ5fHB z`i@cVT6|(YEn&A>RAK+@$v;+B+ej;JMnFO{Rsl(5ejS-mv6?9Bxcmt|Yt6V}A#}Mz zc%>tE00yCr{-=;1T{D!%3^Sa*rq&_rzi> z`<+WXe&`@d`AUP3YF-yIrt-=$0`v($j$ z1?KF~X7`#nM(7Cu1EE1nEE-fbliE8pPdbWckVUSE3!P;WdW||nyEl5{I`6U8|HaGcC3qAyWEd`KANJU6EK3b)hc;7YDCFjAXF_GXrr33mG#v?^m&#+ zxFQBK&PKK(=m`vx&6?gtt+#sOlcjkvV*gFDFXoJ=gMs-2T} z2&kets9!kF%W>cp#QTN8Y>uX(t=GLWxo&@q#maN&5C?> zP?45t7!Vli?%*hT2kiccZU&|(1?ZBt&+Mo$d}~ zn%JyG&gcao2-0WMMjq&m@TEu)`Y`97M^hx$lflJSFaWBAW9gl(P2tQ5BzoNKZZYX3g>Lkfc1qBd!a+rpYiY1yh;ZKn`?9ibipL_<~~ut<|eG)mR| z!rmq=A{f7{8bgYnSHNQA|~fF(>L5eOXDds{p2HBk#y!UlT} zWDzIh>^R{forN;d%46j`hT~+o`~>=$pK3T*S_KOl9uZfjD%mBIZV<2tQtCgbdf|aE zFM*jfJWWILAsnWZ<#4Wqtb+&Gz?XtXr308A$FHRG`uTdjhEi2gk3gJQ^&;Iz!Imy_K(>ojXupckD$ow=h)txx{{`TwtUJQ(BowXZoY1-lEH|S*go@WQpf~%q&STr(aq`T5@P@I#^`F-C6A{xQDT8 zsxjjW9>YPG6iZLn^7GgYu?NQ<_Q(=`M~{KSDy@>SR|b?p+tX{_Pond98O~5}DPBrg zo5xYF*;zkBV8ahb2HhdI+$SxoT)KdJ$+uu#t|a~&Mg%}chGy&m4>m&DgsaGQJn^wD zaD^k@o4C+Q$f0PdGh`EI9F*8H{ct(mB7@`u)gtJpzg=vGTSN?!B%h;?FxK+kYfG7@yLRNjb)-D-O7uQFb>Jb%oH-&)8N762sixd3r5*LTHB{9xTMGSZXgQD>%fh)aY zJI?&X7BGgwovM)jMRGu}Wz}6V<8D_R0OXsHFfh0azZ2NKo>%1~Sp4CSsE zbzkEO<~c~`732nkL~8kJtd{-8CAc6gM{W-&UVb4!qUNv-W@otT@`YyHmr>vz5NH9m zyf^Q69MfxaQ1ukgA~__OT1tL)!h_T-VtkHG-KeGq&cp;hoa{x_3n=}yw z6iZ4l7H;=AnH`5edBKL`q<`ES0Ht>9I{|xf+_UG=yYTYjzBR7QiA3ZvIRBgchy3B> z5~Q#71mLU>pQ4qwvVz+93n4^l2=zgH%KW9uzQOn*9PvKIB-<$oj}6~NUb4jRL#06J z`7D$L4+Wm+3p?!H0iM;SSN+w|E zal6ro+hul4?Kr&v(mU=6Xn#AeSZZ=rN$X_0ovpSsj^F}#L3LEE6l)4uj{V>$?wLN3 zP#diuZHF)JMH2|A&HKXya;xT%SZnnUd~ZY{`wehf6n*|Pr9o;aW;afrY@Uu>M<^(6 zpM%mX+hR<P@K1GD`Zhv;rb!)_3VmRksGAbdPr#!zz$AubTL6|$3I?}^|~hELlu z6U%Vif783K)+(F9jl7N_6mFb3&1(bIDL|%`UZ39W!&wOg1Oljs*m&BaGyqn1+c=95 zEoo9kRCHcNa8v}z1kws*gR}V7q-YxI5j{gPs(i@K;Ovs_uqpXx0`dqse+d!MEK2$C zellzuUn>Ub8)*Mfb4vocjs}6BEH8A4n~sHJU>{b zWPUiUMd;6xKQTO+T)dF@#Uv~c_w{hAg2T4J3W&jxQ5G-8L+eel4oe0RHpXEwEdFv~ zvv%5#a<1WNL}j0tE?TLbfISlg{FcWB3Mb zb!=`I!lf7$VYnH~R`S_ms!AHrZdQ}%!dt=JPBw9BLHab9x4;gfbO`e|Fl*#ZpdGiah| z3uMkPJ%f~2;X{TjY>N|RkZQBJ4qs9T(1tC9cNM>=n=|W_Wv51Ksw(ZOef?mV&MRC%`QKh zV=tnm4Xj48+CqGQ3v9^X9)-z_0ZqfU4FxZCqeOsf6h>uJ=?II-^^ApDnRv`%jHfod zoTa=rWp@cjGknQkvG{1j<|VZ3$MICWzgKB8g)YIitZ|lIz;_IbabwDI!APY!%=ktt z$e8fVINZTA<~<37QDf9D1U7iV-2-ff*P@)!r&vkyZ^^0gq`&F}IPA?{kRyZ$-jVb^tXAy~vx4 z+a_}eYQfqh>?M-G**4t0!;rTDWQ}zuj*50;o~CJwe&>S7Qm|tx!^P9XtjD6+GX5sX z2SE3mV2uV@8(qwZbfWdBmB<4!C+;MW%pOQ(Fmjo@=fjMf)ru0rK$(p;oM|g?sfAbK zZrdGT2qfAnT2Ul6e)1y~?rtafAt*-n3))!2zq3m@Vqnl}Y@fqc$aET&F}Y}7Bq1qP za3;X3*|I{=W1%5EaXeq3_&h>^dsPF)e{J|_CxRt*S^;A+mSW9Op2BqXqU2|I-sdt_I0ak!j8d?Giz%n)@PBYl`aq2lNDKLhnEq| z*t3?OrXcC5cH@)wBr$nh54z>3*OR~J1# zh7>)s0G4?k_s1VFOVBI{!&(8h3`B*b*hq(&vTC{+OBeH8S*&kgsQbnGZ`kqcet}J8 zo)1qzJXxYiJ}9=7Heyaws#6$e49FM=^C>(v;Qu_!K`u-Y_H*S5fPEs@`}*WVkS(#$ z3e?~1Cv$ZM97d^-&TShp*xQ>aNl>+3`kHv*hkOIHZ5#<6L~F*}afv1P}&G4!aN#|@+7*3yMtiO0CLbiDiP zj~`o8&aZm%L%-sgLAyS+=5Fr-dfMm1OQ}1KfuhcihOl2IhbTt}nr}nXLe=Cl!7c@D z#<&4WYxEXfY>N*6l%+FRsuiP=rF(h`OkyzMT~gj;>7RN$k-&X;7yJ+mEt@eD%R$qN z3PTuy^DM8B#TQpxYAOHLr;|K&l>}3J8V(I0Vm3+DgPj z@XERI(+^?7%l=FnA)%l+x&MLpWk6*SQ55b<5N8xC_2JfVXtASJt2^(@dnemtUHZO| z3|Vyq;T&g`d~CG6E;`5Z8yy8rvc~M}Y4=R2!9$_GsYj}GbV|v8Ox-o;A3$>Kj3iUZ zjq!_o94tfWNXxQ{mI2|8Gc)WOxUs`fpV@WYXj2pabs(9}!v7*J24Lc*3xJwwL8VKZczfb6rL58eVsQu)h@e*%9Pz1-U zE=eB5GVA6TH}6AiWLz2$zw8L+1JJVug{DPjDG zCEMxZYp4DC(P_VacG|Byp)9NK-FMorhfe#&Mh$D8j5{=R>U;6Dd#^F1fEi?2|H!#i ze&4Bu!teXa?}y6oC(Ca@U>Xp}0fCV{q;S_DV|3Q~qKU$Vu%oDm&C<~Y6JTzzJVmy@ zSIRQpD8GO5Yu~=h7BHEt%kM|Z?x{hjjr6}~Cfy-|L@Q(nIf>Ii~58H3b(~8tO3rXDrLo( z!3j02Hhh6%5%i=or-VA5MU(VGU_UlA+z=ouP4BW9M@Tl9bRY_c@BuQgocE_kNdHR=+p%L)&zW-Qo-{%=sfoP(AckBsOQgcsf zTSJX<`OVCXV8nV|4){qn~0Kwztdgdjx{$7H?H~hZH)4R_l+=B_aG$W227-quNKmz{VLs zNSMwi!nVlhX9*FoMA%R}Bnu?KkV8!PqC*9t9{2T2g47)dF35t$VG$QiC+CZMv|j)% zty+?q*AR{86-tQThpz#17bub6oU)QYAIq~FFkY&M-4 z_aKsg=gp)2L}{O7Ws!Fjl^KJE*_)0L9b_G2Y*3{EJdeW`wY8#9dm8;)^m|Nrfqa5! zuOw|XvZHj#lDp6eW8zUQ)#_^Iqf0f8)i4En*#s4abfN{}`q{AAase%MWat=%JM^-^ zK0>PaQPv(o;^ySpqHbV|HW990a}U9usUuq8%l^=kMAX!d_^M}a$4%}vvmP3AX?%kz z+T{4aN*8x!NL9;`Kgg&WE_O7{b^_26K(U3Jefrv#$7?{#4q z5lqFEPNB9^WyQc_+r7qZK^SQ;VUsa*;I{VN0~$?W4*k;?PWY&W;+VO|FJqL|CG@^v zZZ#0RR0WomPpvfr*Q=}Y%;G=bg3}&qr#uuht%Uu* z!k%K8`=NFg1HHd(zkXi+fsQ&5xa$2#!&glKb=!;C1DfL+$y<6e9fEJWRwMs7tqs897O@+^LWeC(GE|&43 z)t7?5qS{cm zi++7iYIh*%_451e^19-^b^Q*1ox7_hNY-*x&M13gi@4n)IHB-X%qLvvNiQ{UA&g^+Wld|J;+)R5tq1!y_9vq6DR!!SrlFY zgkHl_f`q&>!Bjz3`1<8z(3BqFjZ8b5Jdb}S@FX|$>`2Z_FhLL?A*5c2%p%!DA~`6H zWpF1cn(SYIIWh)Q zj0-aF_!0$uk6bkDCx${=b<*5He7RmU{1&b(HkD35D>Lciu zPzcDIuJg>edHpG88^H&f4I$Az#BDud=`)3{5P)njX8YVrT$CF9Y4jx%f+0%`1@~q>dgD6|JJX+sU4@+`!_v( zdii?ym#_TltE+Xr_glaE{^`&2D{)f}=4Y$(xc&4L@RxHEnUuQ^6!@uVG$`jBIMXafcDXKVH1NRi}g+b+#w|GE~h5L?v z;~7)~Q7pnYe|K;+k^tp+1cy`>)9ON+F0vWei=A8IB@U`<{MR7w75=bLrw-;l4jOp_=HKp*Z&TV~JC;lp};nhuR`B z{|n$jeY;l%XY@4u_Io@H+TrQI({zGw_XD2RrIbrFo^SVRd8yzM4W2LR?zOT^XryeL zh{g=fL^3CSv^^2V`|wVOgv_}iG3NZOS*YbC!`iGFdx#5+&?;I$+%4~#=*zD&=5Wp1 zvbDyiL8Q>@jcoskI0QPR%Mh=!AQyTkGLivt??7RR-(y5%C3-2KqNTt|? z8GP>v#V;?F?TqinqbUnuT2@Qf+3K&d{0>xFp}lyJ zT5ojjo?a0yw$EpJI>aPeW#ubxo%S2enTciZeK%fBU3i2DQECxo|J(n;w+bBTCSu3m z&nI#SbDQ?3b1b|)?(GV^tD3Nd4|=vS)1$y-Y&w!2MJ>f`i58m{SV1uU@8~xReUmM8 z_8f_?C-yq>@_Js!b&2)9(bhYAV|Sj=df!APklS&dGOSQ+v}Io*H5cWw>^Iu7uehJb z-xC{c*~7x3Ch?XQY zY{L~FoDaGxggOtVzo&CG)m7otdBnwgJ6F|L>+C#UzxU~CgD2X%xvEagxA9mj4rxdk zIm6(;en|CTWoZE~aH8ZRdCsd+(G(SO9)|DjWy7KQ*DAI!p?TLlXsZfo{{9KoN zfD)~$d9TZHSkO1QudUn&cEd(yK6H^fqw_{;H*9d`i5h!w2WY9DI+?#mO#mhRTq77Rh z1r6xKJRqsU?DiRiYV{R6gZiKGcRIeNj0Cman!mCwA`@)Ck-7)l_^iar3cP^gZ3>}3 zt1seYQ2wo6TWwKb_<|i@wBz^e_yaqhwBs9g3}G?7(=VlH zeu&L~jxCb;JAJryW%aMqvq&1_aW5j(d;hI+A1XoI;pyYCTCUDIosZrAJ-Xf0!XwGf z4+mGJ9yNx2OtGlm&F3CDfYI@HfT*ISZV zBCN)zPQTlkS;4)P0n9~6rL@)6%(`8zAwC()T-&->+Zk7oelB2@XHZz_946fRt#zFi zcD`dfI_>PV>h!j*eOBji>Kxzu@60=E-(6*H4Zf_$Dn-9KE8z6!V;#ExUf0j8Yqdqc zYQ_JpN`b*W$jE)fh2&)A1E(q}R;5_QudaBt34f1gMk^0${rc3B4`{&n3vMQUNvJ~t z3gfBNVDV<>NIw2}$pn}dWbleJAF)TFsGt5-H*Pa#uu~%WxYQQ=OWk6;XHAl%KhX~n zmd>p6$a{X<<0*UFpZ;9pezfLFM#O&SzP3AFJx818n-kf1^;qg2TDi`;inW&GV>L@H zUV;~dQQWbTS|V?+yr##*C(I{frx?>WG5esej-XWd1H4V1eZ1hKx}l4{lSxQEFdp-G zYI)gC?_-Y3UZ<^{J2^?y<26kF-`xqSe*&7B2I=8B4ONfL{q4*+ypIgCKs95Z#L7V-#@_+pf?kz3~#ZFoOtBb z^Ltm$J2m9)k@8yNo?N+$9&_dD3oBP%A0I|xx0JK`B&GR zKfLDr$u;LTaMke~I7(O+uf$s&*b&RtIq$$#Srrv(R3zXa%4qEsWhudZQ+CdkpNrez{d} zi0sxT1E*S5XKaFdwf^f$N!>i25n4ps!QfB{*9l-lZo%{YZh*pu9yShDu8lqH(mlM2@J&2)iy`_VzJDF}!%Z%|$+_)p?od`g zmFyOTVoKj)M)WCpdxz^>dR^@8hnOq?=Moyjbsi&h9g91U)g0mdHX@hs42bgrYw(N$ zEg0Q$Amw$e2^Zcs^LDyFadWb1>FGhXzR$F~yBx;O2QSql`k(GF%09AG^DI zl1MO9=JG1GR_ycK!8jS*>$+nKl=4o2O|$LpU?|2w{j^6Bf;F;kF!DOhF^1^gGPy+5 zB|1Zw2)U@b;ySk%c@ynM4`wH1C8iEv(Ef7n)w)qWrc}nli!F~|s4%eV;i{-!qFy4~ zf?o`ic5E$BYw-nl6fG(ALTd>f#(M0fc<YDrxXX@P*IbF`m)Mnwg&gR5A#pQxMvH`Bv`-dZ;yeblNe=Ef z{3>8(utbpngaSsi#NTsr5zY|6#Jre^jyNkMq*3v>45hdWQ!+{eKks^zTMT^j;zElUTk z<`u!hvcIVFJSAW4uDLqCGHtJ5;9wN=3XQtVY6+=gn!8*+gPSycLd#`!C?Pyh)rC=C z_D#L_Y*T-R;DxgvXUo)pdkMm*UDGgv|M}{$T z`962M#Z6ShApT_Rdl28B6@V}$lszT~rOJFZaVqum*{4o{vhsVqdl+{PTubN*OP(oa z!ywl4xxi>u#{3S132JupVG9p7sR9ILINu+LicDL?bG%LJW)ix^N|jxVF{$IHTo72V zK`Iv<@xmHlQo8^NIeTK`>?O}&>no0lYHJlFPfHo4NgJiqj;#6I|d}h160Z zLLzHaBl+X-Ko=CB^n)inPB*?1j z>3EZVfl@Vs)ch&N@Lkm8a>tqvjZ=b`0fQ9w>A|sFT}sn|4xG$%-mDUYrqQ>}e+b*- z(I%r{{qEr*=Cw*j6%}g%(fN_weKVFvj&^(*yn=lhf>Fb3r;_mXjRA!F(>N$^mp{`d%Y9RHRz{m zx+*-|AtD;LSw8Fd2v+s2kBE!z35NB}j&pY2c@84MbGGyq_)Gu5fn<-&bmtgbI? zga?evsLK}6PCFJ#@9{J#{TRV~8!M?AGa`j>MVwki+;@2*fXN^j2;++3TJgBaf~28?;5XxC#AZGSU&U zBfu*BLsnY0O>kBZBcyTJz%8%_-r;Z&V_}Hawe#Cu4{R6Is#&sA*!8-r>09%@Hd* zR&k3;vy?aSUSw@IkYdnAparPA8VU8S=0`b#o*|I6Q4$>0SUoHBiwQA2wPisBB}P`} zO5jjCK=f&i(WFsnMiNKF9`$Df2L{d0F7PIybbUX6^9P=q*GdR*~zdD zWy;C0{saIYWDEidiZYqBq@Z{5dGPh#84{0S6;Y9BVukC&<&7I53)J5 zBU=uQrQnyt<=UgBb`%bX0ayBWE2F|8A+Ib<$AJM37oVl=CB?FE6_y~NY4U}-U zmhQ%t@(Hcd0Ri`pcBMve4dZEA*3TJJkSb|VXn<*QV}hC#{7@Qtp# zTn-yuD2MH&zx)Il#%edXw=-o9pu5z=(#(|x8Kx*rh7sp!0h{l1)+;6!2@1+PIH;Vl z`2cAjgf2*02Xn}=PSlg=85;{`Bg%WL0;W!DhOsQ04bOC1Us3E(jcjek?lcINFBghr zDr2j9#8y?7(;c=$*sLAn`Ie=WZjiC*yLoq`3AQCo4xzGuZQ9Qk-g3k2MZZwr>Gy2D zsLX&Xyz@mqU})g~LWQr1*@f7krpggyQaA-=SnOq2Uu6rJC!IpuJy>Z#49a~b2jtJJ z{A)S;On%?o$x1;1&wecdM%BbL^TN$hPVFJ?mo+RMkqwKsSmTv3o-?t@4~U<@MHM}l z!-3Zx67gY!ZSsB)g~djGG^R{lkR2_tzG#@z(}Q+tv+a7R_F7q)smXZ2D4kedUSj*k zsHAHg$vcIxp`r?4z^s6yEp8cpjQp+g_?Z4d=?|pWEAK^mX{C}STBXj$c5jU{H$?*E z$Pn*_wlTK72zt3o^T&Metz&Fy9ev4}GWzcvfqq~I5uHJ{Cx z2s&%W-F7_7j)Qh=*s*d7kBj{0-rYiecG$&?Z4ojOMxY##wzIBuU@7#ls|n2|UzhTf z!n}B5fJm>Db{iDYep+yl&pCW1`CJ~MYK#)c$&iC`1(+lus^4itpzmMGTllG!G=UBg+27Gth9Q zu$*LT3A6xgGy757W_H$&yX|CBNJU)jn?$SJy) zb%B^cD@g8IX=iNDp7z>Ct8p~OY1u#E(;1P&N_|2$37q(QVamJ0cxAZO8J8VlxSG)d z0TvO;Y5rB;`#*DHKqVd}f)Pq%Sc!8)8(wA;CGGfR?)X%rBtd8&;N3+YxFB#cw9lTy zNJ5d_AJJ;cf#BD`6%9PbVe(4IwO7P+zzZo1Y(UavwwU~nejy>LQ)K~FLP}1lpD;ry zuIu1^6lVJFSH{g&whqO9KA04n3@s#KD+lF7)wix|kH0#YV0#wEbi5U)+u1LdT=FTpoWZUgHV8?hR zh_! z22Un_6HcF=u`v@X!{DwnQffKbjN+IKu%QGLr*bm=$cfaSOe=PL)}LUz`}?vf0~=r$ zNvUWMtFQer1xWdzr2!F1Aq;OFNgV+-&Y|oPtVUVt`3KjaUyNl;;dbhl@UQ}2He+g$ zx++2;PHYv-#Pu4Ot<0>z464}82B(J&(0b8zlB6TUR8XtZwn{Gu93JK_ys@h6rlm-0 z0gd==c8{lU<~w49sdfAon#2R02xP@6GEzKVw#VAF(jI^uIJ2-&qj0D!jdv8L7aazJ zDDU1`AkS_9kPLISx`%|+E?|kLH@Fwj_rqkc_%@rCm*f#~ZZLbA5Uhoyk&3m5d@u}ubGZV=HzM??rYGNnbI6gi25|^)?n@nyK&}lNV>OQrf_VuZ2^R zbNu6T+J3qS_1*dJnF-a~q6HeDx_NUlAUBnzArZs0%$)%z9%iE|ATa|rY5+t7dB zq(XZNy@|kvWahe$ErMNKJgH~dTGF&x`5z4k7WV?eZR{kI8vHI2(rmD@VR)3vEbAuITbwxYE>mjrntlkvwLUc!U{ctv za4A^h#$r8L%^2NeL;12EY{rMAgj70Xq1)du8lBoPS%5Kb-Aq)QMBw#QPo8&-{NxoO z+i$r5RgUIg-$Lga8|A}^;;`=6Ra+W^)W_0mV241BXPg94F)18(%Yt4A0AZxXt} z2R>mlIuZHw!iCf?ru}xDwBvR=w(XcK5X;l^JkbxxWvCMnc$-QQmSrSp0Q}$wq$guH z66wg|ogVDLy?&E+^;$uD8gYHvOuw2Wl-y}(2RX14;+ngfZ^nO9dJn^5!++9Go{*s0 zv?JOr(zLP%0x+nEOj=V-Tf^w;nf`{CGY=2<(P(tcB5qhE{<|r>ZrobA+;yxlLBGf5l$#ymn|DrwI+ zyB?NYvWZ)?mBJajh{S0uP^fFvzJlh3nQ55dlUCEJ*f=$if54KSc0FzPO*%{q6&$Un ziCzR@FKhByq_=}mwbpU$<%|`?T~Ug~FtZS_j!*#K;YR1GA2h*5uMUFb;eYaD4r{>3l%|zQE|Dgz#eZh-=iR$IuZQIaFrd? z6D+?zbe^xna0_Qgy%rRSoMQ4;UDgWoI|$I$r4h9Femw_8Ja|i?~$Zw zyFsH9;zOq>h((^wCsU^au5KT-V|t45c?38)vs!#JR4Hm;tF#ZrdtSc;o#A*1MXGj! z&o5USr%I+VNhjfhtXm=mkzV@x09EcXGS+s@lh(^~&;;?Krhr7m{PYrmw0+B--A|;# z0_}sE(b1wPOtfl5#nAqfluURvB7HmXYng?=dQYSEUe9Y4 zim74RdZ^MXoyF zA+q|KuQaq%5^d>Nn?!xu5ysG@@Kj{;c4D9!+DCYwGW&zkm@f8`5ph&TEZ#9x8mlmb zImF<_mrb`?xUXtMrL>kJet23oT~ewJwd*W5wU8xWHEUPJ4efDvA>eD($66KtkL+6{ z+sY|X0a}{^1-bMv8uc&@vI5DXRNQM=dcuzAaSAtbtGlisNf-YBw&5HjUaQJV#Q%iE z-E8U7kBN0d*(t%y`Fzwdea1S}_&WI5!aWX8#tf{&zSgE{?XmiX?1+JmTIaNj1dLjo zG~Ui@ZD6sLoFBI5(MlQRUV(4qMph=G0UhX~lEw^kyT;{0kC7!@0)sYJh~jn|b8%zB z{r*Ip7PYzx)H7NwJQC`zG3vflat?wuC7i6dMxXn<_OIeXw3u8dH3x2Q1kxJ>Ec)G2 zoY_pD!yr(coL}Gy{M_05l{GKubdu9-KlTf6`%!1+(lqxCzn@{r!~MQB(3PTK+0&cz z*V9|{)_NbQ^oHKQt_)mSBKnRN5Bv`464m*;eVb>L0O>E~Vhw^$_L~qfaRS}sPf_kp zBKuCp%>WbBgOM3Pd8OeTNXMZ?WcDT#LI8`6ECsOG=j<4ka8ZLFb@!5-UV37Q?=$cs zLapdOw3PEo7yAlmxJWdh4&>XYV1xJyro#L;a~$+k)dw+{p~)bbx5yVxXf470|K=#T%lO{==}Z4Zwa9iT`s_;+ktIc7gpRuuU1 z|6NUsu2S8n1QPLhwVfw+%ucaFQ&_mSlg_w+WSB>RApZat=?ln!tKa+@1CSUa#)F+K zItJlC(pXU8MNH(BWF8P4s1z2s+m6wlC$aPF1XGK00#2>d-Ctkhy3=YbyEtEVagIf5 z20B020JBuf&j8;wKFYo%6mvUS#l(1b{#x2SnO_nO&`6-?GJ#yXw5{iJ8K0ee){z-4 zWfPId*|AwXnI1Pf0KjLVA9WCe!dNJGk~}_TyN>7fOZ-**(+&M;jJ4W2JBeeqMZfJ)7}FtaG;En?rWwyy;RTp!vLMt(_q) zG}67ba2wU0-Cy!dPpMWwcN2MOEo0iE|0};BsLizQ9>hGRW(o|@ZO{ZF4g`@B;TZ#c zOVI<6tQ?`SdG&n1kDU}yCHcvqt&&*j;hO>t5ckvMNGeTwhH$ZMYFHeBH`wlaqy+0m1x7iV_H`m;k=L4lgAk`>_QV2p z*VB+S4AVSZ&Rc)^Fc<`Fyy5wyn^}GpJ}UnWk^zfQgErc#$HR3 zsk8?w&O$F~r>sY!nxdilmMjJ>#Sz;>mg99%)RlYS5L9vkf_b(YGkR@_`e|+C2xDuf zeyO#r>z|o;y4u(A(M@EjMl$w2^95x z5L}T?gkhM7eo4nbJjKPO7ljk?hI{zzjH~d{^n7CsI{^llFKHDPc8p#W>5}FFqtzn` zJ2&H;)|m%#r3oz$w3XOe{W~kn;ur$0F2{WjWBifG_9*+Djia#x1S?@CVop1z{f>^I z^qg!%w+z+)f2_R;lqFYr=Nb1#ymcz}RdW zjIBf#8jRIg#u|*5R;ICRV@%T=8q>57CbMORgE8%4+}KBEFqy;A*o;kcXdm0n(3qUx z|GN=cDIu7lXDTc1ix)5A#$CSq?caBW=8Na?jy(`ktwZL8!wN|$cOzW@e0>zni2;tD zq}yU{F5V-8ANY^PvQX#ER^lwnIcmpHk^~VaPt>P~vlybNLL`K0$S>_%M3J!H4a5|& zPCL?VZM(UP?$s?h13_q(MA0j=0*uuZjbfSnG>TmlyZnE4l1NdneVu)GV4Pd-{g=8A zPP@k@pLEYAcmDfFSbMf2QDOWN~7B8t(=LJ`Erzoi`GuTIg@UTG-Dy?gql%#3cTTXSgU_Q zsoCJ4#xh*CLF7EW3q8NP*osPIgSW3V*d#U6sH5wKikP>%Iv!m!RC4*C3 zO7?EXY#z7Y$|szC^l!3+k|)^?fVJwi9#gD)=;e@JDt)^35(-3Q@q=eGz zY{&pB#c10Ozo?kOmD--=rA*qO^yHYVmoQell|pKzU&e>&^F+LqhPhQ6=T!D%8tCmT z?((}$-Uw6qE-`LY)dnFp{WMszRh1HL!;h_dRErfWZ?@8Fd$aE%#ey(kS5RJ%RrdsF z6+W11ie(?RC=J6538v}7;OdLWn&4Y~tn*5iT^~SkqqNP&RBgEH*F|BWq(xAiY3!(& zhuBq9)LpMAljVLJ>XvM`PZhhxHarb{4H=S{9F(0x$MjK%NYiGD z1kzTANmV;lRgmo_mT_Y%9f@|-VUkR4_kJqK=c7oGvhAB}+KG-K4wHk$kS?2936)6q zLRJ=}qMi*~Q2PXeKf2D%r8h>euk(7go$x&i0cHKskBN=B26do zhLZ$JdmOq+9V{y?2u*fr^j8_oA7c201a1#tKZ&Ja5~mf#wJ2^f%6JoHPU%B2dB9O)U;vPCi2EUCNTs2MNoG<2;S}}< zp`hF%cP`0KWC2#TNCBuL5xt(1#S~NkoN=aP4@yi{D^!)b76$QfN`fZ1%Z>~V02%^S zVF(Glp8Z}azzk##RRAGgm|C8|Gvy-!>)!#>3#%PV4!S>a$pCH#y?79>1ay^}Hoveb zf!}WmY8UbTulwm7GWG<>m?3}#$Ux*gvg{E#v4XTBvKg&`{r2VC%AMd|XvqQY4el#L z2Ec){_HtHvx~3%wnoI_A)ySbRU46+kq(t~>&EK}_-I|A=By{qD=o2-NE4=ogq)Yr} z=^@Z&IR9LLzjksB6JQYNao}x4f5vM_q8os8)ZmY01-_O-ivC__{SEH0v2$QS_yYp)o+7*eb}5s9P6o<)37D`Hy@%Y) zdVbCAUllKtO8#46&(f&?Jh=8{!nH^n1bGf`Fw{JSwYa+)lW(zV<${$nRyM3GtU^6Y zI2V1nAr=%PI5@E9yVx8WNfRMFZf2DCX9Zqh#j9DhXmK+miA%J=Q(1ttqLT(Y<8{-RSXf% z6Drwox2}uupfaaS)_K=Q@O@OsULu1WA-H`c-e+;KXQ?W4^{vV-gg#B<2W6EpUQ^$H zq*x1VQT1$7Qq~JbNt@7#KY3K6#8h09jgnT#nme|tNsCtjoWG}k!=`gBi}K}xkeAXc zCjL?cmoU$VE? zE24d0@L|yRYC5bPcZP9y2P=Y`vi1BC>3={}hZ67>>zP6Cvq5iL*|RdSvSQ_!mA~Zd zEyVrk(x(*X!IbtpN;TlI#4>g2dSg+_38`Ys0+;x5HQa9X26L@eP~ej@woyn`|Xl zdMNtaZX3LFBq5io_Tm-<-XBo;Agr0Lc{t+}_Dpe8l=qhCyBKlfbU&`{8S8o`Fr(9q zN-rpTS};WwEHcMXfzuDLnK&O&9pPnt!m&c?N7uz-UT38d_68fS*J%-X6TBEpc;!F= z0!t}~4|au|t<;sAwbb?#aI$wH$rz1DmfV;S#2P}tpz(mWUNT1@@0|G)c%@7!fnFm^Cr54H%hv|G)fsQ z&3#OS46*<10yLWDsAE;+Tmg>+(N7DG;kJ6oCwRI*)?8Y5jkV6pWYRttoe>>X{HrWe zqV#}ADqrg&Y*A(mxgpHvjf{9TIwe`TKus4WP_igA_8O!P;-g)$RU$AU*W8Im*MP%; z(^)j=vQa%I!-QbZN8)y zi!)VAdf{P(ajc8|4tS0uyptrfdMCRB5UU^|W5ewgL-lEz z?Vds7XE*R83wh>eH?rlgdMcs{X=>VB#^|Xuw$rBgXtP>@tOjP+ds!0# zhBenV5*_rGEju4th55LR-34F|@Siq`#+ChE@@wJ0{KuK**+Td4iypfO8#}YW7}M}mOY$$D7$u^T1lR3uHRwhO;(ok>kX6n zL|v_Kn-wa|teVOzw2I3B@8R1C~i za>)HIshk}kmL61;AT~@^EoSND!LwAp1#8#OF>?R8V zGKUxxuoj-=?R9yQH?4dUPjbF+sTqAam5M4%1d3nVT%=BbzpLRt4oWQ|bt+nX)<&Vo zF1R$bUZ~Qna$Mf#Oa3`Ao=m`-lf&FfxGg^lNcR|EqV=ptPl5Coa?m;u;BQW;iLB+2 zGuUU7-#);N`xs6`X)-Xfo_2Gi$!+lm10Qy|ksbIj)NM;1%UTryVup9)>Vwu^wy&m# z@0-Mp9LQ2PL6&GL+2tO-qL?DOpn>9Q$|mCSD48rD1kd&PscfRZnemAW$xG0au~OxB z#SFJ>Zi8YgD7o&oD}7qw$;aSK!>%?4-FTOGu~ehQ2g!|sof#X3)S*Jb;H$w^4jGnN z(BtcuwAplBVhpF;PKKEXnG7KyU>g>=i>i+LAu^E&w8Pq}E^D>jZzVuY9-^{c*ZI9m_A{(mn$qYUSU+ww0H; z8GOJS{PgYrA7Asu7ZpaoUN_Mbc4O3L{GgSyR<^8!>8M8ELK<%3N!#;d$c{}Uc*Hkt z2qd=RU(z7~(IUD!obD5aeG|M6+%36-V#Eq~ihT@mmaQ|mRoeep)cLrKB6io_{H|xX zOY&holZ3bz*)Su&N5TXR04(9b4R^JHHBw(K0xA8)F`B3Yrqx#*?_lSnFxrlChcMX}~4S2M)`k|xW& z5k1wCZlR6VZc87rJ9MrorLA>tBXdhmZIoF2$jQCBF}6B~28g)wFSHS=qIc!D9R>Rt{NtkCm5N zx!=lymEq3g+kRcJ^AI`^ex-h4VRA&0-65B8UqIJQ%9ZnyD9H1rTz!+2%Z5LaT9I-O z@+q>UkRn|p55}HMYSr9iQf_uXQf_uXQf`m?UtG$~u=@4jx!+Ro3b<@C`Bmp0^jEw4 zk#dFHSNzFkAyRx@C=;=<|A5$DB8x`@5jR68FX3shN!wovG#M8Z-)&>^iftoC_+v8~ z#iIY1tAlnfibC`B=b|VCFZu#eC?l$3u~||^RNGJ$*uJ16zuML|qEIawMHCWre?L*k zy6lnSjaR+_QK%NZ>IXj{?6H5#)$JfSAHH(|U8`)ni+}D;BUz^YCzJckw7Unpss0{w zou`VOKbBXd{vPcAXGBCJ-@>K;UpyiKgBN`so1R)$_WvtO!e;KE&Do?lx(n50faNcm zOY~64$`Si%M)Y793bF`lH3n_2t0N{qlqJJbYR5|S2!ji8@V!mxvG#Amj6C7WXrXy6 zVIxCKXxz(isFJ71=N@on1;d*{Lkt~v{UP8ZNJPh$QJ8!Xw26cd;^DU9U@fj^T01%B zBkNO#VhN;x@fcq}6b!EErfjf7R*r5WStj3d5iv0+jV^(iAQq`ssT83X?7>7EkS^#p zIX6ZTG6&kwF+9bz53dNJTBid%vUM&wPD7ImF#1i02uyAu(>?lKkx2TK6)v{^(ri9? zz_?PbF+hV{Vs5VXE7U-Pziavp`VPz(P)J~gwSme?6|NYxSUoNbZYl#>)5Ko%N}Jwdlk@h^D- zo_)&_na41y0r_03Q<}f+P1bK)F>7_WJ@gU+e79Ttjxjy{Va)vxL?6f7WWtvLeiEJ0 zK0r(YTb{F0y%A98g`r1VbIcXJI`6keE$_QjKOoXqP+2Kj!J8O8AEV52Uh{w8Ry`to zSDrqfAW;XShw(Z0fHralT7LP-`E`ZD%*ns)7=J?ODH!sO2}Aq` z<$zH?EvX6j><|-ISysf{r<{G1tSl%@?(dN!;EmPeWDYFIWH8Qce?5rBf!A=-fD#b$ zj6o9iILBoIDjfp7T#cjoQmc?@6lRmnm44N1=XV|D+O_Qj3DH{5!`Z4|DyGFgYX zC7)*-Cw$?7Iv`Jt98RVUF-{_;ho;u2+zyz0`;I6YnwpEiYLJlGJclgbqH_Te=1twF zD;&9>N#4}_x;#yQ#9ndoF1Q zH(Qxnx!203mB~8H%;Ul16G{LoP6)Y1frQQ-MUk2{PF#g_Lo_19L|6-$cF~ zeIUB8#?-eE`bK>-SkPmC4_%MI=kgc%Ah$dNz6|69FXwXSRY5 zVeGF6oo^*aVY=QAj)0!1eOjvkRB@xdcfIX4+9OsDSedN1Q_Nx=@GO7G1)nK$;~Jz&A8i0JqZyXE!_eIT(lqaS{87{A=7BeHwhz zrCv$lX6WL5$lJoYI&z9EG^a!F5v1xf|DOMbP@7kNOqH`6_ls1H@#BZDp4ahC&1!h9 zbdzgY)^b1zgjEngH6Dz<4Y*5iCGsAsr5@ommbRdlwhozgs+i$WFNEU7DX0euh6QE3 z3S|wePT9rXh0D&f^I!~kQJL5pq|@w=%r>DHB4>H4whu^t?FW5|@F6@RQykuuFmcSv z8>~EJWy{K!SXq{bXJf-hAA{PaH~76mAOw~r37QGtFX=^7sO~rJ6bcL9^A_t9z2cee z_kp}#9Y5GOF55IPQchd*&=Sb`@omIhtrUULz{xXIgO>M{u5W>ZmR)}Rhy4^q&7av` zXMT;jN#?jmqpbkVoS(M^ei<(K`~7wPwSE#-BnWBaHe|?UY4jJ+3-qfT<OECT3RRz;`t*lx(ZRH^=39rXIOkn+Ar!|ZMRE&;@^f6$)GHfpy zk4pU-lynH9oyDdCTDX}=Hu(a@+~VHR>texuu`nrTSy-Q zqDER{sn!XY&oHax7ipR@zu8uD4D(p<6J9BtT9)VN9xDf}B#9~(Px#*3>Rl=X7}SFb z@zRxKq!91SblPg|84i7F4rV!q0s>T;ldG`#BvN!IlVlHwK8ax(8Ju-vWI}u!f;dlu zZqQqFmZd1g4Tylzh3E`BC_o+*zh`%kFqaHFMv@SC(YG#x1B%Wa#D$FZ%m(GfcV8yNQ8_*}opJaE1E`<`OUCu{@0=k7> zX4eqnR1%T_KE?Kug3&&a1nqMt&4oVplDqu8sj3$j$c0lo61@umn}fPpr*;WoaW{vC z7NhsD7DudweQHuoMPu6;VKH}*NE9}J*nPNZ?2hFo^Wll7!4W;~)_NI-LZd)}+(U_< z17(*N0Z~`V7OGeH(M@zDf6IvVjVBXXpT?m%B3(GIqcCBw_`d#Rr>WVMEwT}<5meFU z_DrukiFS(@cDP-5cFE6eI%hdD8Oud7bypBqM0cyX8=ol7d>EKkGRI3k|Gay?d~pRP zV^vMon!_eqjlRJTfC*hM2^>1~LW=S=hxN1>{VFOrOd`1oUePedU6*LGnl)|B>PSj@ zj$7HR0k`)g4=2;sDGS0A7^%Qnl3pz&wh~niutQN5umY&0xD8JzI@a#iuH_Y0$wyvr zkDkX=N#`(ui?a)lry;a4wiH*4a+??^>js+Xo$I*g{VnPxsXxQJGPMSIeKf|y_AY6I z*F1qVebHmAaMP_?!!kY80yncT2kd4%bAjWF_b_ff`=Jtj>IFY6A)i0Lp<;C=jMW*H z+fU_e^aVyv>Tu1cF>rcu$JS=-FK0yPQY#tL%t&X(umdt_^bD$e>3Kq@vV}hxR%8Q% z6{@r7D=)a`gY}F@eEy(|tx~-cn@mz=PxLhYg%_(fLgf7v$cLG1TGe9NR^sVp>B=XT z0n*AH(YxA`r_>KcWNl4O9>{nVz{7aAlW|si)s)Ih@ufBr@h0A^Uur9BBJ2WuYxm;g zeX+D3Vz(B<9PETCY*>8thCiM&ezoYs9lbp~zU}Qio~gHqXVLrT?D1N((tF{|Yz#bq zaQ<}o`_~A~@VnN5mdaxE{*flYu+`t(X-uBG3>}6GfUy;=jXZx$Gk9a^aMs3({BUE>9~sR(v(DU)+uYw0eSZ8R3~w!r+%I4;^rQt5WnJTJ zcp!;RX}`k+f1M=U&sSiYr9G4r zBDphiDml+vfS(2U2h&`~zZ0x$kA;ud+jzXi${)4z1L22|PwHyBG;igD+s=2}`B5vw z`Demo!QMppZOkx-FL&DcEmmf4{k|`MS9mbIaC;Lv_V~Z|_HoxT>`n5Wq3G`!JG^e* z=-=SJ;?gS<65%W)=Q*zDxP{|14hn8pf>~3+4zO*6(q9En&V>`nF8xTz)(|%?+~{vf z2;bpsH1P{>D)ggUU4qr)3w+bU+gT|3T`%YqU1b4*9Y~}ey{1E!ss#i$)fo3-kp85T z`i_d7JMw*6_2BX-im^hGX>7%>dHh~5mMho7_rB`aj6pQC_Fu%+!9e_V)xW*!|K7PP{axZpf!J%rqEuDH_#b@@ zA9R^a<<7;5N6$;pEAAQObQM#c6X}-)BK@-9u#9)Wxz!kt+#xGtd6mDDEGa_>*4Ssr zEz^d8WCrEfKS0kUt{Q1Pm7Jo7kVZ6ouiKP@?^XzDZnjXb>G4Au*GkpHO zEYKjPiDWnVAM3c6AEvxInRf$hjkK%KiAlswqz^Zp^{-l++So)7I;AW3Qk0zER)`$@uL^YUInyjgIt#WDR%f1 zrAo4cbJXM8j+UJ(cg4JSlRId0ADQas_jP>v&aF^0yZy0Y9`hG5ihch z%x~w?J2H2m7S8%*l8-I$=6Z3qQZ7%`%GIexxjxk@H>cVt=Q>mU3XKr_>7H%{S*E6oFO2Q6{XI0qkYQU+G-o@kLp8z@yaV-33>;f7xS}p0aXa+4tjq z(+B#NoDrL}fsNX?n>`VX*#DRu;4pGC2LrH}({YdS+-QBXy54ddt>SvCM;vD@dQYX3 zNT`?IBl`nhCutVgNPvM1C0UHwt05r?1)d^vIPU)LJ0z7-`x#!_%cFK>auo{iq;`FB zLx~2pUtUa)17%9ipntg4k>!Q{CbfFf&>b@}Nl`szWrmla7f*Xdf6(IqkMQ*0$cisr z!$Ogrt7uhatS}4zNYXm#NObk+T)a=Z2;HTJbym47J?CGBchwwD$?!b7N|FMd~@I{pW+mAzhH-tLID&k?&VJFQJL3=g z@?U}4le@CH5KPI7!^@yU`58D@P0k=Au#bLE`&%g|+{dujq9N)sB=zD5aMM?waQ*Bv zQE!g58J@oH`tD$-*+1254h{}9iESv%Gp$H6uU&N`(RXS%K=b#q!mwZfp_{ds8EL=` z+s!qsYdIl5?;56L

                  Z)p2KWn2J~2fV=@7Cj%~#gP~HPa(Lu^OyyF7tQCIVuNE91 zZWS$V@_{&d8dolbdCvI;E`?ILo)%`ryuu^`MT%J3o3aisO{NR1-&sFbC{8&5&Na&; znNXlH`{kH-!H@J&)jOpg>VgbApu=Wqrg${1A`{VobT#boGrY9zLeos^RNDGv`EyPWMCi6gN#D_q@(ZXc8@U&|rmA0f zU#{6wo-*iQFSO17A{v!qv!v9E9@WH^rj+PdIbmhX%Br%tKSf{@SbWFY_KDwG@6;OT&9gU7HIrYbAT66o?Mm6^oW&nR@UVj z_Sd{yo^Uq1v()^Jt$>&o*a=Xl6~}t*-ECVf{qPP!K6l~xHR^wZgbQvjUBe~byl9U za=(>ltQ@iOHC7H=d8w5@V&$Nf|J<^V2`k?bZ;s;lyD}2Jr`3V}8;(VX_dHz7tZ{{_ zF%a4>&p7NV!cKb=_beQM9HfCo@QZE)?6^Tcixs1n_`8jByMkVXx@yGvwzxt-tFEge zt{SA*x_+FqAyB6>piY8$aEp*Z#<#d$XE_FH)GFu-%3NjWSkhUyvkqco{s%* z#_pe-e_H|*x| zQXce|6zMCk(z?~MZ*d*@d&jlu>-=loyP%gUPZ zm~iD=Xwoky$-!+t;SxP8SBNr)Xz2;`lS9T@?c~ZKp!2nSzKl;T&MWww;M2DKRHm3B?7KzwBscJl?uMn6O3ab3fXX|qJZt5cmFKOz*~;sz3^@_V zE6@Gx_(mD@p9~)7Z?uwb%EyWJ&sZ7Gg(4U1_fXTtyNsR8p3q%)*!gwvH%DwJPVS}(^4J}?z>YK_I~|Ij zQPUg*l|sqRLy22wF?tjon%M3_vWGANxf#N2$X6P_G9!ht|GCTra|9>ADLkc$(Qgw8 zkB*8I0bg^Q$`SB}%|b6~;VHbM&-aB`F8Xfb5eTeB4t(QFwyrQfY-@>F?}q}nji-rm z+vSARsR|12^XaWwB%PMzUonVcGJCY(3bGy^!)3Va-|LEssk=~PJeudpP`#kth>_30 zz08F&LI&Raig`!yxaPqbFj%)A3)`bms=D+ zs)21Vu-d-wtK5NrgyfyM?&6`yT9)iLVNzd7c7g7R=mZufkP$E+fIhbE4uJVqGET?3 zd!p;eC=Q!<3k33_#VqU~Ky~pBgXy5!4sPHBb_I=DE9&A>c1~0PRuvi`=PN*uHN$w5 z5sGm3F5^3qDFt31bOJ;Eq@R{ffH}XzR(vYkTK}t}T_hN&G5d;f-I{&+SpfowHX|$o z-B@8l$$f3u2e-q(_kja}nP+M=1^8j3tSrxgXjqd!}FqUFzY4If?2(s+4^<^XWxRK6G6sRLaY}VO&q%& ziSrRM0440sV94}NR4ji|fq~=zU6Y%dKvGT2Vg?Ve3qu*dRym?@FZ=+;&OEWgMK3Xl zM2u7)_DHs~#cP1C1Tvw1%j1zlx1omAt#@kLc|ul6f!mVnX}Qcl+=)teM32C}@jT!e z`{_KX%W2jtYi9(7J^WIk9liGjcWu=&`fxk?a`xj`G0XIFgvaUs2m=CV$rd

                  em&VteEZU>mdB9&=AMv*5(-X!3}I*BwOc3t_w5Z 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≧O7?0-Z4M3nb{=f&7y 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 z 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

                  c+Zw$oImM@J~I;ynqfVDSts;-(q@VZpGRp^)R+P` zH*bfFQeUT(Bh+my-pB-8%qA9*Nt7ncJOC4OgL@TfOO$I05O4P&exJ6el5O!C#Ul4d zzneQ#Q~$1t`l;EN?csk(bj1*jw|J1 zvzs&MZs(j!>6UzI!cWY|0gtASD{ruhtPks881$Mg zD>!%hiwFaE`NpjFskoOnUS$1LAu6)kMV4x#Ai`oZ?Yi5y`D-eg?RxHoX&rz@5ozLL zu@$Aa!iabr&+)`a6Q2M-z=6@-eqF;TMq7XWE!}E6RLq?a7e((9|4oLA~E{TiM@G|5v72pX_IXASs)>h z?rB{S3>@Vjb4qDG$hZ7OmS9B;$0n5%>MU96HX)oyx)V0IN=!3!m#QhLiR=l-Jo7l% zhu>DlfKJxdAagoYhprdvVu3RBal#b#lmD{2;1%}IM*C;Q(Ol3Q_^!u?TDM$3aix*7 zi1DJtEzBJZq__puE^72oE68HA4i2vgs&kvdJ5)+uzG!>EU8q zD{kcrXQ3nK09$HW*qVC3U({M4uWEwRTAT9$WI4k8uta_J6`pPNf@K18M<=;UnRGOCa+<~9^Ty>OsXzqBC`i;gIBvksXoZ>4p2z?%EF9HJh1Gs@l6WI425 zKP&S7!R8fV_dD`#T9k*~r@tmMk+Hf`wLG)lm@=#HioMV|>syd}79q5l)M%v3(ncKZ zk?`7_EeS|C(a=bXDX+Hm*(;y@zsP};d-LkZC8?1OM?KFd3cU_Zr_R227@a9{TZ9<|{=ldxl=2@AI%qhNPvO^w@b}l^>8Uf$eGx=-0UVu zlk0!>SHAxr(<;-Tk~Jg!Pkm`5?`F&-SpaHL|E{A*5~f^L;4bmU$dRFTWU(r zhp;=vX1y)D+(S z%kKB3e@$t#-Eggif!+mc0x^giD^*brfgu3|t6F$V<6|8hl+3g4nFoApZ$(MkV$IQ? z{VK%aqTCJ*V8tsri|hjGebBeDmo|`vz_JDpVm!$mS)D9P#+g?xh=_<5LK&0Cdjl)d$T@ZZu684-s5rRx4z+}6F5H3BKA zIRqM3sf$z^mkk19#YDit376GnCn+|OMm)bbl#+4-T9Z=}E}qD0j8i$ZD#f zxSn6MuaEG_V*LXV$p$^dpwk^`5VtOs(F1u=_yeP1 z!`aODid+QB#Dn)hUYb(D0skQ9Tv6oM(muTj>kY15i+uH4Q9t@OT~e;Jrp{}LOLeJ{ zEB5C@oh_<;RI3r<-mU<9;|()U;a@QRZICwBpw0y#2W%@1IVO}f>XHCWdsMd3J(W*_XnNP8!;a-{1oxiii+qpQT9PCYvaf<6MKLFtpI-k zna=?f3fAcB_`NF1Y&F`L<@xs7E^2+3T9644SXK#{0GYBZ|AXOJ>DaYq z<5*C*LLs+wz>Ia)@a-tkMpe-WxluKf7keM`Wsl3j?~z+i)7ycp7GN1BfNo8H(iHY$ z{Xy%xvVeyFU_#?B+=Z+C*tDiw%3G{F9A_1%Hm+1F{$xIRe$nxJPp4zpopu5eB9nR) zFLV_Bx)vociEOGtkW4oy-~gs!8U57^5L^r?7lnpl~Wn0tV3 zZ<{O1@1(o}%JrLgN~gkPtrns>7e*H+R!hhbW92!3WIiw5WaFk{ru+b=&W6iK3jLRVWxoAH-_&=`K#0x|(~0pmTjczjPK=y1ttT`Ekw`6r zh(UHLA^FTmm>79UjoVUk9t$^CY0|QnDguboj()KqQ@E0|=p3gdDJ9!+%A(P!OrD~* zbqlDSzl*%ayNd02k_UhPnSDJ?Dj=^1NR{Zpo2GQ$gXoWeni&Q&@stXgr5B-A@QFG= z&Xy@~;GDv;wre6HVuOh*a$SQ4(pc8#KQ33)(tOG_7S?bqn;!Oeqt`UeKGj3~*2nbq zG*J@-89ha&+R98BPcsCRw2~=t=;T*hnRde^MrYxfz0f!GX&P#o3SrKm=1N={10d!e z_Qc;zcS2T@npSi#kn42o^)k%ir}-xDwoO`&x02VNL=rs?C?<8hQLF>bjRni|&0)tM z`(}QYH-k6@Xe|U6m=zpMA4T!_pKAFC3>zI>P8gc`6W`$9XnmRRXLh*)13C_UZ18Xs4)VIw#41ntkel40}=hvcG~JT@`%+MOnq zGmgt^8`8Uvr|07q4PjPQQqyyT+=FQI_U;5tMT#9>6_Na6Ewzp8-_$U2b9cfV=zF)_ z)3Pb744F!1(i|W@O8gr9*g1VY&6fFpnEMm>IIrs9AD?-Sef?NTh@6NeK&V1V zNnRjP7)j4FqoJ=_XiHltqJag1jZbA_WZOYjrMvOJUxt%21~Ww@`lxGDDmIc(wL#*CuR?Ll?5x4^akQ7GZyg&NL3o1CodQFB25s)fGB zbk(z2e4eoaQ9`#3sInoIORGknThjSOG!}QtKpV^^(+z;@0sG}9b?Z%1_)!zp1h_c3 z)JzihldRrhqV3?5sR z$5iF2k~JY#kSlYTPphV;%=c%PjC4>Zbmcr`z~CTD8+q}lktbJqF_uBvVVQ{i6U5w^ zKMk$C;|X>)lvOi7Cz%UR$DakH?}B6|F#W-7)|y7ppHT_!&#+t44bc^tX))rdT9jl& znv|F?i8X19}qxF(ooVyYKm-`nR?-9Z}-DQ{!X?yA2pdP+dcqgO&`Z6pSq z_b)>MGZ5i$%(!Y5^_RM(c=Tq5{zcFmL+M*wf2cJF8Z}B#&tc1{MC!vjI>SID6BjhkKm8+N=eGc z`QW>=#&*R9$}jtwhTE_DrauoZsQ9n>^rR85qHu8RS3YrE-&@xG3EBwS=_0J46Ce2- z-!eI_zNgcg*(B*6KZ|BFl%FdKHAqafhSNf3+nan*p!AL>G7(viic8mzH#oSu^JeRd z1L`dnH8mOlJ^E95!~-(aZ`H+CA*#`#b(uqP4##D;b7-Vob*OXmz5chJZj0RUM0Aa| z59ktpVy=k5UQ>F7A5!n)vfhPU0HN7*z5e3JPe4Dlz9y#WD?i`w3z45td3VgR9xKTj zzopNt4ruo}G^HC|>$=T3-%PCucn^TbZ1pwMQPoN(Wi;Kso$YHwp7;GO%B^Ycme4Ki zC`lPZf$Nfy4E61bI%d+0XUzm?i~Q<$+tA=2LBaomlXVUUu0Q-7)Ing8(m#5V)KhUR zkATN4dEaXBWDlhY@Z_msYPyiQX8yrEp3nK3krvHbfK(d zjN(;(AbJM^?c0_1wBD`JUQXEPZwwvQ%uqiADl>@%K|`91aym{~+8i24RySAc>q04a zlhs-RcB@UDEw-jClUmaE%D$3{ngtph!jSS=FS-V3`HdxXue{#Ku_2VIeOskINjXjB zc|o9@Ss%*(#l?&@hFH}kb=x6|38w-bW-7eMZ&yQuA?L3(r_~2ELb&~z3}Mgjv0|A) zu`E9#Hv}Rb8v>Cra2ydZDbp@Njn?5N+*Fp~wPXN`?pEeR`x<&!=ab{xmK!sLbiS)0 zpAo0~nu@$=JwTA$s(S)L--BN_NzBDuY$-J-b|yxiSe1cN37sc{U{%^=g9gn|A({jo zJ1!t-HAn%>Ull_rhCJ-!iNtEvlOw}y&~9tKzTf-6%v>FM?d0#ZwM=s!Y4RW+^@IpF zvDE6w>Mm7M`y@Of)wE-7n8;411FQsXvepB?a$14$i({cXW5siNLv@U^nllhCyd>1% ztxslbO`@C+dzHEu>CHFV0;EEn%5qi}6Ia5E@KSYmw6*QvfI=V8Dg3qOQBu|EtBHfd zfcEj4$jO|O*Mv%Z-d6&tN49YwPLOxU<*X{2N;-y8xKSV5J=)5hs)dvl6WD|k=Z6WR z4ic`N30ns##J_cmwr^7?_!ktcY^R1z%+Jyc;fDc1WeHPOkZAET;iD6@V@Bpyo`iWJA50!3lFApvk^Vb*j|z?yA@M`pJF|jp3Pd-8_B3m=uY4 zwOV!to7ilY=M9&(nVN6wLYDqcX!#I#9a};f@5-kSW$EwEr#G|o_vF(Tvh?@n(>t~X z`tQr94`u1^&!;!D^yZ~bUmGjiHVt_!;v1}-)v6X=g+v$0vIkVJqkdUL+*A%_6^H8b ze2jjVj}MpRlLd$nD*!J^xOq+QQm`kDo7#Y#-AJM1rna7$hN8kg?ntq0JY2o8n_Z7d zN>Usod^^*VW4WHfWc#RG-Opxb5;^;n+*mTQtHhA)H_4ugoISy-kJp#5>v8vPOr8^h z_|M-Ey6j8;%TIh6)@_gJjfB}1r{kR|mrU)-q4sQos3BYQjbc+n-+T-){8);5s%G@{ z7Lyw3-g(hbVDLYmrjsaE~;`DvWLOH&8*h? zR@hppClisagRVvbik>FtJ|OE#h+2lwE%prbRa4`&b{Xzxo8^Xl%}mp$e3Uy16TI3h zU4vK^*of$z0}EEVvEByI83jcJW9}ady19E-DB3t+lTw*8-=PC z&{%`~H)wSiT2;hjdV!wOQe)^h%>mtwwxWz0!xwC@(qm*ZliW6rCzc;^kC81UeFvYK zB&-$|4ZX(h&Aw;2`c{$gv_>`<&OBnNQqq1=nP3*SOwQ^IxAqFt3VRyfu z7z?9eVtoIp%qU)}lbcKMR~sac-qSkhFBS9MN*dbZ^R~!?Pj!ZKEV+z~b~tN3MjB;f z(t5MY1h=jBy`F&Ve;S34X#;glsLOPsa#h8kknQw)(|nfe4dkNnzLHu7y}N>a)#9bBh&Xx;{8B_D%#sM=o>wJJY|x>6{Hiep{%T9@#!>l1_QmaDTOA_1+|b*82JlJ_f^C8{`r?f zUqXgJ2N71JeTAVJM{o4PFD?l&Eq0ff+MIOlx~eg+`Pj5Y(=&A&D}UV7_LjSh+@D#I zh9*N_-f=n01j_~+3u|o5$YoU{&*yuso|>){6*GJS#z5_KxOi}K=TSEG)U1UsTvnBr zl&o1NVqdEeUYT=J)zqSA$+{D~<@`HUBil-q2}nepC#{AAnz~EqHmFCeMi+|?06&Q- z5lohXm4$YeCXyeLk%|19$H_2LRS~BZpXa50hCMFoS9_O=s zA0nR~PVEM^pW@LK(zl5Y6e$cAGYP+%L``dZBBvdkdQGUrogHk9oOEH|_BP0vi9Q~o zA5RUp#N@FL=vGm~n)^t4kX2~efJ#4F4Q@UsCfaWEx%)78nIx*qjuS=<7HzE)dDuha zRyc%7Wb;uLYn8QKYRGwv3(xVf5~!2Sg@w+3QvnYG2qiQ!Bt$hU=bhzFucOru7CRhC`g(P-@`bj7PMo!M1FT5L#{wN`uxn2a5ly z6!&Y)4lL|6lq^h1**)qzeZ3}wi_0@=wu;9JUQ+TEdOKEplr-{JPXHB@5a>GYnmwBdfOxk|`xbD*{EV7idy zd9CKzZ?K6{7X;RZPTEeBbXL~E{RzUQ3@SwwARO@oJ40e>U4RiEdJHaJ`u3c^2lKX2 zuMcS%?5L?ea^vFek9B$<&Z!LdpB=94!ldppm{i~PX_|d&P15D_4ZS^-@tOZBA7ZV| z=z@y(y(47&9vPWl?%1uTd4@VJ*Ja0Ou#*(t8M2%tORmpY(8}vLAu#SSzxdIS)h*Eq zrwMO`nFJlZ?(1$m+TRsuzd;}C=B+V1^Vn$}{bIG$qs&&x$Mg_0&XLDuDM9n;w*QWI z2bv$q)6_TDxX;Pb*1U4_K|k@DS*9a7U=ax?t?Fut zs>X_+uxr(ArG~gkYzA`6@o0jMWJB+^?@m#KB!RS3M7aXhg{h{33 zJ6Tse<7RbHW%TEVQk8X6d-$}xA|^l($4vZ*c&b@=htRH-BpoOGp&RkugMs>2l{%}I z;a$(OnWfa!>=gsr*`*yww^;)z5|dmXV(Qgz38a3eq{dAb+jw_fibpVxrlyA6h7nqC zq4tE$Yo3+d{*a+qo+~IbHORQ5F_Gq^Xq?}IJ@Di=_ z8e9z6qi~Jf>(@c=ZJ~@;kxO^U#4fOUT7kaXmZmbyw|2Kt-N@Z{Y-W&Kx^pd^$lbCXs_8h#oZj$IZ50<-44}Ih6*7t!xv`N-+ zhKWgn*|XCmx9u}Yr?0_$hWz1#?s63`d@vCC7)0nUXvC@6$L{2I@u3XulbYQz&XFwr zvk6a|mpge#C$_yel|jGdiO;bVxmQvN*I(N|6zXtq0$YUfbs_um0R~(%bNDYkYOqT- zu|+3xeszuEv|lrIxwfPi`DngAg@9q4IR_uI!-_O;82DW-fnBs_cvULV?y@WM7y{r)G|5SE+HpmY5IzRR4&p`)c`l{+)%PEd4iyHe_%@Ir+Jp0Z$Y{prM&8^;DkJ zY?eNre@SOPOSf+{`XT*jsM4#5MZ%EA;eKRa27Loi$8z9WNHyIkc<3~_sh^F`RCN>3 zz&B&+m4wF0U2KtUM}48~9}9&Zf~-c$V-RkKAcqDl9fW#Qfebc6*UQSPTpK3Bd`9F4 z5HS-P{e}4mx8;Nwqx|8YdG&C=>_SJ1WnOM9`L)vV&!KwuvF-`o zdQPW|1uixH`y1LLe*Pt#l&E;Bk%W|)1M9RMLm0K2DODy6?$e&V&-_a$^?eb?pfR-+ zt#i*x1H6N5ww0fbcBy=qM6N{{bNT^ zKldOnIc7cOv+XSkemIDTsrE;Wf~g0-(;8=wFY95==o(QWu*6~ST&SRq=4+Z06|w5z z$UxVQ#kZI-xw+(7THj|~UH2AchTv7oNA{(NVH0Lfc9c>xtwEW}SPQGfxr0lr!`D=& z2N%|L{O;OorZMEX04|gNno<55loz#!@r|mm89gDw=-tu0{c~Bq@1K^h+)z!KW5|;k zZj1b)(ALOqKQ}XwOzQH|&8)7g0ChE-wL<4Gku*@TABg(DWi`09*al118}J$()mO8b zA+^YtidwX5`9dBvS8N+cY_n6N{qv6WSW&o{&jcGZ$q58tD^asZ(*tzR&T!72@ws|M zUH_fp-RH<3Ks)~370@eh&RT8aR%ViWrC(2kCMxs70bDNP4K#0cJSsk1qt8 zw<}HLwwl2<%(S8&hnb=Fj!s1_za+*3%x)*!bbQehX`xSCC4yv7_uywrdz(i8jaylk zTx`IHpL59$I58^gaDi(ky3i z5PM|mXsDjPO(Vq#&-p6S#dV-DRs#29l{4vaP5BVBYst5Zsm*$2IyGfai4F4tD#k1S zEivoZ%WhMu9BeR~O(4U-;B0fW>iF|=1m9`D4eK9m&lx^*Is(}Se0V49`$^s@2*hv+k{;d8zP56oMV6E^J)MvS7diRUQ1BrWbe4Cu;LuAnY=qt;%$^^ zyX3|ZHD!4L#J%FSY(I!_9)4kw;K#JF51c8JgO<^dFUrtKIc3ZHO+_6p@%i z0sRbZei9>pU6MBv z=tpV{7JRnTR7O?o=Agsq5kM~SLj7!(@1K|HStjE?3mNRQN)wW(C(C|+YX6oiHI_TF z2f;hC)ICuUhT-;AEC%Dx})bs==*dCIIBE8TxFN`t~e!K1*$8 zsS8=^?OAGJ-nX)aCwa31+XFyesnJQ8>;x!xT)LjYU+>^y>=}AL2$LS~$s(I<5TKMgrmGqc<+y6Jf7g*1FNzI8r1#SavjKYSB}FTd9!5 z!-2RTBqrLy+YqB11;hQ@k$YWLpD0`>qHkH*G^=5fu9OqQ>b2u#t~2Z&#f_k9MWFik zLq^=}xMP+O8vxOp-0^;s^sh~Oa8({2U2AH%N4dOxKL~kK+90bYFfOSxN@8lNy)$E+ z!Gz}(Y&0nK2b#ZLb*N%+5M?iyCsbuqN$x0A z<s zQi|(K(njcVy+=6+zTNODCRttC)1&G;H2a{TG8n*r0AcFWUq)H*>!b1nKT z*_b?nJ@%Bn_r#1w(a8MNsiHB9wZ8n4%}3#dd}N}^jJ}MZXCZQ^a7IIpnM5wB8hKH_ zUUZKBRF*%$PDRY<#QF?jF?{4;8J_`p9>b)evdbpHjnE#_P9yn@s*z{*OIy`I@^>FF zGSDxd;vIF7>RO{7mR1yGNy*na`&LlB;USn9xn;NB#ls3t@b5<)ao0`;n3b3kuP+Fn=KVbr`x$bCJiYj79sk=i)Y>XT=dB93kgfW*t577^e z++D01ndH{bbtPFnT9z9Q$`!d;%SmMUAOl2a>67|BCW%Wu(I4EW@h=&1Ks-d5;6y6B zN4tL;W0l@DimZ@C&pIj9!Q8UCxs6TAuufg4K%%=MgW-5H{~K4A14Y3i7P#N8p66}pVsF9lTI@8I$N0^D> z1tyvbOyyjO+}uiZy>Y{jC|T-MB^;l%8{jFa2B~2~bsNUQ16gC=#o1MRd#`U{?}-fj zKEP%iMKG@Q@ktff6J7AS){);S3O80h=x&~-a!wVIS_gpiapU6L!B(373&SI;PF3Vj zM(afE`8{jPcz%d?)$w3fl?RG#%89LZwlkABCv!-9IhfEKtG}=_sMFL_Wmk10&lr?H zET!w&-l>;diZ~A*10pXh`6;C?7+~KOj6D>1^>hC`L{faA_P4FHu?0DM4$ zzg|`~_$4NMekm^++e(M-J43IXsefYjDRvS%h0>}TO$pA)>>>pjMCv7Wvo18iKAjx= zz$REq*Bq4d2jQ~X?KN|^sp-~bXDXPUJ5W^yB|c9->IpP4#GUd>p?!JQKmP=8L!v8_ zhte4tYGy?aU)O9d7;b~IB~g%7-!jV>6tXi=^e9{1vO%9&mG7U2%=Aa>dF59`@du$2(wd<@NH?4E85Jo*C@<{bWtnwv>Ed(yl}41B5M82 zfqFBL6}2BRVdO?MaH>qR%6J9}eF)Pz;bKKoHiiwTy)_X3D%*q6NJcv_f-4DhL%6~r zrsH_HExbcE>vP^LEjjDmLYAzt45!VsKR9))a%J5t=h%HafQB-V29e94P~H5Ey>l)K*XNO z=UT`>k6Dtdqb-zm!4l9=272rgP%{H@4qQ}L273IGTpf=LWpUv?pKB-s=>_y$lbaa` z14$mVkb(4qZZ22Hqe591Evd#(2I2~1K36jX>Gi`L!G#Q@7wdAMjz@>G^yXR)G?alj z_vS&(45W8@a=8{VkY3}-fjS-&%Hj@49yFAJ^m;-rS2F{t_kRww5I`+*d5(d!UJwep zg5~IpFYQ^f%9k#=BTH5vf@7u@IUD{+2Ess|2hC<6WjDE8?T-z`ml?ktXefY;^yD=n zA-zRDQD}or$+AKAOl4U~#q*6>kN9MHELuVKOcYeE!mW>UML)R(5myx}=z!-4Xo15W z_)U|nF{l^ROVh@`i1Ef8H#OPTZ{(Z_q@Fn=n?_Msls)(DdwfRyHN`e7&10)!Yu1Y* zsy$*iuW>-d*(6a9uq6MC=!Kq&e42N>vJmmT8RTER#4|TeFloOvOl25f21D7g750b( z8Pg>QSO^wLS+<6~X5&>xdgy)MzF)6!TkcH16Fdd4w%I}KLr@Azyj(vUWeI&v0Q zWYnO{k-XNOny8FZ0>0Ef-+V6L`vgOe3K|rK0v@j}BNuTrM-)U*!8PJ; zG!`_#g(qg1@6x9R));HW*RiF;nL`@00kMw*pH>hE;*vH1M;$~kt@#1H*+?#m8|T`y z>)!hB`oiSiWyDoO1{16n(NpDy6Yil>-)oGp>>Ra6DA{pPOf|aTeu=AcgPzc?DrtDs zSmMC}SzblvO=ShM)Nc0@RV!-qLt7?Kt{VBH$4W_r;^q6=Oww(1rJAf_CIuW zlFDphf<8@fCZ-%`JK|u%4`oD8lJD(45$q0^h9UU}LgzQ!H zVN5|;&vgDeT?C0(cAf~>-A1+_1rp*44PEA|*dni7(T2sD8pREX2CXloE(NZfLmU6* zO{1pf_n_9xeRi2%;WREttja;<=7V_1YmAcwl`+g!mm96;R!Y@0<*!EfM1B|O@YGu5 z`}*j9_WE2$fXVAH=vyxX^oli;tnr7dW`^}v#j-A`s(rNFF8U)(Wl6Y*y>NvuQx0kl z^m`}8dAGQzu z01*=EUN%?=ndM$iVcH%rXqWzY%#Lza%+GCmm`n6QEg+3}q=_OTnLaKJ%3ABrPAA3e z13GKjmSA;EH6ER-A@rGeHT^@;81`yDBo5jL?YCY1D1FGdY_MU~4VX5FU_s*MQ9c@c zDrSsrNYH$;#b9bQ$v$KYdGrzPM#HX|qK8DPv7Ci( zhP{$%+{Rhm8M#T9ojZdRhC%QTJRG z6WdKx(>36jD}$(x)@bj#O(GXfh^h9-3bmfCsv3D#N!<=)CHpOHAXts<2-SCyv&VEv z+XR-H6;-a*?k*X*T8+4D!l_wJzuC)o4by4X$yMk#<*5^xJT{hGiH7G^6KR={6;&N` zLc(>bijca)-fFV)h+N;VZxNsh5TroP2}q z{zdJSUFaN8c?2GTyU7ii9}owSL=}x=-G1w>|52#?cc>a3{%-ciL?L7?#<;Rk1*%Jd zXsUPz9Ykd>Wi~c?8y1tS_PnF{$AS1bLuHNG(FMoJ1hD~=9K@=%tE5YL7jlyn^>I0s z|Lf{%s}7mY=+gX?K=Q4SGzV0B8kbFSEBrD|9i?=gN%oL}HEI8uN}&36jiN9XLSfE6 zJCMH(@@(Pu2n4%M@q3`_ag^!8KRfV1 z%E-_`z8O7fT-l#?vHq*p6~G>+DK#~6*`Ta0ah0oV(nCs%!RWE}!NiVR%`{DN7cZ>v ze%qjqyUs7kF1|OP6B>OOl{r^O*JxbanzFcrU;>XG^ z(EU$_L*Ve<=VjGj)&@6bya&Bo$xsIV@-p>A<7)G+gG^vUz!1x~xxc|E^Vkwo{aigi z-q6pHaYqSB+g?9a`MarS47nOn(XMB@BsIy`%whFWked#2L;F#Kvb&^PAWIP1*n9Po zF*jTZO~+)2I^`yUzA_!ajQ&)mXt}E2-xqBE%h1M=TY`^ z<$MxVOXfgo8RZ;`rxTYlSRYNFTjx6*LKSWZ|RnPf!ke=5nXpI;Kz4y5bj=)}Z0R zdj-j5J4uOkj8eTHt%0pIO!9Sp>9(ZZa3@}PZ;KvqJQp2NqAqUQ3M!MBWPC3&Dntm& zLB}yCtZD`+S}!iU{d#IJjPyOK<_!;vHZ#b#(LCr0k^W8e4C_u!ts6rApMk}F*~G-^ za+U?*8_BRx#4jqUn)cCA}bpJCSqe9J)Hx=12IqdI^6dOaJLgz2}Lb=sDh020czL zV?E79SVeVDV9=YTru&-W&#A)xtRBTf4bPL@z@hb^Wxd$v{;2eO|c9J7k$1a8OlyS>!S^}Pu2$6uYF7Clb3T@kMWIp`YAKWZ5QwbDx2bprLskqNVxEeNec!z5p8#Lc|} zW&K(j^(D{X*IJwtDt&4*wC)=N$)h)cYTJS7Dsm<=t(D|=M?l^pu!Cq#xt-< z+J{4m^GK0WIfXA04|Sl z|2|Xeio8^q%P>`R_hA}H7Xzlt^q2u$jbn6}m?sZLE&#;H%~?6Okd0Q&brY}bl-yi8 zLR7wPmWOg@vq}F8LSKV%#LCCs};-jT8sF(^8K?ZihA=!@NY67~&dw7BxAX5#Pi4+3EY? zgvZz*$GZHc(mIl%?pM_P2I0f29N3i56ehPR8-arC3^6BWa=Bltxw+k`b`c!`pSxyr zGc&OJsL{b~{ZlW?DsYFAunXwaKCg3Xe|f+#@|~#7XuR3y+FHT^CJcnSgDXQ6* z3QU{zOnrV}2{71%ZsVxQGaw1iOv$5oH(_Hxe>vOApy@}p3imQQMnl=6w{I~7rXd)^ zNDlmuoY?^*RiOt8Gj}0}b;x0r;ewztx{0n(E4;Hjfz|bw>T5w$W?8Smr3TeZD%Y!H z`mp}qeUO2v?4>hyY06Cp$(2ue$`QnG_I*~0+Z(^m2PP;k^elvDcfXOWVn@m6iMmB|Gou2h9 zWEek=+A2BT*Kk$7P(BOmGy4q}Cg)6dT<=azGZ_7v86w_m)27K`J;tvixm~-9;XY*2 z_z+I`ZU;9tbRMRv&LPnkiyRQB8G~j84%EWS5Ciaugy+%o?7sYEtP?Y425g35Hhr=J zN6*49W6inSj>=ips4le=(mohV?Vz4|R_c8MvY=5=d0d`bl8!2sH_=7+2N1>8P4`@P zdMHl2t+tklp!onsS8#!o^B9w0-FA4nr0tXS~mzs;DMf`6O<#C3UC$<#9UyPOWxg z%5vRNeTRwJo0#YW#p8?}nltost$ISY%0?!!-iWC&KVTCaX02ZJ9u$2s?TIe6BIqt; z(io~ySyN2sTD*Uv&Xd{=30lzPYYe`LE`0!^2IcnfiM4ArOb7c^ciL^8XiyJCA1HD& z8YP_XrJ;ZH&2N#Gf%|vEatl}n+?qRq3{-4S6-0Jgq{KKGUio%Y!2J&;uSzrlOqD?ujJ(MAR ze|cMWA7Ug+|MBu{&1R`T&tp$z>A&)|I_dYCg#c`k2bZ_e)7T#bV~q_>HRoE;)ZV0b z?KL#njRb!75$$XgARJ|BK+Pm4`&XMW9|))8ZK0{}@TyD(h~A7@HxK&CG&9WiD<&w& z3bzK~_w9k!r%|8!N!pR6f6lbEOi!?CmvM=ptU?%VkgZ2az4(aoGHPJ=9X=BOEu{-@qXPiWcd-~t>}^y+V!Bs4YpIJIS*63w116k z95qt!=Mb;qdti1t3R)w%`Jfq-D?^m>)M5| z5@bOA%Q3%(*VqaIn&eyyrrsM$`8Ju6F{!fd3>U&sS(i9hvVLl}b2Qo=3;>hw3%P&h zbB{SiskYAk8aK5&jan38qcwA<*IQ4$KjeRq{4CrW8vI5a!VlcMqfz0)>mOZgQ`;$RnSo4 zEUmaTce8us)o)f$$d~Y{qo1z^hVDiW8=WNdilQMjE=gRM(qic8uVY1EyB8ySgc--PS+PN?Q$+ z?3LmEy&QDLI{jV5g=Q%6URNSyB;t`#uIpixBBfqs?>op9Yd3h4heOr}$SP_$i=HIA zPI#2o+Z@U(i{b*{639ny*Rp{yqS51#KjRSWb3T`+g4UyN&vY5WO3wXH*HmE8|j9Zbc+%;kD`Yf+5w#cswZE!4(&IWH> zCk?lM(2)h_WDbXE<#6hGoJR4Cbf)q+ugu}(=*;JF-dJoyybBMmw|*#Bk+)j{!Og2T z4}AZUoI`owS2U858Sr(V$^*YyY}0sPCU$31Vb39wpYwKU{ij?de&)(S81Xw-Zyw?J z84!l@2q({gFqKEx7un9Fliaa!HiOIG>2ZJsKZhQR4|jTrr}x9Ts=n6I$%MC|Jor7) z;=Z2B0}ol?SZL#H9(u%4&egE+kzC0icW^q1AK&l2d8E%qZB2|P>)CQm*>v`F+tASi zxB>>1Uo)TQo~RA253`#AdXiN~7CxFQ`(9h~b-v7wJn&~rfb~4^HvsLeS>5`ndhmvC z<}t@`fFrZj4#WEAy?;x3`bt62N<*H>79ScRpqsM>j6Ciq7NO!PaIxDo6L~q z&7RiRd@s*>=xd5Ca+X#G83+>8$62h}XIz0`wRtQLt>>Y?hc0Uk`L#N_;l*{8gt7HC z%(S`zK;1Ox-mr4Rjh|Uh<+Vl0 z;seb4)Yli~8M)KVLN5J_`5mzENmrTI7v+vTpw$B&Yc=9XZHQGtt2LA%{IbXvj_S5% z=FC1b-R(KSLWXn#B-HlnI2NeTr$QG@i!>&n$_x60RFV!1)CtE_1Kat5=x4Vy?rjnkTxmmYPx3iPVsJg17wSX9C?L z&~4bw7zLPI&RHB&yd6_U9mmoe`>iR;&jhs+_sbJGp`eyYRFP{9fr(m?tR9E_`s9s4 zTV~xY>Eb2nTSD}_-hT~s`?af^dW+b;qj=ihWy&UoB6QH75Ywv4;fC6xMGm1e=?AhM zGv!Lv$j<(hiKvD|#6jL;<*k-AhIf@9*Nr=*6Ae55E!5_9=#Qv6k>#@5bVDRYBS&6a zm1=5;uifubHHF8KSor6Z6+iwzix`vW5iBzjb)}WxNV?gURwWhQm zLC}}K#&=jpKvy(%pi2-*G5=$@PISC$uJO!PT%py7n{f6=6GKfI0&uk>#0;kRoyc44 zLwo83vc}sF=f4=b<(+y{mFB4u6`sbWdO{7i z>ZC#8dgUsVr9)Q6Kum14P##6KVQ5D=n3$Mn!!#3&(|uA68fGognE**UOPHPVqLMc? z)xQ!d_Bz#&an@O@O2Wh(fOF~9f@3BT-rBGw)(w7HdSfNk{=)HqB93t@4fj+|Suf#S z1E1NY&bw5bA?7c*w%aNuLESIcjmia8RtbJTD<&*&A@deqx#w6+#hK>F2q)9{yiQ{S zHdeT1qh%H+bV{za-&Rg&M8q-t*IuBf57T98a$V35^xYYnKJSk$(&*5a_F`JlcV}p;dw7bb{ZxTrnXpD0P(} zqANwN7?i&(mDF^olMT%|6Ax>0qL1YNO^JIgwoTd7leJRokbmcy&d$-0+C%I+%oV!wHE8>32DM5NQcFS|{N5eKQb#FNCRd z({$S#A{xo7Y|0ga-llpngSs&%_+e!b$WB$60O;90t5?geep3s~Yvx;_gilbyIO}$4 z2|e-%jpUW2n9R8-1U+UaLraM67*}hl!fKZ5!o$s8_X4V-7(Hd#UFuQC{%S>bmZ}vU zJt$Z%qzVi~uCm#)T5deJR)+i6qTfcX<(cimw?lmwsP7V~|2q!)kHr=_n|oCL?BAD% zJW>zLWQ{IB;mZT$PK=-RcyC%H9{bckk&_x`lg*Zcj~l1LcU`%EA|GcZH)yfdtkI$9 z5gq1GhWR-#@fWF?=nCvmOkqXe5;$P{_Z;E>W#n<{!t5*B8zA!JoWR}}l8rp2&8Wh? z-s%1Nh5}SH`T;?6YVrF19@D92b?);FhbvgE_xi$-{aXm{z)B!)C8O${CHdT=d$5XA z=pV5pfSUhd?#h~@UgOpN{XqOn=)@4qKp_j#8C!@d6!7UO1EG6>_Uz%K+z?)STgXVA zEa(L&Ce@mraPhDG2cfKkoF<@#cvUC3a(Cq9(y0vVuwrq#yWqGN>~^ySTgFL?%N!@w zp^+osE9P81V)l5>B z>$0unKU~(g6^SLQZs>?L>SCzw%jD28N-AoMp`(&ATpZ#mo$27J(UaK*1|qY@N;K=` zMI{*?mCGiGe#m%}B}Ryi_1-+=3WcOBA0Hl#o@LcW^FML*`aStkfm~!e@*RYfy{9~BYDW=IkuGcp9k=719)%LXQ5LW z^yS*EWBOLSQ*13{&@l@|j6phxE2&BL+nqLHA0rq6O>7`R!VXzxvgN2RsPz}28gI3v z6g^(+wap_L!h0=3S$kS9HZW=9Rqh5=9IPbmzYIiecy-R?iHU#MA+K*=>G`^s28i|R=f~I0Jhq9oh$jS*LJ7^rC33Se?=!kSfH>7fX2pHV=8&|+v zi#F7dy<<-UIriH3J@wKe*MchCrOF6w5mCR-k$jS@Y71)5p)BSU3nzSq^;e7y~Y;GoLOV%6@V!_ap@^y<})>2sp4UF*6*A9BxaU6VLEaP%>xD+;24Eg`V=ZAfge?K-)wh{7U zJ|5r@xoeavtd88)UylNT`|<>$uH$<{7fQf+(Bf!=;&iX4GL&JwT;t}CRSZvB!w)Gv zdhzi+o=Xoc3)J>oT>FR`Rpy5#hJ5%f?PtfTnW+350s_=zcR1P1E)S$$k3Nm92OgDG ztk(pLH|H?Y(6-48;q7Ncn9mU2lSANfP!(KUKhCZQ1x@GCb~yRQsQ_loU zoJnE=XWqjVDaKrNfN=Wg8OIrKC&P5Kg#4eh`4yW!<4Det$8yOr7FAugo!H~2TJKpQ z>$hDExruVSN$%2u$T7z&t*4o%34!XH4kkm znWV?WrND-!GW_>u1vRtOrlnFhaf__IpIiSk8OFr&;1e~QrM?Db zk&#DDxMyhXQ87NBX)Ed;r#t2WPEIO9#B5f2sn(y;TSFz@uEfSny`g#=)hF!J;O|OB zhWpbVQ)v*8z-=$}RW9?Ji^Sub)({YkP;!^9X(S0*amwg6tM_wK3@i7bNa`|)Jn9q? zJP_eBjPQ+{p~Q>e=8LSnXSGSYD<_WX!Od6KuZG${^0Phf z*3Enl_1}vGn{y2+v;`Ul(VY5fzm<^Mp+KQX&6Htt$r^#&py)C?qa!DC8R}}Y2}$RJK=uzQ6ckfMU^BH z6J3g5a6&FF+qDnPR1;y_hGMr<-)I-ii0*52xs_{ zKV{k{vaR2HGR;51HTK!^4Mxn%bqiVguNi2bsndf5l@Y0?RoTvszp7ruTT?>oYh>N1 z-0bw9v9`U1z2Nz!vLu6g>xKwk_Za((?9KX^DIKE&!G}7hf;~nCN{;iuS} z*;0ynt*&MMDWR47tikQv36&o)Cot`30-c7&TR*VJ=+lnO^|LX70TvB>Ab&k-FT>fbz{^5+eA0>#l|HK40*C)&KYiAmCJ_d}(S=kGPo0UaN7MU0ExT@I7MDPr3@ zLx$IBhW)HFZND0eD3K;8qk-+~wy*P&4z_kNCfl%oot4?H&KGsr8n)0J47_BR|468QnGU15gz@~d!02C zT_k5yQ#y&!nKQ?^6UrZrtN;wTHFa=R&Vv^{h`;;xw z7148K!wI=S&21%fM7pvY9IkAIn%zN3ZX6BOhJSrfnEU5P-$fAbyw^G=sT;^P{tb zHA7x`3zj@Hty7AwW@_=5j-%#KK^>}1p+`x$+wKp}b?7igGj~kt`$JzV`JhtPU1ZYhf8AodDOf+Io*AfqQmKxav_k%<%)|oI84~Kx3Yh=O#RW5l zG20ETZiT2c>Z86VTK_2Ee_8RBo7|-X9nkmq*3D$t$EXMD(5QUhos~{)4IF^_qx^GE z3eEg+ps(Rn%(yv8#j7UKBR9{Msq2i2GD6r19YDH2y5y8xkJP0GX zfqMqQDP>Eks^9D_&W1_i!xAH{OUs~})+#))QtaemWTQ*5_cC>q?a>RYIp&icaFb}l z9Kn~|;dtw^Tf;d*zipEBG_L1Dv7?aNlRE{Z?MmIIu zmzwC(;|yAT&?NeTtDWZTiF4~^TiC&y&kY2A3V{O%9!*mw>dTrkYA2WgP6WnU<)UZF zR&Gx~yn@y$iHT(yRWW2jUnM});OH*krrD0)`#fKmk%<;Nzyn;?2Gz<`6wi=#Wq08w zLoRt60b$I3ox^lI9i~fIYvWFL<7P}Bh>tmBB_`-|C;NQqa)4(xARw^LChhaLxuXlkzzkS`aRWP#Q&-Jq$ajJa^Ds4YJ4P;ES53qU;RF#8 z!@Y&LL3ylmDe)IJAL&E*glatJ>Fp~11Z z&cr7&rw#+-)T2d9T&2fi-FQi6gHRu#1lCSU)WQATgu_dsPJ8S)iguAboZS?h2@5aI zYQL9*zwH($5BBAt;|@A#2AE+7>MSFiA7hmd_$@C{hdsCo+w^*@3&aAKWwy$^Ii?lV zx~N;zu$rWo)HtfzlfR<5Dz6V!ZuVzYo_3Wo`+SuPt23yYa2o{C89)z0mG#7WL#g`E zbsDd0H!tl+xi-Y>X|BnN_`a_IYXymtna4&?9QwvutM1aUUApL*o5bXD9Cd1KMhSD; zG@Crb7F}`*0hBlc_F}i}KEdX#u0rcNbwI76i5WV^KGB^<&pqBvJ=UsFCL526smhMh zIs$g!Pr7E*B%L-5nMcm8a^!+}uw-d4?+4YGIJ5%EbFJlb(JPDchzHcQC21%tV|>|b zShJnV)EGn|5|A<<;Al=P50~q3tKe{WeZM`)IN7JZKI?$nvRDB_x#Uk^exql#ti&1@ z;JN!#lN_?@ZMseOH$q6Mb1OU19yWG5M1ORLXOw8{F;xYds2zD%`RFnIjoyiNn_E~p z=dk4Iis-`oOcGaM@v5|tM+1r4PiZFQnf$_tsHmzoM!O*&RcXtz4B0*kbBD5Zi2P{* zGRQ!5J_EtQorqZOO1+M2V_&LEDkelONXWh%Qf=Sr=1y7pAH1m&**e;-4?!eZ8Loh? zl+jZ)8w-98MGLi$S-Yh0Ls?XeMe5oO6SQPE!35|%qCKYCvDnhJ^JvjhP%=so8Tn#? zT{*_6oXGvVvo&>%n+Wf~uOiz?XMFlQi}HJpF^_e7ZE)dQm+PHHeOw2!8MHSC)tK9i zZW<0sBRR0TMUb2At`^=3n9ren2hO~hLi?tycpPrdKw-qAysM}ii?dy`YB}QT*;qLP zJfpj8_Ui|GA(=`4wUE?>;H(FvePyN%m$nlr9@%4Rs0Q4re{#rG>0L!zV^<*K2=ifF z`OFXB`Jvqm7t#pdJq%pFvtaURE*%G@-TktYYxUVp(Jik0cNb;RU3j1V9(%7-_k9-T zJ_gJg|C%1@+49=6^OL}*KTckc(%)_N7+v*PY`euvEL2bXiG(_`hf|yMZgX{eoQz_- zq209*pnoKTeoo)PYGAKq`KJwHq`(JkY3X=9ZJ>|dHtI=tY!9T})0Q>U*z4K+h=)F2 z?m}XvhB=$YOa}fn%1ZiMRM9=EEXA+GQw#=sf7DL=7SBVcu6JcWLk{`fs1Y1C<~_8e zZ`f<2E86?kTB-IBxOG#-G{=`mZg4cqE~J4MBC~XTxDjikMsd_TOHOKNzcFMURnzhT zglwHca0V4zXbSV2k_m~`W;L2KS=LvOm9B^z2#2UpLWlP42qnCZNHG3DRrl%JtzyjH zJ!0;%;3y038v^6bd-PTzwj9H9$k(L(CRfC{a?jaqX$Z;Lk)^*L(H@QSA}FqwL94n==k^Es35TqE$VW`=Ue&Zrt*49>f9 zA%lJZg_w~QdN;%#Zt3=hYJ!gIlj&X-*%?ZGH%i4u8oGPlgU;dhcMHcE)VB0%J##47 zCpKM`svf5g_nn_W52hx3gxzE&^u1g+nYh>v~M{2 z)yyfTBj;XLBx_6^r`3vx`g!kYE{J0LXej>PGZc_Pe{wpsoF;=Q$;)T7T_}4E%YGk)lGo&e3PAz+CX)=Sp z$3c0B$?>0N20e5-bT)(D{*cA@?hAGNFi0xc@A2F1WCopa1>`E%%%K13pos>Z;(&EY#uH>Clc0`pwg!eHrxL01eA-D1-jwbm(LT{Z)X5S~WB10|6Q+ z&t}k<38CBUxmc>AXyDyU->moV2 zoN$_mG=2#;GvL=x1I~Kj3i+}1uoz&r5CcEhQb%6t>aaq7{!lm_uW~qD@)O(PiHWU&7*(Kzh*Mfw*XOr%vj$3`jGK^Kyw*~GSH7a$Q=%v8R+LN`IC8;{-62u z*)0A3mNt9tpsT|~UC0pjpLHgL);G9%4#{U=AB3~xEbkgw&%pKuSQ?xkn;FQv_`|c{ z8EV;JHH~_cVErFMG5S_go=yh(G9pOB)b6=UCrgszgY5>Z?~RVa703`Rs@;z{=LYsW z<1x;WpDE8jVD@OlpSaa@n;vHst#SDgvw%s=F&Pdvpu(FS{d46w78BSTO_;9l^^BwL zQO>t+8){%MrTtbdr;NU8#_?Np8_a^w@My&E7Hzc~>5jL!;vOwOq~G=M&XpMJA)xFU zb3*t)-%=k`vbqb<(Yj@Dp4JbfC>kHqRQ(DQM03n4nuw}KuF)r>biv7R=7jdvP$9kj z0aYphLH=rfKA?z5QoYZhH1t9w zXr|Qi61WBVcm>QpXR;;ieKT3UAG*T0Jc0rOJuz=A+3Q?1qK=c|YH6>^wh~UF=eRfW ztQ%{i3~Q5fCXC#0LdUXfZ7pXF@&pDXEs+|Ya;z~1Li<981$8`@Sb6Das&&>!b~J>f zieX{~S)N>mwl0Av<*c4d_4_TS@a8z3rhVFry_}9f6|Mf}ag*v`dhQ|*gH=PWDD|j~ zG<-KDYOOQD{*n(4kJf{)PT}35<3FZLhC`N}febbMPW}NETR8NQ;{O8iZKV^`AZ^`7 z6>kwt9d2wDbSCh0YK>>*oPag-9#@k~dRX>u9Zm*di@f!TZFF4S!)9`@$=_{jm@*x^2gerrL2=cx z%x;(1d!r-(%+TzfC@uMe-E%w$17auOU!Kua<(Tir=;>e z8&<_D;TGQS8vVEyxwo5|d+DV0U&Lpi{y?l!vwt&-e{ z4P4yt@>%OGS;>gAa*` z>#_?=5Z~ekrpq|BH=yB6I2t!eWd5W$f%wDOVOPCp%9l`i)8d91i&w>6m_wYOP<)tJ zOl8kG_ND2*IPDtfZg!QsQ41&W+Qwa_^DksZo_rvSp&7zU-7@`5SxoTu=RTAL{aqR4hotxNvsjG+$^2(NY}`F zVbEp_j-b52j#wK$7kIA1GR933pQr1K5pvSu)JI({uCWFaih*CVUiiW87AGa&{*I41 z^!64R=lSNEsrhqmpNIW@QT|D*GtPwQHryQOuIqw3$f0LUc9;A-UdUzo44E1_S6z2^ zeB2fH$M#k?BjKj;hzGs8*dpgDONySRZ>jP+jqjn>e|7}GdhA1CP35sJwph#p9sDx+eX8+(!NgyDqn=k0pxsN{$vJJ zefFXen$3XU)|_|{_%Uk#lq37bqF5`C6_FnFq&pt5!YVb|fPb^1blrCAD|oTh2A7%qg$j z9LiGBOav}Dl}{)5lRNax=F>xs3y-m7X#k{XqiyFI`e<-xFDBDfzgvr zdHyx;fSgIKlafC}v_3YM4cM5^Gvpwdi_l0&F{osn?g?5{BacWsQFV}AP0 zWDpj=J2|&rl&6B$%g?8gJS6JSn)@2HJ~5X|0}V`vk;sFh^psEU_}yHVXiqUrgVrbI z0Z$D*JLS?5EM7$EOlUWyIxf!VITBf7gM~sND*Sn&P$(9E+j3T+SS%99qgc57gH5pB->_xt#sHZ>X1~pwwqAb4Wlw+lWmjCjb<6t8w`||E zZR52Y3Wb5K*Iu?&ckRN;XvFRC;$A`e)>)ME{D-NW+Q61;yF0VeCVgr9i*0E+&HwYw zpLHlL@*`;@$bSfhUih>XM&!%O+S0UK&*!eBXKBfl7CB+{CD>^D`v?*s+s@i@F_L?3u*4(Lw$GY<#3Mg{haHcH?3%Modb?% z>?01`BJW?>)_}NY#?1h^XC=X|Q#z_#E~AG8kFHHqoThXCJlXoc*-~5N8)voo&{@rp z_{}V_@Og_V-#V+UWjd-`wlw5Z=kuxaKK0xA)V_ar6uy&Bo$;yP&8K#J!Qp=IthSb8 z(KWWTrcb^1thSa@(Tz5>_lpkq`}x#apZbG*YW+(N_lNn^1((_)%iH#+ZsOI`v}y;U zQkSTzGq%EzRMwR-LE7G|C`zSgAPs9^;mfX!-xNYjkHV}?Qw37adgzjI8cH(?9X|PO z#WtOE`YSij{4sUXA+`{mp^=94W=Q{Bk#t=d{O+lzRVBu9bN{5sJnR)roM7GJ2dyl!~UoFCJpL5CoNgSML z))6V(<&uBBD0$u|A77L_bGO6(&7$O~ue)S4a2f59dtCDU!fLt46*=?`m;8XRTz=@2 zzv+@sEKdHGOa84UHzM2k$$6Lj;G*Q_w_Wl{X={m-Xpcjm{fs)7u4(0TjbUiFb^1$^V}K=pbrBo zrzuf2^`BeyspE^V4E={dd--%LjPo-HYAx zKJ_Cj+X9PR@QE|I#KLh~s(d-0ztyL{t|iOg?i2qpm)PMG-<(VA^@&rt#6F++j$C5h zC%!wEIOG%GmrES+iMQkuCw=1GEp53$b^qw_9^Dt^G1W9a^MBnSt)St?#{JV_cjEEP zeYTfc_8dg~ zeJlQ(qr@{e4{o@8Xv^kpo7Zi>^70Kg4qQ8Q&4#U)U$y!2>o;r~+`Q%Tt2S@G>Y5Fg zUA6g|flXIkwt34{muJ|U)^8r%xXGn#+i>HyCFhj?6XIJoTzSog_1kRS+?R)u{Kie& zHf-56aLwgITL!MWcHm*8ytr3x*tliG!${n9gzuHBHg4UvWyixvKXglI#lt+TI(Z(( z3cK^JrMvOUf%Qv!`@c9VZ{4Sc~|F2BJ&07XHY*|u^|C6N?265}Q zEnAn+{V!U#ebdJEaD(mJu1uHYdRS_+Vat}yr`6}-q3jvawHvl>9k^=4)(!tx#tE{8 z>cIAGo3GliX~UL*Z5sxEzfdR?1~<@emtD0Pb&F1LK1YSZ^#j*z*Yv1R*tTQHf3z$I z94QpGZr;9Sy@%K@wW~I40vZ(xun#^ibHr-fH*MVPfl9u%ebd%~D>u}x+I+>+uK?AT zTibBm_JM0$%C#G|UA=j5tNXUaF%G^i&)47hFSTu(Uur9nC2iV%?Ya$H$djdQ-L_@p zrmI|<4ue*=Sjc?|*r2T_&Bb3>=gz5n1gKGv`x!sEflse5h-s4vt(s7a>wQLOkvsidXIFP5Q@0I5TvhWeP~h) znI?MtDRhRS-ay|v-8 zq6?0jnti83JwCXrOBI|knlNd2m)WXa$8}M4E4a&91(gs_dwbVw^_WmAbkrf+Pf+uA z*>WOkxO3#x-JvpXDiTiqn5(v4^2MNz);8uIE4EJxi=KVTBw&(UX! zlyTT3=AhU4F3bnqcVag+$4sz!^?f_QKCSJVHqpfz;Ub|8c*sP%pt$HeAS!6@jK{LG z6zy>x)$zSR@D3$-OdU3?C!K~_y_sDu3eo6%^}_3Oxggnr#e6aWV5QW^vyW-cBxIwpUoGe9rx7ilGn?=_Cf z)K3GIS4B8sP3uw!v+viD^M#Y4QuKP4X=EW}dW{x+%z4gHr1tD{XcsPnREAE9KCG3X zKCDcVwXtsq$#)qZxiPgp-iq7$pP`i3Y1MMGbSQ)29XM@{MHgtaS1myc)TM=2Ok#uf z$TIv;2+DzX7o!B4u2wo_ET2@vox@KTP+7~CmS&=jI^e)klSJj?@u9RkB`RlP;%Sm) zE750iWa*r!i%=0sbcqa}FmfUBlS`WZrs7E>FX0Ke;Zii>`nmo<=z%+ZKVQIFgxT50 zf%o|`;W*I-Dox=mciSV>H6Rf>nMeqr@MHZQ<1wPCz)wh{GonlBOm)PwOeABNG#%=) z{-9S(x1O@qRErl@ADc5V!J0N(=+HgFVssL|gBfb=R{y(LC`5(7d^pTDgWIpXa;e>B z)*m8I*P{MU|9M5w`~&V>{+U7>N~-@if3!}sYGHf9!_kG;Zn$>+HCvW;;=*rTi%na( zfKB7CUyq&;aF(|}j1m&@qE%l<3>(36!b<$798%T|Lmpjpy#r6)}-LB2o`od^oI zSf|AcAEq{4yZQPJOB*$L(lzQaZML$mc&e}e?05g0s%HN@l7;HmvNi0LRV`Rpo}~z;BkrSss>>x9-^b5GB`r$!FyPAq=@h z^$v6$=ry#>0J{JMvkq`!Wi%U-pFpzv7xdMwVjI{ZPdyX3FMul!tbLDs?jZ81f|{Cq z`jks=k$)?+HPBOfo9b+U;6Ugq;{KsaW_1=;Mjgw1jlK^7{pTA~53rv*m?u6NAjd7l zcgsuwjH=Zx02Tt^fCbd+DfNJ3)KQ0f3Pa0%h2CWm)2y)pbZfC~|J-e9+9MZM@nN4k z?Az0BYv~9jE6KTkc55iCjG6(ZxdcVK(Nk)Tec_*pcq1QDfktlt-W|0~ z%pFe4mANBfayA3>ms*0a^K3}xwe?)@6ju7O9@Gq>2RZ^^RNO?)fI|WJcM9~yOosGV zX?mbG69BJQfX^@=(%-x&z0l&T^>$4UggOG?y^8_$061g;*+dVJ4=BW!-3;j;(ezNp zd;rWW2DF~#YxUX1fZhQ3!eYQs0Nk+{Fckpz0)SIudEzf7fBhFmwe@UY?msNE9KueR z9HwIhBLVa40W(djOX)i7!a1Jq-!J!cPbclX?M4Ff50)Z(db0uLeo!=duWmZee>gUs zZP#qAE%60fa3#vQZIyDp;)k}?xdzLVvgD2Dvj^Q@{BJB4|AhuKC_bH<{F;s1{s-#d zkb7X=#wGgC|DsH%fc_t6$co##Q#>0s^B1JE=|rqg+heOi>NYCZs~=#JjyWIjMGwY zK7qRIwB$1)|5nc8Y)$nCsLm}#>LV{u!X`1%i+&rqn-eq72p#eJs2lY8zQjajJ#caq z)?YMDe~6M<%LScl|KA}$cX}voqIk-TnPc8_vb{H8@XX+uF#aH5Xuz~Fa~h353>cT$ zTAqgS%z$x;!+1?(>+w{pkZV3GU_8lT+_Si*g+F!}B5zSO+_WlC;zQnFeKJF6It1c4 z>)<;T0OL)+pD@W`lZ5AjCjTUm{;12zjN!T>lTNiBR=;|uN$%!Kbty31XNRm`aQZs3 zMt_8E0d;90z&%<9Np%9Z_At4enkQ~W^~<};PE?xxvq1D0u0GT{KIC2Cd;dHj{5p@Y z)=!*fhH$?_pjsz=wF}P)1nld2(+XGh1=EUoh_?4uQ|k=13VB*&Z`5X{eQgTQ4aCM& z^)#)Gr9fI4??wC4>9MCW>{mE!FliuvxfUPiF0Xd{MIdhVTDGQC5>&EKNc8vzS+~27 z`eF*t3;FCjem382#$G_Ln^bQ=C;DQyzHMUP%T`4dS|44^do{Qx%Zlq-*3~+eohQ0Y zBD=yQnD6stweZBBEy{OW>+?O(h99!f&|YqsM(HUOS#A%X$ubbI)MlueINTZR_{%`? zt4n&2u6Pg@u-X^j%#gqF-y(PXm8aYydxVBGGoSsT02H3rqh1Ue{51~O)fY0PSK{hs zrghS@l=M}qs6(qqJdD~J@6^5U0$;4WaY?2*y}8((I$b%}`fF=E)0lsu&)1^CfOLrc z5@`Qx50v-e80U5os!T62fzZtHUG&{^n1iY{+HTei?JiIJg$Mp~*S{r^$-F5q<@#ohR; z9eMrwgd`#fmw;VPAch1IqHrX=vZGLihOeO?v`S09LLK`YS(0rfvZUw|-)(_n%SlWt z?hUsHzLZO4TM7gUZ7HH8+!I8dL{3Pl%B5UdKwRovWLy8|H?uqMp5tRh#-#t}dmbP8 zoSoU(+1c6K?CdPw4dVC;(BpIW*@U`AYb~us(Hz!Oi_w(Q#IEhWo5BDuG<)4NutQK~AUF zkJ2|HRE9dCQ(QN0RmNsacOHUg9_7f6=M4}7;z29n-4UWb85N=#yid_PT4!ku>r53S zav{QZBNyZd)hd%rZyfbKv8i1f;#ORPl`h4#iZQ@G%EuB|)uAOZeiiW667-T^m@!Zlz9a;A9y#PV4=(@- zKw?kHN|bJ##js4<_2sX|PUT_PP0<)>aPo!!K@j|p+hh;_h-oKQh%sggcd59#OG$i` z7au$TB8xSb^T|hH*5fvHD=tSmhgw1(wOR5U|k=A-k19j(Suh$T!ie`49pfM|0yg!32$72+q)=7-!>iaVBUk zf08+u(<{J_gDLJG+Vu($n=c*tAxp>=A8_X0REnuHN9Uslo9n4{)(=R-H!DxKx>*w$ zp$-_kK@h*=7G{W#>SJkcfMV<-hOD{zm|tdBZ&rGL6VL-wh^UfCJajvSZ4Q z30z0ojF>(=x}oA+O95=l@c@8o^v|yL9{-$Zdf@E+hh&P z06FE<5$xj^*5Bsh#}OspJ##j*Qz^YASZN>w>WfTf=}|8IsFzVRpn2XMS6mu!GToF)RsIByCR4k^BQFNMdI44o_UxL(oB?sj<% zM?-Lfj#>7^Zj5lNz3NRkw9Js5vzRO6Ie%$rV2@B>5DtrDy%?MwDh18?{oO(Eu&k*WWC%s5GD^{RX^m*sJbo4!JKLF;~}UxSL5wLu42$+2r4Gny)Vd>GCfn2 ztW0;mEx;}&RP~poAQk6$3L3MffGsz4R*sUtwhG3!YnMEYvF&%_p0}>Oqph{Ax242J zb~?13flu5%y*t}8M}Hk$k$;Ee)r!~sKkj`zk16vRa&J8~FVx;Gou!I056i&5thuji zV|!_))6p(%9%yY>cVDS}_IEwHG44UwLxX!G#my86PI*Va4Hj(<80$Bw-vT$~QQo_@ZmEp*v<{yQYDG7zWN63X*P zySJ<76hystOJ7?l@zaq>%C^_sz@xj|AqTVxhX)mKB<^j=dk5Z%C|cX!-qGq{eultL z12^KXKK9Y3^k9S{^`~|o)D_KHB7})6w4B=aDPGce}VhvrBbvOTMFdE7z$)-JbJutdhEeFOH(F&K71SPHVd) ziZ=H5wQUBE?1T+s?Y-=+jDotl*mFFNqL!{smSP-5NWH1QOB|3o{3Pi|%BIItHeXr6&xCl>@$;n2N}_i<^P9=e`2*MN^BuI3 zjViFR$##Ob&SQ9IjJFerB8MFYe_``3R@>MhUJ&tq=fy1oM_Rzzhd~ABTX60PvF#FrxtanX^(M;*B$r6|yM@Kj&=j>7$VV z@CybwbJ1h~IKlvzqw0c`)Z-zbNdfeP=is6_)i#B4r~<3Ij;a@@^qyjRjba!q1c2EP zFdhJohJffLo)jH-9K>UOe>ac<=c4nV0{-ska0+=VELU!m3bhqu!K|-D)rDFBKT8M| z$37gY0(&?9=Xb50*vAz=L+`EdwoPaFoKYa&F=3lI6bdxOao%LL;PK^J@RuBmfo!uc zRVXeNpaKDOIECKl@}^R$dYNYZGCv8TQpu)}uefZUy<=WUh7~7+fX*T~U%$x!_z)`Z zb43?vnH)nK*ILqMN`X_w3=JzJLwAHniW3T;_c@DCQ2pwQwY2x22pvhGA2<WSo z!4shaDfB}pLT6IwohL#Iuke&J^ii&i)B5oMfG1A0pG23WIX)idXi@+IXM~DfNFjgg zSV#puodV(Kk5)LLeVZ;#%ltIT1d3PgfdKdg0Db$82LL>iqJZfD@I~YZ$yL2FE$dzY zJ-J2&(0#5JLGzBM&@Z0|&0gk-;z<^*BoEp!rYCW1_lB9pJ&OaS;!2*|$57ekNvdR+o$$2=qBDTY6+ zHI0JdhM%UK()g~UfhNZ3j%mR3`;ezqRil_cm>+XeF*Eejkm0CSN&KfHVQMrY@qj`z zct|6i0w)5%&zPQ@XQDc#_j5-N%=3+|c&N?~$-|14fxWk62vQ*ZhHrUDgYpo&@dzK$ zOd)zIj#BX$_w_b?w>Mj_d}3qL8NBkZ_B zGB_j`<~+@51=3$Sny5a)h}p!>)p-S)Ug^uuAW}^_UQ}P<0r1dd)lZokPl0z7Gc}=* z4BoFvJMT;Y_#CXjo`Y-#3x?uiD&T4j>!G#dT{ser5RYD8m0h-O_>!uT}E5R2I#z-6>>`BYHx?(~6U! zw^yQfI6-CqmnWN{cZ7gK0C*<@oTd#2fOmy}2?fBNxP<-2KlJ6$dy3g_N+Aav`@xoB zLZKNt$fY^Pqia0D42=Q6m6m&%kJ!YxmtrOYv`+&~^S>_5{}~3j`c*4{{?74}c9>xW zX6UnFt_cOums~FF|L`%(kKE!kfR$%{Q=?RA1mq)nU68vHN<#s zgO6J{<5hehU(0`G*UQ%ivA@8Pky(NBKK{n{Qjrt+hHPT4K7NHwXyc%tAZM=C0tcLz zMi6px;7=9$mJ^{>f2PpEMRF6H1;)Ga%P|r1w|7@OVH2~r;wUCjYZ~xQnA3uh>y*OV zJcYv$E-ymlwlfxDc*Y$Q0B`s6Tp9D`BQ`N#tvE_sau%ff}7tL)9k3RWEn+I{gK7`Hx5KxDZ ziFU5S6-+t9cZgdD$uKJIgt0+VciS;bXSLddZpz7pYzrR%He8_1m?QoLImXoEiNLB7 z6JEU*u=o@~E%G*|je~Z`qA(`LeABKR&X^@5tAdc&IcVv*xS^j|b8CfMcaIN%d!&4z zg7ULoi6@(#XkGzH5EtR7sBc|Do{KFak7N);)N^zt|for#p!gWd!6Qbm5gSn5I%@-0B5Hoc!Hr04{N%ZuEXm!OZ@_~jBn5^ z>@F={1@o3N*{)gcb@m0|<0Hc#1eV0YnH$t*ZqPjUBM+1j>gWDol8VRccemg;oOb2b ztkIW)sya01BWw;6KR0w94tHRi@fC&RQ?SWleiDPdyf_IuZ?j1}YNgK* zzerym)DGpQ7oi9u{4I|*4}~`m(wSN`^}vIOX+YL2lYJG~p@FLdV9T1lnjp(S#@a85 zw0*Xgs@eaJS~05xa-+}hg1G1_5g5f7v)3jEWE8yIJC!{wb>3?e({P-}u6e&=sDZq= z)kq-NGaQEKYyZgKbaxmN#w;nLb1{c+AFD==u~ZH+aT zK5pSTS7X`@!jg}B(BheG6So;q^;A2r}VORYJoX`nwGv_O9k3BOQzH;+{Y?%Rs#Y~ zU~VvXRm_Ig;gQ|S=x*MmPRZDSUd4We!U`BOD;`IYfZ*q;^NAW7c6$>hBjODs)&3jXd4X%kBxo9nY|Ve{U)~>60uykSrS6dIm8MmxpnfjItn* zVE}D7MCW6$!Al|1CL(xR#o~E68s&FBe$Wnh3bF=3ry#BW>EVKUa&T%#hlWEWdb#i3 z{j3F>RSSmSr&{nn@tTA9csytJrN4;SpxG=~)Qc-9=~zN?I{Z@k%Q1P%YyN(23ddTY zQcOuYODDI>c~ILO(AYs7{5X%v#t$i{pAk+^+O-p#h}Hkp>Y?@H$qm2s3+)^wf-22l zrBtnvn@O0fQ8oQZI}Z`vQ&Q~>T*siibBEyI2_Sv{r)s~F zxD#Nv07uQtG7Rket%h&e*gBi9^OI-O0nPYPmywx9FETa9{b5D+phG*C&SVbVvKE!( z4_5Wg^fQv;o_Ahmj5mRpPnm8EZ(dq9N9%PUigB2{7poz(xP-)#sAJGXa~)rhNNkP0 z-fvC>dW+ojh%t!eZDM|0aokeJDw|xt(yp?}KAw6VPgS2%{#TUeDJXmO5u5A|O2cn^ z3oUBJ)Q>F*7xx5;lc@}EXZG@N@O){};m>Gs-@=NXUu`Op!Q#1KFy>0g#S^IXCtsDPQi9(A=#1+1(vc83nc!Mxt6DjPoZix&*p@#SzwnGxT?i9yFF_K^b>4m_y zc}!Dj{kD&yPw{WG9G?8)p6;_u!Ww6DwCEnN5>);s9!;Okm1n~kIu~!v;{$H%X|9E- z0bN!UrRlg$;&W?gXATk)>xHvJG)<~_{*^^A1|>Urg_U9ENYn)kaypuczpOghdizXF z0^4M2@@9>HQ4W619F$)_-0C$C{ISHOZpF$DKsnA1V2op3XK8UJ`OD0+c?t6BKqGJx z{;(qM8YQz2HDkJf$Fz~#;5pm|R~@l~v^6IaF2)kKA{d_1dcDW3P93~nPqs2^)35fCtX7-p(;`7jg zSlw>V(azjTy2-CpTu15tp*E)k(;EX@r`A!*FUTQ9@F|sb8`H3(I1Z+Nq#XQ&73#O( z0A+ETKn3~BsdUxsPnCl?=3ojF@Ttk5JO_Sx!);UAJCOw{cHpGjlH@_OoEul1>rwa5 zl-Uo+ioD#CmlfHpz#&Avb#ogUmUUK?gxLWP%m@J7T9OW(S1Td<0wbkkJ11d*$3`hr zeZ1cCsXX@%38A2*sb`kXh8>$beyJ!sMMEZyIdaDFxotdd3$Tl51-SIYxDhwG#^Tn_Cgyhq;XWT%q`b9{YE=y z7qWFUg%fteSZMQ|_*2u^INTnS!EmtrdZsS*=jxgd{$Nov_@&;YZ6*^be@Sf z;Z?$*GdOKmNzcqF!yo3;x+zu^&|SbJ#ZpCsuwUQ3G@?>-IeMm(oWFNYmZnsziz^O0Il4q z2G=Glu}Uk?mAAD|O;+52912}?VjM;gtPf!OPM~9%RJhG`K$-XG3qnrFzFoZ?h zM^97>G2y%bY5_3~qEUICKnJ*9wyZPHRx!Mnk5k9wY&;K3J^a2!BTeJ1KY(pIS95&C zohV}_TniKO`S4AL9m9OUU^vCm%mFX);pb?^k8@E&zL}0y&|(~;$FwQu@0?aYPq9D2 z*kdkk50+Nu+Z_8CBESdb$NO!vk}sp1r3kg;?w`6nbm4qQ?fDrx2TmI9^ln(w{moW( zZ#Ngt`6YVe3w%zPHDF;$Jx3-KmZ4<<)fr8v-;>iyUUsaCEE!}QnJVkhrPejH7UaOa-WZxQk>lPG%=#gc}PNxX6i$p{pglcv( z61pNQIwrj-vjeOWZ^5HPBnHxO|rfwt4uQDtqpqVr4M zuDTdYdEFKB&KO$+9^c}FHn|=44HdylHUEFP;!+LIzRUwNh}4-XW0L~N$CN73@#z%f zDMuHY0_&n%r4C%=iPNC-z~qWnANO^ux>zv~sJ*!N4W~dKmceO626Cc4)riKID;d1W z57!42q#|-BRX?d>uAfCEuEmBcXT>F=+fC*8NIfaE3`Nh=uWj?byc)I$X&GqZj`W31b^A27wN)LrAg2dQ~kHW!5 z&eTmUxW|me_20`bHpHu6uDXA00`?UIHW5=8cX0E11dzeXLWr0eR65_VX1ATf(Cs=^ zwpQ8sJLj*5qVS1%3(uv;v<+_(u!n?fSiuvEI);ahOqd0Gi_OzcU13hwIoi+8(7DdF z)0bP7co;ob1~Rm=nAGR$bd*f7&KE3JOWx_kI0ZQ58(^Sb>Afh$jH`Bg`&zU@5ndt) zu7NB!&}MC*@f7hw_{qqK1c7iDWiJ4+OR$`I*N>H0Vol*FpX9SeO=FBrT;U7O(25c% z%qWZ+gsD^tQ+2-Y4L5iS^!tK!GAR_URLuL_tOA14WKLji0?NKxQNQ6(K{b%rNQwaq zIXbixS!thb`hBG}$>wO$X_c8M>x0}$w{j=NT8oD`C%M(w*g7wyCXSawi}u0CE5VM% zEer-;4088W{*xFV(1~Kkzhg_lhfpYL`=~?A40;o0CW=#qhVRoPq(Z->1tKs4?V#Qq7aGSw3o%O0_mM@I4>uQ>T5g=dXGapnJl8$DeA`^Dkzpy ztceu$phE@KK(QMCNQr&YVK}iZ<-WL9`{GQB`6*r=lvONIFZoNm4q19Z1Kp6S8A>lw zvo~N+HP^Aq1>f1vlr__ht*-?}nqXf01UwKV?2qbdC%ku_vyX0sy?TevCQX0p>zIMT zy10D?6j-!sDAm>MpLrVeeJ3ZbOPS$sCPn>8fEozB`;AKMXAZ*&y;N7T*D2=DS?H&$ ztJQz*31;Z6rbHG61+vEtMj2>UsVt&5c^b6Wtv^mCi^&xAF9Xy-7ENzfV()MmCy_<; z7mE2#p8HQ%7FE}Kf*JZ)sVo{5sCUH5$znQ1`;=oJvIr_zSe=&g&C*ha6-eK5*~^tu zy~fiBB20NNEH{@p*NP~wsD~ZJ5{3p+41a^_BoePKC@tKi8ar)?H?DOAmlDp!_u4!> z3G%$34gO-I;pUk_i{`-TxE4vBU8w~)Ev4Xp&n1T3BC651gD?&8w ztDqgT*hIC;hQ4~87Q{=9snUWLVAz!qReba+j0ks_dzr6=e4$OFa!ND5;YT(N4^hV| z9P{H@9}cOC!chvJUr_%bpR&6e7H-rUex2vNF>$7nd*{4==S3xqV%RICDXZafl*AC& z?RJQ(!Jhv(^su+mj#YkjlhL#4K)A1lZw98Bf>Ax4?S8eu%Wavdf zdSj5D4br=V^b3OYks$pgNOw1Cri1hgk?wYZRa??>mm}TX5iSJjFAdVigY=gL>Cx7d z&P73bQ;>dfkUpa6^osM+n7$L5oT1Bs?%13O(q9#%XSb!r=7RL5AiX9?AJBBFm9~u4 z%r>L24Amiz6J7Q8w2TDlj;BJ9jvbH}-FT3`68KJ}(TB>Mv zBbuDSqcEvGWHJEU%P|Wap=f7X@O>emIskk*1QZlNUvYbcR8Er$%+OakmlIUguC$!5 zF~Bj<7y!Nz0=gAI-$cL!?=&^6=^6T$FvCOuI1~bA0>FbIAUlvU^-u_CQUJevi4|H} z#|Z^yF#M)>iKDlq|~V z0%iihbO>l1Ow0H|2pA3kKMVoW0pLGEK=m!26bBg5Mr?BFEL!uXG}fORptHLrpTIw0 zfB@4WOtwRQe4X4ABK?MuiV!CD1_<$(U%OS`8YG(sE9TfDoY*0+lLNPf2-R~u%>?l5 z?IC=UF#F)BR0?-h=zd#>bctSioheFxkU%}p<~o$%rjDjz%{&LyYmn8`bWyTKf-Jl} z#MUs3(?!X1o=EpQLTpWr-dQ$zxF}g^SG}t&_DE5(GMIgLh^<6MijtL+>i2}$nmkcH zx#_(jw$h#~N>(C;zYejL!Rex8B~rK}#8x6R<&y{AR~EbK{b91w9xh5&+Sw0;*vjBY zQL+-relWyVBID(g8$VPQd$K55X*bTqJbAvV&j+v)nM{N*uo9Hl{ZB!@5?J;NC9t%16Q!V# zKi8ojhBLg$`!s@k}ZH$ z-G6e}#5}O>2Tqg<0(msu1_cUJGiyE5y`?}V*b++|1_qDaYI*P(LoE1^Dsi(Ocp*M@4uIt;<&4EBEif-tV zx8^E>_@D-4mY9LR^5M}d4ShS>XY-Y0&83v!lnCkww^0tH`Kz6S{_LxJSTa=_O2lwc zfb&uo+miTUzon>tyT{7V1omjKqon@&+FGTpVhE{myQ` zs~UfYqfc}h4w0uU-?5TYqq|{7{~Pvj;jh)~SZ>(n2m2i^K)_{wQ3IZcaiJ{)Y_hat zmf}{MXP(5$%vNI<|MueQUmYgu^DIK6z`qWWGW=#| z+)H&hr#08&b{fBuPB){vwD=zE@Z^5zF8ALmKmU*awHESoXOE5fIX7|20H1Q7mFqsQ z7`j=kwVz@2XEX}p`+yQNcu zmzV1WUd1akAa1DP6{6vVi=C`YhRz6#CnK6pXNd;JLux#Fd79^ZcbLXa7QDh!2yn#0 z*dlh651C5IvEp?4>E$+baS|6#~Ft0$`_n)ZF0!^ezUSP}l4$Q?hq3N>OEoJ-E_4 zsi4>6gKmSk2nqXLqSGSP^-=D~v_-wXW-fE3RMN#54CD}dC35(OP^?^({0`JNM*Mn>~C+`O^7qpkO{^<9_U+}7FJ)pObUuCDbRm=rsjJJ-Lmt7pA12y8b^ zOM?3mU3Oh>TTkz0>(({5v^1XHV_)zIFA_1UFqht!+Iegy#{; zGu>s^xA*q-Y$>}=Xw{JS72(p^L=iW0n~!*3ffoeQmk-cQv97L+qLvM9EjPAzwsSQ8 zaFJ2`K!S8Yb@^bato{i@~p`60%gu8nXLKuK>I5bf|z66fETR{HF2V5dPN{DS|&gKG`P0Zd|Fkm!-=*-a=u4$eTo7$gwxdp87goGs2Am6cOBMh($DH&Fknq z>~Uji)>mCe8kG9Wgt|me8h(7szLNX>^C6^ z4tJ5>HL7}zA|dbx)~>)RSQqhM&}rAG*&qwl?my5B@Nz~DDOj`cKHb#Jnp-L)%goi9 z1-{Ijg)dd>-6`x1V#Kq+qMMiHXkYwb+GgqT`Z~+PMjF=t$N@(2KOAJVbkhvSQK$|s zX2CWfp7Jmkz-b+jN3=i0h);pC%u*`MddI1mYn0(5yo(-_{Vmsw<#WJvOWm@6q^Pru zIwc6Kd0fky!O?PGpfgB@X=XYAY9Od&tOzu9k~E)s776){&I zw^zVZn<^V185StfV~|K52%?JY&uI=YwUQL%67Uu;w<+{9?1kj+g0hI(n4eWV!O^LZ z?-+a7nHu_&Sxc{Ku*pL;vr_T~C?4aI)Sh2rmZ#>?r&&V6pVJSt z6M~=Gc#W;Kt*BNEOzNNYku^u&q{Q!M2dXJY99qK2&;fDU0@E@2yOad`3X}yeYZkZDV>WLh#GoyK=PZA`ILM!h9rp%F=fc6!yo$ z{NL_^y=y^v?~k+?@H-zvmpnz|Df=bZ_!(5TovVsL{w zLMXltZDQU)&*R!3vXn&|=5v<*s-hM16W_gODS$hvn&E3)DM?d9y~=2cR<3kz6Kcn- zRzkEa_BA}bZKn4uR1mfF8*RvYr6FIt;C6h~$(j*$3aYz;CZnh5HDxMMP77=3o`rIM z6`iFlJY9o-FM5jmky%QQ?VL3oGX0Ei(SG`me)N-N06mH*%=9-qa+XHXw)Ei6oTVf9 zYU#@yr&XJzs4?QZ-8Bn{fk)7yYI2IiypHL^e2M&&=zuDOD|Gmd9Y&RXG_#{f!sU5_ zm^fz{o_K_g={YdkJq=3>Aah^EK1;vaK4|IVkff#CcB*Ef4yVqaYnXqnSO9}4;c4pm z)o33*xN`wAE2f2Csr(VK(8hH8PF&eJ4WV%i^q9VAit5HSC=!$;6%R^R@}MN~3FyTv z^+T4XBMePVx{>6SMG9D+o%wpdQ{?Yf?Bn4!roY^Y^DSg4Gvr{hHTAeNDK{o=v2+g)iSyw% z6yg69H^zMU)kXLv^otvY`6Pt zQ`N%x-_44&aQt7NVtwC$&iz}HFH_xO@jQKXi|~i&lRI)|!0oh0_Pgc4c^QJM`k38| zF%#{FN4T(4*n>EX{sgM(fXAorx!o(aS8Sd6uxuBxB13Hxo5Xc|!fP(Xy`aR#`;9YV zRgEc`J??rVvdG3YUV(6}`m$KnxZ)yq1&jeapmLe-<}%HNSY4XzQUCJ&^xc~0V{VnB zf<)agop8rBsi6Sjw9sJ@Ob#0)Fa(3a3Y&~;0t_#~uA8SIHp!S}kLN&wwhdZ71Gi>( z1*R$9&YL&jD_k4c7{GQV-k<-N}R7=>nj6>oyYE|ysHlM1}G0y)aztDEo4h15Ok`5ga(=MzydxOHWKH~-E} z8?W|;til%+6EQ8A5#BNK7Mz>T`6m=7fH$!Tz-=h8rj@qOdgD~}eM(H^!OC%e7M)>Pkvs3 zng%VM#}vE4YydqMqhav-1#{G*%O8{x(@n)?UO>-9>v0|)1K8jT*~=h;Oy*+j1F7jy z5V!M1T)x|lLzIlTJ5|W#XkAl7{Zby|q*`4TJ0@zSo+5rtJ>4J#oJA<6m(Pg=p2Zy8 zTq1!pOC<2(Ia*&tF%E14%*Ar8KmWXdE<}RK9%a2}g}oj`O%wgGcI2w>yT(5shXEKI z5crp4fWSas0TM&?7NJ1Exp@l&V}4L^+&&8LC|gs9i?QA-D*GQw?Ilp9F%dMML@*cP z^#Lnc0&+1Nt<2RB3~fE+uh9(rNU1b{$`m&v@MVa@XpDxv)hT$ry`3Lyf(sR9nIUW5 zEPWYctvOtA+^(cftR`3p_f*i$v%X(d|EHFP$8va<1YH>mW&CsBx#~7%Bct2Bu(q+Z zSMX546D(~S^(O<}KUeB9?T@iZobA9^pzx7`P~>6E?GjPJfcC{go3^3-Y4JUD^Pu;2 z8=uhve&ufFJ%ak*Q9VGd1r}5!J*>?Yt;jAeaJYA`*T=lbCyy&lAMOnuhGloaE9bzRLwb&Pze6Kq z8N=eOMi|KbUeOAX3rqPNdVz2WJppUr)-1>9p0`OY%K~NTiVqbw7h@a&Sx!b1dK`1z zlQzeL4yH^DtkiSJtHPwwQZExxO5Z@=0czX~VYFiae?Wl0xg*9YUWW(|H{$sNPI39F(e(cFQ>N(lF4c`$));K0o-j3BL8 zq8Z342rH}2euBm-7)MlzHQhcfrtPbI0fmefaM*Qs?yoF{&s9Lk=tyqmJ9CC&dq-Fq z*wJ)uakAg{=*cr3@^f)~tgO@X_t|9rH303vD9$4WWge5zpZp7AoEyLAisKx$zYMn04d}gv3JnwQ67{AqbM@bhSTuTRp+Fh=9ady-Z!0H z0KuEWdE}0KP@EAf4L$cf9@iSq0UHNT!#}@wOJ~c%eUX5DS#w|4#`aUlR9w>qJA*kN zy0W6#sE+$BU7f8?L>v42+BUoIF7vD0Pw((-qNuC0#mf|5*Y$U{IHc~bu8!dAP5o{C z9@CL?(4I|UQJb3E`_}h#_4}&?tzAseL_q^m6t%Xk?OzW9mEsyR?iw>QRB2$V#w0l> zHwON0*P!xJIhL=aPew#a)VqyV; zaRWmdMt51vV9CYAv92tWZ1Aus9$q8UU=zBTADOVSWHgQN^oXfD=jYbOk0@ieI|B$a zhGA7UoNNt1utaZqss6v3#fRwxhi3Va-F~W=PEr2OQDuVJRi%HyzJ zn0*-!GnF_zQ0pN-y$^pvS@xl@Fz&~2GeD8tj$F-USWIx}TmH!&Bj$W;d*Tz3m(q4# zuHT#nKpfSAd@M@{7-f{G0Fv-2NtQ_o<{^y8Y~Q8LqgIX~AZBOh3G|@*pqBX&7mKM- zulG_WQ|Lz(imfpdW4nZ?2@6CF4z<3iqj4qu8JAgR?Shq8V&MVcx&rQnB(~NsyP~@_ z>%DH1E~YuIG&iyAVBnP$C2 z$YKQ%H9=$0nnQjiH}Pp@5^tnq%ZI`t8vG9i@PWJzi&l8avA7Up2R#*r3<;;?%tN9! ze9Q%(mUz6T20j&)t<{e%%!|g6_aBl)_0HCWVO8lqDEEr zV!eWo`dINDED<-$cMppe+5=@wVDwpuJ5YntYh*OA<0uSmsC0M$7R5(8+8K(71xX^d zX7FGxz(9~tN^bcPTHGMPEP(*t=<~Y{(Y96ETmD%q`~U_ zjOT4!8x++AJllF){YY%Qf^NdD-CTSGat7x-+}XGan+n=CiV&}Em)Uf$V`MSCTo&>2 z9LXbiLhA~;Y0x81rij0foy-_ljfpqSIb9HWz25zVKP0UAgtvzErL*oYYk^-vQ`;%4 zF@L60*cTma$Zu2|zvA*OL0}jb0vg|0FYpzW#l&ZpKY0ap5AODyH-1%fKE;O!W4v4A z-4H81cR_jIf=}0AV|f(8TDif|HQmVq-JlbA^mQeQc+(gTFw>w9Ldck7Qra?7?}vSM z5tg;U0u&PvB7s3kM0U(d4BskGfxC4;pb`Wgu?cNG#O6QRsa~K}_bX3dgi_ftw!Fjo zj+&rUwAVQLD0I>+rA@OiN71fTeqmDefYNx_O~`BO!K3)TK+ebtI{1K=%z2050sNMV zC#;x>hn$g#*+N z8Fxdp6~zEqpmEXogC2o*J@dF~NFBPs8$P7;-;H?-b*)#U#iT+rbcex(I+TfLJzY4! zss~;6Ooqczaq9!8p7#gQ64Ml5{Br~nx58P})_W4eilAZeM6`AFV!+@f2e$d|v!3#l@6r6V^m%CZ7qJOOL>; zf!}Oxs^f=NMXoX3fO6pSK)tGgBZsxHx3Tshq93%oY++~?Ul0lp3L<{2j~kBtA!#j2 z!`t)Jr)o3tsFns@g}&DZPbz-LLo@Vf1>|0D6XS*GO5X3MRmZX~UpDDrowyXN8VJhanc5pdDr4#*QMf@ux6} z%(^)##%)x0DAxUNnjZnuv0DJAD28kU;?BZHW)Wn_V~3*$$vHvZgILM4Zce0)tHg32 zQ>V_<*?)IsoI#he^)9jXgd~G4%3S8P_pm zJ%j3h{{zkR1vG&iltF@fi^|hs7dNG`_qv@r2Yowaf9QyuNy}vl5;=klv|N@PSVoxF zp{L^6Lj!$@TX3oi+GsbXeH+dO@-`0>eBS1<=*!bhtGsxkA8ApDnmsgL&>6HT1w91G zeF{Z;7Vw=a8ZZ~e7%IgqMvLcY1CM~uZa`_&t_3yy*cD{CWt~MjKB$|#6kaEFHd&2q zU-*e;cE-Xvzh0hHP==~;C$}-;W5(=HPnu;|LB(07T{`!0Gag)0ak>=!m(Uc1y#a#j z?$OU20xrMuyKuPZlJ_HU^z#6m-c)TWpFC1Nc_vIYY|S6Cd9QyXzX*!JJ>n@=sz2hZ z=5IO;`%!z>!Yw*wZ?esE^9|Ofg;NK%w@sD1^xp38S_vC4#h6HqJ`|}bi6m9+KfzVC z$|%~{-_h5O%(#ZtE}XZ5{O`~s7`U8h5iA^e(z`@`{+p&&fDodRWsd>;Z0HR+@@s)<|;q9%QR~wl&u7be; zyqN1}eV?2Bjpq20%fUM?baFnPac5f+Dq%myNz9$-``FjzAGRxPp0*#te4@|7Ha)IH zzvGF*o^P%>?$_AaCluvh+-46&;=@OD%tU;U2e>PF&slF1l(I|j|BOGWB)-6}{ooxg ziTEep2y&jot2T^X@)oY3S`0GCXoM(G)Qj$}#*VP*Kb!_@5W9Sg|n* z)&OWakDG`<+yrT=Um?c<_xPe(EHUTJiXz-AgH zjCDNtJZ*ltWz&kB60~^NKcYwd^~vFR)`Jfy$0q)w^nmFFQm3z`G7KIj{9m zA3hZcznG;6{9+nX6n+jJDEy2QZ64*7I!`@RaW^w}#0b;I@oHDcP}4Vn1|G)?pl z!bS3wO-z=y&0_JxOs&9KFmf|4&{(ng8+V72bpP|{wG8DwtG1WPhJ(S#ZtU0K4tST6k7T7VhD zRMVDOzl^UsM@zWP4UcAc)$s>OsS%K{uZNU>7*!Z#dP%TKBD+R$8LMeMC zhA{CxkTEjhBQnM}eB>7#9zd8n4)JryBIcWOIoh=VJE!~Ure(fzbelZ5kDW(( z_G54_2cBqqlz~$J2bs4qyR5lo@XQ6C_Y8fm5?f-7EAeq=4u8hOelf}pYrKFRuEfOp zzSEyr%g(7S&An}X&1*Z_cuiOlMICK@eQiB%jaLL&-_zW^p`Fk75Id=Ty#_Xjq9tbf z#jbvq+>nh*K~4B(EUScCx`tokkQX7;H4lP{?J%9%R$r)?Fd$;Mgxo+ET{lL%PSsiX z+a@yB9Kh_!L}2rEyZFZCjtt4Z&26v3l(C6dC}Vedn-Z2nXaeUNj0P|lVv3UB1iHQrK( zO=UG=is_QLv097$m0QK&7(zj%p??5Q{Kq&YyLp;gh1R7q)uqsFx0c7F^p$e?H zSirYJ9tpukByAPDfvr*N>YL@AZGaT~sn!VkTBd=1N1=GO371 zHH>CU#RAs7Qc=7`jh(Iol@d|9Mz?u?%!nqXwTPL-*mB!5iF~ z0>IZ8;2hY86+l0T&O-s{+xWlU#KP)Cit;m<8nFq&h|kAV@)zUqQJd6yKE|)~eDJe( zI2gki#-lZ^(yigcHyQjeXYl!&v!3HO=!+NUeHBDc!RI5f@wq7V!xb>90)YphgEkeK_z;Pvhbl`D8-f#wTt)KJ@$GSC02W;N75XhaB~bMO)$SDYln64ih4C#>;y@nv(rK$MwHx1{MEwK> zBB&}pd;KB2>=$_I_oQM>Ogz!J?lJPmO6$9BvI7mzoUHi3vgati-tyV1%Rl}nK7WSZ zi#?4+oghE16KEZ_ICfZR_4Zn!$>pi^9?$5r&ZTv?@1NDzD%N>2VlWFZ2|lb|rYX+l z4(HkK>JFG1Yf8l{+CBy*>Q#?<9yOb{!Gh9z#Q~(W`ONYb^2KN z8x;$0bpZ>~LVI#1BK@ z+z+`&u)Tqup6uOHUr++mCQG|!>uvHWOPjDP1D|4Z0mj`p2^*B78rq3d#q>?ufj4Q< zALOnmw}mivfdyn|(eRSbJO*L2R}_Hwpb1b~>OcZR0J5Qm?1X_kE|#|DXi)>##~+j9 z2R9Pj4VV}QeG$Gv8&r4zJ!sdibS_o=+um(gQeV!}8CWvOs*5Y;GJ~lD=;JqF=~a0T z?abAJ0}QJ;zUMB3(=PPrO{46_vSStMb}dXLKD%r(M04DYgX+AB>s_)H7V*H2lDAW; zJJkinyMtfo_juc3zMZP`J)zL7c(+?ob4Zg#4%u)|!(PK==P>g*lV)M9W_!1lvs}&Q z_D+0V4sC(YoW<}kScgf=jlof?lK4naG9IvYWBhoE@ioOjqse74eDiH+-YC9^tfo-6 zZKF7*wF&JQt+k2n3!2txp^qs^xmgIIvp&Pqph3uS8vaOJXFl!~inYE$rq?UQBaR}} zrbx*^0s7?p_xOC0)uq2qd-r;?$!E{2t$U=uHg#&!>+TNg_kfg<<2Qhk9MdXr|; z4Vv#`i=~mcUC|)iuH3-rSh9P=z#=ANa4*d`1eHaGF=@dyIOI@qj&x`VpB2ua1qmOv zvB#*nNCXKAC^ClC(dO%X)v7v`z?VV-s9*djj8U_8MJ*deifCMK^R=EvcbC%mw$R{O za``eMgIeAu@xz!YY{py>P{trVjqF3;Mf9fLC1ES$x zrTr`6-3br@puu;15Io1L>ugfzRc@kBGd&q*LNz(UTs-Q97O$>Bmve*1biZaCj9HOF zNugwrD3(-A2)t3z-~|=0hIEozKY(;^Qkw6KMak~wt|^_AJ1C!wi%va`VH7*k#Ey9r zqlC(0QKEbf%Vr!V2P&W#<36^>Xdy;07gGQ1YTBC1p?A9>rF*OL^6e$UOI(GSgr~4^ zbaV_Ftkd|#^BI~E#iE01A_nOp%}F6u@R& zSBh9FFi_!);DmzE&C$ZLa051$*3`vD<#T1Eq#Y>adK5yNR!NLO=Rz>?Ru%2Rj1w(5 zz#s(aiNbQAJ-kFYRO=TpBe!VA&$^7rw-!!ejgYD?~F;tZXKkr2GH8X=y# zn;HsxQY3zi(rLhmrqcz&CF;yWI4?Ju)pQyB5Edr7pdQ%kiTWKNS_fHD0^Cc`;4utN zyHYQ#TQx84Q(>(JzM&3KeAZj01VbY2Jmd|Oh1)crfASj}7BBYh+ZB9=+g6Fx;yL5C z7>)ZJilJ$sa4F~PhI}uatM%nfd#oj>8@!pACEm`Y(G}4$F}!`zW8KYS=pq)p5G2DP z6cz)%n9s2~BN|B}iZ{Btj&|j0WhL)#n+-c2m*7esgu|~dKr$e!MS?!cLLCY=;jz!M zhE`yuw2j~D#S-Mh=fV(m8RL;7duas8h6i zi507?wadvKMyHA>THD{=ks7dCI=VX9Kve+?5}S)0UQcM}62}$;>sNP2bJ6W4pqIL@ z^vNYDilW}O=AM=fz^MrBXuqAk%v;+Q7n#l$1*Wq_(Y!XY)OJ>6nQJ-GbSB~i-?4bu zOuyarDaz3E{5T1BOZRF()jK?#uLh%Q@xt?y{BW>Y{v?Kod~jAWnPzx7FAhM>nu{<< z$76MVS3dAgPd7uC1qY4eL3;Rb?X;%Tt7S;Wz$jkda+ZMo*DYAzxTE-{cl#33u@rgW zfXf5c9=j4RspM_`dY`B2J(}l`bGgOHf^2@gzlBE*JY(}-#l>Y)3`ZEs7?&M{9`s{t z_g^dK_Z?LXO~Aze5(w8Uo%Q&`cPRdUIef?+_$e1|s*2w4aBYUp_3c+W&kY1f;XF5? z>GRBUF1Txz_4AyYJcmE%OU7K_tB(pj{X94RArEsUOhBZrHF|HnQ zD2C1!MS<)vN3i_FkO_k#bBT1cF#cz$$-*W+Y7^|LQ5|y)Z$9GHHFb83w(IHr#7DHC z7mK1}j)Mv?F<5yZ3@j7PGH2Mqv<(c8DZyXZurowEbwkv2my)g%(&IRv#3oAjJku%8 zgtOS7xcH#g&%)m*5!ih&S&w5anm`VyGp}MXPqHL<6^m~Nxrd-YPNFU1fx;Ex3b0=Y zc6q?jNf&RTCtNY`iApjUUwE1~;yy;Zcp|2IY%;orr+D1&;>x@2#rP+bZ@y9FEZ1qp zs{d9I;D3yY@y0MPGoe)Bo{zHbMwLzVQT&IcZQ{I$ATStMu>7X2qrOiy?biZeZWRvl z_F*sCi4^`rHa3lk?x0j&58;d4t-!Y-EJ5Io59!Hb1agM2hwND(FtCOtz8?*srxuRJ zZaw5Z!?CT}Q&VS$V8V4T=2nd>zXzO!)HKZb+Ki{rkKrVpTws&XQ>bE0Byt zu!#p{-y8$XE%~T*tEt84dB6rOUdQv1uwbcn)k1C0wfPu(jvWX)3>zkfU5oY?A2(N% z>U*>%Uv+LK&?2(|B~8`&p{M%Oigtg9Ho!LesXE_Kjh|7x2f6BFGI_CGaH>cR%wt zF(9LCRyq7wV;ivdmVG1=0L|l)Ew&lhvL2Q|QG7^_h*5dCYi*x}-6|i~QtzmxF4usz z77a<8SLqD;d1d(l$1>>SgIZ(U;c<4aD0>6#aj&P6pNp?ieSN=eu{PN7#r7|R#kmd@xLD8BUg!W z?HJqEe7^fN--D7b;2fO?1Ww@mP-uf>&J(q34m_X~_lmWS+Y;Rgw9vI+(>R7KZU*lD zmS%Z-nJj9^;yi9OSeVp2A94mf?&o4w;!|K>B&I=(w}>H#nHSwY=0ydR2=&FN1m^Hz zrP__*3KIzodI>M}6O37jrOj;LTCxwx%Z}K5T$fvov()aKj|!80P+9w?W6j$ZW&gm8 z@}F_svT+j_i<`PZejKwmUrojrbKMahLM)w)QrV!0FXmeKF@fh#p#r=JF|S1$>J_76 z=2E_JtOOrsf|w%AwMVcx!}Y8J23lMT+ltXo&Z+ibWE;2i7deT-PpzXh2Wi`?I_k*P z!FK7IA$nBndZ)8pri(sspwlwX2fRkYw~|F4W`Wdj$?Ri2%Pn_O!zD&$?`tHry%NVz zNWU8vvQac5nn}VMVva)7<0CF$*ujajC}0u-hZ_WzOExN&w_Fw#vtv{YNVcRHwOp?7 zOks?AddsDoilgtTV1Mld%hK>ljf+9By*_Rev-B7&mu|@G{=Un27Pd)PtfE|2F5Zqp zxM-MkA^jG%g+T-uO3~>V4moi)d@-^s^Rs7zEjF0B<<#_lXxT4t`v|lKiUe6L67*3P zboZnNGbf0~A1lpQ1T?Wa1Y^Gy&5@r7O+Zn;&7Ig{?Im1|4qZ!Kr_MeLI2`Upsy)Dh1E?ul*6scjVQry7UZnUV# z)MmwsH2hQFfR%=xUFvw1x?rW>=+)|rwVb~0Z)eH-Q+K9!vVt6G-t-$?u2j57*KX%z z7%eeXKNqeljenq%M_OLp^CSj+zuOM+5G5zg2qxwfedHIKyH*q(`i*X)&ka}2c$5sS z42)Qfn(m?@jJ5DaVGpm+vCIY;yt;+ChPG&^hT&g&g7kp1{BTEw-2h*}a6M)POxxyS zs(6Za40Z7|Ovns(~rz0MDo90)!nw27KIj3N-$S{4s4< zWoa2iVIC3bK*X}Z-D{I$wU)MEtBR`Pp09Ju!rsiyw2jA<{kOPHx84j-nLYn;n@DsO zv^4&poV`|@l(y&875KPPdzYgIA;2`4mymLt8LI$H3|Q&Na<*WT2W>)I^a!asT7teE z;qBqC;Rce|=WYeiL(b7_oOfCxMwX4dh*ZEThh@!?TTt>|Bte7tSIpDA91sG^^*sP- z#t@dfJ4QFIvUGj}b>(Qss@2#9I5&l9@+{J4d0RdOiiur;D&vD{C%6fT;08si+K(2e zO^0j)Bks+~=`S;zr7kt0Hd-y>KV1>f5%W0?wT&{c9$=dWWSM6-8s51Np>Ad=ZJqTh z-4rXWd!4fk`o;<42sem0Nyd8+U0^ACDdb}=#Az7TcUT)F7C{@`R%IZg#2IyVdXK0SuJNL?eVG}$Z4m}NH(oXdfOj*%<>*!by1x;s8ShxWiIyS#l#;o*;Kjg1C;NiN{ zxPqgHZtZ{Tlk8M(aW!Y1mr}O{xGtRiC!qu z;QQu_7qX7gwTNGT^bPXS*?Z5!sClFlQdqPxBilVJjCs$k%t)8y_zP2D+b8mBJwbSsm-RlC#Rs{1b zOT)41a<#Viv~~LTbK5#w+nYP{9qoO6{E#`=?{bkqix0?q(%_yHMQxkgTJjz3Yg>FI zQBDXdyso3G<;H-!bzMC-hG8LsYIN#rzC9i78};U({BSaHyo)r7TBWzE<;Iqcz3aom zU4XV<#s8`(XeBI1bX|1QlU##Y z6zL#t!>!rk@P|9JA72^_Q_tIHlS;DYl3AOtTx{uQ)M}H;44kQN#YU>K!cxC_3Joul ztd$1m`E12BFq>Jqp2CM4bVdWheYv$B)=e>Ad%KwAMpuKF9b%%#`0l+uZWB6Vj<)C4 zz!c?fw?$bk$%UQUi~Rzo6DGM9KP5I9W>>6Eu;%ku7HTXU5XacrfEQ812y7Ro0m0(# zu}QqYuGS_&OuXnNTIQE|_Ys66D|py*=-(MOW{14lbv%Xn6MCL3`4kQuW6{ks9cFxh zumZ%#N$h5Qg(h0=Sa<=GN zmmC`?4(pX$j}v*4WpYZTToFy4SQ z-W$1n8YVQ~7A8wOXZ?zG@**X1r5v!MIYC0U3n-sgpGb;_;N9j5k6!L`a=bK&rRB*s zdf;Mt7j%xr%v@cGg({Ziyz*l`V149AU8cZg{TwczJWH-VMVGi@7H8=F96k&TvK`qu zCgZpNK%!g>j)~mGitbBO3Lifu3aliaOmvwiL!WWp3Mln3BqVwxe$r?H0HE9WF589M zY+^1vX2)oo?h?nVJ;4m!t9)^m3$S8^v_J^|mwuqV-cpc#m8V08_yBu~g-uyF$l^59 zU4~{xIj|yRJ!Iu180AUuM()h@&VYh~xouFgSxRr7g`N+AMu-AvxexfWW*IHTrO}fU z=H@a>scDuj$Ij3!r42Yi1XJwCTF+~5JXH+EU|XtLdK~XcRCC|+-qPZFLX#Zx_o-&D%i`jV<%quFO% zb`%A++;bpPHaTdUvFn)vVfmdPLIo!r558N|!1vyq#HNof&^G#8U)+^#{7JA92&eZ*0f z&U$G|*4fUQUZ<$jN5QtUeyfc?J}`(r2X*;sMF#$sNNna!7s(ty@n>4X zUoR-b@EbM5=U6Rp44$8_)`jad$G^KVmu*!TprqMYQ{7jU!q!pGn5lQU$cJHK>C)@TtUXG(@sWO6dE z6u#~##Hdb5&G_nvlgwm6vpjO9Kc_0IWv)pFnl-}_R|cdg>thtABaD+=VXbC($5~RX zn2)ZJE!O7avjU%=wvVFqUN60MvPCJ}?p8`pX;li}a}?%pi}5ziaHsPF zF57!cMwrwIbYz1gaLx$9T!-0qF z951foIX`0*HU=PMi^u$CqN+0hVM!KioQUz0gPOWrF0kU_qkhUpk%^Yk)0igzpsTg* zvhJR)zOJ?X>n>~C+`O^7qpkO{^<9_U+}7FJ)pObUuCDcL5$b5}T>r|hp7kkqYEbKG zZ7Vh0o(|!jwsjqCEqzjw`%z-&J00@McXv zcU}If%aKh1Z8!BdvklTj(Z;sE4PC8lsW(vsfdRELih8^Hds_I1@jnnU22fn&Y3^Ll zK*X5sl2?fq;SP|zb+o7?K<%PPYh|OTx1+tK?Un1hqQz14|B?4L;B_BYo&VL0J^oo~ z6E#Vp0f#E!PzO@#? zJFjQXoH=vOnKNfNMk#$qd@ydtT>|V8wZIvWZM3-l)a(dL8?QZlhVdr)yt`Y7e&QDT z`zI4m?Ycg<{EEc1E8LC`wQw{E5U1;f2<#oku;j!}b-fkc%R18a8rZ43C-${9_jTsg zxv$SeX-tB-q+S%$I_tNzRBYa)WWZccb{MR4M`E2= zFu3cVHHQb>**G%h{+*x2BO7T8YndMbywYD~$Z)OG$(l1*&-_%>s2XyQ*K@yJ-#rPOiG4XCG;R~ z{UySkx8`yan%(Cg_yev~a;5HS?D_+WYHiXHwb+>S?7YMG>4SnKoKd z+9&GeT2tB+^|Xa4?a6vtS4#VQJ#A@9`-^&7Z%X^?dfH%0`-ghk&Xo2~^|XU2?cZYB zSAGb}gZ`SDo@>6M)YQ~O5b3511dkVp-ZnI__C@UXcGP$It$!=zgBN=ky({LuShq?-M#Ik<_jfNSf{2lhWv%VnhE*%dZn(@LgWU2gxQ78_rSv*PI>AY4l6zd&6bD{b_%1Bd zG2H-@J6(CO(`C#^?xaVziFiK{^7E}sXixnafs#q!DdFWX=l!ivLiJxFlOGrJfrHu zL40hu?9Z2EuAb-Lp%8Wdqx4vh-%#%9?(Qj$_>Rt=qPxenp6@Bn_qdMpJ#K-2`(%%Q zOSz|5*0ZR`wN5G2(4ro|hYdHB{UklSJ}r_v@<{cmF$pxhR!{?(pRPDe-qWJ3+(HnRdPMLe;wL0lhGf^OH z{ZMXZpKPQPMz4SYf70RMZpq^{ohLP1(sjFZTT_PWB1Lp}zwD6I-NH%l6=qErEkQBb z3Qh7hT>;5p1KG>!YeQm1Y=@87vkUG>)7R27P3pi#XJ0!)WkevEOK#CKqQ&9+b3CP` zV`*5;Jf{&)+vxpCu6LMGYrLV*Q=USEO^6YrPd8-#dCC;H9LC4v_26Zq@`ablTZA{e-&GwnF0GoOVYoU{u*dY>`vj;g8O66(KIQYBOxlYP!!r1a?YkDY?`pYF_>?`gXFB zTTOoBfq>nQLqn;Kt^+*dB(HFO)}#BNn3=S7zmC|3xtzb6ZN?_G7ApRp6E-ms4TnCN z(eOo0%oxO{iC}_2JpUH-&q$txocTg30Aheo_kcc?+e&v_b#|NZT4(@7*V_|n9Q#s# zW+JVs`ND4-ac{CEaOTsw-FHS0TRn0EUd+*y*FZZuL<4w@*0gGkL2=)7SJRXhcQ2iC zaXHQ(r(NA~jp|2nQf>I_kXcrh&AG)tP!9fUwv`R#tqja??vF?ye*|7V^~+EA>mM^N zun)bzcEYzl2KF+$yV<`PM}i5Mjr*jg&E29)d8rk(^!TIJ3f-us?I*mO*%F82uERzq z==s4erJR`5rhL~ypZ>mb@ZS$p)9Ev2n0Zsd?-{OoF*XST%s^DMZ>EwG?Pk0^A*h7H zZyE_>yqn8Ay-Cp0rEuk+V!)=ZH?%S+(!JT=KWPRK71gly4JT}aw;{3cD@VdaypH%b zxiaC}el34fEih=z$1Rw;&8PGE8LcemhKVXbT8vUZ;3Ir`G#`uot643|F}R?Zg3;tc zh5soHy#fS0GF&lYzMxd@q2ZhVF}-dnv96A^dP)DoBmQ>gM*xuS-l3ZWZfDbTba$zA z$sg;Ps*3+v+!6}^zTql+&8UBCIjy0tFXT1!k$9b343(t}joH7W!5z}h__({**52S> zS)Hq)je3!K#2TT_>ssr zhPHI?Z+ezAZB1|uzlsa9{$=dPu$RaN#c3`0x{hGDLlvT{A*?3((iX^B1C6|BL$}>8XJA^$uvNvZj;IZZ^#(&NI z!ZKMig@16;-V`pL=vn5sAMU}WCJK<_|C+n{hZN3|E5eb*F)gljs@>S$!6v^wo1Oz^cvU=n%jJ zX%(mCixN5U&a!Q9sI=SSVj$3Rtj^j3D5pm$0n_?@7bm>nIO1DnZp5z5$UzyyayRDs z*YQ@KOvwU=mg;qqN`=60(%sBfXxH88e|I~)Y%lew@2_VsUS1CVb0FD23U@ziyYXTW zAr`H+b&n(zr{LK%Ee6N_Y%fB&`Ok$~IORXitr^<_)1?}Y4)jov1Y?^Cyj9dx!9evb zUgEnT-~G1j;z$$qT4;&2SnVBVt+=4Td9n7~jr&3q@kRlh4#hF`w0#A6R6iF(eDb%d z{}jafGYZOVhoAx0xPL=A_tLAAQz5Dr1aNfTX!?xH95g)1>Ws@ zC)x3DCC(=UxCsCVl#yl)k`!O6xgp-HjlEUcgMUlaU%^is$ztx!*wo#_SG7OSc1x9r zh_FaaCN{#8AO_=S_y<1hUjqahD5$d0Go2cf|M4=SP$y;Zs1%e5wYgMSq{opPk#fUX zYk*s>KV0>nECF~!0g0{EoxLVZYuiyQ>FfP ze`j@>e|CE{jQab^E~+;NzrPt1F_zBr&1M`09@dktbh554s8!&5$^%-8Mn4I@|&LPzgXb5gRxy$9om^$YUVHMfEE@M^CwN}yo3;v zb;qUnJgBE0is2KFm^vp_ZurDZMNT`pSvq|6L<&PYz9b@IuKzZh3A&zg}6lPMiRN6xifeBzamv3DdpE{=*C@t z*6+wQ4&9Y&=%Rx#VS)4X^!@NiqS%H1F_%0S+m>udjRFyip47qH&~E&W!^!b)=a1)_ zyW$zZW!5}?cdm&m{AiVifpU%!#)qk3j(ZsZT6dp(ymOkFsd=Ih`ab1A|=Vn5ddty)=o#8Uu~ ziMQ=drgRyM_t(|C!f(nh+v7i-TTDLR)TWi#DD0J=B*#Yisdeq{L89VKQua|zlD|Le zy$j!x+kRGOCH9y&E4MhcJB{ghz0_30$hBYXPE4rxt*NPI|2_gj=pA1e%vjRTOK(d> z{70fMIUqA}t~GPBL%CG5|F|03n}|gFHovIWn-||bx!Dx1VsEI0skFY2*YkJHHWmeU z14XP0n6JB8PryWhVdsC!4gQQw$Ya{z7N;8gy9ZVADZa6|g;zE~$;0}^A{tc{I-t-5 zau*-YWZvCG)HT1OtZ*l^Lou2_58>2;d83+5<6_iilL!@Yg&KU+m#KcRX{FWETc7j3 z6Faoo|4oYQ4KRXEp2pl>l{oBoRCn!e+q1jOQy9Z#LRM_b7pJ;LgH^MxxlTVknE>t`$fbW@mb4fR zM-T#a{89^U&2#BQ=lI)mrQ@m;{R%0|+eh*K*1`L7u_q!V$f(7Vc)^A#@Y2r2#lQe~ z?vK2Q-((x7;uoL3FlrjGVzovUc9hWpt-g@TheK#Tw_#OiKt(Tk6s9vODx4EPm<->~ z+g{%}?RW41{$2SJx`_gqMkYN$cSHRH4~_tT2sbR02|DZZ-W# zfFL;m7@y_*=?j(Qa@jkWn(}`e`=$ha*MvnN0Uz-Sbu0e2F@*l${i$xV|5t&*c}f)N zjyGf;oC}PAL))@00YcnZ7j8(+_+N}yV8$Ve?z6jHR1#Y@<{}@NYup#^d@_;4&U*f_ zhJ4pHmA0SOq1?h3)X79RCFa8{L0sa2uufF5q8GYL02hl;ELg+vP6~5a0Bhx$7L#vA zMSsll^L=QoF)#hr-VNe9r^FdttAAU4Z{3{1es{jyV?Gj)IDAB$oQ7@AauTTCODIzI zDa?&I$JVu(?DtU2wN6pUOt3K$si}xM8{Qi#5w!F(ppT{ja7a-jrPxm&e$$EWquoW% z?qaH#;+-6#Vkf_f)7$fSMxwS)Gm=5Ty0Jt?16rZIZi^zH_~F(QNt9|CPE9rYU(IT} zJ%*V!;nL1j#{X9A&e}FcuD%~;a!F-^d*fS^lhQ61C5@}~9l4$Vc?CMqge`b1Apogm z2MQ%ZHvB=)Wci7f*b^#y*fgaF}L1klvel|cUO$o%pudD{YVZ?No zx0w#rwL8K%JHO?f8e{fr7%Kr08)_{aNj&{@y;_PMLA7EkEzhNUa=ZU1Pv$Wl-9l{@ zor2XujXg9<(pXq{`{%)OLf)Ct+(5cCxwoz;gFf0C4Q?6HFIbPz*=TTW&&9wQdbQv- z4#Jr$O-)pvWtKb|YJOXOrs&xI+}(ecdth|kVQs@#bX$rcYWa&no4m{XLyV0dEiRiG z2`119`P8SpybWlX!~*DSzv+N{DL@5{QQcC~Z^xO%=F{k&GOACuj`!xHDv^|)JYDoP z#5}37mBMeXw)t%%eyHq+t37r>J@V4y2lL?nI%;De6v>HYNbA=|TWY znuCuWhvOMDGozeGLgh$Ddym}{h~jPOy{V&SKb`em*`bVe^m6eW`;EM-qGQnMT+9EA zbf^i`V_OPXN)TTS+u#pQ>uwfn^0K&tA3Kt8w{z~(SUeschJDZ@ziv7kD*JJ_G$S*6 z7Oc(6^cuU<8d8hu}iQ8nIX@;mfgU<1G!MgsiD@r z{?I=Y%_ou4i5PBzG&?cXw>PM3_aoI~i*3MnC`Dvg$HFbQl7v`TH}$xBN<) z3i;BZEz%6+gYCh{&(D3DV*-Y#ScpJqj~ci;SazMEQamhsNQDB>H-!u7BDpE)si?(0 zJs4GFKc_GHar69+Nx_x{n?t{rAv+K?LrSZ;eRQFf!D^3Cf|%VhjFGG9Wg5k|s0Bzc z3vCl9!Z^7+OIf#;X@S4d!{wBN-s?83c?8lRHnrYoE%Z;}uQ}kiRsC?4zniN)JuJ5R zqh>9?nTPj;h8H;vxCL6Cy`@b_g%Lm!biS{{$Hpv?6f}oo(lDkO>CaFGnIS-L{=a zTYT>$83XAZ2Qd@?Za|U0MsG8$nGnU%| zUiw(>_-M2O*wtM|CgKqv)-HO|o}(5e!;q|Ja+s* z)qfBCv_Q7u_!Zg(c>=o$#wr0oJ%~n6gqrUwC$rbm|DHkrbNRnb2r4_IWY&bihLvHv zlbS2qcZc1qJUF!wctPP}kL7zf`S!y)#KDUrs!d%Vi+x|^vkgXTDM&SDMv9TNmz+t3 zgMYQj+z_^o*iI%PZ1Cf;!C=?LOd&KRW?@lnv$TWjJ{u}UPdhJJWG>P2`?-zV>isZN zAfAs{Y4lK8FzxGA7k(mF{dAN~1S6H}e{vHAL51T6w)9x8%3ZTj3)-Y^X(HEQFDWF# z#)>VU%oR^H_6dd9n2Tj;zdKeh%WW|_p z$!~z+`8l?rw_#^0{42qP$R{?-igW#J#@7M;a+5#{>{0|IAkC~(#zFu{eQV7Mz9`0! z<8GevYY_pF^a_6so$Uu5gU_+^jRyCp4#yO=H43b_PRCf*nj0ZSJk_$a&>jU83!YCt zyPNHu?)GQmk(!%_LpjrCCsUQciIls+`*Xo>D$6CxZz#*h(yysXdh@R$9G!n)#6MJC zw7cDJtnS*qtKHvQKFrRruDmDsx4`)JBL71$Ob!1E0g-SRUg2jw9m;-1)%SAx9g12x z*?d}0WjcRaQem|Dm~#f#M2!ZH3L@l59V5iYGfPk9+JC3oaTku!!C78zB@&gW3W8A_ zh_O&{{hS9CqwPsMJ@a&K>RddL0GE7N2GJ3E-gGu=p7}zq@XiK?nktA_7NfcN_@C$E z@2U$7CV7f#ptNX7YXxv0pgO1!l**4uOgi2kkw;ZT&}$i@XhvKGR_E8jDg@jpt?hbC^6NAh@P+uBf%Rqcw0$sygwVaE2bMQ+Ti}%1pn6~F=OM~o- zDe)i6b3fNK1+z22+;97{T=SXI*}r@3Gvbg9w;0^be#@kvBY592k-@b+jHGLK@skv%G=_vFdv@TTt{vmg;Clb#6pBq zxVOQU_lMmCmWj2N&Wg2)X8&g;tfvew5*bs;ENZ7`a$ru;2g0$?jq%5vWa&LNJ2vT> z{d>5%lVrFvF+;JTKjsgxk-XObqsuQ)+~|LIcEgWb&dr+T|8QG5RA$W%{#UnggkA}i zSpmi2OAn#6YMN8v=>KncB*{+4<|G*Wm!duHl;E^oQUkJ)F>#U`ExsS*wvWBgZ-$h7 zbJS+t&He$sdK^WjV{@$oX~FKZe%esh5W}YRWmaOA^T%b%i^nL%hdJ!0i;nlI> z!vBeaW=zDD#~ zJD04tZ!Oqg6JFGgFd~@|abiCd*-gJVGcEV)%67R*?t0a!o@(&h5UA{!n#D`j@MLva zag?2b1$kc`v-1oAIZBaRki!&pT_5wt0&K7X52-&k{#`LMg*R%b*!t=V@`~K%u?w?Y zYrV8FprfKn$hPqwf6AP&BUOWZG z3cmZQQpuHWc?oZWuUNlsXyxV$!xOzglmNR5U%Kq*=-igS{L&k@eCqWVX|6jKtFZCN zZz^v*4H>_V4LN1B-e{dr<2M>JmNsM@AplqM%txB89fu3p(a5oeoZp_2bEYBZ zqq)Jj3AcW49gI&Ix6uI4e!+$)4tpnJThX0HI{2E@h5tJh zA0?PsbQU^Z&)gH$5w`y2=!mz&4%w;#+i%^2@%Vz=;QOQvfudU6HsHH%DG=a7aWag` zPQ;1hmK+89*!SfIenFi!2x6_@pY#4XHqPL%jT;XyUO``LfeprOGA%_4B+tU*t`QKE z;s}?%Ha9rk&|nNN)ys~Llr%%J91oR3S5v~c-#&sxCmOd}UzZzuKjJ=;R>$siSlwIC z{Y`RZs;b!zSM0GfxB2;*o!*7Ht?{`1GJQfg_5}3uCr!<%W7M*Byv=;8uw|G~9 z4Ua~y$&IyTLb^5g^E-m70o&vCyiX|4BIPoP?2r7LBR6-Ib330Eyc5c|Sge#rtOb>z z)V=xaE=&!&s~iO^T0?BG;}vR{X;!ktI10QQKuH@9qjIc<5Sdt>$z`yn;*7IZS2`fj zcQko-&j0iXu7c64X1pT<`HX-ZGxUJS$D4)S2aagdEn7~H*V?vV7{EF^S3n;|WADIT$C*kn#jc2^ksiLJTL-_^4 zkc3yJ7Fc7s((7}%zfrjfiHt_&?~`f^1!G1SMY~0$)Nu8l6GM_9NvkAdiL?B>Rg}>& z%*;!|Dcbp{uBAIJ;kpHwR>u5Lgg@G9#(y-!^_;Z4Mt0ZoV>$ELl-a_KrtE>cvtHt? zN;IsN)AhW6Q(j}!U3aFYoBh7os8i^v5m|?Frhm6Q^(HiE}DC-y8kTSVC%|FI0*nnq5#9KT&ue_nSwO73|>Mxs5-FZHR+#Zo`LFR_q7Q zhmhq$@dTEmw*03%jc4ai<(m3yN$3k9f z?iPzEP)skj3*}8{TpEa3baj-&f-c(Crr&zPU)yPAUw(?g_1tf5IFUstXg8iUCS=4m9vgF zW@)(n)5$b?towPZE$z85D+h2r)0jnz#dKx`wT4=B6oMV& zX^=~oHxw>vNkTX_BY7fq*|nmfw6y3vfYXgx#dKP$gZ&LP-2AN1wXAGRKh!ksb~Tv@ zI=HGaXJ=C$LGS7dGw!e&z4u<25o6OV9cav$H=Pa^&s>-ux80p@Z!BL2w)MUX(&G$_ z&q!~}Gd8%Uv3y$|bnDuN^kOW5d1yv*M%}`74W-ebV<_d*Gtv(Yzj^IwdzCFfAuMHooLpdU3X^jYAt&tY7!Q<(s3{ z_6^;8LFsP}{2Ml`f1bA=`&X{&+q6cuAfiJzgs>jkGAOH$Yp?(*%5_6z>xK~23UW;p z$(J73`h}xe4{jK+clc(PO8qNWtnXi0v&X&RfT8|k+#F+%q!y*ps-g7?$35fexVfcL z-_ZI2ipC1Q6 zt@YjANo9VMW#adWl|j1Hb*RTWi9&Rg9_`u`6J|5U=}|kX8YQC8C|##yojB=nUPKQ! zkG_Iy^KXe!9Y=jP{4x7)BnY|WQ6q#MP!ZEgKl+ySSVsV%fe2R0$?r)?gMd%cXq(?Q z(jCTve_4O1aH!!wRRSw$2fFZp)?p{X0ze?@opCj^aEjO#7Jc#(L%5H#8r8$|QguyM zhwHnglYSO`NlRjTa7#IX+fXHt}arY@#@Yj76gK_h{%K1ys=) zbXGixmj&_4XQud9p|+?cGVG{Dwe?e>Gm4Y`tz`|TA!j}@%VR?7NZ`i5qD79Q=T8N{ zzUptLALLp#=MMi|JLI18o0viW z3WT4+uQ564t0hFm54;3XapRhS6)RuF`3PIg^NW@|c>oKHq9tGBE5L^~*Cj$TpKDg| zFUo(CHokC6D(fGUW!kKd6BrF@76ty%YZ&;eUcyNdpkA<7zQ8fki$&9lwS$-6cpayg zeN2@_izudjlTU>50O8ym;<;W-+qt4_4{#PRT*R2cNQa}FBV;;2|FFU6avwe)) zQq+=O+_gQ{4tfhUn9D3kU}P(BrqjuJz$=8Hut%kkmgc(N9l2(Vk}xirg?f8E_oP&r zxS@NbqiL%U`}A9g-RrlEBq&Y~=eAl6w|mtVsvT>b%?|+Jbci?n7Ampuy~}SJN!Epy zcjSgDNLXV5M~aRmU?f_y!#MVCTF@8f4UjohDELASm1rMc9q+~{4qDNnLz8Xg=;~vr zDOx%J)ZJ)dEMZ`&AsWN>3We}pnf~sof2f*3KDaA`{Ej$(Dn%3QuqN;9;X;aaCx=0D z`RGK4FSOprFd^jUsbl_6lrFr2fbo@zgu=N$dq5r=%@F-YgorUv_{rRZ9G(m+x#k&E z)&q{Kluk_#*Cm^Mx#{1FO{3{k5V-gHc^nP-6|`U|*R6CKV+RKe{zd3Gg-eND`mnF} zA*GnREal~7i^#W+_)>2#`*iCclwq2_Da`*4BtOS_^83Cd-=0CRElcwb2|Mt zs9P3afEwq15kz2!Da25*;sT5u(TmJWO{>GSb=nSD&T16xDbO| ziDIKGLrQ`OMN)pz0uFtD_M_|l&$&;YUS(ygw2UhDjZ;u=NJqxByZaTu{tO-#|#6J6*b#@eUQYRb=0(8u?Q+IgfuJ zgVo5NRI|>Y5d>#`#=ky?lJ0p)4pq>b@g?0$v#%GjD0o?c z5Pva`nwd3&N$vdA4B|J;q((w!QW2}Ce=WEAEn`ySAIyEuWKys}O;Bc1kt7fOdaiLX zlQQ09e=~`uFdrbfxYx`(CzHe)AC-up8pQnj&RULEEKOST~aPuhMuP^#6>f2sFY_u#NDY z4>*%7DC-Cpj4M&bD>{%QBi~>8NNg>KpVMID3)4|9U-)P$)a=X1_(WTed4nmhNK&^p zJ$L=tU1^$HK70iVQfXGRUyQUmVQ%;{#npoNS~MKL0frER#A^N=%$mG7pwkOwR+fWr zI?y1rDoS*5%7oU%mlj$JPzCDMHu&~;SA)NyKTP;Hm(wxX@sH#IjL6V3W&*z52ht9q z%Zs){s9$5lSZw4&t1ZI5(o=npxO6?+BdmPfB*5Z9O1K2ud-?*qhzvIN?C&F}lLQ2=Caz~#?NVzs% zY=k$=6mqv<>$&6>;s%gPY~#>sv#%HIA?_|pxit-vZt&N2K91i(^dY~fi0=$#FyuF% z2orvLT{{264Ee_*i;~?i@u&LGcXfu5Fp(>s{%o%Jj>vBc!`SmnxS}xr6esL1otwu^ zjLVR4@3fQB)<4djj-^f^1971le-Ec){)2y#tNeN#pjAOj)#}lPGuc2kr$3jgd?Zyt zwjuma+LQiQF7l-)-m_p}JeQ|5xFOjNy+6#MiJ*PL8$l&`l&u=t*eB&%3cskCBwHqEVA zziy+9Y9y~8+_G_Cb%L&cU~O!se_(B`Z)5tka)ZvR3eP6`Z{E9PoS^quUA>KUPpAy z&HB}OI{2R8U9*05ZR60U<#8Zu)~`-q*RGdMv8lwjH0rhM`&Tspx^Cs>p}ti^W3lYZGz;`jl%mA_L z&vW*-+X%$ixs^^QauD|052q2INyTsRaYLfhq9^4q{fpRKd$T86V49nq4e2jy@XR^Z zkp2qNqXGL&L;AOqj&ia6O8E7En)R)C)%=BgB)*wW43~ezvi|bRve8_A=@;$Sv1#1^ zehRPKG_%V+hmTwul=wR}j0?Edq4Hu5^ z1tg9J+~3lE`OxD@bgBDR=5Z3azxmbh!<9+{dY08^r<9@f_pMCZVA>{T<=l0f)-KQc zku}=j#=_pc4w9kmrn>ja>{1CDA~n?ATjtcAUN}b^+Ay$gwV*0WCFYFcb4w*n2;ZAa zrC6wDn_2w?@Cv!X$Ro!3x}}{OFDupEZeFe;+Joac-RTdSr%dzMEa$(EBZ3%k<$X>5 zF~_Y?cwRgZpLbrDf89L4muDTNuAl_e(%&0-`+~xD!=}a^BgNi!*ZY4frPjFJQDAk! z5uzZ11%4;RheJ)SAH`!_nbENc0iAWP?9ld+%;SH{AfDxjOAe1$Sh-K*?h#J9xX*Sy zoJ$ed7w-aT6Jtqu$AS{vK_{Pv`OhWy+k;1QJqy!g=XA0I*ij7PKi3H217b+udqZW{ zvQTMH8$)S4H}Vx-O0Yw8_vW)XF7mN@k!NC&Q^a0ENv+VJ?Q)6&HGv+GDQdV-g-X2ZE`Y5eQ~z*}XX7_bNPS_dY6~7uq=08TV2OTH*d!sNYB2xg?{T~@UQI;{`Dile>W0{@8QI1)Zc(5 zZq$E!r~ePwf+dMqd~!Ql6Gl^lUve(^*B=h@R#I$UNi#hAABT`j&VsUMR{nu={?5zj zqm4c?nD+`yjZ0C}-7WsxXj(2lB=1eyB9f1=7Zt`x&f5(2LWV+Y#Y&n`D=#w$)DeRl zG}Lhm{6jg|gzgIx%Hbz28b*9j_(e|*Z?g1E`XB5B`rI!dngfsf?^?rdnLjG_;veVr zrQ-3PHovO6Xi=3Qc(3j6?m6POR~Ievy(8V--uL^h)$VS8ZU3T0BmRD(^KIu-GspfkHZ#}X8nyZkF6P+N4;n|l zNJSIy8e$LeFUWTbCM}esrbSO9vd|Qq#v<-vJC?ZbhpWiLs_BPLNQ382?c)i8X8%9s zzknSyo-4FGkuv@NCPLLX%h|o7>1@8Qbf#Y7iA$F_eloZ5`6$Hqs+rGe$+>~E*-hin zsa*80Xe=^0&;Sd05|56kEVVwFi~dtAYOQWMyDKs5mZx%=GwL}-y}HF%qLAjkCNPW@ zVd86KMOaaaSA?1)z7Kkhtw`0!j|?w9OVWhN64aPbbVBJ3C8FIEO0Y#apXF6}*U7Yr z>jisP&|u-17i$q4jcfC3CwbAz+7l3}W&4gjo=rWRB`%q$mZX9j*R&9~td1T`kbXYQ zObwstS=2_j!ZyFD>UUI$ClU>2r@xqy`fHK!nN9i?ZQFxlM=T22iG~u89!V9c z>FznZD=nOb|B%brgX|NazY>|gy&kJ`J5l=cCqOY`J^4i7OS$1=vGb1HdEDPyznshb zkLN3Mre5ZAv5XDkbF2xJtkPW9^)I=h$F=+?M8fV(%r%<_#2n{ZS7F)v*G%2UGhuQU zkWJ8r*pMG8T)V)~%I0lE5FY~9%S7=FCwQp5Eon79vD#R`Zz%h#I)m@QBJSrA-*0)2 zp40Mdg1y;4(R6JX6^ZrcTgDC9Q@Z7jr&F{g9?O}2Bx<+D!frpiTW@*Z6Hq`meLaKW zzn5C@QreA(>?r8*VcU zHeOrMT?NX!=$QD;xwp`88{&npFhq!J7iwRaMpq6+3+7B!E|f~EH}nnOJ0QnQu09N` zHVdZdY0?SjluAMqLo3XOa`3%zc{~4dlUm?{lKsUaiv5WDYy$kS8&bb33=tj@|L2 z$5^v?IQw7xw_LPhfC==yTpX|PP9n|5)A*KXP?&Wk9=6iY1&w4Uw{Y5&=XF3Vnm z4|!%Qmv3PE_YW8pIppQT6f3+)mWsFb<@bR(?DCNm@4b~e`!)@&U%hhO$_;%(EBk*C zj+FV64rn$G3=PvE;ih6fveC7$j}rHv~$4D_uT*edqjR4Vna7en+j z*du1P#2#nWO=h!8r8;|^MO(>BJ~Y_38mwuNhxYz#Bwgo!9x;deG$w8%){ELZ;Y|DM zaroZy3TX3&Z;9o-f91v%7tha2k$vRvzpii1>jt%JUjEEq48{vsW}}34`K@QL2!=J2 z8eht2BOL!;lAa8?1M5~>`^X3v!2SX#ih{xg6<*3RF}W`2rGm8!g|M8l^8QVI zYXBgWN^4gR-MhYDGG^dL&87`21Y7=5TW!XE5}wZhfB&ZSL#oxBP7AJpCC+sRZ_Etl z8r$xq=6|l~?C!MFp84KfAujU6N0~K zdM=pajPc8Lp5GJv5W=F$!j-XnahVn_ZGsKMBd76S@MMN%6J(3AP*WjpxyoX6nMtk< z*=`I3)Pnm^6Nb=AP`rKDN$^pxOEv;eGN^{wg=pq}Q_rcpzj04vd7-7$B8%tikb>*rs(`BRZtCdSR*1j3~i`MU_( zJL+$@JoG%~hoQZgf8EXTD02a;{u@Nm-S*zhn18*Fdi-ZO;rMr;3)c$osl>Va27%Q; zLDMC_-OV{$C5-vs87_yhFzruX=2*no1ky`o+8xHUKcs~`>i_%#0QSJEq6;b1fPoc& z4-J>YXc+Z>eVOHdDYpOj7nBDzm!hC=-T>pS^z*~z!kuPA9Z`1{J>=Juj~x%VeB@78pJ{m=Ry_TCR7{+H#nu+39>o4`=1px z^lEJ+yLx-5nW+T{z@2uftBUKLO0QM4hY20(;2@`_*mK;rDI^pB3P7oO->D#l%UHC9 zUj@bRvX=jzPS@+VOuC!=mFHZmUpvXg{xIs7WhdUQt$9oQ6;#JC*2}&*Wmcz8Hk~EL zWwd%6dMKC0-#NP*Al{g?MAf2QbwMgHGa(p==2?>@={$!m>ZnSRv_D~T``Ng8a2ioF z+|@$mv3TJiwQ8~8VJ}#-C_&djClox?V0&^beUeuRfP{XmD;j!RdrzUh3q@|n!sTL}B{V)(etCO>J+9;+QgAyX? zED3F4bV(bF)xOGapcZW5k9PWD@q5O?BV^%eU81Q4_a+v_T=DxaHTk9z8b{Isz-s=Gz_lO=}=0zML(8n=JsQd3)BJw6= znH5I9wzi-?&@A)Amt~6sMLn!jZ+L-GS-pG9=>+Hafeg>T37&M7qL&5>ny`y9ZX5ES z`tArL#GsGfq^)H8-!zSA4%QgWNaZ?njl&2P>=o zID+-9S$#?Eyl=={yYP08p^OKUXyvL^{q*s;wxghBj*-3kL zsf6qIW(Hkb*EclqfWT~UpNn2>3s0LTZu96Y?_Xxo$$2SKI!k(xVlcaqmHyI-&vMDt zTM36D3{rgUh~%x;GR5yH1enE1e}CCu zt!JDzj+EmAesP_T|80geJ)ovLa{#bBM(<0 z_Zz{4Q>gMTyK7XJH~P(47) ztlRmWaNU97Yq%Qx{S-`d%y>ZzonJ7|k2g&7on`+(**{ce1#Qbmil?8+6a1J7hheYo zc^W6dkW>-<+l9yR+W>+j#2=xJ8@~m+>fTWC+u}>lI!#j%#!nG<9SUo&$`B7DRCJyz zaRK7p%hT1?oxAZY16S){+eVliUT-|>=SWE8o@ym5W*KlyY7_@+I|_ODt>t(jgE_GX z0=SK|N=WrTaY772lEODV<{xB97e}~dk8^>)h83dj-HqI+q_76V2>CEd)5D~1@*DTFkP_vy(tL5v{%77VG+EKPUQ3B-Q6& z&hxLbLlY6l!CBILPA0#Lh1b=a;I3V=c@O4vyxh@96qK;Ym$XXXkt+HhFs=o^(+qwb zLvT2mydRc+XD)f`3zs}JFPCfwW<#Rd{6DeH&QenoUWeb6OD=iglBZvtOMX_qD-*D* zM9FbwA^-4+SM69!;B^=syPTpp0Y-Xz8K8cB446dHTH$JLuE3YCZ zEO1y{TA^;yIa|tn`)iOerT+b@z1lEJ6yX^Y(=|<;nT9oJYqlm>iySlw=LhwN1{xGNSVgK?Af!V!rwI;F^d= z;*pg4yn$+MH2^3tf8&!Hf_^g~why!gHp)GF{Em@sJ&3k7KZv&T2Qutm5$qEZgpmk~ zqqM*`RV=HRNTDhpk*+MxD}uJ zR84Kf3<`>oe9jMO)88-RXu;w3fk{7H_B#$Q!z~}cw&t4!2P+YJhWBFQd?6nApNVtk$0kx0D zVn!$La%bDBraLz^FZ+e0V_?HiJZVOKuWy9(1!}0n^yjU^#L%FTdXoZuAPN#0IA~+z> z@bf7khrcmaP;b}A$RdT0P(iUcz~Hx5L&eXnqeLYj6pHgvLPHe|UIC<)b1KKgqfAHe z503Z;xe(yDR`-Nai`rV6>so#|k0S+WVvUb7t(@H=IU#PL0$kAvK^lQ&k<@R+3w^K6 z+-?opKa{VWx89MPZ;ZQScYB2FyI{Z!OuyRL$ysaoB`kw_Yvr`yOFx?1dO9w6#^!E1 z3pZ!>_;(+@N4MAG^%{SFaSdSZXtNa{uH5>*sDS{zM$TR)GK{hnk8@*yh^r>PCR*o)e%oPdJF>#l|1q{5 z@HZI?W7_`!5}NEmV-S}!QTZC1DCL&+>r9Yj&kJtBR0^AOyk4SA zJG|c|f&tAEb~tGO-}=D=T{w5!{x4ouJfgD2=wg<3ts~Tq$e+1}VWK8F&`Vvx>GACf zrTX{-`qmT!Pry@(543-1?m99P3I{kLoyz0_<9C^idPlW^q9x58Z0!V)VfGYaIpJmc+ z{oAWLsjR3c*NIn%Tj+lp4bUz0)k*ML^INL+>akgOL(G4HKVD8-; z;dL`mQfovBWi_OX4vhaX z$5>zBm9E<0AvX zDPQjNKY`c>sc0s}CyO4lmGC%U{EEy`^dJCZw|OIW2G=Sd1Fn6kBnOgBouNkas4Sg4 zau8yI-!$T{RNYPILM2#DNM~=@rH+@_5B6Zb`6kJ=d;LQr{--caT=`fPZaO}kS+G3Mqx|GEe39oqhTsnBL{DGVE}`ij+f^OSXl$e?aj-NCc!Ou zc8gGVj8^13B81!Tdzs}zst_&#Y=yp+zcUB-fRbYk{+cTI_zIRCe^Ro{49pzxU zZ5=BAm=37{DK4enEg7WGC6K^D14wQq_%$mO5(}t8vM6*|o@|(&5V;K&6ETq~V8mB?1M5wq2 zxS3`xWY8ChIHNLa8AwRB@NEO87F}hMxTQ`KkpwvRqDUfxQ~L2G*+)!$FZ`-Z6fzLv z41kiTsoBm}K|jjd9S~A*O|AI1m348kG}oQk9dTK3z=vo-w+wEDF{?1XpKbvkWIYkj z6D050va#`)Cxjg~b%e^Ige$x0YV?e?McaYh{suJW&E3h7d=E!QO|Toif}zO-o4PDq zbl{Fq3pH;3*Mhz3*zID})2{t_5Rc39W4Z(*0QNY7sQk6>?G`2~Gsd9H#^0(jti;W( z)}5rC-k-_f|JSI2ftI3$?UHZqdR_emUyUE`&FaiUM7bxfMa=CnfoVj6VDfgwMF2wf znk@yQHfF}0%LL@+pWmldKtDFIVtHs@rbm&%(!KdS{i`NF7o2CV(i#KTru7h>et2Zj zVLyEMsP8_EjumfQ?|g3_^%vsa1sK3Lj%uNP)lxXcBGE3Y?4kp?2hZ6E41}rgHjVMG zq+L;uRgHh;kpXG!<5U2s9nV#&CtILE-|&qSfyfH17quxSV}ID2bt+?j%^``gyo*fh+q=Z(xH|%Wd7NO znFkv(pHe2H3$7cUYFtyjLuS3n73SD4r|zU7!WGy=3Sh1OL6Q{$n4M%qi|boH?CMGS z4g8+US>L}d5p;1l(xvGjD7kxBnoJPdpDcStJJXaN%CTl!@NauAbcWr_s(!l;mG3Jj zF|_4Z^8kK6s+F2F=wIfCzKN6Mq7cM^{A>;jy)nY%6Hh58@<`S5lP($Hkqf0udl`nvwqNW(Gf=caQSE$ z^LLfgnNrJdPH>DbxEXL^FRh1DFU|g!XF=5z=L6GX_BCk!kbp%+a%>{gGY$0* ztG*(N-T;rOC8h7d7P3V-G+)(4p(OhGm zsi~r+J?Ug-=~&K>!BRoFnSFyj6>TEFTT3T?IEODe_(-mKv%z9DWviG`bL9m!4}Cb- zTvUgNxzO>eIo6{|xCQ6K=%NJb@yBvCi%B?PG~#YJhhdX(vEH@JjW+#v9DtNUUKA z@QIT#{t+Fjyxel1Gck|tNH1UcRoGl^2KOovZ#} z92Kaya_TcG(rh@&F_M=;^)%7XOk*`V*0m$7u&CP%)mbnVy;e3O!8_E)8A;CuziA|j zf_}$EO;1Qu=W5zjiGGINrqg?)}|Yn52QZ>>^gF@LN| z-YONK80R*5O%Q4akzc5ZS#Qnz-uUs1U9RtQm`gz&IJLV-oeTdo7dju$F9eg!4aJ@$ zbDXXh+aIOUOBFl#XSub;moMCcskE6aJdsO$BsL^cua`JpFY&*u1W=oB2|bIH^aoOA z9X|rW>I*1TV0QnYHVA^D`3DY%N?Wo6k3W(6Z}xwsrAq5GV5fJQC#Wz6W;2s=VQwx= zNCDHqA0&mXZJ9_d`tuT9$4tD~i}8^9#5WSM>Zi#yfvZF*b$MJ&js^Qxx|2P?E%4hW zP2lGK+{{KLD((-JHU)31$brAXMRG<3KLEApN&us7%!B6rxAzDCJ9x-_QqNlYH?R&y z{jFFrGC?PYOFnQUvGHCZ=bjIf`EJ8JFI!Uz+j)hmd%PbMUWntzEK#Oo(G@(9&>3X~sMmmL)>; z=JzuiDq)PD?tY2llo6H-=uw-DaBasN?hdvD#^I2AnI&O?tu`KCb3Nm==kOaedmRlj z4q@5KEeSHoS;I`eyZ#weRIO~kLmbe$Z=<%l{F72Yt+<>0k1(n9ve4f@xmbo+*a)Dy zH%%#2=3}AqT)QUgCML_>4tq8~Dr_?d+NeD!JPbiQXHZ1Mq93!Bi35B6ASCLqWvJGM z(61`G34lZkNZThv#j&;c;qo%SzFK9T7o9Kf9`XIvcrqH9Zp**q`TA0n(wQsl=lq*S zqMg$mX~l6wSLJkXpyf<%Wbzwtp1<@4DBDyGFbzv1!uH_hzY^+ zFMD#$9*=mH$tkDLT4im7ZkL;eeqbls8b*4!W3lV&MXz{)yZ5^p;w2(!1;`!}uJBnW*ez9wK)1<r&n9*?YnDGOS1)(F|8#){?r!m;o-c6CV!~oQ zPv1Y{US_Or=hv+6Ea(3&3ia^XVlNz4do}E`K&xW+ayOsXE|Wc8PM^#5&qfnEN*ryN zlIWXd=9D&utfYP2&tV@x?luWliL@VzQNJpSID_YNmko2gybRGTTVrGH6 zj-SJRj~GxfNyy#kJxZYN;YJWmMA{pR6kLVjprSX#2g?}@A4=$elZ{G(RB?(u&o2jA zMa5(!6)*gtrG@t3Uk(h&t1)YstoZ%qOn|=AgYUt(p`Y$X|C)1b!Ma_^*&9+Q#~p&y zwVsa$_>Y1PGr0PI|GoTh@Yi<+zr4!7{>>+n!Q%Anm$OEpFdpLr z*Ys(|bNj3ApffgEMh>9RguE5Olu}X-2gvR{O}RC7w!8dh=rfeQ{7!}vA7{r_iz&zj7_PjkhBN$HTnjM znSZ-5hncA{PrfF;KSwzpe?=bhi71@Xc+s*uQP9GxbBU)KN{sJLcptA9_)9CWS7Xou znt-Umn|^5l7uSRl9HncDhdqGlQ7JC{=#mMP_)_eV$2 zmBvRg8en+|rhZ?#6}JqGMZNL`o3##so?>=RsBib67y62>{xmdX7CT=9hq-V6y^pbt zqCqP>k^kzB5fPMsy2Pr3MlFaZ!=y96PN?Ei8?>VUpE>VUsgCN&&PhopqZaj|x&6oZ zPR=FT`2FF-*}!^ZCfdJ{ZHgFL>Fqf&1DG?MhJTsN^e=6jr;8(`Ga-Z^cb@r)eDUCG zV%tTtZ%*em@*9urxgq~5^2v+3SZP75JJ$eRK%&1tB>`i?mIE6eYk=OhKJ*0@U0*;G z49#)3b5xuchc}X72xC};Sru$~qS#@+MU)wf68*S^F(|3|=dfU1n_o8>@OTvOkM~Um zzdym*?59fCj)z(r!J&qn56F%PdbB1AW?3BBT@SUpc@|WLU=X|Hubbqw(>KTFeKYYd z%v(M6(DK@p>3^%i*S7wS(qO&7iC6&K6;nwdI#Vw&(OBT9G+v&_|AE}a=Nk*`Njul^ zdV#-aERgRJb-gaP@Xly?0uLqtJ}GL7><*3!feA53wC}}(ouY+9CBG@F`3G;wjsBc* zY|8LBr`WWXA!Wn}43b?2+JF%elh&T%p1VO!N=lSuZdWO$!X9 zsLRCl0{bsnpsOu+@iVc2rXyo}yk6jE8w>QL`D$I1Tlo3L0v7wVG}rB{7x=}-0(rj9 z)C>HVSU{ry@o*Haq9;S;2*K_nYL2z%UVlB-Davqu4MMgyZqA+ua18roOvLwmsc| zq<7LNB7MhQ$Dyd5qlo2+0*U4m1!3*Am&~!FqYfUckV_D4n$eGYNXxkFvIu^`VR@vZ z(hucP{*w%9@#r)|{ilK&DB)DdX}!1#a?*vgVD8^AI=6^H@fa~1j-8U)>mSUfdw0{b zq2fAZj@C8as0A(k;S9jLW}A%+ut5pyk&c-h$D>3%BbNYgy(8EA`G$JM(R9GRvtHmA z8w+sI4@A9Op%BA;n$gGut)MHZB}A^%rny^=7JmCkG_WGO6@J@fdmx5UBCWw6&Cnca z>?}ibJQrx@0_9BBS^BYD`}Z1ZGj?#ne&-fWH@tK*Ua#<(h6=@0f~WP)+~ObUx+X5> zF*FlRx`!2-(Jh?LH$0Esm8(3NsxS-qZ>q{Jhb}v#%8%zN|DY;%eJRx_9tW{>5f|X0 zyL0)kG=RROsAHT!WM1%zPJFn8um|5$v$mEl2KcUyH+dqTrl&R9Sq?@q;y4$=}(?m*L&`EfQK2)sZ%JQ+Bv%d7n@_5PlrKT{$TZy(Ru ze*YX}29V$wbR-q-NYau9-V%2us0H6}9B?WUV$L){W;K5bKBXYOgYqqh7R*fDf~l+{b!`dxdr}*InHu7 z>hP_&MreZs{Oe$)z5e&aR*B@02m}@;4`6l*#-QtvG>y&5j;`cvXGeW@h0MH{m`qWv`(O@6JVg>zQ1@ zzdyE8e<-VWeeU7|F_Y?Io^IiE_QYr%%;o;;TqCK3ASOZY=R3Uvj)=?ZG|5JuTm{~V zq3D3)LxoIrP0I%gVkzx~oC*0U?84w6P~0e?P~&~MR^iuG{g#n1%1zfO*&G_m@O>_h z1NiFtNNH0l(Cq(AXrf<@6T%5m-pafw7xz!b_82ErAWrBOo=3K7<4^XE9)BS9;s5%A zN({-!=V7Z71)}i>QaG37^;W^3HsWmQj)YMEzng8%ptr}12}tmfVg`qE z!KY(ESP4{tnZraxgcXysg+9Nrngoe6J9G6ju{r}4ve^6GSH#3kC@(Vf}7#3jWDy{_7*BHc1WMUpiKnN(|m z3Ac+eZkb1H+7~+7{2>@z^-}mX#u3NCb%m}e^NSX z17QR=jc{vl#|Q@>b_3%fUDUz1s6E-C4*qJMkzc$Lnvve3#bnSgjA;4*tg2WRM%$7u zw)4N`s_(h-g2_Bx&l^{s>4A0ax9fws@^7o(3F}i<3KJ4+PQW$SD0enRKy(krj3Ms7 z$`s*#p($EJO>$6)STDNnFmt&HV({@N7Rl-E=b8}Iq^PLAYtxNAuBD|tf9a77_dj37 zpe@u7244E$!+eU((7q&`b|e*h!T~l!x~3Nap%Qk7+m?xMH`;Bx#&SRJXklI^w0Nnm zMa(8`=6v^he9j432;Vj0G87~kc>&ASMrBM~K4gCQ1U_Axa=fzM59cm_DRv3{Ns?q$ zxrNX*J6$bOFY8bPjK58U6KJf*nx?SmmWewq05VOGV@=X5qB29WNw?-;pp8x7xcv~q z+>UHtDSb3U`?(gI2wHPb>po$&vUL4!E;bR1F(^8XY(X|Rb_VmIuSf@}Xrp6=CFXki zW4WP!GVJh>bq%?de)%98h^V0AT5wyQk#NOJtn?{*Hcv8}sfx&k@9t)yHsi#iVH%?n zydoJ7cV-cz9qA#4xWQ;N@0NImS_O-Qr`&js9l{O_AWWID05k^fssCnH+)dEYqZkCX zO$Ptnoxn`LmSIPP`z_mlVz?aqPKBUzH`aRgV_sBU&9YE~&7&f^LB08cAQX3h9!yA2F4o5Gts> zBba{%lx*0=4Rb!%i4!xwV+wQSrI`60V&)2C6PY<{y@8pp2zu_9r_PP!nH(XQ;Q5|@#Yu69!f)nGP(!0D_-M@XbEnNLut^(P@PlPGHe?|# z(Y}Q~-C9H`GZ~m+U9a47-MPjX1EKTJ1GRwRQ2=nMvolM9iGy*o4}f7(;6>wHdspc< z`M={`d;fu^X*OAPzuo>(j8Q_`^blymzp|5P^=XMR$9ORiZpSW_oC=i_G%WfDdwevI zHz8D20xt7KXG0HCB+Z)_bQdRsEK)WlGdlox`cqV2u#YJWE}(F|dKPueYzZ`cJy88s z)6y7d$dF;63M0nRHITS_J@JAdjj~v|o)aM6O_Rb4#0g%v3d~M6wDfn{4`w4x*WYF) z{b^l#8wGabE@m!dILxt`q6-}7;r)JFKD9aY#oWf(tJ!&sD$GGXYXI&>pF@AfBfjQ+&)%bN(hiZ0tz_bKoTolOGi$WS+Ns#VK?kL zJA{Fe?R#bE+7Xd;6-j=_50Gui!Lt~a*~u<2nBhH6Y$Y+nn-R|m3@idCwgVY3?|}iv z%nZ&$vGo6ZtGfG~E6a(MK-uvr7+Y?f{8f(abOylSQ2xrh_GRTP%VR1(-3wkW=D>5{R8gSQBu}*PYm;r42 zZ7AzK7sA~mk`qe;Z7p)E9xjwem7#Gx7K78YkOMQStc1Lwfz}c`L$)f>>QK+WYG=R# zD#+OfIu7f|tkMd4Fwo8H+r>Deqc}am@J{bzfCh>mxEKlISEGeucP0p&6J}u=$f-73 zL20XpEZg?hPY@R+r-kUa4P~k!WPH|Laf`3T`6Y%er7-4EDnC$*>K1pn)KI$duubn~ zulJ^c*bAy|-TusL@ORQ$IdVizgHWm`y#h9bDjc<3_Ax0Q9ageQlnRO$m&U8I*vf~N zneKM(10fobkftWnU%-mP5EfI{-%@olh{Uev(rt#77Aguo(g^y8Ju`S9_?b=nV&~5} zJ{d6lrC>M!8(fXsoY&3`V(dzF$Gf#f=V}O`F$Xl8)EI*-!8&=+8~x)M;5U5elu(8Q zuyl)~%BvaKtQYI$t5;!CC3*>l*}}9K))N}(%}gWy8g*ov&5VB-cVgWT%|tk-$d)_Q zM@~pal9LM%h|jZxsuD(X@Jp6Dw`u%lX5>OheC4F+8^Q`;AvSIl_1QAjm2^^j1Pk z0a#>SaM0WW4-luF(t*u+7&@X$qz5FZ&|!R*1B^8pAU!;Q;^s;%w;Fq|QFN{&zqZbN zJMt`Y5ekjD#6vz&Fy3Q>J9%3Gl8~Zdd%&sIglUf#^$h6exxi?YhN>ROOk@w&)_vN| z+)_eR?+G-&o0e0oMPylSc19N?N%RAvfm>)W7ARCoWwaq(j_}qSlEvVc1XYu&i_EPP zP+)Fv_g%f=fm(K_0I_??vj8ol{UJg_KvtT z;b9vu46p}*gJb0QO73ph$>WZm$hzDn>5|K>y@{;K&L=)*?Ol zO(%WdX?S6Pp778z$OuZ;!A3Knw-Urlx!AO{^R+p&EwDU?yz$b2{C~I*DzehSXe^i) zFTg)3O5OP)qZfrtgf=703|i>rBE~dzVgH{K&b=Aagf9*VM;!zM7zib* z4l)uhW^x$EGx$$YTW7|pgH6mD$wB3LK+A|wtL{}{PRttgRR&GhNMvzlk;JygOHW#n zakY0h20<^qBv3olcTsqf1r{$hIKXh@XHg5Wi3 zOG=|oYVU0iF2DJ{AajR{cncit0A7y!gH)KSM`*or?{@Ju zH(?DHZS!)sVME)8{A!En$!Wq0QJ0j;TT(A$t$K!F1s@eeXC3BznVD>_nP9q8luZz( zrfV6Ijzw+?F)FhkB}lC@mRgxGQHIi2Z7;IkS1Ym zV%8RHldF!Pqd6p#DWTpHE=5SKxnc^fb)6$`V__M4<4Z%fq+be4p_k(fOmDm2SD~v; z!f-LPxzke8nT&)iC74xsSibf_6xiZkbjh0iIjTHZEU5ozakk|IRkqP_$ZomAM$Ht1Bw7Wtl_)>CWFohm3&E@ax$ZkgPq=wU<< zda9{SWYPfV1&dQp=LIC2Ir>q3i-qNuVV@Z*E8^2M!MgT#dw@Gr=Z*LcG-6KH)9mwwpu#`(60Ps7;APWq1-S&KrTMxrz)2hzaSs zL`9XQ6h6rdTtY;X>sTiz4kI;#``jKFgaim6LBtP@mdFl$x!n&An3V-~)1}aS^Mvn9 zeQydhKOr>h8W{59ajKpHBPAhi+P-|*WmA?YsRP|BF}Lm0*fhFQy!52+&trcQig{n1 zP6$PS!66P0iL#>xC>3QiZ_toAc^EB=Hr>aCl(+i{DbW_fA7noi&zho@qb-#O8^ zEEN9@DcUMdn#c=I zq7hvhN%Bxb$Ou|QFW>}5MjbWh&>9pdP(BMdoTledA%Ws2kkV>`O1i39Q7|usP4QAQ zAhs@UU8lXBt$n;R&^ziPCg_}?$1shs<0wT)fn*p9m)MSUHsQ z-Eh)#aPP_h`JEi3SaMms+NuEbpu};grx$V)Rjn}jh)ws4Uc%6Wjl#E1 zDx{WAq812AiRaB0E*gd&x7DcB9g2F#+3F(!4fr)KUe%hY&)P2f{wW`5&cv)ow+h$D z>&Hep$4mh>6(k4-&aIhP=DTd^R$qRd`PkWbCvuaEy&=*3y+ma&D=*q`4^DlL&uo6; z(sy~67oG-cj$6(7^Tsmpf0RHDMaM>gU}lqr3S|9&FVo(_U?6FL%Yz=qFM|UY)XGT6 zL=2f+Q&{e++*k=z@017wcZI6Q<7NeJ3y%mRicXYDe3{tufZ`Y6CyDH{68WI<&_iTP z%vKysiRli97%u4#W#27j>#jBMfro!ZWq8D*=;i`j=k#wj;}f#utSfE7QyC^GCIClcL+QEv_(d$Wx>_9 zAz=C^7odUmat9+1+jzSK2rvXY?bWw2;<%BHtP7-xi>M=b(d`Be7^?LEsp_p0Ld#h*6I134vuz& z{O@sR6z-xILaC8URpbOIQLZLN2{WmLFk}yL6laD`sf)V5Uw{FDcG!4_P49CymZX`A zShC~>%&a?PUUU#Wv(((8qv_@XUMr_N_Y4ObM`Q`{fR%$5L_s(i)~mgBBEU?V_6N6X z`-f$$jjwpb3=DafPus45_I(a5xuA;LA06`Lk7s}%c7ReoP?RCtAXqBfj)1m%VW@w5 zz&|=uHgU7XO+J_31Gzio`mD<}N;XYdp8Mdv5Ld^HACmSDHuzCB|2s81i;`>COOmOt^Z)a-STYA!;fl zVZy;0@*?Q`;Ibt81o%sW-eMNt^f(IcVstYpbZGyJm+@6)pKtL3Qx4r4U{1~-_I5Q# zId|!Vo1)@NxcUm?q*9=`c$v9aPQKyp6F#qR_f>27i%_)(FH|cL1x1m;RFG+g(-y}v z_`i4Xlt75SL^eqAH<&G9WEy{eDBy`)2Gu2M-H;~<0Tp9=Lxv$)`NWn}4={k#9Uk+n zTgCmG7=|Rvz%6qPy@7~MaxYTLq@U|Wm%#+4@j3~_yEZH%o~z`Z4+awU%i<&?s3`<~ z^z;m(2+yRopX7nHce%kXUTW4(Z1-c;o)3otf1Il`HB%dF`Y-_*QeW6mJyzU?`&ENk zlpH{qD8rWIIaUur6++p)p93=Mvyozzjucx8J7PCOZ1`B9@x#wkn~RDjE38~265l>) zo4r((J|1B2b?dVNJLv(UzX||fb^x+-iXJ2NN@QIS(h)D+NWi#N+iJE9F$5JC$=`6m z`<{IP<6(!9B4Ly`51UTdRBx}Q+k#YdbwXcoR@vBH0mUP(h5|z~Knb`+n~Dd@`KlUN z>(^PV+1&2OnZEr2)t@~dW;xRbR2p9|u`IM4k`DAT!)D%28kq7I27~q&%^+z z-;l46Mhf^rD1CQ&0ziC|#G{Pwl+Ts!9LPRwoIn3sK=uhQ4h5%WpG8~ z@w<;K94?_A$M}*-tLs(tvh2??KMF>l2sqz!v8o)Xg8Xb#{8}IcyK`Bqp;6VUw1p`ogh zW5gDdNzNyC(p~@A0Q-A?95(3r9l+rr?n@d`=lu+#^dR-u$anDaO0wClvo5TemlLQFPDk1)F;D%Wk0k}!SXZe-OeV)8)vq|x>M8EhEwxLzZ_~X`a)#{JTUb*`(5m%kWZOB6%UJe3X(lw?W_g(Rys;;DGpF1O3Ac`*ROSwfVG_ONLy zm{(*UQFSsj3H@y6mWKzesqJDtSN&83v)iKh!q^85nzvAT=;+?@pquIpbk{0z4I z1hp375h0f+qHQItJ6>ScP56G=@a=&ALo?t<2qd=*P4eXZxeM5}@1`21@qp!?8L&t< zT`=LH+rAT^KjWZuyg@&aCDb>x;_kK6v`C1;2Xj2f0Sb`%7cLVnw3VFVD ziHg61BF5yA;#?j#jVnD6@;q>+d6qmF^86@ITYN*XN*WFake{Chuej1RzqXFdiRUogO3{CP-0D1g0Aobr1AXA%$Md&^v1>zP=^+uJL7#!dBeSaTv-FfD@w*4UF`aqT|wQ4PQD1eMsf#k6KIDmX24GU7;O-YII>y41 zEn=Bx!EIw1+e6e#|Q(o+%?MfbCuDMLhlCDGLjm!#V zF@-CZRcT2AJE#uokU%^04X}gZM!&htu_j%oR{5Ot@xn{8z0z-j@P2O{PSmUPH zIPNB`Oa4joNibIYuQ72jMa$pR4tu+E$?x(&JyUkr4%?y)C$6;pb3Xk>(rMC=Kl+!D zK84k2lPRyT_MSee?O$`bpeSB2k&-{7G#LUn$e_ry$%+ND`UUG6~ z=$St+nRL+S(bBP-W9{`{@yu}-KHNpV+=QfWD&#t#>mEr6HeM2)C$aB!=aIHs1eELt zY|(eHu^I;==(p8m^5^i6#(97%r$nx|MjS(bQxrutHBZ!?71h+#)bJ85ym_G9Kd^A+ z%8t&?j)hmRs+4=zE?isgALy?14lKOp>Q}w$>T4Db^mi`oFR$z=cMe8T$H3}hNB`>P zMOP0*;E3kMW50D(GKCA1=d_&ipY*@lIgs$mnx{`fckf`izqg}j;mXy61C{<+9EtyL zb%s7fMXeoc1}m$|z2*Ln!E)ChL{SuxaP_JRZM(LkM^7w|vm?%Pr=7&qqjL0lL3BP@qvn7ZXcPtK{l5uO5y9djMPAIt zVE7+@e!%oqhY7n;*}z>kF#6O7bNfDRJ+mQfeu^&ksOrq28fPfQ3=vyvq9~5u@C@`| zU&r7rXRf&2r4MJU=!2GBv0<>>F`Mfp+)Wk>*9@*~nNba{?ilQpyA*2j7Zb!$M2(z& z?CBU7?C$LFz#*$AiW)f-D~|F5R67`j`elJwJ|5X7iG6zv9^X7 zNEt>Ss-+3u9Y2GisIqY7EG`9^Z5s^E>cSGZH;eYIoH;Dx)|o?Bwg2qptui2Nno)9A z`rA9!b@bed2uzotm6iV09e#|3eE^v#+F0o=clWNWxYrEKMDC^7zp}GXC@gjmt9mLc zc&v${{&GiGSGU|H;@(zv_Xy$|x!S`QH?YR%pe4v$8)dSNuuAcBqG+I}yHgO@DDuKQ zH{TZ$9rGI&%%u!BQE3e}o+W~e*+DpHZY(eCyEx3zuexZQaQ3&>aA?i8t*lz1>*LEG z7uCoyLQ~p3ZVU6g@fT+5YY*y6Ot@%XTz^TH@Xma~l3c>O@(Fu#3I8LXFrG_zcRr#1 zQeTGoG8@FKULMuLtW}0NP7X>&Wg5}K{mOEzgB*K-eZz$FZaD);fZ65ffKld*0&+@$ zoY*~O)A*7J*5*%a(MuhK;Ybw0HZ#s*31Wo9TuVD_=90Au_l{7WDgKk>~@is zUgmJsVm13F9kprFjN`=3%8q4F?lw~zemYd?Dy3^?ACIBZ@H)FCd5@Zddpro9a#Y%b2w#Eam9e#RuxBpSEKH&^seZs zbl%$CyDH?YiK4#2X(X%}DEC+AT)C##T@B^r{+Jh=#9sxBk(yxQq7Y+=o@E=8*F)nA zoSe-g0}7TI!eQBto!aJRTh!z6(71RwSvM<&6R5|paJkPlFV}e@A$dru{}KF&7l4@p zV@+aW+3e@siS#40K6o;tR|b6I&b!A#Knq&^z_sDD)V>Vrh|Cbt$VCN{G6ZeG>)`0h zfb>UhV>Q$z%YBb5d4Tik%sJjbcYS)?rPYZa=7E|in;em}_lqB;^lT_sCnDPWBD^Xp z@mB}8${t6BskzWAuD$+K96pWuPqq4Kn~=Eb*(dSTJ`yM$^E4Qx;hX27q+a$6ZaoZ2 zqp#943ti)wdgjVWOwL(Y@|c!qj{WJ6hYQctFBcf)s;=^M=GiMVs^oHie{UtPmK^r* zDUPC*qS~qqaT7(iR4TUyD73lHsnT7g&!1A$=k({wt~}P2UBzG$aPOcdzQybOCnE*{va7g~#&T3Xr)=YocgffA?T{ExBu=sM4#Gi#eHR(dO<{oI{fp zHHQqiE?akHZMn0mkaBO=%I==B=RTxt7$|o3RLbkiJ{ON6QyfM8>q3K2P}KlCH;Qx$ zl*l+pxpSkaORq_^YP;26t@^r-dkHVyjpcULV}62ixq03xla)Ul5{-<9bfIRgjSV{m zWME*=FJ3mYMaCdh|HJr~WJEK!7f90=LSOW$prHnd*>K3C-qz?)*VdT}a?aP$-1odw z_E_#aC$fn1ooUlG8J_uWuwexb7gW)QIBv@UHB*>dwi?TQPxkslx8%Mzyvh}J zmRabmNb1jmBmd%5XAbVnZ76Y0@6M84kM?h9xu1Vmr-V< zYT4qQy2J0B{qZ0HMyb4w*z`eh|C%)tm}WMGBRr2S3S}LeUKW&6u2P#YeIx3xXp15H z@uradpImk*lc+%+$nJlh0sj47TMSi_!{afAAl}UB(jy7LK&+V_%Zzb#k4@R$ig2-s z6Taz|7t<5i7qtYM-dm#$0is#aqz5!m;wS-V*f`3CQOhwRVoAx)UgC0!oO11iqv6_6 zIFo4KD`BfIFk@3ArXP0H!Qg>;5?j%gbat%8BoVF$YVfK0T3?F zO^Hga0oy+S zW|MHUQ(p$~wHX19WdPrB09qnG?-b=CCqHnw#MTf!KKklV>~~!zc#;*{@b3e_;TZw; z1b{k>Yi&5s(D9IHew)ipA13HaR51!fRuFXkNZJOO(iCWEfb0EQ41w|g`LSn`^HVPr;tV;R71=i50dw6TcmA7EI?rpr~eQ5}&j?`&Wx ztSB=lT0Lch-muvaA~KHs$3VlM3k^B{L)&Xz+H>9YchrwFXl1NOy*Spt&VvQnajLnf zaT9V3CFD-{em?HA)R{(=PEe!6<>cZ0vPB0~E=@t7zDpLSHnDCqLM;y2q!^CY+WVg! z1$99<$%Arb%190=fQUP%lS(&+EDyNWgF?;`P33R}-GM%8)5AJS$dXa=pr6w%d40&g zQ<_GPUl#V$XEXNe>4*A}Ee#T6Y-J%aS#H*IT7WE_#n*E*fp`{m+pvJJYocJ65nhfg zil-3mm6&xCDA^EM+jvtT=#J?PxhG5exDb0lw|`{Ra;kQ+++NqR7;z%%(zRVuf|GpY zItAeo#k-J9GqBGVIlkRpCV1?R0ulcpXDXeRE1nfCa%jl`WfH{@dz$J2tMLw5H5~Ep zkc$JMm}d}Y(J!)1vh*tX#lt{vjpuWzO{XoIwIO_Q+nWM`zm{W{a^ik0OM67_HPfxG zlsc_P#kWk!`HsUw-d@`KCjsvhwMeu(S9H?Pmh0OCz=Qzg3hv9&K9sw&Dqaxo<~p81 z9Cf#5CG}EUIjAu~A&CA;hI}+m<1$y^*``is!qL3AE&J#;nd{*KiP>_<_svlc^L!(x z#ps^*Q@IddISB(?1ZzXl75Ds8+?d;3Qr)ok4j=GDHk341mQ?fzM^BUVoAaY6j=p1` zV!`YWD_!MK+*E-!N?+`z+#LDZwn&)8uD@zS}!h`}#Xpt?qahF_(KgD_z~aj#cZr z`)A>QsLaB%v2yh+milJ1h?ueF|G%yrX64iP{v`2CGp*o0D*`ZEj}mT&GbbD9g&l*H z)!nnnG}zzWyJ}!YPmk|vOv-CA#{rA-bYwoqQB~BEN;nB7ijYShYaI+Ofr|J~e6He} z-hqyl<>IQ!HLtn`(2!8RZB2*we5@`H-csoj|Bd)T*7U0{BfJm_;BuFH#p5w2iu(Gy zd&Qk#y@z40RzVQqhro^D{rtSEqXFRdk z4FviY5M-a!36KDmBu{Erc_kB|{*2d-v7DA4QD}lIa79_$99TOX4A%4RY=5G8O zv9Jh66EBoaIb@Nf{We|9Tqw0^eB~3EU1l>U%fx-8#!u9+3n$e()i@4n za<34g|DVm1#ov%X`_ zo>Jp`N34gvVPDB1cp37GPe3dIg{hUJDYdxx!*aETp068!OAD*FDK{%DJ7n3i?71`c z!@!*n)nF*HSvj@b#1i)I9y=Cb-XZ4t5#7|FGX%(zN_{|MCs(uGimg^@GI^al!OCn3 zj)2CW24w1u${C(}vb1}&ppreh3xgjAB~xT1B9TKC_31i27Exa`&Ox6Sk8Vd??jtk} z=3s!!15JFyU89j`gd`HFr(^J5wDIR+vw>KUqD>P*^W!&}TPHwwFMsah5Akfy2f6o` zp+-lQYRl|##dIM%;)HC(wzxz2;>+~@VThB+4I)%qyn4VMWk=M#xBe^QRFA8s{U z3rsy{NH?7AYlqq7ys4mKI0F>U25GKtLB7DOWez)R&T2J-1#?y&H{q$SY)%s8_~`Rm zxyjN{&@MD4OkI5{L^;vfST>N3Z5~}GD?t~j|@(zLV$3vb^ zgsP@FsUmozqsdDZvI6-j!YP#CF>(R3m!BXB@z=u%;~UMo37hJHi$$|8XoH5yQ0Qlc z&>Zi#WodidDZF5%yYa8^oCkFT$LdxdGXZ=~M7ySsEADAFxNf-{!P+La{L*q@sL_*6DrD0uKY!kX4UOzW$Pr zlSy5h#WykBp&ryjXU&Shn{DR?lHYp@$ywSb#a(eky=BtODh{HKbT~o@ za`NAorG3pgW28%7DW=LvJA7@6El$|sRu!yS@03kHan*jn%L1B*9U5{&P&SM%V(}HulWtxoX$XIAaA7)_YatL99XKRS{YQ zgO7H2XIE{^MTEIv@C_Oa-fdHL$#mkN#I>L!I@`x zn$DTo`dZGMpn(m&Ps716tGLrpXSNv3YKKF}**#d9?&EusRtec=9Z(x`x`v%)bdL*i zIdkr3pX0&%ifehD~rc=#N^vd|(@abe`*j`S6b>M_DaA(&2a3)N->bWMwDg^;dOJVuIo zy2nVrp6W50lX;A6wa3WjJx1Xr?=j*d<-3R^+%DR5-aVAj4hwiwhY)W->zlBl`jfhc z=H%T&>J4%{0Je+ z%GE@yDi5v;(QLh4-5tHfp6oJVS& z6H$Z*NFup9x`m6YeP|c7N|=_!Mb}Qt;oh|}4h3}<@yO%Njg~xCC3W{ziF#kZMr5(s zrDI)ZrPsGne|dFfZMmbTr>Y@m}OL=ES(P;wM$Cl$0T-n{LKId~`sO~Q~dwTbz1f(zQDI$Km za%#9Xj>YcP<$=NeHJu`2wQ7Zs|2*)QQGUg)^2&}iJpxc4AxojQbSJ+h==>?P0$vd_03uH{t>D^}%LfiPP9G5gX!(l<4b)G=;cOk`+%24;S$b40rqZaxuD0Yt2>r`?f2L;Iccx68Y97Vg|g{3In>0) zt*wRlY?X?={jQLtuBsuAh40Qq?#}5GPD=F16~uzXS8@TCI|-v<(Bm?Xid+4FPT({X z?w67XW@_WFaDa7uDZX^)JiiKba3PVan-F&CaO^Noh4u$*Y6e4?M8mpJ*nQ$+otZ#R zv5{#Tr*9p`_XP1$i=Dig{zG2I#?}XnT=&I34@6R=C2pCtQ_Vh<;@E}&`8VQ-(=d!- zY8LL4A+#rMggtIk)A5ZV*Z0Mfrhau~I9@dAoqT&Y1*qRT+{l{rYW1!QlVo!qE=Fzv z@*;ff_K^24#22MJiRJ!Kw(^NLsCbw=FY&%U%DEY%G=+AzxOK{G4lc@LTLZRlihtpN z9DCxz@k-l5>aScX+)566X*iw%{PTwp{_^i}M9v?|a$wk< zBaI^bh2h~E2YHY#wmyV~*6$Aa3DKmB(b3Um!u}2vf~>afRjGW42E6@{AFJyBd&tkZ z7jQ{^i3`FtpL;WqZ^~MMlPd5_mz*CC#_M}W!1lmXfVS-kpbtLR1thk;%i*o7Gv^US%9_c1)#BSin)!*-yzrIAq2BijZUV7V z8f&>U6wIKRX+1Nz&$D>^fB0g|2Sl$Pu`-CU3MrSr$~FI@e;D*=a=f+IG2H2Dn;sU; zmI78;xRwalt1ei^uVFOZ1!0sO-%NuWLl2E{?>0Mc^ayL8^xamos$k7Ut>mC8tllNu zcuk?8kh`bo(YgestDTJXCxx7%sJxUr+d~!i+!?C)i5kRsSTH3!{h)X}1CR)6(eELo z57i@^Rb5+-|F3{<(s4{eU|D}jRa;$i!luhx&6WZ*wMc7Fp}2#t$o1&)r6*)v6qa3w z4W#lPH*lomT=+=kQ@A2yp=2K=sGS}LAGEZ@yg7^pd*2u6y336>6pAF$=A%|D1U@DB zW|I;l!wNeb-(NG~ngPUS5Q8?^;loO!y$hiG4aEM=T0;inr*r$wBm;x&c$Mq$>4C+3C!&awT~_NZ~$m=W_e=Ho|3&4 zsckVEhKQi&J~%(#`wTBLGA5`ZkbxYs;u}x;?mPAohq{$`Min=>!7>FBLNmx9q}mRZ z*DUQw<4cq^f$|8Ov}QZqNgs7X#&9#ItJd-vlVO+}&t3Y)f=T%9Ue{$@aPb@H`zo5RkZojA0wrg|mDcMjgPvGr8UY+vCgzAM-$Mv?1da z9F}EMsTUnbvRupz5q5j@WA`}p^Xkl^+zctY*MHB?d&J0ee}hlKAQWU-*R;<_x(A*yVDXI4`z6t=SC6iKAU>69di&Ohw;a1ro=+c9m#g= z6N*CE5&txv(v@5w+;BAhNe6)_$N#{FV3?GHX!~>?;zPM}*-)w*U(O=KO-~g-`y@W( zS%qf~Yh6e<<*T*q=Ug!t1~E38y{Zd+5H=_J0j z9qxd>+AM4k5Br8b@v~O>1#w<>c8I?)IIwO0JfEt=eQL5pe+csAlndN@KK9W&gL%)w zR5heCgsJK)pt|Tlh^Sz4&e$v#^{nY$&8no8IQ@I7!c-OY^hF2#dg`J>UAE|OcJ-pe z+4)6>@RDD2;3MU`MTfeKQYr>da>P47arVWh>&gRfAkepfAp4~25Ow)=h&owza2x}{ zJo(_Bbae^ut6L$O7j`Y5rLn7-x1ZoyJmH@1c{7En&ddDP#Gh9Bh3NC5=(aVLK@qBR zqo`xBvJwLHvD-cNbd}eOE=c+rn^cg?))ShMj&Zy%TmoH;f2wc7I z_7J$*_*upr=IKWVazqm1WX_`I%Gb8(Jj^=FdGTm2ZSl0Ud=g*dH#G#3aN=0-BtkhzF9 z1v3L&k+_L=HZ|EI7vVa)<=9t4iO$PB;_@dg6pL3~u$Y>IIA*An**c_5=MK#-vnFg? zT=KU8+0WIVT=K~3L539Mkr5JCg{&210BS&$zpjP$-XD96!1o@B$P}tGc_9vZhFbI9u7%-q>_nLtI>;$3b`Cm!;=UlA?pBU3rRJ^@%+lzV(okNHwP3=iyw9Wbgcjy631>jIDODLWcI51-7 z?uJeNx@*$Jc;6{gW|DM*&NSQ1V``;d5pH`@Ux+-dWuhfdauOR)Gy~|Q))c(mrbgmw z=~QyFdFq@vFuutlhE`~n!@$Wa_2vP^!N0n9*r86A*_3Hx22QmA1Dv4VVM2NUxQrf5h%En+uB;(T@5XYHDgSn+l7}Z9~@7?Ir-e zXl{i^p?vB{B~W_TIwpt25~9Q@2ZTCr1?1GE)U*}+h4XDkg1CIa&Hl(hJw`ZnL1U%O zW+tXtKY#?Z)Dt!}acjY*W=n`s9z7Z`elzE{cNm-8ArA?=X*H-3et{4Vg1FOop@OmA zbZ$27Gjj<@YhI)UxowPlzZVMnp(7ns{6@F?`FO+k1JKVL5cT7Cbh}s3qZ!aYI+7Fd zO^IwEz|vfLb1?Y%F)Z;NPyUzL44XRt3Vk)aRyr5+$uwaRGUUe zu_Q1{AI$o&5x4DUp}?=Z0GXni1b z&kb;mzX&*fCN((%)5)ZbERIUmXA%vXS_#({KV{M^YF=ZxXfgDC(>@q#HG-NbfN@zl{y*ea2>@%9?CX~Jx1H=7F0 zt<4Ocw-lDQ?_1u!Y`HyfprWKuY)4Xh2qcYD-ShJ3I=>2Xg(ow=7474OU%%_SVnCqxrj zj=v^B$Yd}^`lNjyKq#n$*w<#uKJ;Do;Vz#n-eOHK?nd|6xuN@>@THjhsif8AR-r!$ z4OM?KKz-XmAx-ci32fe*0qKUJ1Hx3{@&TySL5L@ADZfFL+xTQa{o}mRg9EcoK}M$n z$S+*!lnf%lE2BSeEL6KA681#(%)XiL{LZ7L!viLn;t$Adg?Bk8(dpVo7^8bGbRono zbpj`xt*(TdCbXGQ+ByL>pY3-Fy;3NaWOhF?;1>e6d_LFYyQfl{g#Ov-Ipx&TbvHN>UKCi5AvV zB6gY0Lw>T;cTULi=bA;jFQkdKp-DzKNXQk@aBhHqzl>@u7^K#m-D*=aP;iDUrg>_M zYMqNXCiR#au5%}9>}i6Tiz?UW3$0nb&y7#>`EbrEaNKuV3aAOKDAUgQfLAYi^L_1be^H$2l>7W0rdLi z`Juo^L^_TrW#)y92N`F~%0tM4c>%_U;EFFlLEuynkhciWA&)X(AC?8r2`NcETPCze zBxVlS1vq&a5ZWqU{0I{q7jQDd!95rw2{PlXmfk~J8DYSP#p(it?avNk@Q}ahX!M1l zX788nM+Yo-a!65h6xt`DT%sgnUAAa0-fb!f zHCd%ig0)QJAdK;%sch?#6gCzLla{#K7VUOBjETFspz;G4zZpQyrXjQCkf}dN{NsNP zN4xELMc~K(mi6i*j9|VOHM}yUzWdbF(Jb|Cr>3@D8S*|>%X)nk=J71`gD%PoX6wvK zeKlq-Qbct`l0+yjKQZEaro3OuTD|tV_-1nnVI~rciCmZ!?dBD&*4$jMrtV?-AL@(z zW^i9f5r}qcl4^*x8N>^!Q@VyUPr>THLpFh{sTM5gdoz%;t26g!Xnn!80YZr0nB{#@ zND))Sln!a8LKbvNann#9A~^Y?zzHDC%78SWl~sEJsI|Mt5fRuU*v zlyB%8>cBCZU00C)LSc#7QPXNB#BA`xL9$#lQSQ~et)|PG-)tFj(Ntk{6clLJfY7|H zX37kSt1WyJ;mqF5W86RVn=SkF!YOW1GJC|`Y5o%$uV|X6G{aPf`CK(BX%4fS&SW+- z2BDXsLKL1>ns5vAUrCfQt08~|i8|ZiyfBK-Fe@>?iXL`VJsd%Xxq`oPRdq1+wMNxi zncNhWv<#Wr-C|anIj!b(QX>*+lxKOoPq^he-p3ZMI!_{m|%*F6f=mMljIF;^W<<)#wsxHY%y)^Jc=3^q=6h$Y6 zhk(Mp@8Q7K@g+yk1_sHaHhs_sxFN`mdWeKMi{j1Ibh8}B!(!CLjWZZNIVcx*R0Sr7 zG6lCY(Bkr^s2oFYF zlWjHK1@pXCo0`>!77?iCCYyc#HIVZ)M-EyF>JxCl7bp``Uv-R@CN9CmY>^t*9^@dC z+uLo**@z3&ShGs25RSp(3zg(hp7^&iFU+&OFh)5!=i-QI#IA`v$wIv|0p2* zr9(*VrTv89`fSqoh5-6cPXStga{&FlaNvkNszH?{u%oO&4yi46ku`UU&e48D0>#I# zeS!(1SUx`lt=N#P7MzMQ@K1 zA_fYPI+|D47DSJjjTrX&IOm`$I(Z|5Jd9AH%-!WR(FvWIcaW)>HUuRN6WA!-IPQJ~ zb%O+8X7VqVgji5oA806DYq@9L%$Lr(n2}F|*{cxRU@dVS5#&o*VCAQfd;Og8jfM%6&UCl((%YCU*m4}c!^2|!1JhsvSN{DGcbf0nMsDhJvCisb)m_u zESN0?(^D{O3uYC6={cJU-V?XCD~RMi7XUc|5^*l7cxknza;pBQf;PFCH3dy5N{s_XEqOX)i z1hCZPw!CtX--gwL9V&8;Sidb?%UBpV_FR4(djP84;o?9d|tO%(O@tXb79 zkvqJ&ZL5Z}-8wpNbp@2y50?8qO!Zv@V{cJusf~>;t#ewM8Z*hYc3Ao>olY0=L{#Zn zEctL58-v7SGR&x@qC>Ujr_)UbZs7dqR2^=ldw5YnrvS@fCPxnIAe7YG;$7Cn2f0v3 zG*T*qI?qQfCNDZe6(`tBXdE>(%{){Lvu^cyUit`uHLaKiIt`_2(`$yN%-586G?Io) z;|j3xC&XL6%ck*Ox#u;tDdd0-63jA&5sE<@>~uGO6TibCtB}LWN)FmX4KSAAuhg9r zl67OdW%irMATZ)HILdWsE?Ddg=gx}%v_?*f%j##k7~Z(3bvLU#KE=H9aZH7-cC)G7 zT-3VA{7J#ADVQzo%gm|S-tlzTUNX{lpr-O8#{>Lur4NbDjzZ2kndk4pZIx;Vh>B3 zGkv8~>wK#P4k(jDW4%+`>^7PsUL$|m>?0`Xt@<`98YCpMkrGg|dcw~bqW>O9`7`lo z9Q8SzWX*HJC+IS_q6!i-k6EeYm9J~~YR;+#9gvS# zg^yCoO^2+xxcXE1kTus-e|o)msLrqUP^}hxa{{E4yg@!*8a_%P9fzzrFMJZX3UGyT)3!#<)3lk;uDRyF*o zMV)4fu_~>ylP2h%Xi@KiXcGB!^H7W3Z_P`HDY2l!_iFli$^~*Oz2YI08`&6aj&{xrhN>o0IS6_I-Y^+xCHwdxzEP zk(->JSk+l~BL?w7*J+Q?O{oc@fHoBA+py0T!*;a#4=Uz5xl`}8Q+7&N`loZS&ENG5 zuEP#i?5avvdBvK4lj};)cy~h}POajnk^;u%pnt_;IEn6JTAvEQy*9mzgP?~)6-M_5#D7zB zVcjrFr)6ZjFE=_6lD|T-E0+RVS}>$#$MX}uDaJBz;(1s%904Pplwkm0pN{hMaC&$A zYIwy(B&)wh3H14x`?H zaehIh2AfYKrC?ifhfU4qLUXg(TDaS$_(`0R7JVv^`c7wVgAMwU$!jgAEEJnOkM@3A zf$N6zwT(U#zE0Vs=o!?Pea^9F+*;H|GtW6ND+deE-goi;gbqLBGU4Hj-j(ut zQPee2)XVWyvKy)1FNky*Qoh|!V`sxqPQ#clfO}P zwY4&0F$j05kV6sP-*2FPltS^$G#cx{jKwdB*R3ZB8T0NC1rfPe8g;Vp-Hk0m%O(G|?^A?a9F3;lRO5 zA9xVY!R3#cEnx|4$+rXUJ7t=GAXoX<(R->Y-#6~S&#E(@kRWHbyosYj{?PUm$KsUd zO7tC{%Y4msCP4UgsBGx!G8VL1BTWz>_2h#*xDa>$FLKV2R3bbkIcT?YQc`ch zcl5FEhT?ycD?SsEhC=}$f6paVk$}1Dm^)EJc1bqNtE{PrMRJ%R`V9rI1@}JSaLqM~ zRlR{G*&q85jR$>twNl;YzUu;toK+^ZS7#FT0Yg6vDTft7Ui-fB1y}@cdR0vilPz{QS)K@yu6K?;9J2ZyFce8v{*{5{$^PtI?*5}H zE}FRXgMiathzc%#r!ckQhXK~_8wZY`Xt1Q7B0%oAdOXYUznyXfnBNRsjeZo+zkeFE zqK7g1M+&N9Yr~I2=8wvp@c`5JW)}0BSRz|wRTWxR*V9tr1M-wu)P-I@SDKQ(fS_ob^ z*bq1O{K;b|@sTIK64e8oaFe=toV+77WI)jaL%Yxha}4%@`M zYMQ9t2&!B_H54Ugc|kH1t@%Gu6|Q)Z8Qse9fVu8Z7Slt)DNeP^&DXMOAYY03)K&<{ z#o22$)>5`qL&8Nf`87+xmg|xfk(mFYR8fsDMbql>Ipx&hQ^@_8kSnEpH%n9k?$S&z z302h3OO>u8HeQ_DSD~TPLPhOQJ&8PHUbUq@YZzQBY#us2PgZw1fgQ`j0rCuFc@*8}Ncsv%uM0_3R(E5ew9MKeYtCtH!o8&X-|}VNIAqy+ zZ^|LJ>bJKHNeGA;lkq}x3<@zHqQr;!Y~H^$1WZRSI-hwGlZo%SNDLZ=Mhjz!dYBky zl4hp#Aps~|KEY06Nr|?i8oEAq4*=u?CI2SNvF_IIv%^FoIls$zLm=T_9SJ_4IfoGf z#Z7L6rAhxRqmX9(WBS|8*}Dn!SR{WSG1<@I1TK6^xR4y?dr^*I!0Dl90hmF8dPPJy z9YJU(07Vb?k&V2-_%(*TFAb#rubhiWEyQ}8o+O^y1y?PZA7I(>hldz?`MK~n7?#xA z?MJ;i5>KX5$&`{yZ$zN$TwmY;T9Q?_~k)eK}BBOaeB&oAoP) zx9{Zv_|r21?*P^#UJzivFcWMw;wu91S7rjPLi~yV`}I6*H$5L-3&n2jr|*>k_}eo9 z3t~6Z?7K3+KHy-JVPBo`Eb*{Q9QO0>hO0uxqb@DWxGhWko=XfF$FsDDU0Rm0@#=u} z2QD#W+?J&sb7@J@`}xPS#2>rFu)x-^Fd+S@cqcUslul$8?6#@-|*7y;-a zrc_Q#_;02kl^VdjDgvAnc&~pL-J5EBp^g8(26?0>n@tRq2P_j;J--(+xr&&ZS9?L4 z`w-&A#+pM@ecWw5^V-rZq^Xt^bW2voA}AF*RHEhO4JS2A0D)|JNcJ`nm?+TL$pMlR zefL{)OS@YA&n8aU$dDlvR>DUiVkFP_q@7^eCG9R?K%4M1IYA=^LNyAaj4&`n7;c{c z-|Lu0gc2!v5!108WBBII_u>)4K+nIt)8Jo@4l+4NWn9R&x7dvb?BW?(TSTa;wVl_f z^zTAz|EmjO55+~q16&Hg0w;`J(L)D( zX5$d>GMk8%ypVP~L_Nv$&N&~n`o8M!!~t^)nU&&trPy)TQR?AVDqK+nTe;<%!-MoH zh|Cd^X*9|#jXt4Sr4g#=%BNxbXZ|E*K%cPBW$`6$)DnxK0ephkQW;8pa)|`hrHOel zipUg0P+sXKmC?FkJ0%-2ldxJI{kL3F+#vg2Vt0DY*psAf`=eaGM6)ebgQ@Kexg@rI zW~Cj=C&~7m;nZMnCr(!X$3rLsycYwPLgU3GP(e^mw@0`SVcot3Wc-c<`% zmj?zqR+R_JgVR=jo=GtQyO6oAyTAM_B6rJ3irc+Bi|7N3`uaOot)70b4H3#cK+=SQNFH1w!QH;V@AY{i6bn;T0TX!<(I5 zx`u24w0zqd4WVI$t2}s1rArpb*h*Ac(;xO5=}U1{*`w9^fNG8|U`1aGmx?dYl_^F@ z-AkM3HDS&QkN!45Uagnduw#Lnirq$rxX)~zU_MI#F&g%+mh92n=cD%rEUj9eO!MbY z`eGWt9ss_m>j)#FruoaDsFDAKP`EK$_610HXGo@8rg#!J5?_L=L=Lps&Z+||4r1?r zQ2Os#&mefWvwuV1U}c&xKgojdEgb{1xJ7tY%farL^O3VfM2RoSJQoy)#Dk(cS?f=S z>-;G*=&Z}r;5rLj`#8@=wvC@k@7yV~~#ae{`wxzcx0%bxW)Wv`V{- zP3&GNwtHsxEer6E5kTw$Yee|ffNrs=9NC%1t!C>)vu*ZS_bv}vi3#=&44ON&N1FXS zw5=Gx-tLwPp@{3t2~^r?ml2Dx%+Ii+l7h>Kj{`j!_Qvs^(-` zD!P4@jkE5x*j4WIL7rM&aMTjPG3W;%rIGJ8%IPW>gE{7;qBfShg%|)vcEs+i_h^NR zOl@plE=QV^%mCnj3}dA@QPZ$5gKlE%!eOEzM1ZS1Q-+Uef85cd>H*|bf(M&zkuW=_ z>`LW8#h0Z29T9|Big->LuiObK1OYPJ5TAH9X6Yt+o@mIwQAwUuvh)R3FY-Jxj zPC&N+UwTWR#T}V0HoDt9+A`JbV?g?D4S+|TlEIjFfHzEq%N4iv1VFckVVF4l)FvSu z^>_fOGe6_ld9Mf>R{Okl<`?;dB_TmVL0EPBz6*4tUP{V6Qe%04h!r^5w#*>_>@SWN zgi&3%O|+&!uz0h1LJxI79O64`h-5cg56L3y#)7t;<5%Ntoa(;Q7DIFp)sBwLnT7$xS zbM*A@^w(}I3NQ3bcY($L-7{j_$r`PQnR6j~vlq9tT-(ypvbe>}YmF~H@g)CGj#ei= z($Zq;TH{Mk%;x`(w3wtdIr^mkd+3Z{pt)sn%VN<9{}{o#$}?wOu>CuFx;tjxy(B59 zEzVet=EZ$)Rfg8a#vPa+Lp87TF@gPnEd-Vu#OPXP!@_j|*En zp8Ng+3{KABcOL)7oi2~zVz6O*AQ(Qd+b+k@q(8$!98YrMz~V8_#WN@Ly76J9)Ac&Ko%@g8r^4+2E}r%z68^cfknrZGaymT8B*ZC)&hEZj%Kc|< z8t5>6=J2zby*QGlb-IN&50v`{7Oq^`(b?H?1~qa*e8$Ri#uQ%w{p*Zs@N75-_^f76iFa37P2qDp`Y8mBgN!8w>xJ{T7JX?kx30CFkF znN)j6R0btn^$Rt!8O4XIesRlCT(9O*!!8A@tu@b8ZA8bR<6_as&^mttW5A|*@Ru&$ z+EiwB@%$%js^Q@C*_g3EY{q|kK>JFpFf~vTaO=XK9`1pm!|_#g&}Cjhj_vk&>&#f* zo;V&7f(a(7Q)WGa`l`olDrQ%zrh=T37VoH$eU`GlLgFRkMXW36!G7^=Cs-tIZeFxp zjsjt%ZnjPQyNEyN?{KtM<2yZR<_FH6f<wxE)%Q7j+3y4Sz z1Y(j;ibKH5WwP`Xv5e=lV~A0}2_{P$2`eB)TQpnSy*=3X{!s2Bw-;9gDgL||qcR5< zzqy-PW8kNLlfI<8O-(cZPz%fNl93#^GR->@%4{jCBLu6 z9gD$!k-KTY7IEZoHGXy)2sEktk^4&YSbl8kDpw(_K z(D&UObo}!n_hD*J@ku?^D1}Y&OTG|be&|Y|RYds_H36Y++B~1jV=qO0b7{;8n;xc_ zvo+&}v4ASOX2=fX$JcgJL4^O>V?=!81u_cM!g*M(K=hb+{u8Zm*3Dp@qB-`ZP|8~+ z;_CpXfH}6R*1U(@RF)sSLMPbdA=5wP2mHNX30VHzVM#cS(;}91RkC8!Lp{&&Ra6|h zx7#9H&-zrd`@ZH7CFUF*PqbOlr+RD7VOr!yg+Bhb3XL$>xM#|-ci4-}`28;Zfb4mP z(WNP$`PkQ8BD0YA&YCPYn|s#14Ey~J<|!uk&t%=ot+D;TZ^11Xu;xaJU-`%@v<{8M$ONLw}3s0E^;GWGE3nj%bNXBjv z(t-K?aW!1u=@%5ki(gR8EqaEP$u+%h5wpf&%+@MvqTB|$+9FU+qb9Cvj?m%s<0idG4tVYzxyx;$oJ-qJkG8y9a?@hVq z8{ERzim;!(bb%I7YwFB<839{F4JNF1?zbI`m2L(#9w5y}#1s$JZsAIvlggtaxslQ zzA%HCJ7rDrkVcykR%9*#A(awPrquF~Twu0jxK?BE$#-xGA*{5zs5ebGCoAMRQ)X?J zc_3s?E)4Z~{*=gOkfCMa6ruVTd;XjIogwo7@sTC#S@N-Oe&FK=-3bTuS}fjVr|guLIfTE(Q1}$3DN-%AAYSVk;xt#my zxq46ZqQ`SWvv-=NG>|5nJm`Zyf}!kEi^d1OA3;IELK6_*58_)8Fj#4LN)(UyLZf1V zhPMCj_ZxH0HTUjLn-snO?_6c4YppTom}8DP=9puSIp&-QPd7?w;1w1@3VRETf@A(3 zn4v}yW*6FI@`$Mi=-1=2_SjiKaJEbJm`R1gVO~KeLVyuZe-MV6DStG{@`n;xKnQkQ z+=nbCntkAvu9W>I3k*k;#2Et@*!No7yx~N0PACoJXu9{uVVjYBVL@aMMi*bSGR<~cR?;M8;!2!@?L`B-0?A%O_N@vcLC(0NqPRm2u)nu7-ihS zrn$7M@yj{wV{N?}M;ID5*3jEhs>rZ%QukkyfGG*zz*?rjH>^G~NF*JF^Q9b9cg+i4 zNDN)C?{o;5M;Ie~j3qZIr?4U&entA0yNcLT?obQ-wC#3A>8UE<73s?HYC^8g=G_Dv zSfts{GqJ)IiEe?J4vNE1i$tFw(OyG%c*9EBI>}?6u}{Zql#&1L5Swc>i8MjX{W{z# zPD%7QiksXlcVpQwiBouwAi)=y&1{&HiW`QmEtAo2q1+_2)u_J`Na3rvjlDOdl5{Zl4qyK+Nm0+Ix&;4Y|%ERg+Hd zbJH<4mh7Zd!Ig6aLQhyLu?q!90><(V^4zQzHvBKgb9+h^_>G_PJQ2~#gUci8*~GQ@ zCYKrK7)(>X6Vi{AZzBoW|LqXl!>~XRe#KPz*d}@06NVJ@71IgF|JC98xrxdG9{dy+ zSa(bwZ=Hr-Ba_AvlhVv6|b#(o$BwY#TlRCzQRWzt_=Q~vIglo(! zlq6Lwh04P^WjoZr-68f5K1>i#r88qsWhT@YvSrg`fzC8_8GeT=^15l)r8HZr|HGlW zr6j6pwmg;Tkqw*F3wo5NPUG@GU-T|;1pJ^R0Z#eGn6nts!ODO>PNn{bn;hQzO5(*8 zPdYOyR{sT5d-sK6{LM2lrco?Dp^27CGVXH0(J%xh`bwd4 zEC8*YUK}XNi{ohIq-DKFu&AJs4FQ8|90BhsX%iL_;8iIp1`Lk! z$Fkcz{o-dWQZGh@4!1e7K3kHk8FpR2#G;;S-1}ASu0&iof20=Dev}AFBI&Vg_7p}X z_Q4zZ3M&ut@V*#VMI<9nLx(Ht&XToDG@i%sq5;CtJ>KbXjg`bT6{o^VkLZLy1tk{q z$_z>kU9QaE&8SRYvHCTW&65RuGIi_gapg>wET@D9iVqeHqejewOC6>iW|J+30sM3r zor+67#R-$p;speoVyZT{V(h+h6oH=>lQgV{tmLRTxY42d?B9W6zr5mBHQcV)Y)Xt| zP=|EP$h|c(OrbHQzXccCLCOUo{y1!StDA6DZ!t(tNXe6k-oRv(KU{%f1!&kyb3m>}U|5wz=T={C)1~D4Vru&wP(E*HL2JZg zSTfvaeLL0fv?yd~>Qv)Ns@tYcHPCNyrR1w5XGfH_tQmDcx8MzO;1tV4Byh$SAK=Kr z%3Q{KJ!Ajzzn)u|cTwT%{KD5W3t#nybWjw_#kw6Rm=o6Tu=SKj=&44CIQ(cNnVUfV zFFb*1pe(F*_Y7waM)}wA=!@D2yYlN~TMedSV6tqb9hadb>CTOCfwWB84mG;VRjS{3 zY@u{m!c9Cv8yl}oM{jtyOT5Dv9R-bv8)(w%S3~rGmFueaxNPs!Y&%F>9*I$(`|*eF zI6qr3;If%@|DtSM>rJwmF=jl;_E{}$xUjThDvb&reXlDHW;1+e1(gF!^uks=h4pYJ zz$CP_ta!i6|8>Jj)q4~Q4J3(q&s;*X>G;71T-NU^$%RE1Rn!uk6rFp8VAxa`_)Sp8VMlyZksl7&;MDLTV`)kPiO`A&GgGEk3KL z7+3Z1M;t0^j9OMWl~?sqm*xY;Ca`H@cXIz=lISBvi5#Mek2yr2^wR9J?b4UPt@9oQ zIru~ZztPK&c1sA!ecTq3l05?7Iikdkh>uucn39(QhR_qkir^C_W0;Z^fI%78Yve-K zgE2yqNKJhChzI;GhgMLHMKaU-t3GKl^IUPX7gFFPO&mSxHjj)a>3(d29nr4X!HxYF zNy3p&IfVC^gg~glBkp#rzClgJ{bCIK)SX|!oUrQJVvyTBK5_)e<;s4#IF|zjpP3Rg zSPTlQ4qLu9T<2vA7aq339>Mkg_XUTogbWmXPtwJRTLwmovL(!{{&q3QRbaFjf_kL(lWzcHM;X<`Xp)kVg_gn)HV0^bY9rn(c0DA)4KYqc(b=P|g;1#}Ht{O)NKhWwtt{n%wK*@3r(EA~5qi8Gu?g!M#TVwUzcrdQwP`o$u|>cNko%9wUCZ<`^`7kP>G`t{lp<(uE>ED`W^u!m}I1Nhxv2ZZceL!CrF#9b$&P-YqN+9`GKko-FGRZS5B@c5t3f-Na3k}Kc>EY)G?0I8bHCJGP&EDvM*-I8Ni~GG znCNG%jAS2k8NNx9$Mjx*kO@PFY^ubz7ldHp4g3cq@UKmQiDocU@W1!1Q4^v}nLn9zkE-~}d>M>jqS)D08qNFwZdh{41J8=RGC8})TA znO5!a#f$gs!KS*O$=1fErY5X3X zgVf_Jk%Dcw8GGTdco*+tEz<-sqRq5p^|MhL2^6A=KvyZiN1F(-18GL_6edI=WEby) z46CsokhZJ>6$T;FF>G-<36DT%u89Xe{|6o{ls8YxYwP5#jZvJ(b%#dctNv=Z7E)(Z z;4^w%H@c|aEQx)3b+V=3W@^~4ndlA)-^A1A5Gc#0cz`x_<8!yEFay2+sE;z_;G<|csy+C&QIlDJ@{G%^Ma>VI{w9}`}Wi&V6&cHnC>g~V*3?=O&MGNcZ z?|FfunLFUlq&00FdeEHNL0<8cN+WlWFNdPQ(JN|sgq4W+z+x1xKl&eT+eGlR=7HA| zr#IMpma_~neDc^gNGeK<1kbFTU3MKRJ1fs z8hIMF#&ALhh{o`S0;pdxF2UZE%XZ_sTXSU5K$*jEpcwmvfvLXx2JdK9g=d1Ut3)$v zg7Xe@jblv(=JuC82VK$8+Jj$P?l}6B_JHHah`n9S?K4m>Go9AVcypIlrMdl_ww})7 z(=3m6s>iw+@GY4~mU0?&wDz>|a#Wl`(b3b|Mb#1pL3?ZSnoM)M?!&@9uC|Vzb6;C) z6i<6|cTZc#>edb5DK>|-cD2#_ApTUUJP0o7?d;(evsppV+|${H{Iil>UEU)Ov{*+{ zW(PrnTW@?rHc4i4v3ev%oN$(hGNOkUo{4Kwtw#FRwtfz7!JIHxu7X@%E+&iuh6K8h zcHpV6G8>uYa;8)n*__Z`G?J$NQ~K(x+-!&Pc?n9OrETJ&Gx>4qm$7RGVv{#a$tY(f zW?C@n0rmj^rNmzhWw<1{t-pSbMPc;K5aZsdp5mK~l@H?&H;~G7DVz_$pO4!Q?HxD<<#!3ImgcDsMxVjC6 z#MmJXg4kYt<Op6|%VRp}%jJSy9T?7#~G@zXO3mPMJc?HSoz6N%Iz2^rtJACF`XmI_xK zK-9dvLpF5hCm0calW?p+lMFt9*rErd&0+v&DvqWIDpT3u zcZgtkBM)TY5Ud5q7=T$7^6naz24tM;?2s?w>bvjaUYKue!+xwE1$DBm{|a2^wY9OP zNw#p-*V8YZHPTzNQa0|6GPp~{7$W0mJDIr0gc5+GC@bkpoKq&RwI+^CPc1Mp3AtBU zL@9X?TPe|EcBVbzfbwfo3N%Jof5?Vg^}RaD{wHSNnFIxmc)+Itv>GW`l;k=LfQk43 ze^3A)c60kB*9?L=;eg8`JH6F(w1wJ4W&Xsuu3Q^tY0KToYo*gsjEQW#(zf>SYi*8{{57e}`CerjYHSjD z+K>mTKpivzx`)OW!RzCH<+UBMaks7K;9`d;Z${Q)L~)A=m;vS(>H_X0;8>vEso^CK z#|Ni{15Ov@H_|=0)aC!McfkTXdOUoEEv6yulHF{QfsruMDT=Xq(nD<6gHiMNe%#EC zK4%b`+QhP9uce@BnM3_sUi+c`HG?pTCNqIU9Fl+=9KpX9XZX(;TJS}W0>V=aFPa(T ztCzcSKEz8PhUl(?*sndr5de=XpIQ<(FXpQ@dgZ|jaP*Pe^D?-?p}D>Y%{vk_M?UJ2 zp|PyrYx_-Ay~FgiNNt&`AdsjKgveIVacVrt@NJWUIv0tVOPz_+e3i|6?eJgqKO80Z znmTa@ff;&$&=MmX9XS(8u18HSl7r^PkhCL8*J6O>iw=vZnqG*G{+pGuIt>2^+NnLn z&FOkxX*yz{Jr%am(NQ`aC_BhBv0Q|G*~D|DwiI0Odth%x>FDP04caxT-{5NX!`WB? z&`okE*$5ZTo3c@9^rkxDLLJPwi<%opCTtSbR zqZ~2RfNh8wH1aq2zg()vNRFO=i~g7fP3kX2Mh-~o%%AcVw^ycdFNe&jqo}9j#Wz7x zx41y!s(*C_-aSX>`L8~oAte+>Rv@a)1z zNgh^VWQsFO-6Z^co2>AV%&hkvZWc(UZO&m2_7dZ2v9RE67N4w`$C%f&Rgu*OL}J1n z;bGcS>EsTpk+*AJ7r*62CFK6iz;IL!>Ht}@-E;6A257Ga@nR<${@uWkk@JIkjq$kr zGw?DT5XrAW!QVJ}gVA!C%f;V7-g!3{@7Wz6KkT3GcLSTa)bQQ8LRE*P@W zU3478%!d7!TSJPzae}lfF^d{jT7)hD5}l8_ywo2qme@Wy+T=3d%0r*bIfm3>;oJ7Z z(U+wtor!_*ANM7ePIoZiz#2Dl3YnYVgBU8~gqM|4)>?@N^lNQ_fMGo7o#zsQJ#h91S9!j3@UG+YmVwVEL zwz0Sx+8wr^lD08ztKlfEV;E&XnXZp-#>y21mMsAS!2$ehf8he@askxC9j=7OS%ONl z4nmaYgfNhaA4}ru86=QrhUw9VFu=l(Gk~2_Tf!x`*V_6cm$EW-| zgyZ$Hr!aBknl+11QJeCsj{l1E4RXn(RnQgdUGckV{f&`ROo#zN&uXZ3<+2VKxGW*1 zKY*{qAw7FtQJ1-*?leWwy%XM4=JZJYW|!tq#?D2<#mBHlhqJDLN| z{gt-h+!lxQI%BsLA{|W<+-MUZ#nF%sZgog+qxD5G%oNmSbel`_fW-@=$JM5~&n5VS zMFR3w)X@5wDEtU#?#M_7yov`>k-@w-#@2M;oetmcXyX(}F09*-$7=wY_B=F{!-WNK ztI->-aHyW00u?X7EQu;pfU4?BhiYsNY>}}@V>B|b17U!mA^9*PwL(^9SeE3jvgzfZvBH3pyn}#)0kE`Qpy-30F8POz&-7@? z2VC-$45nbL)KYQ~h=7SL2Ovzbp>Q}Z;YGIY)gw8k0B_hUbFf@RBDo@iC#x|Ub~zHi zO4DwPBtlD&1@6IPA!-T|@UIG&^zOA`B)NB6gem#4R)VMXWD4=w@~hrslgpmD+MIS^ zfinxzWX_?jEz}ag8oswI85yZNIM9NwBKmTBo!|KVuE3wOK%JqYP(4ACg1v4(0#pt~ z8QEH6Nv*iX<$RAlP!SD|qQc8PN_6r{Qp_I^tBNKJ4&)ocIdH{1r*f&~?*) zw=qAKu133BIPghF!j}=z^82+4l1jnZHWrdFC zb_7yftb_`bbUJTA?sJZu{*xf9ItSGd3T&J-OB2}}T)O;8cCH3hjXx@6VI_^Z1&3?w zWMtq*n<*vlJ_(&4Rb>_sVv|*W-X@a|8r(=1RvxmYk0vQTYN#X@t!aF-HKay%J4~PQ zG1VTjW#w*iDX#NVBxP0H>{8rtw6cOdF5S&OrlhRlB*m=;(}PiZ3FKxm90fHI_Wz+9 zDCepVSy37pa=5=?aI?PrW4PVBKT5~@q9NCm4Y$}#Df!;i+@5gB@EeDWKc5E6|ZfghSM3U9{Xi(o!1cbG${f-kz9lgw#MHWhN@Rgu(bHBXVS3Tfm^ zF6-dQkjF66%FG9Rn_<9)P zdR~DpUxin52`H?l3@^iK1L#DDUlpap+Gla}MEC}TN=Xy1`IWUbk-Q4dBQ1NOoIe?* z(BiRTa5O9R&WAy~2WTP7CX~e00{yiC^-*Q#{4XbSC5@-su<7@DCm*fvj zGNvOBN`D=y95-Vy#SDMC>dKfdTSl+%jO3VDZNO~ahlq9IpeK>yK zEJuZRK$z4^xKg$@N^fJ7mYh2@ZS?z&4PUQNB?LQS*)i*m>Vitry$|OyAw&@T$Y3;h z9e24$IG3jx=ZmcasT-Xd8~&jy_74@1$sr|QFCXx9_6kT9$HcH+woclPRDGw*f8Qy{ zPfJ)?rM8CJt&Fg9RUsB@?a$CVo49sY@;<4LZsxJ~;EO2j_X2cG=6E7FKw=<9&$uVd1>vg$^&k~c>?HrM@lE~~ zI6h3xfo)j64d)*yFO$D)?zfGZ`?=vh459G4vcq&-TCd;M6r6Btjbd z3H#KHqs$K_h_NgQV3>H^mcyGQAWJ|KH`z|!_ZyeMoo5NtkVmL+t>2uNgWiX%7!NtS zvmc;E_yN_Ahvj*@K`e9DaM!pLR^vsILJ~?sKd1oX=$&q>O1=fSGA9uvo%;XSb9eLRz2a8;Fb!@9%vUP zMH%3#4i2cPzR6{~o!9P<4#gf*3UfJE$Z(S23yhf`qEW>9n`H$sJiiPhITmf;^M%Ny zqZlq=2UrOMl#_1*#TYtdvk`g$hjNV5nk1YL{Zk@MBTW!QouqBjvxKo4Qze#djl6gv zjaZT-*COGq?Z?a|TO0LE8gny?p>K)aMl${EvZc{1{UOT65pN8g@E8_mWK1hzPY z|17f(9LZX;&2hrj$r0rvgEeMq`DU4oc8KN6$xSyCPdT~SZk8T6HHVz55e%uY{ReV! zB*a2ts1-sXstV1NfFkX5p!pJc(e*U%(V;^n@_JQzZs0U7x!%-R`oGH>bzR*oqGk_S zMyGHJh6dJ!HcG((J1;ZXyuS?KkJM}s4TmFXJBopQ9&n%-IP3vGY=I~j z1Ff|~1ACuCK02&Jyq*B^11hH8I$j%w;`sm)+-O}9N zUUF%fWWrD^URZ8ky}GNln>J(_;-fp7yLj!g4d-6d++y=}Z|u&jZthy&#t?7b4AR}* ze4z(61<+nb#!O3lb9c7}cKZl3>w4RJ+FF{sdrS_JSCraR$E4VFMCn{e2UG%^Hq+bD zwgI1v6+G~$otBh`I5j!LnJ~Jw8m7~Fvi9&r&K@54g`zDlmlvpmfSrhcZnkQ&>X$Cj ze5e$?6^;4_Dh;RD=^7GNT+-$ps(^p)kJ8}S$;-00;YMcf6xT9$qXkx&Jk^?`Bx#Eo4h4!p^|Mp@lq3PUxzjYXX$N=u4 zNGjBu1$QtVG_ZMhz*AH3K;ltz<5@gwKgz)mRbwT?g&Nv~4_F}3_dFK!ple@!aOvWu zHE?VlmL4}y4L;#0n&j>jEJbCac#my}ia)vphYiWpXDAxN)I>;LLX{H%u%RC5K3q+=fw9?VLQ zijogbTlc5AlJIVt%{oy5D#+}?s193h1!Fc)z+onr?rnm_m_a0!8Qeynb`<@{P$cuv z_6)zKkLgMs@KLcSG>6v5891*{bwdQQC7VIA%+dxo=#M;HUms3%RP7??(@VK5*! zzT#IRcewE2%KoO6O)K$Naxk=V&T7bpr$Hs54_{*}BJcvg_+~q=9ZeE_)EHc-N1^C2 z3nqI2X*Z0UaOwMISJ+6oE9`Ry4`^mJ*t@m+U5_ptANmJM1SF>^j1cQUJJhG*#%%Az-y&QTQA5LI^I)c8!q`wNbpb}ge)hY7v z6Fa|ZG82_zcBmgE8;a(_t+qo_2t=D@oDH9IxZqjI*2v3YzfY5{aDg^yr+e?ksi!Gr#Xp$7&FrgUlNnS!jNV`K4%&s*Uw)Ri1cG9bL? z(hCq$iY6y)fMWEQQlF^%JBGxqg4jM zFUz3`7kGreFRnP}Bg_=hqzR*Q{S8}d#N&R37t6bX5TNZB?s zGNJas<&dXBr@?2?cORq}>Oqs(9W!QcYM_%#MPsFz)Q zWel^#jJ*Gh6)Q|;V43Zgo*Fq3tWGk(;0hODe_lq`JHvPMznjwM+OA0Qu+>1j%b74g zur`VT4N6g^60C%ag2JUklUZHUH8%aL>r4nn^2Q$c63#PopDJmajMCwJnRh_8H7;#x zYHC`!a%Gf}4K>zC8~kTS;n`lZt6C~j7R3^(^$59VCdP%oc{5H#M z2M3RU&EW#vAe81t%CrmTOykUe*P$&-i1@aC+1%J9;p!zg*JTSO-2_dHzR6U1j+|_c zlL8X_5Ox+W!b+qDAz+pguGlXd-R!mcf7{F{shnqSVXKWY2ph9XY0##bof7(YfEquX zx@+#OGdI=qmnQ@=A$%M-_ezzWS1HM%qbL$Q0DY4S#)IM zVH|I8D64^TOqai34^a=>_;)(b8VIK8OFV-|FonY>=g@kRo<y=+CKWSggkRju-1MWl=$1vc2? z$(EZc1dxWd6ArW0N(vf6wVhxoIp#z?N`AAuLMHuV3{{B zmB+}u1HPJ5FxlHWX;n&JlFY=VVO*g!ET%~Av(`!9gAU<~)%=CZ2^Su+sw8;GCP?Yg z*tJo{PFU+545wdnZjIr>jbqC&>~oIDgJZ_SNi)4R-_lX|j)PDk*fJ)9le>lx*t4ys zxiLyFwkCJ=qm~4@o8vbeRB0qNcUoe1oY`_*HSW?{YXD@Dy&Ufe&4em=Of#?(9udv))(}1Lx6ffqm7d;sPFKs~ z=?nCXk47lx46yl6MR~e4DPgdpVz7TFlHeP@V4Q+j;LNpmVUOh=Z0FyS zSYyw+LS8d3#moOOymB&z_&+Sc-ydBOrI%Q;1`fI$X~?(<`^#R1a?YiMg8*XCCya?P zXouwa|I)t@@@jvWHJH!Gwb2!_rDkcgnA5JM7{tw>P#r8F!#IXQfaBy~;si7l#bXq^ zcg})TwUz$^uex`lFk@{xlT{d3O0KiLeFpMv7H_7#GSt(yZU*a4ZJp<=DIS@Qvf4G1 z!;EKk?k!TEv!>(H=~vW+cCF&#RLNn@4qh14Hng_%_B5|*=ekrF@M3!QCz+FkU>$e>E77UVsa#3J9DiatJ}H?zoV&g;H3>sZriUe|PXt!w5Y+N{95 zWV+V0)YQ~0vnf!1x2}qnUMRD~uj=ObUmn;mz<{^TmWw-cECdMjjhsP(QoJJOYhygd}h&}H^Idu6YJ5d?ACyx}Ng zhtz5Zu--{1(N$D}=_p=;2erap@sh% z9zzQsMRS;8cf*qEW#{BBZrgAi{k*xmV+O}=qjOBZ5EGF(gEQQi1Nvq9h0H{I!cd>K z&UdPCZR>`TdJr6k)RzSTxQIt+z_xYlU(jKm{(v5G`oq2W`U7);4%-hqRMC_NL33AI z4?9yfiZs0UwRuFUmE%gUpntNJ0wF{O9rh`WT(5-G`$1LZ(LP zYH8{1YHmT##^nJh2sk=?jJYmD->zcc|6FO}@_*JQco=|mf4us2Y zJ`=pt`OLgs5%s~v{kGc=8gO}t`3n}~u;USXJ2E^|Ynp$vav8cM7f9u@emm_MzFZ40 z52+{YamBC=G5=A&8mz=IyL~^Fg_w27zY!gm&Kw+WUzl=q0MS3r9U5a%TAk8#v|=q2xPxxAV+TWl9&Ms_#`?KBI}P=-7Zh)lbhU96vcGa$(G_fw6V-b)3WP^w>Z*wjMU8MV#=_&kPCDEa9merKW)U{`e#au*MGYaMEstrl za)WnW@*5VD%tswdAZg(nF!$hTBjM)5Q98b&DFS~&N$oebDLK8z4*aR-S2~03ej|DPFC3rKo zY%$KJMpP}9bMjHx7xGlWNKS$SisEZxLu5k@n7*aPnhCjUUE#a9@@*zrUb*OYJEHU+ z&bY~4*}6MCPknqNpVs`TA@mjW#PEW{baA|e-mW(u%iDF7@fdc{%n zPt(WEp%*(GN{)5LtefIS2QAAC7{GzYS!(s=?r_#m4QJ7LGyipg9}`K6y}`UF9UZne z0#w{-^QPp%0A~Oh*G;_#;4J`DGw27D9ZsHyqja=AN@Hpdh+PA!{&9ly+AV6ox=gvKbk$Y^%ZClUU-c_$@>0EbCSM#b>Z9VHQIj4EuCAsQl z=PtUibNXVgqB{NbFz2S9+H|7-q84xW#(($$?PkW((>{YH&^*&`1WnIb(Q#$^zcZEU zXr00F^f-aLw`&F-u9nV@p4JUBC;>-9&!A1*Ure(^s~5v^kMoLjbpB)@w2+Mz3tLg7pkvA2uz$X2--V2Q7#LDuGVHw&dWS6D2`(9 zYC}?dHPdbhg63YG)5CSp-rm{L+|x-%9hOD@pYs81pevuYoJ1ZF)$3S)qs4IaPqty%c#^S~}OQQ%ouU=CBh2 z1Iehy0g6-*z_EtMxq)-`oR~O!P6`5b!=4-jyxlYzJTQBmbK&=o;y3bd)Kvg zQ53bF8q=2QZJ-vEaKpDTUY3o{NvvucMTdJ4QeT7Xay=&IAQWj4Q z0#)vyh7ZvC}msH|=J|hTJcV@bK+j?{nBIPbid|?n= z+`2K--LkfIb+4{gq_oSr$~L#Rc3C#BZSGjzy|(${*33HHc4LW404?opt=d&nK>+m& zDqjS5oOhjLCFrxLG)JbVy<1oNNxTJiw{~5sq?GtvkY{z9`qNHMI?((exU{*wm%N;x ze15SC4+z7`L3?W}MT4sbF3O;%#pf~AEi$|$2)s)qUV=*=ddz(jRe{ZvtQ4H=7Bbvo z#hFts;+z=-Xx8S{tGfy?tm`Itk6m2kC$^Peg&lTPOa9C(G|FHgw};hM+Z(~Jw6 z8bjm&mW}PIJ)9iy#KGMMzmVJZl3nQVFfI${?B-4Aad3s>O%Y>LzMf@L3UoQl9rPSz_A zOL7id)l!=~CACGEvmT81#Cw4ee5nC56>I$guJsy=AF!D$V?ht_|v` z+l7CjtcJ1e2Ynvo;I~6o?nXaFp-r|>_@C#hD>M6gS2qMJ7u-ZOlE5Bg%iC2)oNfG1 zF5gGWRP7-`1x3bKq=;qfZtGDRPtxKX4DhcO^6@?GNef*_PQ!T)=?(OJjj5i9A!Njg z_K`9bUDOKz<%n#-0zxda(IC_=fW>5Wfq?<2;Uxt^!0dcXdI@)a?r~ zej!JEA7tV|(}i_c`eLN#k#l5|B^B!;-k7zQ(gl}y9w^Y+VgzY}n1`aYtim3%SAnle z(bK@n#hD}PAM3GD(vAke(1l+UdVD$xUv1-&Eg|6oP@fQe*0@|H!7ulN448gW~+Bp;_u=s~f?C^IeXc>G2#RvEf-#c>tB9M1eNCOMxVc<@vWo za$XHd)�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%0A<>+ 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%0DwNgXt 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

                    v3{09%&H|~~LvawzMqJBHR_quX7j_GTY zNyv-wws^C`QWZsxrE8mvzlXWA40U=nrYNFUD{T}YJsl=tgs@25;1tg6d zD`7X=w1(SnA$xGJ3Av^0MZZxK^W_{tcsTBC3|#@qK&tg^A=XE+>(1n`xzg_98ho}Z zp7cvo}G<39b7AgIFn4LL{16KInni?mKbtpt{3seQpcA+yPY<4 ziUucs7`yLKH^eWk{rsSNETV%Hk{Y|b{Ub}hT)3?%^ji(lNrmiek$emJ8<&`cm8UfL`k<3@y7!9P4Y4L3d%Nn+WzS$kPV623((L9c>XFhVk^59t`COeS-m-lP$-N<1^cOwU$a zBT&o~Vz;Jd_DyVZg;LkRSr1#R7_O)fjG?%c1qseK;^9>n&14Hl4@*1>OqW5N$u2CeMOY?WhI3M z0;>bgs+s~f?=N~?kyKC(>0Y96P@t%?G5%5aT=2{E0FM~{F?rHhU>>)~jZs^i$# zW>7IM2=-j_gmr@@{gP0VN8n*;uD_Ry z$uAtr83GG?DfLKw{GRFdlWyR%^5G7Z(JF)TKf4e~3jR_7?OqD(n(wop689nsVhtxB zv`9Fii+AIQ3MG|}Kio;`+zl1hNbF_5z{eX*3MXRHiGigBb|(1sduj6v^1zFhUMaJ< z)vRE=M32VyDEh^Q<$~|;>(fWBg_ys`uJ%}mMM}DB@$pafl!s-uDdMa39ZN&rY23a$ z&Rk^svq^&K9-G(;T`A#WzmT;?kq`sg1R-hw(=7B*zY(5Jn(ikC!X={5#9V&&(ly4I z$JpS-NHZ6eCNqsDL4l5=gD3a*C(n1@DE_vw<;B~- zLEVECuJ-+3p6Y9CR+Gt%+*E`|thacvz7(%pSG1ogEGe|uOgk9cI3L$tsxF;syz(}- zU4l$%QkDNjKff#KpzX}3$?3@ZDzDepdg-lt|F`-u?|%v2hBM|#@1OkYeaVzRVW}NL z^M&P)GOt)NF`h2iO!H5X%FUR&1wB`SU-ne1ThP`1Ox07*WA>W5fRnNV_KRCEOVj;* zJQL8P64HL->Fj1!;K{5V%wu$2mFuoZ!P`VbhOZAd^y2wqu9ie7tE9?~Wxf^bJbGD` zy7QpPU?;~FuzEl+yPVNu03A-e=rF`D@{J#dpwaK8U|2bgXR9&h{`i zi_;oEcz7P=_rvuXf4?j7PW}R4#PT!E;sljD$S|$L_Mhh=OuYi^qH=(z@ThZPjM3`c zm#G&5ae|eXFJ+ik6K3Oy(TBdj@ym>nU&mik@n<~|eD)03UcZ%m9gu@(E#PK-#jK!a zIujdyf)bG^P|~`9XSb?OpZ^Hta?@&ikE2{twN5tN-Knn>QJU4SKlYYMbA>=|JaiB+ zJl6rL!v#T&(g@baI|ZHf(ENKYX2G;>mFTc_8Ekh2@rz9^R;B(#VZ;I^I8pzWr?}m} zG9RMF>3oa|uaA-{Qp(GW(BE#C*i8A|gO@@Ik!-8kg~c6T5kwTv0V>T}OMQn3NsigZ zgW1wZ&_n3Ivu<%6o+jJ3&;%qqJnWE=!&CKZt?l1Dc@E&5t+y1`Yj507%njSD)T;|o zOC2;;6sZ(|=qf&*^gX=_CZuW;=e&7jA;T9Ey+2Bs*L-^AlK|deBmCmD(M86|N)1w8 zdrv8l3R}9@rL4a<<0s&zd;DD%V!VIuy_++WPHaYJ&Jq6U$|s@xq_F*Rf8n(w!M01W zpJ5#q5&9=aPDHLJ^ZI*ED`&sp{kK;}B^CG@Xr^rD3smaqTa%R!*fCyE^;si3|7T1a>rY%P?z{_-TP>E zE%62TqqKQ?Ry>N&D+$k_$kF@KESs^2lkR~~q-Mu`LBTaH{O-Bgrvz@KYB@mJNz}+q zF5x@zg`ew}FP(z}Ukrg?D+TlOO(R0Th^Er^{B8xwMAtdx1eud@QepcN2owEUSo~3O)c8 zztYVPMd>x>*bV&pgVoYq3!K?yW2ECYn_Vnu+lLzFBndk?s{M1(Y6Y0JCkOX^dnR}CvWJm)veiA@#`Fc5lw z&*yLUU00p?nHys3+0@Vh@2JzQF25Gu=YyEPk0np-wvj8a1VnLm9Y7!4CcdgD26yqK z7R93hBJc`S=;*!(yjUrTYc&A)gD59I9hm8X6hWz~{C?97;#Cb&(N4JX;2ulShlZ<> z-RVCiXL_FHDsDiv0+Y`EE{Uj8E-iE*VlSf3CQt8Lo2=wiq@zdvx@?e>_e8IZc8^d8 ziwkoCkc8kL zUrqAso1*?_$fK7_3TL1hz%$;)ke*l*2t#LEtmS$6(GB;OZ?pJq>H@~Un=;n#`$5heANw^0Xj1Ro?pJ6BKYDC`;I#&gsMCkfU8lyy@Vb3YgW5BTeP}Pb48J2Q&`rCXh z--3vCxhgAA6};HArx+|F!!>Hu#O>i|v0fn5c&f9?+`O_Rvm(6X)&c56eA+a$0=vA# zW~1KOt^B&?s}tG;og!RKs`R?3A)()S%E)VLPf!$(n(rOm^sWLbh#E@r2InSq*45p^*Ot5pWvnClVmO-i@(-oI`V5<@y5KB!1qcw|l-KsLy12gC#D#HC4U+TX!*?Gro1<5OHkY7@h4P62^@$S#y)J=+05pQCZn0(ngs z;o`yA{n=NT*p>hn!S|x?1Nu#|!mPu9A8(}}0M!y#iipu8J8>|5KhhyVz)U0LbxZ8{ z({FY?);#f9p>>O9gW6Vw~y5Eq)7-~W)Ob5 zLNxb^AX!}eq#9W!5?q>D5A zmlOmsXQWyj5$C?@QC5c-KYQI~ZSz1b>8_rReNOY+y~mseE;S?7avk9x4CD62$SL*N zLj)h-Ig5CdMiZ24{P$v8oEe2w+EF?Lur9LWiL2~uvWLCEnqz3Ni-!t6&{Pz=xp2Sh zF-8AD_0{-y@a<^3?*V1|K9Wo%(^uIte$JSFQ?)EY`q~5!#PWsXzEop(b2YG%m4bG_qIUB^&iRi z1iWAxjQK43L7x{(GJ@9_Q|{I^N4)R98m9fTjcIZ_$otPWCo!X|K+B1O{W)%e!t(q37_7!}u#((&Zh+z*^=<(pD0LCdB+)vWIM#qC)H09LOC$ z8K9%r$6y%`{MI}G-xGn3HBaIP{AAlY$66ZJ)xN%TLVPidKK3~k#80m!ya&H!D{X5= zqkZ|Z05qEt(ahA4MQ{X=fO+qS4GeTaNOHavNy{N}k?ti>3rNK5jD;K~wpI5$uotDv zDT2@H--Zpr44Ni2UV*-2;)y-25kM)uR}h`Oi9iNyl9yZ81KSYBd+!^tJ33UC#K1NE zIW}5%hLx^!V%@RJIE)12gA%!)kUm8FNbo%z_`0YINj;m97#|(OxU953$THA1tsguH zUW=Z#JYuU@?{%Kqy>_8Ge9+?KcxJtdhWrGZ%m>DA7~*uRK$r6FBw`GVcsJl9HA(&f zAadGgQzO0SN6MXZGT`wE{u0pHtZ_CbVF)n-W6~nx=9AE!py`<(LZyNJKDPmnkQQi5 z{GnNCX@H?-*l24KUE@l^8s1zwT5?nensk`tLH8Wm<@b1zhNmA!BXK5mF51<~#(MIc z7&2Jjdx#IhYJJx~S#Q(7b0@XkOJ5c!OOEzYXG{OCS0Hblt%Iby92fMU;b(qp&@Q54 zGLM@2&0|DwavXu+)6X+H2nLOg`pBssoWl5&mV8`^*)%(MDgG2mh;2_^KEi*1c4N0O zPnx<+T6Omw!=}&Q;|bkJT>L&+mt`>K_}Z>jWk@nj_W;eSVD4F-*Dg$H6$?p1?bNaQ z`)Ye@!Bbra;|&o}bI`UQ#500oov8lx0D@@T6C(3!+WJM#-hdr4ik40#Yzx}yK+t_B>Z^%w;T3sqrD!I z3;Yl_SZJ`HLA+h_j-J7P6rOc|Qph z?~E-j9_l$FAd0BHOu&wE^Ia})#g!4uR4=-7b|DnqTi+(g^9*11h0RJuiDm=((H2?X zC?cEP4tRQxah|9Sh&r(U5Pe*Qv>9Oc!YQ3q&eg$gT&|Y(@n8`67EPmYI2!CZ0cp9Y zImMeM0jhx$JUA?cHqVW-70T5luP;-*bmcz-B-0!ZEHa-1LQiIsfN_zxzJwjILv9U5 zo=TWkvI4BrhmdGHCfJdUJkL15uQt@1C+iil#bYis?vqJu|B~Y}{^@AUr~s4*Zy~6z zRpUSV&Rl6U?M<0&MEx_s8JA!Vfv>GNr32)xy~27Ur`UqYIao0Uo`tFYv-_PXB-}`L zQ5-+D=4f5%!c7UVh?6GVU#ZW*TsjT_houGlNiJKDz2AK}Z7A#uU@LR`iT{Yt+FO4J zMFonxVNV0-LH?TD6>`cUBYIVhIbu!W^+5LRG5qy`;*#)f`JxW3%1HF8U*BnA3Zkmr zcY|>i8;9BN3)s!xoEu z+IKB-e_U$L{f8?qwrDl*+JW`d!;Q=(+9LgN;KsCDP)FexR~J5cO=2CG+pju7-^D(= zRQjDtC-uBW(!nmcOidz(P~kN4pp=EZLwj=%%dK3>{a5+qcr3^Bnx!ncYCvW+^_l+ zcpos*`Z(usk~zsVVpvSr0NPl|2h2t#Tyn@Mnfoj{^Sq!*5V+64)9_p?m8X;2X;gi0 z0TJsj=x%4eM9Xnoy-u&c)+2X*R8a z2wNq2;8Z2`hwhVQx$4(SOJM`)a&Vh|N(@_^zSr#Fmn>Ahy0*#s5OBJTbEUPBk!PM3 zeLJT$2{7*8EG?|01Y7YgZkk=??dGg|9m2o|tnyXFXEvx}ZgnF!`xHSuN`-DN5Sq~M z5+?1RK!U&tcR7&={Z*<{suu&7Ul8aq!y*tY`h~jyWZzkO`1TRiB4QlURjaH zov!cwOv$)yHusjrawxisJn(o%q6OAEGWx2oo_z;|f`syPi(#Pf0J)|6{fd~}umL98-*Z)vaBWAsb#xfS!4;>ES?gsiU3 zp1?L_We5fwayEI=^RnM}|L_Cs^Xgf*{v4ieamya@cz(V+-))RMoi38lgXF7S<=oBH zpS+B|hu`jPJx82AUPT9t-C>gy_;okmOZ$uX&#PBk)Ht7!o~7Aj@8Uqvi6w~_?}lM% zY&)qVi`}DnzPi|FV#c?c%k;{B`~BapS;NHoww7sFyld z$(#CSTFdLeUocOlodv_o3ee^Vh7r~s>Al3!s4g%Q-D?fi19Ork6TTidn)O`tyAWXf zkatVeog7jMuXEWxwSitfp<*WPtXd5eI|5=Vm+T_+50NJjz7Jgb8llH~omljt&s;*6 z{o?Jmi3;M%>h?1O$V2^O6MPqWe3@J8lab@IOyuSj$RR2+Zd8JBAxW6IlSjYx`&?JESUzcF-kyxzLwx>aY6g^7lC7jNeT9{OhDtoUZfvQ-rHx-cAj+~ z!eKw=xcV4uhIvNThcBfEUlGT0vIym-+LcQvrnGOS@>0?F)gkw1!qG{mC0O$m*U0-t zoeC-+GA5)=qdp4dxV`8)x7=$x1N;?@q;(R@lR7-%phv--E3gxn8i!&7ekN@;W*=F# z!d`M}-najGpnurHG5U2dI|VbmHYwP;4%1xvf<+Wq=oZb3F|zHx$6p<=h>43ow+6H9 zrQJGZA`3q>wTJqYi}y+VnqKnNy>EB$@=yp@P%c}&gcMA-%>{-#uht%tlBJ#37#0oA zxDwO)F!60wI$<{Y-~oM=5W;b|U3J#v*_DmnH{3s;e>(igP^+yJ5_TJWrp8nT_9 zB3-mL4{s~R3GI9&?AyIj$zPDHdxKb+D6;FE9tqcJJNzbmHdKBUzHb^YQ7tlG_=V(l zd1asGR*4(H3;q#2+xjTW1k8UM?m<5oNlHNS^cfYL{GHb)HYw2i)rEt+U7Qm`-1$3W zN?wNfP$~0&y+2xstNbAA1u;JU2l0|>JGb3E^CjZXE4`9f-##bgu}Uzkf6M7`PlTAy zvZYzgN<~(dh99xZC|R98*%v>tJZiR(`fe~%n~{>|XTN+Vco|fn-V~I@G7|B@J!Ta) zQk$7l=pVz05Jq$c*4ta!rT*}*M^u>0mQ4R47ch2b+&^}+QdwR?z1gDs=B zep~_yON}i%O8?*hOvo^7OPOSS!6-+eabTfiD42N?E={+L_U73%m34GyNFv{usPN+n31b4f6eE>e^4;$dXeGm{ROIxKmSR zR@`(b@KS8`=5tMa#(`#kvU0g~t<{5*&@faFM2jp8EW+1D7@i*29NUWhs>$%EiR>rQk{Ip<=JKFTpfn1+a|zHtaIzS(~=e?FDE6o_!slCL3&Depj4O-SqeQR)~ zci3;5^iWDJI(~P;G!Q-N5deSnc`k!e2fU-4>O=OSfxQTIz~kF~XLqOAqInL;LuiGk zAFDKo*{oIUHgYDCrmWr{w%*r9yPl94`<8@{0L^#Cgg&4rSK~Ri@}K%7hBt%(n89B< zJ$DV$TB1zF5s6}$y8%<|55jT$tTZ8o170?J9mC`*N-o&-X^}$sFCPO{xQ6l~L7umc zBQ|YdqbX`~@(4Qc)T7)>_36Y)y~}j;_7PCdrSLos`rUu`%_a6#ziHv+f}8QV=*U1t zUfUO>=mvZd)^BZAab5Hi9C!Cpo$z)}Y)$I=w2{?^QDIe^1&AZ3FoM>vrg3ZVeq{yx z6>@U25hsv*YCq|7C`w#wGU%3N&2^Wn;3gj4^|+;rjzJZWJ)<`F3@&XSn)-cophU-`(A`B(S&A7GHnt_Rcs^P$Gb9y?k|GZ_zn|L#9Fx5s5Y#?0L$$ z>$l&OJ%>ABopLNZQQ%A>-=Y7O1eE#j4q53ddY4@OyR}w20o`blBc;W@+Fi_QW*v>P zsa{Lq$v`Cd3u4e_3Ze9$%C2*$f`tRJvUq{n7qm$7zXV}k-+OaefFnQ5W}5$ZH5L)% ztHFJkc8fa!%Og_O0du&$UFT#Ai_7_l(h|gOu0>?zW^=j6PbS^Jwpp2;6jMdES02w_ zkIDdyqoTYdh8l^)9@g*oo~mKAY{`9g#(Vh}Te1}uJmD!#?f^aZ)s5KFaedMZgl*^b zblh7IJtyp&bik!C$xP2Z#8XYgE|tnfvTtyy>oAEp?&r5PKah*q#cT@@VtnL=R7%>} z0J?t0$E+1NtJUrE0$`-*>0l9`%XZU4(q9R(Z5|IAKkut~w6nN>{2)$(oN7y?+>pKX zjLPxY*M(c;@GCz2bTSNMv8p= z_K0Vn_8Qd-+B5rnlFxqL3KL9J8Eccl+YVIjREDBU&R^kl3F2v{BcQk7^5cBcl6d5Y z3GeTqbDrF`kAV&q`a7=(?Uwu9zcM9JA9)JeO3q6z17b^epm@$BKuNFi@~tmMs4Ri){8 zWh<-^mF3vMWDV>>vCOnm0WhzX@2YtvMBV>Z?(p;A9xC9T;zdZB-N^6L@@DhM1A!wH z`Ha~U@SA-wV9}H7*V*!Go>AKMT?&M~kQq4{V}vg(K%+gL%%5*DTK7wLWncB{(yv*< z`aR5%X1JJLwK~oqr9zb?01*u;LFL}NBM&M|mO5{7HO?*7S*(i*$G+OHtZut@({AYs z>lMZB=}VSlv##(f{7O$Fjs}!;;SWiZAVuV}y~b)Z`ZTx!BMoN#Kzd6f@*ze4Nr|D@1QgeL0Qi9JEX^?LFo)Er9io&A54y=cuc)#_BJH*ZAp> z3}yX7PbulwN}1Dj`CnTVULwov6kyrrRw7y2?UHtHsnv=Xk59(3@ zpA_g6U0;uJLOkmo8D{8!bSbUxj`jnMC60mK0J1@kdoAb@Z1=(Pdue#KBGc@Py-Tfk zDHr6~_Gl)A6J~5BL_iG_GYZ(+(;hc6B#Y` zBliS~pgZU8QT~9aT_rSY|JZ5@e?%7Qdy!5=I zfr2%{cJRcanVL|pWG)X7yGU67TMylYMU;Mq_NW9R72ocp;mPXM8jhqVOUL!D^ z@)afU!_3+1>(A;N$-wp8e3=@)pV0X{C(rl(jG32{V01Ermj>JJ`Qt~0!f_%TQqTt+ zwWylM1hGs7fSopjkV9MCNmW+M2~4)4gj7%ej_jv#`)6){sd|^)(vg=XX{%t5V3kWO z`u}})Y=6%3p$RTw8)zZg7p__8*o~ThMXvRI)4;(?A2BoM$-%&N&}WPZnaDO3wS>>ap`%eqkNL$1~)o{iHr}MDWMW>s+6+(TJoWdpuKo zK??lO3GI>(Ra;oCHfLvgm5b%`Zm*mL9mIdzVB(BJ-etH2z>SD{{|r+3xBVWubP0Qg z$u<54>@DUNzl!)P8|}V57r5M1;!n0!^2y&i%D$Q!TRKrmcr%r!hfoo!C_^>zx%}tn zY6_oCR9Zxe?nv85aLALLWixtvPJ$3s;-7rH^St{Or)eRoo4meZQ8!ysO)bY%7x~34 zF7mtiOr}$yCC0SuF8{w<(;npGC8IGccD@*e!4z`K9}}_*|MRf_t(f7Wkjc~qWqxb_ z2a39iWnW%wjuxXb0vCj}KWa13)W+m~iQ1=^w6C_lRWmgEdFRtjrN4x*d{14v`v~1W z7rvmGK%tS<5)Or1w;vSMv4oa_n;Hf0`}um{`NY2_-CQpTkyhY)2F|$g_hc?~{!h^Q zx?%3OnhI+i?9ZXiRF0u8%+!EBZn0}7Arj#es1(RG2iyp=v#DR z%}T?SH&PA>ukV%EisY^@iKa6rC8|v9#rr?tcoO}JSGgvNHNb&{^1DH@atF09=6x+? zNv6I7CsC23Uj9>?_C*ra%jt1l+b+>aOfmuu-l-s7*pxTJuij#cb#qL5x%04|CFeov z)z?P=&0Rds`HVk@^HOq9cc0o}v&|G6S~5EBrbYaWaqN_-@{K+0&EB~$ZN+m)0`feo zh}ihjaU3hnx8LX&$y>s*5lxPQHt#%rWhOGjv09T>y&&he$euOlu-w$7i09JTctxE1 z;|fC#VM!upl<#&&8!-Lv<1 z*e44~XeXGUo@6WXht4T2t9-XUPz&Gh^J1vt2W_JE*r}#J85OHm9SnTw<9je4-dpM+ z)s;yuh)URhY6QvRIXV@4y#G|`sJ$BN7%@6P zx=>Dq$#B18e=r%H%tAToZ(w@u3!TMIz9fIc^X$%x4?jE|uP4}+3{7W^M~f!UW-(-# z+o@gH5I;5OFXTW*uIz0cR7s!$XtDk9o>08W&dqxWq5jvbqZ>#>!n6A5)nt@aTgu_8 z2NfKZ|M@Nbo1{KGUWoB_wrhTHTHA_qa@y|nOhCXhXoT50EVoXk-mFh_y<$Ytym!hItHzs?#;_G+|-bW`tyn6FV z<&D#DJ%DmM8YfQHW{hC2Z40+*h+Kec2Jr>)i6EY)8|u|mIzgxsSS?CtkXeE8XM!ku z->VPOYVHLS@uSA8xAijP>Y#7K#gtxxvtS#t&*wy;HU~<84UWZXDWypS&ib$iCyGLy znxjMoiOZXjK%+~;z!08`D`c2)&QEM1I`5no0QV4En)7jn>Od3D1aqD!Txof8v6e0Lp334{`QOakd7Z@$0xpL?FW+nc@Fo86oF%*@Wm z;NRh4U^6Y&nQE6>J+d;f`~~;QJyrIx12Obi_-T0hYS|yKgdY8A&ane{0?c%$F(5>x zh1k&wk%61$9L04(&n@*PVVid)G-A*Pgj(jgNwNK2GtJe=2A-eX(NvM){5jHdCXww1 z$MX}w@W@pezsz}H3`wv?a~;8-KOVro%-Ypi0r%Hy2$%uCvE9C)kwB>RErbR1A^Hp= zb+sD?M_lReS~a%G*nqcwULIrY*PMC5KDYX$ocpo&h+id}Sp7B=>;(IB>pLSxzA@VH z7ya48NDG=vk2K-!{H5V|o@WEU@UG|~q6-5Tp2nJMR_Rp81q%X3#w13R<|PK8zuN~n zwwN+*jAVo%=MYo&f3$w?6MMg<06h(q4ZqTQ&vhu>ug$Y)yqH-fj}8y=47wg zY0Z`>d!v$DkjwXCIB|Ljvt*GY98;nY$-c-GnspyX6q??hQ}(lONhJA2;?t=&FK$1jkECT! zMLxM=>G*>Xs_Z0C8{~c|YKoEA#a3l6@#t#4m`{Jgj$0or9Dz8g)9uJJH`oXCCF^q;hp%6?jrsMk^UU&|_gnbckxz z>^Vq}jXDmNRLWz|k9cbA_FeESxG#-Zf_*2S=Dvu<3_JEicED4sA%>3VOWu!T^hj?t zd^Q`#DHnf($}Za<`6k?LMgII(JuB)OJa&c))aXqNN}@xt%xeFfXwODFb-WrlHcPFB zooekk2Y#%i#OEReQ2d}Xk_+r}pAq9-)u=22TEhL0jYK~n4LSk#4ZAIBwM+CIzl59Q zo3L^xK9SB6bw%A7O;o#3LCHvvOb8Ir)EO2q?{4Kb+&`)EI9_^XQJhS5G zUcqh9D(;+i73OY#qRnLFw&lJzD0gR{{h(EKH;UUDKV=4E>GA*iW7%R=?F-XJ-&n9x z^e9w%!vp^)^){42{JwaL=6=+`fQLN}J-#2^Q@K_6Xh=m`{$OcuM%fJVCl6-wg!a|vLe=nHW(1)=Vu8&R&ukA$7KIa{zol@Ajr<;=@F;z z_jZo69(06CAg&F7sb1o-aOc8@;sPjoJ^Lk58ov=jf_p~q3l&9Tn_<(F0{JZ%SG%N5 zo!RdzRz3}&lcwq|uZ8*I+w%OY)(;{mQoW?Hq#EycXRiEsyfm4?8=*f^nB#U67-nDC zt*eDDt9^GN*6-M!IqYi0dyJvx&d#cR$!E$mEnM@HPhn0dJ2*ktK3kt2s=^(Sfic$f z#C~pYJsgg)4o;2%Ca>6tU}zz;biGh39ya`8&@1^Ae@E|j-6JO&K)9N;X>#MCSL zPcBuOqA`ak3)%r$;l7% zMoFvaPdOKL_I45^^>>uD4OuE)e0>`S(EhKLv(00{rdujH_cYyY^LHsJAUNLLw0YNP zR#hAn*O6v1rc}G^P6x=zuo8zZMwtDjAy)i+o=*v*U^pH_y;PhMImYE%Gvhrv(FYH>(>yGFA7# z?l&I*igG^E#mYTI#@z$2t>$cK^g0@|s1l@c@^elt?Mu*PiQFwYoXLJ>OFUC`$M%KH z=%6y`;H^UH8v2)(Uet(s`*__Gxg7*5&ai2*3d)BI&G zuUn5SLb!(-^L+!W?Ti)#H_9U(MOui}1=`z#l6(YE*W>J0Dx-S7;y*Ts?Y!;^eGAdh zP4*#36RnB)9{BcXVruAwe^qR~7VXft_Law&-J}$sTJdS6Z}?unzDBtL5f_2=jVS)o zU_`usHdf>`VHC>b;rRC%w{znH^Ekll)3ab&qof*aL-xaotXi+Bo6>0`hm$4_NuE9Q z<~EO;gXSWdSaad^e14eF77~`k9|C@V_J(Ykz+U?lkVhbqb_Xz(uqP)lmmEnurj>;m z4DV(oh8ck@cSQxNNUW`B@b(-`pz683x?g;zX)G#$mzEN6r8_FfSQw&Kv0?%K7=Qih zlZ9V2Y=llepR1@^@K5(^mpMD8*f;{i^Cu^5M#uc0PU)!vB-_ZMeIiI4?7E^-A7>3w znm)#P#BhY+za*2gzG7qc!_zvH*cAYdB&$gu^ytUdj z_e_2(*I&p%NHy~k1;et4zc zhZFb9%v#Q_1GCW;=|0OsxoUGY7-STAaKV5RKmPAuN0cCQiV(wk3OnU@zVZWx;p4d~ zDiJ`vw3u`>g5yD6$<}dVmXKA#*|xOz5Kquf{-ys>OeKF!!?1r2uegIAaDvladeq0! z>hu2#e(wiF__`BkK?a=bDn066`K%~e#1Qi+bZWi5po0ZxoWTmwY}Fx$0|Rw^u+$Pd z1=L~*|9qe*mfu@XC?Yh=By~?xag+V(uotiw@J&uZ-56M0mnuR*#?N;QewDO5M;i%* zi!byMh2Uc%`?GIAKSxGcEqgv}tS#IVOy$m76F_Kzag?tlnSE3)<}qs#X$}8{X*ifc zw`8FGXev1H_AJ)_XyTlQ`N7EWSir`o=7|i9HG9`U;sP5hKukioalXPVit?wHnXrWp zWOc$tXECAOL?Ko;8FMgY%j#Yo$puwnX2=#TYV;==02Hzj-})NaJnwLn`EN2BJke(< zF@dcMu0f<=nzN}??OYVQa<`_o`9P?Rz14~O%IAMePM4F@tZ~n30n^d-dlZ5*ufj;` zPOH}i5TAlqZ^NxC39p&gGfYiH7g47^e8%rd^gozLEo6@po6$zFoKi}F&vPHpR!NBD z&Z(T?GkMv7UuoROILr#AA!|?^)9^+b_{l+3X*47ajno+-ZV)CMciLXLa(j8Dc$g9% z?w|sw2VjeZe-Fy{8`0sR0c>3GDqczV>6vdqD6)squ2SmL(s$qiClfbW+x@%)0Y5;TO&Un% zY=ie=D{@6zma*A94Vzx!RjjvbD|Kp9$d_2o22NZmaLp{Rt$(0s7z}^4nJJUMbnN3l zlb&J*#o;n73-jDDBmFxeqzY#HuS7$mh=-3( zzO_AiZ;DGMs9Ah}b|!H1p6a{nTensrFD_ouO&u-I)Iq+65a%#5K zhQ(Sg>@#Zj;aJa~c?cI^#d()L0gs%9yZx9P2358+kuB#`{9&**EXViemXVZHf2RHF z&JixDjrb2;a@!GgeiHWH+dVh)?($vYlUR^BA}v$lS2t&>85Hh`u3?|Y0$wzJ>Um`5 z(AZQTvP3lsY-4c<5h`Fd@edxBGnQoQ_x`12Uj!_i{3J*B+H)J)dx*X!2Ef$sGBnDg zF4;ll&rg#3byyql(cx6<1&v$iK+cESPz2dbNz1hcni+peJbPsH8ZOe|mzKyfg6^7O zG1+zzxKqjx$alF__Fed)utWL7IrX1V{^Ij;a>sdMWB9n%JfW|mp|Uccx8X|Jy_^Q4nKCx;^G6zrG*Cv zYHYR5N`0RNwN;?t^SR)B0~jNlrxi6dhrs7C4<>7O5g7``{$w|O{|<2QC_{iKvl>Kv zjZTXF@?#y@HxPs0z1Ck%s8ImNm%l0>Ixs7$2oxR-VaXF^NQ8uDVpLL?Y(wqF zimrxsp5keydMb!zHp2qG>W*<;OT}CX&srf1&t=|4F6TjhLf+fdAo7S-V+~LhG?ibhY z*o?)Fa!UfNuW_1}7-xqp5Giz6q98#=ux+a>E@xc>ocR?roBS+v9I;7tjd)J;QWR`J zzJK@eiBy_ODEGid2CkJ;D{6STT+`zSSgN%fe?@mXslKF@f9IIb!>K!r`A#WWV$cWF zC%2GiLe>LWr@!j%P(A={z;-MH&)f3~uMS^5I5&(eQ@73^S$Yh}fd2wwdi({Uo;W=; z@LCociVuN>ITkRve;@HZ|E-70)rks&u(S(aKzxfW1vb)6`;aT>moHKCd^wuBc~P2e zb{E2vx$NtFgNO4cb)0fj+-%r-il~4@^QW!h{!*X_y?;Cfw)v?Gl6o5Vcz{oQyl%bw zYWjHVlH8H!Tf03?_0pQaxFWOLz%g?6I7x6&S_fwyX%8hKYZZ8)yF%i0kfI>OG*l2brR(G=z8!uL$M=ymG9MlhTJC&9_bNpoeP zDnXKP$2>G(m?)Z5-vpg6x;@%{h0u*9tt1_YjI7c^-JKoWeP`OD;P>cfc4ZLhkQ;z! z?6ZIn^lg|-RTMwKQ(y1YAjLB9x_sdeYTY-(BojPK#U_F!YquIzU_aVf96eCorgHcs@P@UyO{ zSh(Q}ue-(y4<0r7rJvQWe*3=mY`&Zx&o|);6|M`TvIV12=Uq}ZWj61PwrBluvmyUD z;H1$|{UAMGTjoZhAz3z-)QcZqkNmD)x^N`8uAHdv?X!s)DMnk zu9HC3K(z-zyN3QO{RC7KoS55!Xe;>hU252Ll8atJ&?DCAVrNDEr6HMz#30Fsyse1BP(OdAtz@dSr^`FbaH}I0 zUpGPUb2KbWaXHNrK;T0T9mYhc5sYBd!%;7TYLT0qh|EU_SC=??nmKRb_5~#>^}AA3FQ{|8r4^=|Mbl*cMX+Cz)DvzvKP5mc(qOjgXDIf1q)nk#Nm*= zH&4BZxt;^s*^^a&0r?IhA3iTGvNH>pAmqe1I2N`dOUi!(c6?-X$+L+DMS&gS`E+Qg z0KqS3JvjP{*YXozpLQ^?{y&H~;%VD>)02hv-PcdtXMC)c@o&2{sR;wT5l9gW#~f54 z+EvSk`m-_1!!;Lw8UC>GRuPpvxbdMM6=wtLEQW`{rd<6u{r8ef(VJ&%kbkj5D3q@ifb2SQxb?fM&iHExf zb!s&J9mQW1_4}g}_vH*<4LXaQyK>8WS-4~-O!tgFumnEu&)Q#dpe6L&`NBE@O6I=zg6*)uj10a~s!o5rK>UY2zPhkH*NH%YyE z{Fo_zp()YG{b2-$b&f%c{#z6UFrNVf{Et@rkdT$%!Ect;svk_wT zjVBp4yUJ-l{DLxa_n6yzZeqXz+>~q)yY8TFp4Nw~5BI+*srS~*_+85Ab?MK;GM{_% z(lYjn|2{6RIdw!DaQL#ESmYu^A*iW2+n?)WN~r?o%%bKIgamdB@G_zu54N)lLz1kVV9i0}zY^Mo#A z8@d}X9FbSEaj-Q#LaV5yI6`-7Cmk8cz)nf@C_*j47ph|lM$vuNRgM~d#1yYGC~ z^?Vx#**k!Oh%?w1RS2OO7hI*H(kM)wz-sOqh-*^v|2iF@n0h;Ed_I_zxdu&N$VR^q z6J>!$F5FG$;aqtYcn214*OG=py^KTh|AkEDjkt8whSzH`BT<*+ z>z6JUc6=O6H}#$#UlA>%^foPq8{XlHd!M9xuLXqv6LiPq!`phMqQp&en6J;Qsd)<` ze>f0%PF3^Xd!;@`RwR>q@;W;uOa+Nnz5SF{3XpEQdFH3sOE@0;@Wj#Q0aMxoT|J;X zaF&jJl>`uI@Tifooh6R&$Khn;m4l^YBBdi7&p+4xNLRRT-pmwF1+Vq-pnVU- zdup3H!p`w;YqZt$sYE-WB(=uNUp2RmRMc)!!->4Z8^(J)=8g_mgAQaGUsIFS0U>_( zvn!wG-nME^d%Yv{5th7XqA-8x7>l! z5N<;IEmUXE;3b_K3-A2IE-@(&NK^qcl-@BERIt$Ib-7=k4Nu6-E!Ii}*k z{ezlUqfB0n<*|Y8PoyeYm!?IW@@1P_`?MAYoFK4tExovBugiOOtl@ew|At&&BJ*n> z;JsH=l*m$HrA{FFJ0*nzKasj-Vo6l$Fov%)_|Ld{3Ijlch4UC`VV@2*v6Z$ z!zbfRj5mZuYJZ>cq5sxS*{AHNFg1w z@HxJOvH-uyZAg=r5};bpx@3O84eMnu9gu6&PwbyY{`~|BF@lnj3`I+WX<%`K1u|g z75Qs0;Zl(BP2UXvJ~n>=tmlCH@^Lwv;;y-g9n&O4eheK$tshndU*DZ}Ac@Rqspxd6 zPA4o<`o(^&WNc7gB~hiK1>X95dOvGxZ%SJ%oGM&6br$qJw>;nUtW_238M)+z&uil+ zWz0y3d)Q_jl=w3|G&P`vdRy1R-&;2trl%>Ie-F*QT0@%9I*pX`wspKdv@4OGj4feY zU^Eiq65SfV^L+D z#4ilSB-Q<0_8}L3qT1}_ZBlILF5zmH_P-M?=<{Lc2h<-V#Y0e6y&npxSHyVg!d8h{ zdG*2~f33PlMhVXz3i*()YbLIqm>{Tkiey89h4svW*!1t?mvceD-&6snTjc>!h5dzg z0(%g~O@QmJv8GdbWHg%99@96-iiwoeER7ij1q9JBL#6?FSDyF%33Avn@iw77^a{D; zxR&^JXiqEWRR)2@5Rgk@}pS0j^y5^QjNC?tTM!_vtUc+EVI< zU(q_~w1TfCdR=)C^r3lOg?VT<_ic8ZT7btoB zf*C5cToG^;MPpjeoDLX#sN3ff!?&WT>P-<=A7Gu{W0a9qXbHk1X<+8%*@Q;rg#l&bYTKqK!=Ls}fefVJFS)uOnv9hK&35oCgSo& z>FNm*a-`Y=s~^j|(t7Ec&d80hnwfo~sXMmelq<99V?!bK4bgN%k9Z{m_yau3RtDYX zA0CT(jg2JO%$$zQ+DJ-Q54%AF542jN60s%w$LU*ZpR%yui0V3VW=^app$a}$gx780 z>G~M#v+38*Us$%CXV24(>cwQ1U$$c^i3!4xCvAK8))98o&3-LG;Z_!n4i^|X zaYJbUt;~J@dFP7e<0c#CX_4H!tTCb@8I^%8**UyjRc)1pEusA}``Ge6mY1n#1Guf1 zr=TwtJJ+_h_c%jkf8r!^-$TTsX>R4UoztAr^DFZLr-~P=F9@C->P_EzF(~s7?*`L5 zVT&Y*!S@2O2M4Jaqgqazo7}ta&s?dG=G*?fXQgpT@OxT*dMPEI_HSq>mV({z&p$np zTVHrDx_IW6A3Lj)fmbvX3wD6{q9$&iF_zpoCz<@#&U*mx$Mn&)ddOD9 zL*e?L6n}^9&P_nsdxops$$x#CO(yMmT32pO#;0k97DQTVF7kwB&+^Leo}S4<;p6iL z=(H_Edy(HRE2mH$WF`BQdMI9Ol!pH-FFvXHTRu#89w!9ISw5#z!?>WH1AQ1qA!^ASy)tET$i0Cqf~sl2OP_#cLk^-zz(;rbdpP=pcEfS|vk#5#!gkumhAe znUJixH#;|6pYHc9+@=@kT8H-G(YFOzIZ75dFNbLcJwk}jchAN*1fxRDu*4w3HJawp;)`2P8&)jO)1sC4j!d#PYFC8TmrWR|k71TI zAdRJ2>+VKp)rceP05t@upH5B&X!EuZ~~txN6~GEID{wv0sPdfwcr`=i<%b%h@G zT&4<`42Qin9GM=9+`=Z|z2=@%+OPL{IVm>m_w3di;qj-QE$Hb2~-IT{yE3$^;ZsFu;)D zaR>36URDWks>*16Z19m|mIFVEXZ4@D--H@~8YA~!{NZbnjs;>SGp8C}UD*WQK<2Mv zH1{;#Za0OWxg)>58{(PO=Cmam6)`=CO^EAgPHlTK2;iA$m?Ihp(zeLllc=k4#rX@A z5(df_8a)Yg=6G_J8ZGC!*N=I0tz;ey@7`}pAr**x0(l{ASN*-j@3)}w-84YNLk%{U zutj(_{xiigyy~5OW5uh=-Y!#>E*jy+F3QglW`Vc=$?w9PrCee=Y5NoSIyfuSlf)S8 z4OGiq)Gw+Q4t?H(XLbF+qt*YOfe`0b2KG(3S2Qq~_3M2m<(^2tvTSK~iosUfet)uj zg|}uIC?VZD9Fmz>YwvUiLS|{t&L}hk21Hi2HlNbxOrm-B^qB&Kje~&e%!h>bHpS_v zp?Z^X_I2nS8bsqO-9OCu`-LylSY+l>#G#Fn*$b_mfL#)kM>O*FI37w26xxF{waA->I3>#Cz6_7H(*I#y!1uN%V}o@A-VB}*chy8 zPn5)#tXh@%82AM-zK@5L1>Vs%+&k{3hQ|DBb+O5l1hjv;W2$S(T8oUye*#|4ma8yE zltXF(ciY-EVqU8va+CU`PciH_YW;%%6?>zZo0DnN%WYU@LmGW381~{p3s*3I#oKXr zUoqNbIe6x>u13A@#$DJf@4o(p#<%DCbbKlIvxx_^zE9~3v+iF>5+wY6zH2|F5O$y+ zAv?eSUd<=C^rDP)hcJ>#zX37d3zvyalD*vDo*q0a2$T|N>xWQOrG9o%k3Hi#abVLJ zZkGi~*S()4U17|s(2nI>GbnHPCt@q{m22@O}VmV;pg+Y|@uuj*I z0?t*7Hkn?%v3zgi+sgR-9Zvfy@`F4hW($4lR%GB4e`8^FR8EmfAHq>HA+5sLEEjW$ z-Q*vecc01WQYn>l#j9&PJ$0kYdgIynr0+)cR=Sjh{k(ssL~WiPi&SS7sJ8Je9m6co z!*14DDM(|QcHC$+`36l+5r$02+=d=XF$r9(6+;=hwn?iVSbXpgE?SXwZ96dd+dgcx zHrDU_QL~Fu8n3*~PxI=AJC3d7=7Gc6@Lln^ObkJPSNdw`#$KZmW`)lXhtYes)td1A z8l-IF^27<;U|ebqJ9@93Cdhx&zF5%c_{x&-8qtHTyb%G)z`dLEvmx~TlaG9BUFJ{} zXQ*B-vlp;5N5?I2G+vAi`ut#LuGH9_dbGQ}&}2*IYFU51gV1Ddj6wzq)lhe$aM9o? zUu1Sv5@+VNt?^nXIpr@LpHG4|^#LR9=*$&dRidYcGj9oN%;M**>@VLnZ!|pA(GU8I ze?rXs+bNCw!5m}8?u>tp*^*P5VmrI*4cCU7oV6NfmFw*HBjq{azuc;Re|WQegwcuE zXMH0xwf`wKGn4o+*m*1E#sm*+QL7^RCfd2V&I9|X>q+gFAt$_kX3h!)+u_OStN-3$ zLmb*;)M&>N#V0yVpJ8K(rs4aW)8_W+u&7v$;O!NK)BgX_{ir*p_Iss@5Mi{LsXh9t z_amW6xL+&LP1SFiCuhTNOL|cKuM0`x7G39`T^FX~^!ACoP{v>iG6lkqM>4pAJ1`ao zozx^p{T4JQ0Y)d`JFI2;)6zgp{)F923txtX9l|UJ(e?`WXJ4$D?qHd?pb!ltY%NL3 z&Ml={3F0v%)RuQPzxR{&^X%R4oLeJ5p7Rs)Wf#y03mU0z`*vb(JTtPPrt?xIIty=r z!wVz{1Jc}G1|!m8yP@umm_5}MP=Y~23bi_bX-xi;*K(h|&nb1lFiM zHkpc;Cz`BvQWmZQ*lVIOD1{LdP8a$1%5jKBZH5YAm1weXkMpQXrVs{Bf-wzZIZcM` z)|Nq*%$scgu#$-X^%hXZ>213$os$ClseUMGVBKKz%;Lpr5WnGlptR8e?Pg2%1-XbA z);k(<6HM8xUCoDm*psGBjwL$ zu;IA{p-6qEO_qQwE^&zb^*|SnqUsKs^w!X}^p#J=KskiYLB1*EJ8J`^%pT7`)09V% zX=qCp*Jp?qYojNN?Xi)aFZ&sVVjFXe{!+I6M}*gb58U5tuS0b-1m$4I>MNbl2R)(- z(k3@S^I#RWAl;Te%LI9T0>~bC?5npX(oh*~G$7}^BDsx`^&bOuX>Gx5@$|9DT|}$- z3s&uhUA~>@f%OJ%95Ra^ZO)@HC|mfS=R|gAAy|yYvSP^9*`|B=*gOn*&CJNG2lttWrOvvVG<_o_1@BgoOtF!S z_jZ0Vn0X~p=s)YZ(aWsvU#YrR>J)#)6nzO&p#{b=)cqvOD|r>b!AV-c(CWuKKhCDFfzGh;KK!$fJ8wQ)nu&9V7sDOqk?*uI7C-TiOXhMT%7 zeb-P1;aViov->q@B?-J&j{7n9lx!Ra2JEZu&bViKPRVz_Arf{F;nW20^XyQCJ5$a7 z{%Y(JWV}Auy)_?5-Mxj440^0-^*+US(kBt1uz)uBfIREV$)q*KMDea*fO$Rq&{$~I zc|L!4dSZNt`RvX-|97jVJlLCt%zt;T8_|oIr$FYg7%|`B#k+^0jKwOwUPO5Q@w%aA zhVT2>>M8E!iqAG!yQ8^Y zM=K|grNv`E66~*WW8v77&mK2}f4*EN*jg?85#VU!k*RS@oIoqOLMLPAs=B%LK@?qQ zQ3kj2TlWz+Evt2XE|U4ND}+f##re$4P6YvLMNEiu!aMI)k-E`)(?!0knp3M?F5Yq2 z2NczrxVwD9s!Ue}g3vENZ%c;wF21;KHT*hUk>G&OJ38;PN8vx#&#Hy~vp?IU`>}f_ ztSoRz_uR6mPBM(ES&}@w^^>31))2Ia>T&Ar z`TLDx!uVOe>E)L@^V(U=lG*H?=d|FnNRxCVBeR1Z1iplEYWWbM=Y6)8Zj@!JG&E)y z)edF|^%#Zd{#npFcVn_*s5GSln)$F2at$aEa9^q|4D51nd?V^XhPGfrM{+lDM<;c! zy)F2~fWs@2_#ygF-qL2j%7CjIZ=fcNgEz@PSF%1WpOV*gj&A6z-C9>9o}|aDt8AZp zAlewbbxjB~?|nW5TpxZ~7`GLd2Q}b=;&QrR8ey&@SJ{gZXDdJbuqYmgavDor3NW;) zmzb~SsKI<&^;}&vc}Puaxh(c)O6OoTX_)dzi$QmF?^ML z27W$185dO>l7d(ii3YumaC~1+`*oX;iiI7vYFYsTlpCkdBK!WEF6a}lp~xIWhE({V{Cs%>S9ZT#R2CvjdZ}FOOGB*{(O^Y{ zYI7MGP@@94fWJHWD%$&lac_i%vAXQc;rO1HucgIvr&0F(v0SdpJPIl)T}j?%Jw9q3 zdh+=~k{4E9>*D=e?r+_>;;k8ssYvm0UaUwpzHgqkQ>gv1i;~x4K8L|QPaX~Vm~k%a zZM0%CNPt^*{uX2XjQp}4i>{I~Y%4i#eS>yA%;l1e>%G?Grrwcx2-&@Cq*wzue-5Y` zd|o9?Wi~#6>6JH77kV<+4)$yr+4_e0hSKMIlv1FacJ>-|^s?Z33SB*dpR;mtz=3*= z1@Q}bkC$9p;{Qw_*{G|!zpV%^<;OnyiEQ#2e-f2*Smf^2aUk$_L8BXPb#u^v$GHdAt`8^Y$=yD#F<#Z-}MW3>EjuQ z;=S+J5aacrbj663b95s!!JaXVt&bL$;u0<()~>{eq@?c@HasO5J_j z;ddfFw@fU24lZg%r%!Uj3$_|2_2)5hXcc_Nx<8u|-RV*HVQsD6z6Q184y6`{Dp*vWFP& zq{|EQRP~PFh82J1#;=)y2KU?h?^k>nWmqH#)!^dSAIZHudq0=2s%0Ll)f3|b0MSno*-54#A{^DI|%95QP zHX=IXYWu3~u-8mxfJ89r zqJdw1=;6}=a-OiV@PeFOp`1IRr)fGFtw7Fiqb0UWImb~dzFp(1eVbxP;ciA<^;@?{ zU<<~m+HdC;{RT-cD=E7N76?1ztanyfzm>_{Usw3N=MPExBjd+&VYK7W!L%8l0YsYf zN~ytaTror_3AuL_%Z1>Ct3COi*C}@o`1Hf`Bz^<)zwC<}xANL%HT~QNLkC53|0sPL z`gDOAjh!{vnrFW4l4rbK(*^naz3o%aLgNAdt&9$5A+<>YY-v+fwU4G92G?&*5-uR( zU~iy@t|Tt4U$J&ex+?)7d3BKPpIB%KBzh4ExYj&K4`?K|X#VaMGC`};{XUJ*=1X~X zBXw9`YUAGfv@D$~{IhBH-&eA_Klup{iq$ID~V?zkwBOs)@Z1JiLT*L(R6Nu-lTc!d2q zmix(D!P|1Ke{<5po*&ur)B)z?+u6-!;z<&U39*eWZ%9J4(qnaFRYtMrU=Dc`ZO)oGNZA(8S! zgrlP*u0(h&->`yJsPKe8lI*7HgA7T#(#siU1gD3N1y7PBo z*U{-TxwVM*^(=m!_)tVdKl7J8YVlwDze3*yR@AOvF{MY--M}gMO8k-UZ-}$z_lQwgLLIEcxBkl z4Q3Fa889<0qV>`~BDp`};+0Dm8moFYv%RDt5d5C5;i)Spf}#6fpbV-L6B%I#3xNQ; z)mV|3D+_4+#KyeEAKrg|YnQ6MI=P8yESuj_9rY4mj)j>d%(2vRWl|6?Xj+Qsn#u%~ zav1?UroNYz&oFR4bUtQya(q;Jl(zqyWx2oxUs*_sY+{Wt_KLFtG;{C4=2;+(ENasM z8p=bs(`>{B?s0k6uYK)g_*v|52R1iGv`@z^z2JyD8IVkzzxD4yk)QVL(c#$A`qa{7 zUDVNY&0LRbR(}VJb7nxxgq zO>&XrTk%({M7UuB{Mfsatb+_>=^m?9m|H02 zD(?GKn@atO>5Tq@cb@*RzVbRro{to1A~8+s8^IXVmhn+E4!WCl%p?q7_|&Px&%d$P z!1TH7HLr-SCz~AjwMw}7eu&Dnkx5#Cjk?`GNIj^wr#xajC7$2DtQ(sDhTfiSnxmh# z5k(_iP5SZxey8PP(Asv#lM5v1gVpcv-#*e)@+Y3RH*8~RTi{#YFObY_d%65BjV1MY zkJ8Aw%Tc!X#CwO>n=BwU>i)rd?p%t^UvU>t0Ac($%ukdyXDk@9S25N=VWb&RENmE zO?S4M{!Q@$PMI(yM-SwCls_MlWaz=DG{|PvIhxT6KtIeEBW&Xu2|O4gE54YF0bxgTr|hf-m85kuxo;DQv`Z<988e#MBKoMS5&S*m6B&W>nLaA*2J(4O zw0y*A+R+{8OW4(ca)MeJuVGI$T%G!0^w^Ff{Ft*-Az&1Kjc`ZoF7|3DZut1+YPh|c+tIQ0c6d}FJ3grX9p(>>^@vg`aU^3p_i`PynRiNQNL z?@&C1UH;K>HGg-@$O;>B36%Vqc?tvL;^c_jaXm8F%Am~pTv?c0mZw>pO!xIPgXEzq zG}?0YgplZS$+II$u0EG^*XyhDpDWPIH@6TOU zt(3DiqpEeg={BD${16*Fl-*IkU<%`hq=iY6|9oZa(2a09o%OBzF5>Ft_E^z|g97Ip$Trl8aJCFyABth`P)23qzC(4aWDeOC6&Um zLNWMJ*c5p0RVt?)4}lb)U6G7tf8-;1y&cC*--O zK-%$zUq)v5RD5d1JwB(p$0lb$k6})zXEOtY@)d;p^nmMK_#M{e)JM>1mH?-)!s<#- zCuW@NPqfJBz)yNWn0^8Mj&%tArm&sWe|cS(PJ z?$_jj+0t3N&?_eG{bWHsffBOXWMCNqtS!RKS-;cJ%Vy9o2A(vO^NuF1*DKsT_|If`sJ# zSukW4tXoOS8=dx@-5By-veO;8Jt~ehkgrFY+=9kjxo8o18$OYjnz{NV)BUG=n)0u8 zTgqjJMTl`r*Y@fJ)pcI#hwq!Q$R+dtglX-UNMGgR;S%m#7bB7N zI~pU4(|hm6a&x-*%x}rvTR^+!nQuaZ0miW3fct#E6S^jPNA?Pu-%+&&(A#1LaD~}{ z7wj7z$-{uCzjzg>Tu{M67|RVOP|Qn@>E+)1HiTQzG>18`Z-k$vaUa}UOMeDb@3}L_ zlYmc>$wN$souVDvkvb^;i{54)Cj=b~ELmdl9_$-l)nd}*LuAhwm!mHW@Q`QV%kwQP zx0-uRf;zJMoV_aen9W(NRnBI5=xXM``dK0`QRKfHsTMJ)El8r76sv*^G#GKxWWpVs zflt#9XrWb+fh0Qe0CUwLruD5v@021)RNc;>j42MzG+ zZfbd_(ua|r;?QZB8c89UkM6dP+82gQI-cP;UN}wT^93LN{uD@c$EHk1qyYz3qljryZlkNjT|DGcPLO|0TtsJb}$30tlt>bEd_$+$00wC3e`_vO+n-)KUL` z+{IumHE4V6_`o(y1?e#fcpq7^w)`hQwW2s*QulI%IlLq!qU*mIp{pByjK)oVR5JfV zC?{A1xBSdAF(F8Ix11r3xC7_(OuBuds~Xw&JqD!(0J#3g`cp%XSMS6%^Q?{C)iUf! zO%R-a#wTapGw8eBC$?m!IqvMij$btD-zJFvv5g}-A7~nDPyb_l&*=;Gr(+D{FbHH% z5k1E4U4|Ar&+Q~rBGBzZO(n3aUAVBBZKpubNZ ze8f9z%5O_!Z#;4zi`+ZJp?(6lY_SDTrO4*q4EED?+=P%99{f*^jSmJEUi~M+CK&Ml zi*Qw#FlU9FAOOesK2+S(eK`3Wog>>;fw*wM#TfzreG-8$8S-0q6wG;aIO;zsJHscK zFT89SF#8}*?$vb)Fe^~zbaH2d03Df|#F5@*!I}G_BmPEPK6}1 zWM^-ObHXcoMY0_tk`G3migT5o+b=ev^`q11Hk(JTK_`30k26{+WhkI}SI+r&FV>Q+R^MD&c zy*o?v#l;Qw7-{;dPXWxd`qe_7i~$N-cToLD{tCAV%`S?{Wgr3mu<9mYfWvcgdx0#2gCgvp?AKuU7pzA1zfOqqE#(OfW#4& zuY+H|7_{azP@VX`FnPIP@im0UEQmQrO8NW4ScBE5w$vID;15W-Pu8zTJq6$5(9crS z-UvZUlpYOBY(mvf-V2!qFxx2);EwioODng~ygkJi{7K5=dnV9_2#-d{jQlT&4YUFf zLV8n1`FSjFpj5jsuy@TiQ$2UI&ki3;1`T4Hh*fsbA5yf4UK3#v=k$4U<{5ZIh zMfS47Tb0TM>wh~U$bTs}@q;@eh|P$j<2zp=D_z;N_8@N`<<0d*NLO-cr3YSBkH>y$ zFA(l&b_HrT*ul_VkF5gJ54D_cb`Ze{;s+Jo4{bp8m^!lT7Mo ziU(8;?)@_qSM-cr@Ncls)|~BVs9Jc){epTl+d}#kL>8G`_V4XaEF^2o5 zt!EqFXW3|0_~3b7pLH8PceH+g zd1-ZGAD^2lfx>u;QRdg>4AeaeNzC*md_>H=D3}9l8)WlOPGTyBLkPIDOQ>1e!{qkVq}`3vtk9 zNp_{5Y1s<$oNU#CHBy((Wt0wG2X;_{4&~dX8+sYikGVq&rML4GtD_i2B)vehQ(&Gj9okne479GA(Gf{aqn9S% zns(CmdoNJ# zS8jlioyA;!|Gk&3&=zaHr*TbSx`QfnDv`A$!?CkOdzIlqJKa`#e+V3Oi(BHL@F(<& z2mZJ+p1W7=;J_Gq*rZ}|sPrM2pQi)gTRW8orc>h%8LQs(mAiMnC3-3y_WX4)r%7ny z^-Z!yS=EN|i+>B}lh-i^f?OlhO2@|>Rml7DE~jYDN1MKva}9o1f~+atwjzY0*9CLz zzt+f8nf^X@FjgmUUjm${yrl6cH3W)z;Qw7-wIAF2yZ9+7$TE|hOq)|J>v!6Bro+2- znq^u*WO$_U>-eEReiyh&Ce2J^a=4qUTgXnZ4=r2O&C$4<#`mg)7MkAK$5S=!33g{y zRc+);JUR*js8C&Dme*{?TR%C$3HjuDO6k$!nq;wJAg{M~#6?e}=+29uyY5px}cq+ZR6MzB4F#sCmmA+Y>4b!&{llgOO*G5iI< z4l+$G%9Hkm>`Bq0QsXBUdo{-^4@mtISHNqWA0fe>9^neJ4_2M(HdeK<9|f{kPQgfe26)^qt1IZ0iu>o5obbv7Wx=m{-GLAN7_U{P%Qzw^uc_ z>pFpeo1!LDUr;mtNdUxvUs*2Jf-kiFWoX!(*>~(Ft=X=xm<*}BD+|1+&8Qu7X?$&t z>O!ZXGK*IpjzoV&i`#Cn|U?@!Yp$`U>#32yMCnj^nF(}*$T z|1(7ow`Z7zEOvato#C?W|3}^xzZJIc>n5cNEz^r0&al7jo!L(Ddj?3OHDFxT@)r6L z4}g&i6>?b+U5-b;gI#Li1%mxb8+uQ;k_4|LX;5||a!wwAy1fp8Lc1a2!>g6uEcmzn z0$s0P85r7Q6csmT8*zbamhH9f*6pRWp`#AQGrPyx0iBebKLXDkI3#Hfy!R-s@B#*X$QW102u|tA>3cK;R0Z(Vs->X4(Dopn7mUyWa1{Cw%Z+K+oDD z;X0u)f%Mipd3oUYo)^$OM!9+VDH4UefN6>*3TNwV_-yZ4zow`iXolALDud3aib{~b z#DB0Sm6zf%=m5OK_LuDDuowW!wB5Upd|0ed2$~}0ESF>F2?HOG@_Zi8BYt)8Pg2D; z!*pA0>*Nrjwd1eL{@A}{e|`--$$s%hgN~!McDJWNz%8SVpS5Cct=*O_TGBT$p2B|W zS__>WmqUJ`GGnD=xXsp`ZaA%Je)Lt4_T)xww^oW(hrDS`!Dg^I+B81`RT1b1I;<`9(n;%@9ZkPs9 z`L8z9o7h%}_aSchtgO5{a>f&9j*BuS+1!5e3SbftredH*+_3DKU`Oy}-LX5UCs{_oEPbN3w4~hzS)v6Sx8|)S-$| z75_dlU$E5(li&qRboKad*uR{XKglXE(?_S46NjR3Qzm!tqfuT>$K|MsQbC}u`zCQJ z#CCqMQqivE7mES@6(C&>^|;{Y-R|i>nl554To9eCq(oxVht)MsIVXHi8c!q_e(>jA za*UC%bGWr<9f!*5(_8^Q;JJ!P=V$O5VEr@GY<-C`EkjIfFd*?inNLrxulS#r98sD0 z_$)g!7ZGRUq={R|qlu)meKD_cxYPK1>)h^>)s`n)^uylBI+1{VRiTHgMw2ivWK2*K zQmUzq2#kkFT144pfAi&1Ir6ry`<#dm&7Ig9s}Ymu_*MOWs-3*OwCxa{<4|0$wGM>Z zQSW!~t2od@lN04%C-$EAIrIZXkeep@(j)FY)renvc`Kef|0hdJH)_qhBN4mnTr+$O zHK%^Ojf(rd5F{S@0Ycw54EO35gLxfry(wr_DY0l zatXW5WC9{d_|@^2H~U~H<|8~=QH`)?D49l(1uqcq*GeF~BKi_)zj$vSt*UXj;C7{Iz9H@x z*$Vbp=5>q_ItI-o>>Yq&$LyrUONA>){qO}M7gC2@74{6|jcQgH+RBrrXUMjyeGS*M ze*qN3-D(^zsl905grMZb)qcU0GP>YAVaepEz!D!E zZ-OQmvr$P%`l+)yuqx> z#x=MmgMks?N3e3%Cn!gm*Ris^Liy({MBerO0YPz6yd zNPJ7d>~y2Rn;xN*hvkE^%#e%#is%78sIHF)*^6-ADIaK)&oKHNSTr2nTQZ7^!ZBAF zuadJ@iL3(I`6X>q5x#)p4Mn0np4Y*v3lto8x&23fOG706)QR{e%nJpjFSWleKWP_l zI(Sifv_cPo77ZZ;6in{-FT}&;${%K$k36m2d$=5p(@r_@GVBpu(>kj_*<6Umic$D@ z*?SAFa|T>5*}iMQzvGeCmSrXHg^g0zS*eD0>5dU7?+=$={JfolqT7uYVeV`0J>4YS zW2z)aqHaNE?Cols(RZaBI|Vx~|Jn1@uoz#$V2lDOAEG|Et5KtAn$%9{>pHNcY_w8vOCJtz~>CO@dpZ+uU=Z=wQS)YAn{0RVau-*R{^xgA zS{S*@wt2>`B%U5!H85%Myy=+^MZiB-XJ`qVzXNbfIk_ncB_a`u?7u_t3XtAd$F=Rb z6?q)q#KroVhC@|PAib4*01KMo{&9!K^7r}Kn?6UryjFH=zrPm)%DFPPu9qIhdXa99 zg9!{vyQ(S`9`nP#d?21Kpf0e6vg-0?=s@BSREvB#7m42(ZnuREGGq4PhnAV;7u$uE zL}{;J*9Ax6dlC=1qtw|b^ z6_)a;$C~+)YJ!KKaOD5gGVNO)&Hnu?zVwPuaeBVYH__vqWi_$nFn*&?VA$l~x(#Og zWcvgQXATFiUW!oaiJiWPmXh=Su^E1qZOBeZ41{jA&bK|}sju8P(F4Z_aS0Qy)5IlE z+ONERH+7S&0*?y6QOzD;+5zb(T_2{@tN8mlsU78vmjWpd9m})k;y&RraA8!2Eb8V`R5E;EkszT7+jW z8L$r42GPA#4D8ArR11omt$m8P)-f9~JtyaojCT zI_t7Hj91GaKBQb*^TC#%xbmNqKDDldc%w`NJKg=P2xY9Vf}qm4R5s} zA1`prc}fMDV)SD%6d1Q3{=JqEOPqUlfFr+A()ktlCuPH3gvrzI`(uyW9+@{G_g8(6 zBk257ujTnzjhEn$0via#*G8nQyygp^*ASrXp{&TEInDYjy5h&x@0r_~ zqx0?s6>EO3RGrD?vV^Yl1UAR3lEO4B!>YjK%K2WnhiYJwwaeDa9{a7^e$jn#)43sY zP=OP1T*UPf>%}MWE&b36XqE40n%{^^V2jU0LodFX=m3D+5S&r%ldfTmu(IcFQLhQq znDVc04>P?Ta&Mmk;o)yUzJ_uf@r3H5(_XoONQ0(M*WtVMaGdtZtZWLci|ej9E=5kIfY zTg!~@Hc22wT=leCr~7L?w}E7<4Z6yTFhJelu{^un>K&bLLOEvg4ZY??&&g5ai)a@P zyZi4+=eX7DH(i)0+{H%? zSy^I|mIb+Q9@$`uCTB~wrD6S}50Q?(zw&zvdssTB8ffbgoXJv@P5-fuyf^Y&+p|9R zMC=`djOX2j$H*yp?KY3!sa>~jnnH}<=?ex`M8wYik(q!_N{k{Mk^akpp*J}3Px2q6 z$xGU*G8XuIX`#Q)-R+za+1}jk2CjgkYot;qd<}t2;ZOyu!77qoYHF%Y%a_3Md3T%z z`0f*fa;V^-H$U1beN3Zm#*K2e!5;Y1x{OfN{YgjqT z;ZJTk&Vw-pOtRgJ@Ult9w3jt%>#mEdO-Wy{J{~}v4I>d8D(t-jXBhZ-!4-b0kEjrVBY5+SO`@ z1cd{Yf1T+G6uqP&e+XDIn^+M6_xuGm-p$>X7E!vh7*OWNx8dp2L^P@H6c9QqxIKT3 zCjV>Y4}U9igy|abPvWIP{^W+qU`_OnOhs8DCiGRd$-EGh`^3uEY-RhIk7>JGpMcH? zVV35-?_cO$c2QY_p=3Dxp|+lwbTEyj$p27swzl4z_XG73=y*j6e6-xaP8M$C5n<=? zAD}J(*bz{e4rXoSqdzhH)?mb;XJ#e&!bUE31gA{7v%eQs6*Rm?+C0#tR#W(*8m25& zxYe{24nMxyR61cJHV${L0`mjYgPVONu&e3Eid3nM9SHActo=FDVY_ko@&NpdHxkfg zhxb*xchEOF92tzgN64P7zL@W!gzGxCU0O*}BJlRL;kY8!-F_*8cWqe<#*zIu&1*OK zmoPi!4JFf3T2xuU=#E=@2*%G@;d9wNi z6dOEX7~XfzOZ-%qc#V^jk*{&h1_)!=7qly`t~vG-?R}uHFxokMNIsQAFnod$6>t5` zu75nf=n-|s*G|0}(`;Fq?CAq7v1=Wppl@~!m_rAVh(={?-S)Nln_IIKgkMa zK>;N$!KyV_YRQ!l2F!%*eu?c|Xu%uZ%kV;mc45Gv#iWWeN##0O( z%*o9fyr~`8Rk~IgWw(c`p_C8~r>|zjSaODjT9^ zryn6ZrPNGLB)vg80>Y4thc|QL+~Kbhm)u5r;A=wJnBB4y4xl*|`)Z#%6VxKVFGA>8 zvBauN7|`s)12BSK#kcP6qKa1#3)o-h5sWUc+;!*bix_f<|`NE|;4{>kzSJ`ec6 zx2Mlhiw`BZFR8NuuEDN{q>{t!WX1>n)M7bLGtF>?e`j!976vBF1g*s=5 zgnV(xFaAj{as@MHHSj;QKQF(%x)6CcBD))mK>Ho6-Fy>#Xp;c{%%8?kO)#M9FYQ7! zLkroIlBfIppT3M}w^{Kfx{iR+n!oY_U>`|`PY!U9iag6@Z?EhEo+k08x%pMwA7L!# zcQoAw%Kb!LG*ils&QyB~vZIF7L@|^2@evUtytBsvP(#@&5r1G9n|Hp^k)VvV_Y{-A zk3QeEvT~4FeG^~&zJQBvQuVxJWV(mE6%>i8;3$T;PP{D|if;Pw%51U?!nTo5crbkL z2pIQT2PO{SBL@KgSTi-y;)0^(B@#cT7AR?w`l+BA*z~1(HW*YiFX=`ry-975 zU&>PXhwXhY8X8Rgak{#A7#sy2kC^&=ru@iJR@nt^NP2F@rFA}ML0lwt@vKVOFvs-b zAi)5$@Iz&rXAorf%ynoKUW5F!1i_IK=bkRtdjB#F>9}d)2n~m@EFK>1z*j3qV@F`G zl0ie2*7oR8w5|86W!(V9{o|IbZu<|GLj%gnk9Eu9`L)m+Dvc;<=>B7@BRaM|<&aQq z9sE9=Go;)!J&Ik>=I6VAfC!-w37B|WgNxtox}EnNsCV#_29&C)v)uwCl|t<3vXwb# z6s+b@v8xU)ZCO!%9`kh39iJ7!h7}=%Ty3KV0#om|9M@YLKyXq`HP}Uj?a-Mf@XNjQ zt3a`JiyJaUO-FqFu;8zYBg@WfDimaPuSdRuM0NIP2-i>JU{lN>M$*Eb7l`whRb^34 z0Vh8KC1t+Ch?<_KvIh(i_$ON$H2yVRG#Ob^-c9kK)poi(0$Hx|%QVJ3kBt`RlG|EQ zrJmc+?z=~UEEOEN{q}D9ib#L7)tq9uR1os^{bPI4C_X(4fieRjs@}*Pfn%%ePHLK| zBiC;iAUY6jgy-6?n}T#-ZcjF)SgyRrf`6!mvi7jpy_-@a=S1Z6>fmm@9jf3^tG@_X za9#Mg5?Pkir}j(!-q0&r6jZyfC*TsP=}rgl(qdx=nClbS^4|5 zY2*1KiwB-j1k(t>;-s}S2r>S;!1^$St+MbgNov)1$9S7**xrC636Z(Pf(z43TFFLV z28%X=p%Vk}zh)`5TlNX5(6ycnb@e`55;`il_uZbn*RrxCvnqy&JO`8TMzdTMm*G_M zI5J%sbzPH1CCuQ#`-;3Q6~Gw#Bkk4-yGiMdT(ZuZto4sMyzC+HiLhrvWElTUvKi{; z?p=y7OBg!%eCor4cU{$#{Ac?gG>`iJEkweB<%%LY9yie5&(5ht{M2ifuJBkk!xt{0 zr{hERn>mVmxK{>@KT5W~rN)1hT;K!-b!56MJkA?YZ=}cE!P3;l6>15xdcf^J9~*g* zfVc7?1$}ysXhla7l7NjHbnR_fjBGbS2dkRC1%UBi)oHFKC7^{qtSK`LZDYF48T19t z#q5IaSBBqK8)>{U4D;ca249RuYU?3-eRccv*62FpR|$Sp?eY|eEqphEdoOc3PAwV0 zK2!nGJojur=`ZI<=v#$D&!mU1);+vAh=JrZRP6v->yUhNF85`@>~%GPfMaq-#5oru zFHkgz(HjoYw;6%BC2;JR=~Pn8%ij!H^=(4=LxmRqnqmzwEaY~|C2LJ|KH!ni`j6t3 zFMc@iS=0g3p^?b#LGHlt61n|xs88DcJ8hZX(#<1;$HW6smQ(??S_{3j{Pj#ncPQss zbdvlercCN*NZp`04uSKAa78AmnOd|$gool`T)9F03h7_0h{ICI&$3U z{CE9YRqAK1oCzi|js1c^L@hLrW2pZ~->y*a5@}=j4_Z$ouXZ^-N4Zd~tVWqX-_gFc zd>j`>pHY~#&xU(|*!`3PE;T7PWPSra(THt05Q5lhKvK`qHvKiZ64zS>?(!(Hc3+Nc zmgbq#P&7`3UX$bQPGk;kLKkF*}D zNK)M9jYYWId0hsNw*2P354Y$#|A;qikqzq29Dff}y&?GoFSe;NHhkCCzJcUPs z6YkmT{jdnh>FMnFt;VA|hhXTcy`;o9A0W~Nb>GQTKkGLg`e_F=BjJ;i7<~R6>@(es zb5zY|kjoEwD_7wqe-2cbBv1u#f(R6O3n_ovU7qk{y85JZ{0%lQ=m+v=io36G-j?AFbe&jYe zdL{H&x`ms=cdRysbCk^We&W>CpM3!KizyzULjR)9(;wme_PX#XuNgDTJNQH9U_G=G z0&j4{_NN~#wXs=4u^13bh|8kE_H`7ka}3-I2@u#nM(`ax_S$ypw1{XMK8rAb7A$t4 z&tT?_#-TVwJkJv+b`iKO|fYExEKpx@v zVAn_ZtAvs)2Fx!<@{6o!0P*0V$Q01v)MCzx3SQ0W2SGN&$t7850KZ|9blVtW8A1?* z`BNG$wRbHp+0u-;hx$Oon@idRZf4AM->;S5ix5IMnWHoI5NuDsLu0tl1xvt$7dF{P zwf1IoUYCbOFRm@M)iR_0fyRMvm$Y{mk$ymGCcOZ(gr|CgK&Aq*#ZJ9es(&!cSZ>n%eG!`R{D%E;go!FEAdOjPiW<7!RiisD{_BTxg2Nm+vM5|967S3@v$#?F@G z&&ktrj-{CCRY$CZlVv*92;4pXrtaLn>hM)imr^KU8&m4gGOaNK$JQ{R-Yrg#H^QV& z9+Aquj}MiO1JIUOz9nJmx!NP6BU&WA%14MkmOEwyWCKhel|apJebE}coD3{%bTGqg zjKI`Lv94c*BL0<^A6Wyklpl679orQwKLw*{6xrW}e)DFge56{l zQa)19ummdqCorl_C<2RE+u$g+pMcKzv``@!`xM0C_&BkL-|jE5F*Q{#|EOVZiqhT$>In?1JEDgF zv7&NWM!3Lr~(@rM__z8j)0!_mc^z}&HMiF zul*%2cBM|MU`yucjKC7$(a^_)j9S@;wc9ROixKdYeGxSD-sVV`NSRlMJp<-MhM=Y< z^%vhCY9tmCi>#2hUzjY83B?#4W-Vb3B<#4K_-bV$4_6FC?1taLjrTAy_Dr-glH(eP zsJdT)Q?G1S!tS&^J|plu)>z$Zk&C<(U{^-y=!d9UA5AJRx>oy(4Yl5%`Wx4&%Q+Di z^AE3y={8dx9&^dR-^Zfz&8I&Z$dW^22pIB5zH))Sz6i2&ewmJ7x3u?mKM8=b0*4^b zIPR$dlcN__*v7BDTx+R6`f~X1%BjkO6MQi?)>D&vU4Uq4YYGEMxgj@5+4^ZX)@*6l zH&Z>0Ia-k1l!%!}|Fq7q$c8MYt153?Xhww{)>B>Vik^yx9skgl4{g;@B zqA_?+O%{nH4zLGFFGeoqt13TVJb@aIU0;EX%6CrHlwW8e0EM;%V6TQPk%MoC`XN%a z&Mcj(y#e!|wnl*o)Uxfk5JJlXoIW#pI(9i=H&pg?cYxQ@Km-b%OpnDq3Vn!-Qg7J# z5^70;Mf&$<{k4T&1EABlw&-*9$F?{(+Er{Z@lsUqI`3x5@KK{l zS)A+VE~}2nkMHf_1~%1CN5C1tFEpRaA${@&fMb509)ktzwzKWF!+$ZaHRKSvU1YE1 zX!!Qiz=JFUu)RpA7ES=gdlHH>P>QZG zfNS|AZkgr3fvOYtRfkL+HHNb(;`>Ki<8A!(>|uE^JoIQda^&6`{OywZisb-k5;(J&R^AW% zw4}A0F%JkA)^LOW2+hcZ`xkotg@J_Etn(jO5pFLQRf=rh$43c~_osJY}j{5In!Qj4gr&Zd4KQ|H@R zi7@69)v)_RQ<3nL9sfUs+1+BKI0<`}-yOd3ZfWin+}x-5Sc*=>h%r4)k=UA1VCKlZ znR1frK7P6{51ADuf0G``UI2Z^nYOYZ&qd#2p+oaPHjL9JvA1EPt_Z(jMn63POl8K5 zqO;NG3052B2JpHibt3aFf1gVU{87ZYR3neCO*=w#hDwAop7NfZ z&ifd!4xL{ct>dtZ`=;|ngdJNDN2gLX{PB(OYJAh)=If3ZVpMPj#;>F?9#CW5glu#0 z6M0|20Th9F0E>^>K7howi#)zHEvX+rr4}A#^lJ?4S8Vh-dSl3YG_HM-h!hoM8#b?97G+F$5hPaGj1&GgjLS z;KCxyDeQpf>9C_i-V)xad)isUQ&8hZ!JmO$AcoVPmjC}fwMn82Kz|Se9ikmBZ|D_A zF7Zve>>HoLx&Blv;)70`V@@w21IR)7Z)+UEOiz`1OHV|3?c1BfQ6i^k=A)yTlg2|w z2(N}9T_EC*qk!h{cc~B-d^p_TVIBK0H=MV*__G_ zMSbMnW(FIb)b#_W?OmY!7|uglXwk)tMp(j(#x7d_Lvo{3`qB0b#77Yy`5EaA|3uF- zuEs!3+!}{m*wDraaM1hsQ2rsERp0Cx=RXp^Dbky0#!62;Cx0q%=BEO;eo4-Jj3eVzY8WvX{ZmV|K{}TsnS>agvWkwd;kG%kl^sz;;GjvDz z+u|R)c&PgE@t#tfB_n23ZzX;Y?txRLLvwQ+$xhawqf3co8BHg`#?>VaqL4q$hMnHy zj`RPc*^3bf_Fzw`@03T6Pe&y;Bs-mIZpi;Pa^g2isMXY`YPACG=jbFgJ0-}Mo2TvN zt)&}uKJ8(``wh#Pg);cFQ#E}u)JVP#?)8}VfP9H^9JLJl9J`X=W!51*rLxtLwe@%~ zet7XVfOag1?xMRF!lUj2Xj=PD6g*COy(xxF3VZ!TIJFbfxmZzqA6?YUzw*RGo%=_V zV@B&7iqww1D`I>Xhmb5U?6^dS4L`Tfh8`OeQ&C78nl>onE481c zox(DnnpHXs+Smn6Qy20cAU{(`0LG3LP$$I_N^~Hd2kz{GvJv=qYa2$VS!M?5h8>9; z#7@-Rg@^w!0=!1j?KwhU);1E7NH;&Ibo0-hw#7Su1D%wf{_gi#(My1?MPYLR&h|RAWB>by z>T+m6`regrs@PHi@v}mLUaWOqNMeVfJj#N)F!v@HivIxnh-F2FKyY6R7RBu^v}baU z9@)tFLa%t2_HZL=crQ>)$1NjkRVRLGtQHRa^{(z!vK?=&({{R!U2&RNP5=Ge5v@~8 z1-$`V!MJxuGf#d!+!lw@6zPtBYGLP4Gfl4(4oK%Cpu3-Nb|vaOG}svi1{%$lz9(`< z-ooF>&tKlz`Guq73wb#gZzr!H`5=0do41$0{2e(31-U!&{(g?~et}*AZk|s6_kGLd z)k`^_P=@Em23icKAK@CKkTdNa9N{(=Ei}qbPO0c!rt9unXYVDvw7zD-@xD#eq|DP* zZrq09z*RM8#w5nnIi}?s+tf3j=lhvDo<@xmkJz;yUwyC_cVVE%QKjsLp^TRLwfFv# zF=h{ngu+3?4TX)))&0!WKZPRX>Hfl*BM4&K3fXu(>#^H`c4ClZAlLp%D8JGFs8&N_ zMEI>=_&^r%(z6p52J_C3u1-Zt$`U-g$!~uKIRyuJO}2+x_z!+SjTniGRpa*^~43AOP>OEvB* z_R@9OYg=7xj^zS;56U5aD%$T#g;P(u{4Y}2BxzC%Nw*lKeb)LeDd$@~H-Cg}^|C10 z<&L?rz(0N9`jToO{Zm=5{(cLCLy1!+?%%*{Wy0+lpYF8-_pkS#m)ph90cyj)T+F}y zpAy?YlfO!GQc;c%*uB$#_EWPX!ZITsXZ~sLL3|oj-Jv>xQ!vV~z|5!Blq2v*;i;O%pzTyl zIPQ%a3Dq(AZK`4J1ZJj#DKKhVIQl)5d_v9&+Yn0s4dOQuD=j; zc1@e_!Qi`}D)->u+=`>Drz&$*+9vmEl7l6jU*O`A9?_l633rC-s!Y5Xl>4L;nezST zGIjTD>Hco_&MC7Ld>2-t9C#gG%wOqfW~ILQ`>8j0sGq+iR8d<=C%y4t?`a!EQ*vfI zb?}ROLx%Ly56;K>7fu)}t2maTN)Tqu-j1a_Kh9n`*5BC!J`H|XU>>$_Wvis$syU(2 z#rR<1+7@&meOFELYN0^M%@;}zsZH~MuX9h|rbia4!ixHyE<5V=U+ZCb%-F z{b21Q=2B-TLuU~EnaO<{aKH71Wii?=H_+as!aY=f6RwmKGyu#M0SoPJ{ zq5K6Dpuy!`)tJC-tXET2z37kKze7feOJbjb)i%MOnx^5d$M{)8_mQ-AZGDtx`nZik zUa$|yxyC6|}p0&!yyNzG7SliC*pLAp?1ZsFyZ*6)X z$v2%jPDf&%9&{^}9lDeVKaO1DP^F%UguVIVlA5k|Ep_#kme8M*wy&|53~Ec*9~pj% zS$5~YS2QX2`hni1U;oAJRxoUbk>3#?*%T(R?ZCeTD1fh zvD|NSwl`yzaplbI;2G1C{_F6mFxy(^kG14F-{m7d{^xFAUWRl9)sDqSJf0Hd4_hh4 zw~q17Jwk9YsP~Juue!ICv8G5dzd6)|VlGP$oW-K9An~~}fhHF?Mbe*UYb^|*#@^11nf4Q3_DkDZp^#m)?&al!Y)xv)HCXH~G&tijF=hLcM|~sMJlDcP zFqK3)0E<1Ph-nC0w)KlywvCE)7-HR(_+ZlJf%(^8NGZFr*7E<{HVCP_Xoo?B;wHWY zlzvd{ia|LSH|1cdAF=n_>hQVj=1G&KBXQS5GI-kKnL*}JN-YP^)G{5M?M20mQb#kw zV$%@OrO1%DstUFFiG|Q71}8a!yVkH@?;~@~IzA%J#+V+)L3H9Ek~&T7zNtmE|BrUx z);j1OO0W2*pH046@JTo8F^iRc{)qaGk07mt;V&DhaT^&EdE`3*>?!D|;$~rexjItj z^4DVWw>jx;6Grvj-XL5}I&`+c^O=Hw{oQ*J6)G=XQ|peexB)Cgx1DxYzFF_Cy=asF zHulh~LdD$`)HOStc0Bd|SP@XZ@OrLOEC{A2y8)gx4EV!C<4vT+cT)_>V1NW-8ouGi z9*7r>pz2E&nfIN?EmR@$CJs0)lG1{~#d2RRnq3ccM^v@ZYJUpB#5}0xoe8`B>(8}_HgI|cPk&5C^=*~WgP{^~8^*D$~z&|DqR-j_y(naoRg-dFM>t8pu z_y~BCmU_X{KrC}MySTOWP1w}rSyt-#Ppz%jAbQb=VtW%dAhDo2aK?=r3 z(o)O%lsZS;Px7N~!u6g55$Vdq*s%QMOX#uGl<_p>DF8Pi+SM=R_E7D|zN>uiVx-2v z=B59lb`}zpugG)G{9CG$_V&&a=A6|Ovm#h@@XT>k)vqzkaXhV-it2lhJ+2xH343CJ z0Tb6w%-qjk$!()QXZ^7kwe;WuneymO{l?*1b8@d#E?1gJ@S_MFMZ>AzJy4+`J0xC|M}ZkEA#Dl>yv>qH8S0112_?eyQIL<4He_wi*t`IIDai5 zZ?Sa-yG{9Xch%>NR=A#|CaApZMrgj@J|{gDY*8i1UU#7wE1ph0dhzD%B|(g1zU+&U zyeAP$${qhH#Y-wZe%}&1aB-pZISRmoUBNWtfw6cr5k6YHaa*d&l`EPhe%QQk|(_DuZMLq@_IC6T42lDN4LA%^uRK z)z3U{8Ta=pC~5;Efm->^pnd^XyWpy~FN+rmYvNcmA+`|)?MLzi4+iB<&RbBQ2|Qqf zaqmf!*+lFOyOox_>Z}k+L&dF2QpDax;M+#KG+(VGUUT{#4|bQ&ujF1zOQ{i)ag39MZD3}+L4AflvzDAFOAuiVt#3^(24 z%nQpi7$zoFoeveyV#^V^^!VH-!%g+*y&#U*XZBCs&75vm#}G1ZFqKW8xoBP5UH04l zxom-k)V&vmC~c+zj?7i_86%@7d!@hYd6UPy#2abg3X@DVdxe@Da6(ef%O-1O+dCh- z%M1%HcKtC(&duQb%2bL=8q1aTH1#=G}PnY+he-aP;+TbA8=& z_m$pTWyb;0R<|5PT{Fuk$N?{ux4;Q!Q>x&QEcqs;{t?5xpx2E(vuq-piN?j^u-BT> zUw@kZ)iry!%BU{AWVe?(n|PdEHNJ|meui#0q>TZpxqX;tOQ; z$}d)Jnc%@u9a$kmxqXT5t@-`Ciafg$f48|~-#$FY648Eb;uf&#E;4a9=*9Hnf=Ke{ zlN+*#dR7JIRiG#0$R|mst+{?+LOg79C8{5wG@+!o(m}m#6PMUG1H@p1byp0C>KvNd z5#^v!!HtyVpBlUG-$n*)r80;6&g~_$RVTIfjNP3Gu78vT`Wn?;e=+#n#{<_Jn=W5| zR!wNO$xPa!xnqY5^b7?WyAE2JI9l__2ba;hD>6IEyCM2dTlPLL@LyaNa85HE-II(! zh9qG6T*sKl!(IPs(AB!bbWM+XsO9X13m##AZ6Ox*M)fd}b0XN@uHSF<%p9cHYDYnI!GjA&vCdhK@%H4>+S#MOjp_)Eq2b0ul%XC_}bzw{V z+U%OyOzT-N;l54( zjJWKrS60?~*6!}aiIN9ApOZ_D3r9yny_ zLYSw57%$H1iJ*bke!_!MTmxFKgWCH6ybI3fif5ZH2og&>6qP4Y<{v-QaO^&K^2<5x zi*Sp+`9{TU>z6^La#z1a7+{xm2fL; z#nm(xb1O)HVk*~5yW1e5r4aOxB^ltepM($q{o4?TP=G4f|2Mo5b&&B)!IU|tL!K-4 znS8@|PwKPVC2iG-$Gty;0I=-Q;lo&ebbOU_K>ar%JyC%O8M*c`l9j4i7^sBBGc7A@ zBvwG!B?I)(+a=)LyyJ+TKtV}%X^-lc+sVCC;Y$*FrbN-pJRfpjKyN%x64`B7=L)%D z3FgoY5MvflcT|7dCi~^6r{rbxz1$am~k;jxuhHKW$UHeB76}gK}+$AOF66XLs^Kyk6G}HOU(Bj|&Py zqwXwEmlM?Fie0`<-&c!r`!p17If@!2XXA8#TpYzHU4ADq1RDBHdh?b}Y`IkLEyQDU7?t-X&1sip52 z$AlfQjteqnKZe*|`1X%WOFAu~&v&0q(QEb*^VBlSKi3~{PTiXYbs^sd7B92Mrc)Rc ztAZ2$-65-IevK~34QF)dRYBr^Ku%tKR$Av4-E}CBcr1OXYvbfj*y@A;!wpv$QTvTR zSBdV3l6Illuxr>X(_ZnttSlkHZ@iHqk};C|R`Ub*F3G5T`1$g)THg6~X(D;T|s8O*xn_SFl8Ep(3ED5`3zCHOUdGdCY z?s#SK)yjW?;Yw=f%pLCu9a-gE=;5AxcAkHUW#)g6NGG8m+&}lapWK3GH(vcxcQqj; zT{D@U!YmIoe5xI|DOVK}KVXz{e(v4gD=_*n|34w~>*P@Bi(gj^ zV3O%Ou^BzF8e)CRVhjHt0Hr`$zrxa|pd!|csK9wxf$pJqFX!aPQeELtqNmADB>dgB z%J{Nh>6t&%D#J?-&%Ey0=`euh2qgOe&g}hrG2D-vJ+?n+#{tg#^W)QDKfXf?1!u;- zQv|b*1}MR%cNVrh_s|V8GB!UI$G1z5caBwZtnx8zvoJ?gX1!(HVad{BuwlC1%{{cH zza-ED=Od|mXaG0-k%%3x3r7?7(v+RD;R$Qu*mO)mUr8Vui9p9|yKr-&uLMiA91G~*9_t0QpiL@i!ZDCEiht{OuGkS`3ln?jNKwn93qB{W>{rCT1x!zq> zauM|WY6Aa$ZdFNKRMnFI{P$vT4~?xVq0>{Xpc}cMPpvAM?DP#5I^8`qvZ|yv3E#J{ zHMxgIR&o{s+^PM*!q(&-`q@f$8P;{x@>C=+SJiaopY$5P)H0x->#OKvM-=gXB|*6C z=fB5N4E9(2+aJW2C!P_nB|(4E4+D(8rl0EQ+m@)Li9V=U_D8YfyU&VO@r7$Rr32y% zYxoP}eR%%`G1EUmJP*P%^m&SUfT^raR!NmVm5e5PW1XkL1?W51PzZ%Gvd*@v2kM)G&(G!w(peGUyN4rCIVood`O-8#?%ja}Q z=XA$I!8t4ELiyvL2dIAk6u`;Oi5vz2E9ZhchrqN(j`OZn-bkt!B*EbOfJ|%gB}PSExW$oSeqX9(6J>3JNWOILkb=T%lL3W=lHGQ_$_hZ^}*r-n%`1mbqy_c z7`xsUhtX(U#T_u>KW$lMm&d9Bo+g4nt4us?eXp?uTthyG1XvL&X6Xld*>}m}3vPH>Y~L?6`_rV?=*eWd2!-?Nza#wXQn}V<#QPM(=6am$4@d2E6i^ zvcHEYE>#qJ=t$xksyX6vT-M)Xeg6&YDsQ_YH>#Pl@w$;&RjqcyPAZ0x|J7>)uUqZ| z*lX>5*aP=`4xqf$1yIr(g8#OjKS?x--UPgE%{vb_mVq-AZWWTD^h2HHO;I;*63c(7 zth~vs;(TYJeb`yig?WLb3S9ax9pIk=;GYEW#m`G){?l4;S_!y^9=HPY@-FAaSMhI5 z{{X*YqTc63Eq0hF%|w!M)L^~J#ZCAs7gpW*iuNiOj(wDgu5#tWL~V9b`bc67f;gUu zp7mB2-LZD7>$P8c;QG%4l>696x4SeSZFA+rM?}L`k{A;P&US&bop7E|x!LZ*vAfHe zl_(bqHA7{r`QNv%}#INY42RL2M+(f{dp(N(8OUHdo z8tO3uKIse6{*Rf4dd#7rmWRT2Cl4n&yW^o?=gPUAIEca_Wir|s_pd_MMHe*q6k(}b zC*9+=#PM>ETUb5EBSt6^N>)`Xai0<7Ew`0hfAewW!>B6OM4?`=x7}7rG?j#P1&t5l zx!6;erAK)4U_-&vzw&^!DL1T{v+M1Zp@2>26tXSL@T1ct#%uuiDmCS=P9OEaiZ1|^ z4{}SMtu^H19JgbghTF2ls60f+sV1Ci#Mz=uNhje>8nPbVXv{KrWswdspCINV#BK#K zUvJ5$i0t?(!c6}ZzhXl^O{B{~JJxxzec&`nG_EMe4B9$AHq;?+X{Bt*b)vcO@S@J? zfdTI(N<~6q>c|_9N8{30l4h`2&tX61u>XwTcwkW_K>3(Uj5ID4nd`wsT_zHh`#2*T z6x&PEOc+$F#X*0ygc|FS7)@eK9I7X2jlfw$IQJ@?HO3fZtr~;W@Rv97 zE9USz$77Ie?3(E$@$ht=e4QNFuOs%?75h4KSi8>gu(mzaYcEatah6g#PNFO;(UEQw z$-K>q?eM@cU&PU^TX^mc&LElYXPmIyU1t!n-6YDWfpnKZx{Hu5_@Zo@cR972L16ey z#vk?QskvWp+)o@sisOF6XAf|ed=;hqPs;8O~%8 zbk}Q~wA|gLGi&COq%}wA#QUYW_7n3~#k}7%*M7(5@PRUepiGCk+C_)Tt6e{T z!UKQ#5{|*xS8MrvfqZo>pC07yD`sI!Nr+_z%=H51dV(oCMq286r{_`}+i;VNyzEnY zI@Sq-bwtph2-X>AQtLT0zKRjXFJTdM(+!-e+}*^unvo=A>8EwrE%H2S3*qAZkm77* zi+LWk#o>9>%-MC($nsFP?4cyZm_egXLLYw81NR?;qb_#R1Dr2%(u16y+?^z0*h-S3 z`ZIcN9u*b&DABy3D)LdMR+7ODFUio=w;qUo1t$*KQtRE?dEo}P(-T9DhfO6x z#tfiM0%#Kf-Kz4l$(@I(L(Yd`D;a(4C_OD(1jQDj_^YDW;?}1eZsrX6Dk}NQm+~vx z>K0B}?zYlWrWs3u4jiomZBMUa&;DKR z(}^^VC{B@R(MyFct&|AI0l+ELxKBC!ArCB3jyUD@$8asFrz8faia&E)Y}FySP0R2D z2F6*0aTa2%Rv2fA2A$(#s~%fx95OC^QBOlHce=Gm@Sq~7b+p*36VQ6Aj5%n;_Ht}5 z#-32Iy^a=J_1L`LDx;1X(Hki94H)~YUzJ@#gQLY(J$A-=tBf7{lAir$&OkF#d`nR@ z8?&L!&W?8iDw>K1=ovQzrZC0~oE4Ok72kNs1M3vbipzc{+eBFW>8MSlLAYH=gqmaY z%v?k$7a__{g>q3I+C@6P);479F@qt+wUa^$_e|-LR36$!nu6MgjJxd1dJg(Iem}-P zUB&OuL;Fa_=QbiE4;loQQ7v4C@h?*GFUvz4NypD!~9UpApOv~{MR0MaVAcI@VIaTPaDyx#tl46l>4a$vv50+ z5HSPhMgemp!IaOE9=*}&tQyBQ#)C3)?5lb@ZWaVL6G4+AxY?Lc+sc{oRXoD@N3sZx z2XEz6<^HHx&@KYKc;Fyvz_H z)euq*BK?m-s&RDmn~FngGLm7`V5#S$P(9Mjnk{>ndPhgWsc7hEDC7H1&~vhwITju@j*_FgO3%zv&dgFI`VU34)EGrB zbvBA*z#xwwCBUEog1u`Wz=-93*aL;fNvn)lcdEv87ys?7H3etMhvaeQAwozfgom76#+pW;mLh{zR_mpIR0e;Pf^Sp7 zA9Z#eYdSbL4;j{HgnvvV|1k>wHx>LbXBV=jgJ-k}864*7Ie1d$;7P(b@_1>+C(Q%> zlMWB`bcCVN2UZBNDUxLd(W@dYuUdFJPK)As)jFUW$6o$B$HtMt!bccMF=o*06EypX z=4wT=&sht}AkdnLjJ|B1UQ2JvT6&W>eyKR#bk%9>REVC)Wv&5aNG&fsqZ;!Fc}0Htws`z86+RdYR5a8&ALmLO##Bffp_4JZmGbQRIG}#Vp)jBm|tS!)z9dDVqsq zOyy;>(*+%lZJcMx$S_|g*eVFN62T!=(j{As<(ykMGro#O#=nhU@jUCNoT}W0uor6n- z?5;oZLKt;b&+@ug?p;+T6kANvj2cvX1l1m*TB9%7P-j*5 zxghPGiZ;*pxttpfC;i>#ol}yda*@t+F&!~3{=u^z_&a*3beb6bUZx!{E_ZskFmc#U zl4HQ&xl)|-UTGoG(etFCuH^ZLoDUTyf?+BNFtAup%vu4mmO$DR$Xa9h>RPpYHO8el zo<-1D-*vovWm0SAlC0GYI`evYn!cW>uT|9R&C~Stj!)C;QgM7DkI`94mI;GN&HX<4 zClCC39u9%oV)t!I`d9xvYkY|Tv6{d zO}5jq$!KcVu$UwnHHcmmS$xs@uRnX>#uIVa%NF}jP90h7CC*gt7Sn;)V3MS=Nzajb zMgbE2QDsQ{lA42iKy?7aUNU@TvySnGNX#3AG5sWIuQv>P{eyGltB7$KcJeFQ>rGBt z?)K7|HFHVQF@qR?BaSZUI6%w`PLj+AOmiJ@Y_5fI`=XQ`3G^EVlQe@ZdLF+grr5sc zI%Ky8`cJ|k7aMGd=hety-{)zx+zplq#U_(969&}=LA8OXMpULYIG%dU$c$k$i7?^Q z6Lh0Mxsgy_RVX(abC8=kSH6lG{_-Y%MWYRK@^Uv?CbwobNjtn$r`{$fBexOv=TDYq z+h$HiZp+JLWL-4UZ71+SadLDoX_mF>RKFCt{H3dUj|VzV#u>>&#F%W96G&$JHRmgL zv*Glb4#j4ZG@}O96N2gqqWZ4N)Duq4mI+~)O(Kl8=?U5?P<9f^ZxqT-!)#A;u6z}x z{N*seqS=1W$;;hrncSM$ByFr+r`|2iwwt)$SKPZzv+Z_lw)VI`l2{&%_u6s2dc{1Y zgsSe);a+#qX~65Qum8mZbLZnAjXn1d&Leqlg433}=cZs|>q)3V1MY1B_cp=x%$JSy zZKu|og2iy4BpEzcPuBrKbbyF{qKFO{4*Y;K=c^d!;+)AM=)ey-mAN}`3Vh9o61wI* z9e$0Ryj;Qu5mnh$!9MekuHDO9|_p9-;+FWzRvYyF%|q{_lD;^;5h|H zaqPj(JpW4`{0UF@=I+7CSZqJZv&`VyD!8^1SN$o{ep{W+mQThooF^fceO*t|HUYDZ zU@lQG+l=}0J2+pyiV-eJ35%ffe$ENZ-FcJA>(h4yO5V~7bng45>Fy`;yA}EUrs?j_ zm+9(5F=;nRGG-9{yU66fyPx>02VO(Fjj`RH=Jb)>{)4mS*lq;GMw2Af-_Ub}zpvQ` z@C*@Eo+^#@OrDHJ0EWe6`09VtF?Nf@>?Vx!6vl4DVtY78zKQ`Z!}I)#7JHtP=GbDy zteH!ajvK_UNOQeH%->VYubAd~C12*ECzHoh^weMJGKn<&O+A_KiDbU#e(41dJbo$; z=8D8%?gP#sx$J*AVUAs9lCj++5`0TX!yoSK16W;vXdkGYt#-O7!@Yw^V)#ySK&Q^5 z7O#-!#M7kx*BI+EYt_1pj|=lNensD1=XhNvE4*evi9BMUuaiqN>j?fr1;5T*npx*? zX=bM6Yg=W9!_s+@CALgY=WSw{>$ZZU#yxP;X*i@~=iR|MB8?Ckju8y6Nq{lGo}Bvy$o&Lz`03JX_Zwb&fb-<5sN^qS%CG3Phd6PL z`#7f7OeR?ex^(6p(qub`dZD7;VVZ15zD(8_>J6!tD9KV2(3$=$^7!Y1ul>yfmz|Dd zHa6KFP9B-;FPtmKCSxQvnPeF@n8pRuI5GV~WobN5CSwG{WD;OFs3+$Y0rCog{I>#m z#W2~coF`w!1ec2jUy>Owk2y}HoWR$E)BtyNuHn5V@m1B?wPiDCxX^@8kr zA{$g0yS~uj)eU?sGC&O5NsL&xo~U&KXC2`@sc_a6>en}{=bZT}M!76Uvk2Pm22P@5 z+ZpVd`6O{=k50a&kgssqLhK(Z_AT_QsOkZ+TMC_B;V^S{%St=0rVHh9RKiRcQ1^;- z-dni-B@di@CXV2W#R%?!Ld|y%a>{b=;xd@p#P5hm7+*-w)T09GQGyDeDI4jdPA!+g zV7N^Z_%75*b_kLkL~^qt*e~0D(8<5rh7SExjQWrimfJT zs>6D&_6e$eM78)VX|;V$t(FO4cugWy_v$G71dtjPz-PXV~r@dNR()I`YTM~g#I7~l|BYQRp zG!oI%`GaY6ME$|EzyI9>`_ONL?6>vPw4QClG^a<@EL?0k2~--@!8Qr7O$7GkuSv^o zn&$9;nuWt~ounv@=`>pe%@(5hhN9UrO+TLA%o+1l1i2`q{EDu-g;SWj>$0G0#*@IK z2KaVqyzPYkeTBZ=G~RZ{#-pj|kR3^8@t$NFyhu;#Vue zuX}?e{yU_REf9I8cI2#PwwD5ZDTA^{X;s%__ZkgGJ){)mMwf z^{clT*RQ@-ykW1C>sQ;Ov1mBjtwz)`c4?nvr~-gv=&*ClvwJ;o%h@=dK2(gSkJS!3 zUv+xSNuzLEmkcq3<#=K_9$B7O);!+faV8zxXxuV#tY6Q@JR+Ef1fQyrea$@m*m9!C zi?8AlMn94TuwkDp66K&>t2)!#vP7)BSVujZ2Qp_P>^TbdY|&6^#81GS?Q|5wK%sy? z+#C(6SpkVMVIVD|>@9o$H4l8d21m^7rGUs89Ylg6MGlT3B1LH;wv)FEF`TGDKC9of=Y&~k_&ufyyaGRv4zCx$LN1gWp>>!%o zDViOYZn($QwT1&+l;`;s9rq-sFfW#q=$h#y@VEiKOJ2{qi_l#Qr0sT@mmKbLe97U0 zxIYr;;fK(KqUqB!<{25#6RPgSZ`70d^Q>;9MX<*Qi6C3%Ej(RKfF?7GS1 zn&~9(sKLEfUJbU^h1L6lB42A>4Yt7Mo7;Oc-2u3a&eetFcZt(L0@912!4MFr9>$ zxJpmbF9ggl2d$f$p`y>#=Jg~FUxb8 zCs&39sJ>370)K4ny}WuN`|s#+CS>4I1>gdJzvK!)4N__iZkC0@-~F{LD9GhEe8n%8 z;)8@{=^d~Xul|V&BJOK>ntrVJP1W_vpRYaNd3b!1j|w=Z1?~e7zZX2SULH8bwri*- zKVh{)j|>bqWt4mmmAq3Sh@Xyi4-H%)CJy%S_WsSpIr)9x5LlsKSkFVd-wFT@<*$E304raB87dl z(|Qf>%jg3)rwdOMDSS-y847}*mz+NaY5+27<<@lcJ^*@JbzH@!O$YX$RDO)DwE`L4 zcT1XraXGVWMr{961i zf$ymJwc^pK`H7E)R1sshrAyuiKtE^jh>A;_jvE7)8{=wamyw5WPZLn?o3ZTs6$3rm zKHUuX+4i{~3xp4uiCchVsM(fg=>up$lG%%-2l-L|4qE_6X7|g8<7VWuFtT4o=AU=S zPyLhgWxRnq(j}(sdol72Dl-4HLe7!t9$%i=veQpjHVzAtq4H-LEcIp20iQTzvqINR?Dn{AlBxTgsFa+-hX>>g@(a4N}~pC~D+%caG!tDJiH0$=G8W z1GS*VNb#SFf*&{S)U`o#C?%uDM$#Fe=nv83l4mqX!^+18=OaFPR7EVkD;=30;f#-L z_Nln)5zY>?kLAX=THBD3Ywk`HP}!d(hHDgqcye#Lb;w8eI&K~a#SKD2jB7A`0FM#M zqY6bn%h+j?z{uPPWW<4c(rM@exQ`;gts=`uSm(n4WPBN~@)zm2l>SF4^6}?L>&b^l z=Ny@yg+|9~3~U@TWbn~Uh&Snp$N>fMCO;QAZxCok6?WOZ=^XR{yh_1;q=JiW2ZxKy z3}A4rCCKoD_oXqYDn2BTT?#}zjW^vAkw`;f-lRKPTfNQg zoo(Kw9p2_TZ)dZ2Q7u*@m0;RI3*&2PYfxbhIcQ-n@V2&4Ns96ng4&U{wY5c9yg0AA zO)d55c6n%CrQ2Fs+Z&n}Q8K3IOWE7(ZC&(r(k#iB=E7ECMIr0SmuzE0v$vDoPQZud zRk^)IL^!vlvAvcX>EU^c&{9|1*xBOqw$`>cw2027G+*LMwzICKqgmwUhMeH4^@*d`h>p8g}_~p0#zOd?s(&O&y(WUvC!2wDNqawl_3+ zJC}CUHa4`2hFOtU_11<(i@dF!_1<=GT|19Uj?7yGH6WRhSIN$WwRP=$9QbVBlv}-R zZ5^%R_uUYiO@q%tHt620x!K@%CDu zsr-e!DSMl!=a!XPnK$9ZtzK`Z=msZc{fh@9ihlh3(!mIjZmP!|G}ibj)qF|w(Qb;F=)Y`DN%-`VPIYpCz2Z6xoUkgotO z3(oP1nT3TN&2?%3T$L~VjKfN2-C}Ru5-P%+e1*^s0iCstwXIDgU!5;`IcCtb=jKbh zzNMvA)18--F3rn|)yz)sxisIDerBr_tukeZc|fJ3U@RwX>K{MnWS@@pc2yRH@0Pkwsf@CnUjn7 zW7!DxPA=kq3lzEzQkz zF4eiPwxhAVb4f#Uz0ut8=Uj8Eog4zw>`Qw~=c3k@j^=ubom<^Gh>Z*sIk#$c7&)W# z|7TT>rN%j)W-5AaEuM=Ww3WB&&6bY8$m_^UrgSX{Ix>hUxPSy5)w?NJM}m$j(G+YZ z!8}$^ttfMD3k6v#yjB!Cw>5#RiVK8dZqxr+6>CKvbDQnYs<=QX<~GltRk2Pe<~F^b zRk4;6ncKYn6q156w`u+Cl3eiIru4H)E?~*r=JK;j)=JIXX796Vw#^mE%x%s-yW~6} zncGZ#cFDP{ncEEg6q?kpGQ-Id=IHMjL%&p|3(Z=zcUtKneN?>kt*x}!2yjMMnN%0mxQ!GdTz+>|l7>5Uwu zrZ;6=Zh~X~XXVuz$FhUeI3^c1-AE?5p!sejlVheEOX+&if9Kv<#Ed50Y||O>_hKi# z_Z-nG7QC5j&!UU2^oLWZI>D+ThpOqxMaF%Xg`MK2g(Wg95sAnhIcry>-MbFO?$U$P z2WdgH&ZnCFlIPAROEB(rMh{M}lO-T`H@<^kLj90Gz#UDV5BYlev~F#fqviRSuSZMw zXEDxXp8GRBSh^z{9o7n>%@it^}@RVF$q3PG+=+gW#C>;B;?V5UqO~VHf4Od&?4xySK4})4gR0$lcr6 z!7riSy^VfT90Bv(z3JuCy0>wTmgnwGkCyJF%v`gVS+Z)~1&EI3PTu zKRE3zGm_Tms<~`=Zgf*c?ZW%EyWS(2b zq=@O}F~|{fKl*2F9_G`;px9k=a2kghM{61*T&_GfjqLHbVN4vHhLJrcH;b|VlX7Z} zqVnK0ii|?0o5TbcFwadQBVM{el-{5nFQBUcpaAf{A}bV0+VO}#JSPxKL3w){!05?9 zbE>}S09CLkS{djK&Iv?&W1+BJ*&Ur*HE&+k+%qaq2v?qv=<&zxU}fCy_IHH<72LXB zRYN3{4Ee*Mi*2P^IbWz-^x&`o%PO-YD**=RVWmG`0+1mQi$?=?BGE!W?U+zspEzBY z*(hZ;lFUDr0F=k319EGvH)&<2!3*@!0v}eWng3vv9+exwY1eV2}?2p-}SJ@X;8J>!g6I7rP6%f}rEUPRAU?tWT z!D~K%vWs}5WGTQAaj?h-phi9AT>$+T z-s=I^P|*?5R1&Oy@iP#6`%Cb=X%R1(e9yuog?ni9l9J_JEvY12YrXVf3Al%bFD~h| z6A6E}Eq5K}UEl355&b_rV_^$(553h_K2icu5`rI4kKrB~>@T0dckFl^Hd>V%i@-fJ zatT0rrHA&rh4)+2U%m|A!Ts*!{f2SBL3}p^_wjxM{ZKwG-uffI^=@Bz>0tmR;@Ahz zS)cxAF-E?)yawOC5dOk+6Maw~6K}o9Z@u0J<-_t#kXc{b{%M==i%n3>`lVLviP#tWB(&y#8_dADE<~Ies7y7{uV0mR@}M}c0IpyF?#;xBEN#oyxkTOGEc+peexa-w4#Q5OH^?8U!T6~EvU`EcfJcH%6u zqAcI=epya>*7sW1>IXeAh}g=6PvVv`;fJaW(uDX#jZe_WR%KX_99XY@Gk!sTGcMgo zE_gf5M-SGpPQJ$jCwBmpT^^eYu+BB>8IHEN(BO+h{naE;T#IPt45F(%i z6$}Up$`X(z3PKRjD4?zRF|psj9?p5T>$>jcoO3^C0{JGU^t(ZX zl|LjpF-1~KX*6lQ&cP|6avo3vF!lJkKoKfc=KyWE!+5~I4d^*ASxzh=fAwHi|Dr(_ zSE%7!d=T>5KN=w?@Lx}V=o; zCH&vqd-Dp5a)$t;MHTz%Tyzky=bwy#lUT6mpA5Q5ELcj?;qf&&x+xyT(c{Fqc%as6 z=ioW=HF(-46|ORR{-$6^)~|k-7tEnH{_@|;T&we<_T-}l-TZb%cOehX%MT5vw5%MW z9#uVfo>ko;`FR#U<$^|HTq*M_^S-L}^4{d;SNxp({vm$WH9hQ8GB%s1VPduJ>IAmwMq^e@R7@(&~9?L%oY`Z;zQ=l-z2iVeWHs={mVS9=*V!_FPK%@^f3j zl8C+QCG!g<^9v7|U*LuJSu(#Ux&x^^7IicA)*L-Lx%5k1D`YY{5_)b(kRiR!+~?%d zujTq?laaqRbz8vF$lmIubBofs#nQ7<|7@J|FQA-K(l0TcyO#a}y?oP>;H@#k|22oQ z|6@YGMs6?)mde|rRWE{l-6MBj0j!o`F0 zyol8qi#s41@rm!ej6Ct;S!ke#0ykn@mV{LPE zPze(AwA%t!g6j8$k4W*9Pqlc;=Mm#6A70+}FUDz~^4Xa>>FwEi1k|ZMAzv9ySpFw8 zm7nOF)(kr;e$AZ*arI6w@>vG?EPjugaTX*0jYU4ockp(2TY1zay**oxKtAVdkS>-fx+_wBI@YtoS#S35&!$$ioalG7bNQVbkw0^7EQE zAxa(aQxs4#(=yq!3#pU-M|n=cebfmxG=IqpNsXWXKP<8exM)R&MEzbbnQlU+8_4v$ zlL!^bZh$!GPUFwr1bulVEd_Ak*R*IIrmPppnyaH)l- z9p}iF$Mxi!h8E=p3-bzsg;uB9eS*cu#=k-Ix&eAU1HE#G77^V5&fBeGHwdD5B&`+< zhtf@#T?S3cBJPq8a_4o4Rx+J*< zb8~Z;->>1~mQwuz0VCAz_I1wBA-WsctNmTZ`ge;+u$h`dza}R)kUQjoA^k%=E&8mFuJu*M4f=^8+FpBx((US~o*2@bwK6!f$*3 zKc*h^z@X~ZlvIdzCh%%Pe`1(mg5i?@;;=xkdK*wI{tI&-1a$^L&tb=G{b{i-_j= zkS5+kD~uKtzWA?6EqBki_86`M>H+`6jjJ7X*lgZMwoLoh zZrE_33#PO`+>Kc;=EFV6mnO^lLCt^X9l-~N^bgsW#hSb{U0<5szXfa)%V!SJ$`d$)!mj^Zt%Z6TgFL;=6w(>RgaR^qrTo9BOwDQK!N@ zqVM?cWl0>~*HK89{qr^iX4yZSK;DqTBKm{OicA0D1PbZ9gHGc^WW_^HpoqRFUnR>P za_-G7;!&{gP1y+f(ubS^i?5I_y(R~}@rN7?+BfqAkiIV?+nxvApPv!`xY{qsojkf+ zzMs`U=nT%wH?6t{-H=}TEpzE*0|V3p08>grm|I+dVGN&Roq{6jDfnU!amKk)5>D-d zNk&wYrP&$Eu}tnjI=g@zcQfcI7uVCB&F9#e2H0OBYN!1I9uc!VDXwI({Ilw>-2 z!9W3pa5;}S7akiI;4+N+#};ozTQBYbzRo#?MMMLD{AD0795PUwhtZ6LdJzo(vP-jx zIu(S93W)~1f35gZPGJ#4zZVzyOGZV|6QXvCs<5l8LU*`ctcVg7PGn;r}dM98^L4#Ge6CgLES->jXdElz{ z)VjaPr+llwq&6ap@H@rY)sb^)$D(5HyYM)Fva_oTbJJ@rx!U$#lDD&)-VR>B>~Gxk zb^r;ZDZFk6uNN$@+a*XVqfLpVlw=8yJ8*kSN#Fkmw(4c!XLt0{=*u+vg2sM}lbg^} z^zRE;{*rpH4`Q-?e!?n^I$^qb@Ns0kSTY6f3k|-W7JgM{FO5Fza(&=(mkc0wxjx|Z z7c_XfM13$_DnUCy)CZK-qEWyO*ypn!wWqTKj05(OiCA^92+&6yFdpIT$@e0AVhWcj zrWCB0qo0Za)=&8uK(>o!}7tGZpJ7xD(YOOn|n}+q<`H0H>9MHb6Ej?{r=D_UW^ZNFagJ; zkRF~l4~vS@QnhUUIFKCL_Zu z(KwN497}Y2F0n-8SfcT01&GG6B5$Krz>19XAvOB~MiIH$Us9zZKTZ{?C~m6AxP&4( z#%bz{&l9As*vY533Q|)HpNXp=GyW}s&OX!23X%O?uOP!^f9i0Spih7Z5)5Yv3eXY> zhO-3ESqX;g@)2pyn-7M64dtrHd6X+7PCh-Rl*`!%9#hJX|NDHPr=^1p9)U+RTbd=9K)11o_e9yMDlc{5bx${%Afk<{o3 zbmtER21)kiUPLRgn#>_u$u-3f;0}QzG%@w>cCU$tl|C69Y9nr`GU}nvaq{zMl@IG9 z)RNr_J)QG?d5sgeKRB?E-p~h>Mw41Sd@U7r_TH9A>J{=PSugAsXWz}ve#gDy?7P|7 z$5=YMHJnF9F^^u!WO@CNPkYp5OOy47^Au;8*IIZPS9xLXkR-LkhdIg{fEgm%!JtzH z5osRZ!Fl|8bOdl3<5~zU3E3T-$L9<(R@!k+9^auf>v*bWXu`unRO6FrM^ZJ&e{GIl zmS5Qqygc6(p6@cx&jCF|^e*$fCQpp>F4M|IOK82znP^&`p(Qu_OR98udRJ+o{#|5g z)gj?*RqNFxn_|A+dOa4#pd9}Cux8S7A>3*f)5gDWjWOR#>-SU<8@KW3~c zC0R) z4`ni|Ur#{TSB9?jYCJB*hiyRPQm}PnDqdaG|6bfiG>$i2??9hOIW7fr!VW=$NG?bz z$!=~)SS(dP_F@{J!c+S3DHsZF3S!$h(RfBU94+(Fh{mVj3qTe61mSo_*kBRLBm5;X z-MBlRHRPo_j6YeMr8X!^nKMc&=LW?@JyR2L^7&;GQjR>2naKKxJG-~Q|GCm=8YNTo zPJG6{@N!$zD6tB~`^c*#Ldry`GFIxE0#T}rmC8p;BBU$@OZ(^1!N{pB1fBWt6J@GP3^6gAAI>$jAk8*hik$)~Pbr!S1(p{l!3(~n5g}g^45Q5Jz08)R`0&kQ zNeaGMToJeE9+QvH+*QcC(d`ScQtk=&<;CTUwh8gLaq^@3a` z@-JhBwgFI>XclXk27UbJUKT5a#R_Jz3K+vgE0~3E2v_cUp^aj9CfeduE7++XK!;FT!A`Ych@m7; zz!X?0tuRgoioM9ULMg_g9E(-jS=iTHWmAEBp=b9>4JNUoEb-ni)4( z{Hwiy)-a&tN{{gL-wr9bKO`?VFRg9z^3C${&HVD~3cY^5nf?5J^ohco*=gn%8inNo z@$)STupeExi-@0lAR1^{zx3*}UHoG^`^P@O2@`E+z~3$Mdii$t^8V-(z}p#cX^{ae zk4Sj=c9odDdDaf9-xlNS=`J@tx|Z#>aOmLG|$uw8=icOZk?IkAI-ICgtN;elT}Wh0_qv zzR@edCn-|m{3Hc6&X!@!F^Y&jNx`!AhOi;@Ny=x9TeQkUp;&tK4&V@#3+!WtDo9yhp~tk$#>)jr3yzRm|jwM*1;< zT4K44^h+&T*0{o4*SMqnnEv;C8n;50atq9q;}^JD1V^nfu~%rEm&Q>lz8Nm=0Y;|C+>Diq zj3lQtjAXfMIP!A$v<6ku%iXW@ww{(t=w>gcMwzZRGK-VI9Uy9C7QG%MQWlNOBJV-N zqLI@%as^5(1~sRGuM~CCi(N*|A0-UJ)LXnr;}REfcCs>H3lPQGr*@zvddK}duYbrO zjr;K(t~qn21RjH<>UUl|6C?yCa0uM=5V1E*V06RL3J^_Tbg!aSz}_%{(S2#r$<2vD zWP*Bptt@mWX>(LEg#(>zC*T{{_5baKKULsQW%yVAgBbo)hCk>ZHiD;e1V4k00MS(D zvmLDh<};Nexc$Rs@;y}}xHcjS(y2-yo(usy*RY7=zxN`4*6+hI?^(`scRWm#Smr&; z)-FMx0DP7OUkiY|nLsW`NorGzXKG=QWM+90Jug~5&sv_v+w+N@XMF!v3@y#v`FTGU zc@Lpa@IBA?UMx25DvwAk@}5@#>%}4FX)~$%rPm=W@Qgor2~-Gy3MNnoc=<#XOyKf} znNn2vF{K!Ywxst8c8)3N5H=O;4x1y!9V*lvYIH4Dq3~lUNi1Po@mj2aD*dwj+Lp}n z3;A1@Uw;^!H_-cO)X>ZLqnGAtzf2rf`!R9o7S)NvYCk3pcSMa5R{PDw!R@CqU3$Ab z2Q!5=emheLoqJm9;cw~#nlV%OdOkcB_qJ@xny}g_iE$^#ZV8hj+R351)^gg((qn!d zC{n`7CB=U&HiNs?f}(yRmCR;p#ItJHv(5rsh^U64{#Oj4QG|&?4SUl4=m_96CJOV> z62GcpzuFfw2C7lN8l}sz8YYK5Kwfsq6qo*g*!8lkvi|I4w@uh>V|G7yggA+AV|IT- zD?qf3$;?2jfOFmpO5%SxVjBGOy-)zQg?*DM4o|Z*z6E<7Kk+v}Yj>8Zg zL|YjDZ_pC_TNr=wFoS;!$1(P`cswhaO@qkyUbI|XG|1}z;??^@LHHpfTmno1q7ND2 zL9_(nhm7#Mj~av@GD57zoI={?pC7`OhfF6(`}IUT>Si=ub95xl+l_5wla0ACH@2~{ zZEv!%Hs-{3HnweB6Wg}6!8iN<&iBt$bx)r;eR`_vKF__ko;vnQJ_f?if%_tM(52;g zjaoVqf9=nIv}ei*+!cgf`Tg-mQ~UX4|0y{y*!X+>T97*U-)UjR=YOcLdF4la$ zk`EO|(IF$dMafJNo`L;$N)Gg=MP6vBCI}G!f!~eS9qvqhyz=drs~^^Cx9VVx64@1L z*^;?Wt&Up?-}EN1plvf3mlMaN{WiE-*7=-AQGwiqPiK>E^bj!O5pwW0_|y3NG;?_< zFy8c6NW!Es2(+hax^h4-$!qqG>0Q?F1c|Fef_x>4v4!f7?EDx@((Za;N)9n{9m7c& z@GNFz8~;Z1^Ia$_O+-1-_nAsRiN;tL1s~Qxy@Xd@RJSkG5`ON#tI-sjwmJ3_0Mu73 z;rrA&B$dhjc+m#cc!>5p@gJVxm~sC^J~c9oqz568LBd~sic z=)O&f)c=#KsBg39(l~!(5_}kFY^!4#{i<2-F@m;Ao=rvGxr_ z>iXgRM6ha`jh4(J;qPyD>eU_FRcwx}du|HTsdjclMzd5%9m7MLjqqxGtXj%XP-N2{ zVeQ~+b=W;BMlF}%BdNwQ$e9b!*#5OVPAAMI#vV$_k!yC8`Agey%41TBtbFauA_J~o z9`MVe<&ac<9N&Tg#!@D0=*9RY;;-oib7Tr{eaeck66=Gq)ez%mUE~#!KfFfi!)Wi6 z2k6cE)5Me5#tH(H8VidOazmxe611+djyRU}ZOcUY&6M^}zSCaPOcgJO_``GtS=2&< z5Y^$(`X-1Suq>it)hwO&O2mx@CXEiFDHOR&+PU9Y35cLGo%C(|MMlb$s17=c;K_<; zk2vz(Y7@TZEie?^E2*6al}2n`GSM=*2B;Qh?mg$#76r?dDhg(bb@2<1YtG_7d5k*5 z<*xTRukm00X%9a6ICb2U)xq*6$~@3>!FeN%>>j?D? z4BB|Wc!mFqrer0alYch_j>|RP>e_D98PVoAaRKU!`93Ccfi`l%9J*UeL{6n;Cf{mt zN{U2QZ{V-MCZd?OBu|&*R-T;4a(C=4cA{_|32X$9g%?$_U6setuWtz>mJhTx4_x=l z9rv_Hg-1YYZJ#mig^xMzXg(Oo5;o7lS6D4x#WsNgPa=BP>JePsK*asyeW1|- zJu!NxoR{jrzNTW!brdgF+C+lYH0yh^5-${Rd?2mhxnV#O)-ABL5aZx+SK z$7t=D2j}y~fZ9kta9YWaj_s9SbqiY9j76>yjX^PYuB+Yz3m8g!Or^B0ee4~Da&cv` z9U;w$v>4RY!#W>2@hLQ>iKR@pbnK;t$OqC$r`-(w(hO$iK^xT`!Q%IctR-P>l4=Jp zuivO+WU#r73H&WrqtKraI?GgJ6a?h$Y3~B+N(g85y>RTgg154izCI z7OLewnw#{el{gRT^`0sGaX%b5%2OhVKe$`lD4nKk8z_$|?8EVa3eI7P5fFH;-%zopDnHO8KPMQ@Ga+IbxFd zz}JT66Lc_jc=HYaGh4E0aT*gPhnz$<--FcLC6Dx-FI{Z;ogUYO{=N>2?dyXwKb2|> z%fcImaoKR{sdoc}*l_BKKm$VR3X6i)Mh^SLzWIcr*_4Z1nly`YDn~xv3)AG{oKuN? z-+}B+2^0SNCtr9f>1#YNMnrbz_vo=f^Ktk7@}hEqpZukY;+)dF@tE&K`CX0r`9;5W z?^+CG)Dtcidj&Sc-_X6zz|$J_)V2LTim|9R!NQHU9Y8(C?LWD(AagLGI-{|#!UGp9x<6giycJR1>?WJRd6 z^1XssAqFMJdBsYs$mZE`%Fvxf#pdvUid5;-c5~WBu}FCg($?DaNb%Eo{Wv|EHG0Pw zy+w_EEolOysu)F$);tOdYzU5&My~Wa(s0UYJOrqK>8AJ>H)TkZx#OMNf*qo-dk5W8 zWR~b`mx9uHUP|-;+(JwE6mi=(`R%@kF>wUuXwL)Vrm6{^l;iN(5}iVxt+K0MefJpM z(4*h+RkF`+Cx$?q^y+g~M{pRJ*)(}Za9?$eIdsBTf&t4XE{qxw{vEI52%3G-u~)D~ z^iaD{C5`UX&4?=b(=jw3N53vA^XnNCVg!B;!MFBnyF^#`5vxHzTe}!B(`LKEbCpR~ zPJl|7B~ka|m~xN@FmN5*VNya8tk`J1cm@M}u{PiS8wW&%ie%-?;0KRc#n&z_t9q>N z;^i5ch|6b6<1o(K3>MRyk1_ez+%i*FhzF*5CZuHR!36y=UhNx{O`%M0p*$d<7f12XJrMDCQWIN@SQZP~28&i- z30n|xUKI9~!AHX86noWZ2t#*pp1w1b?UXXH!8UqI~LIN*;O(t_hNSGWf7s2=paXXLS2vgZbIUdRr8{vD4UQbZpCBX0Au#3qThfI z;DoevgH#Elfwb)AUwCzdS$}o~@ss#Mf&|FIIsUfo)@7qj`0=*m`E`FOAp=!pq?<4c zu0&n-NvP#gjIZxf5-CNYn;>JhaNj81r2Ng|v`@_vMmJ;OA?%97*VDkfAqgP3F`ZDe zhJLT_|IxiQgGh1jN8TDB#7gPKOg|rVK`i%1RMm&0Ab|8H{|iSHH0b`+^DzbwTxp?byWz+rekJ zHp<-HM8rQ-ye6Y){a6iIi#>%8YJ$GU)=WF^qEo@beH9`XN`wqToT1sip@fA)1tUex z^3G3UrY1GAXQQ|e!UiMEy*bhE3B= z?=8Xr!FaU(;XP#QZTA8AInNw-10P2M7b+*1nR-B^Pkk&-t&FdnAq>v?*Kc`84~I_Y z*zW3tW^oO2>tBjm-@dxN$O_OGHQ==c+{f#yMl3M^mu@a25DgZ4*+^~FKmQ4xVJ#A> z>1Wu@qtkMVqD+6;<~HkXHQ7qBx25qS!PVy;0@b^C-n^N`Cnk0CpjHSxTtrx zOI~4yds$FdFs;kd!*t5a9y6#dGnung>v+lbQ8+db7UAc#_&fPaQ(2OeuE0XPVsQ5> z^Lm%Dvge}ZdtuYix2*(Cq7N=MY-Xq(S(2ZA=hUqq1SH1q|7L*yjj0MFzX-upMr{`J zp3pJ;v1$>1y_ZalzlYXfi@YQK;Xf65j0sR=9cr_P^4UkHrCfAV#NAMF`Q;X zGlI!%m#Fl!?xTvTs6Y4Z5c8pmMBXC9u_E}y3J3Pu z;`dFKP(I$D$*l44$C%o(E38+3IA0RHouEY|1%gzII(iLyVOw?7mU~}CsAH0E_DBM} zn>j8bO4hWi+hjoxUf)QF`4{W>)-MS~QU|HfWcSf(ER$+elj1~b0jG+6t}Q>}vjX}R z6qfsNEPAbo!h@l{TfA6ICcRPp^dII)YE&+@xg`tv36c&atj}`cs4+$Sbf=po8fs@i z_%jEH1hpYd2;y$$_yK+FAMr|yk?dz$>C?glU*Y=2Ks}r6qmkoaPBPN3cHuz}U*PM3 zq&$^JQp+zLKJkFm7R<0-mToO^;al0J|eAY&;p* z8LFYkGSECH?`dZRvIrChHpqLq8*Y`kEtzNlxd^NVhXH;Ipb+-UPBS=XU(CJtiLQfR z)b?Z|B#_!VYMbGY%HgWNMwOuqGkDa!jh{4J)Gq9`DTS0tgA$I5V(Ir#Is)pLq0<$a zD1kY~n6|Cia+niP5{?Pr)cPtbmSeGx;{#w^srGtEqxs86eJe0MIRpN!Ukvl*z4VTG zi*4{Q{4FDLZHC%f-n3C-f~|`(rZ+&>_-CH|wV3A4*=Iq~E`MRfd~aisRX*qLlmR0e zlOCxgbxihReH6M|W%h;jREQN%pjquYVPm^?i~{lGe8w5Mebb}*zq|O>g&$5{Di-<{ z`HB5wo})}TNhq1w7dVX>i2H&}pPP||*D;c+kgwR_9oKlyzhy~_OYsC0pU4q1n=!4p z&-2u>{a{^t>v~~jaZh8J5+7gvYu5Bc4I0}_Y(oHCBngio&@W6JhTt>uWpmI|F%wp- zly|14ARZn7TDK50KRhuQEanxZ+i_Q=Lf3%F&Mld4G|dKvN7>^ZinmdSNYEY-6-*~T zTQ8M3F#``m5-4}LSR>Y+`gob^dM9mw1JqG6#rF<0&hpZSl`VoN02^!3C zna+O5>8ZHhrop9Z(FYC)pnqGy+=$|@iN4|LP05;CHQho!W)aU&N(E~++_jVm#YwGF zkCaF$uGOhl`Zztt?EGCh72fp2$#a zOeGo{6CK-#i^v~WP_$J#H}3k((aq$y9VCs2Mx(w#H+2AE9%J^X0<&G`*sfXPY+Uv_ z;o4ya+E3Ovm(3OnD1hB9!uRIjEZm6$J8!qnV^GITKm|02C++-Mw{c2>x#AS7dVWyf zaKtqKDB4E#?Nd6ugWPsen6d8w4cxnh%#?paS$|*F?phkt|Ey{$vOPVrzagxb>dZLY zafixmv8h+g6>uH$QqD1ZwvF%XcVeg1kDKa53`!{L}i_7p3Z#@5xsSq_MNV{cFCdK z9`{9?>v)bt7n4BHb8UV$*JQR5?D($fY{yh?*%4m1X4?G3xtZhhC4DEw?#(OyD`Qjs zJf}LdMXmhN8XkR@Uyzj-;u}{VEu|YJ%XJtm95W=%N0k(5sabKVH+6=t6>AtE2n33 zxF+8ZhirAYMkAMU#lZkkbtL8wx!)X(l-_&%L2b;_0gCr17X4FWELrQzTZ3Zw_Foku z9SGl@pc4~UA9q)bCLstTnb*=`w6WzK%EyxPHIKxniwVd@FkpU%!;xqM#XRwW5ATM4 zQ}k_#{rc#keDBtX5>~c9cG*oIA-zt)&@E1BMM`+?UriWZ6j1D}3G|bNtg_#zf*mZ zbF}2F(@<7H!6qD(Qy}-fKkkc&a93;`6KoqAP(;EPfdRfRxP#+*)l9^URON+G8`L-; zXVy+Y?eryM1RcsQh#d6gl&Lp$Z2FdK_YL)iodj7q%D(8w-Y?Nbj|grLUnT2WHmB_4 zIA$@(ondYdIe4at57Bcb*%}4DonW8w=wJ~EIM1{*7`T^n40%3rVAnKvL3XbwLCV`m z)NV%V=V-PMNBS10T2f~m!*7dwS}+pMh=4vB^c!_uSyOU4tutlqhvv10ZnA9Avlp>v z8D%Raz>$=}6jB9#SQp2ab$Vqfely`76adw6CRs;eZYJ&dO2*T(t}iCLeg)QUK*R&V z-Feu2aUy6?Z;D#;_x*-r&lh(7eFC-|QU=Er2`I_%=_N+ELWfz$4{(>a!$u_7sR+AkkTZ zRc-U*x5E%D{UiQ#&`g=O(vg~5l`Tugct&86Xbl)pcQd#FnIU|$wF7xv%l_TBDndDe z-~3LybcJJXUi}*-W;!91zDS7FkTBDq!n!kS+N-wL2dCXX zHnekuA?kjXv~xNk>foq)vT6GK$2T*ST+|{)R>m4?q-vhaj2cai=v*J+xt2GjUpyky zYBsP*pOh~c=g6sQJlm*BYij#*6N^An4;7i}xIo3JI!%OrS6};csrd-_J^YI`)#p7z z0_=Xkp?AG;3Z^EE!Ud_4sQI6@0nW8$P91PkxrQiVSC0*y$n_zk$L?dy*fqTUy=ubP zTR5GJ)ghQZZIYAKMA!!K45cgRPFbNV;~9Ez+JN18#t?Zm-HKE3hREhW9~c*~5jC|A zxDMxt`J&wCyOrKds`x0kP!k-5+>NrJtzJRbi;lt1>Nln16kBT%eVakPhWayyCh`v^ANS1tY=+d?%LF3BXjdC)vo z{OtHccub{858Xxfp^S&0$B1Xr&+vGET*cN3)vLelLze094(?5K<__*30S?4(N=As7 z$lY+g_oSZZyYA28cqm=cG?M$Qp8L(n%9se5HKrU)%?6m_0G1ORvtNWe1p2#OfG~-3q1ML?ptd%g$DfL)q!5^M*QKc z%^+gNA5raaNvkLhBt_rxhV+6cSLKgm4e{L2IT`uiLeOQhV`)HF9K(P7{*?2#&P3pn z@u8dQBZXl;F8QIGtKGwSlQNH8Z039bv5){rv0xSURIX+KVbG3qtW0Al>~rz`rMY*D z@#ihlkFo-~RFB#6{kBM3K&8pWq7VV0$r+w<iXudZ88lK}{O9wenxckVesXksgbGbP- zH<}OW`O61n9kO8Ju;{->-vX@1sn&_+eTov}mI4Y^ETEdDyza?1TRraczy<9TpDN;@ z*MO1CCfPyBQtpYA>tOIVVz)$QHFdC$%i^gk1&Qm~17H*axg$t<&st1%n8x>*w)Z#= z7}FaH%u@#W*d#o?++Rh?{f_LZ@s1)L2vo)=U8B4M7#Pe#69B6QbrflyQ$nT6wDy5q z$+NPbzr}2szAmN@1B@zJ%;&*%!Ynmyj=f%VIAKw2qP{$9{4<^eD2mC3A=yL$T0R)+ z#qbxkS#z~WQEj6BK#KQ~MARn(x0dr(kVCKvL-+W_@Cv55B&QrWm-MYV@%khbue@e;Ai*0Rgc@q8G0d#CkcCWJ+nK5a<| zM978y^Sfc{aP|ejSu^DhShwXj?>Yr!%`q`QQt(reGFa2WIK(9DuUAJ_RkO_&`!fjL z^N?>uBp<)>klQ^qEj+lyRH*?fUs&LN!l=5^GqrGu&vR+b8+6Kl32|VZmz+UB>m2<- z52V{>_D=ZYi&D}N6rWL9;@~Of6X{P)Yn{LhR$O~>QBgfdZKQ+^aQ1k|n}M2Gss?{l_c68nheOthGD+)v_IUN+jDGf_ zsKjztTonR6xqYY;+RiZQ>4bZi$yC0`C3mV&^+jS_uLHfM5ZD5jZ^z;p13HVfzMsL# z$IVs9Fa>|PRt8$9dV;(69lcFe9XvP10o`Yr6q$J-O`^-Lhfhb=n8;4Q$OxLsfB!7Fx}Mo6bhaV0 zw@%N+%a_D*O1fNxYrSjyD*+w3QjtBhHPmv=gXjcO5fRDy1$gx~ndrPXL%39YHen*q zxl>mMXN~|Kn6CqEIc$H`GmyPnNeT-LFiJY=m3qyt2iiRxiLlSU*aiOl7&Ko|a7k1W z03_=Lf=>MK!uAQc1y#41%}bPAj$csXL{EmnWi(5mpeR9JU3KtK%E6ka#(z-LX^~h+ zIHuT}N^oUrsFh=q)PWgF$V`6B6_v`|7fXDsiqp>a;|QOxP)Hvr5Pajd()=zQ(YPQN zBz>xt44d?1`oVOFmB>fL)=9@S%#I|a zIaaZ1J8?|5kJe7!>~Pj$JhJQ_BrvJ^ez5@dmQ19&ddy!GYpDGbh}mJFRHzLa;zw>~ zxEjhoRenf6PgsxVPgOMiRI#uzmL2})`*by9qUWNn({d^Zq&A)~W>L52P){DNN%Cmr zE3ZW2I?(n`vulJeMYmUFS0LsuU(Hp9w3Fk-aj`gC=$u?I@{GQrESFCZx(+iDEA5`3 zpMpTQ0FS)Gw(RdS%7cEp6+Px4il4awB^MW;Nzp3cK2M)8roe2^ zIX2mPn#P;PQ|oGIi^4(O&qG2Vo{ijS5nG@348ur$cvr7}gV5XsK>O7vPlL#7@%+M- zB$>V?b~3=bFJQTCq4*69$y6a$U{1nnp2)j3m%9LzYzr*aV{3DBUeuNFN>r~FN>a-` zfYN)xyJ(CfT97E#DN`d&!5LQ1QFG%e0)LH!$-x|O$;%AO?o~y&Z2Max=XjyVbI=X% zGk%za9&}}iU|OG=iONftvi!9{>kPi#yx4kqHCEVxr}OP`MRsLOi%(-SNHt3}zK9jo zVsxu?eNxF*AVzkeF70I8y?XGqQKaVTk+b&1?F2W?eBJWl=+u8Du5WPXFnzct3horEChLbZpI3H+sSS zu3#T}pJ5={ah^HBeFOre^a<{#KWaVY6Qh9ozg|Q0PW5^$iuR$I^ugt{fHsc|UL^a$ zj0bY2OZ)&Yn7xmjr!eNH%-)tgOKF@;Ad1#C14!IAXO3gD#Ac4ezlg>B{nn*bF=0vl zedfG6{f}Ht_v!a0Xx)DJx%vxcl-||^IjufvM9~n?qAFG$+OE3zR;+HOv!Em-A9!sD zAIi0DlHC5kBhB$Q;nfw!3o7Xs^bynBW2YyBPti1=DDzz0_cKjV$)RxW+4P@)K@|cD}mLV_wd66fCuWAh^}~*tMYqC|#deLN2a?;xANwZ`jx58^ zL%(Anx@Ac5Rm54!jD#j3;Z{xkW6JAZ<0t#?R+xSM7^U4)(eI4Rv5YgGQR^o=4#Vm@ z!s5TFfuW)e5}95z0Wk>v9gp!ZdhJFdaV=+wQcg{8+D0w3^U7nNmw_MmqXgdPW7ql`Ih0ZQ%=k{9RVO{ z{bv3b8U(Gb$$_=o5uHPj7T*=GEp+Rrt&{75DMi`W;3+mHdq4q zsFPJ#I9ZxSZEYttE9iDdLnB`#!Bv^OALdfNF4Q)khxm>R?U%DLE491^S;_94)@0K} zwk=o>=bRzl7^s$1vlsh$fdD7S{+^YG3gs67`PWV80H}T0hz1#1@$LwtK<1cXmc!;# z(fLh!+0pxd?ALmQt)@?Glyp`H-+6u$>VJo&?qX?r{4Hyij;-C8|w-?2?Z^-eCx*ke| z4bJtr4_Lzd!Adc(RGYROh5Yjybz9%&iyMYTI_JPE3L|P(tYy3k3cHTcBr|4-!)ZKw zVq>WdcWFVd@dXFV30D?vND^j&#j<^e1oE77GAPrecqVfV{uUE*Dmcczhr_ft_Sp1O zZH4&TQb5qdADJO1pyVP?l5N)K>j+9Th)b4IpC4b%=v#<-?IYml@wi72L}8WM8Ec@= zyZq5<4RUQTcaHfPo|;A=)L9C|bp6qL=Vf|VGrm@{z5Xk#k}_WYydnD!ZLrsN;a&&E z$~6Jy0-PYQd6uPf`KdRkE^m1kvOrZNar~E87^L!BFTmK?U{!%U6Z3j`8c!@5p;pLy zvg#RB^};a@cuHlT8rxDx4rq>?HQbN_3aSsB*W(tsp-(z?+wLXeI=e=Y!+|;$8|IM1 z{a0uILCubJ;85U8UxRQGTX1<)#h1Pw_*o;h2wBC@WtxsHI!w_surl)wzCw8AMtvOu zX+%)&(`18+dcXEB_hH3Ay#sV$m`n5l);g7=&kg%+O<{vpRAz=kRz^^y7S@2&*&KC{ z$}WEuZBs|FOXut^;1)vRx~?pE`e0%51he(#;pyQ_O|A?M>k2*9@s_U0u1F*zbNWLOn{vN zrx7cZ<@86XwopJKp-hO!jj+GgD6@mOtf4yVgd}RZ7#Y{vgA?VN)|mP@9{YIOy{fPg z{rWs_XH7YjD|Wvx^o)p@8q#0-1`23(m!8DjVbUF?LB30IS$9>J9w?(%(t736QxZ%F zmBunuk1rD~ zk?Xb_2P$g#9OZ#XM08w|nySG_>vdE$ijif-_?FHYK zn~o~@$Gy2rnresl4D*oLQP7r7DRD#iuagvk>+hRDz2He~!a0-Xu>jtvA6)eXipT?) z!=k|y0>|nt;geX1(1Y4f<O>W?%qzKbZ2ikLf6YxfzG67G*O*$OeLI+r;85FgGF*n)|4 zeNxA+k@=?=sX``kngqfVN&)Fle?;T@6sDHM%Qv97$8Dy`o-qZ>QvQ0O)b1;cZw=~Z zpQ7Y4fnnHlr__Pc<_&I`P$nz@BltHCu?rWMGkw&F?L$;f4VjwN`s}cOd4WHRij}9X zkv5njX%1dKb&`v?Vkf*KYJ-|~gHiN7-*OQBwzQ`9AN@v1L>_LvV8r2wbdWE4>eo1E zWtO^!lFI>ze6Npfs*%gKUf}6$#Y#BgSPhe$wRZfKx_L>nKxbP&_On&HQJ!fR|4H3P zk4@mQu1YJr+r&zBa^k6smo@3#*OU$e=!N!8h@BN1nBh5p_!w6zCDzSv4f>``j8elv zqOfdh&%xp(9OQLUVO#vC!7QteD&HK!_@~5@Dywf(vXds=od>DzufWj+g;6ng9#}%p zKy-pY)J@LNQ;^$SMA%*-s4qyBLK`_aoVZCP(avsQ5)L7vg;;4wt%(EOiN4`40(2yN zMYe)(0`{8vqELvpxs?9Zp4}-^fm7*euxiC`m@nkhAE~%_w@4t`4L8+0iV_4i#i|GX zX4|Hp8;CY>%jW27MSG4b#*JaZAH)pp$C`-|e1bSW5KicUx<2cgQp9n_bZU{yLYj!| z4zIM@1T|*j`ZMED_pC5J2(c|c8UaS16}?zx$%T189?(|fu-xfQHJ z-=k2i)C13ic=2T5eEMu)LA9Opz~|VqCNZQdYssZq235h!j7$PL4wj4Oz^6s&Y$|J#RZK)%^O+jQKXoGKhLS$Y z4dM6(DPNj~tc0TS3x*v^E$5YAqxG+_t&PVZ_z=-ANL=|0y+3KNd(lKg;atK3jZWan z6ZuG$3V9OgdJW4|Lshv|3V9~}qt=|`fnmcFz^qu_7MY}AQWr3vDfjO_uqVH;8`WiezRu7bxfaP`njFsT| z@{8jIQV$Oh_(rUu9?+hpn5cV9E`7`&5J6y*%s^SBZ8Q+E)-^!&*-Oi7;1Pa6@N?`x zX3Yb>KZR%1FM6cUyfY=EtXY+EhhV{GwIr%#&KLsdAr|A&pgYYeu`a{!B@^@94u+Jx z;8eYsLH92qrR!`J*nM2sWCc;Bo`DV$mr`^qq(Bp<6PM1)f(7}4jrH(i?+jj}F)rvl z=rB&VzD!Ft?On$Vt-i(L%3(Y6np@dwhAie7$ZEu|4uh~*X~JUt;?ko`yaUI)%g5b( z@*NVJz1-xWQO)Q;10>O zT)D;^J8&uxZCLw6j!hvC)2>$sTXFa>FS+~|=sYyw-rLrvuB<@7Ow8Tq=N(rA)Wu#_ zoUBD`%z(+h`58-$n}j`D%nP+i=+tC94hME%a|QgR)$J#iyh#B^4-QHCkQDE$cY#zf z%k0*(cR`!N8Ngq`*(bf0Ll6dh%CGFBSYuv`?DQK>Bi>IDv3k5y8%rZzI8pw9t)4G$%6wZoVwD03d_!o;y${hRTPSCE=5O&cH^vdmJ!=C6#*vEz#ibDF z`4Im)*>0|zJ_AT~j9$%sTAS%xgp1vk_jvqc)5dwJt<|t?iL*C?t&A+vLfOwW{Fg>e zC+f!Wj?7w>IxNWV2oSfy^P=QTIJAx9qio|7a!Hk1m3ETy^6E?L8CN%Y%M7zX0i;@a zczV4;irnZgX~cH2%iwNNKto{Ee0eaQ6>P!_ueQ{kT+tT>()z&Bb1S1aS^JQA*1Rjj z3=(*rU{#aWDCG@LdN69aE86B)DOTAq5SzA-R9d0T)Y>Ux&y*l*L%aXT+R8hFfx13U z%nd^Xp4U0?h};l#0V>Rl$q)s5sfNm4ztcIUKBo57^)a!0$XPhz`b@Va^4So?o}4ZW_0c(VCNp2cMJ-%DH2Y8d@ei*aVuAX%z}* zAGG1Cx1hK2uG82&YP;S)Xk|?8cq>aPcs^<~yuBsS&fEH>7rRTZy)y8US=QH$kU1x= zw*^1T#}6_vrLX#I^q)d;kfmpJ+g2Ih2gMu zk27NUMy73TSi*M?PB`?5QxWVRim`vY3}BJVHwq8EWG&RebQD#A63-%58c}OoKzGtn zOq!bmWi%iP?GxN{=T2asxVGwB7}DP|D!PiRKJ4-by&61ESh)+_zYl;`JDZH0CAPnW z+Juiz!ZK`KK^~6ye2t2Tj%o4sIA^xzXGqW?%s_LARxE~gn3ah?t{^XV{v_Zw)DB6; zBZxuE&K#4H%bQDDB(F#~gQY*RP2$HA^XWRLKzzCy@?JK>g}xYv-jDj#(58aIbVfY9 z_U1{vq~ zR)=y-dwY840k7QknGhI@q0wx~Pczhu-=`L(?JU@Wbp0vwzLgNR9S5vVDp@I>fP?`F z5OJooDP#(oFq>7Yc|bIfoB<0-YFn#T5bT#f4wiGaOz)Z+3S_laQe@qBN96Uo(Jtab zQ9>~;3z`}L1dwgWc%Y3;FFOFQBP1R~oV{rH*H*DhX>8dAubEx zQiz^KM3HSe52v=jTvCb6yhp9)DA4$J@syO0;J<|L0Li8-af+K0&@9-yJJ9&i2l|hz z!a~I@W%&S?5$?}WM0xZ7P5>UMi1*>c>lTiyFi;QMXD!uGjB{t0L;mq*d}p4Vw1LDjcy{i*#+E$r$ z`gac+pF9K@D~#k0jxjqIYb-AO_3>aws5O3)W(btu3yisw|e7SdsY7w2mm8QCzSssc^J9_dK zNPbR?=DHQCT*dpr2hG!kHpU$qjeKM1~F$)-L1f6(_XerXceCDZHv^A2TM@HO&!9MHaLbq>2Lmf z0pBd3Zy_IdeEUcE_uiUFmVf+MZqhXd0}{SOscgqYk-$~x@3}p{YSdjq|p?7q$ zP>wGPOxHM%jzQWK2xPL2+$W!~2Q7Y@b?*;q__ClbAK;qwbhX!i!yL!IUq&N8EN<=od%D7~&oj~cp zoc@$9ro@5ynnK(TBgD_1#G-RI_@hbacgCM?WOvfMW_-_#NS}hZ=f}a+7}GqEvEt_u z>W6(b}DvE`+^czb`O9hD=HBYAQVQE9P-u*!GMowY<1mZ@^7sf z-}R~UIA<~p>X%e|KIUX9V!XL-0!&%aXi(XroO(|RJ743Rg${Onf|hu8F8Pp<*WCs> zIXBpud_bgLL+q~AHMqX^*l%1uWrsrpXo0e*Iw=Adaw#r4c?6B;s{l5Tb>PNRiMGjw zzqHy0GzV7SDdbdEfP7RQO9eN64I$83u!9g{Hk#e2z<4!i8zi}wj|@2- zU+m|me{`9e^)UT?utMsllE@_Oc0{>54pg%Ag^s?2&VW% zcGl5yI>_^2o7LHaMpb5!h@WC8#NwrSs+H+ALrrsre^4O%AF}8!)Q8uwTOR7F&a+$E zEO{w$!JWcLbfTxa*Q-J9*?%%Hnm&+OOZAJqt2cb5>8pkyr{n0KFwO{Ufcv?7Iaiag1q>y zXDu`V>z~XZvdk|VscO1~bv?CDEp35HC+cT#p5v`$h;?8ihcC9}KgR%6C(nj1QBfLz zNy{#M0*1fKNUU`E65FCGj4fr*gP=hzv-Ry(?|7$gK^OPt=jd;;s_(>yZFohWxJ0|0 zzx0qMVm^zN{uu^zCtb{PISo<|%bbdSa>OKw;&BUm>Ll&X&hc;}Ts0#YSrQ2`G3#f~ zLY+W&Hi3emkU3%P3VyyBrrGw4n^7r<2{wiB9DMlFA^L+4vD6ETn?XGXI-aERPm9QkeMyO4|M+mLn2R!Lp`{Fr$MYJv$BF3`ZtrlX zD*CmWl^Wf!cGAx3mN9Z%2U5M|O`XYs7|xjZ8xdCom>_#VAs-7-tNIvf!t6nHDd*8| zcsUY{0kf~}ae@pZIp+JrevD%G?BrMP{28Cw3X&h~sQ+x>Gi*Q%I>lmg!mcO&dN~iC z_i*BimFq00P$bf=xiM(Ua(rvZx1V+ruSuUhpS$dWD-lVgg&d@!v^LEttHzG;gK~$w zDG>?Z%+KFvFwP@akoFiG73ws>ce@dE`}(+!m>9DHXGrMR_QYFs2MnfmyW!zG zA=OFEr#wo{a(tUtGxas=g{Bv9I4KyJm`;7EHSvjyZ-;g%(n$6eeu}x+B&$s5t@>tINnFoQviY@39<4emf;5ICqI6?MYYu|Pm&?TUiy2cx+N zUQIL=Ml@AJq^(Qq%H99-cN9o$K>^ZYjHCZ?sl`4W4)R%Q)hrPCYx?Cx5D@{9>wIwi{V z1$jO@If_aGl@)OIbjO>D>ewN-z(4%rrH-DzI1VTB8*4e^B{n?H=EW{b`|7Dr>-XZ! z75Vw@_{xo4Fga43_q0YZ7OT%t2QpG>bh|}m_qAt{>tl@sYovdMLsW_(pHiBKGn5Ex z4^b=2ux4DW>QBJfT##17R-mD3_R26pj-de&%xA*X!5Hw~BsJDX|00;9wXAZttY`kb z#ve)tg>u*)dE7jz>3@c1r$@kLC6xr&hZFxc^k`3ZU5EO=T*Nv)vPld&!<=_M?G+O5J~Zv_0MUix`c zLJcC3QDs3MXHCBDpeBHJW2OSiA5qJBCy1BL7{K~1R0U>1s%kkrW!0W~<<0?=mEc-* zf^6!eO(N>2gh|r!*iVq}Z2ZNNOGklcj1Ts6xf_(!pX$PCd3&ibe7?I<>=1WVln z|Dt@kv~+682}00ZyAbD(v+jEl0a|mOQS;M9@>-K!3e4kB;xl9FmBDP095n7xD9%Ub zrnuo6JNK(u=_Y7n1Gp^KpmkPk`&bY-9J7!2CkZlwr#;fV33>;#{6 z0|ODs01Y;WHVuxtjt3$hF^esFcK>Sx#GE{8)lZ@`mZ?}+mWJ*Bj!8} zoe70v*z~i-piUe+o5jSp>j^rIr>^Y#O$5fD>h(9T zQ>ROaMRI63yLpHDaJ^P)e^m9*rHtb-)sQtIH27Vm^g70U@RqN{?csk3PT0ZV**R!X z{bEXss1JMYheM@3hQ!p3b4Q_aVX#U>%i||t)RKrV;8S@6?;%I#n_PyPieYW0GBln_ zspuKdAVOGMvUWx9-vU|=L9BMN;y%wXyZP{s6^!qtB9t4^>IRNQDiwBx^JKK$Wm>4X zP2e~CyZKpyI(V6zu0u89YR@hXHb?SEP2b7O{7nq!bFe5W(woC;n`&!`A^gyQoG{Hu zm0;Rn8ZpVKmV|-rZ^J{N9i{Z{?Mx7RDf=7r$Vg1b+`63UsI=p~v)AW<)xwd*iZFCBut zXV;<=OfmAlSnKucyI6tXlQ$amSX(NsvNwWxQxo_O!Yscm-sMSfU-zq z$+#Xcg@c@pI3BMzjOfm1%CJsGAJb0sZm3HiL~RHTUwEf;av$6CL8ji3TV!L@Fr;{- zufA}WX!31AuyfKWhRl^vA!tB~p(Q`iWU$?S=y}$VfM;;|AR*JbBJ=$O11TQES5c3w zf13+V(2y&Y?M?rD4*IY2kO1&or>oJyZ3ln)zmdTu^j z*rGrZN>rh3!kMqRk9ldZhE!6@8{pI4{T4fg>KUnOB3Yll0*$`HkbeJDF2E5wKPv`j zF(2UiRXe~HI{)J1*PgHw+hGB#q+V~{oo;EYzQ%o;eGbm;ZX;+QsTPiLm2b}mWf`fh zN$8XHgBENyC$GFuPX}*ko8wB#dfPJmUDi2olvJ z9dxZit8Ax;U509inLJMM92cPEC5^`!u5bkF>~Cqt%^zT#g^_emY^kS z9cAY@2(@HjIjT6h+;WUb%8c@>OZq(8no>$K$^ZY+_U`dfRaYDEnwj>k+M%Vi&iJ-m z!c{I7144_JYE(o}guJ3wEh>S`Kp>fnnaLzTG6`NFUYXPc0|JhU5G`QTNTNWDRxlQo zcmbhYj28r3&{)u5h4}rRwf5d~2JrhlfscQ}-siHOXRWo@+IyXS&P>hCoto_%JT*5v zBQSMvZr;>$gL%2(+{yX=bF%_rUtS<1``oOYV76L|odB|i+UT}IZWsHvvz~ihEcS0_ z0vTwboX7;K&=LaeOknfH+PmfAgmS`%VJa;zbj9NOB;3k^SR-xjVnw`GjI@@G zbO(^Bh2mPq{|b7Hf30QzqRS2bwT%Cdmut(&ZP+qgXj#jaz_6F4@jA`NTdMRnTA{&b zQ&>BRLW^$W3*74L5&G;1H84KAYr|ykwP;6cCEaV)&PLJBM%GR)cq{E}Wa+EX!*!O8 z?8FDq7AM}wPTXgtQPoCv;=hd4s**b->MR?z6RSGQMx{DkXL+4fr|K*_l&ZMSvO{_G zkz!9Pvf5;NgYoj*AwX}ab8DiWl;80~hPPD@*IC|HS9hS!qDF-!>B-p8I!ryws>}U} zv9X`Ew+zZLV`D#q`UHJ4>i4s6{q_noHslOUs$m2=zzQ*CmM{2vNs9kb|4*kMUqhAx zCr9DD!lNda0$^&$j z<#00LZ9hHxk=wN;~lA-mwQlM2bw42ZpXq5~tcBM9tTx^zjmE9zFVzs=W+hY%7 z3rM}4621;a3|qsEceBD?BCwY*?AHMe`&tIa!EJj%Riw5`&yVs7%kzkq#Ls5 z-$v`1_mXasEp>fmi6Vmf%416VAoW-`nQK+sAq68cBUN3|d`i1pc|9+_@jNp*2&jId z=Nb6GF%G?v^LaKv#uyU-o>%BlU8!Z2cc{7og)4X(R!WK$-g;5{dRBWC0AWW9gZ%(4 zKhb&y`-`g#*!2wdimSA@$i>E6)+;4Lu?-9zfa0FyXjWRa|1^g+2|OA{b5E-pw~89KvKo6{E$fD@jBXNI*vrD` z9!5*hZDn+CU#-E|E68^<@{wpsir>xS zZZbTvhq3+iQu9EXp9Ls(h>lVZ1}W!t)!$ zE!M}%u}!?Cjad!3MuK1)lbD8bjm%)*b1I*FB*i-P3(%qMq_ZcbN^y{*~?$ zM0L(hlzQTA@!8`>SC^^+@~5%QBNr@4p61)X~ZMEN_Fpw4%AcN zAeM=xQDJ+|A7`Ng$&>Ee+GU7!yoZ~+OOr}gkLu(Q*$ll zWyJ=yl-HOI*HUWF5fq~p8thzAPTpdB=L&O`slH~HK3MKA9{zrJuB5!*9TUr3Ffr5o z_Zib_^ob+C&+PUXc5;HVqv=RsX*i|lT48M${aRKx?q2L#&`%1au37K7E4Ou)?rMOB)+jx<5PA zP4m!}_|d}gqX8Ylp@k#H*Ap}cxdWylQblP|5kyx}S~MwlfIelbaWsk0r)pT2c04C3 z!is3xP%Gg>-AxVU5R<(4I%_HJ5JM?OpYS@wwyC|&jBYu@)KI?e-r*Vwf)HmZ!K-o7 zFe~2g#6aJ%f&L9#Se{0RzGL(Qug64PKWhJuJu3@+g8n;3AHQB(MQ+1Z;R?!kYy}K< zS@j;#Y`k%$weWd@23u8FH;D?0Zey#8Iy+OJ9ieu{2e0kGR+VFQqjeG+A!sBJ%F)t_h@$59K*D?N2CXQ$L!y2% zw}&J^T|b%ILlU5_pUmq4H&FGHM|wyK|sX5O4ePcKU+t|N`^EReWI?F zJ&^P6{IeMqa)zm%tYUST>d9)pUXtK*>i-?6o?yTnM@SQiU1%j#C$3S)s(uN;m21>7 zy>HQDhD}`$1mqDnnw(h2^m1?1-XOP044XP-eO)`LPp11KQ{-t)fErYzw8UF@fj~S> zLB$Rgbu?Dutx!h~tH0Qx!eH%=AsBxGzZ~?3VMZ;TFA~`feua2*51!d$VU}BQb9=|SBT>mTaoV)dk_D7bDL_ zOXAHgjyKEEflVq*WfxjPWfw=E-~2^Sw|A*%qrYdfOL0LF}h ztp1@Y6`E7}C01?+#Y+w{n~8sswZcIL{}5UN{vg}o9{`U#lj9&GbYkgAhgkE@4m=pw zdRGWFvUr*m;Zf24QP#d=qGg`&1Zj0a}9hDC1o{Q4emp*!ay+rEAnu+8I4` z-9h!D2%r(CTxvxgOW_e1OTh@-19bSc@)V4~uD6iY#zop6g8fw2^%mXjHQfTW?M zUS@@~AjN@nx*!GV^j?6#P8A0D23pvu!T{-318@NY{Nt@!nR2mF=7JQYNg0F>r=0vC z1b7WPWuz7SQUSk|!3O{kTU8kRDzs!AE=@t+{}dhgI1{t^-ED@=(iF@BuDwlHp^*~jNjBTKzzp|MD;21FepazyU%4&!PF+>9!;*v=+BpVoR6fLYl z8SV>c3ET#TyB}~ll*`4KmdZ4>f%OiJVz-KdpXMELg$Qm^f3aIdIoV-b%TBdgN~Wi2 zHC`oBBy%SF$8%_h}|M?Gn{ zI6zxePZi25ThzTf@PQhwN6TEzXfbxRRhx&zn-8)6#!r?EbBNV77cEiOA$E`TP?uzw zLkcKYSiWYKGP(Sg4|Jr$aw5zcYy283=63ObcGmPEphWSI8Jsso7_>8k>1YXqc4qL{ z6dfkz;)H{@D}!^9<$Fa4MV7mIBHnY6W!YFk(N&?rhLxTYQtcO6G+kK~Xo9KZM1;6{ zMNh7?RP@ARY8%LyI!gt^@@AUISt@M)ZK3sY)Y*i-VAoyEy9!9#Fsys7_Z#T^&iamJko zR8iiu!pNVMHukLa#B#M2?E=}e(i3UxY`>uq?}d|Ux{j&g*xUf;wvys(v>9mA;HnR9q^vJdq_T!h)7C+v|e*6tOL{}Tx zkAI(~btQL5lwCF|Ki1!f*{F1<%Pz08?%=-e0PRq^;%~(4V6(XJI|M;wx5@MdwIAf9xwPJF<8fde9$+8Lb5WBBEvZ%?v#QB+WQd5kRp zD((n9rg+(ZbS}=J${LzdO%k=|#YLWHG8=#vJ6IU|5wryR^K6Cl0>(w2XMj?8sbzc} zDZC^D)WB$xRrl*f_v=~r(*v>!TF-EwLJNCX7;Xz%0(U*b_2z1)k&BJftXG{vr3t6Wmndl6I5Am zB&hqr02^9*BYSQ_OPs8%H{!fAEXFD84JSJvEiq16Z^ZdvSUXu+Z;A8zd0ts>q%0KD zc|%L@m6i=Hy=9ibPxGEoWJ{x-X3QHW(|wGKy)Z-%^@f>w@*x$M`Rd|&Oi=Grjhd*3 zy76A=O4Y;9`YP4E%Q~>3MMW9Q3qo3ntx3wP?ah;qT2@~@^n)!etgSE65^dG?#^j@4 zzH#MRg_8>|FEB}&Q@+RtI#O^s0b~u8a;)}m5c@ZXj!jH(oU!tZ_NS7-Ri2`4c*6kr-qO+cv2gmt?ZU^^S&3xJ3aZD*Lj zFF=&n+Yh$0da}_cFt;ziq0=tD_?*OPM ziY+Y+{I`XAZ$L|L6kBdWTOvsdN0Jyighfkl#E#bsH4C`|W+zf?X;HC67h761Eo^OJ z%kla>LZ7mJuv)c27!wfXJ)8rCvZk7TyOr{x-lo=ah-r47X?3GR3}!s~gxMjs&)k`2 zoXZ)e*79}lj@DX^N34-j$cp$oG17Nzr1e0CRV=o*F#aRxG5+-(>+ix@CW(E=`159I z%gAlmGSR#tY;pbIt98 zba)#&#ME>9z=;>k)~b>_Bq}X)`$$66m6o}EBq8cb%e+2t1^BKzK#%kpap!4Bb9hkj zNFT}n`-(lO$ZC`69>&XahXCE9&aH}iCgE^^9#lPCX?ajx-P(Z-E}}(C(vz{Fb(mUc z)#b`QW^Alv?R^O4gfpgMfDx@^P~D4+Z>{Wu9C&?^85?qjDYUF&g_uIiYQA2Q;&bZ% z={APB6k2|WlBSYA%Sx$E+@p@weLtWp_o!ono6uthPaP}zjABEujtO2`tUW?*lNda8 z$^&$rr9PSPi%gQIIss}>jnWeDh?xR$o%)MSF6t;=5K_G>)n9CKVX$^b609~dH-B=r z&nTriNjaPQ@JwfOA50Wyg0`P%b05qLYtWKmv6+>y7fQe#$+4NSb|jN3G#UjJi5_Gm zZxK^%VN-RF$|PnBW4i?{Y;a+06=(^zEsSkbR2xVxHmkfXY#;bzgtqn>G#>-9#?FFS zrBa1kz}975&DRI7Jgisp~9=HCONAkk4q+hvZRJ<4dupe1OJ zGTPEP+GFHm<1t5-o>5|HXY9~(hg6GthQ=FD!X4|&<1W@0E?NR_0mD1} zPOV6}*eG&AUnEBvdJp#dUxb$6Z)g0WGVR)Oal*CRm9e?B^1Y&i(#l=^ z5aF@n@ZNR5pg2pR!B&=j5=OV#+PH;CAY^6guj!>cC<4UEEBbL|rJ~>P5pH@KRLr!$ zfd@HVn{Wvo%?1#+s=X>Ohp@occ0a|A6zOWyH z?-uk4%7u*5eXm9-w=jj3h5aNy*;#-j%?1UvMw?o0MI9H^aYjAzUaq4IA&N8ZJEe_H zEd8(~eHCp=_iRw|I&9{v%)48wj0NS2rXmv zxDX?Md?6{}I-Hw?v1Zzu#JIMfSvuA-%bE9C%PO^ur5=4ktd_0wC5S-^IphpeR(YWx z*3upKDGOi?wB{kJiPnmV*0PEE-Jf^>zn0+l8wt zYuOGM@oua)X`QCyP5-N)NKt68frXXBhT^JY9o8__YY`I$sG{l z#Dg~~57xiUy-{gS7gb(o&8ecw4y7snZSEax6#i}QR%Elu^akVQDMNtXQ0K;?o|NwV zB;jqW zxlhi(M4CP60PDllRKDQrB^mxl{ohVVv(E62W2BjMe#Gh=ZQ>kltn9CW9Ka$(ZOm`j ze9Vb-y}OOo973P)Yh!*-&)5DSw@HkgHf4WZQaPN=_gm)ZDlf&%s9iPiqeBY?;$4g6 zFSf3nEy=X3#QPi78&-d@b>(biI=jONv1&p%FDo$BD5WMzIrGovrQQ6qv9$XbwEaZ$ z&&Ja3e`BVuH2-X5(Daxw@_fb$BS$E9_LX;IqCUw+q!u$OWExT9V$p?+>B_S?lUAOM zOgax(f<%>!b0b>V#KJg_q9w+vWSqmwwXx)4XZdJ}a+PNzhr)L52rcLUY!#IhZjHBQ zsTKDU!M%iW&nTC*#S+H-G+GjOmYj{u`4Kw&L`#^+S${POUvf6`==i_t>GzVeC2zK> z>Gu-Fqy|hLV^J!MJjRxR!*$RcH)LdIWoCqZ*IzekgrSxew^DpgC_cw>9|r0m(Q{03 zD_VZE;6j}qGK`*M(~Nvbn?^1+rg=^g;-B<>UYo`}I3qut8_o&dc0SdeJ>iy4)CW)p~FwKo{9FaFhtk0>29mgrdxlE z>DDWzY`Rxilrr5b#&ikZLx#~t`@|E&Ue%*C&(tTZe7DNr-^vVEfC9d-!i09CC4*`! zTkgzCGx)bMPAAu#KG3GJVHWG)SNJrp*fJ}=7O_VQD`{+{45b!EdmmbUq83K`Dq4cJ zh0%TswEW(QTx|TTMQNY??4wfxKFP5(fl14)L=Fm(gG?lKfe<;!L~_yc6CGqC%h3`d z2bsvO1$w~9#fHd1E0IH*h{bVI>ARD098|D030h$#b5DOx8Ta%@%J|L0vZlPJKgRpj zXbJp#`XgoB@v!lld-@~2iPzlQ|Kw5zz-dq^)mCt^{+u;p{gE|Z1e_pIjG-Pz3x&)6 zfO>9~8L=^j>aWt8mWz$1WBn~zqr3yilfn?7YskT;t0jj zS+MG>RbG~BCnNY-#;k41dCK9QIS7nBD<1<$B z+a*S9XS&zrQ2HtkI7 zrEK2X(MZEglVXi#+wy{y^&JB^HQX@(so_Bo2@>5g09ouUwESqnrayVqki266ve<=> zYMaW%37g(AKym}y^v(gsVMo`BnS{e3gezG2us)i<=_M(-1^#CpxR}UCI!c9xT z$CQh!8Okp7$vCcNoB!r9ZF4yREAJnV${J?`m&Ox($%<>07-bdf=IY0!T)c`=-iwy0 zORO4za`7AJ6O^kMB|WZD$}ODb=@M*Ku_5d|Xh?D^L9Nlo)>%>43hG)$J>qd)F0N(V z1=1c$R679W;x%ZCbJenQ9YBYWsAYHR^MocLcSsc5YL$D{tC&*DtT6oC5vphLn4-7? zRL@p)l{a-XiZI`#VWc^yHCVYf3HK%zp7VrQtcjVgM9WyLi7obT^aoIQMl> C91blbCc+*}6(SWH@AWlm4opI7gvzXVKS6 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

                    gVB!HeefA)WyS*-CC8B0PIO|saN?I7Dlx|clj!xS&Scwo zBZWEjFonxxQ0^4IylTAehsm618IK;>ip8tob}pWZ8imJFPk#p&+dAH;z?^zWaG512 zGQpSADDqBDBuHc&i&w#2T)a7IWH84Av$-KcD3kZ7db@_ zu^?ttVtF6j&*kY83->$4^q@5cMgp(b!%9M+HJ%Sva^amZFfw@E2aj=98}`B3jy=k+ z_if8k_mcapHdxL3o2zMm^LDnuYGU{-rm!uqc49y5T*hsAwG-R&Ih1q*taf5s9)n2_ zrm!t9UseD{JF4S{b(G^wriJ;|vH4~R^Q~j^eIGSSeoM2f=ehg_{D#EyY(5;KD)4$e zY$9?PMALn+i3?|9V8rpd58mM{`bNYLVLs_a(sHQ>tQP!$E%*Uh@ZV^LDu54&O zz(^x4KYYlv*o!`7Gq4wZ$Yxj&Gup5`es~29iSKOI>){hN1A0;6anzFb5CVJA9xjYt zRF2nu@GWQM$D1BF=2d!6+tLeqObC&H% z9{l#O->oP}=#mvy3d@+nGNMqq5?v)^)_58KmJ#l3%nH}la28T~O;Hm?a(VJrEE;e> z;!4-pVfe-+$t$J!9SHzOiZ%9;=*UIstSdo=heBpJ;H@{+v_pavJ}ixaU`K03`1VeK zqY-Xcx&U;y864(rfMYNS=SH4BY`hQR9Z+efLY zo-Z{$A2p3zG%XjJu8tZdzavdA5Nc$iMkQu6xM7e8hi;7)?|DQBtzhALJ&X`)w2>Ow z4h%LWxO)sM>Zw%%O{j3SRN-n=;c<%!*9a9RHW>+I?15{A3W+8ogBf8rT!+v5U>M4P zUrU z_9*Ts)QAm*_0i(U6QV?(ENQw=hf#>`q%WQsL9~kpMhio2h#D!(z*1gZT{@GA7=Y1= znQjQ;NP`Q&9y&5NSc~+JLNiY z^DbNkQ#G7sIFqeW-SpS_u!EezQH~9bx+xcZ)_hzriMKaeb5o5vzMIWcZOctG8VNLn z9}+CJr4bjNkl?_}o(Z(tPnh44WIlfD>psH;>g=h3ory zTsYlW99$<1GjP55t9yJwSVS)qbSC35J?M(m!a@!Aa`B6W07f|q^nv(RwKKV-5qcar z!>Y0d&SY(6RIS+pXVa(>a*3Q_e`J|-BCZ0dXcZO^F0zJSnYD&qSa#yWV$!*Wtau}) zaQ3o>h|GQ1?lBoEgx-&S#G#_KTGK}S@P9mJ1kr$g^)YRZ(5&Yg-YX(B>$!%%Xf#q- zz8+p+u{*H_U*H-{MZsvr>poDQ$i_;7J{pFjRCqR~dq9O}quF*%s!gH&Y;S>5R!eNM zT5r2XGsx{k`L%}&=wFb{_*rj?XL743B*O3(TYm?A;Rz>gP-i_C;4!R|N!gUaf0xp`=0%H}%VEE{6!yFMQDM@#j^LyMScoY!>0Ao? zwXvCKD<%x{9HMO{qS)Z*oIywC-bTvgU8n^l&Y5g$RQ>mSR(k6Md;cx-TPNt2{#)iQ znP4Q)LVj4p_orwx3l?#W{C7On$Re(h-Q$f6mam8VnL-*vRQL1Et0oxjcsUS^gyCUF z=?0vrED`!Jbs3@E(5Q#tAxHEEEV759cqdU+Kg+Vx699|~%&UTp47N3@dsHZK!vrIR zmuuW0-Zq1gKb*l}W)*DWdop;>CKj5RU_f6D^ne>)bELK)HbtPbogQ{}38|m-hPDr^ zUhx)t#arYR#g7TEc#9|we++|Y$jT4fm?!ro+qf3EFWJVmFtf?1#PU99qw=CJY2#*r zeMv%G{*W%`)R(Bvl2x_$mr}cukE~kmc2Ix0o7B4fG0|V{raE>c3ychs@~hA->-d>n z$In>DSxrVemiNJzq=eA%ON)*r{m5Uwqsu>tj%w9KFUC{K1wXMWImt;%PNKllORVH1 zCpxktS#X49&ZUVm7<@7+kgOkM#5p7Sy(t{tx{o6?9NtRBj5wC}!E_E!ZN+|XI)}Gb z#lT48^?H~^Ebv(uoIG)141cxZbsyZrSsQW*l2X64Z?7kf(e{535)2R0Y86S z`1c}WHwaVM>n)-H=`EPVfn*T{NLNwP4X}s;q`NWc!4wW8C$F*(B!44;PTbxJxyIuA zrSUmXSi;$DQKPUw?Hetn+vV;EEM+^tE@mZ5+0JVkjdCpC5npbOQsh~TFFPBJAYKl* zVKp6(=Ot1KGwb0wM%{ojndcZVjx!m&?t?9ywYL$VIP;}2*S7zNzv4;9cb)i5HO{fJ zAC>m49oYfNiphK{ki@XGiz{dsRZ#URQ9-*%g}YZ3fB`3y;o6xr$6wpoa2$VaXTvRs z8D&`Br$VX}#oxn*LkFzH>-F$GAz%~GeegXC#}H!zulrzf?jgp$@*M}Ns}d7o*1P?C ztNwUeCEx~_k%ztho2>tgJRFt_pTIK(Rd^AXMI$hY4mu+b*P@dtNw?xm=P68juq-<0 z*H73TG)V&S*;XTi3i@Ftl~Zy3nH-Z%i55STW3qE&Mmv_ThuJJ)XH56OY`z)e_9drK zcbDR_{nLOxy%E3;tdTCsQ``jmHg3H)G^P@%_%ljbB<+ox>P3MW0x+)4r8n4&G z?81eS1x5*UZla zkZ6>z=ZVv6uhW*mKhdI90I!niAPo?(!Caaqk=6#dRn-b=Ilg&FfYLsL7dU%H=G^6?6;hQs2FoJm92k&#%swjYw z!n`Wj#rL%0@@y9uK>KDtt3u`WwVkwC`w>>#eZl8(zM%6s)6rU00ACQ5XE24n`32cd zTa7{S8oY`PdLSj;n8XGhz@!IL*r1oL7Iu~v-Ae*#>C%SU`r#WYM^OcToe#dr6Pql& zboquY`md-_SV|4{J1$R4m+#nNap_Wy*Xv;lJ+$n^9@hs`@{t6MGe!`v`(PGl;j^__ zT2yQxNL8f$Dvq?;aUMPa9F73YBOcq)8sSj2OdtQ0jIfF8&SWb4!`y?!$ENy~@>6tI z%MU!6A;l)~Yb&cI$f^opNj`qw$@LUgAg0D{(4hrWbPYT2R}{e|`MBP|50Rf3z_&y$ z&%gH{_>Jtlr2 z$}$zRuxySQDfD6dEZ8IbJUvE9v+WjeQ-QyZ(~rKoDfuN7&t3q~ODhTj^m^}89e%M! zdTlRkPr1~&4fJ9&qQJ_Jmc~KQqX_gU1Rb(QgsJHhwvCFxQFot<+Ys5GLANpBBa#w4 zVRbF^bGjXPfG%qazHfehHWLlc9+;?zp>i=PsHI*$l;2oh28&zc5lW+ z2;fg>_h+BZ!S1w*vKn3jSK0{RR!b1~R%U*t!?#NFW-V9S+i=nN60gmMJ5_u-bt>VW z{*3VWsf6lzM%sU>#=(cIE5OELs4J|{6USN2KTWWhMl4du!VfTw;@od27Sre(D9+@{ zCZiR5eQy}1YwvBvzVA8%PNUs3vB~5}mK)`m5rW&bbHBxbF^$3Qp3!FqlFSQBtQxck z4O&QpU#t@@)S{se4Z&0hphZI`x@BEYod_R^7>3V7NCp`jle-0zyNSuFb+Qgc+L5g2 znGqy7PfH|p>UgU$?$I}>_bFH(7c_w06~&2N^e6Q7kNbYg(dSG0 zQST)IgC|(){NDoj-vm7CS<9$KneWKx5UjW#B zy-#NU!+Pm@@3ZR-)&rwqHz$VZ>Y&4!uv@EbEdXt9N8ayMUT#fDnQ*8p%q>QEoRR0vbpp>AKFLx)P6U*u)%*b=qMIvEqH_B4qLEFdy&cc+U-8bqmlzqS3ssw!1*%>6O$=_J z5;kRn$8YNd0UmUuzSH3rWq}82%PyCu(Fq$Hsl-g5W>x(mVf}{)d({TfNX3z$-HORW zj{FaB{@I@WB&ZV=Ss{u?Wto)^zVA7RuXILRocMzDhWV7v#T&XLz#bvtOU|;=Sl~pD z5U9@N&IY3mJp!MP8s=^Y!y@MT3@8F~xink3AVpFG! zzxrsn&-n#evl+MZEAVy?%KW?YFQ4K=Lrcc%qv7vdX6HB~P9@Y{-I4~#`iU36ITpWy ziXXC&YPOv%_-GWLdCEyW%6+6$r$(38(U zdr>;zvG|CnBZv4DWAgwdVdDd>+8(E&&mV{I7rZD|UB}_*)S%#x6YxWew=(ZPvH;x; zCHPz_4qRDJub3MT6p|DC!OE=0j4^ZwWc5E4e24H!U+^HVXFK|384nBj&}G(SFD zP`u#ATrELvWf=vxg3KU*#~s7iX;JUH4?k>Tq}nm#9;_> zIOiqNYKCB|8KXE15gdjVuVV7YvH;x;7vUFTb8a;jg0#R>)Jo2?Qsk&0Qe2J{{Q#Fv zKU0StisGe`;zXvlga7Joxa!HZ^BY7vUloI5nSB|f;N_dd<;QdC2Kd=B?gS+H zG>aDv(oZ(@dw1*bUu8o->X1t((1D0ufJCaeQ0OZV#}MKeL_FhvMHesz@oxTKS%qWp zU_dToW(PcX01~-mu$4iC7(|f4LSzsIh+qe>RWXPN21AP*nEE#UtGl5N4HX>z(YD58+qx7JA%OANwx+z2L)+>g(9yCOx?+gcLNTHcLkeqN zk<~)UTv}FVSlO-^wDMvrcoViO0u$rs=`?=cN&x^dfMSjtZqu+PXapU4kq~eS3&N%| zk)lk_9EVVActp}muyj#PcZo2?UE1NF>F}kp(p|(em&PL@vFS*tvY|pT0XauN&LPNC zS_|mZ(;Nbk0#Bc&K3F~3hs%uf&Rxc)3(f4dQiWq$LBj_c3!^|uoovHvv}y2hL77SV7sXP?OMfWI^3YDU%YH7mkvxqVh1LnN=6DR zhz?Bc6(HoyO`-#PpDO%CMc{qyQTjGv_8picz#W*xZntsxP^kSOanN291MG*?fen03 zwt)|s!_eZPeDgB?tGnSNEwu&LDA(m)E8ICqX2GkhR@yBX?k0v2X1JR=hozVb0qmyE z;e*$5=p3YxROcYUORlz(_(G8Qf=K-Kb!ixp&ZTqM7neH+iCT886@3qN4g!p30cF@I zJnB_b?J*;cId0fXmElabG!^%{Mu_+?|J4Jd;cIS0IWDB-Sxs(8l4Rwz0!esvvxtQ@ zJ09Gv!_~@E%{j+mt+3dbBph64g~iub1p%fL?2Ok%V-lyc)+rLxDHNT{WZFuC8?`|E2D`PDurn!t!9iZ5-Bv_jbG%Y~W1UhMpXjo~2T&*ai z9rz89TpCsf1$J18UU{Q1t>{&r5GIc<-@bW*9Jc0-92}OPbQcdc zNZ^Exz$QUpljFai>oD&P>8RqcUoN&+m}q*5RrY7A(whb5X2N_O)${;tCe#0Xt7Nd* zfggp)#q^2+cW4qEZnBctDoAW45`(siu3{^7XyX)#txRHQ@pY`hYW}Oc;Z28lJ4OyO z1VxdZLsE;|DE?DW{3lU-lqvp`oMRWJLID3H=ji)pPn<(_WfHxt(rPIDWP1?cJz{aw zo3egHI+w0YDKCM!ACs`c`5k*Yd#o~xp=*K*MPo%U=F{`W=;ZnOq+;(r5`k(DoEYBXvApajZC9(Hb+_@Ujp1r95=r ztVEpt$>H@>N(TrCWl^I)s!{cp^e9R?lX&doEIN2|3Pud^ zAP1>&icn*ZICgW2coEkJQKK9S`=Cq|PT?ufGNDv+42&RNt%tz~?o77fk(|MzWDAB{ zvwM!dM$}gLqENsmzQr=w3|A{{OZ--?E3_g}UsMJv@SsduDO-WMJCm>Bdo{39FB%C~ zh^)6`MhZy>#rvC`$#@eOts>`Y5e(ZK0|U<1Ko7#TC>E<4veZRY-w?Ma;tBZW*8!vw zFF&}1k@*ayOVr&eabnLU z>TYh#sKmlP`C8?jSa+tVJ3RlGz^nD(MO0^U2_Ap+3b8$LSG&GprD%DbRpIfZ@OXqi z`RxKQGRVabjRHR*T(VK96^|M1c-d{%KwQIH*wf;gD4vReQSy5_$|N3l7RObytg%sM zgqvFUqCiOTg|SxN34U8iLc{90`EA*_5}K%?_L%N-MXGBdNd=tAy|Ln2)_fQL)kmA- z;4ggrzgc@$h1XSW)&{(8Glb_aN<~Y-pNeZ-asCYe{7x&X0r*|~XNSW=Mfi8(lSSFa z2lfxH0Mj<$;|ch91b#;WACE06`HOkZg0drYMZPfKJgLE(ku4G z<&PLiz`_RU9cbwj2>1j9zFGmFAiiKUwuitJB9n0CHrPG{+XrEj3bqeMlY4GwJbO#f z5;ACmK9QhLMCg|l^oe+6yywvNZ#PNYlnwtR!aoV|4|_*e^+~wlm;Kk?_N{7sY)8Sh z*syPJBhc7>~Yv}=^95DUjyU93ML_ebPg6mtI`$l$(UAQTBJ#7Z0T z$%K3|B0r^&Pd=j@qj=e#W!l%&a(7EXrftxt5cDYs{k4KV<+&dO8XtKGD?Au)HTJ25 zdn)3d^-t+tr#^Y!5212L!~tOZX`lf>#sAOTo5x30o&V#{ok^9!s|~46>Q>WgEx5$6 zsDN0)rl0{v0*ZSk$xSjcn=_M;AX&89FH~DIZl#KvPirk&sZl^vK@6_o8mk|r)@o4f zhq|l?u3c;p-(9CwBe;jx8sYM zzZm>e41e*+^M{h3w{xWpamXWJ3JaJ50gXn$l!N$?zCjF~?0{M6Y0*U5sWg-=9_pz~ zJr&e{G}KdvrqFx4a?RQ1;hx6a)4=`dHrSG+Tr{S2_*W!TRcl1^RNrDxZqMIQ1qnfy$UzhlUGU-Y1R zb|F{YyJju(u$M4<3E02?wsw5UkaX|Djs|ZyyFA>pnR_<4FEre=7}SMa+eW|1~1!4oSlo5$f$B&6@PEpT+EFfqlew zUHoU^_1nGQM%ibW753h~M-#Vt1k7Ur^B`dMcHQ^P!wbL5w-2W8QFkito<|dRdIT)A z@?t~_f4txR^n~%i!a?^uUVg*bhnN- zs-fohc?Z?&Xlm8xXwHy_`+Vj;AKVRw`}{%oIhvb$9L?D2VZMNwF97p8!+gP@dmPPd z`Wwwkm%Dv_A+uiy_74sFg@f*IG`qLA(bPpA2^X=1iy-0nzv&ux(V%;qUJ0|q$r)Ctcw#`f}zj z2lqC^U0%TNehp$~skyzgYfT;UNT^^56_9ZF|LLNy81(GAuLL#0*4%9#4VA2+5*p4m z8Y(AUFhoT#&$+ZVl5+IMb3@+a5#g{12O@4XBAj~%dz+yhVHS*(Cp3BSPuvxvibYgG z#EV8m)sT5YiAfvQRuB6n%zg>j_urxG!X<-Vs8g(Jtxi*Rd#D#N^&(KuGSrLK4|c82 zP@A{d3~$kuZpTNNKMMY<41aXc%XON+cfO-(Lmv7V)5k!+X@{Qg#IOb9%N>~SWEzsr z#6suN!oB(grm@Xmz{`8?HM_}Z8F1!8N2bu?JxLTYxv;|l9 zLywQ^T>PGLI|4Vk>3sutJNB9LW^Kiq{CPj@$J+bTbDAB2ocCSEyDEH5I9;=MO-}P` z-k#m@pYr}N%Bvx=W-J*-DeyPpd>{_;dtHNU@+G4Ucc`@=AGGbaKivflX!HnlLqm#s z8-31R^)(}Vcb|^xo$+ew?p_Ibl|*ZEup==413kv9&5`MDXfUL5U!$4Ivc_mIZeYea zhH(QQnhHk`!c6bfS~GTgnKv@?Rfc(Ej?8Q0gJI@ARTCwz^O(AZ2{#zRH92x8GbrcE zYYK*nuJ=%`XUdNa<$6B&7O%ez!n;B#Z$>D(R`qMG>J1t%w@FvR`@Z+{nED&+rbsQ5aqxGBiz( zmu?NyZ8UTPZx@D6dT&G2a1Nhapvi zg(hnC5vCLp$)s;-Xc}MN@@t_gMNcQ*Jku18*+8;OlBCnyA}LxHjkC zFW7YG$GZ9qys0QcX(pPbtj%NI24qcf>ZdeE2L=-DG4^5K% zACHM^n5@%~4ZL|MGSxIR4gK0fx1Q-fGj!_*eB0rn<7T0$TD_F(n6mH_U1bK|EEJ_` z5}GFWHy#TgW;(~v4ZKP4a|l-JapV7G*#$MkA>@)@?JwZ@Ft-sRg=&(U0%9}neK0fZs1Kqw%WPcgk~!HoyWkn z`~{%H|E258z}tjolt!Uxy1jH8m~OtI8+fBIbe>kB>B?4ltlY@7R~y=aw+cF1&o)Ff>>0-5$<$%vtoAt~Ud37@AYH z49(N(<$IXB1rfK)mtzo)phHl`k!_cYbp^1uDd+b}!gi8$J zz?(-OLT(?LtjkNfj!Ew`qyujshEz2WO%(cr$I6G9aEBorcmr`Q;lRRC{G>5$_~_nV z-YTNw6ZZae#J_drQCm=E(%vqP@5s)C=NNYUA$ALIvh}E91A#gT#j+(69OZr2Qwi!~j zQ*sDM_0~PjSGLw;>@nbd)$poadqcvDJ?@4scb$j!2cSLRb6vP<1MZN~qWdzGonGqi zgL;OcR-2B8ggR4W$dV6u>>UNtrG`{(%Nz>QR3ekWC!Gyr!Gj*=(O_QlxqkhIcdfnq z`7j!MJ5u9Q+Awx`nNI-o(O>8?R(th^z-B!jD!OEc$Kaztd!eCKTb&2hZ{Up^*R)X+ z7W}c7*ddy<-rk>XFvMyX)u8MZV(FwcTc?+G0$86htZJLwLK;LTtyuLY9!*&GkjLDq zAohK!i&yR683I3hM+ePH>pkqJf_;KvS6jx0fL%IiMb@r<@o3&5It8RjL#npu4M7R( zd90!<+u*TvJZOJsXw?qPA*1EaQd8zW?4dpx)NdGSwd-^!s7=4689Tkq)4+VtSGwQg zEm|dC4X)pkitT-YSkopqdJHcH{j#rg?N&SUhQM&muHKl{v;~iN=%;}G5ks%`N_=ErzpBp91N}P`P{%0n z{Xu$APV*`4ZGTfFf{D^)G=)s z3$}Qe!(blg(`6o(T~I^BTpNvYAE!CHyxbRpdy(N*8{me9TSgX5n0(q}^m!ouwIM!l z2-a>)eVf(0^G&nnKI3681N)y1yV~?NG|kLAs%heOuYijnAlI+UT0Xg5&C7`x= z4y^z+s%qwLuYyV_IK?PX8$5?bftt%`#+E;MY(F2&DZ{Kbl~>Vzd$q+S8cAn({G9G2 z(}Yix3;BT%s19cwwq*fg{GlF=uLR z1ZSs)5{W1U{4LLltrIr}_SV))rz%_<&7`M=D{34H_{YzwWViig>;VIXI@4)LQ^22G zBcg)C_upG2Czi}KNH-qv7b`_q_Uv^*G7fI_RF53+&s1Pf4iJnxK7$rgXxD!@Flme? z>kjbPLIwAi0mAk9QZWVmWeO4BLf*?pz`ny=1~@ee=dFJX%uqE=08~;zMgKW4DE1kE z>J<>ax;7Bo)C@J?Z&5(_6wyF{P{AN*nZm)BW(SJHYZ3r!RbZzMu%en8i6plWn;P^QO$43i}PuGM~PGv#LsScM%$PpaB;PJ8g1~1tvxR%xRGe&kmzn*XTJWo3{BnXO8hH#emhx`>QH3)g!(b&n zn5Xf%Os74!IzaCjz|(-w2W&DbvB03Hd4%;U{c^RGyshEZP z=-KIUvbH+gj-;n0V##nSTpo33w8YLa$|Gq*&~}rX=tN71P6W{nZX%B9>Wy*1(}}>h z_thde=+A!Lm|u3ifRDRDe(idic+(&7$?@(cd_7?zGWxSEO%!Z7*}~-?Z|BQ6sJ&BS zrj5H789JMSJ&1rGrbC?{--f6BWj6}+TJ>w!(;0HP9cPRy&rV4jL)%wK28%r#RtATW zXWG6l&xZeY_b_TUMukP{x@KEk&kw|7CBF}#1no>ik|GjVXxD|KRPztMQfyovP8;U7 zTipsWNVf-5b^<)Wkfl9fVIuYT=% z`nkH^*+?{86~c^E$~|oh_}k~n)B#YIPQ{7Ys(`;!C4hAn`G@!R9qER6#R=g|A{MEj zV0$Eo%0`KX&hdNSfhZim3$$?LF;f$X=%~VyM7Yv`wwf6?-UgP=^ zaHuc4sDHH5Od{nNnA~GTv%nq5a0deJZzx|>BRUXphX(@W#Va2>#^f&Zpd7)U7&rpi z<_C0rIAYXg=(;jqkdepCif6`-(KafWHuWo_&R|hzgxUjiwShYW_i)^Cc|E4!q-$`d z#4Ae|hm!`d=vcS4r3_pO;70=i%1cBmiAn+dZv^AcVihbJ9-tBF#o=VqsU)iuhWWDb z-B>cEveNLhdH5DG-$L+J4-ZgYr4!ABi57zKHc)`k;$Z)loiuI~!)w^w(!Ih0`Vn@3 zqcPB0 zFmGVY$041YMG%WJjatx)o*C*o)ffXnBN^{<<$`#Hs$^R z%>W*}W*vqB&6k~NSB5iTI`YIN=#LwxhXk z9akEp@HBb*Xt#(HSi}hsvGf34#ZQ2UH3tNUsm2NXs%CJFl|Wl_eo>L&)F?dGcoH=F zv+d1&I%D*5sGiA8$_U6EBLI5dnHR3COcBjLpm`Ym6I!@n=i?BYqrV-X5ojP52Y2ax zyfsM^X@b`NiQ*u-@Y}jZ#X)ofg3QaoXTWPZ*0{90I(7) zl*;X`8^06G$KH*^LrM%&Tn!f^Vnt}%ld=H*itegAm@Q0@RL1;K53kRZ0`>m4O_6?_AAB%X0n@o@BnWGY-83m48wEQl|18l1|KNXAKpqv=x$)cVFZp`@Iu zs8f*CT zd9tuHaOAH`H3L>9TrKJob2QFh%3!S68QR{FsyEkA;(rQCMVhw~p5+ zm>GO$Pf(`SI2DU##Uq(WI2u{vR2qz;2^wo(B07MNe>~ul%WawiQ+d930B$FJ*_nGF zwxTbMhA*Dzra72t4xT!}rk@#_gF)lRWMRJ2^o9DhV@{?fQJJPg4!!~(vukh8ze8Oz zNpKH+s33GS+lArUOd=CYUObKtz2|b9td+e{C+jHs=1;qc`}TXiH` zbtJ5M(pYt*XxhK$)sZA;<7IKU01-@WZ zNpw6|dY47AcP7g_6Y`4l1C$qu6P@|~N}GORB%PW0H4b2&F`_9onyfP+Y0rA2U3_J}rfEd< z%yf%cz+x6a%sUWMPP72N8vESdtOXF}&u(iPfu?OOfHK@!nf~fx z>92M)+2Lq3u{ab?q5q`|q^Z2sl)vyap`U)b{MwN?mBV^jj2%FAFea)Ak+HDg455%^ zsHJS_QdoK~j4LNv3QNC4AV#zlmQFfY*NUaaG+5e*&|r%|>Er%XYin8H)_A$aA}_a~ zvf*HpAjk$HvfR2F6EN^GB-aF7<1pV74f%p8xg< zU>T`*@08hCG*y0R35x*n$4lamm)IXyz{GN*m)IX&2#G&lVt;)5FmwXpWF1lzPqgWD zM8G94u}iKzOkDDka>uQPx@+uevNMsKPl?HrUO ze^p7^8ts~Jor9x=yLrXRpWU*Qqwq9in~K`JG}wmv9jAAdn(n1sSKn22wQH%=)pyx6 zfA*=R`716E&#byge(gH?TnX9SnBQ@s#AftWl+YDE^aTFwGL+DudaKfkFxOgDI_(X@ zX06O4q9FGJL39I~;PY~#AUdmWA08l8L_svUIS8Xbf@s4(Jv>0NOcs=CxO3@)}sp2qxfmk4KQk^J_4p}T8|T}Ovu(bJ#pY@qywX-N^y$gdrz9}4Pbr2L_z z>}a6;m#ZYjj%xX}<5VaqJCU+bQnoixen*|8*t%GL?Kqt*DLatzWJ$TIfr4F9u*Gt< z9aoFxYFh*4w^mC2I~@77<1|ZBu0qOLl5#}@P^adlCljc=Sj-e1`5(d3pnS? z)fKpUzFb|_K*1upS}9jsakUcb(*Eqr^^`v>BIw$?cAR38av4&_BxP4U1E<%d+I6J39LH0nR^6(c59;@r<+yc?gq-AloX7SDfzYQ=uVZk6KTyz z(Lli-!MaynUxn-UDy%M)Tud-};__?PQHM&~inJXn?dFETHMNpRI%67G+dV=i4ee3s z4j<+2@G-Qea-v6B#E9>iw)QCZ86iaQyq+GlFtcBV2(-ROxvP5Od(s^~s${pPq`^I^ zy2H-;V8JO|uU=ItR;27YdR3KFdmiT~hR@6fH>6qf)dbg59_bhBp;M&k{RMZ>rR-sbKCTR=8coEJOb7D*q~G zD3%ns5-Lc(4tZVZ+^uVHLb|w@SVF(qI=7#OYoY(~11|s{A|SCjN%4V7u?#6bP$|0N!A@KT!|RG+ zXM-K5*H!8jmj-)~AWqv7JxrM?dvTNq5GBWw;E6PZdKq z7(P{aEtdvckswb0Q87D_|38XhGc$BbirW>#R;0MyFMZ(lSdfZUN&mtxCA}F8zfh@n zB!fjr5U1-^OgHjhuk!DRp&ZI2MTbh!i4+|w#p|(PD=x!^-zkQ6F#JxX?n(wbkswa@ zsF=;je~-%F%?v$~;zgBW6;iyYQoI}s7EMt$bSj1wVCYn-JCeaNB#6@!DyALzpHTU? zGDEARcvq!pMT&P-Ikd-vowy7e{;U{U!0>04x-A*(L4r8Fp<-4b{~IcQ2bV*^R4(bC z@X`GK?9PN;M?cAtl5UF!%WxSCA1Q_%^>&;-Qh3Xf!B!-Q(`PEC1q`1lhE>eaDJfPe zhHfydR1B^0U=J>X;p!YI=`Ju_ty1?Sf(6r9VXKPSf&8s1{|aUZAw?bCsQ|Vvw&QfC zO1?Eg`73`R9sf10@@v=88kM#aY1gQi`I~-R--LkH+Sl2Zcgf$vr*I1%#kCug$;o9XYI3<~M z;+2N3`#v}A3Ymtiu;BbZ9wB$BE0}aALNTHhEa~I|T`+PLOQPbe6>65TS-f?d3NCAA zcim=*zk2q>UrMnyKrj7i$*mo3>8nNhYL=cZ5b3K~`uzySh*tA$?}w0%qO(>jG41Mp zakbLg(&$|^`h&W+`}nf_N%srq=5_LG7M$9xgL#E~^V0lom1dky6N%IP)@wJSo^&nE zpT0)2wyu?5I}I@%*5>PwU?R5#izDUEJc>{Zci~u=`2F{F9gwU3><(22^o{pcsRJ)7zpjuv z@Un7yOYG3zJWrIR&s(jcp~?IkhnM;&$!~g_XA9b9mcUFnJ>F1 z%gx{DK3+f5a@rqpyYM5(BKnA3xZnrk!jHHv-hfaH*QQRe=_M%RM?G@YpWWFg&FCZL zvmK50(dG1!wc#0gdcn^!zO-b?yhhgA=B6s06#dIultv9|9eC4H6$6&ZD!;L-Y?Ir* zuPlr2H@>oPyZ`MY<*~$9yk>Fck-AoVrJBtR%`o9BuL)ln6B5c#{_Kr=QX%>;6IrU! zDvO?Qt6lEnRgC36ROp{UY&p?#o-1xa2zO4)eXwNMQLrQ&t#yz9WA5~$v^A2!pKVih ze7RbI8HBs}eo$*|ecG-0M$vpDYyJsjl@r~_njb|7nr~#y)(-=u?gnr4;coEMA8N^x z-k)tzl5bR!u>cl{SJE9m8iyKlZ)3218fJ&If*JhTjwU;qNYe^6WA11Sb|XQAex+iz zHrmms6F1?_jrkikiviDWkzXDxZ&sA6uuhfV{-j)rs-$*=eyaex6rc`wHszDj#knAD!gpq?PYd2sam+Uzxz*aKXmvkd5qWL!*jgE z(Y+0$gB!*ljI|xUZI=y$wcJy6c&+O&)>Tz1$N97EO`5V1MdFck&8~v9ke*lEf?g3pudtxweiWcQG)8)b85jLXS2MZp&$cw% zF|@^3`MN*b)nv!gktMWMg*P_^bEjKmN9Z*bvlaUZ2H1AYa}KRJ_ie2m??jB`zIG(K z+FwI?InhYWS+^m8)-w_vZNW&?C!&$)V=ow~E#j2^Y?m4XN6JjQvoTl<{b>GkC2D6Q zm%$ua5NK_r{FnbCDvJIpznuCUNxh?SkLF5Fs@gHu6#Pwatd$27;kAj%bcX0)Ovi75 z_;jj51z#N*AiFZ1nVqht!!f9%!?n|?3RgsTWA9rKV@A_a4S&F!5y2$Ps!n9+2z>m` zkB%8r7ai={Bi+-YiMV6*w)~%4_b3ZqU<7 zG*RU4LBor|hi1NxfSOVmT}AJ?^-Z-#B#5R0-uIv%`u`nG`CC=O`8r`8En>5?EzS8~sEh6Y z6j?C5j$(3sMKkTunn6G15l$LQdp;CsDTR8rxZY!NJ%;6f!9;GY92|43dYW1fi{r=Q zo!+|n+sBU;Wg z{E^3L8zhW-|2^m%`b^x@ktMowD0MQ1yz^gL#CM3WFDXGZ0;5Uwad-$!Gy>hjosa+o zvPPhCl6^FXM(oJv+oZwDQDv*e++b!=f9)S;o&n`S(Zaojf2)q)37|~&H;9rbXzUIq@ zWRi0jMob?z`~BBO@eNP?opd@}EfSS9`j1;;F-t7QW99rpkys3g4gxWvVo1EBPph-+`Q6N`v<>G`v( z_oxd|;z29f+osTO{4jfhd`|MOwjuFdoOe?=>y=SDLQN=cX;- z=1~CJs}*el%HwI!az3j7y#DN}CR@Lu`+d|ubjA5Qlno`8fbzoYk+Qtl-bDGWDn6=6 z`TB9PF1u%?*vEsAq$(Abj*K-eIU+!uc_LeNBCOhHv^bMzn=?jZGZ+fNIuTaszWhYh zX%5V_E~hGeBbtC(_Aq4e(%b~8WtFNkpP+Qv2{Fc(bp|F; z)~vLgmVMo_rm(Z7z*%2F73OGDpz)M3xN{2g64eywTs+3OZwlOp&1Ui17)_N|<2LNc z?P)*d$&*X1scg7g+icc08`>U#8nDr9(0z&^q|S!a0B<2uq=l5i;)Q?9n_tcK)*-uEMW?#e(xd;xq12(fmE`meeMi36U2o5=99I8FP z$955>re}{c4!H*D&pzi*c1VFYayU287c5gh=-9zIcb;s?OJxFP<=L#TLSP?+9jQ3;v9 z@n8|j=%iBmysLmeq)r3C#AeU(PIoF2l@5-z*~_f_%(1o#XT7MsXQi9}%SlNhcyT1< z%x_5Yi7X?}l;aInw)~faYb5IoK0hSjPr9|zHPpM?&Fm{ng)1Bi&c89ooFzds_Wsxd zM)7+<3unan#E`aIWusub`jyvD54DKy`a!QAY~7>aUvA7X=?VrQgHd=xJWoV>v2GI$ zy_=7avM}x}o)OQa8c1I+xLv2iW`-IoFG5uFx4VbY7pAV(#Ma^tXQq90glbk@g#VMa zLlKD%DfW@a%nm0<6-E=`%6U$>a&A1@V8FXPBylS*Mif7_JL;LD9u$d_0wn9o^)TyBFiK}*afCnH-83Sxh^%^y zx&G{HO}0ZzU>jBy?35F(qy~t?;<^#wz=>k5p)UH3TLSjeJ49IvP;a?dvlevtvJ06t z%TKI)*|Y5=U1y1R)rkb!rM#unpm%#%um?Uybh8Ch4?bC&dNXr`5Effi%rz%t@quf? zNNq!H+^J92#;cu@M8zVf(h!91aGUe6Wx*__QM2WZ6NaC(MhtR(AUWrjLhq8A-o zq!q9R?D7CVF2Ij7@YhfrA$puWang8QJ0#4*krL094K-kHO8lcyTkmqqenwtuc!vEG z8?XKI4EyH}gq43JrW=gmicD=dN|r=n#ybMF8fHGjX8N<+8>M1AXQ`Ue7%ZM)k?qj) zY==MF%187(uhPHOm>>PE=*qcMer-kb0!#7Zjd8{Dg39zZpE09D+Zu`Tk5ieCQbyVi zy{ZV8G2yE!Z+ByU=yyWoO8dG>+rnvIS83mD#L}4ZtE$+URD;{O+Ns^Y7fk8VK9-{U zm{AX#fDJuFAG1BB69Qx$DN(-cOykFo74^nuZUj2`aI<}Mq=LTY()VSPc9K3({}-F4 zXG(rbymGn|bux~TmHdNSUaOCLfmR>d#*5;e2>*XreHeuqft+Y}s z)hN{Nw)7q!H_m%lXYIrQzY1ULkaZ8^VW|Z@+&!$+mz|TpQ;B*1UV*Wb^ar1GK4rbV zY;RpCU5xi36ery$nWPeI5bh1keGe>&5N%+vx1ogRaS}$K$J@F#C?RL(AEz+4s$V-v z8#yo9y0^$hgW~R7=hpDFc=KuY<{_tOZ$8b|pM|iLw2JxpDFGUhOgVLtL~WWZNrq>H zrud&`f&T0jP4>}}^=YLlDOKPZRR!9bf=Oxk&$0t#jeQY4s{k%<%HN?RFS}nP+jaCD zgK?WrETZRB+Lk7wV4I-5s?aub6?;{s__{Gavqn(Xs$aW~{;JSgn<&^V*|(|eot%A} z%KlYj{();H`+W6l*U?)lyV}>G`T?%O^TP3J$N0LaL-Ips{Y3rRb@XR-bp@OKXTP-J8=GAH8`~9&q|<6p(nhuYQHaI3x5c=( z*|?J@xtb&AuZ*NJ4GKVKOs;nWd>{ZHFhJb+<0It{JRd!c$BR#tbvt0)CrUp*EL8>3 z+X&TYt9UhEa)X=qb3gY4pEK%jCk1Fk#5GEP&K{A;#uxroJe6D6+sbM)PCd@0saRxC ziyqeKc+z?n7x`I-KNO(XJx-CF(L}`}UX9VY=uvm>TFzaI+}}AhKsJtZpa$H_;O=^H zIFc#Ngj1RMk(fhuQ?ADGHpMoMc3Bc$K8*a?was>Tabl4}YNmE?vz^X_Q+1JeH7%B+ zUfmolhF@_`%hi@->u3%p5qD{=Q|pvOsuJ`&HTwLaIe$Z^C~V&(zqTCa^MJ~`K^_~a zqEKcoh{I50T${(pmu157vIR5GfSJ(p7sm5tqkWxS%UJ9*jT3rYq*(0ow*~KQ#=HDf z+-u@+ueTYn{P;URr?(t<8a!I|QF5v|SdRcj@y>GE4BXKS^P2SVx7V)}>c%4NYQmkvs z>ny^bZEcpB)a#0>9mVzztH64r6dV1+y6uqwaos|pzoimyZnD#~UFqsKw zElpa8(%IW&M;oc37qw(pQyWX$xU=eQYso|+IxXsiaSk%gV1&V8i|- zSL`Hx!Pfh-3n^d6e$jjN3LjdMFB{TDtDeMZ=q?Y%Ej~-tfJnU3sV_mjHc4_{7EY-E zxBINTDADac)cLcD<-X>2evxUJDT&*CXsW(!jU7!=8z=3xc;qp#dAh@6&ZxrLcrskE z$gqSA+i)VRyH^rT`9WuZ9syS}lS&g!S$^d(`WM)0umWLC8Fd*3#LS3HI1)9%q%x@w zAG2weRu9`u3v4sNcKnn8K2-0p-BjxVU#5y6syeA-jdt+#lwF!iO@^6 zP#E=7)!TG52V2oQvEH=kUD3?JG1MgC)@IS45&d5@+3a`~+}Wh7bl-waBTdVrXrRp zJATRM)%mlZC_{7@y}J}eI+I8_=uxKCgd_18(TowF`xmzn-0>xeUbn984A7dXc=m)) z^@aewJJrlfqKR;&2Th}dJZRnMMw3L{jQ0I$y25oco-fw?; zW#v^6ZMS?I0<>@%1foiBXUAPT4X@_WJB*KdV^@x$&sC_c8MDFC$P$M>Ro!iC@37!j zpeg{KKw-bCCQiQT7I1}+1zh2SfM<+NSMcpF-sq9KdWE{}TiI+^(ocMFpf6jTe}gjS zy9$#_{VJ7L9`IkKa^8vuSFVPn{iAB3R#mXgt?pV;cP*>)P1hd3Rxz|Fb=NA6FPiL1 zYGrkBSFi__u5t{mR8eis`8$=;rQO2Aif>bRtY`)xuu(>sNmcaECk&%;fY$>KY4J2hG53J>8&gGkO>PjoU<;0V#OL4fccrdxF7A1nfBl zHb1{jF~6^V?FhZZZ3M%=al<*`NaplZqBbeV32O%WKh3m15glvgEv_ay_Q6d7`pJv{ z=@VLy#RU2x5T`TYj6>tlso~zUj!uMseA(&tVmb+3GQW?cYQBqeI^KKLWFZgf*+P0Y zNI#t6sur&7_}63$?Qm;8U$UQ%>?2PLP<~RO7pY`Qb6KzEaIfZatyvtU&h{=Gc}yt5 zPpHnXP86nV!bzu)gH_=Qr{J>23r7`tk4H6{x)rIlav!eoqY9JZR5&()4qFqTfC`N+ zqG4+TG#qzElNYSbrHfAsP+nnWq#{E!`G1!O=q5zq)|4h!tj(q85aioe4(6PWXVHuC z=6oetlQFXT^aF%Fw}6)gwcfJ7Yo9{*B(3{I*8MG|`y`gVj|!d4p?zV*r2W_B(kZ9+ z8Zik*q!7WXCmp&jm+pdU*knx_wJw*}DY>HTg<_0^MrxNw@&qk;EKBw)k>glo4n$7q zT$fAT(4;&)0V4Bf>S1WY^XqbH&P-ha_gog%`;D4{cioOWNvkSiRispnW>tJz^+{(x zkV{uVgi>`9RBf24d;gOvAJ{WrnX@9f@x=;a;pF+AI(rOX;8n3xBvCl##4DZ3g7QQn zT7XI|4%Q~LdQ5RSc+R?j%fSac7*G!W{)4&nvC9;8@G-NDgHL!cm%_95z`;Xd3zv#E zq1$7Mt5jf0Z>hi(DV6sh%%v4j?k<%VW|>m?&x5K|Jm&%P4O)S4L1~R{ZU== zXn;0qDg-{=J1TY*9%JDN{e_03r$4S+9u3fOCCV%WDoVcDRdeGNj)7|XXFuM@8sW_v z5`h>03na!&9`OxcK~F!p7&nK_R#Fj|JiCw7{n+vtmZ~x3aViPZ0m~JAPGXT0=UAUB z7K_rn#*E}St_x7+q)KZdRT;kKmur=B*FQCqNpp08C%PmOi%9a8mX;O;ms-rSW{2zX zJj6*!Moz#dJQu1b^pzCw7peDRuzGLF)o?V5TcPyqTD<4;svP(HuMWI&!#3;d_`26c z@>b1TkC>~8DBnooYMJ{gt<33tStXL7;GwH>jPDC(?)@7xkp%f837(f59QxQ>mYm|8 zR3zibhk;Cju1|DAyr=Sz&&pd&^pNjwj|Qj?#hyk8p9H!eafZm}hVC zO?@mt|A3<%YOLRg<0;iOUsi^lfmVDU^G`Vpt+ zIRh5_hQn^oc!&32qNe@nz|Mmc91lFr0J=hDJRqR`_4qbm1H0n{&5CeIRONls; z6Y}&t=g@wUL}97pEJ9BrZQn#qt4*cw(kWzEI^B%8^i96ukpy0BE3HYSGTbOA;O}z3 z;D!WFDm5!!7mh|Mb&~GBNoJ%3V`^eb5EmypGu{7fIAtRKRV>pC!LCn zQ#pgvayQ{XeNvB% ze<_oqU-FR)r>H9MOLcp@P`yL{OA7^!MdLWFQ2!_G^b-253Y6L5iV7#0p*yXAK8D4K z1$Oypy4#YoXXe}GW9U8=D7DMSQilr6vy(-%QU%Vk>*-eYe<;|Bo+K7dFQQ*7HF!X{ z8{=lhRllo^Ys+yPiAN)8qNgnMv`dtcPbpY!q&yiBBR4C%*vS7?0b}GV#>jLLJ*yPY zx6`BPH5Dke(_?6x3e2<9V`+y9z{uy+|Dj-~G4fAJ&2Ee=38yn$irTR5ecT3qCZ+fp zm*NA;z|R=cpS`1572{`Y2tTI7!8UTj8x|6xkr-XcJvJ7s@pL*vU#P@*0Mw7ywV+*#6?Glg%r+a@l9(JB5vC|xVdd*p~T=fd0 z|IVPlqS5nLDlw}Rh#jG=K3V;UQXfO)+#%-Hob+us_h&xt!arl~Hx&10%zgMgZJAu< z0n1|<)-B?UJ|_{MQaWwcEQ6k#=Vtj@SiWYK`SZlWubJg~!y;FG*_rv{l*H~40%Aw# zay}Eym!00%LfAGfQ5(+~%7TL=m%PW)>SqI6c|?BNkhSud?8}DiI9;dyud(Av%BnzF zum=q)qK=pIWs|{zSr*BY!Zwv?q3)}G>zBT2wp~Ft`lYKXvFqs;_5aLZ2$?JBP8D%x zutg&7QW0ka+a=;26)_9jb$4s6X)D^=g73PmUgx*aR@V8^Rsy9m4_T*F*VyqiJ)i<* z!EW$I=s^{c4CbDp?R-qd89O&CI~Uj$)S-mVx9e%6`acvbM&=6Iq9RIzNr`w?Ma&Df zNyG~(;;h}-DRTvFSIA@EYkodG;x)#Y0sDAb^qOCm&=&V;24`b#U?4(=yIu8HsUUyl z3bNEd{gt8o*+(!*`cV5J*ah+YnVGR;=Q8Ot>XY%n6a!{Tx zTNW%r1ono|7YZ+=>rYFL)Snr4GD07-Rle*LyPkHc|BHiV$X!8~=Sc0E9&D9}D^a^yd>Z~{ZXw4DVo^HqK_8b|*%Yr?i)b99Y zj`TwFd)=`@MTIC>P{QtLQ+aEGAw;k{?pAT8n*Bk!W44`+(EliVX4&<0r}}?pum!m* z=w2035^R@<`&Go5!ET9Iry|bStvlvnN~4|7{R6i%9?9Y9_aiwNWj-^`ctkm)miF^> zh(MZ=N+nV}oBi@@|E`xyooE$bZLz!;aq9~qaP8M$Kh_6%!Ti%^hwJ%bjyGSrHkC?L zhcnLXNSv>?wD+OyO`#CJexy%|%xKQphchF5eT8PmaN^EB`ZHrWy1Q@mIF9b=8+{^2 z@9YyD3#S(e>twH$xFEbo?0P|%zrE`P;ojGKAypf9MjKc3u^AV~n2UWNadE7<*tc|} ziHdSIs;|RpBI?2;eXOk)Q$Oqz9hSw9zAj5kA^E)4q{S=W=@Tn1=~K*U@yC&U(n?W` z>l1qt+tRnPoy@V1({N9{=NVz*J*j3UdN#j9dCJH1xvxdge1sI=wnK zNQsllI4P66=qQcyEh0LPQO*O3V^GfP2cCq>d%R)nSTvh^?h6s&%N7Td2s8G@bkT1g$30pS?`^xH;}TtC$Mo^%{MAEM zB!!Xm*fBEn+FXx0Le&0iK>W@IlF*>|(-Yxw>GleuVuu2zBKU>5{M zs7Z9s4Cc>eyU^-7;nUlFaXjKr%;!kI|i z$nQGdZN}XwLb!i^xSZ&2>#`>T^oTO$ZZ6k<8C&k=a`k6#YPM6OPom#jC@z#j3SP3{ z1-$MPOhRa)s)|-CsW{Tb2+JglgyJH%6dWyiaYZ=o;0Q_h;`p=0r7y9LN`!Ek+a}U{ z`9y$jIXgfjVwm8|@MuY5Uv~P4szhzPa&|bGjKr%EkCO0Zr=tG+*#bVctwa;FRRwB- zZ4e%#zo>{ZyCOxeTR(XcB~TLV!qrOtobDT}2sawkYuNmRF{sO9*iOsRhROZsYcM56 zw3A^*oTKZwgz++gUl-&2#DZkfNg2e}(QcRFsKpe~SBx{$;7HhghgUd1QIc4U-azFK zjdA1P5X2NtHAH{VY;cxy*n?9Vi6x`XX?UutAv(vop~?IgTEVq~<9*K*LqTb3C(3zO4$ zP%xudVKT%KW~3@i&fy3%m=q>UIbxU|a|)B^aYSx!L`f~j6u4rd9MkDyPI64|fLoZX z=9pHOn34oXb-S{aU^>w^c6Sr7!g)?I8m@3+PCPTMCcMks4jJX<7vArkP#~VW2pPA( z?v=zFzzR-rgHB@5NdP@+p&o=L z?G{wsj%y5>Za1YFCk>pF&&3uYqBI1>&(;3tpf6h{56seH_Qk;v2FEC6kQnNB^#cyW zHf%K2&DzAQOxPws*sNz)kW5o~e`HL5&8M>|f837+@=En+p!KuYceiqpHoL?hcFP-C;rBcg_>9+`-UioQIQ8m;CmVPasVeuedwp-JXvehU;5dho;}~IPS$Q~wqtZ3)AG~G#3H&+nfFf9 zuD)j#s(ok;xu?0ctQRfoS<7e8k|tWuPiG3x7cJ`zojiYCue7X!mWS2Fo$PAa#P833 z(2o{8s68!}h#3KGGu=X-7a`BHkW0>&DfaUgp4hs&dbCt9wV(y~9s+{t9(*qIVeQ zunTk(k*i$o%E!>ZIjtWDC|A(OoYap~T@|CdeTORzUGZ!;?M5G0!Hqst!O{!l>G(!| z4Dd71#>v{q^HhG6&2Io~^7A22C#89@+byIH_Beyg4$%bsZPgZIj>2bERU3ex~ zLGP+dRl9O6h~v#9X45QXAvfEtvh;ncA1;j>wp-Op1vMIS#-+94sL5M&md3y?);udO zOq7Qa>9-dK_#>$t*lys|S&HXqH1(FO!Rhkg9m05r0Po0)1djvd7irHQf`UN*s%nos zve77QrEYa6^8)nAK>Ht{rJW>6u-o9BEO>Z)Gg#yXazVPv2ov<4%b;kcRB>K!>;`gaCaj zpet&^sWedtL;33lm$w1=dWYj#*r~;}L8G-Sa0|YeQ7;DScgq5lS3z_!s@*wdTIt2& z0#h&Ww6zyiqtV%JR4hQHu>b|!Untxbe$@P&0dCmFVJ%mGesooHumwYNL@mttvc$xkiaq}iD<47%Fr6?*bu;^m9(BFvA->}dn5UL96H$1NV(TM$x;@R9}FOF1Z zYG{j!=xPcUgs|E~cPV*YjT8(?)E`yUvyBvNK~y+Roz}BYVXbLvqa8`h-DIa47awX2 zwj))9^w&qbF`L-L#o^DcZzKwKOM<5rJ-(EE7SlhYxHdNiLx`!Uq3tT_WgL2<+vCh| zI+Sv%BK5`LpZsv~_eF~Q(CAo?kSFQ{2<{X(?&2T}N)>bjJf-DQWp>G%H z+Zj4t&aIAhS8iZw4V>~#obQni^Hq8Ii-QExFsFDU)(&FTe9Fg}H%bSdllJ^$Nt8=s;-ZIp|9>|H% z+Z^M|&I}gJv(&Tw?JBO=PSJLy4=cdhcd_syhZ`sk1J=5FYTWw1*vHa6#uxjbe_ss^ z;WSxa?1N_R%MKfnScDM#=gT_55a=WHrQ)s$wjiQ{zS;+!xi4FV1ySj{MjpefAf--b zR3Q#*&~f?uKe14QJU8q;A<7|-256P>$?iXuAo*i*cY^d6zZpzg{ zxq4r;2s5%9D&v4}cYqd)t4@4Zz< z^(j2+Y7Mz@L6T|0M$xj7waloNad#v8^-3c{uHqCQRdO1bYmY%pCfvwd1bGW1uLm*; za0?gUe+;x-?gx5-yaZ@Ki!OD8zbfFbGWh5k$W|_Vm0g&u(JquEcxj;>6){eK-dA;s zc8dPYMTgT!JY~mSq+x7LyP4k;=J%NS9yjxQ%>15VmLw>=WJ(Z7A))X-@)X`j{TCh! z;nLG0Ix_+#rMFYW>|`-Niogv-JGu0#BH9CTwU3J#S&C0XcGtS0zZU4P8TwX0qxin& z;(Og-%jN#Cb@^%3fL}qZD*+WROqdyU?-pw^s!3a+DyS7M5U-jX=%aawqU+R zc7j?}+_Gj0h7ffL-Jzn|dJA+~ZN|8*?Mk=%)(&U)tsM^cow+DL;ywxg4DKs;suC%O zEQ#Wm^TSnm=51oyo8>VeVlaC6vtKs_TOcMv>y#L1Rz075Ek(=dzRE3U<8Z!(*~oIX zfSzCFk}!_4)gU8}!F@Ph$1ic>2Bhq#8Vtwq9Kw&^4@qqf(6Fek2z~E8dx1(LOB{pH z=0Q4&k&Xh=WP@}R)^A*QJiSPeW)NDIxi$TWk$wcEx~SY7{|K&M4cItYKayIxQ!NVp z2(O-dmp=dwyYb8YnkHyl?k1YbL{mZZKCs!3Q&H!9*^5T-v2#-a?#tHL<#f7SxOi9h zx|Sd`LD|pTM6;P_Hi(XlX)n(f=!LuD&BOWk1|oU28)_wonc)CW|qm+@#Gq%+o0j0z~3zF!ciOaPQbJ) z9Icj{#(ClLNc_xjD%rcA`1}iNBk|1m3k^t1tCkiZqN#f4=x91(OMooB5pn8?TLSd$ zIGP{P)YhI{I*kKZ?BL*4aqZfvQbTq$*>Rd7|MxW6HFO%@xASLTZnA5_>6&z!rb|Ru zlbuW~)}d#cg6+~WPnWzc%@pjGnAsA;r)}(F@XTZpsf} z2g*7BI3=l7{n`;aS}v9m?T4~V7p7z3XjGoya1Vg%o%&)TiJC^=e=0!DDt#iUwwG|M zHz6j;qdDF(sR4laF&yvPC4MZ&`*(>S$MHETJ{GQ@70ULz zq*C(}iIOnBs1@+Hcs9653MZAC<5Y+7aW>8#@VEA#%GCt~{B8ZDk$Vt+hbiEvc6k(g z;$y?fq7M$~efpQqq$2U^GzH(>l4EL1@q)d7{-=Tb>Yu`R!bw+zla4{ny-wFfy!~`I zzx93iiA#pj#Ds1~9K_ox_4K_NOK_MF4nGlzyq+D2azBe>8K>1aIIl>7cBx;B!GFLb z)(?_f0(5Btom4*<>Y;_s*mAvFT@eEm0brF;SA;1XPYU~i!;q&j+C5k&GS-Q}dedO> zHyzL(`oo%r?>Q-qZuKjMO=PTzzzQa{*CwKQ><$YZssRbz=r(dXgG~q6?4&$=nhvNd zlL7gH{|t%FHjvjVWbVj5O75mG&cSnP1Jd$KH`uuhb}qn1 zT`CVK&V{hDOSJ>eg=&9RA2@a{20Bde`jyR8GDs_$|z8o$Nx;8o3odH!+m zt6Ku}4+DKLp!>K@Lvb&!F*-e1YMuwIAEvdBdgpn)O;Kav*I=~Xs_lm^HPZvu1!($#)zxc?X_H0uHeNz6Hb89_fIa2r)F-3(?1IkU`D=}X$=N}C_i_;G z)zXY~D+i(II}GGO3!lY$e@C+&rbF;QzZptFq(UER49Bf4dZ$&sv;+8dI z!A+Yc5396{&>e0$BU#Q!$oVJa;E7QtMG|vtt@hVQ;6g{7isavg`AdHzK(+$3BQ!>? z;dxarxq4!ydAn6|c@{s3`6q$Dx)zhk+H&USnBN%wNw`bn=SqEXxiit2Wxo|kf_)le zp9btVft?~c4V}rMb=s`cc7ZL?>$e80{Vq3Vh%rOJoLA@4%Q3$&z#%vSove)oVG1LN z8|=7zoQ6BB8sbBL@aTu9i|I6#VUCC)g=dT^bVGBn69pWh3V{hxuty@eGsK%dy*=J6 z^TbUHFS^@pKrI_k3j>~p0To2G=)m_`tesLTEUvi)W3r<)R_Go#W+P)Z0`t_x(rY)u z(G3Q(5t#5tu;6T-@m`@G^>j4bDY`;E(%}aOx`0hda5tg}J3YjBEg+2-0YKdj>I#Hl z&-;e^9j5X$(P}4Nnv6y=1}?YVZO?ns*56~;BkNJjxUG@!#VTAHu5*aqWAIxL7uTUb z)oWM2XQBP#ZrBdfzg2+OZ$9UISRV+6;E@=8sbYBDK|4WIYIW@%m1}(L_BB2jA861j zB|M`+Ygprh22>J*dPX7=H(*6;-KMX`@zYT!mL^*5N5;zy@M_+T*J*$yEU#P8WBy0C z-~r%H+~mnlJ$#ow*aG7KNE{hl!81$XQ}r-UqS_7kOAPMM zZgdU)_}Y`kD}Kn0`i$Da<+`%40pmnQoENP8DJxr!=(ygGx(;D8~k zgRA?H3~J=Tz0HQ>UKy zew6jnw`#5FH-s^Lr>lp#T5s6ee-P?yO#J}w-r?b+QT2l!=w>j5?w>zYP_PR(vtB*M zB!{-Z9uSknKQFSif4TDo%{V}kZQs;3BJgH!7E@@6SM`n~R*8DFK zC-Srx(;n!>cafvw)W3L%BXsbxx637Z&^6fO&4nKSC7GC&Q$qNQ{kS*!X5wb+K%YA zE*zfOR=?{koKAwmff8ft_pBBa4pK(dGprUBZWR{pozH>B(}jB%Kf?iq1AI*F;1nnv zq>QS$=YU`CX)m0!A*oBY?`yJzj~!jm8FUUk90gQY9=OXT_`PznRt zU$P!&iYA;I+hBOj-Yj|kmbQa`izWL7vgBCwRCk)`{M#k-{ZzR9nEju&_A0Eq{aAOK4R?aObJvxp`Obbz^1q+> z-;ezF0)Jh3l=QffLBFB$Vye6cx$tQQLn;jTGAJ5T3C-0EL-%Z(wbRaee`=CtkX;Gd_qTaUA$C^xNUiw`UB? zg$E?-%Zc^n$ofU+^eTERlYVFL8{eIz-#hTPQkUbV;%(>XG7*ZN`gHZlW3*qT$45Sm z#4rY)_!oDQ=&ShOz76VXMqy2S2eihRx}KAEZ0+9%DQ{Mv;gs!L`wv43oYlF3)8Kh$ zG1B0vOSpw$%Bk)rq2wLzqVnE_nc_*_;eC2b|6WL%QWy17q%*q}@;t@(Q(O8E z1CDdwr&-cYm{L5=6x-a96lXG~OzQixYf5Tj-ucfZwAG@~p&8YkN2W_X`!yBlN<96!3{Odb}MZ1-oTlEf~-Ezzka->KL%D4>MKmWbF1o~g`_FZAAr%7Z_@2gSkRp7*y7!_>#8iSAQkf9t{a{jGbQ{jCFA z`d3i#cz*S?|GvA?AYstdT{kSwU!-hzU<+gmT*1_gz(EnL-i zf;w%R?#sNP#b0{oUw`!W)-EcB-QL>%D5>-~|LbgTbv7v%F==kH`<1$sx^%l9BbEhh z&Lwse&ne{+*u;C6Ddm!XKJEndHB-tZuMY1Expunj6u3?$tif#98T3Mbxh&(jcehd$Zg*}%BZ3K?N8tCA~rqv z4_$ZDg_{3Uw{V)sEWhGfx2D?lgriue{4(yF5 zfB#lkh`0f!&r9HMaGz7^HT35SI5oF~9Lu$EHUkQ5r5lO!4@=2!Ajxk4$qySzZy=WI zbs6k&3MvG%Si%3&2)Y6{8CF2nzq~;AvK3GSFdeQk%ZUyjXcjx3lv-7gRRvgO7tpd> z1vGre1+b4qC9|CHEBc1RzMn}>8FI>i)6KvMpPbAl&p$@}9)3y^_y09DLwPWMs zhTpFLk$hJp-_^i(^M$>tf8oEOAKw7Qg_|Xd?K2_=f zp4RxQ?Q~1)059JiKAUz&4)FD-tKcdY8kubhkc9IHEoH~=rL+s_Le7QrK-!ytKN|Lh zeCwt`XJIbn3pvAmqv|~j!F`uDSz>=gOIfUX#qz-=B<&KE_I@Mn5@z3}q6Rj?Bb3cG zhS8+M@D5^l2QvJoVR#2#W}?e_Z8}1I(CshH>0pmk@d4ua0CJr7Hu@gG*aoE@z;eIt zZN2IQxEihs58#z33@f0q3lDH9;=XD1AS%!Uf$=Pu-55VO0L!zge;*}1%|!S%MZ2D( z6XWB}(V6np$U3-9KW)@pakNzTM!Mp3V-K|7q)?Zh8M_kHUAs{q;h0v18+*2X6MWWH zTTWOz)*2bt0sw(d*aKJYW+rAv#$i*ja3inp?c^g@H{#tXToPP6HL^~9nKSL%a^fqG zBE@cb4*lB)J^OaXcWmuzs+%}7E<3ju7#jxHWla&|V~7)ZvnQ#jPhwHOCyM$cKK%8< zx9dLmB(8Gy%-wr7S?`l9_Lj3zrC;zm=e{l2Nq@%Z-Yrz3pRvZXTl%2l)X%uW4xQcC z;up$#=60Ta;_!1xx&P*W`_`VWe#Lor!a@iYFl?TQyTLTr=n~ByOPQ%;w;qKL6yJK( zBRBP`>f0ea8hcAqsatV%Y`ZDgtw-IBZHIStZsQ*}Y=vRwHePMpBgYvMY=j+lgg!_@ zA4H*FHZmSWw)13PBsMRnkw!CF_&iyHhmS(<`!Htytzq^s7N9G$^7zK-^@fXjzU1~4 zaeE56Eq#Y>*QbsGe+mYQ4fhQHL_huvN`eo{*>O$lZEm6)F)JK#JD!8e?|2T>?wAp` z16LKhDnFpTl4dmNFuar)UWyEN8HSfK!^ut+QB}ib*PqGS*iGDaBe#3rK?A~We7N}d zcfx?sQia{f8g@a*7wzVEi}%Ak;nNJxZs|V^o~NZg#wqX>SGLoWOm(3y+!M7X`(GqA zIz$>BLXB$g>{T#tIrJQu%WeaWa0ofXGH&5sc!*WHY74xe{n&Hp1??L^!SitG6gq5Q ztEC?2jQh{-o0-~7il9zY>POF^XzHtH_b<$GG3}>JeDG{IY=*vmO>^zY#_^efjcYM9 zf&qSZ;qwUFFouW0sQnB)U!x;u6(?HL&C!i;?91OUIfI{^r8ma@TQOB_909rYH~fuCWaULsj7U{(tr znL9@P%CK5Mtm3{gbs}^Un7hD`-T#_z!I_Y2w)Rg#AN#-R&mkXt<4CE=ZuK)U-Nc6+ z``_^BQAYHxXHi9(ku4ji(7aBUYVTj@($S<<9c$`B)7!2F&+H6IWm?O;3;E zLociUS91TXvFRCj5a)lT3@2tZ@$COfOs|*2NmEIxuDsjYGt^1s>VF6`GgvjIlEWu+LB5u& zUMl7Lg$2M&`M_<_yL!#1?J)s@Z@u8>6Zf0oL|@s`zaNwu zQz@aaTYZ$P5R5v_sWYcWCYKnURvX<4@*Blf_>2tBO*9K^_^9Qd)f_dM_L|HuR7$NY zELginsdXU#&F_MlvCf+|XTpir>G+Xpok#t>t`x{SMtR2|@9uZOF)*gb0|H}E#(SZv za1vwBIIbNZS*P9%nc$F+wE%eOY|&yPFvEx#uH!3@B#i8 zBe#Vx)Xke)ed2ab-OvB_wIK7~PGRO)Hv7n$H*cJtDUXfwH&L|M{V&r+eTh=wG=YIS z7Q{dQ-Mu94I1)G5*HXv90$UGkx0wo@njZ1S$JVu?wT9W^f6z>iRZ6{}uwZ&*yxCIf z1yCF1ck6f*f6kj*-#0x14Cri~)37k{#>pl;hC-2yVZQ$)Ed-W^7vuRFJlA}-5wLjj zeDK8j{OMvS2h1t^M%1ebxG$` zI<%#4M3qPs%;2V`REdyTA^42?^VA9 z!PCuARfzeX&j&vtJ^kXdaCTk5Ry&|0$J!53enyH}GoO$)j7ftg|BYE;wQiI)ad}~Ch z-G#%q_o`REN8843{JQeIx%H&c?!qs>1sx(gVawD~RoIOSHn2=Isje(6xC08-5kBx!mpYC3Q3UrEthS<%(Xc#e_Q z=4?WnixINxwNlu9aA^w+`XlEY=u5%pbE9XD(GS3u=VPO8TW+mT}D*1qWx^%HCc*vjo|nHP!nZt0%{ z>M`{TtV&oGRjPk4q)n=G=Yb*OI5;_}X6O9}vfF{|&Y1`14P&@EQLA;(sHfh}S>faJ zlWP0Cdob&E%=)%@V3c?k&sJTfIRhOF+gw-JzEh~U1?<{a&!b`MYFs4yXQ;R75mmT) z9#z{;J{W#AF1lf$0WSKQdC%%)$3Lgsu6YrZ;ub}~FCn&UxYG+pHgHgs3qr~bJQkn0hDP_E{ zpsCb&@wQ$yW~7Y6hy<@?9E8p_ty=VZxPx;rZP@K7Nw%Ai?IvKmYYq-Sz-6@=r8Yqo z-(v)Ag7|ITT+x7SNoFvwgU3sRsaEi_Fi2(+wdiwd2`bp{Khsk zCpOL)E(aZM+lkwD%@h~F zda=oT&|z|YfqcjH=;dyBZ?A%V&FgUw-v_I5ia%{+McmveB8C^t4C^?MA|7H94`C@TXAuvfhzH=;1bqri zJyd`g>c#ITsYGt2KGZ37V63&q2#ZgZLO;xI_rvIRPkTSC?Tsk)VRXCOK?DSWg%7ja zy#c>euP&Phw+BIHUrSxaKKSyjwknGgtyXh%#t4JYU*hB)`{^DQx(9`RO$*(FLVs(7 z?s0`)A%$MiMQEitGudoTfon4YC#$lw*RtSiQSfU&0G}8hQH5(!aE}>eu4TbjZN)+6 zKUmiLX^^?D%OJz!+r;Dy+)LF$=hvk0&$95(qVU!SdewsQ=BDPj;*>p*GBG)$e?JK7 z@mNH8;E7Ibj?bck6gGWs9-Lm9H}|jb;dAhfH=w$>W~BR0O2aR!r`6i)sCQcrb)wsP zz$yOOMOHmZITcb+J^FnP{3i7{<%WxT73p^y4o(p7w$$xCq+e#O17fJ=jFG=Dl+^^= zK5Hg6jKBvG>Ekj_fTWqtlZt=8?1RwzrY2@4bjq7P*sD%hyG9i#0~jVLLR&#}L4p0q z>ChRp$k|AXhA$KZI8zFs{O<=DFfC9j09*g2{tY#(0*E^1?bO8$z(voSTiw@OqE0Q| z1`)_E(HTa$GiYHeVkvY8g${wx*X`_8EOZEjPU_z%bO?lAX@m|5p~Ia*A>3-t7+LdA zlQNqHQ^idX{5=qaHH<%Bc(JWuOsHPW^^3o7;)QnDBpud6!Pk-wS8eT^TCCR62)|R* z!a8GvMj4ezrDm`q@U_|VKmqO?nD7Niz>ZD7pM>AIUOEF6b?Mr2~?ciZ!2deXNkOrZ!+JO_0gYX;d z7{%`>K;4}9AuWCfi^s~DWAUo-iSF{#1n=<_NJAAJ@s;~f1b=^@=5d((tb&~OabYWa+ z&P`uaR}&XzIY&MZSGB z6+*h#>e%#5vt(1wrAoON;J(mQ@ z+KMKdEyI4t8>N_Sy@dtT^4oeL@~?jczUhlCzpWR_HwOum&8ZDaZR>?a$y-3~+BK>` zc+cEHo>Fb=1vQLioZl-goU^HN9jf*Pu$z zph`+z(+d-(<-6d3IY*e+^g@KWaTi6HL=N`}$#$gX&!a3cU>*XVH2 z(dCX~sjBY4{kXr~Eh^`ZW1(_ZLDHG@-UV|S-6S?v@ zVItQaN8-suu04(lE=^>^hLK65!~WG$m;J{Ta5zzFKW6*{Xfxhytple^N#BPghz@}U zH2(9C^{NH9yP@`DLW~J(^v?_7C)}b_`;UW`z42pk`n5Tu3dGP375lkV=ppXpa!>=_ ziRwUG+pf4_V+%{dC72zNC3(n{gpyu)xpqwtNx=t=U@NM5R&#Vy(}-Ao zx)k;FaoRaOeH=KG(aULU+@#dg#~oAYRhK|Qv$bhbC){ZyKh2V37(#x>l6MHn)3m&% zCGH=Ul6M|oSOCjLYUlB=Zgk8Z=tkpf;5R5z;olgW>^%PXt;eV>kc9VIb|T4V_&1Y) zu{^#knAo)WHcU2|si%r!>E!)v6fcOPG%qp5cv4~G5H zE6A|#J|0ZS8ur~Rk_`I*i$sICpGA^k-;cWDlC7DBm8WM$W{ljuO)3A-@zl!>p}^Cx z=v51lS{*um!FPJq#h?%NJ|(dEBA`$LxaJ@3Jl>B&!^fwh_%}qJ$VGy5=R%E^on=__uKzv-Nd5l z^&^u_IEcP+bY|gO7Zx{8Eri#=mcRN93u_~1@!t#2e$&err8DrR-mdke>ijYKxA36_ zN~zZsUcP8@WNKu?GIilSy{dj`*M0kKz3MHH zfHQ>G-Sm$qs83!Ao2d49JWmE;CJNzc9k#KwVD)CL04`Y+U=+gT^+UiDKIA^RzgPYB zRp2I6ftS3>>d4%2Yss+PH{ON);oEyv<0?Lb4?o`JvOm*qK%evqT=9E3Ec{JO8Fs5T z7`C`Rx#hlI^)+C!Woog~>yyJ>*aXui@BEg-V-xWBEokK|MlSuhUOnW+$W|Awc0E!v z-Rm;nRsilT!%MG3c4fwkk(xz3;pn*?S?w{bwsV`boHns$s*O}zL4u*`n+)4smOXsI zy?_RA>3zNG!H;tb!H++?+A)AL)$=qz3IHb7QoDl#IjSqR9I;~zHqzQ$Yfev(tZTwq zTsNQjEY~wu&M0&nAe${19@Fc`*3!#pmT&W{v627>!`dt7#bS_Un0&00Jm^LA*|O(2$sy6c&`FGf7&*K^rk1?STNw~}uLJnSR+9?U z=cHEyX(eBVE1@zN#qX|lg}pjvG5 z^f*B1lj`%@Q>lsn%1MrgQJWK;#IzJ*s-t<3Mws|qNm}(t*6~iFF3SQZH7a^l2!|uX*iq<~e(l?UMsK z@m_071FzMk+I5P}|62OQ?>9x|y>_`4Ju9=nPV=0V#6eUnSL^8@w)UZI=gf+d1yQjw zQ1!_)9@#cGE0h7ORHdH$qpnajND2P+wolGl--kK$_LnU|3Vcw*b`w!A^D=9dDGyX)a? zbFQ$M46dUV@Y+T^9C4j||@|@aJ7HS%*LAlq>7-R~^|Kev$?enaq=J4aeo2JeVDlF>QdV-1;v}EtRm5g!Nx``pxLP@kK}DiP@v%IP^Fq_Pi!AIfUR}{ zB2dF*_8SLX9yRaOD9NQI2p1aT_&rcBr@J+TFGD4r+Ra@Of2^v6KJ0*VA_fo2t z&wfz&i5MaYvI85PU@Ge(htIg2v+ot&922Q=#Xtk8^=`c(;~>jz+H9DtxvelmSQeL* zM2U`*tPI%oTCK$3V*qtPioc`SqK*4z#duUqe2+|a);4i5r2){&E~XS{$(-qHQ9)r$ z#q<5zCb4n`L_F)vV4Fi@1nV~yf{cMQ#5*( zmjX%@iez~?C{t^RM#%CiPnU&tWO>5gS?HGKX;h>EQxqi2>*2~U8luofRD6~X4U&Vf z^Af)}ND5fCkW|d5{e{zqWa{v?Sdd2YZK*Jg2yLMtF(j6@`5-Z7mt{vHzflgrW3U;Y zZTt=cWis0{+tX`aaWIaU-C6BuoJ3@AZ*516uin~@q(LQQvwBMhwkj<~bsi-|b&~Sg zAaJdD$x5FZy^|uSF|@gzbvUdlv4{>Lt@Mw0$|K`f0$L{*#ND^f$=#DnvS&?{Ssb#w+IZ`I3@XY6Lv{ zd8G>s>e&BPPI{HaON&YUY``n748ls9MG1-dFR4AOs*sJy9tEk?2(lZdzBV-B1Spka z9UD{WWEh0>8kCJS5Or9K8rBXW6BfwmCI@;z z!^lf$qA3P?0(=Se*b zgOF-U7%xC6>`VEyTp&hgfOtd2_U@n@dbKooV~6l8UvkP)sy%C$K{?AkuS)Y&>mf1O zPKaM>Y~KQLm8bW1y9PntW3o&7kUEeAC0@C^Q>vQfMP2<*wWa&jYQ4%~;WO>N<^)SGs>;*i^*^LEE*YjyRH^bz_uX^Me zq}^l?5LCTYr6O65b>NVx!VCU(0E5)Q(x7QJ>m3jY;+Q(>$xaytQ{IkSFvUusz zDld50=uDv0m^OG35G~-yZl1wTD)1yrwnL7{MT=f`yaA}Xv{B^{@j|zBRgYJtWCzZ2 z2uG`C>)ejb$V{(N*j-6Tt_6`^39`F~2t*}bthG@Fq=$NU({9N^a%7Ct)ima9$3CZN z<5S4F+U;}T5qk-RsdifylS||S+d7(9M=7|>ZS49#Z3u7s+P!b&pG0x3P7cftq#9`i zNml0xuMLtB&0?{}((mYyq)V5PJF^?qkSEp4Xm&LclX(TtZhm8`UU{**@|avJrKMr& zT{d3ONKj;6Hl#zytoi(dqbR0BJcusYhRG&RgGLHF3qU0E5^b7xU6GJ7a(bO3C8Hrz z4E^OSuU9i}@4s}28_TGl*iaFuwUyckpHoYGbU_Z_8IZ?S@?>_>gE_1lwX3&5B^*d- zd=?f{35yhW$xO(EQFNPQk2cL+Zon($8xks8D>i;VJRF^yBg@iF3+cxmrzHug6dbz0Fib*4e~0d^I`K(S9T z;}5#i+lL&U^!dRg9Ds;=G?JuVR^vEF%xg4WENA5P?Nru4 z=D3$IBxYNzaW*lSX(%3~r6nD&qnreXU1~kRm?uWh$K08g-ap4j7D_({dXtRNs%O_|48|Mn zA_UaAqBznu-6<_7a>mZ)1E@g(+v_`8C}49D@c_#UN-+&5V#Z=1p67`%PeT>fqtjFZ zuEuY7(Z0eA@9l!o)LjgVT2xr&1{bk|!N`EbltCi|bdeJmBi3E)jM;2OI%a|B{jVkO%#p;iEtEuuYU$R}*XDyc!V79s%GnY6RCOYa6^a}{B;&eVtlijYNk%2<@fW!-h| z>r_9k&^Ru3d3DZMXA@I6W*P^S>(MR@6N1DvQ)l7@5-~Z_NP}u#tleoS;ayr8C~>Z& zSkyzRh(I*Rj!DehG!oS_y|^PL6dFxg7cphmP=gFktkr8M^)i1r_9&*7(JyCB?dbpY z&MHfbMQ&PgQpjX2a-ZDR>6%mRNX6t=OZ2Hq#e_^F3A>H^yJ$k;vIxa>riShUcXi1% zq&F(Wl#w%L#WK#2?&-{yaeou*J315TE+$F_7^cWYOzSk1)I(mY6cb(vl9v%v0S&Ua z1Dz_?*^0#cl`}PhkVDJ6JF_){lww4&l5aBVioCNk-_U@yqC2|5+TO*km*zW^()OCz zE7H)gj>Sc=&&3$#vWu0&xUoE6y7YBRWoRaAl;OcBt_C%}MIgfsi<@{uMh6Us{%|(P zCrPBMU^rfxncXVs#Vs7guwO-fUXChEkz|7{x*jpb2TrPZ*Pw4qTw zEaklX_dD4Hjpej~l=8$!j#iE3dC4z(^=f99xbwj%ChcUu?Mi7Dt2!wMtL$kVr_xw1 zmO*7N0iYTULDl6oFC~BU9(Nk4iK^a!52v`8YW6Z`CW};wSIPJk$Wv`~Q67R#WbE2< zx&sOf!EpgZjSN?pVQHu(gnSrYJ$b(?g;vsJO5(@Jq$ zemLS4#aW*4^&E<&<$SWSJQv!vdGmVM)&R8NY2JDD?R<^$EJxRNQ6i?e8vI}Tfp1KJ*hM>YoLDB9_{wa;_OD2{P< zJL9~RL~* zihxE?HreD#kU%M`oJnFt5bJr0oMYu#l%fi9jL);gE0=>}UaMp|oUnoLl^2c`#>~YeIyyIK;C@ zvA!HrL)yi#CBam_Mr3;krt-aD+srku)X0lom?wUnBQqO)B3O#TEcAVv$XFqW!I4pH z1Z$%v9XWdX=(9C@mw>Xj=@Ujtjd$2>SHygY7nUNLRoIdtlKQ9B{V>xv9BdsSIuul^ zrV!R*5Cb=p4+V)|%44tMlU3QSQ}g273w4XwR)+Lq6jPH*aWRZ$R4%DKBoA{n+HM0} z2E8=(YhFC4PdAEo2mDlCLJ)QX$@1W*upWZ&&>Xdy=)Q!3<4yQHm>4kujFX_@bsS>{ zB=OBvCbtflTWRrPKEokw9x|qbUc$u|O;)Vt#d?zHtDi1Xu4g*96BV0Q@**r@(axw) zBCVj2!m1@zyRcHmhCE$|LQ-0>C+b}}KA)!-c9~YhP$#Q9t>lAV!>^gflT`{}#1}JV z^QDy>%#qi?W@Uq?6*z5=y~@=!_I+BdaCJ?J4J*5?c&V>#z^yJ@jlvSsN)FYe53jcs z1E4fZe2;pcqjBz;i%L@EyyWA_Lv2v9HuE5Cc-5e!F^ihEe9{-ar~v^)nQ<$_dM|Bp};rL)r#Q(fF9LI2f=M z3k^Y9F$uCjzv^L)3^8#fM$|pzGIumUe^JAP>8{#YHh(zCpsx5-!mPY%Y%=G?RNjaY zhN9W$CBF!pb!CsYK4k}#RGB3>0w18T^ZVIZyM|`@)WA8=IMLBsP@+8XV-H**yU8x4 z%5+C=tNwD?T+4Cpub}X9*^Ezs+O-9ZW=Yjd3c6BMy-I2*oC8SABINaHJJ2z}4ivby zSz0;bgH?dF6{qU^Lwppqt=ZuGHTID9^k|6RpJ_8Ovr8ykBI*{VelZG5G|acjkK3wb zg<1N>tZ~W9JW(HZ9))n?^PvhTS(`dthfmJci1;R8d#{t4w(%3U?q+A@kb^w4#N#7n zZP^g;6I%9f>v&lbR4RO+xU=ikr7~?f8?{{aI5`TTI*nQ$Cw`jhK^^L+%_;;*p4Lkx zKg=^fsRf}PARtetSk1Nzaa+^ktqHUs%Ox`R4Xjl~Wj))KeKjfve5Xq^Y-CRJ36^0s z;iYTQno$_>xj*Y7qcHOMs-3NiDAvdQY{Nyl2iv%OchQbHQSMdsnIgA#BDhJeJ;pJ{ zh9fafOXZw3kA{b!#r3ooI%DOs*ILo~(^Y~(}4b@D# zKTI#vG!lsPs9_1w}n_Ivt7;^}^}2nPt6AoWYo*%Wh){NYD5rg=OATm#GO=O-#zCuPL>m=7xi4tveHOQ ztgKcR$m^+B@$*^~1{sGpwmO*%0t75p2V&pHv31RvLKt1BHf*~wmS%b+w@m?19)#r} z4A^VIF=qUq&^z;nbFZEavZ|tT02xTgAgrlka*2<(wDGBUnF-8<`oO5-hbAHtDgqRg zsV+qQQ!>rRMCC(rjUT8HRRGDMpBet5QZr8$P7FVQ=)wtC2+6u|P6?c{xdLR-9IZ^r zY{vxt0T;}AY)F*_kVP)%168lMaxmhi7d|%u(7B}OjFJEst5K+rXbDG)P!yK@TF9gB ztem+3T=J`sne5G}p)xF^P`Xp0<-D{i^lE%{N|vsC#M&#{GxlzwgL2~Yil?0CfM!8C zEk=Bw+X+JetXAR32KFs6lp$hXm2`$gfND`GC8H8wcK*q=>7hNK2Z?HIthIMe#u1eycs;_uU3oX-2loVIM zP%KRz9+UDiZcPzPff{_)!zCZ`QYbK2ql}Os%W&eSQI(eyow}%*O(n^%25$=KqYBbv z)W9^&K8YPM5<)s(*I=M#@<`LHK@5s*EA0|`a`yCc0)x%q?g^&0xYVQ^k$wNkQvZ( z8ynUDkiY{D+K%KvQG?Z8)3`Q5!Ax0J4|%C(-!{9=4j3PN=%|E7?hnTS@7v3EX~5wa z`&5kd!;M^@tdUmK$P@GSgRK8Xp74vnPN&7>2H(?idP5^m4I^nkjXX`^ff`Q~9h*?}}I)?hZp3lG-tAw3BygM7uq77_q>dmzm`Uct20;$RSx zL|GJam$vnq4%V}r2YR6hrFP6ZFr8C{7C}_>N+mqSgzfpsyUr2MQz9IcjRjwF*E#3f z_CORGiYL!k-F416*2WRd;Qb$DeBmSVMN$OoS!6h0(V4fN!6il$9$eX>S;-eK1bnI! z7K&fo4UGp^8Tnu7AgGj*hIxSZw|DJsD_X_R%yr#oI+U*r272Y{oQ{H5gkrlpvj%0a zn(1C~OIIA`*EL>_db%6MK*U=EH+Mzh?GE0t{#Z8xeSheIu3!|B^$GUuQ?en6JI4D;zyy3Sq&bj+5VyPT#Hc6`u>;L}qu68_a_XDm2Oobo#eTVea z`hnR;qcSxz<+f`g&%ldHv;Vk?(YUlgMD{50&6Zi zy1}w1f4&=m?#UP2-99FzLAh#!$uD-xtb6)--7?#r{<#i=N}Zm*vny{t419ezQ1=f;i!H4T7(9N=fWWjEcli?!K4cy6b)nLfDP#o%~psgm&4uZThbsCmOMM(QVp z#Re?G3Exf<0T1L#O06A!OgjDu42RXt!?cP#PPIv zae)iLsVnF{C`xt)JU-2?+( zmS57yVr{b!v9JJCt700yw>ymManY;7a#ZTW`4X&zD_x4zhl8?kJONR+{|tFy*7fj9 z8X*=%12Dv3PPrJ9=7BkaAUWniSwB@fyHE6@JSgkeYMmaO2W9>Ap?4 zOAE_`w84*|yVOIvgu*H3!H_PY(+Jj)NDrC^L#E`8NepY&!awK1ux9PjY8JxUvSMHl zPh0A&7(_PRwqjNk$yV>I7{h&t(8tFqp{MG%3T>MLjgN22=6;bz!)-1HcfhfA1vvrJ zpH4crGg}a54H}Td;}wvv<_!<(sKDOQU?kFry)nT^$}c#(l4{=Y5N|EYA)fQ(soo{A zCaa;LK)f_#*Y*$&LVeEvUfBTl_`fhF$N(=0>$lR}3}F=UGjG-!C`YWn#^S0LMj3p% zB)9HZd^iPiCd0U^7{dJ-Xjba(u2i5Y2S`G&TWN6o58R_yT*;%Y#8c0jnMeEAyj=P{70RK&5xjv@CRlHYPclEmZo{ay#>QX15PViLh4 zmRQbjcaWIV0q^Ppk#9ZNp_VQGjt;DX3Yk&qJBQ@r6ewKrc?b4=hjyPU+7`Z~<7X7b zT+*4##Mr;;#K2VPDa1pEYLi*MqD%SEMwL)h) zueAyfiS(t;5sm>idbgX@a^AWVof7#Zv{EWNE2Z;;nVkSDDG z0mM#c;t{v%3~q;Fx5|Ma==Scu79CpAZmmJi)O`EHtvbT^D5Kj3aki=g2aK^WcON=u zTPK`&{J{Nzj>?U*RrQb`w!W(aP5fHKt6GnBRB@_(@NYZvrN-0#pbMt0;Necpb!qo> z%G7rL>(0E|+r9tLZn3}*)eaENh%V}i(PiNebi=5BUfQWhKtAN5PCbnO{GZNTrg?wb znJ?pGY(MM*QFr~>q4PxmiY3!F@kD1P>#H92D~AtnV4DICLF4V zcnXU;ptS*i=|E6X#oKzt#Lf4LML)$vTf4Yu5rlAO45$~IRzo0+GOqz==K-^?0Qz1z zjM93Hs~P~=m)m@=0`VUt+J^&tuL=XjDonP|?fG6k8^pBz*2w(pogb|fVH@D?+?^d(%Ck>U-ZJFU-e5! ze4k*A8_Aez?bI(uVdxD+2^a-%w>MxBO8jy?WnOmYogoO7AdkIs>z915R9%Uw)>HVf zEdpy#iGLbG_QfE-yudwjTi2WfUm%rC)FL`)RVHu?TAd@T}4ZD;ZE`4>#I zF2XNsgL{cJp)xKPLGC+5MZrs`C3sUG0AbEIF@t>}!bcwnQf=S#@%|Df+P47wfGo$lML&SSIz&3VK;j1}EE@qwd-L9} z!i)5f_9LMxEPi3)|FP9mgAbEnqP@rK)4^cKZV#CHwX}jx0g~-R+sDl;cv=Y39}?0a z(#fKz8ii!*_JV^C*VRnF6Av@_p>JDdsZ}!cGq@Q@?QO4yL%M7$d!^hDO|k4fUq6iC z&Jrpr9vbz-2tERc$*&bMBRqczr4mnZ_%Lg4V5&VR;@a4vz?RKoNNV2?dJh%=~C5^b_!th=@7u+~JujNES~~VtPHaL#2547O+Y!NNf0wD99+D{zFh^yj2ttZ3lCRH&ZFq9ewR% zA%q&QYhNqz#; z`6_wa{}Ppq!64-RVOwGemR|v|OP=6TYhJi2@wv$M;YvRn&IUMGuy0ntrcgo!6|X$| zLs7k28o*P@%xik<q&oL8UlY zEn%wd=#UzP#MXM#G^qGBN)!wJL8Tn~nBO|nG^h;LV@$N&DGe%cy$V#dBP=9_ro1{SnXD~o(jRd|1 z=2se+Y6C1tg&8E!+As)GS5al#5h4vLaNP|_tqX?K#G~4>F$JWi8KpYyon=9Y9Bfbl zv{_WgR2!$H@OV-M6K#YFiD|L~Q*EE5)TNke1B*1MG%{mI)^O7R)-a2MNNz`{G^h;2 z%?hXp8?r!ZIejChT7RCdf=k{h>6!E&VcA_ltTlejR`Q@)NVV+I0r?|gbiWC6&nySfzG1uq4*GIVt@z(<2>br z9|sW*V^s?GC-p~ogk_UzvF|4k_991N;e^5%Vo*Dv1B$a^TF34S|-Ln_83z{ZA>kX-RIU+=xz zU;q#pCvZa%bJ^$yu!^7QOm_Yb0C~)!Ige`>1puw!^JTmsWY+`$N+o3H5CC~aeh<)2 z6d)Ny`C&=l!LaiS2E8i06To+%?c^CyyL@aX$dI1+0}3k`@+IOeg>XD@md{KfEdC@c^cNCcyo!j|bz{ zTkB$?$@yY!dmRJ}lSwQTKWicTK0KXU*M2WuZCuX(?N9L_mF%1Qz7~!b^ z)LYC90fH))JjFx-V0Zu+vx%7+q^CYQM3|RCWr#@orOv=omxCn(Eaf)K|$jHlm`+iI)#hi0g1cG%?Ta{@4zG5uexBxhZQ_O%#wh+ z;@4b)nvN2_?xt5${RG*~E`SG|^-C?cxLDZ%zu|&8d=6Y&<*hDOGd}K{Z9qLV&}}YM zhZjEdP0`z3%)`Np&yjqq9jo}6o^jmKj>UC@?eDI#a$ga zD=;k3;fuSwf}Hb!3&J!tFLA);mva6P&%G`c98b!?Lin)AgDwo4_7eWC3p*wPgjl}s zxkUbO5%wp2=qQLkH#&3#KyT<1Pke zv>AWmg0R@y@GbmP7cRHsPq;XQa5l4etsKl5-@UWwlWx|s>Bc{E0eGcC1p7aC(Kt$j z;XIAKA#%>*!?!5YvK1fo1SBk{#cD|Y?N=_(@*s2(Y>=m1q!xsOe!?#EH!ha?HCUH} z_W!Mmz%Cl!w|Uw{(m|8wcWsDY({4?C?+p}BeRFzF-j%_%jao#fro=f;0BUJPGZP1J z8PP}a&U4qkKxw|=DbD(Go`gTOb-tS?9jx&wnF~4qt-ysHNQoL@dk3I3ds_#BJ`Ah+ z?VXrdD0@d6>WiH3?8J&yy;AqCPEfFYcP9$L3M%xTPAp4S8F)u0Y@Y0z>%`y=uvg`0 zf!^DRL+3!T@9V^1dtTpKe7_5WebY^v5+C9CfJ=aj2`~twG*l{T?b}5Q5BXTJ&aVg4ONG^3rXrayJ@*$T5Cv6nPeb_}RFr6dhG8ciVf$&Qo zaZ#983Urr?rhYag(A_RtanX;uD9zB^;(V-~q!c7B#pNzVP=dFPvsHRlvB!n+YEUUp z{7Mjo^iduiCS2iC%6Io_;$@?&T(TGf;lVr^%HeE4QZn(^$B#s}D)6hNp~MhgeI!EI zx~n7}KX3PmBazi(OLR?FqFO!khfPPl_Q*7Fq8>ZlbzNzS4ZHw|6#sDq3i15n-XoA0 zO+ML`AQ{RCUN2$UwDH{<^}RizR!1pVt)38PE@WQ{bwgkXR8zp-CyiP?bDQB>IBVP{>Dzs zPUpYug4H0xP${706nT|vRhkEUtV72PH@TVNEP$V;5R2*$FMZXez=@B3hWTr47&W#= zzwV+z3fnV!?tHTg=6MVcns_CzYD_Zn3;9l*@k6a zww!kQ?s5?v0U5g6g>d*}=zt3mKi9v1+a=-LF3opb8W!%-+~d+X^ElS#UY7*4DQoOL z7ef&Syx#?3sR_3anePKGY|YK?V?KB!60z6$U6;m#H74xZ-|GVKqW(iJ1hYiF6!fqQ z!30r5-*+L*RSGhAwTkAuKXeH&uS4*NOMtrSK>1M@8%RskCEyVty;O4ONHlO5z`lL^ zm`k?uw7SnB<&WABJ5Bwui&X8h_2VvrFAU~s=*8(E?|=QorLd|)K#^wruGmjqs-Y-Z zc^XEh*ji6?Ls$AqC_MdPmxi=wYkJbfa(LFNTPOe7|4s+*yW;6vRP5(&25uC1u!#r3 zU$_KSzf|E8|I$VByyg|i?}J}>k3d3E6S~=}U6OJN+maqXzwikc#ONYV{S;nL0kfw)qig;U z6@0@L1zqb>L8uG2aPpeB68}J=>;3={d+q;lNnD+PBQo0SQpG_@HygsA?1U3Pt@HJ& zPj#Y$!2q1n;>(hs?j+D#*g5T2rzqxnm(E=jsd?~Or&69)gOaZoM?UN3Sn0ucYIwr% zITx#W!*XQ5!J^Y+Z)r}fjc2A%348RF($n=5Q!|Lzah#B#Md|iXBBfU+TI(=FJ1YR- z|83yp$jtiM$XS>=YxAV2Ryr|y#>kpAQ$edaLsJ@YCa{BIIWiIF>>LWOwHfip#fb)o zpxzoIHRO2^hoUqxGcrEbIzz$ST^uw-qUu;{U9-Iw2@2xcRP+C0uJ#fJ@uuYlY-d@U zUblV?u@tA%P+D<=#rn)Ca>B5-;xlH(T5BgzXg7l8lAv8MYL(Rk%|M(bMCn1X7H?W! z9vh$G5?cZ~C7I({N$w)H!WqOf*-(e}C@Lf71Yt)#$;vovIkG-$p=pq%Ja9z1t{oBe z*iq888zkIrUKXassP^p1jNmO#Pod~!rq-O98XKKP&BSp$LED+mtO#?qzwoR2(9Qx8>OB&C{bJ z^CZ@*LCF5fo z#%98awPWK@j#HTM&+nIdZWwDN6B}p7TI;mOsWyS_!F#DxV5_#&`CFP(6RNl85TpKE zr0Q!nPG(ah8zv{l$66rqa965yW(_L-6r-+$bY{)O#u*TC;ptd)9dL7MO7->}?g}@j zruc$tZ_nNxqsU<4#ZpJ0peupBJ^PMGL6^>Yd-ivwfSPK~l*Xn*2SyNt>90wpOpAwhp0{)PY{5j#BWyV+!jgCf1EN7paAF}0>SrTV}9^ifK^_*Dw5asKHAwMbPa7LIOMbMolKhRLz<=E8Lo zOBO9%x@gH87QQN6_^R=RubN&zGSytOaH_d(T+U zioYcJg%8bBO1-eK;4GzHct@#EoqBbzTCkaaTyS--I$_JyVpVt{R7lU<`?mItwW3yY zVy!yyE#rM^-dx-_ahB@;Obmao=$qI~fA`Go-TLe_T(rdKcF@uB#KMA!HAy;9$TN=_>rrRQS;`8pH-oj8>agm=7Y?9 z@L4cVMq2Bd<+0}YnrXvz*Gam{K=r>VELc0O)ZhGQx=;NA>TJ9@4ZqKr?o*4e=~WBX zwv_stn`Zjdx@&q>-^0f+$LG`UwZ#b}_PxZ{*vPJzV z^&nKmp0>;=y5r?i;pK$|V@fRtZ+IE#_h$a_?Q67YEr&LqH&-^wE(Z<(3u}tX-qjQZW3!YkSp#O-e0&%_)6q@LH|iQqZnv?#iu3y``+) z|BFIPj3S2}gwbd$}STmL6Z^jkAiW6fzJWZ%iM^jTp+b6TnFrpZe_1Ee48l(35?AAV`?-(d)>>wr?LuK zYno?;BOAzTYQ+{mOKx6k^UCIC&1F3o5BkHOQoKsD)tnj|6`W3Ceg0HV8=BM8BRnF+ z6BFYQ)!#-H_4*qj8vf(kZo|kV*zaa$vqG{_(?{F5jwceT|D8S0QHR&|Vl2AjSwwA` zQ4jyIXngGS(fstW)|!0AM%!9~T1S!!AA%@xL7^?%=tQg49G#Ilb&mN?&KI=joSqmx zqv>SS85TMj``a_FYtBI4iAg83&a~Lc{G#^E(_J&`Oe>tsFK*Agt~oQ=ga~>=Qx;g~ zik;kl(Iq$N-D=CNbFFrA|5bbLwWF<>aVb^PPdfRQw&xpNzhS~@SWQ3czXrDI5U-bb)J1r-c9X! z$H%5;nk|`8XV~v#yr9sYb7IoXr|Azm`7Y_mH#yZDaoR&?IP7G+tRrK4K25LI%MSX{ zj(p?O&E^@hggV1~C*yS;8K=9|tIo90$^5mB%x6xG%{23wsgVtn6XX9sb8iA3RdxQ4 zzjr19CS2Q)>cj;rwN(La3`-TOeobW80Fi*=o|~DQWMJmbc<)RWATy%^23*J}Vys)N zTH~IIOR7-gg5n;RT3j0x6%{dcjaJM5dEfV(Gj{;{75aVt&yPNJa^7>!=l#5A-!IPI zWrWh4h;Qr^F%mIiZniRfSx&rnc8-^@c8DosROZC&+bJfmf4FtZ7}Ys3H}4b^8_*pp zrHBy|zuanW*(qk784on(6ayI}ofC80PBCkpxRF!RWrVhzi2XZ7+%cXE-;onN1Kh1mT{;8~yhn~D@78dv=E+3#0Nkscxdv1h z4J7>#&_EBsLqgJ;@|U7yKHTYHp#G#DsE0c|$lIHFJ6XKtMrOD5kNm3#qCpex6~WUf z9eF$;oP9}L<`Kq5jCi14SqFdO_?&uQc(fvC48Rv2OuQ@a@j;O@RytoogK0hG3lFDd zz#l`JA^4IMc{26>4ip5&z*j`olQH$cSom5vf*?tRqtOM4n9@F?)6L>SuT~T{Y5*?u z;)w&eX7^Jr>=#?&i(3r~G}$s{xjX z5Zx&~1WQD8Odc+0Ml5DpLEKxBj4JPOGh6A^ifRB>dSgq6Kr8ZULKm`l3SEt%V7y*R z{;ha&cyFd7r6=OiAYA4B`VAkI1w91!Q*@lO>lSnfM^92uK%4i2%n&puS-j;ArZN6b z{?!v>;b!68k%VF?@0R{CBM7$%u_Ih^<-iqaf6|{P~5?lU5Vb8qovP_RW}IG zM@rsMKW!fw+>nRm-J9u4>Q1Q6f-CbdRlS*~RGA_JrbdMcl6nX3O#p~Yx|>b7n@kwLMrP67 zf_48QBDqG8Y+bAyH4fY(m~=PmL8BSE1e302y*`?-;m^X|*{nxGRw8aHNk_9DiCXb` z=*n9_Rj<8Sceu#QNNvq}vuW50w6(eTxpkcA13mn!hob>_IBw z6(UGq6P6XYTsSv2>CIUBRtk4d6BnFIguA=RUxux%7#mzASavVg#aKW}+80wVeU*sU z+f+R88mH6Zzw@u&40j3N4NXuS>t%82OZ=-x;6Z`DaWNFPzs%z5SNKW=0|+Ak6xj`?=>&m>?wAqlC-H49+6GDY(yjetJ4G3y6uMGnAvinvlKWw%EGotKElO%=7{12@D=4Dk{{JgXqsP0cSh z<1Y`wdgIOXC;cN#4fGJaDw4lFsR!WILB?`y*V9RVC3^D+3n!!NZM$q z$U}pXqqBK7s)VynQY`z}P4(+RT9FCxH6`ib2W1j}P1L=a&K7}KXU45WL`Cl1>IS)N zFeTY#gE8y>=Rw^62sN2OfXfDB2f0weUN#s@p(j(uqdtz{$;{(H-(`bw&_|mLG{9k< z7QLnuP3FSDy7$xQtU2SE5}e;ua{c&5ZpjPvAeg#->yb7kcc}m zBVZ~XeV@7c+{S!vBR;?BmMO_@4{jTfQO<%;OvUW_+>LPWV2!H+z`cZ0-R*-S(HIHQ zwF;Pncrx{D)xE-uc_PE804N28U%3^1HaJ^fKO;>WQ4`f15R$$BA}#oAFt+wsY+2K1 zq{*A{!Xl-CCT8Cg^ z^JWGTy1~s7EGLy->?RCO3n|&qq}#YDIN7#E+p$7~-O#8ngm%*I&Ga@a<{s?| z;qI}yM{5)AZkrg*;%@P3A?>ntBT{9?;o>1!KfRe-Y&}MTON8K$w!aUX7d$O-gGj0F zCcQoy4#M5Svd$(w26qX^mPXlYb_mJFM(iVTMt`G_v^UCrREBA#Fwh}*ZLs|#YN;iB zM@YII@K>YAf>s}=V5x^_$Kk~SF3$bgA~zBH z!8b*qt_C?4dQ|{#vBBSkisP_JMBcbV zRLI&~J;q(DFC40xwF`%$2}eETgJEIQs*BfycHvM=80-=Nd_aT0q6^T)8tzN!*4$Xk zwBai9$7Z;A-x7wMCVr996(Yi#6!`nlx&T}|lxH>ftMN3koH}EUA~s?yBXP5Hf0p3= zM9@ZpNj!gYKWWdl-h@;Ys>mBztdZktMvb-n5kMmB(^W z?OGoI4A+W+0K>0&!w0V^D~Fd~JcP!faTvjW){7J#IU3X09#v8mkH!>KUk>C9O4b?s z{=)}*t(6Hk1Jluyk!zka%|-%JQOk~ZvpSVnorBz zZu%=V4VR==YItzxBgA*i^8i+Acv$d|bv~Id<+X9so|3QvDn69Cac_@f`G5 z#S?dqRODE>q*wp|2WUk!8-@e0RXqN$lGOodDz1IBXsj$vBD;50e+2Dwo57gHRE*&#lIG+MDd_K!rGt$ zuFg?#7%Mmo6?~R8pEkfO6*e}>P3mxtb2!F1^btwwa3pm$I-|9<0EZ)~Yafw`b2yU1 z#L=;4223~t{c&_!e4ijxIFXf5dX;kc?iBb7>ot~*XIW=TkHC12zC{gCsd@z#n6@Gd zQy5RXb|?VsP33BDEby-=R(sz=m8wh+zyaC%HJqg~0kHuPjB*zRW0GKKbL?A5N zaV*&g)TDsAL_Ln}0FA&%=at;G;g!okRqlCZ{J;UEC&kj1(Ap5KaE8@Q+bfu}-+^Wvh}+ z9h_V!{Ta4Wn_=pcnFg(FAd${8eeI@j2m6<*@SX1Q^n@@Pd7fTuh-l5iB#Q?z-8V@+D1 zdDeq15w^7!JV*OvxQHOMoMxH}f=08{Bk}ty-Fn{fP-F3q=YltUaJ$m;POhGJU3%Wz zQ4eLxbmt5_IWNK6PH`)F9yi?pp7&xY*rb#^Pn#2-%zQzZfN&{Z#_puMo7+#*$^cZRKWMZsHI_p`FbXL1dKJFDdyl*76^yX-L zi>-Q#ta=)CQ8v6KRSB?337giOWW|>t=`-BaSL9R0Uy+Z)gdtDLgy($^tU#97<-pd( zux+?Bf79i-+N;t=>8Xv{xIHED%c|XaRU^AQ;Etfb3`a{b+YG>sB20F-y*3iZt!G81-*A)Kl&=-l z;P7%2?F`+8v>E_5k>0K7B3Rf&xW9hN2g9sJ(AbIVvQ`7Su;IZ4{YH3?0%Eeo?2r|Q z&BW4^ndy%q$q>9R0@V9EP{6A&9|(k)+RLbo#HU+v#dbu%&H5Y3`Ws?>##6ZR2=EP| zT#Y2DJbWWn>5VWT{@%H4P(gE)hK?LfR}Z4XarGc99K8zp>OqIE%(UX?f(+d%ROoRNz7l~ea~k%lM2#ZSR>!fpRbMig2rZ%2;T9y60O4Az2rU_m zDMI~k5L(IM$&`tT=Ok)q3?*@6^=|xCjK69y+VC%d&#tjgOM_Pl$a*~pSBk%7-p#e* zp|Aq24!ObaVDLMLd`Q9FAt2=Vo*K^bV34{MiO@UWjr0T~JwZsFPy3(j?o*F7X=5lfvD{izw2$QLdt_AI$w$Z;}d_ z^xu%=?nc7(@lTDZ42C{y~d`!My6eYtZNhDFu-fH1@J7gMq5F9O%Q8SUFd6q zN{8q|Wr)tyFxszGf_7KWL8&Y$v{`N{Zw?k6->q3@Tna6q>gtu8=rd~I#pjf1*3I%<_XPVv&o5bI; zWMl45x0DTSQMWA*4xypygF`U4VrU7aB0NYdW4Zl50A!6qky^P#Onu)0!WVk0M=T`6vYwhqC$t2cAA%yyh>Vl7kfy*X+IhG<2I0|SJ+ z&vSU}M+gw9;yGD$1|$#BxFBdrh1^b(sHL{sh}Ax7!dCmRO}$V-t@iPtxLyy#RpM{i zs1WQKxHK-I3LQ6O2SaucDn(>c)V7HDpOcb?h0#$VLSCk_{5N9*v$&3w8@S4 z9^<`7cqxVVo)70+xc1EpU+?*Non|1Zn^pk66W$#uDl7w}oz~GQkH7U{7JDzL3-#Ouk3{fsgkLo=+BED@=z5rYz?&pNJgjQ!7Ps zv0$zh$uU|Q+t+{sA#|?lh3ef7WR4QCiz*e`XXcD@LyuG+s zCCb9xVoydi+_x5Bj?yW_M#GBZDLuKd)RW|-xubxSW^LBss|(oRza)$IUd%Lm#V?+f zGQzm__7|aPqcWKaoV2Sj#Sz)Q+Bk5fypF`EHP|p;}RW z2%w7~UPt2LsB{*-h=Xc8wk-UozUYHtR(%LG4v$@f6^>?|^ZdOy2({o|!ow!n4<#Wm33mM=#8!0ER7?nd-HXR)LY8!& zfo^IK88U-zsysrl0R^;})jJehwe7t!&w44(a3-(E;d~u45EnyeE9X*o+)4+woB)b!J?pYM)Bod;mC8D+&XgiAEm%k~ET>m|r|`cOzBtp-u@> zxr{kz1Xf32bqHoDu)3*BX*4gurr?Pf>I!7s{)^lgF}WEK!+5v6 zVO%~mj^)h^v<$;BmU4F|hlQL;RdZ0nbJ)*Y^mr3Iq+R?Lo~~?5@&4ZiZ48~Z97yW* zAy_ByJCb@h3TuU{Em<7Cm@TNkgnv2mjUsYu3jC#5rRmh%9YUH;fxjB1;ZOv6$T}}> zX-41?0ocKK!`id-=OKHj1o4F@d zytfFyLHuH#FY_EodEBLz9pejeM^j=K-rzQH6<(bHSmnWrSN94o=NnFZ4sU9#q9yB_ zP)dcC-ESZh$~KLoc{80!RcKdDV#7h37=T_g+bDq+$63y0x32zvX0|NSgYb%HIUNh{TZ9PWu)*~UfKIL}Um zO?cchV-wboP7>kpXrqAXSj25|POvQtS%?AuE&}$UOrD2ODi-p|q!)zB-i17`lPv#ZbUvL`S|*l+`_X@ym;K*TLnh)W z(qA$xyv@z@a=i5ba5*h-&p@W4!fTfc=#9x?w&}!CfQ1xWWGW_?(;B}w^9;}V9gw$B z@c4hoa^Nlju!Y9IaEoyE(VX9bhlE?K{;d{p&&oMJai{#3jI00bX8tBKf0I}(N9NQv zyy@jK)z!jj%>KAE!3RCx6ng%o#sQb+VK?T*Gafd)C8GCH8`dWR-`e7@#sr^_Bc68! z@%AM6+fa(auY|CZmN?*J;cQFlji$K(`h|OA3;26vob5u`k(*yL6A@)<<$Z3Gug;^h zu2<8M`t`5M0oK)Ifc7_Z8%-eG6aI!{#Y6-&_Q#7vA}1Murg#g`oBOQQDStmw3&HgS zh@GKs!}WPws@h!*nw<#K$t%ULvfIt`zC1ZHzK@WiNX-VgFAwwPPw0x`_B#81fK6wc0+zY>8%@DfSzc=fKj3ht?>vP&z=9(G&1Igk2@&2+=#;MZ{KVMI)T&6G{2 zqkx8!usIJ09ap~Q169d3lWOd#sZMPcS#fF7pJr~KiU6HSe-BEi)8CfIb3_V*)F2nK|(Bk3Oz*2FO5TY=r0QmIiFwWCq$rmLa} zJ76mN`&Byp8~}V;5r+hzC4}eDP|8@NV{6$e z?b<;AaEMk^3vkF;n|v_j@3Kuj1REufTALm@I%vd=>9akGK_-lY(+oa4%w7pp}nWghTQ< zl+Wc@<2;!vJq9QK2lxpJwz9_!e-go;gzz5;_>-{5#Z4)!(I+wdJlz@tC$rva-5LuO z{P$UUbio*)hm|~;)AZ?L27ITorh>h6RfHnsw_MXgX z#A1%X)MGIB$Bd+&MZ)&vz@J0#=OFxP2u~&H90r=E+i))bDf0!1iiwiM>3hsg*VKw) z04Bz|OyQYadMf>uSOG#%i(P?h0iYsk1S`bS+!Q++nR5ocStyZ5Y;$a zmRaJc)c3k9vT+O7Ci<@2JT&~Q^Ic*0lOFD$n|Q^ z#WY*#Ko{;FJMfam+S4e)rpJL-MVu{*s4c?U27ed9Hn7Zr?=&E&u0^^9*J+=S2^*Sp z3o+nJ8ku`DU35?y9u=dojwT&nBZX&$cYBjsB5T2H@#4wqkaN^{;9J?=%;SyzH0E2x zs0#(4iH#dr4E`>ZhTwXM)a>s^iDkhJ8rA_Xo)C{NfE&b&<>pv#BFqmWQeUH914}(v zUA&nm2;qBy@Cb6L#^53NgBbp$oBbUqvEUk!SUpYtK9Y=w>pX1ITLg2R7{C6t5&VTw zR5}4}665jiCZu|k2(gZ+mSLC>JSH>^H2GsFv9Jq!P7M3EEY@jW_?%GQ*(@i4Qqs{Z zdm4FIrL#%rS>ba+-D5;gy4E)OyHF1ni0Q#5=oR|Yc>7DVLbV}_S1n{UgE!pO?Ol&n zgwY*IkaPw{L{$Oib7 zc#e5P5obZ<4cS(F>fur?FROp*;nre<946P{BfAp4|82LHG~Yu`(>>(d6l9u)o!Kt4 z&Ww*$F}vPzBeXI?DUI^sdFUIDMn^ZlSZ5mrLIkJe_*E7teKiGu_w#$(cvTA}pkEE3wB3 zF}F8=67KY(;vmyrJ`kULtS_=!#Ian`&1O95^d0oq!?--m@d1a}L}u0{S4 zF&tV^v3yZb-ndw=4TMb#o)^J-7U>Z)UJp+TcjqFifEeUiA!=vxF9>I=ApeYT4=mK1 zF!*!A-M`RZiHh+O%}0V?x&?~A+``0f{)m4mz!xGw|6+XcArIUBo%6ILXx5r`qiw{- zsBBHE?A7!VBN30rBe8QQz-mhU>|$oNe5e?0+gLx>hh=%P>s&@d*Bh`@I6T-CqBm8! zSVotOar1@C#j-pu7ph92I@xI}MX|5k3NuP!h7=aR$zVk-riHq2AjBTCWT3HlcUpA~m|V zO(QrZ6gE`~b$#njDLimRg%{S5#>+8PXe_o)V0DOmSSR$g@#T`g3TJOpx6L@L7ooe8 zdM*4lkE>@}i*Bh2S!)Z`>nHM(@8Y7+MQ4kWC<(d?pyXKio#g5&fJeh)gr6;d_!=yh zh_H%K=p8C9{|%kx?wMH+V@{nb03@Cx$0 zL#7wO3s@^?4`&`KD|lP3Fp#tSZ66G40*xFrX+Jc&0OozZXb7gfUJ?ui;xPM7%FOOm zaatHsDRk=rIGx8o*Q=EUegYTt%;vG$9Krk5|zP8QFI_ zFw<4cp25;$dQ3u-y|!rtLss2%E51{bsVF@@85Q3R{(PuRtx`%YC}Kn5^PzwFZV23i zY2=`*>ZBt00Le9h_PN-Y>cSP62)fZ17htfWYM;|REIjZKf-l6bRCmf>i8&pBujuxa zH*+^7Q*+GxeTjKq2{qDm(UvC8iscAhvSmYY(xc&>^@HE>LD6}@j?>@q!7v*%G3Hz? z_f@D6WsfU5JEw}o@A#S2gQ@bGN|iB`Dw<4{*M_D$hCmzY=4-9++R)I+Mer0#ES$7C zD8l09{Rd7W9nj=fT{<;vhnuh3YvPJpM~YMKHA*?!4aCRK%}MlH3~XV*%s|qgwrQdC zBO%ES*g_5k-q}KFS=-Ou7G5~`NAmr`!IWuiwG9|DK`1c%)iC51tXnnfv)@=6bOX`o0`>QaSmt#zv8C8!ky>Gc#Lq z7R`)kbjHEg@A<$h3k)?Fr}c4a&c0+u5nP6jFyE}6jm_pWXb`36>`C;fitK@AbDKS| zSSNmS@x11|Kg=k?yU$77JJvXSH(&gVVCK+{Fzseq?CfpPvB`_FtEUA|3&rap%xi#rpllLYi(V?%I#jwR(U4#bGV(F?OkT(c#)1G-qi zk#Hjp%7I-;9HR=BA1-opln0mbmJ{}S3Zch^6a-k2f6!(h{7E6nv(fVuADpA8RZ01b zg+z&s$nwG!$>TQr;B5saRwSo^H@C6IxvGj<{VN55j~j6_J?3p6?ES82rqOZoyRK&1 zlR0fykaKLqaunW(gLi@Zk3JtCX2kkF4;5tZ-%` zl9gYWm7ihS(X7XktOvs5O@~Pae~4yj*2^tkmKDp87iC3rt)OX3d23dVTBUe-R!qT9 zHw_hKMb;0axVluNTx1abLXmi3vz4`3n6%B&Q_yL{TR zK781m!e_El4Da%}JnMtWiS#MP6{~bLiM#E7{cpk7z&s_B3D$LA8M8rGLEtA0)k`2Gi z@p2J4$nD`KF=8hViO8w)E9H+DCfKi(bRE14pJT}9*UD$6Y4T}uEDY&vwxFDE&X7ko zFUsw@s`^kZfBdFU;Z&L8-My@5Hf3fQ&H}>OzTL|)?1W`jnc-TJrnRh)hqnPD`OGoNiaDPfu99wgmi_8-jd@CSh!`4_pn4eIwPti!qhnl(~*IM zrKg!eD=QS%&Z$q>DxffUiXD2xYL`kZLF(8R%RzTpqw{jh!ec40bh&F+Y_ z?WwgN3T2YSoakIU?~ElaeR=oe?MYVBXoSN%# BNXU{y62R*vY57lZj2KNh{@dk0 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

                    JeWKm_%tB9kWm0z||q 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≧R(AWhkJvAR_=!V=?FOws4Zvr0 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

                    5sNKSOT1?0>D~JT>8GDFewcq1+ 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

                      Z%*Rj*#uLrCcu1+qnLNqV}$E7J{CT!8huq~$*3{=Fk zc%ah6vHG52pfZdI^=$?lcJM&gTDvU4#-#>e>$^0IXa>XdwktEfN+is)D)e|Ow-!2c zAfaKhw#tzvjCpFOp<%njhEmoyeB@j!X)##6q9NnDK$lR=t&EV2h|wD~uS6u&Y)cA$ zCG)kG1DTwOf!guRP`_O2(d`#i%|4~0nV~aSSV^u9` zE}e|w_G_Y%b!(!G&~S%b++cxrscMmK8$vO+B0_U~hO1gbCeyAVj!Rwv4HD4qqY6Pq|z-%+a*hY|if%(P#wZ($hCW?QCjIy%Gd-9#kp+e8|p z=?=ZT(UM+GmCJP8P|6t=QOeKzDAN)h+EJ8e%%E0FBr_~kUxZYQu2oha4Q`o6lt7(;|B=Mgh;>q&{f?dVul9Aut>l5@sAh)5v|_&Wd+5Rv}!t; z3#q9itjq%uB>=%7RkI*+Ck}BG=MltwzoOZex|W(cTJP}=reTHeV`|a}y~lW(x_X)3 zGs$d0cvM4s3RPo_#=8I!4VUzCRlQ8tEolVLVp2ix2E*dMt!N|lJVU?MYzTU_A{6U6 zsz2eYQau2X{0s`;OKC!p-CCp(Jc~*BqY*JI9gQ??q@LqPBg2MF z&%%YQu2b$yYg_KvX2uqRNSdqL&)z8E@?zdrKIe=dChUV#m*YEyTssHHfpy( zQklo^(RX-=(ZCFH5LPePt5@wd8|F-RVv!2<7PZ}NRWB4*#Ez`0oalvBn=L|qe=~$4 zuV!e4%Cf2BS{*~p9PX8#6z3RpCH8G-V`L^?!r9DAWk%ap0xMISbRu~*`((mem84@@ zE2LE$Wqh97?YS6Q=Jm`~u1uq?JEqOd6QOq9!fMaht25PHMJDRRic;8xTiTe`%4sDI z4?GLqouZUWD$doZ%7v2R-AFe^45Eu${t54zntdVMC6sk~ds~n1a%}4O`lY&(-3m9- z)B6<6@Q!jIHKoXh)WpKh;gAdER%1kwOZz zTtsPL4q3!95V7r{WI-`j$;hbbM7E?!g+^cz3q_|9B8VlPiYgU)Doq+8t~gJntLKU< zz28?)?+&+&`KBge2Bg!S+P*tI>{jJzUhwAhePVWkr~wGh`zQktoJYF`AUG*VI}mJr z7sdOORKZbrQJn3*(Rf0+v==8uk#lkzr!G1B2>{SvrK>|h&k?;(_thPbb^gN#Y5fMe ze(IMQMQNysu6@vCahw$EYzHY;Pn-tSymZm>U6ml++HS*NaNkbgr*_inx2C)CVyf~kawTpd)9++(Znm#?` z#d-$OfyGO_a0i#haz_KkcD7rmk27#}R-V)~%!2k2IT2?8Vh);hBRZbrtkh>5W?|`a zo2=5ie2cUIv*7)X2i9i*n$ht8n(gK=b?6TLW`?E#h&|>HSi*cG$4pM<{BVyaIA;*j zWm4cVv)O=7GuC4kL+)L@l{3?9V)=yee-3Z=8Qe0}cblc#^)aOaVMtgJQCu3cf2K$5 zlCmfNUVzsT%qtE!6MruUoN2!ofb*EH7l8AMuMNN(i8_=~>O;+nUaGyCUaGvBUaGsA zUaGp9UaUFx&X%J+O&zB}3q!0$3q!0)3q!0;3q!0?3nNmiN-vz3vK`%KWr^ja&?|n@ z)Nz(!VTdim!Vp`Ag(0>K3qx!f7KYd|EDWh-aH9dXRVmsit7s9VHqjzTEuuw`+Cz&V zwT2c!Y6~rb)Do7fWSbO17omxxY{7z%8iNHPwFV19Y7Q2J)E;Q5%wNIX(jmS#ubHb5 zL&eM%sHlE^E2-<}x7@lAg?sv#{PU@a-INS7-K14RcS@@p<^dYe8&xm~5y7n(e5yS_ zraTo5Q<`cMj9(91Ynk3wxVXJ7QqjX9lhn{JZT6Gi7GuRXWa%&107NQTdSWLi^Gph(X2$2?h6 zvzZ-FS53rq^^9K85*r6b?8nlx$9OLn8fEb+h8t#2>+vB{#V2j~Y`#CG#fGyHqPey7 zCNo+CAh&u0@Owd7{EG$mse7jxHHbcd#1>)WcG#3uv1tf{_CEQVM$H@uKppm1(++M> z)kDqhdqWtU3HA^MXNEn5!I@$=7;21;6KMxRE>|CrNVq;Ak%WCfTrr!zB9?KFUL;^Y z3Rk**6s~CfC_=e*RK#>ihLsLTjD&qqLNWWGgtGQQaRsiTBFuRL`I&}JBvzN2D@kkZ zFYbU|3{hJ~kXW-flIk$lEHYB<;~LvAPh49YM&d+)#^uC`4&GxojY1HMA6X7&f3mBJ zCz>!W+5>J<1m-a;u-w*e{G7Dv^YlSV%3KnI>#JnPn%%qWX9!yMz-kAEzZ~xXT$g%n zyk2Jir5M_0iCbda>uEx9EBStp zDwH}tO)G4rxjo0w$}UaUYH#lNE?sesox6mKb$Xi?4~QRgwklkVkNN6r$~kB5BWEw( zT@aox@6aAta(|#j-*LYCmKIpm@JLm_1I~$VH{(7EGjg*_AIO;t>xPJ=lzJc#QX}2K z=75tobCC-yMF}JZ8Aeiy^qO z=*1D;R~$kT+}Rp}lHXJuLKIw6^g?m(DEdJ}7ZeAeXf%xNDrY5c?l8a#`(EM@PV3R* zTSg)KSd_U;n|T+}D;{WycM)+2MGcg(l9|c%M~v0Y&~_d(P&X*-n}=TUY82+RLqAfH zS2^<(lNX46;n0gBxNW%4v7*GWq9YtG+O043U)%+)1+wMb!foivvs>JB=1nYX#%UIN zkkK+XOlo$CjJJ%oDW$^Y&hnc&DHteZSF(vw*L$)}ISC*dvbwXE9Pek0!R#r>DP?jJ zZe`R>=I>^7C?mM$$93wu5f5i&%yQ^t9IGm&{RhOXc$>v9cfY_P74uu3XIp_KU&i_H zWm*{oLEY>CbuB4LoY|$7idlzn1#Q)YGDFt1F)WKrSrP%RrL1YCEYmz+g%%}VeN*HQ zH0DYxC;CVi-9X6wB|$_vFar?BL7e3g3sHt}ajRx}{O)#f%Uuy6^-;b>2>fEVeOjC% z&rExmiXDFJVbS8@-P2{lN|)xKT%{Yt2GWAL3@LFgh&gSoN!WX1HKFX)CJ!}Ng$)Gj zL4}%%>n2!FF)3@h-B^d2=E)hiR&hI-dl5~o zk_x#2K&nj9h&qg-v@D+4VY=kv2J<_Ns#;=9EuolOAt8IX1FOQpPEkhbHF}`aEU>3D zicF|iGdhaZBO&CSBB0*N-#@mf1P;*DCy}X58d z`<(|Nrty5QS~DOq7Kb*5Z8%1s;;M_Y`zDkixM5{L=neEg>BGGD6dDrRD%Nxyi zjkb?!#4v;bYQKh1l(W-nul&UC81687hWYcl(X%0{arp+3le#23(;#_xp zA(^nfx=uyRZ>~kmYOTtfb&K~*18;q63Aa?CsnI%gG9CjHm38V0OiI?F3QRzzsqRfW zuS=Ys+OHU^jWt7__ z^y;3fb5S8-+fiBK&V6XUH$``XN4ttuN^ie1`23I`!|iU5lQM9%rs|@bauPc19H^{t z;TOSFb=SKxx#epwE031PXJ_xTO=$LhRhuFEm_JMmn|r#nwNRP)s-zsherU=D>$YEh z+<$q>k0%T46O8+0U0$W&prrm8GCTZpA{B-q+2*@(+tTHx-z(PTJ_V%hc1ku$b~K^B zpf=h?yyQ!?mrr%OO*Z563U6g*ip;Oi5Gsc&rk=cPJjV0X?%)J%z}#XKK@T|Mrq|nl z6N`ZW7M9zI0V5D2QXq9s623$zBqyU1S|3#?Gd-dd*_|Pj%2<(Wi^Fv%nXp=mn}Z9H z(b>%aKnx!obDKQ*3}`cPH%MDF0;sF6 zyqQ^-Byhy?kp;VqVd9B}wr*v5zptL&9mW$!*+uD&3Z61HPBuV|X;HjSS9mo!tZYcs zQuA|*m_m6cQ7tV!R}+tD={hKE5x_SUn^;?Fy!)`kyi|z+J)S)w=-Gu!{$?6c*Di(%Wsi zs$QxFm_HEZIY#V1+hI9bJ-t|b$d_tcXOzcq(n3j^~H|g2gK`P^+BV^GN+PO{znYPQ_z_ zdyn!+&!RzvJgbOp#4jgnYj!W)&DHc4IA=#w3?#mh>}FohCFI$vTAj=7(aLuhVh0k#U3ATXTTUgi|B2O6#$Ni|Jo?xC9@48wTw1oD-HYF2=($o z5Q?;5>gW<*!4`-(+G}I%)~O&qW+TMKc`YP)kkN8ZRxa->O_W>?(Z-0y z5pun_i0Cv1K-_H%y;S{5b;5pQXeYDRdOMvarr0pwa5Sw-=`AG|b#`4ZNTq$<07$#K zCZ9ZHGa_#|3#r7kpAl0B9JLwYJI=gi&P_`j_e-bGLyd3_`stMC&hm1uyaBS=#|BF}KPbWKzn?k77^D;ptc{Sa!Kj-h$U&mcIN$~L+ikXD zMIstN@&Lx7o8x16>1X=k(V_N^0mf>^!Zy>LfJcb}7UWq^uiRTVabTYt1)h0?2HNvJBiP8p$<{(ytuUJO_ zYLl{?z}o-!0kAgzeE{P*i2}^vFM@7u+u^J6+&KXp{2IwYtQowHwdB{ami#)p39*Lw zI@S@zeKbCak58M1E*{b!hzzJyT&$RXsP@m`3X@1zT zj^Y{*j5*D2t+Fruo>h0p$#%;N6d4#q0M(M~GRMN}NzepbkhhL%pY7yR$c<9Or$fa% zYh)U-$pvR}3~jdAw4)%|8$l^|M*oTyG{Bz-+xTMrQ7!SwZsf*I#KWM zl*zaBOZkMiY46Jlmsr1)>bT?o_;Qz&cQ04P>dk9Ad7Aa>G3ByAIQi`4Vn>%2J3p#g;ng}nYi<|GO@<-I{?@It%PVlL6uv)yI@Re$u59r_B>KMe>`f3#F`yZeU7BP`_Sw=Wj&w)yJoQYEWW z0&qT>Y;o_9VW5Ch>KCAkZ?$$D$|1xh9W?0U;Ah&b>3?Wa%MA1Idy!GvpoaE5eQ>b! zeaU)1s3}&Y$-4d#zB7Hi$=7J3{wKC_>OZk)M1F;run`K^BF;vG3|)|=vV$K@0`cJz zIDAlK$vRt&z|dK&kSUY3+=tNWQn+wETxaiEOPe0Aks1J$2=>eOF`6{){p z=Bg=}ta+O>qT$vM257H$E5EAh51NB1y||_Q+9T04M<<SLbRp1t7#4xd2F)S2=4K7Y*1(ko$bQ>JR2jzOd- za@)TeAf4M-E2_^ijs5*!G1=_@sI)SKqo<=3=lGaWYUi$GFpc*92#15kg7*_mW9g`r z2dbUnnyIR3>z)i}*|iN!dz0;EvB0#nT2O;g=~epeze-j2|FLWE75%UO`acK2{xV%~ z3J}9c`gnyo_wKJrv7g56lpleo5P{A&-b%}~#n`N;mB$DURc4v!A;U)q3fdVga;Wle z6c_3dpZw#H;7x$u@0Rd4`J%i__UU4{Ri^ZRHAP1h(JMO)tE4*ACiRg{-Aoo3mrX}? zAx#(}nP|y4A0H8dXxik_i1S@Tc}me@zJ3&~r_@i$qdQfhBZJi8$S5hLWJ9sK!`PJk zg4og;g9!R*rIwr&37IZKtKacb=jr1l5>^!1);3KqPZR)frVn=Z?gNTg#c{Vmc}>lubU*xue(B~}PzZhE0W3vbt42a1$7Q{FP2IY3>8DzaFw zf5yC-<_?}O>d0x|P1l4OmM7;PGMuCA6K#+u0&1uB;&dmRH?2cg=T?fEMw3%T|NYip z<$FqZrlXz`*SmGT!VzH1P;I4nN~)v$RwIXs)Zx*wR5B4my{;*3Qrj)KGj-JYD*~yK;Q!EBMU;OPih2VYrl=yL!sN=;Al>Sd2 z?Q8n9=yp>>f=@`O-6y%X#_|LOjAow+~e zNWzCjk-eqV)LMVTvgvq>KWqnOeLH!?p=PTd>(ki|EN26B*nAx!y-bVytSm9~d7wLL z+2`9WjP5<+1zU{tCyy)4O;Wu(+h6sKm;MYVlNV~+qY=ae1$uVup0)#E7hhqPDikB=f%~S=AlJEU>9hllbd&h0SEYT-GU;F}WSXuxd{8+ivi} z`kL*AVM)=*US&_mElT=&z3WWZt?v&MH@qNJbTe62D?+L^`=74f^89@0R!Ys)>L+x9z^`+ce| z!thq)o35w^DV5U3aJOn0YVEh`p~zE&`i8M>&)4(3hVXu@E(a8W^F#M32^D#15+r_ST-H47O75all&Mw24S`P3~wvz

                      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

                      WrER6PU?W#%&JRn^^ML1E?rlL7b;iG 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
                      RdaG2ecbeNurZ0KCtuO?!aquLd=rWFHMyYxlG@x&IE8-^)seLM+TN;rTqsA3SvuZg&0R! zt2gV%a)s`f7D7R2%1^1i>UMH#+xLMbRe5iV##vLM9|L)Al-bMl8IH4dPs|=LB0)rW zryY)>#wZPhunta#*e+CMp7uW_W?Dz@Sw*xUoOf%+UP^RlbWm)1=~d$ z<>WThi=8YQw-NgBn}<9!iEHPWyGO}RW$$Xvuq-;VdN8#kyh+S;s~O0O()+Hqw&R9nC(UG- zCUlDDXjj+ji?y}!SIX@ti}K%>S`uNjitjJY3ErH2a*V)!Pp<#kI19x|cV>n%fy*N^cvRkPlwm-?IQIG zBC7%)xe`%VDeaYeQlR1Ksm8msgE4}<#jC6p)96l7#<~zAU}-ku0bpXfM+gE>EUz)! z%2@-4!y-`GP>BP&;ydB_wd}9h{0Wdwa6biO2YQk0>X8 zTx{?O$Lo%P2aD^jv9~aqu}<$@j8i*Q6}LzB6Ft?N^G~4AwMg=`_ma@E-d6Pa!RUzs zrC6-$0h(KoR#EXUmpZ0E5lCocv#x>ig+`v<5n~Wx4M4Bu>#8Zq#`f(K{R0qb_b4JA z=kAuh7#j;>qwgY#`((Prhn}->SM@EWq71I035e}F-QSCQK5cdHxCPd3$6m1?8bl^N z{Ynsjp$nT4Cp|USt$-Dp!#dA<2bOT+Y0!N>J}diKXx2=b;j5GC>kSi*3z}`W7R5CFg-V z`@@a*Z$~r`#7ox$!}0u8n>*(#ln|Q~3s^T1rD<~+MvEzzBwb$bpdnD7z0Ba!MzX2y zBQZn~!srIlAruY-Q%ye}-_rG#ALej{!(32N*I5rizS8;JMkQ<^^J^glW-x7gsfuGJ zFlb!JmD(N0(M2wWlKCRUMW?=`Iy{CMe0x(1rx>F-<~8s}tzA#;Ro7W$#9(60fufx) zmevqC&NVlh77*kE#F=EZwmwdDeVEzd5XHTx)Le@IFNmE2Bn+iQ?^1=QI3{}$r^~>1 zgtqHVj?B0dmSx}D-}6K9jOceLX2wOFzNb3aB*ygF(-(>Pu++V4t#^t-WrZJXtO7gU zdWD@B{LzK+ILkR_XaJc|mRMgvh)e*$ipveQZD9$)5W|w(yM|Rbd33$&9=mdWw{Kd7 zi!*+(G*wd(_9bjhU%k`A8~%4Agh% z&MuA13E2e~a#>2iJsn5xr4}r`d`c+o*;%|%;}nofF644~J#}}&q!961Cda0Fzo8Gj z;5Kko7cHwc^oVCgH@02$K~*BlOzK}~F^&(?*} z#ixK7WKH0u93onA)TxgHhZ>zb9OC}`D%SAPhPz|c5#aEqVk0KXpBQz7oPi7so}x@W z+bw2+2PZe+wTZ2)EI3)skarhb+qD_uTN>ePLVw~QXEJU50=5cZ&s{d*vcmwRTELi-dcud}?^liFu%c#|N?~YpCwy^c( z)%bf4Ktgp7qv@WrR;o>vx0g#zG21s`JqTR$#vCx?hQ7~*=i+_QIqxC@bcN&D99Kyi z2o3YwE+O{#8Z~M>8K)|YDkjBPiR_OA-)xx;ye}xgloZqjUl(PuELJo+6Khp118LdB zLE~#UmZR{vpu>{5QZJeod(;5{4uc?KF*A@JDBh#J#wTnvhs&!H#K$cb2+vQ`a)ey?spEn~QAl z|M9nmIOgmS32$a0Qp1WwBL5_>0~hwQw+M=eV4w~>76qh3oXemh@i4n0H9&L-t9Bez zu2c4*pbMD<2+i0EpU2y<1OP4g=Z74dcAoUx_VJ!h_5`?U<6Z3GEuSM%K7tOT+U+i} zAx%X$)vV82d9U1Uv4Xh1RFmsyxBL!`s2R<8hj#6a@H+!hg}ki_>77!FoCMkQgf5=@ z>BM&8WoglKfVDP=NCn+LNv>qDlLec`=&x%Dm>7bs&=ZD_HRS}&mi=MG44kMj@O*P# zXNqPGKzML>@PzxD{xTtYr}wH8>X&p9@N}-`D~Vwx*Nf6I8O=?+dP+Xx^25zwqWy2> z-DLkMRqz21dg#86C}r8kGSwtD$P35OIc{LFAHRhUtJNuK`I~W$t#4Y`-9q5kI dh`-Tg0~-7bCIGA!kDq!PnjHtgD;2|kJsbsvIdA{~ From e2d097500c0ae94c66cb2f0749c295d2d58b2369 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:24:08 +0200 Subject: [PATCH 19/66] Update .licenserc.yaml --- .github/config/.licenserc.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/config/.licenserc.yaml b/.github/config/.licenserc.yaml index 51936f2..0ea0bce 100644 --- a/.github/config/.licenserc.yaml +++ b/.github/config/.licenserc.yaml @@ -11,6 +11,10 @@ header: - '.github' - '.docker' - '**/*.{md,MD}' + - 'examples/go/vendor' + - '*.yaml' + - '.snyk' + - '*.json' - 'LICENSE' - 'NOTICE' - 'go.mod' From b92a39004b32bacb8ec98638ffb34072f59a0c3e Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:24:57 +0000 Subject: [PATCH 20/66] Automated markdown-lint fixes [dependabot skip] --- CONTRIBUTING.md | 33 +- README.md | 7 +- .../github.com/google/uuid/CHANGELOG.md | 30 +- .../github.com/google/uuid/CONTRIBUTING.md | 6 +- .../vendor/github.com/google/uuid/README.md | 17 +- .../github.com/klauspost/compress/README.md | 1867 +++++++++++------ .../github.com/klauspost/compress/SECURITY.md | 34 +- .../klauspost/compress/fse/README.md | 178 +- .../klauspost/compress/huff0/README.md | 208 +- .../klauspost/compress/zstd/README.md | 337 +-- .../compress/zstd/internal/xxhash/README.md | 15 +- .../vendor/github.com/pierrec/lz4/README.md | 16 +- .../go/vendor/github.com/pkg/errors/README.md | 36 +- .../rabbitmq/amqp091-go/CHANGELOG.md | 591 ++++-- .../rabbitmq/amqp091-go/CODE_OF_CONDUCT.md | 57 +- .../rabbitmq/amqp091-go/CONTRIBUTING.md | 25 +- .../github.com/rabbitmq/amqp091-go/README.md | 80 +- .../github.com/rabbitmq/amqp091-go/RELEASE.md | 19 +- .../github.com/spaolacci/murmur3/README.md | 13 +- 19 files changed, 2229 insertions(+), 1340 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eab6034..4768ded 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,17 +3,32 @@ If you have never made an open source contribution before, here it's a quick guide: -1. Find an issue that you are interested in addressing or a feature that you would like to add. -1. Fork the repository associated with the issue to your local GitHub organization. This means that you will have a copy of the repository under your-GitHub-username/repository-name. -1. Clone the repository to your local machine using `git clone https://github.com/github-username/repository-name.git`. +1. Find an issue that you are interested in addressing or a feature that you + would like to add. +1. Fork the repository associated with the issue to your local GitHub + organization. This means that you will have a copy of the repository under + your-GitHub-username/repository-name. +1. Clone the repository to your local machine using + `git clone https://github.com/github-username/repository-name.git`. 1. Create a new branch for your fix using `git checkout -b branch-name-here`. -1. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. -1. Use `git add insert-paths-of-changed-files-here` to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index. -1. Use `git commit -m "Insert a short message of the changes made here"` to store the contents of the index with a descriptive message. -1. Push the changes to the remote repository using `git push origin branch-name-here`. +1. Make the appropriate changes for the issue you are trying to address or the + feature that you want to add. +1. Use `git add insert-paths-of-changed-files-here` to add the file contents of + the changed files to the "snapshot" git uses to manage the state of the + project, also known as the index. +1. Use `git commit -m "Insert a short message of the changes made here"` to + store the contents of the index with a descriptive message. +1. Push the changes to the remote repository using + `git push origin branch-name-here`. 1. Submit a pull request to the upstream repository. -1. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so *"Added more log outputting to resolve #4352"*. -1. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! +1. Title the pull request with a short description of the changes made and the + issue or bug number associated with your change. For example, you can title + an issue like so _"Added more log outputting to resolve #4352"_. +1. In the description of the pull request, explain the changes that you made, + any issues you think exist with the pull request you made, and any questions + you have for the maintainer. It's OK if your pull request is not perfect (no + pull request is), the reviewer will be able to help you fix any problems and + improve it! 1. Wait for the pull request to be reviewed by a maintainer. 1. Make changes to the pull request if the reviewing maintainer recommends them. 1. Celebrate your success after your pull request is merged! diff --git a/README.md b/README.md index d23695f..29da0f8 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,7 @@ go get -v github.com/zaphiro-technologies/protobuf/go@v0.0.7 ## Examples -For your convenience, in the [examples](examples) folder we provide -Go code to: +For your convenience, in the [examples](examples) folder we provide Go code to: - Produce and consume measurements (uses RabbitMQ streams). - Produce and consume faults (uses RabbitMQ exchanges). @@ -133,8 +132,8 @@ need to set-up the dependencies listed in [Requirements](#requirements). Protocol buffers are versioned (current version is v1), and should be developed following best practices, as implemented by [Buf](https://buf.build) and defined -in [Protobuf programming -guides](https://protobuf.dev/programming-guides/dos-donts/). +in +[Protobuf programming guides](https://protobuf.dev/programming-guides/dos-donts/). In particular, it is important - even more within the same version - to preserve compatibility, to avoid services breaking up. diff --git a/examples/go/vendor/github.com/google/uuid/CHANGELOG.md b/examples/go/vendor/github.com/google/uuid/CHANGELOG.md index 7ec5ac7..1c451bc 100644 --- a/examples/go/vendor/github.com/google/uuid/CHANGELOG.md +++ b/examples/go/vendor/github.com/google/uuid/CHANGELOG.md @@ -2,40 +2,46 @@ ## [1.6.0](https://github.com/google/uuid/compare/v1.5.0...v1.6.0) (2024-01-16) - ### Features -* add Max UUID constant ([#149](https://github.com/google/uuid/issues/149)) ([c58770e](https://github.com/google/uuid/commit/c58770eb495f55fe2ced6284f93c5158a62e53e3)) - +- add Max UUID constant ([#149](https://github.com/google/uuid/issues/149)) + ([c58770e](https://github.com/google/uuid/commit/c58770eb495f55fe2ced6284f93c5158a62e53e3)) ### Bug Fixes -* fix typo in version 7 uuid documentation ([#153](https://github.com/google/uuid/issues/153)) ([016b199](https://github.com/google/uuid/commit/016b199544692f745ffc8867b914129ecb47ef06)) -* Monotonicity in UUIDv7 ([#150](https://github.com/google/uuid/issues/150)) ([a2b2b32](https://github.com/google/uuid/commit/a2b2b32373ff0b1a312b7fdf6d38a977099698a6)) +- fix typo in version 7 uuid documentation + ([#153](https://github.com/google/uuid/issues/153)) + ([016b199](https://github.com/google/uuid/commit/016b199544692f745ffc8867b914129ecb47ef06)) +- Monotonicity in UUIDv7 ([#150](https://github.com/google/uuid/issues/150)) + ([a2b2b32](https://github.com/google/uuid/commit/a2b2b32373ff0b1a312b7fdf6d38a977099698a6)) ## [1.5.0](https://github.com/google/uuid/compare/v1.4.0...v1.5.0) (2023-12-12) - ### Features -* Validate UUID without creating new UUID ([#141](https://github.com/google/uuid/issues/141)) ([9ee7366](https://github.com/google/uuid/commit/9ee7366e66c9ad96bab89139418a713dc584ae29)) +- Validate UUID without creating new UUID + ([#141](https://github.com/google/uuid/issues/141)) + ([9ee7366](https://github.com/google/uuid/commit/9ee7366e66c9ad96bab89139418a713dc584ae29)) ## [1.4.0](https://github.com/google/uuid/compare/v1.3.1...v1.4.0) (2023-10-26) - ### Features -* UUIDs slice type with Strings() convenience method ([#133](https://github.com/google/uuid/issues/133)) ([cd5fbbd](https://github.com/google/uuid/commit/cd5fbbdd02f3e3467ac18940e07e062be1f864b4)) +- UUIDs slice type with Strings() convenience method + ([#133](https://github.com/google/uuid/issues/133)) + ([cd5fbbd](https://github.com/google/uuid/commit/cd5fbbdd02f3e3467ac18940e07e062be1f864b4)) ### Fixes -* Clarify that Parse's job is to parse but not necessarily validate strings. (Documents current behavior) +- Clarify that Parse's job is to parse but not necessarily validate strings. + (Documents current behavior) ## [1.3.1](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) (2023-08-18) - ### Bug Fixes -* Use .EqualFold() to parse urn prefixed UUIDs ([#118](https://github.com/google/uuid/issues/118)) ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0)) +- Use .EqualFold() to parse urn prefixed UUIDs + ([#118](https://github.com/google/uuid/issues/118)) + ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0)) ## Changelog diff --git a/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md b/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md index a502fdc..3202300 100644 --- a/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md +++ b/examples/go/vendor/github.com/google/uuid/CONTRIBUTING.md @@ -4,7 +4,8 @@ We definitely welcome patches and contribution to this project! ### Tips -Commits must be formatted according to the [Conventional Commits Specification](https://www.conventionalcommits.org). +Commits must be formatted according to the +[Conventional Commits Specification](https://www.conventionalcommits.org). Always try to include a test case! If it is not possible or not necessary, please explain why in the pull request description. @@ -12,7 +13,8 @@ please explain why in the pull request description. ### Releasing Commits that would precipitate a SemVer change, as described in the Conventional -Commits Specification, will trigger [`release-please`](https://github.com/google-github-actions/release-please-action) +Commits Specification, will trigger +[`release-please`](https://github.com/google-github-actions/release-please-action) to create a release candidate pull request. Once submitted, `release-please` will create a release. diff --git a/examples/go/vendor/github.com/google/uuid/README.md b/examples/go/vendor/github.com/google/uuid/README.md index 3e9a618..586995d 100644 --- a/examples/go/vendor/github.com/google/uuid/README.md +++ b/examples/go/vendor/github.com/google/uuid/README.md @@ -1,21 +1,24 @@ # uuid + The uuid package generates and inspects UUIDs based on -[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122) -and DCE 1.1: Authentication and Security Services. +[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122) and DCE 1.1: +Authentication and Security Services. This package is based on the github.com/pborman/uuid package (previously named -code.google.com/p/go-uuid). It differs from these earlier packages in that -a UUID is a 16 byte array rather than a byte slice. One loss due to this -change is the ability to represent an invalid UUID (vs a NIL UUID). +code.google.com/p/go-uuid). It differs from these earlier packages in that a +UUID is a 16 byte array rather than a byte slice. One loss due to this change is +the ability to represent an invalid UUID (vs a NIL UUID). ###### Install + ```sh go get github.com/google/uuid ``` -###### Documentation +###### Documentation + [![Go Reference](https://pkg.go.dev/badge/github.com/google/uuid.svg)](https://pkg.go.dev/github.com/google/uuid) Full `go doc` style documentation for the package can be viewed online without -installing this package by using the GoDoc site here: +installing this package by using the GoDoc site here: http://pkg.go.dev/github.com/google/uuid diff --git a/examples/go/vendor/github.com/klauspost/compress/README.md b/examples/go/vendor/github.com/klauspost/compress/README.md index 05c7359..94f5a7a 100644 --- a/examples/go/vendor/github.com/klauspost/compress/README.md +++ b/examples/go/vendor/github.com/klauspost/compress/README.md @@ -1,700 +1,1167 @@ -# compress - -This package provides various compression algorithms. - -* [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression in pure Go. -* [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) is a high performance replacement for Snappy. -* Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). -* [snappy](https://github.com/klauspost/compress/tree/master/snappy) is a drop-in replacement for `github.com/golang/snappy` offering better compression and concurrent streams. -* [huff0](https://github.com/klauspost/compress/tree/master/huff0) and [FSE](https://github.com/klauspost/compress/tree/master/fse) implementations for raw entropy encoding. -* [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp) Provides client and server wrappers for handling gzipped requests efficiently. -* [pgzip](https://github.com/klauspost/pgzip) is a separate package that provides a very fast parallel gzip implementation. - -[![Go Reference](https://pkg.go.dev/badge/klauspost/compress.svg)](https://pkg.go.dev/github.com/klauspost/compress?tab=subdirectories) -[![Go](https://github.com/klauspost/compress/actions/workflows/go.yml/badge.svg)](https://github.com/klauspost/compress/actions/workflows/go.yml) -[![Sourcegraph Badge](https://sourcegraph.com/github.com/klauspost/compress/-/badge.svg)](https://sourcegraph.com/github.com/klauspost/compress?badge) - -# changelog - -* Feb 5th, 2024 - [1.17.6](https://github.com/klauspost/compress/releases/tag/v1.17.6) - * zstd: Fix incorrect repeat coding in best mode https://github.com/klauspost/compress/pull/923 - * s2: Fix DecodeConcurrent deadlock on errors https://github.com/klauspost/compress/pull/925 - -* Jan 26th, 2024 - [v1.17.5](https://github.com/klauspost/compress/releases/tag/v1.17.5) - * flate: Fix reset with dictionary on custom window encodes https://github.com/klauspost/compress/pull/912 - * zstd: Add Frame header encoding and stripping https://github.com/klauspost/compress/pull/908 - * zstd: Limit better/best default window to 8MB https://github.com/klauspost/compress/pull/913 - * zstd: Speed improvements by @greatroar in https://github.com/klauspost/compress/pull/896 https://github.com/klauspost/compress/pull/910 - * s2: Fix callbacks for skippable blocks and disallow 0xfe (Padding) by @Jille in https://github.com/klauspost/compress/pull/916 https://github.com/klauspost/compress/pull/917 -https://github.com/klauspost/compress/pull/919 https://github.com/klauspost/compress/pull/918 - -* Dec 1st, 2023 - [v1.17.4](https://github.com/klauspost/compress/releases/tag/v1.17.4) - * huff0: Speed up symbol counting by @greatroar in https://github.com/klauspost/compress/pull/887 - * huff0: Remove byteReader by @greatroar in https://github.com/klauspost/compress/pull/886 - * gzhttp: Allow overriding decompression on transport https://github.com/klauspost/compress/pull/892 - * gzhttp: Clamp compression level https://github.com/klauspost/compress/pull/890 - * gzip: Error out if reserved bits are set https://github.com/klauspost/compress/pull/891 - -* Nov 15th, 2023 - [v1.17.3](https://github.com/klauspost/compress/releases/tag/v1.17.3) - * fse: Fix max header size https://github.com/klauspost/compress/pull/881 - * zstd: Improve better/best compression https://github.com/klauspost/compress/pull/877 - * gzhttp: Fix missing content type on Close https://github.com/klauspost/compress/pull/883 - -* Oct 22nd, 2023 - [v1.17.2](https://github.com/klauspost/compress/releases/tag/v1.17.2) - * zstd: Fix rare *CORRUPTION* output in "best" mode. See https://github.com/klauspost/compress/pull/876 - -* Oct 14th, 2023 - [v1.17.1](https://github.com/klauspost/compress/releases/tag/v1.17.1) - * s2: Fix S2 "best" dictionary wrong encoding by @klauspost in https://github.com/klauspost/compress/pull/871 - * flate: Reduce allocations in decompressor and minor code improvements by @fakefloordiv in https://github.com/klauspost/compress/pull/869 - * s2: Fix EstimateBlockSize on 6&7 length input by @klauspost in https://github.com/klauspost/compress/pull/867 - -* Sept 19th, 2023 - [v1.17.0](https://github.com/klauspost/compress/releases/tag/v1.17.0) - * Add experimental dictionary builder https://github.com/klauspost/compress/pull/853 - * Add xerial snappy read/writer https://github.com/klauspost/compress/pull/838 - * flate: Add limited window compression https://github.com/klauspost/compress/pull/843 - * s2: Do 2 overlapping match checks https://github.com/klauspost/compress/pull/839 - * flate: Add amd64 assembly matchlen https://github.com/klauspost/compress/pull/837 - * gzip: Copy bufio.Reader on Reset by @thatguystone in https://github.com/klauspost/compress/pull/860 - -

                      - See changes to v1.16.x - - -* July 1st, 2023 - [v1.16.7](https://github.com/klauspost/compress/releases/tag/v1.16.7) - * zstd: Fix default level first dictionary encode https://github.com/klauspost/compress/pull/829 - * s2: add GetBufferCapacity() method by @GiedriusS in https://github.com/klauspost/compress/pull/832 - -* June 13, 2023 - [v1.16.6](https://github.com/klauspost/compress/releases/tag/v1.16.6) - * zstd: correctly ignore WithEncoderPadding(1) by @ianlancetaylor in https://github.com/klauspost/compress/pull/806 - * zstd: Add amd64 match length assembly https://github.com/klauspost/compress/pull/824 - * gzhttp: Handle informational headers by @rtribotte in https://github.com/klauspost/compress/pull/815 - * s2: Improve Better compression slightly https://github.com/klauspost/compress/pull/663 - -* Apr 16, 2023 - [v1.16.5](https://github.com/klauspost/compress/releases/tag/v1.16.5) - * zstd: readByte needs to use io.ReadFull by @jnoxon in https://github.com/klauspost/compress/pull/802 - * gzip: Fix WriterTo after initial read https://github.com/klauspost/compress/pull/804 - -* Apr 5, 2023 - [v1.16.4](https://github.com/klauspost/compress/releases/tag/v1.16.4) - * zstd: Improve zstd best efficiency by @greatroar and @klauspost in https://github.com/klauspost/compress/pull/784 - * zstd: Respect WithAllLitEntropyCompression https://github.com/klauspost/compress/pull/792 - * zstd: Fix amd64 not always detecting corrupt data https://github.com/klauspost/compress/pull/785 - * zstd: Various minor improvements by @greatroar in https://github.com/klauspost/compress/pull/788 https://github.com/klauspost/compress/pull/794 https://github.com/klauspost/compress/pull/795 - * s2: Fix huge block overflow https://github.com/klauspost/compress/pull/779 - * s2: Allow CustomEncoder fallback https://github.com/klauspost/compress/pull/780 - * gzhttp: Suppport ResponseWriter Unwrap() in gzhttp handler by @jgimenez in https://github.com/klauspost/compress/pull/799 - -* Mar 13, 2023 - [v1.16.1](https://github.com/klauspost/compress/releases/tag/v1.16.1) - * zstd: Speed up + improve best encoder by @greatroar in https://github.com/klauspost/compress/pull/776 - * gzhttp: Add optional [BREACH mitigation](https://github.com/klauspost/compress/tree/master/gzhttp#breach-mitigation). https://github.com/klauspost/compress/pull/762 https://github.com/klauspost/compress/pull/768 https://github.com/klauspost/compress/pull/769 https://github.com/klauspost/compress/pull/770 https://github.com/klauspost/compress/pull/767 - * s2: Add Intel LZ4s converter https://github.com/klauspost/compress/pull/766 - * zstd: Minor bug fixes https://github.com/klauspost/compress/pull/771 https://github.com/klauspost/compress/pull/772 https://github.com/klauspost/compress/pull/773 - * huff0: Speed up compress1xDo by @greatroar in https://github.com/klauspost/compress/pull/774 - -* Feb 26, 2023 - [v1.16.0](https://github.com/klauspost/compress/releases/tag/v1.16.0) - * s2: Add [Dictionary](https://github.com/klauspost/compress/tree/master/s2#dictionaries) support. https://github.com/klauspost/compress/pull/685 - * s2: Add Compression Size Estimate. https://github.com/klauspost/compress/pull/752 - * s2: Add support for custom stream encoder. https://github.com/klauspost/compress/pull/755 - * s2: Add LZ4 block converter. https://github.com/klauspost/compress/pull/748 - * s2: Support io.ReaderAt in ReadSeeker. https://github.com/klauspost/compress/pull/747 - * s2c/s2sx: Use concurrent decoding. https://github.com/klauspost/compress/pull/746 -
                      - -
                      - See changes to v1.15.x - -* Jan 21st, 2023 (v1.15.15) - * deflate: Improve level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/739 - * zstd: Add delta encoding support by @greatroar in https://github.com/klauspost/compress/pull/728 - * zstd: Various speed improvements by @greatroar https://github.com/klauspost/compress/pull/741 https://github.com/klauspost/compress/pull/734 https://github.com/klauspost/compress/pull/736 https://github.com/klauspost/compress/pull/744 https://github.com/klauspost/compress/pull/743 https://github.com/klauspost/compress/pull/745 - * gzhttp: Add SuffixETag() and DropETag() options to prevent ETag collisions on compressed responses by @willbicks in https://github.com/klauspost/compress/pull/740 - -* Jan 3rd, 2023 (v1.15.14) - - * flate: Improve speed in big stateless blocks https://github.com/klauspost/compress/pull/718 - * zstd: Minor speed tweaks by @greatroar in https://github.com/klauspost/compress/pull/716 https://github.com/klauspost/compress/pull/720 - * export NoGzipResponseWriter for custom ResponseWriter wrappers by @harshavardhana in https://github.com/klauspost/compress/pull/722 - * s2: Add example for indexing and existing stream https://github.com/klauspost/compress/pull/723 - -* Dec 11, 2022 (v1.15.13) - * zstd: Add [MaxEncodedSize](https://pkg.go.dev/github.com/klauspost/compress@v1.15.13/zstd#Encoder.MaxEncodedSize) to encoder https://github.com/klauspost/compress/pull/691 - * zstd: Various tweaks and improvements https://github.com/klauspost/compress/pull/693 https://github.com/klauspost/compress/pull/695 https://github.com/klauspost/compress/pull/696 https://github.com/klauspost/compress/pull/701 https://github.com/klauspost/compress/pull/702 https://github.com/klauspost/compress/pull/703 https://github.com/klauspost/compress/pull/704 https://github.com/klauspost/compress/pull/705 https://github.com/klauspost/compress/pull/706 https://github.com/klauspost/compress/pull/707 https://github.com/klauspost/compress/pull/708 - -* Oct 26, 2022 (v1.15.12) - - * zstd: Tweak decoder allocs. https://github.com/klauspost/compress/pull/680 - * gzhttp: Always delete `HeaderNoCompression` https://github.com/klauspost/compress/pull/683 - -* Sept 26, 2022 (v1.15.11) - - * flate: Improve level 1-3 compression https://github.com/klauspost/compress/pull/678 - * zstd: Improve "best" compression by @nightwolfz in https://github.com/klauspost/compress/pull/677 - * zstd: Fix+reduce decompression allocations https://github.com/klauspost/compress/pull/668 - * zstd: Fix non-effective noescape tag https://github.com/klauspost/compress/pull/667 - -* Sept 16, 2022 (v1.15.10) - - * zstd: Add [WithDecodeAllCapLimit](https://pkg.go.dev/github.com/klauspost/compress@v1.15.10/zstd#WithDecodeAllCapLimit) https://github.com/klauspost/compress/pull/649 - * Add Go 1.19 - deprecate Go 1.16 https://github.com/klauspost/compress/pull/651 - * flate: Improve level 5+6 compression https://github.com/klauspost/compress/pull/656 - * zstd: Improve "better" compresssion https://github.com/klauspost/compress/pull/657 - * s2: Improve "best" compression https://github.com/klauspost/compress/pull/658 - * s2: Improve "better" compression. https://github.com/klauspost/compress/pull/635 - * s2: Slightly faster non-assembly decompression https://github.com/klauspost/compress/pull/646 - * Use arrays for constant size copies https://github.com/klauspost/compress/pull/659 - -* July 21, 2022 (v1.15.9) - - * zstd: Fix decoder crash on amd64 (no BMI) on invalid input https://github.com/klauspost/compress/pull/645 - * zstd: Disable decoder extended memory copies (amd64) due to possible crashes https://github.com/klauspost/compress/pull/644 - * zstd: Allow single segments up to "max decoded size" by @klauspost in https://github.com/klauspost/compress/pull/643 - -* July 13, 2022 (v1.15.8) - - * gzip: fix stack exhaustion bug in Reader.Read https://github.com/klauspost/compress/pull/641 - * s2: Add Index header trim/restore https://github.com/klauspost/compress/pull/638 - * zstd: Optimize seqdeq amd64 asm by @greatroar in https://github.com/klauspost/compress/pull/636 - * zstd: Improve decoder memcopy https://github.com/klauspost/compress/pull/637 - * huff0: Pass a single bitReader pointer to asm by @greatroar in https://github.com/klauspost/compress/pull/634 - * zstd: Branchless getBits for amd64 w/o BMI2 by @greatroar in https://github.com/klauspost/compress/pull/640 - * gzhttp: Remove header before writing https://github.com/klauspost/compress/pull/639 - -* June 29, 2022 (v1.15.7) - - * s2: Fix absolute forward seeks https://github.com/klauspost/compress/pull/633 - * zip: Merge upstream https://github.com/klauspost/compress/pull/631 - * zip: Re-add zip64 fix https://github.com/klauspost/compress/pull/624 - * zstd: translate fseDecoder.buildDtable into asm by @WojciechMula in https://github.com/klauspost/compress/pull/598 - * flate: Faster histograms https://github.com/klauspost/compress/pull/620 - * deflate: Use compound hcode https://github.com/klauspost/compress/pull/622 - -* June 3, 2022 (v1.15.6) - * s2: Improve coding for long, close matches https://github.com/klauspost/compress/pull/613 - * s2c: Add Snappy/S2 stream recompression https://github.com/klauspost/compress/pull/611 - * zstd: Always use configured block size https://github.com/klauspost/compress/pull/605 - * zstd: Fix incorrect hash table placement for dict encoding in default https://github.com/klauspost/compress/pull/606 - * zstd: Apply default config to ZipDecompressor without options https://github.com/klauspost/compress/pull/608 - * gzhttp: Exclude more common archive formats https://github.com/klauspost/compress/pull/612 - * s2: Add ReaderIgnoreCRC https://github.com/klauspost/compress/pull/609 - * s2: Remove sanity load on index creation https://github.com/klauspost/compress/pull/607 - * snappy: Use dedicated function for scoring https://github.com/klauspost/compress/pull/614 - * s2c+s2d: Use official snappy framed extension https://github.com/klauspost/compress/pull/610 - -* May 25, 2022 (v1.15.5) - * s2: Add concurrent stream decompression https://github.com/klauspost/compress/pull/602 - * s2: Fix final emit oob read crash on amd64 https://github.com/klauspost/compress/pull/601 - * huff0: asm implementation of Decompress1X by @WojciechMula https://github.com/klauspost/compress/pull/596 - * zstd: Use 1 less goroutine for stream decoding https://github.com/klauspost/compress/pull/588 - * zstd: Copy literal in 16 byte blocks when possible https://github.com/klauspost/compress/pull/592 - * zstd: Speed up when WithDecoderLowmem(false) https://github.com/klauspost/compress/pull/599 - * zstd: faster next state update in BMI2 version of decode by @WojciechMula in https://github.com/klauspost/compress/pull/593 - * huff0: Do not check max size when reading table. https://github.com/klauspost/compress/pull/586 - * flate: Inplace hashing for level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/590 - - -* May 11, 2022 (v1.15.4) - * huff0: decompress directly into output by @WojciechMula in [#577](https://github.com/klauspost/compress/pull/577) - * inflate: Keep dict on stack [#581](https://github.com/klauspost/compress/pull/581) - * zstd: Faster decoding memcopy in asm [#583](https://github.com/klauspost/compress/pull/583) - * zstd: Fix ignored crc [#580](https://github.com/klauspost/compress/pull/580) - -* May 5, 2022 (v1.15.3) - * zstd: Allow to ignore checksum checking by @WojciechMula [#572](https://github.com/klauspost/compress/pull/572) - * s2: Fix incorrect seek for io.SeekEnd in [#575](https://github.com/klauspost/compress/pull/575) - -* Apr 26, 2022 (v1.15.2) - * zstd: Add x86-64 assembly for decompression on streams and blocks. Contributed by [@WojciechMula](https://github.com/WojciechMula). Typically 2x faster. [#528](https://github.com/klauspost/compress/pull/528) [#531](https://github.com/klauspost/compress/pull/531) [#545](https://github.com/klauspost/compress/pull/545) [#537](https://github.com/klauspost/compress/pull/537) - * zstd: Add options to ZipDecompressor and fixes [#539](https://github.com/klauspost/compress/pull/539) - * s2: Use sorted search for index [#555](https://github.com/klauspost/compress/pull/555) - * Minimum version is Go 1.16, added CI test on 1.18. - -* Mar 11, 2022 (v1.15.1) - * huff0: Add x86 assembly of Decode4X by @WojciechMula in [#512](https://github.com/klauspost/compress/pull/512) - * zstd: Reuse zip decoders in [#514](https://github.com/klauspost/compress/pull/514) - * zstd: Detect extra block data and report as corrupted in [#520](https://github.com/klauspost/compress/pull/520) - * zstd: Handle zero sized frame content size stricter in [#521](https://github.com/klauspost/compress/pull/521) - * zstd: Add stricter block size checks in [#523](https://github.com/klauspost/compress/pull/523) - -* Mar 3, 2022 (v1.15.0) - * zstd: Refactor decoder by @klauspost in [#498](https://github.com/klauspost/compress/pull/498) - * zstd: Add stream encoding without goroutines by @klauspost in [#505](https://github.com/klauspost/compress/pull/505) - * huff0: Prevent single blocks exceeding 16 bits by @klauspost in[#507](https://github.com/klauspost/compress/pull/507) - * flate: Inline literal emission by @klauspost in [#509](https://github.com/klauspost/compress/pull/509) - * gzhttp: Add zstd to transport by @klauspost in [#400](https://github.com/klauspost/compress/pull/400) - * gzhttp: Make content-type optional by @klauspost in [#510](https://github.com/klauspost/compress/pull/510) - -Both compression and decompression now supports "synchronous" stream operations. This means that whenever "concurrency" is set to 1, they will operate without spawning goroutines. - -Stream decompression is now faster on asynchronous, since the goroutine allocation much more effectively splits the workload. On typical streams this will typically use 2 cores fully for decompression. When a stream has finished decoding no goroutines will be left over, so decoders can now safely be pooled and still be garbage collected. - -While the release has been extensively tested, it is recommended to testing when upgrading. - -
                      - -
                      - See changes to v1.14.x - -* Feb 22, 2022 (v1.14.4) - * flate: Fix rare huffman only (-2) corruption. [#503](https://github.com/klauspost/compress/pull/503) - * zip: Update deprecated CreateHeaderRaw to correctly call CreateRaw by @saracen in [#502](https://github.com/klauspost/compress/pull/502) - * zip: don't read data descriptor early by @saracen in [#501](https://github.com/klauspost/compress/pull/501) #501 - * huff0: Use static decompression buffer up to 30% faster by @klauspost in [#499](https://github.com/klauspost/compress/pull/499) [#500](https://github.com/klauspost/compress/pull/500) - -* Feb 17, 2022 (v1.14.3) - * flate: Improve fastest levels compression speed ~10% more throughput. [#482](https://github.com/klauspost/compress/pull/482) [#489](https://github.com/klauspost/compress/pull/489) [#490](https://github.com/klauspost/compress/pull/490) [#491](https://github.com/klauspost/compress/pull/491) [#494](https://github.com/klauspost/compress/pull/494) [#478](https://github.com/klauspost/compress/pull/478) - * flate: Faster decompression speed, ~5-10%. [#483](https://github.com/klauspost/compress/pull/483) - * s2: Faster compression with Go v1.18 and amd64 microarch level 3+. [#484](https://github.com/klauspost/compress/pull/484) [#486](https://github.com/klauspost/compress/pull/486) - -* Jan 25, 2022 (v1.14.2) - * zstd: improve header decoder by @dsnet [#476](https://github.com/klauspost/compress/pull/476) - * zstd: Add bigger default blocks [#469](https://github.com/klauspost/compress/pull/469) - * zstd: Remove unused decompression buffer [#470](https://github.com/klauspost/compress/pull/470) - * zstd: Fix logically dead code by @ningmingxiao [#472](https://github.com/klauspost/compress/pull/472) - * flate: Improve level 7-9 [#471](https://github.com/klauspost/compress/pull/471) [#473](https://github.com/klauspost/compress/pull/473) - * zstd: Add noasm tag for xxhash [#475](https://github.com/klauspost/compress/pull/475) - -* Jan 11, 2022 (v1.14.1) - * s2: Add stream index in [#462](https://github.com/klauspost/compress/pull/462) - * flate: Speed and efficiency improvements in [#439](https://github.com/klauspost/compress/pull/439) [#461](https://github.com/klauspost/compress/pull/461) [#455](https://github.com/klauspost/compress/pull/455) [#452](https://github.com/klauspost/compress/pull/452) [#458](https://github.com/klauspost/compress/pull/458) - * zstd: Performance improvement in [#420]( https://github.com/klauspost/compress/pull/420) [#456](https://github.com/klauspost/compress/pull/456) [#437](https://github.com/klauspost/compress/pull/437) [#467](https://github.com/klauspost/compress/pull/467) [#468](https://github.com/klauspost/compress/pull/468) - * zstd: add arm64 xxhash assembly in [#464](https://github.com/klauspost/compress/pull/464) - * Add garbled for binaries for s2 in [#445](https://github.com/klauspost/compress/pull/445) -
                      - -
                      - See changes to v1.13.x - -* Aug 30, 2021 (v1.13.5) - * gz/zlib/flate: Alias stdlib errors [#425](https://github.com/klauspost/compress/pull/425) - * s2: Add block support to commandline tools [#413](https://github.com/klauspost/compress/pull/413) - * zstd: pooledZipWriter should return Writers to the same pool [#426](https://github.com/klauspost/compress/pull/426) - * Removed golang/snappy as external dependency for tests [#421](https://github.com/klauspost/compress/pull/421) - -* Aug 12, 2021 (v1.13.4) - * Add [snappy replacement package](https://github.com/klauspost/compress/tree/master/snappy). - * zstd: Fix incorrect encoding in "best" mode [#415](https://github.com/klauspost/compress/pull/415) - -* Aug 3, 2021 (v1.13.3) - * zstd: Improve Best compression [#404](https://github.com/klauspost/compress/pull/404) - * zstd: Fix WriteTo error forwarding [#411](https://github.com/klauspost/compress/pull/411) - * gzhttp: Return http.HandlerFunc instead of http.Handler. Unlikely breaking change. [#406](https://github.com/klauspost/compress/pull/406) - * s2sx: Fix max size error [#399](https://github.com/klauspost/compress/pull/399) - * zstd: Add optional stream content size on reset [#401](https://github.com/klauspost/compress/pull/401) - * zstd: use SpeedBestCompression for level >= 10 [#410](https://github.com/klauspost/compress/pull/410) - -* Jun 14, 2021 (v1.13.1) - * s2: Add full Snappy output support [#396](https://github.com/klauspost/compress/pull/396) - * zstd: Add configurable [Decoder window](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithDecoderMaxWindow) size [#394](https://github.com/klauspost/compress/pull/394) - * gzhttp: Add header to skip compression [#389](https://github.com/klauspost/compress/pull/389) - * s2: Improve speed with bigger output margin [#395](https://github.com/klauspost/compress/pull/395) - -* Jun 3, 2021 (v1.13.0) - * Added [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp#gzip-handler) which allows wrapping HTTP servers and clients with GZIP compressors. - * zstd: Detect short invalid signatures [#382](https://github.com/klauspost/compress/pull/382) - * zstd: Spawn decoder goroutine only if needed. [#380](https://github.com/klauspost/compress/pull/380) -
                      - - -
                      - See changes to v1.12.x - -* May 25, 2021 (v1.12.3) - * deflate: Better/faster Huffman encoding [#374](https://github.com/klauspost/compress/pull/374) - * deflate: Allocate less for history. [#375](https://github.com/klauspost/compress/pull/375) - * zstd: Forward read errors [#373](https://github.com/klauspost/compress/pull/373) - -* Apr 27, 2021 (v1.12.2) - * zstd: Improve better/best compression [#360](https://github.com/klauspost/compress/pull/360) [#364](https://github.com/klauspost/compress/pull/364) [#365](https://github.com/klauspost/compress/pull/365) - * zstd: Add helpers to compress/decompress zstd inside zip files [#363](https://github.com/klauspost/compress/pull/363) - * deflate: Improve level 5+6 compression [#367](https://github.com/klauspost/compress/pull/367) - * s2: Improve better/best compression [#358](https://github.com/klauspost/compress/pull/358) [#359](https://github.com/klauspost/compress/pull/358) - * s2: Load after checking src limit on amd64. [#362](https://github.com/klauspost/compress/pull/362) - * s2sx: Limit max executable size [#368](https://github.com/klauspost/compress/pull/368) - -* Apr 14, 2021 (v1.12.1) - * snappy package removed. Upstream added as dependency. - * s2: Better compression in "best" mode [#353](https://github.com/klauspost/compress/pull/353) - * s2sx: Add stdin input and detect pre-compressed from signature [#352](https://github.com/klauspost/compress/pull/352) - * s2c/s2d: Add http as possible input [#348](https://github.com/klauspost/compress/pull/348) - * s2c/s2d/s2sx: Always truncate when writing files [#352](https://github.com/klauspost/compress/pull/352) - * zstd: Reduce memory usage further when using [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) [#346](https://github.com/klauspost/compress/pull/346) - * s2: Fix potential problem with amd64 assembly and profilers [#349](https://github.com/klauspost/compress/pull/349) -
                      - -
                      - See changes to v1.11.x - -* Mar 26, 2021 (v1.11.13) - * zstd: Big speedup on small dictionary encodes [#344](https://github.com/klauspost/compress/pull/344) [#345](https://github.com/klauspost/compress/pull/345) - * zstd: Add [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) encoder option [#336](https://github.com/klauspost/compress/pull/336) - * deflate: Improve entropy compression [#338](https://github.com/klauspost/compress/pull/338) - * s2: Clean up and minor performance improvement in best [#341](https://github.com/klauspost/compress/pull/341) - -* Mar 5, 2021 (v1.11.12) - * s2: Add `s2sx` binary that creates [self extracting archives](https://github.com/klauspost/compress/tree/master/s2#s2sx-self-extracting-archives). - * s2: Speed up decompression on non-assembly platforms [#328](https://github.com/klauspost/compress/pull/328) - -* Mar 1, 2021 (v1.11.9) - * s2: Add ARM64 decompression assembly. Around 2x output speed. [#324](https://github.com/klauspost/compress/pull/324) - * s2: Improve "better" speed and efficiency. [#325](https://github.com/klauspost/compress/pull/325) - * s2: Fix binaries. - -* Feb 25, 2021 (v1.11.8) - * s2: Fixed occational out-of-bounds write on amd64. Upgrade recommended. - * s2: Add AMD64 assembly for better mode. 25-50% faster. [#315](https://github.com/klauspost/compress/pull/315) - * s2: Less upfront decoder allocation. [#322](https://github.com/klauspost/compress/pull/322) - * zstd: Faster "compression" of incompressible data. [#314](https://github.com/klauspost/compress/pull/314) - * zip: Fix zip64 headers. [#313](https://github.com/klauspost/compress/pull/313) - -* Jan 14, 2021 (v1.11.7) - * Use Bytes() interface to get bytes across packages. [#309](https://github.com/klauspost/compress/pull/309) - * s2: Add 'best' compression option. [#310](https://github.com/klauspost/compress/pull/310) - * s2: Add ReaderMaxBlockSize, changes `s2.NewReader` signature to include varargs. [#311](https://github.com/klauspost/compress/pull/311) - * s2: Fix crash on small better buffers. [#308](https://github.com/klauspost/compress/pull/308) - * s2: Clean up decoder. [#312](https://github.com/klauspost/compress/pull/312) - -* Jan 7, 2021 (v1.11.6) - * zstd: Make decoder allocations smaller [#306](https://github.com/klauspost/compress/pull/306) - * zstd: Free Decoder resources when Reset is called with a nil io.Reader [#305](https://github.com/klauspost/compress/pull/305) - -* Dec 20, 2020 (v1.11.4) - * zstd: Add Best compression mode [#304](https://github.com/klauspost/compress/pull/304) - * Add header decoder [#299](https://github.com/klauspost/compress/pull/299) - * s2: Add uncompressed stream option [#297](https://github.com/klauspost/compress/pull/297) - * Simplify/speed up small blocks with known max size. [#300](https://github.com/klauspost/compress/pull/300) - * zstd: Always reset literal dict encoder [#303](https://github.com/klauspost/compress/pull/303) - -* Nov 15, 2020 (v1.11.3) - * inflate: 10-15% faster decompression [#293](https://github.com/klauspost/compress/pull/293) - * zstd: Tweak DecodeAll default allocation [#295](https://github.com/klauspost/compress/pull/295) - -* Oct 11, 2020 (v1.11.2) - * s2: Fix out of bounds read in "better" block compression [#291](https://github.com/klauspost/compress/pull/291) - -* Oct 1, 2020 (v1.11.1) - * zstd: Set allLitEntropy true in default configuration [#286](https://github.com/klauspost/compress/pull/286) - -* Sept 8, 2020 (v1.11.0) - * zstd: Add experimental compression [dictionaries](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) [#281](https://github.com/klauspost/compress/pull/281) - * zstd: Fix mixed Write and ReadFrom calls [#282](https://github.com/klauspost/compress/pull/282) - * inflate/gz: Limit variable shifts, ~5% faster decompression [#274](https://github.com/klauspost/compress/pull/274) -
                      - -
                      - See changes to v1.10.x - -* July 8, 2020 (v1.10.11) - * zstd: Fix extra block when compressing with ReadFrom. [#278](https://github.com/klauspost/compress/pull/278) - * huff0: Also populate compression table when reading decoding table. [#275](https://github.com/klauspost/compress/pull/275) - -* June 23, 2020 (v1.10.10) - * zstd: Skip entropy compression in fastest mode when no matches. [#270](https://github.com/klauspost/compress/pull/270) - -* June 16, 2020 (v1.10.9): - * zstd: API change for specifying dictionaries. See [#268](https://github.com/klauspost/compress/pull/268) - * zip: update CreateHeaderRaw to handle zip64 fields. [#266](https://github.com/klauspost/compress/pull/266) - * Fuzzit tests removed. The service has been purchased and is no longer available. - -* June 5, 2020 (v1.10.8): - * 1.15x faster zstd block decompression. [#265](https://github.com/klauspost/compress/pull/265) - -* June 1, 2020 (v1.10.7): - * Added zstd decompression [dictionary support](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) - * Increase zstd decompression speed up to 1.19x. [#259](https://github.com/klauspost/compress/pull/259) - * Remove internal reset call in zstd compression and reduce allocations. [#263](https://github.com/klauspost/compress/pull/263) - -* May 21, 2020: (v1.10.6) - * zstd: Reduce allocations while decoding. [#258](https://github.com/klauspost/compress/pull/258), [#252](https://github.com/klauspost/compress/pull/252) - * zstd: Stricter decompression checks. - -* April 12, 2020: (v1.10.5) - * s2-commands: Flush output when receiving SIGINT. [#239](https://github.com/klauspost/compress/pull/239) - -* Apr 8, 2020: (v1.10.4) - * zstd: Minor/special case optimizations. [#251](https://github.com/klauspost/compress/pull/251), [#250](https://github.com/klauspost/compress/pull/250), [#249](https://github.com/klauspost/compress/pull/249), [#247](https://github.com/klauspost/compress/pull/247) -* Mar 11, 2020: (v1.10.3) - * s2: Use S2 encoder in pure Go mode for Snappy output as well. [#245](https://github.com/klauspost/compress/pull/245) - * s2: Fix pure Go block encoder. [#244](https://github.com/klauspost/compress/pull/244) - * zstd: Added "better compression" mode. [#240](https://github.com/klauspost/compress/pull/240) - * zstd: Improve speed of fastest compression mode by 5-10% [#241](https://github.com/klauspost/compress/pull/241) - * zstd: Skip creating encoders when not needed. [#238](https://github.com/klauspost/compress/pull/238) - -* Feb 27, 2020: (v1.10.2) - * Close to 50% speedup in inflate (gzip/zip decompression). [#236](https://github.com/klauspost/compress/pull/236) [#234](https://github.com/klauspost/compress/pull/234) [#232](https://github.com/klauspost/compress/pull/232) - * Reduce deflate level 1-6 memory usage up to 59%. [#227](https://github.com/klauspost/compress/pull/227) - -* Feb 18, 2020: (v1.10.1) - * Fix zstd crash when resetting multiple times without sending data. [#226](https://github.com/klauspost/compress/pull/226) - * deflate: Fix dictionary use on level 1-6. [#224](https://github.com/klauspost/compress/pull/224) - * Remove deflate writer reference when closing. [#224](https://github.com/klauspost/compress/pull/224) - -* Feb 4, 2020: (v1.10.0) - * Add optional dictionary to [stateless deflate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc#StatelessDeflate). Breaking change, send `nil` for previous behaviour. [#216](https://github.com/klauspost/compress/pull/216) - * Fix buffer overflow on repeated small block deflate. [#218](https://github.com/klauspost/compress/pull/218) - * Allow copying content from an existing ZIP file without decompressing+compressing. [#214](https://github.com/klauspost/compress/pull/214) - * Added [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) AMD64 assembler and various optimizations. Stream speed >10GB/s. [#186](https://github.com/klauspost/compress/pull/186) - -
                      - -
                      - See changes prior to v1.10.0 - -* Jan 20,2020 (v1.9.8) Optimize gzip/deflate with better size estimates and faster table generation. [#207](https://github.com/klauspost/compress/pull/207) by [luyu6056](https://github.com/luyu6056), [#206](https://github.com/klauspost/compress/pull/206). -* Jan 11, 2020: S2 Encode/Decode will use provided buffer if capacity is big enough. [#204](https://github.com/klauspost/compress/pull/204) -* Jan 5, 2020: (v1.9.7) Fix another zstd regression in v1.9.5 - v1.9.6 removed. -* Jan 4, 2020: (v1.9.6) Regression in v1.9.5 fixed causing corrupt zstd encodes in rare cases. -* Jan 4, 2020: Faster IO in [s2c + s2d commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) compression/decompression. [#192](https://github.com/klauspost/compress/pull/192) -* Dec 29, 2019: Removed v1.9.5 since fuzz tests showed a compatibility problem with the reference zstandard decoder. -* Dec 29, 2019: (v1.9.5) zstd: 10-20% faster block compression. [#199](https://github.com/klauspost/compress/pull/199) -* Dec 29, 2019: [zip](https://godoc.org/github.com/klauspost/compress/zip) package updated with latest Go features -* Dec 29, 2019: zstd: Single segment flag condintions tweaked. [#197](https://github.com/klauspost/compress/pull/197) -* Dec 18, 2019: s2: Faster compression when ReadFrom is used. [#198](https://github.com/klauspost/compress/pull/198) -* Dec 10, 2019: s2: Fix repeat length output when just above at 16MB limit. -* Dec 10, 2019: zstd: Add function to get decoder as io.ReadCloser. [#191](https://github.com/klauspost/compress/pull/191) -* Dec 3, 2019: (v1.9.4) S2: limit max repeat length. [#188](https://github.com/klauspost/compress/pull/188) -* Dec 3, 2019: Add [WithNoEntropyCompression](https://godoc.org/github.com/klauspost/compress/zstd#WithNoEntropyCompression) to zstd [#187](https://github.com/klauspost/compress/pull/187) -* Dec 3, 2019: Reduce memory use for tests. Check for leaked goroutines. -* Nov 28, 2019 (v1.9.3) Less allocations in stateless deflate. -* Nov 28, 2019: 5-20% Faster huff0 decode. Impacts zstd as well. [#184](https://github.com/klauspost/compress/pull/184) -* Nov 12, 2019 (v1.9.2) Added [Stateless Compression](#stateless-compression) for gzip/deflate. -* Nov 12, 2019: Fixed zstd decompression of large single blocks. [#180](https://github.com/klauspost/compress/pull/180) -* Nov 11, 2019: Set default [s2c](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) block size to 4MB. -* Nov 11, 2019: Reduce inflate memory use by 1KB. -* Nov 10, 2019: Less allocations in deflate bit writer. -* Nov 10, 2019: Fix inconsistent error returned by zstd decoder. -* Oct 28, 2019 (v1.9.1) ztsd: Fix crash when compressing blocks. [#174](https://github.com/klauspost/compress/pull/174) -* Oct 24, 2019 (v1.9.0) zstd: Fix rare data corruption [#173](https://github.com/klauspost/compress/pull/173) -* Oct 24, 2019 zstd: Fix huff0 out of buffer write [#171](https://github.com/klauspost/compress/pull/171) and always return errors [#172](https://github.com/klauspost/compress/pull/172) -* Oct 10, 2019: Big deflate rewrite, 30-40% faster with better compression [#105](https://github.com/klauspost/compress/pull/105) - -
                      - -
                      - See changes prior to v1.9.0 - -* Oct 10, 2019: (v1.8.6) zstd: Allow partial reads to get flushed data. [#169](https://github.com/klauspost/compress/pull/169) -* Oct 3, 2019: Fix inconsistent results on broken zstd streams. -* Sep 25, 2019: Added `-rm` (remove source files) and `-q` (no output except errors) to `s2c` and `s2d` [commands](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) -* Sep 16, 2019: (v1.8.4) Add `s2c` and `s2d` [commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools). -* Sep 10, 2019: (v1.8.3) Fix s2 decoder [Skip](https://godoc.org/github.com/klauspost/compress/s2#Reader.Skip). -* Sep 7, 2019: zstd: Added [WithWindowSize](https://godoc.org/github.com/klauspost/compress/zstd#WithWindowSize), contributed by [ianwilkes](https://github.com/ianwilkes). -* Sep 5, 2019: (v1.8.2) Add [WithZeroFrames](https://godoc.org/github.com/klauspost/compress/zstd#WithZeroFrames) which adds full zero payload block encoding option. -* Sep 5, 2019: Lazy initialization of zstandard predefined en/decoder tables. -* Aug 26, 2019: (v1.8.1) S2: 1-2% compression increase in "better" compression mode. -* Aug 26, 2019: zstd: Check maximum size of Huffman 1X compressed literals while decoding. -* Aug 24, 2019: (v1.8.0) Added [S2 compression](https://github.com/klauspost/compress/tree/master/s2#s2-compression), a high performance replacement for Snappy. -* Aug 21, 2019: (v1.7.6) Fixed minor issues found by fuzzer. One could lead to zstd not decompressing. -* Aug 18, 2019: Add [fuzzit](https://fuzzit.dev/) continuous fuzzing. -* Aug 14, 2019: zstd: Skip incompressible data 2x faster. [#147](https://github.com/klauspost/compress/pull/147) -* Aug 4, 2019 (v1.7.5): Better literal compression. [#146](https://github.com/klauspost/compress/pull/146) -* Aug 4, 2019: Faster zstd compression. [#143](https://github.com/klauspost/compress/pull/143) [#144](https://github.com/klauspost/compress/pull/144) -* Aug 4, 2019: Faster zstd decompression. [#145](https://github.com/klauspost/compress/pull/145) [#143](https://github.com/klauspost/compress/pull/143) [#142](https://github.com/klauspost/compress/pull/142) -* July 15, 2019 (v1.7.4): Fix double EOF block in rare cases on zstd encoder. -* July 15, 2019 (v1.7.3): Minor speedup/compression increase in default zstd encoder. -* July 14, 2019: zstd decoder: Fix decompression error on multiple uses with mixed content. -* July 7, 2019 (v1.7.2): Snappy update, zstd decoder potential race fix. -* June 17, 2019: zstd decompression bugfix. -* June 17, 2019: fix 32 bit builds. -* June 17, 2019: Easier use in modules (less dependencies). -* June 9, 2019: New stronger "default" [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression mode. Matches zstd default compression ratio. -* June 5, 2019: 20-40% throughput in [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and better compression. -* June 5, 2019: deflate/gzip compression: Reduce memory usage of lower compression levels. -* June 2, 2019: Added [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression! -* May 25, 2019: deflate/gzip: 10% faster bit writer, mostly visible in lower levels. -* Apr 22, 2019: [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) decompression added. -* Aug 1, 2018: Added [huff0 README](https://github.com/klauspost/compress/tree/master/huff0#huff0-entropy-compression). -* Jul 8, 2018: Added [Performance Update 2018](#performance-update-2018) below. -* Jun 23, 2018: Merged [Go 1.11 inflate optimizations](https://go-review.googlesource.com/c/go/+/102235). Go 1.9 is now required. Backwards compatible version tagged with [v1.3.0](https://github.com/klauspost/compress/releases/tag/v1.3.0). -* Apr 2, 2018: Added [huff0](https://godoc.org/github.com/klauspost/compress/huff0) en/decoder. Experimental for now, API may change. -* Mar 4, 2018: Added [FSE Entropy](https://godoc.org/github.com/klauspost/compress/fse) en/decoder. Experimental for now, API may change. -* Nov 3, 2017: Add compression [Estimate](https://godoc.org/github.com/klauspost/compress#Estimate) function. -* May 28, 2017: Reduce allocations when resetting decoder. -* Apr 02, 2017: Change back to official crc32, since changes were merged in Go 1.7. -* Jan 14, 2017: Reduce stack pressure due to array copies. See [Issue #18625](https://github.com/golang/go/issues/18625). -* Oct 25, 2016: Level 2-4 have been rewritten and now offers significantly better performance than before. -* Oct 20, 2016: Port zlib changes from Go 1.7 to fix zlib writer issue. Please update. -* Oct 16, 2016: Go 1.7 changes merged. Apples to apples this package is a few percent faster, but has a significantly better balance between speed and compression per level. -* Mar 24, 2016: Always attempt Huffman encoding on level 4-7. This improves base 64 encoded data compression. -* Mar 24, 2016: Small speedup for level 1-3. -* Feb 19, 2016: Faster bit writer, level -2 is 15% faster, level 1 is 4% faster. -* Feb 19, 2016: Handle small payloads faster in level 1-3. -* Feb 19, 2016: Added faster level 2 + 3 compression modes. -* Feb 19, 2016: [Rebalanced compression levels](https://blog.klauspost.com/rebalancing-deflate-compression-levels/), so there is a more even progresssion in terms of compression. New default level is 5. -* Feb 14, 2016: Snappy: Merge upstream changes. -* Feb 14, 2016: Snappy: Fix aggressive skipping. -* Feb 14, 2016: Snappy: Update benchmark. -* Feb 13, 2016: Deflate: Fixed assembler problem that could lead to sub-optimal compression. -* Feb 12, 2016: Snappy: Added AMD64 SSE 4.2 optimizations to matching, which makes easy to compress material run faster. Typical speedup is around 25%. -* Feb 9, 2016: Added Snappy package fork. This version is 5-7% faster, much more on hard to compress content. -* Jan 30, 2016: Optimize level 1 to 3 by not considering static dictionary or storing uncompressed. ~4-5% speedup. -* Jan 16, 2016: Optimization on deflate level 1,2,3 compression. -* Jan 8 2016: Merge [CL 18317](https://go-review.googlesource.com/#/c/18317): fix reading, writing of zip64 archives. -* Dec 8 2015: Make level 1 and -2 deterministic even if write size differs. -* Dec 8 2015: Split encoding functions, so hashing and matching can potentially be inlined. 1-3% faster on AMD64. 5% faster on other platforms. -* Dec 8 2015: Fixed rare [one byte out-of bounds read](https://github.com/klauspost/compress/issues/20). Please update! -* Nov 23 2015: Optimization on token writer. ~2-4% faster. Contributed by [@dsnet](https://github.com/dsnet). -* Nov 20 2015: Small optimization to bit writer on 64 bit systems. -* Nov 17 2015: Fixed out-of-bound errors if the underlying Writer returned an error. See [#15](https://github.com/klauspost/compress/issues/15). -* Nov 12 2015: Added [io.WriterTo](https://golang.org/pkg/io/#WriterTo) support to gzip/inflate. -* Nov 11 2015: Merged [CL 16669](https://go-review.googlesource.com/#/c/16669/4): archive/zip: enable overriding (de)compressors per file -* Oct 15 2015: Added skipping on uncompressible data. Random data speed up >5x. - -
                      - -# deflate usage - -The packages are drop-in replacements for standard libraries. Simply replace the import path to use them: - -| old import | new import | Documentation -|--------------------|-----------------------------------------|--------------------| -| `compress/gzip` | `github.com/klauspost/compress/gzip` | [gzip](https://pkg.go.dev/github.com/klauspost/compress/gzip?tab=doc) -| `compress/zlib` | `github.com/klauspost/compress/zlib` | [zlib](https://pkg.go.dev/github.com/klauspost/compress/zlib?tab=doc) -| `archive/zip` | `github.com/klauspost/compress/zip` | [zip](https://pkg.go.dev/github.com/klauspost/compress/zip?tab=doc) -| `compress/flate` | `github.com/klauspost/compress/flate` | [flate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc) - -* Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). - -You may also be interested in [pgzip](https://github.com/klauspost/pgzip), which is a drop in replacement for gzip, which support multithreaded compression on big files and the optimized [crc32](https://github.com/klauspost/crc32) package used by these packages. - -The packages contains the same as the standard library, so you can use the godoc for that: [gzip](http://golang.org/pkg/compress/gzip/), [zip](http://golang.org/pkg/archive/zip/), [zlib](http://golang.org/pkg/compress/zlib/), [flate](http://golang.org/pkg/compress/flate/). - -Currently there is only minor speedup on decompression (mostly CRC32 calculation). - -Memory usage is typically 1MB for a Writer. stdlib is in the same range. -If you expect to have a lot of concurrently allocated Writers consider using -the stateless compress described below. - -For compression performance, see: [this spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). - -To disable all assembly add `-tags=noasm`. This works across all packages. - -# Stateless compression - -This package offers stateless compression as a special option for gzip/deflate. -It will do compression but without maintaining any state between Write calls. - -This means there will be no memory kept between Write calls, but compression and speed will be suboptimal. - -This is only relevant in cases where you expect to run many thousands of compressors concurrently, -but with very little activity. This is *not* intended for regular web servers serving individual requests. - -Because of this, the size of actual Write calls will affect output size. - -In gzip, specify level `-3` / `gzip.StatelessCompression` to enable. - -For direct deflate use, NewStatelessWriter and StatelessDeflate are available. See [documentation](https://godoc.org/github.com/klauspost/compress/flate#NewStatelessWriter) - -A `bufio.Writer` can of course be used to control write sizes. For example, to use a 4KB buffer: - -```go - // replace 'ioutil.Discard' with your output. - gzw, err := gzip.NewWriterLevel(ioutil.Discard, gzip.StatelessCompression) - if err != nil { - return err - } - defer gzw.Close() - - w := bufio.NewWriterSize(gzw, 4096) - defer w.Flush() - - // Write to 'w' -``` - -This will only use up to 4KB in memory when the writer is idle. - -Compression is almost always worse than the fastest compression level -and each write will allocate (a little) memory. - -# Performance Update 2018 - -It has been a while since we have been looking at the speed of this package compared to the standard library, so I thought I would re-do my tests and give some overall recommendations based on the current state. All benchmarks have been performed with Go 1.10 on my Desktop Intel(R) Core(TM) i7-2600 CPU @3.40GHz. Since I last ran the tests, I have gotten more RAM, which means tests with big files are no longer limited by my SSD. - -The raw results are in my [updated spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). Due to cgo changes and upstream updates i could not get the cgo version of gzip to compile. Instead I included the [zstd](https://github.com/datadog/zstd) cgo implementation. If I get cgo gzip to work again, I might replace the results in the sheet. - -The columns to take note of are: *MB/s* - the throughput. *Reduction* - the data size reduction in percent of the original. *Rel Speed* relative speed compared to the standard library at the same level. *Smaller* - how many percent smaller is the compressed output compared to stdlib. Negative means the output was bigger. *Loss* means the loss (or gain) in compression as a percentage difference of the input. - -The `gzstd` (standard library gzip) and `gzkp` (this package gzip) only uses one CPU core. [`pgzip`](https://github.com/klauspost/pgzip), [`bgzf`](https://github.com/biogo/hts/tree/master/bgzf) uses all 4 cores. [`zstd`](https://github.com/DataDog/zstd) uses one core, and is a beast (but not Go, yet). - - -## Overall differences. - -There appears to be a roughly 5-10% speed advantage over the standard library when comparing at similar compression levels. - -The biggest difference you will see is the result of [re-balancing](https://blog.klauspost.com/rebalancing-deflate-compression-levels/) the compression levels. I wanted by library to give a smoother transition between the compression levels than the standard library. - -This package attempts to provide a more smooth transition, where "1" is taking a lot of shortcuts, "5" is the reasonable trade-off and "9" is the "give me the best compression", and the values in between gives something reasonable in between. The standard library has big differences in levels 1-4, but levels 5-9 having no significant gains - often spending a lot more time than can be justified by the achieved compression. - -There are links to all the test data in the [spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing) in the top left field on each tab. - -## Web Content - -This test set aims to emulate typical use in a web server. The test-set is 4GB data in 53k files, and is a mixture of (mostly) HTML, JS, CSS. - -Since level 1 and 9 are close to being the same code, they are quite close. But looking at the levels in-between the differences are quite big. - -Looking at level 6, this package is 88% faster, but will output about 6% more data. For a web server, this means you can serve 88% more data, but have to pay for 6% more bandwidth. You can draw your own conclusions on what would be the most expensive for your case. - -## Object files - -This test is for typical data files stored on a server. In this case it is a collection of Go precompiled objects. They are very compressible. - -The picture is similar to the web content, but with small differences since this is very compressible. Levels 2-3 offer good speed, but is sacrificing quite a bit of compression. - -The standard library seems suboptimal on level 3 and 4 - offering both worse compression and speed than level 6 & 7 of this package respectively. - -## Highly Compressible File - -This is a JSON file with very high redundancy. The reduction starts at 95% on level 1, so in real life terms we are dealing with something like a highly redundant stream of data, etc. - -It is definitely visible that we are dealing with specialized content here, so the results are very scattered. This package does not do very well at levels 1-4, but picks up significantly at level 5 and levels 7 and 8 offering great speed for the achieved compression. - -So if you know you content is extremely compressible you might want to go slightly higher than the defaults. The standard library has a huge gap between levels 3 and 4 in terms of speed (2.75x slowdown), so it offers little "middle ground". - -## Medium-High Compressible - -This is a pretty common test corpus: [enwik9](http://mattmahoney.net/dc/textdata.html). It contains the first 10^9 bytes of the English Wikipedia dump on Mar. 3, 2006. This is a very good test of typical text based compression and more data heavy streams. - -We see a similar picture here as in "Web Content". On equal levels some compression is sacrificed for more speed. Level 5 seems to be the best trade-off between speed and size, beating stdlib level 3 in both. - -## Medium Compressible - -I will combine two test sets, one [10GB file set](http://mattmahoney.net/dc/10gb.html) and a VM disk image (~8GB). Both contain different data types and represent a typical backup scenario. - -The most notable thing is how quickly the standard library drops to very low compression speeds around level 5-6 without any big gains in compression. Since this type of data is fairly common, this does not seem like good behavior. - - -## Un-compressible Content - -This is mainly a test of how good the algorithms are at detecting un-compressible input. The standard library only offers this feature with very conservative settings at level 1. Obviously there is no reason for the algorithms to try to compress input that cannot be compressed. The only downside is that it might skip some compressible data on false detections. - - -## Huffman only compression - -This compression library adds a special compression level, named `HuffmanOnly`, which allows near linear time compression. This is done by completely disabling matching of previous data, and only reduce the number of bits to represent each character. - -This means that often used characters, like 'e' and ' ' (space) in text use the fewest bits to represent, and rare characters like '¤' takes more bits to represent. For more information see [wikipedia](https://en.wikipedia.org/wiki/Huffman_coding) or this nice [video](https://youtu.be/ZdooBTdW5bM). - -Since this type of compression has much less variance, the compression speed is mostly unaffected by the input data, and is usually more than *180MB/s* for a single core. - -The downside is that the compression ratio is usually considerably worse than even the fastest conventional compression. The compression ratio can never be better than 8:1 (12.5%). - -The linear time compression can be used as a "better than nothing" mode, where you cannot risk the encoder to slow down on some content. For comparison, the size of the "Twain" text is *233460 bytes* (+29% vs. level 1) and encode speed is 144MB/s (4.5x level 1). So in this case you trade a 30% size increase for a 4 times speedup. - -For more information see my blog post on [Fast Linear Time Compression](http://blog.klauspost.com/constant-time-gzipzip-compression/). - -This is implemented on Go 1.7 as "Huffman Only" mode, though not exposed for gzip. - -# Other packages - -Here are other packages of good quality and pure Go (no cgo wrappers or autoconverted code): - -* [github.com/pierrec/lz4](https://github.com/pierrec/lz4) - strong multithreaded LZ4 compression. -* [github.com/cosnicolaou/pbzip2](https://github.com/cosnicolaou/pbzip2) - multithreaded bzip2 decompression. -* [github.com/dsnet/compress](https://github.com/dsnet/compress) - brotli decompression, bzip2 writer. -* [github.com/ronanh/intcomp](https://github.com/ronanh/intcomp) - Integer compression. -* [github.com/spenczar/fpc](https://github.com/spenczar/fpc) - Float compression. -* [github.com/minio/zipindex](https://github.com/minio/zipindex) - External ZIP directory index. -* [github.com/ybirader/pzip](https://github.com/ybirader/pzip) - Fast concurrent zip archiver and extractor. - -# license - -This code is licensed under the same conditions as the original Go code. See LICENSE file. +# compress + +This package provides various compression algorithms. + +- [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) + compression and decompression in pure Go. +- [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) is a + high performance replacement for Snappy. +- Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) + packages which can be used as a dropin replacement for + [gzip](https://godoc.org/github.com/klauspost/compress/gzip), + [zip](https://godoc.org/github.com/klauspost/compress/zip) and + [zlib](https://godoc.org/github.com/klauspost/compress/zlib). +- [snappy](https://github.com/klauspost/compress/tree/master/snappy) is a + drop-in replacement for `github.com/golang/snappy` offering better compression + and concurrent streams. +- [huff0](https://github.com/klauspost/compress/tree/master/huff0) and + [FSE](https://github.com/klauspost/compress/tree/master/fse) implementations + for raw entropy encoding. +- [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp) Provides + client and server wrappers for handling gzipped requests efficiently. +- [pgzip](https://github.com/klauspost/pgzip) is a separate package that + provides a very fast parallel gzip implementation. + +[![Go Reference](https://pkg.go.dev/badge/klauspost/compress.svg)](https://pkg.go.dev/github.com/klauspost/compress?tab=subdirectories) +[![Go](https://github.com/klauspost/compress/actions/workflows/go.yml/badge.svg)](https://github.com/klauspost/compress/actions/workflows/go.yml) +[![Sourcegraph Badge](https://sourcegraph.com/github.com/klauspost/compress/-/badge.svg)](https://sourcegraph.com/github.com/klauspost/compress?badge) + +# changelog + +- Feb 5th, 2024 - + [1.17.6](https://github.com/klauspost/compress/releases/tag/v1.17.6) + - zstd: Fix incorrect repeat coding in best mode + https://github.com/klauspost/compress/pull/923 + - s2: Fix DecodeConcurrent deadlock on errors + https://github.com/klauspost/compress/pull/925 +- Jan 26th, 2024 - + [v1.17.5](https://github.com/klauspost/compress/releases/tag/v1.17.5) _ flate: + Fix reset with dictionary on custom window encodes + https://github.com/klauspost/compress/pull/912 _ zstd: Add Frame header + encoding and stripping https://github.com/klauspost/compress/pull/908 _ zstd: + Limit better/best default window to 8MB + https://github.com/klauspost/compress/pull/913 _ zstd: Speed improvements by + @greatroar in https://github.com/klauspost/compress/pull/896 + https://github.com/klauspost/compress/pull/910 \* s2: Fix callbacks for + skippable blocks and disallow 0xfe (Padding) by @Jille in + https://github.com/klauspost/compress/pull/916 + https://github.com/klauspost/compress/pull/917 + https://github.com/klauspost/compress/pull/919 + https://github.com/klauspost/compress/pull/918 + +- Dec 1st, 2023 - + [v1.17.4](https://github.com/klauspost/compress/releases/tag/v1.17.4) + + - huff0: Speed up symbol counting by @greatroar in + https://github.com/klauspost/compress/pull/887 + - huff0: Remove byteReader by @greatroar in + https://github.com/klauspost/compress/pull/886 + - gzhttp: Allow overriding decompression on transport + https://github.com/klauspost/compress/pull/892 + - gzhttp: Clamp compression level + https://github.com/klauspost/compress/pull/890 + - gzip: Error out if reserved bits are set + https://github.com/klauspost/compress/pull/891 + +- Nov 15th, 2023 - + [v1.17.3](https://github.com/klauspost/compress/releases/tag/v1.17.3) + + - fse: Fix max header size https://github.com/klauspost/compress/pull/881 + - zstd: Improve better/best compression + https://github.com/klauspost/compress/pull/877 + - gzhttp: Fix missing content type on Close + https://github.com/klauspost/compress/pull/883 + +- Oct 22nd, 2023 - + [v1.17.2](https://github.com/klauspost/compress/releases/tag/v1.17.2) + + - zstd: Fix rare _CORRUPTION_ output in "best" mode. See + https://github.com/klauspost/compress/pull/876 + +- Oct 14th, 2023 - + [v1.17.1](https://github.com/klauspost/compress/releases/tag/v1.17.1) + + - s2: Fix S2 "best" dictionary wrong encoding by @klauspost in + https://github.com/klauspost/compress/pull/871 + - flate: Reduce allocations in decompressor and minor code improvements by + @fakefloordiv in https://github.com/klauspost/compress/pull/869 + - s2: Fix EstimateBlockSize on 6&7 length input by @klauspost in + https://github.com/klauspost/compress/pull/867 + +- Sept 19th, 2023 - + [v1.17.0](https://github.com/klauspost/compress/releases/tag/v1.17.0) + - Add experimental dictionary builder + https://github.com/klauspost/compress/pull/853 + - Add xerial snappy read/writer https://github.com/klauspost/compress/pull/838 + - flate: Add limited window compression + https://github.com/klauspost/compress/pull/843 + - s2: Do 2 overlapping match checks + https://github.com/klauspost/compress/pull/839 + - flate: Add amd64 assembly matchlen + https://github.com/klauspost/compress/pull/837 + - gzip: Copy bufio.Reader on Reset by @thatguystone in + https://github.com/klauspost/compress/pull/860 + +
                      + See changes to v1.16.x + +- July 1st, 2023 - + [v1.16.7](https://github.com/klauspost/compress/releases/tag/v1.16.7) + + - zstd: Fix default level first dictionary encode + https://github.com/klauspost/compress/pull/829 + - s2: add GetBufferCapacity() method by @GiedriusS in + https://github.com/klauspost/compress/pull/832 + +- June 13, 2023 - + [v1.16.6](https://github.com/klauspost/compress/releases/tag/v1.16.6) + + - zstd: correctly ignore WithEncoderPadding(1) by @ianlancetaylor in + https://github.com/klauspost/compress/pull/806 + - zstd: Add amd64 match length assembly + https://github.com/klauspost/compress/pull/824 + - gzhttp: Handle informational headers by @rtribotte in + https://github.com/klauspost/compress/pull/815 + - s2: Improve Better compression slightly + https://github.com/klauspost/compress/pull/663 + +- Apr 16, 2023 - + [v1.16.5](https://github.com/klauspost/compress/releases/tag/v1.16.5) + + - zstd: readByte needs to use io.ReadFull by @jnoxon in + https://github.com/klauspost/compress/pull/802 + - gzip: Fix WriterTo after initial read + https://github.com/klauspost/compress/pull/804 + +- Apr 5, 2023 - + [v1.16.4](https://github.com/klauspost/compress/releases/tag/v1.16.4) + + - zstd: Improve zstd best efficiency by @greatroar and @klauspost in + https://github.com/klauspost/compress/pull/784 + - zstd: Respect WithAllLitEntropyCompression + https://github.com/klauspost/compress/pull/792 + - zstd: Fix amd64 not always detecting corrupt data + https://github.com/klauspost/compress/pull/785 + - zstd: Various minor improvements by @greatroar in + https://github.com/klauspost/compress/pull/788 + https://github.com/klauspost/compress/pull/794 + https://github.com/klauspost/compress/pull/795 + - s2: Fix huge block overflow https://github.com/klauspost/compress/pull/779 + - s2: Allow CustomEncoder fallback + https://github.com/klauspost/compress/pull/780 + - gzhttp: Suppport ResponseWriter Unwrap() in gzhttp handler by @jgimenez in + https://github.com/klauspost/compress/pull/799 + +- Mar 13, 2023 - + [v1.16.1](https://github.com/klauspost/compress/releases/tag/v1.16.1) + + - zstd: Speed up + improve best encoder by @greatroar in + https://github.com/klauspost/compress/pull/776 + - gzhttp: Add optional + [BREACH mitigation](https://github.com/klauspost/compress/tree/master/gzhttp#breach-mitigation). + https://github.com/klauspost/compress/pull/762 + https://github.com/klauspost/compress/pull/768 + https://github.com/klauspost/compress/pull/769 + https://github.com/klauspost/compress/pull/770 + https://github.com/klauspost/compress/pull/767 + - s2: Add Intel LZ4s converter https://github.com/klauspost/compress/pull/766 + - zstd: Minor bug fixes https://github.com/klauspost/compress/pull/771 + https://github.com/klauspost/compress/pull/772 + https://github.com/klauspost/compress/pull/773 + - huff0: Speed up compress1xDo by @greatroar in + https://github.com/klauspost/compress/pull/774 + +- Feb 26, 2023 - +[v1.16.0](https://github.com/klauspost/compress/releases/tag/v1.16.0) _ s2: Add +[Dictionary](https://github.com/klauspost/compress/tree/master/s2#dictionaries) +support. https://github.com/klauspost/compress/pull/685 _ s2: Add Compression +Size Estimate. https://github.com/klauspost/compress/pull/752 _ s2: Add support +for custom stream encoder. https://github.com/klauspost/compress/pull/755 _ s2: +Add LZ4 block converter. https://github.com/klauspost/compress/pull/748 _ s2: +Support io.ReaderAt in ReadSeeker. +https://github.com/klauspost/compress/pull/747 _ s2c/s2sx: Use concurrent +decoding. https://github.com/klauspost/compress/pull/746 +
                      + +
                      + See changes to v1.15.x + +* Jan 21st, 2023 (v1.15.15) + * deflate: Improve level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/739 + * zstd: Add delta encoding support by @greatroar in https://github.com/klauspost/compress/pull/728 + * zstd: Various speed improvements by @greatroar https://github.com/klauspost/compress/pull/741 https://github.com/klauspost/compress/pull/734 https://github.com/klauspost/compress/pull/736 https://github.com/klauspost/compress/pull/744 https://github.com/klauspost/compress/pull/743 https://github.com/klauspost/compress/pull/745 + * gzhttp: Add SuffixETag() and DropETag() options to prevent ETag collisions on compressed responses by @willbicks in https://github.com/klauspost/compress/pull/740 + +- Jan 3rd, 2023 (v1.15.14) + + - flate: Improve speed in big stateless blocks + https://github.com/klauspost/compress/pull/718 + - zstd: Minor speed tweaks by @greatroar in + https://github.com/klauspost/compress/pull/716 + https://github.com/klauspost/compress/pull/720 + - export NoGzipResponseWriter for custom ResponseWriter wrappers by + @harshavardhana in https://github.com/klauspost/compress/pull/722 + - s2: Add example for indexing and existing stream + https://github.com/klauspost/compress/pull/723 + +- Dec 11, 2022 (v1.15.13) + + - zstd: Add + [MaxEncodedSize](https://pkg.go.dev/github.com/klauspost/compress@v1.15.13/zstd#Encoder.MaxEncodedSize) + to encoder https://github.com/klauspost/compress/pull/691 + - zstd: Various tweaks and improvements + https://github.com/klauspost/compress/pull/693 + https://github.com/klauspost/compress/pull/695 + https://github.com/klauspost/compress/pull/696 + https://github.com/klauspost/compress/pull/701 + https://github.com/klauspost/compress/pull/702 + https://github.com/klauspost/compress/pull/703 + https://github.com/klauspost/compress/pull/704 + https://github.com/klauspost/compress/pull/705 + https://github.com/klauspost/compress/pull/706 + https://github.com/klauspost/compress/pull/707 + https://github.com/klauspost/compress/pull/708 + +- Oct 26, 2022 (v1.15.12) + + - zstd: Tweak decoder allocs. https://github.com/klauspost/compress/pull/680 + - gzhttp: Always delete `HeaderNoCompression` + https://github.com/klauspost/compress/pull/683 + +- Sept 26, 2022 (v1.15.11) + + - flate: Improve level 1-3 compression + https://github.com/klauspost/compress/pull/678 + - zstd: Improve "best" compression by @nightwolfz in + https://github.com/klauspost/compress/pull/677 + - zstd: Fix+reduce decompression allocations + https://github.com/klauspost/compress/pull/668 + - zstd: Fix non-effective noescape tag + https://github.com/klauspost/compress/pull/667 + +- Sept 16, 2022 (v1.15.10) + + - zstd: Add + [WithDecodeAllCapLimit](https://pkg.go.dev/github.com/klauspost/compress@v1.15.10/zstd#WithDecodeAllCapLimit) + https://github.com/klauspost/compress/pull/649 + - Add Go 1.19 - deprecate Go 1.16 + https://github.com/klauspost/compress/pull/651 + - flate: Improve level 5+6 compression + https://github.com/klauspost/compress/pull/656 + - zstd: Improve "better" compresssion + https://github.com/klauspost/compress/pull/657 + - s2: Improve "best" compression + https://github.com/klauspost/compress/pull/658 + - s2: Improve "better" compression. + https://github.com/klauspost/compress/pull/635 + - s2: Slightly faster non-assembly decompression + https://github.com/klauspost/compress/pull/646 + - Use arrays for constant size copies + https://github.com/klauspost/compress/pull/659 + +- July 21, 2022 (v1.15.9) + + - zstd: Fix decoder crash on amd64 (no BMI) on invalid input + https://github.com/klauspost/compress/pull/645 + - zstd: Disable decoder extended memory copies (amd64) due to possible crashes + https://github.com/klauspost/compress/pull/644 + - zstd: Allow single segments up to "max decoded size" by @klauspost in + https://github.com/klauspost/compress/pull/643 + +- July 13, 2022 (v1.15.8) + + - gzip: fix stack exhaustion bug in Reader.Read + https://github.com/klauspost/compress/pull/641 + - s2: Add Index header trim/restore + https://github.com/klauspost/compress/pull/638 + - zstd: Optimize seqdeq amd64 asm by @greatroar in + https://github.com/klauspost/compress/pull/636 + - zstd: Improve decoder memcopy https://github.com/klauspost/compress/pull/637 + - huff0: Pass a single bitReader pointer to asm by @greatroar in + https://github.com/klauspost/compress/pull/634 + - zstd: Branchless getBits for amd64 w/o BMI2 by @greatroar in + https://github.com/klauspost/compress/pull/640 + - gzhttp: Remove header before writing + https://github.com/klauspost/compress/pull/639 + +- June 29, 2022 (v1.15.7) + + - s2: Fix absolute forward seeks + https://github.com/klauspost/compress/pull/633 + - zip: Merge upstream https://github.com/klauspost/compress/pull/631 + - zip: Re-add zip64 fix https://github.com/klauspost/compress/pull/624 + - zstd: translate fseDecoder.buildDtable into asm by @WojciechMula in + https://github.com/klauspost/compress/pull/598 + - flate: Faster histograms https://github.com/klauspost/compress/pull/620 + - deflate: Use compound hcode https://github.com/klauspost/compress/pull/622 + +- June 3, 2022 (v1.15.6) + + - s2: Improve coding for long, close matches + https://github.com/klauspost/compress/pull/613 + - s2c: Add Snappy/S2 stream recompression + https://github.com/klauspost/compress/pull/611 + - zstd: Always use configured block size + https://github.com/klauspost/compress/pull/605 + - zstd: Fix incorrect hash table placement for dict encoding in default + https://github.com/klauspost/compress/pull/606 + - zstd: Apply default config to ZipDecompressor without options + https://github.com/klauspost/compress/pull/608 + - gzhttp: Exclude more common archive formats + https://github.com/klauspost/compress/pull/612 + - s2: Add ReaderIgnoreCRC https://github.com/klauspost/compress/pull/609 + - s2: Remove sanity load on index creation + https://github.com/klauspost/compress/pull/607 + - snappy: Use dedicated function for scoring + https://github.com/klauspost/compress/pull/614 + - s2c+s2d: Use official snappy framed extension + https://github.com/klauspost/compress/pull/610 + +- May 25, 2022 (v1.15.5) + + - s2: Add concurrent stream decompression + https://github.com/klauspost/compress/pull/602 + - s2: Fix final emit oob read crash on amd64 + https://github.com/klauspost/compress/pull/601 + - huff0: asm implementation of Decompress1X by @WojciechMula + https://github.com/klauspost/compress/pull/596 + - zstd: Use 1 less goroutine for stream decoding + https://github.com/klauspost/compress/pull/588 + - zstd: Copy literal in 16 byte blocks when possible + https://github.com/klauspost/compress/pull/592 + - zstd: Speed up when WithDecoderLowmem(false) + https://github.com/klauspost/compress/pull/599 + - zstd: faster next state update in BMI2 version of decode by @WojciechMula in + https://github.com/klauspost/compress/pull/593 + - huff0: Do not check max size when reading table. + https://github.com/klauspost/compress/pull/586 + - flate: Inplace hashing for level 7-9 by @klauspost in + https://github.com/klauspost/compress/pull/590 + +- May 11, 2022 (v1.15.4) + + - huff0: decompress directly into output by @WojciechMula in + [#577](https://github.com/klauspost/compress/pull/577) + - inflate: Keep dict on stack + [#581](https://github.com/klauspost/compress/pull/581) + - zstd: Faster decoding memcopy in asm + [#583](https://github.com/klauspost/compress/pull/583) + - zstd: Fix ignored crc [#580](https://github.com/klauspost/compress/pull/580) + +- May 5, 2022 (v1.15.3) + + - zstd: Allow to ignore checksum checking by @WojciechMula + [#572](https://github.com/klauspost/compress/pull/572) + - s2: Fix incorrect seek for io.SeekEnd in + [#575](https://github.com/klauspost/compress/pull/575) + +- Apr 26, 2022 (v1.15.2) + + - zstd: Add x86-64 assembly for decompression on streams and blocks. + Contributed by [@WojciechMula](https://github.com/WojciechMula). Typically + 2x faster. [#528](https://github.com/klauspost/compress/pull/528) + [#531](https://github.com/klauspost/compress/pull/531) + [#545](https://github.com/klauspost/compress/pull/545) + [#537](https://github.com/klauspost/compress/pull/537) + - zstd: Add options to ZipDecompressor and fixes + [#539](https://github.com/klauspost/compress/pull/539) + - s2: Use sorted search for index + [#555](https://github.com/klauspost/compress/pull/555) + - Minimum version is Go 1.16, added CI test on 1.18. + +- Mar 11, 2022 (v1.15.1) + + - huff0: Add x86 assembly of Decode4X by @WojciechMula in + [#512](https://github.com/klauspost/compress/pull/512) + - zstd: Reuse zip decoders in + [#514](https://github.com/klauspost/compress/pull/514) + - zstd: Detect extra block data and report as corrupted in + [#520](https://github.com/klauspost/compress/pull/520) + - zstd: Handle zero sized frame content size stricter in + [#521](https://github.com/klauspost/compress/pull/521) + - zstd: Add stricter block size checks in + [#523](https://github.com/klauspost/compress/pull/523) + +- Mar 3, 2022 (v1.15.0) + - zstd: Refactor decoder by @klauspost in + [#498](https://github.com/klauspost/compress/pull/498) + - zstd: Add stream encoding without goroutines by @klauspost in + [#505](https://github.com/klauspost/compress/pull/505) + - huff0: Prevent single blocks exceeding 16 bits by @klauspost + in[#507](https://github.com/klauspost/compress/pull/507) + - flate: Inline literal emission by @klauspost in + [#509](https://github.com/klauspost/compress/pull/509) + - gzhttp: Add zstd to transport by @klauspost in + [#400](https://github.com/klauspost/compress/pull/400) + - gzhttp: Make content-type optional by @klauspost in + [#510](https://github.com/klauspost/compress/pull/510) + +Both compression and decompression now supports "synchronous" stream operations. +This means that whenever "concurrency" is set to 1, they will operate without +spawning goroutines. + +Stream decompression is now faster on asynchronous, since the goroutine +allocation much more effectively splits the workload. On typical streams this +will typically use 2 cores fully for decompression. When a stream has finished +decoding no goroutines will be left over, so decoders can now safely be pooled +and still be garbage collected. + +While the release has been extensively tested, it is recommended to testing when +upgrading. + +
                      + +
                      + See changes to v1.14.x + +* Feb 22, 2022 (v1.14.4) + * flate: Fix rare huffman only (-2) corruption. [#503](https://github.com/klauspost/compress/pull/503) + * zip: Update deprecated CreateHeaderRaw to correctly call CreateRaw by @saracen in [#502](https://github.com/klauspost/compress/pull/502) + * zip: don't read data descriptor early by @saracen in [#501](https://github.com/klauspost/compress/pull/501) #501 + * huff0: Use static decompression buffer up to 30% faster by @klauspost in [#499](https://github.com/klauspost/compress/pull/499) [#500](https://github.com/klauspost/compress/pull/500) + +- Feb 17, 2022 (v1.14.3) + + - flate: Improve fastest levels compression speed ~10% more throughput. + [#482](https://github.com/klauspost/compress/pull/482) + [#489](https://github.com/klauspost/compress/pull/489) + [#490](https://github.com/klauspost/compress/pull/490) + [#491](https://github.com/klauspost/compress/pull/491) + [#494](https://github.com/klauspost/compress/pull/494) + [#478](https://github.com/klauspost/compress/pull/478) + - flate: Faster decompression speed, ~5-10%. + [#483](https://github.com/klauspost/compress/pull/483) + - s2: Faster compression with Go v1.18 and amd64 microarch level 3+. + [#484](https://github.com/klauspost/compress/pull/484) + [#486](https://github.com/klauspost/compress/pull/486) + +- Jan 25, 2022 (v1.14.2) + + - zstd: improve header decoder by @dsnet + [#476](https://github.com/klauspost/compress/pull/476) + - zstd: Add bigger default blocks + [#469](https://github.com/klauspost/compress/pull/469) + - zstd: Remove unused decompression buffer + [#470](https://github.com/klauspost/compress/pull/470) + - zstd: Fix logically dead code by @ningmingxiao + [#472](https://github.com/klauspost/compress/pull/472) + - flate: Improve level 7-9 + [#471](https://github.com/klauspost/compress/pull/471) + [#473](https://github.com/klauspost/compress/pull/473) + - zstd: Add noasm tag for xxhash + [#475](https://github.com/klauspost/compress/pull/475) + +- Jan 11, 2022 (v1.14.1) _ s2: Add stream index in +[#462](https://github.com/klauspost/compress/pull/462) _ flate: Speed and +efficiency improvements in +[#439](https://github.com/klauspost/compress/pull/439) +[#461](https://github.com/klauspost/compress/pull/461) +[#455](https://github.com/klauspost/compress/pull/455) +[#452](https://github.com/klauspost/compress/pull/452) +[#458](https://github.com/klauspost/compress/pull/458) _ zstd: Performance +improvement in [#420](https://github.com/klauspost/compress/pull/420) +[#456](https://github.com/klauspost/compress/pull/456) +[#437](https://github.com/klauspost/compress/pull/437) +[#467](https://github.com/klauspost/compress/pull/467) +[#468](https://github.com/klauspost/compress/pull/468) _ zstd: add arm64 xxhash +assembly in [#464](https://github.com/klauspost/compress/pull/464) \* Add +garbled for binaries for s2 in +[#445](https://github.com/klauspost/compress/pull/445) +
                      + +
                      + See changes to v1.13.x + +* Aug 30, 2021 (v1.13.5) + * gz/zlib/flate: Alias stdlib errors [#425](https://github.com/klauspost/compress/pull/425) + * s2: Add block support to commandline tools [#413](https://github.com/klauspost/compress/pull/413) + * zstd: pooledZipWriter should return Writers to the same pool [#426](https://github.com/klauspost/compress/pull/426) + * Removed golang/snappy as external dependency for tests [#421](https://github.com/klauspost/compress/pull/421) + +- Aug 12, 2021 (v1.13.4) + + - Add + [snappy replacement package](https://github.com/klauspost/compress/tree/master/snappy). + - zstd: Fix incorrect encoding in "best" mode + [#415](https://github.com/klauspost/compress/pull/415) + +- Aug 3, 2021 (v1.13.3) + + - zstd: Improve Best compression + [#404](https://github.com/klauspost/compress/pull/404) + - zstd: Fix WriteTo error forwarding + [#411](https://github.com/klauspost/compress/pull/411) + - gzhttp: Return http.HandlerFunc instead of http.Handler. Unlikely breaking + change. [#406](https://github.com/klauspost/compress/pull/406) + - s2sx: Fix max size error + [#399](https://github.com/klauspost/compress/pull/399) + - zstd: Add optional stream content size on reset + [#401](https://github.com/klauspost/compress/pull/401) + - zstd: use SpeedBestCompression for level >= 10 + [#410](https://github.com/klauspost/compress/pull/410) + +- Jun 14, 2021 (v1.13.1) + + - s2: Add full Snappy output support + [#396](https://github.com/klauspost/compress/pull/396) + - zstd: Add configurable + [Decoder window](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithDecoderMaxWindow) + size [#394](https://github.com/klauspost/compress/pull/394) + - gzhttp: Add header to skip compression + [#389](https://github.com/klauspost/compress/pull/389) + - s2: Improve speed with bigger output margin + [#395](https://github.com/klauspost/compress/pull/395) + +- Jun 3, 2021 (v1.13.0) _ Added +[gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp#gzip-handler) +which allows wrapping HTTP servers and clients with GZIP compressors. _ zstd: +Detect short invalid signatures +[#382](https://github.com/klauspost/compress/pull/382) \* zstd: Spawn decoder +goroutine only if needed. [#380](https://github.com/klauspost/compress/pull/380) +
                      + +
                      + See changes to v1.12.x + +* May 25, 2021 (v1.12.3) + * deflate: Better/faster Huffman encoding [#374](https://github.com/klauspost/compress/pull/374) + * deflate: Allocate less for history. [#375](https://github.com/klauspost/compress/pull/375) + * zstd: Forward read errors [#373](https://github.com/klauspost/compress/pull/373) + +- Apr 27, 2021 (v1.12.2) + + - zstd: Improve better/best compression + [#360](https://github.com/klauspost/compress/pull/360) + [#364](https://github.com/klauspost/compress/pull/364) + [#365](https://github.com/klauspost/compress/pull/365) + - zstd: Add helpers to compress/decompress zstd inside zip files + [#363](https://github.com/klauspost/compress/pull/363) + - deflate: Improve level 5+6 compression + [#367](https://github.com/klauspost/compress/pull/367) + - s2: Improve better/best compression + [#358](https://github.com/klauspost/compress/pull/358) + [#359](https://github.com/klauspost/compress/pull/358) + - s2: Load after checking src limit on amd64. + [#362](https://github.com/klauspost/compress/pull/362) + - s2sx: Limit max executable size + [#368](https://github.com/klauspost/compress/pull/368) + +- Apr 14, 2021 (v1.12.1) _ snappy package removed. Upstream added as dependency. +_ s2: Better compression in "best" mode +[#353](https://github.com/klauspost/compress/pull/353) _ s2sx: Add stdin input +and detect pre-compressed from signature +[#352](https://github.com/klauspost/compress/pull/352) _ s2c/s2d: Add http as +possible input [#348](https://github.com/klauspost/compress/pull/348) _ +s2c/s2d/s2sx: Always truncate when writing files +[#352](https://github.com/klauspost/compress/pull/352) _ zstd: Reduce memory +usage further when using +[WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) +[#346](https://github.com/klauspost/compress/pull/346) \* s2: Fix potential +problem with amd64 assembly and profilers +[#349](https://github.com/klauspost/compress/pull/349) +
                      + +
                      + See changes to v1.11.x + +* Mar 26, 2021 (v1.11.13) + * zstd: Big speedup on small dictionary encodes [#344](https://github.com/klauspost/compress/pull/344) [#345](https://github.com/klauspost/compress/pull/345) + * zstd: Add [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) encoder option [#336](https://github.com/klauspost/compress/pull/336) + * deflate: Improve entropy compression [#338](https://github.com/klauspost/compress/pull/338) + * s2: Clean up and minor performance improvement in best [#341](https://github.com/klauspost/compress/pull/341) + +- Mar 5, 2021 (v1.11.12) + + - s2: Add `s2sx` binary that creates + [self extracting archives](https://github.com/klauspost/compress/tree/master/s2#s2sx-self-extracting-archives). + - s2: Speed up decompression on non-assembly platforms + [#328](https://github.com/klauspost/compress/pull/328) + +- Mar 1, 2021 (v1.11.9) + + - s2: Add ARM64 decompression assembly. Around 2x output speed. + [#324](https://github.com/klauspost/compress/pull/324) + - s2: Improve "better" speed and efficiency. + [#325](https://github.com/klauspost/compress/pull/325) + - s2: Fix binaries. + +- Feb 25, 2021 (v1.11.8) + - s2: Fixed occational out-of-bounds write on amd64. Upgrade recommended. + - s2: Add AMD64 assembly for better mode. 25-50% faster. + [#315](https://github.com/klauspost/compress/pull/315) + - s2: Less upfront decoder allocation. + [#322](https://github.com/klauspost/compress/pull/322) + - zstd: Faster "compression" of incompressible data. + [#314](https://github.com/klauspost/compress/pull/314) + - zip: Fix zip64 headers. + [#313](https://github.com/klauspost/compress/pull/313) +- Jan 14, 2021 (v1.11.7) + + - Use Bytes() interface to get bytes across packages. + [#309](https://github.com/klauspost/compress/pull/309) + - s2: Add 'best' compression option. + [#310](https://github.com/klauspost/compress/pull/310) + - s2: Add ReaderMaxBlockSize, changes `s2.NewReader` signature to include + varargs. [#311](https://github.com/klauspost/compress/pull/311) + - s2: Fix crash on small better buffers. + [#308](https://github.com/klauspost/compress/pull/308) + - s2: Clean up decoder. [#312](https://github.com/klauspost/compress/pull/312) + +- Jan 7, 2021 (v1.11.6) + + - zstd: Make decoder allocations smaller + [#306](https://github.com/klauspost/compress/pull/306) + - zstd: Free Decoder resources when Reset is called with a nil io.Reader + [#305](https://github.com/klauspost/compress/pull/305) + +- Dec 20, 2020 (v1.11.4) + + - zstd: Add Best compression mode + [#304](https://github.com/klauspost/compress/pull/304) + - Add header decoder [#299](https://github.com/klauspost/compress/pull/299) + - s2: Add uncompressed stream option + [#297](https://github.com/klauspost/compress/pull/297) + - Simplify/speed up small blocks with known max size. + [#300](https://github.com/klauspost/compress/pull/300) + - zstd: Always reset literal dict encoder + [#303](https://github.com/klauspost/compress/pull/303) + +- Nov 15, 2020 (v1.11.3) + + - inflate: 10-15% faster decompression + [#293](https://github.com/klauspost/compress/pull/293) + - zstd: Tweak DecodeAll default allocation + [#295](https://github.com/klauspost/compress/pull/295) + +- Oct 11, 2020 (v1.11.2) + + - s2: Fix out of bounds read in "better" block compression + [#291](https://github.com/klauspost/compress/pull/291) + +- Oct 1, 2020 (v1.11.1) + + - zstd: Set allLitEntropy true in default configuration + [#286](https://github.com/klauspost/compress/pull/286) + +- Sept 8, 2020 (v1.11.0) _ zstd: Add experimental compression +[dictionaries](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) +[#281](https://github.com/klauspost/compress/pull/281) _ zstd: Fix mixed Write +and ReadFrom calls [#282](https://github.com/klauspost/compress/pull/282) \* +inflate/gz: Limit variable shifts, ~5% faster decompression +[#274](https://github.com/klauspost/compress/pull/274) +
                      + +
                      + See changes to v1.10.x + +* July 8, 2020 (v1.10.11) + * zstd: Fix extra block when compressing with ReadFrom. [#278](https://github.com/klauspost/compress/pull/278) + * huff0: Also populate compression table when reading decoding table. [#275](https://github.com/klauspost/compress/pull/275) + +* June 23, 2020 (v1.10.10) + * zstd: Skip entropy compression in fastest mode when no matches. [#270](https://github.com/klauspost/compress/pull/270) + +* June 16, 2020 (v1.10.9): + * zstd: API change for specifying dictionaries. See [#268](https://github.com/klauspost/compress/pull/268) + * zip: update CreateHeaderRaw to handle zip64 fields. [#266](https://github.com/klauspost/compress/pull/266) + * Fuzzit tests removed. The service has been purchased and is no longer available. + +* June 5, 2020 (v1.10.8): + * 1.15x faster zstd block decompression. [#265](https://github.com/klauspost/compress/pull/265) + +* June 1, 2020 (v1.10.7): + * Added zstd decompression [dictionary support](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) + * Increase zstd decompression speed up to 1.19x. [#259](https://github.com/klauspost/compress/pull/259) + * Remove internal reset call in zstd compression and reduce allocations. [#263](https://github.com/klauspost/compress/pull/263) + +* May 21, 2020: (v1.10.6) + * zstd: Reduce allocations while decoding. [#258](https://github.com/klauspost/compress/pull/258), [#252](https://github.com/klauspost/compress/pull/252) + * zstd: Stricter decompression checks. + +* April 12, 2020: (v1.10.5) + * s2-commands: Flush output when receiving SIGINT. [#239](https://github.com/klauspost/compress/pull/239) + +* Apr 8, 2020: (v1.10.4) + * zstd: Minor/special case optimizations. [#251](https://github.com/klauspost/compress/pull/251), [#250](https://github.com/klauspost/compress/pull/250), [#249](https://github.com/klauspost/compress/pull/249), [#247](https://github.com/klauspost/compress/pull/247) +* Mar 11, 2020: (v1.10.3) + * s2: Use S2 encoder in pure Go mode for Snappy output as well. [#245](https://github.com/klauspost/compress/pull/245) + * s2: Fix pure Go block encoder. [#244](https://github.com/klauspost/compress/pull/244) + * zstd: Added "better compression" mode. [#240](https://github.com/klauspost/compress/pull/240) + * zstd: Improve speed of fastest compression mode by 5-10% [#241](https://github.com/klauspost/compress/pull/241) + * zstd: Skip creating encoders when not needed. [#238](https://github.com/klauspost/compress/pull/238) + +* Feb 27, 2020: (v1.10.2) + * Close to 50% speedup in inflate (gzip/zip decompression). [#236](https://github.com/klauspost/compress/pull/236) [#234](https://github.com/klauspost/compress/pull/234) [#232](https://github.com/klauspost/compress/pull/232) + * Reduce deflate level 1-6 memory usage up to 59%. [#227](https://github.com/klauspost/compress/pull/227) + +* Feb 18, 2020: (v1.10.1) + * Fix zstd crash when resetting multiple times without sending data. [#226](https://github.com/klauspost/compress/pull/226) + * deflate: Fix dictionary use on level 1-6. [#224](https://github.com/klauspost/compress/pull/224) + * Remove deflate writer reference when closing. [#224](https://github.com/klauspost/compress/pull/224) + +* Feb 4, 2020: (v1.10.0) + * Add optional dictionary to [stateless deflate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc#StatelessDeflate). Breaking change, send `nil` for previous behaviour. [#216](https://github.com/klauspost/compress/pull/216) + * Fix buffer overflow on repeated small block deflate. [#218](https://github.com/klauspost/compress/pull/218) + * Allow copying content from an existing ZIP file without decompressing+compressing. [#214](https://github.com/klauspost/compress/pull/214) + * Added [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) AMD64 assembler and various optimizations. Stream speed >10GB/s. [#186](https://github.com/klauspost/compress/pull/186) + +
                      + +
                      + See changes prior to v1.10.0 + +- Jan 20,2020 (v1.9.8) Optimize gzip/deflate with better size estimates and + faster table generation. + [#207](https://github.com/klauspost/compress/pull/207) by + [luyu6056](https://github.com/luyu6056), + [#206](https://github.com/klauspost/compress/pull/206). +- Jan 11, 2020: S2 Encode/Decode will use provided buffer if capacity is big + enough. [#204](https://github.com/klauspost/compress/pull/204) +- Jan 5, 2020: (v1.9.7) Fix another zstd regression in v1.9.5 - v1.9.6 removed. +- Jan 4, 2020: (v1.9.6) Regression in v1.9.5 fixed causing corrupt zstd encodes + in rare cases. +- Jan 4, 2020: Faster IO in + [s2c + s2d commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) + compression/decompression. + [#192](https://github.com/klauspost/compress/pull/192) +- Dec 29, 2019: Removed v1.9.5 since fuzz tests showed a compatibility problem + with the reference zstandard decoder. +- Dec 29, 2019: (v1.9.5) zstd: 10-20% faster block compression. + [#199](https://github.com/klauspost/compress/pull/199) +- Dec 29, 2019: [zip](https://godoc.org/github.com/klauspost/compress/zip) + package updated with latest Go features +- Dec 29, 2019: zstd: Single segment flag condintions tweaked. + [#197](https://github.com/klauspost/compress/pull/197) +- Dec 18, 2019: s2: Faster compression when ReadFrom is used. + [#198](https://github.com/klauspost/compress/pull/198) +- Dec 10, 2019: s2: Fix repeat length output when just above at 16MB limit. +- Dec 10, 2019: zstd: Add function to get decoder as io.ReadCloser. + [#191](https://github.com/klauspost/compress/pull/191) +- Dec 3, 2019: (v1.9.4) S2: limit max repeat length. + [#188](https://github.com/klauspost/compress/pull/188) +- Dec 3, 2019: Add + [WithNoEntropyCompression](https://godoc.org/github.com/klauspost/compress/zstd#WithNoEntropyCompression) + to zstd [#187](https://github.com/klauspost/compress/pull/187) +- Dec 3, 2019: Reduce memory use for tests. Check for leaked goroutines. +- Nov 28, 2019 (v1.9.3) Less allocations in stateless deflate. +- Nov 28, 2019: 5-20% Faster huff0 decode. Impacts zstd as well. + [#184](https://github.com/klauspost/compress/pull/184) +- Nov 12, 2019 (v1.9.2) Added [Stateless Compression](#stateless-compression) + for gzip/deflate. +- Nov 12, 2019: Fixed zstd decompression of large single blocks. + [#180](https://github.com/klauspost/compress/pull/180) +- Nov 11, 2019: Set default + [s2c](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) + block size to 4MB. +- Nov 11, 2019: Reduce inflate memory use by 1KB. +- Nov 10, 2019: Less allocations in deflate bit writer. +- Nov 10, 2019: Fix inconsistent error returned by zstd decoder. +- Oct 28, 2019 (v1.9.1) ztsd: Fix crash when compressing blocks. + [#174](https://github.com/klauspost/compress/pull/174) +- Oct 24, 2019 (v1.9.0) zstd: Fix rare data corruption + [#173](https://github.com/klauspost/compress/pull/173) +- Oct 24, 2019 zstd: Fix huff0 out of buffer write + [#171](https://github.com/klauspost/compress/pull/171) and always return + errors [#172](https://github.com/klauspost/compress/pull/172) +- Oct 10, 2019: Big deflate rewrite, 30-40% faster with better compression + [#105](https://github.com/klauspost/compress/pull/105) + +
                      + +
                      + See changes prior to v1.9.0 + +- Oct 10, 2019: (v1.8.6) zstd: Allow partial reads to get flushed data. + [#169](https://github.com/klauspost/compress/pull/169) +- Oct 3, 2019: Fix inconsistent results on broken zstd streams. +- Sep 25, 2019: Added `-rm` (remove source files) and `-q` (no output except + errors) to `s2c` and `s2d` + [commands](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) +- Sep 16, 2019: (v1.8.4) Add `s2c` and `s2d` + [commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools). +- Sep 10, 2019: (v1.8.3) Fix s2 decoder + [Skip](https://godoc.org/github.com/klauspost/compress/s2#Reader.Skip). +- Sep 7, 2019: zstd: Added + [WithWindowSize](https://godoc.org/github.com/klauspost/compress/zstd#WithWindowSize), + contributed by [ianwilkes](https://github.com/ianwilkes). +- Sep 5, 2019: (v1.8.2) Add + [WithZeroFrames](https://godoc.org/github.com/klauspost/compress/zstd#WithZeroFrames) + which adds full zero payload block encoding option. +- Sep 5, 2019: Lazy initialization of zstandard predefined en/decoder tables. +- Aug 26, 2019: (v1.8.1) S2: 1-2% compression increase in "better" compression + mode. +- Aug 26, 2019: zstd: Check maximum size of Huffman 1X compressed literals while + decoding. +- Aug 24, 2019: (v1.8.0) Added + [S2 compression](https://github.com/klauspost/compress/tree/master/s2#s2-compression), + a high performance replacement for Snappy. +- Aug 21, 2019: (v1.7.6) Fixed minor issues found by fuzzer. One could lead to + zstd not decompressing. +- Aug 18, 2019: Add [fuzzit](https://fuzzit.dev/) continuous fuzzing. +- Aug 14, 2019: zstd: Skip incompressible data 2x faster. + [#147](https://github.com/klauspost/compress/pull/147) +- Aug 4, 2019 (v1.7.5): Better literal compression. + [#146](https://github.com/klauspost/compress/pull/146) +- Aug 4, 2019: Faster zstd compression. + [#143](https://github.com/klauspost/compress/pull/143) + [#144](https://github.com/klauspost/compress/pull/144) +- Aug 4, 2019: Faster zstd decompression. + [#145](https://github.com/klauspost/compress/pull/145) + [#143](https://github.com/klauspost/compress/pull/143) + [#142](https://github.com/klauspost/compress/pull/142) +- July 15, 2019 (v1.7.4): Fix double EOF block in rare cases on zstd encoder. +- July 15, 2019 (v1.7.3): Minor speedup/compression increase in default zstd + encoder. +- July 14, 2019: zstd decoder: Fix decompression error on multiple uses with + mixed content. +- July 7, 2019 (v1.7.2): Snappy update, zstd decoder potential race fix. +- June 17, 2019: zstd decompression bugfix. +- June 17, 2019: fix 32 bit builds. +- June 17, 2019: Easier use in modules (less dependencies). +- June 9, 2019: New stronger "default" + [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) + compression mode. Matches zstd default compression ratio. +- June 5, 2019: 20-40% throughput in + [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) + compression and better compression. +- June 5, 2019: deflate/gzip compression: Reduce memory usage of lower + compression levels. +- June 2, 2019: Added + [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) + compression! +- May 25, 2019: deflate/gzip: 10% faster bit writer, mostly visible in lower + levels. +- Apr 22, 2019: + [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) + decompression added. +- Aug 1, 2018: Added + [huff0 README](https://github.com/klauspost/compress/tree/master/huff0#huff0-entropy-compression). +- Jul 8, 2018: Added [Performance Update 2018](#performance-update-2018) below. +- Jun 23, 2018: Merged + [Go 1.11 inflate optimizations](https://go-review.googlesource.com/c/go/+/102235). + Go 1.9 is now required. Backwards compatible version tagged with + [v1.3.0](https://github.com/klauspost/compress/releases/tag/v1.3.0). +- Apr 2, 2018: Added + [huff0](https://godoc.org/github.com/klauspost/compress/huff0) en/decoder. + Experimental for now, API may change. +- Mar 4, 2018: Added + [FSE Entropy](https://godoc.org/github.com/klauspost/compress/fse) en/decoder. + Experimental for now, API may change. +- Nov 3, 2017: Add compression + [Estimate](https://godoc.org/github.com/klauspost/compress#Estimate) function. +- May 28, 2017: Reduce allocations when resetting decoder. +- Apr 02, 2017: Change back to official crc32, since changes were merged in Go + 1.7. +- Jan 14, 2017: Reduce stack pressure due to array copies. See + [Issue #18625](https://github.com/golang/go/issues/18625). +- Oct 25, 2016: Level 2-4 have been rewritten and now offers significantly + better performance than before. +- Oct 20, 2016: Port zlib changes from Go 1.7 to fix zlib writer issue. Please + update. +- Oct 16, 2016: Go 1.7 changes merged. Apples to apples this package is a few + percent faster, but has a significantly better balance between speed and + compression per level. +- Mar 24, 2016: Always attempt Huffman encoding on level 4-7. This improves base + 64 encoded data compression. +- Mar 24, 2016: Small speedup for level 1-3. +- Feb 19, 2016: Faster bit writer, level -2 is 15% faster, level 1 is 4% faster. +- Feb 19, 2016: Handle small payloads faster in level 1-3. +- Feb 19, 2016: Added faster level 2 + 3 compression modes. +- Feb 19, 2016: + [Rebalanced compression levels](https://blog.klauspost.com/rebalancing-deflate-compression-levels/), + so there is a more even progresssion in terms of compression. New default + level is 5. +- Feb 14, 2016: Snappy: Merge upstream changes. +- Feb 14, 2016: Snappy: Fix aggressive skipping. +- Feb 14, 2016: Snappy: Update benchmark. +- Feb 13, 2016: Deflate: Fixed assembler problem that could lead to sub-optimal + compression. +- Feb 12, 2016: Snappy: Added AMD64 SSE 4.2 optimizations to matching, which + makes easy to compress material run faster. Typical speedup is around 25%. +- Feb 9, 2016: Added Snappy package fork. This version is 5-7% faster, much more + on hard to compress content. +- Jan 30, 2016: Optimize level 1 to 3 by not considering static dictionary or + storing uncompressed. ~4-5% speedup. +- Jan 16, 2016: Optimization on deflate level 1,2,3 compression. +- Jan 8 2016: Merge [CL 18317](https://go-review.googlesource.com/#/c/18317): + fix reading, writing of zip64 archives. +- Dec 8 2015: Make level 1 and -2 deterministic even if write size differs. +- Dec 8 2015: Split encoding functions, so hashing and matching can potentially + be inlined. 1-3% faster on AMD64. 5% faster on other platforms. +- Dec 8 2015: Fixed rare + [one byte out-of bounds read](https://github.com/klauspost/compress/issues/20). + Please update! +- Nov 23 2015: Optimization on token writer. ~2-4% faster. Contributed by + [@dsnet](https://github.com/dsnet). +- Nov 20 2015: Small optimization to bit writer on 64 bit systems. +- Nov 17 2015: Fixed out-of-bound errors if the underlying Writer returned an + error. See [#15](https://github.com/klauspost/compress/issues/15). +- Nov 12 2015: Added [io.WriterTo](https://golang.org/pkg/io/#WriterTo) support + to gzip/inflate. +- Nov 11 2015: Merged + [CL 16669](https://go-review.googlesource.com/#/c/16669/4): archive/zip: + enable overriding (de)compressors per file +- Oct 15 2015: Added skipping on uncompressible data. Random data speed up >5x. + +
                      + +# deflate usage + +The packages are drop-in replacements for standard libraries. Simply replace the +import path to use them: + +| old import | new import | Documentation | +| ---------------- | ------------------------------------- | ----------------------------------------------------------------------- | +| `compress/gzip` | `github.com/klauspost/compress/gzip` | [gzip](https://pkg.go.dev/github.com/klauspost/compress/gzip?tab=doc) | +| `compress/zlib` | `github.com/klauspost/compress/zlib` | [zlib](https://pkg.go.dev/github.com/klauspost/compress/zlib?tab=doc) | +| `archive/zip` | `github.com/klauspost/compress/zip` | [zip](https://pkg.go.dev/github.com/klauspost/compress/zip?tab=doc) | +| `compress/flate` | `github.com/klauspost/compress/flate` | [flate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc) | + +- Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) + packages which can be used as a dropin replacement for + [gzip](https://godoc.org/github.com/klauspost/compress/gzip), + [zip](https://godoc.org/github.com/klauspost/compress/zip) and + [zlib](https://godoc.org/github.com/klauspost/compress/zlib). + +You may also be interested in [pgzip](https://github.com/klauspost/pgzip), which +is a drop in replacement for gzip, which support multithreaded compression on +big files and the optimized [crc32](https://github.com/klauspost/crc32) package +used by these packages. + +The packages contains the same as the standard library, so you can use the godoc +for that: [gzip](http://golang.org/pkg/compress/gzip/), +[zip](http://golang.org/pkg/archive/zip/), +[zlib](http://golang.org/pkg/compress/zlib/), +[flate](http://golang.org/pkg/compress/flate/). + +Currently there is only minor speedup on decompression (mostly CRC32 +calculation). + +Memory usage is typically 1MB for a Writer. stdlib is in the same range. If you +expect to have a lot of concurrently allocated Writers consider using the +stateless compress described below. + +For compression performance, see: +[this spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). + +To disable all assembly add `-tags=noasm`. This works across all packages. + +# Stateless compression + +This package offers stateless compression as a special option for gzip/deflate. +It will do compression but without maintaining any state between Write calls. + +This means there will be no memory kept between Write calls, but compression and +speed will be suboptimal. + +This is only relevant in cases where you expect to run many thousands of +compressors concurrently, but with very little activity. This is _not_ intended +for regular web servers serving individual requests. + +Because of this, the size of actual Write calls will affect output size. + +In gzip, specify level `-3` / `gzip.StatelessCompression` to enable. + +For direct deflate use, NewStatelessWriter and StatelessDeflate are available. +See +[documentation](https://godoc.org/github.com/klauspost/compress/flate#NewStatelessWriter) + +A `bufio.Writer` can of course be used to control write sizes. For example, to +use a 4KB buffer: + +```go + // replace 'ioutil.Discard' with your output. + gzw, err := gzip.NewWriterLevel(ioutil.Discard, gzip.StatelessCompression) + if err != nil { + return err + } + defer gzw.Close() + + w := bufio.NewWriterSize(gzw, 4096) + defer w.Flush() + + // Write to 'w' +``` + +This will only use up to 4KB in memory when the writer is idle. + +Compression is almost always worse than the fastest compression level and each +write will allocate (a little) memory. + +# Performance Update 2018 + +It has been a while since we have been looking at the speed of this package +compared to the standard library, so I thought I would re-do my tests and give +some overall recommendations based on the current state. All benchmarks have +been performed with Go 1.10 on my Desktop Intel(R) Core(TM) i7-2600 CPU +@3.40GHz. Since I last ran the tests, I have gotten more RAM, which means tests +with big files are no longer limited by my SSD. + +The raw results are in my +[updated spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). +Due to cgo changes and upstream updates i could not get the cgo version of gzip +to compile. Instead I included the [zstd](https://github.com/datadog/zstd) cgo +implementation. If I get cgo gzip to work again, I might replace the results in +the sheet. + +The columns to take note of are: _MB/s_ - the throughput. _Reduction_ - the data +size reduction in percent of the original. _Rel Speed_ relative speed compared +to the standard library at the same level. _Smaller_ - how many percent smaller +is the compressed output compared to stdlib. Negative means the output was +bigger. _Loss_ means the loss (or gain) in compression as a percentage +difference of the input. + +The `gzstd` (standard library gzip) and `gzkp` (this package gzip) only uses one +CPU core. [`pgzip`](https://github.com/klauspost/pgzip), +[`bgzf`](https://github.com/biogo/hts/tree/master/bgzf) uses all 4 cores. +[`zstd`](https://github.com/DataDog/zstd) uses one core, and is a beast (but not +Go, yet). + +## Overall differences. + +There appears to be a roughly 5-10% speed advantage over the standard library +when comparing at similar compression levels. + +The biggest difference you will see is the result of +[re-balancing](https://blog.klauspost.com/rebalancing-deflate-compression-levels/) +the compression levels. I wanted by library to give a smoother transition +between the compression levels than the standard library. + +This package attempts to provide a more smooth transition, where "1" is taking a +lot of shortcuts, "5" is the reasonable trade-off and "9" is the "give me the +best compression", and the values in between gives something reasonable in +between. The standard library has big differences in levels 1-4, but levels 5-9 +having no significant gains - often spending a lot more time than can be +justified by the achieved compression. + +There are links to all the test data in the +[spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing) +in the top left field on each tab. + +## Web Content + +This test set aims to emulate typical use in a web server. The test-set is 4GB +data in 53k files, and is a mixture of (mostly) HTML, JS, CSS. + +Since level 1 and 9 are close to being the same code, they are quite close. But +looking at the levels in-between the differences are quite big. + +Looking at level 6, this package is 88% faster, but will output about 6% more +data. For a web server, this means you can serve 88% more data, but have to pay +for 6% more bandwidth. You can draw your own conclusions on what would be the +most expensive for your case. + +## Object files + +This test is for typical data files stored on a server. In this case it is a +collection of Go precompiled objects. They are very compressible. + +The picture is similar to the web content, but with small differences since this +is very compressible. Levels 2-3 offer good speed, but is sacrificing quite a +bit of compression. + +The standard library seems suboptimal on level 3 and 4 - offering both worse +compression and speed than level 6 & 7 of this package respectively. + +## Highly Compressible File + +This is a JSON file with very high redundancy. The reduction starts at 95% on +level 1, so in real life terms we are dealing with something like a highly +redundant stream of data, etc. + +It is definitely visible that we are dealing with specialized content here, so +the results are very scattered. This package does not do very well at levels +1-4, but picks up significantly at level 5 and levels 7 and 8 offering great +speed for the achieved compression. + +So if you know you content is extremely compressible you might want to go +slightly higher than the defaults. The standard library has a huge gap between +levels 3 and 4 in terms of speed (2.75x slowdown), so it offers little "middle +ground". + +## Medium-High Compressible + +This is a pretty common test corpus: +[enwik9](http://mattmahoney.net/dc/textdata.html). It contains the first 10^9 +bytes of the English Wikipedia dump on Mar. 3, 2006. This is a very good test of +typical text based compression and more data heavy streams. + +We see a similar picture here as in "Web Content". On equal levels some +compression is sacrificed for more speed. Level 5 seems to be the best trade-off +between speed and size, beating stdlib level 3 in both. + +## Medium Compressible + +I will combine two test sets, one +[10GB file set](http://mattmahoney.net/dc/10gb.html) and a VM disk image (~8GB). +Both contain different data types and represent a typical backup scenario. + +The most notable thing is how quickly the standard library drops to very low +compression speeds around level 5-6 without any big gains in compression. Since +this type of data is fairly common, this does not seem like good behavior. + +## Un-compressible Content + +This is mainly a test of how good the algorithms are at detecting +un-compressible input. The standard library only offers this feature with very +conservative settings at level 1. Obviously there is no reason for the +algorithms to try to compress input that cannot be compressed. The only downside +is that it might skip some compressible data on false detections. + +## Huffman only compression + +This compression library adds a special compression level, named `HuffmanOnly`, +which allows near linear time compression. This is done by completely disabling +matching of previous data, and only reduce the number of bits to represent each +character. + +This means that often used characters, like 'e' and ' ' (space) in text use the +fewest bits to represent, and rare characters like '¤' takes more bits to +represent. For more information see +[wikipedia](https://en.wikipedia.org/wiki/Huffman_coding) or this nice +[video](https://youtu.be/ZdooBTdW5bM). + +Since this type of compression has much less variance, the compression speed is +mostly unaffected by the input data, and is usually more than _180MB/s_ for a +single core. + +The downside is that the compression ratio is usually considerably worse than +even the fastest conventional compression. The compression ratio can never be +better than 8:1 (12.5%). + +The linear time compression can be used as a "better than nothing" mode, where +you cannot risk the encoder to slow down on some content. For comparison, the +size of the "Twain" text is _233460 bytes_ (+29% vs. level 1) and encode speed +is 144MB/s (4.5x level 1). So in this case you trade a 30% size increase for a 4 +times speedup. + +For more information see my blog post on +[Fast Linear Time Compression](http://blog.klauspost.com/constant-time-gzipzip-compression/). + +This is implemented on Go 1.7 as "Huffman Only" mode, though not exposed for +gzip. + +# Other packages + +Here are other packages of good quality and pure Go (no cgo wrappers or +autoconverted code): + +- [github.com/pierrec/lz4](https://github.com/pierrec/lz4) - strong + multithreaded LZ4 compression. +- [github.com/cosnicolaou/pbzip2](https://github.com/cosnicolaou/pbzip2) - + multithreaded bzip2 decompression. +- [github.com/dsnet/compress](https://github.com/dsnet/compress) - brotli + decompression, bzip2 writer. +- [github.com/ronanh/intcomp](https://github.com/ronanh/intcomp) - Integer + compression. +- [github.com/spenczar/fpc](https://github.com/spenczar/fpc) - Float + compression. +- [github.com/minio/zipindex](https://github.com/minio/zipindex) - External ZIP + directory index. +- [github.com/ybirader/pzip](https://github.com/ybirader/pzip) - Fast concurrent + zip archiver and extractor. + +# license + +This code is licensed under the same conditions as the original Go code. See +LICENSE file. diff --git a/examples/go/vendor/github.com/klauspost/compress/SECURITY.md b/examples/go/vendor/github.com/klauspost/compress/SECURITY.md index ca6685e..b1efa33 100644 --- a/examples/go/vendor/github.com/klauspost/compress/SECURITY.md +++ b/examples/go/vendor/github.com/klauspost/compress/SECURITY.md @@ -6,20 +6,38 @@ Security updates are applied only to the latest release. ## Vulnerability Definition -A security vulnerability is a bug that with certain input triggers a crash or an infinite loop. Most calls will have varying execution time and only in rare cases will slow operation be considered a security vulnerability. +A security vulnerability is a bug that with certain input triggers a crash or an +infinite loop. Most calls will have varying execution time and only in rare +cases will slow operation be considered a security vulnerability. -Corrupted output generally is not considered a security vulnerability, unless independent operations are able to affect each other. Note that not all functionality is re-entrant and safe to use concurrently. +Corrupted output generally is not considered a security vulnerability, unless +independent operations are able to affect each other. Note that not all +functionality is re-entrant and safe to use concurrently. -Out-of-memory crashes only applies if the en/decoder uses an abnormal amount of memory, with appropriate options applied, to limit maximum window size, concurrency, etc. However, if you are in doubt you are welcome to file a security issue. +Out-of-memory crashes only applies if the en/decoder uses an abnormal amount of +memory, with appropriate options applied, to limit maximum window size, +concurrency, etc. However, if you are in doubt you are welcome to file a +security issue. -It is assumed that all callers are trusted, meaning internal data exposed through reflection or inspection of returned data structures is not considered a vulnerability. +It is assumed that all callers are trusted, meaning internal data exposed +through reflection or inspection of returned data structures is not considered a +vulnerability. -Vulnerabilities resulting from compiler/assembler errors should be reported upstream. Depending on the severity this package may or may not implement a workaround. +Vulnerabilities resulting from compiler/assembler errors should be reported +upstream. Depending on the severity this package may or may not implement a +workaround. ## Reporting a Vulnerability -If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. +If you have discovered a security vulnerability in this project, please report +it privately. **Do not disclose it as a public issue.** This gives us time to +work with you to fix the issue before public exposure, reducing the chance that +the exploit will be used before a patch is released. -Please disclose it at [security advisory](https://github.com/klauspost/compress/security/advisories/new). If possible please provide a minimal reproducer. If the issue only applies to a single platform, it would be helpful to provide access to that. +Please disclose it at +[security advisory](https://github.com/klauspost/compress/security/advisories/new). +If possible please provide a minimal reproducer. If the issue only applies to a +single platform, it would be helpful to provide access to that. -This project is maintained by a team of volunteers on a reasonable-effort basis. As such, vulnerabilities will be disclosed in a best effort base. +This project is maintained by a team of volunteers on a reasonable-effort basis. +As such, vulnerabilities will be disclosed in a best effort base. diff --git a/examples/go/vendor/github.com/klauspost/compress/fse/README.md b/examples/go/vendor/github.com/klauspost/compress/fse/README.md index ea7324d..ea88b4e 100644 --- a/examples/go/vendor/github.com/klauspost/compress/fse/README.md +++ b/examples/go/vendor/github.com/klauspost/compress/fse/README.md @@ -1,79 +1,99 @@ -# Finite State Entropy - -This package provides Finite State Entropy encoding and decoding. - -Finite State Entropy (also referenced as [tANS](https://en.wikipedia.org/wiki/Asymmetric_numeral_systems#tANS)) -encoding provides a fast near-optimal symbol encoding/decoding -for byte blocks as implemented in [zstandard](https://github.com/facebook/zstd). - -This can be used for compressing input with a lot of similar input values to the smallest number of bytes. -This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, -but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding. - -* [Godoc documentation](https://godoc.org/github.com/klauspost/compress/fse) - -## News - - * Feb 2018: First implementation released. Consider this beta software for now. - -# Usage - -This package provides a low level interface that allows to compress single independent blocks. - -Each block is separate, and there is no built in integrity checks. -This means that the caller should keep track of block sizes and also do checksums if needed. - -Compressing a block is done via the [`Compress`](https://godoc.org/github.com/klauspost/compress/fse#Compress) function. -You must provide input and will receive the output and maybe an error. - -These error values can be returned: - -| Error | Description | -|---------------------|-----------------------------------------------------------------------------| -| `` | Everything ok, output is returned | -| `ErrIncompressible` | Returned when input is judged to be too hard to compress | -| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | -| `(error)` | An internal error occurred. | - -As can be seen above there are errors that will be returned even under normal operation so it is important to handle these. - -To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/fse#Scratch) object -that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same -object can be used for both. - -Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this -you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. - -Decompressing is done by calling the [`Decompress`](https://godoc.org/github.com/klauspost/compress/fse#Decompress) function. -You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back -your input was likely corrupted. - -It is important to note that a successful decoding does *not* mean your output matches your original input. -There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. - -For more detailed usage, see examples in the [godoc documentation](https://godoc.org/github.com/klauspost/compress/fse#pkg-examples). - -# Performance - -A lot of factors are affecting speed. Block sizes and compressibility of the material are primary factors. -All compression functions are currently only running on the calling goroutine so only one core will be used per block. - -The compressor is significantly faster if symbols are kept as small as possible. The highest byte value of the input -is used to reduce some of the processing, so if all your input is above byte value 64 for instance, it may be -beneficial to transpose all your input values down by 64. - -With moderate block sizes around 64k speed are typically 200MB/s per core for compression and -around 300MB/s decompression speed. - -The same hardware typically does Huffman (deflate) encoding at 125MB/s and decompression at 100MB/s. - -# Plans - -At one point, more internals will be exposed to facilitate more "expert" usage of the components. - -A streaming interface is also likely to be implemented. Likely compatible with [FSE stream format](https://github.com/Cyan4973/FiniteStateEntropy/blob/dev/programs/fileio.c#L261). - -# Contributing - -Contributions are always welcome. Be aware that adding public functions will require good justification and breaking -changes will likely not be accepted. If in doubt open an issue before writing the PR. \ No newline at end of file +# Finite State Entropy + +This package provides Finite State Entropy encoding and decoding. + +Finite State Entropy (also referenced as +[tANS](https://en.wikipedia.org/wiki/Asymmetric_numeral_systems#tANS)) encoding +provides a fast near-optimal symbol encoding/decoding for byte blocks as +implemented in [zstandard](https://github.com/facebook/zstd). + +This can be used for compressing input with a lot of similar input values to the +smallest number of bytes. This does not perform any multi-byte +[dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ +coders, but it can be used as a secondary step to compressors (like Snappy) that +does not do entropy encoding. + +- [Godoc documentation](https://godoc.org/github.com/klauspost/compress/fse) + +## News + +- Feb 2018: First implementation released. Consider this beta software for now. + +# Usage + +This package provides a low level interface that allows to compress single +independent blocks. + +Each block is separate, and there is no built in integrity checks. This means +that the caller should keep track of block sizes and also do checksums if +needed. + +Compressing a block is done via the +[`Compress`](https://godoc.org/github.com/klauspost/compress/fse#Compress) +function. You must provide input and will receive the output and maybe an error. + +These error values can be returned: + +| Error | Description | +| ------------------- | --------------------------------------------------------------------------- | +| `` | Everything ok, output is returned | +| `ErrIncompressible` | Returned when input is judged to be too hard to compress | +| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | +| `(error)` | An internal error occurred. | + +As can be seen above there are errors that will be returned even under normal +operation so it is important to handle these. + +To reduce allocations you can provide a +[`Scratch`](https://godoc.org/github.com/klauspost/compress/fse#Scratch) object +that can be re-used for successive calls. Both compression and decompression +accepts a `Scratch` object, and the same object can be used for both. + +Be aware, that when re-using a `Scratch` object that the _output_ buffer is also +re-used, so if you are still using this you must set the `Out` field in the +scratch to nil. The same buffer is used for compression and decompression +output. + +Decompressing is done by calling the +[`Decompress`](https://godoc.org/github.com/klauspost/compress/fse#Decompress) +function. You must provide the output from the compression stage, at exactly the +size you got back. If you receive an error back your input was likely corrupted. + +It is important to note that a successful decoding does _not_ mean your output +matches your original input. There are no integrity checks, so relying on errors +from the decompressor does not assure your data is valid. + +For more detailed usage, see examples in the +[godoc documentation](https://godoc.org/github.com/klauspost/compress/fse#pkg-examples). + +# Performance + +A lot of factors are affecting speed. Block sizes and compressibility of the +material are primary factors. +All compression functions are currently only running on the calling goroutine so +only one core will be used per block. + +The compressor is significantly faster if symbols are kept as small as possible. +The highest byte value of the input is used to reduce some of the processing, so +if all your input is above byte value 64 for instance, it may be beneficial to +transpose all your input values down by 64. + +With moderate block sizes around 64k speed are typically 200MB/s per core for +compression and around 300MB/s decompression speed. + +The same hardware typically does Huffman (deflate) encoding at 125MB/s and +decompression at 100MB/s. + +# Plans + +At one point, more internals will be exposed to facilitate more "expert" usage +of the components. + +A streaming interface is also likely to be implemented. Likely compatible with +[FSE stream format](https://github.com/Cyan4973/FiniteStateEntropy/blob/dev/programs/fileio.c#L261). + +# Contributing + +Contributions are always welcome. Be aware that adding public functions will +require good justification and breaking changes will likely not be accepted. If +in doubt open an issue before writing the PR. diff --git a/examples/go/vendor/github.com/klauspost/compress/huff0/README.md b/examples/go/vendor/github.com/klauspost/compress/huff0/README.md index 8b6e5c6..fec4c4a 100644 --- a/examples/go/vendor/github.com/klauspost/compress/huff0/README.md +++ b/examples/go/vendor/github.com/klauspost/compress/huff0/README.md @@ -1,89 +1,119 @@ -# Huff0 entropy compression - -This package provides Huff0 encoding and decoding as used in zstd. - -[Huff0](https://github.com/Cyan4973/FiniteStateEntropy#new-generation-entropy-coders), -a Huffman codec designed for modern CPU, featuring OoO (Out of Order) operations on multiple ALU -(Arithmetic Logic Unit), achieving extremely fast compression and decompression speeds. - -This can be used for compressing input with a lot of similar input values to the smallest number of bytes. -This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, -but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding. - -* [Godoc documentation](https://godoc.org/github.com/klauspost/compress/huff0) - -## News - -This is used as part of the [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression package. - -This ensures that most functionality is well tested. - -# Usage - -This package provides a low level interface that allows to compress single independent blocks. - -Each block is separate, and there is no built in integrity checks. -This means that the caller should keep track of block sizes and also do checksums if needed. - -Compressing a block is done via the [`Compress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress1X) and -[`Compress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress4X) functions. -You must provide input and will receive the output and maybe an error. - -These error values can be returned: - -| Error | Description | -|---------------------|-----------------------------------------------------------------------------| -| `` | Everything ok, output is returned | -| `ErrIncompressible` | Returned when input is judged to be too hard to compress | -| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | -| `ErrTooBig` | Returned if the input block exceeds the maximum allowed size (128 Kib) | -| `(error)` | An internal error occurred. | - - -As can be seen above some of there are errors that will be returned even under normal operation so it is important to handle these. - -To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object -that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same -object can be used for both. - -Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this -you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. - -The `Scratch` object will retain state that allows to re-use previous tables for encoding and decoding. - -## Tables and re-use - -Huff0 allows for reusing tables from the previous block to save space if that is expected to give better/faster results. - -The Scratch object allows you to set a [`ReusePolicy`](https://godoc.org/github.com/klauspost/compress/huff0#ReusePolicy) -that controls this behaviour. See the documentation for details. This can be altered between each block. - -Do however note that this information is *not* stored in the output block and it is up to the users of the package to -record whether [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable) should be called, -based on the boolean reported back from the CompressXX call. - -If you want to store the table separate from the data, you can access them as `OutData` and `OutTable` on the -[`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object. - -## Decompressing - -The first part of decoding is to initialize the decoding table through [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable). -This will initialize the decoding tables. -You can supply the complete block to `ReadTable` and it will return the data part of the block -which can be given to the decompressor. - -Decompressing is done by calling the [`Decompress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress1X) -or [`Decompress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress4X) function. - -For concurrently decompressing content with a fixed table a stateless [`Decoder`](https://godoc.org/github.com/klauspost/compress/huff0#Decoder) can be requested which will remain correct as long as the scratch is unchanged. The capacity of the provided slice indicates the expected output size. - -You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back -your input was likely corrupted. - -It is important to note that a successful decoding does *not* mean your output matches your original input. -There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. - -# Contributing - -Contributions are always welcome. Be aware that adding public functions will require good justification and breaking -changes will likely not be accepted. If in doubt open an issue before writing the PR. +# Huff0 entropy compression + +This package provides Huff0 encoding and decoding as used in zstd. + +[Huff0](https://github.com/Cyan4973/FiniteStateEntropy#new-generation-entropy-coders), +a Huffman codec designed for modern CPU, featuring OoO (Out of Order) operations +on multiple ALU (Arithmetic Logic Unit), achieving extremely fast compression +and decompression speeds. + +This can be used for compressing input with a lot of similar input values to the +smallest number of bytes. This does not perform any multi-byte +[dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ +coders, but it can be used as a secondary step to compressors (like Snappy) that +does not do entropy encoding. + +- [Godoc documentation](https://godoc.org/github.com/klauspost/compress/huff0) + +## News + +This is used as part of the +[zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) +compression and decompression package. + +This ensures that most functionality is well tested. + +# Usage + +This package provides a low level interface that allows to compress single +independent blocks. + +Each block is separate, and there is no built in integrity checks. This means +that the caller should keep track of block sizes and also do checksums if +needed. + +Compressing a block is done via the +[`Compress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress1X) +and +[`Compress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress4X) +functions. You must provide input and will receive the output and maybe an +error. + +These error values can be returned: + +| Error | Description | +| ------------------- | --------------------------------------------------------------------------- | +| `` | Everything ok, output is returned | +| `ErrIncompressible` | Returned when input is judged to be too hard to compress | +| `ErrUseRLE` | Returned from the compressor when the input is a single byte value repeated | +| `ErrTooBig` | Returned if the input block exceeds the maximum allowed size (128 Kib) | +| `(error)` | An internal error occurred. | + +As can be seen above some of there are errors that will be returned even under +normal operation so it is important to handle these. + +To reduce allocations you can provide a +[`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) +object that can be re-used for successive calls. Both compression and +decompression accepts a `Scratch` object, and the same object can be used for +both. + +Be aware, that when re-using a `Scratch` object that the _output_ buffer is also +re-used, so if you are still using this you must set the `Out` field in the +scratch to nil. The same buffer is used for compression and decompression +output. + +The `Scratch` object will retain state that allows to re-use previous tables for +encoding and decoding. + +## Tables and re-use + +Huff0 allows for reusing tables from the previous block to save space if that is +expected to give better/faster results. + +The Scratch object allows you to set a +[`ReusePolicy`](https://godoc.org/github.com/klauspost/compress/huff0#ReusePolicy) +that controls this behaviour. See the documentation for details. This can be +altered between each block. + +Do however note that this information is _not_ stored in the output block and it +is up to the users of the package to record whether +[`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable) +should be called, based on the boolean reported back from the CompressXX call. + +If you want to store the table separate from the data, you can access them as +`OutData` and `OutTable` on the +[`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) +object. + +## Decompressing + +The first part of decoding is to initialize the decoding table through +[`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable). +This will initialize the decoding tables. You can supply the complete block to +`ReadTable` and it will return the data part of the block which can be given to +the decompressor. + +Decompressing is done by calling the +[`Decompress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress1X) +or +[`Decompress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress4X) +function. + +For concurrently decompressing content with a fixed table a stateless +[`Decoder`](https://godoc.org/github.com/klauspost/compress/huff0#Decoder) can +be requested which will remain correct as long as the scratch is unchanged. The +capacity of the provided slice indicates the expected output size. + +You must provide the output from the compression stage, at exactly the size you +got back. If you receive an error back your input was likely corrupted. + +It is important to note that a successful decoding does _not_ mean your output +matches your original input. There are no integrity checks, so relying on errors +from the decompressor does not assure your data is valid. + +# Contributing + +Contributions are always welcome. Be aware that adding public functions will +require good justification and breaking changes will likely not be accepted. If +in doubt open an issue before writing the PR. diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/README.md b/examples/go/vendor/github.com/klauspost/compress/zstd/README.md index 92e2347..e7a872f 100644 --- a/examples/go/vendor/github.com/klauspost/compress/zstd/README.md +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/README.md @@ -1,53 +1,61 @@ -# zstd +# zstd -[Zstandard](https://facebook.github.io/zstd/) is a real-time compression algorithm, providing high compression ratios. -It offers a very wide range of compression / speed trade-off, while being backed by a very fast decoder. -A high performance compression algorithm is implemented. For now focused on speed. +[Zstandard](https://facebook.github.io/zstd/) is a real-time compression +algorithm, providing high compression ratios. It offers a very wide range of +compression / speed trade-off, while being backed by a very fast decoder. A high +performance compression algorithm is implemented. For now focused on speed. -This package provides [compression](#Compressor) to and [decompression](#Decompressor) of Zstandard content. +This package provides [compression](#Compressor) to and +[decompression](#Decompressor) of Zstandard content. -This package is pure Go and without use of "unsafe". +This package is pure Go and without use of "unsafe". -The `zstd` package is provided as open source software using a Go standard license. +The `zstd` package is provided as open source software using a Go standard +license. -Currently the package is heavily optimized for 64 bit processors and will be significantly slower on 32 bit processors. +Currently the package is heavily optimized for 64 bit processors and will be +significantly slower on 32 bit processors. -For seekable zstd streams, see [this excellent package](https://github.com/SaveTheRbtz/zstd-seekable-format-go). +For seekable zstd streams, see +[this excellent package](https://github.com/SaveTheRbtz/zstd-seekable-format-go). ## Installation -Install using `go get -u github.com/klauspost/compress`. The package is located in `github.com/klauspost/compress/zstd`. +Install using `go get -u github.com/klauspost/compress`. The package is located +in `github.com/klauspost/compress/zstd`. [![Go Reference](https://pkg.go.dev/badge/github.com/klauspost/compress/zstd.svg)](https://pkg.go.dev/github.com/klauspost/compress/zstd) ## Compressor -### Status: +### Status: -STABLE - there may always be subtle bugs, a wide variety of content has been tested and the library is actively -used by several projects. This library is being [fuzz-tested](https://github.com/klauspost/compress-fuzz) for all updates. +STABLE - there may always be subtle bugs, a wide variety of content has been +tested and the library is actively used by several projects. This library is +being [fuzz-tested](https://github.com/klauspost/compress-fuzz) for all updates. -There may still be specific combinations of data types/size/settings that could lead to edge cases, -so as always, testing is recommended. +There may still be specific combinations of data types/size/settings that could +lead to edge cases, so as always, testing is recommended. -For now, a high speed (fastest) and medium-fast (default) compressor has been implemented. +For now, a high speed (fastest) and medium-fast (default) compressor has been +implemented. -* The "Fastest" compression ratio is roughly equivalent to zstd level 1. -* The "Default" compression ratio is roughly equivalent to zstd level 3 (default). -* The "Better" compression ratio is roughly equivalent to zstd level 7. -* The "Best" compression ratio is roughly equivalent to zstd level 11. +- The "Fastest" compression ratio is roughly equivalent to zstd level 1. +- The "Default" compression ratio is roughly equivalent to zstd level 3 + (default). +- The "Better" compression ratio is roughly equivalent to zstd level 7. +- The "Best" compression ratio is roughly equivalent to zstd level 11. -In terms of speed, it is typically 2x as fast as the stdlib deflate/gzip in its fastest mode. -The compression ratio compared to stdlib is around level 3, but usually 3x as fast. +In terms of speed, it is typically 2x as fast as the stdlib deflate/gzip in its +fastest mode. The compression ratio compared to stdlib is around level 3, but +usually 3x as fast. - ### Usage -An Encoder can be used for either compressing a stream via the -`io.WriteCloser` interface supported by the Encoder or as multiple independent -tasks via the `EncodeAll` function. -Smaller encodes are encouraged to use the EncodeAll function. -Use `NewWriter` to create a new instance that can be used for both. +An Encoder can be used for either compressing a stream via the `io.WriteCloser` +interface supported by the Encoder or as multiple independent tasks via the +`EncodeAll` function. Smaller encodes are encouraged to use the EncodeAll +function. Use `NewWriter` to create a new instance that can be used for both. To create a writer with default options, do like this: @@ -67,57 +75,70 @@ func Compress(in io.Reader, out io.Writer) error { } ``` -Now you can encode by writing data to `enc`. The output will be finished writing when `Close()` is called. -Even if your encode fails, you should still call `Close()` to release any resources that may be held up. +Now you can encode by writing data to `enc`. The output will be finished writing +when `Close()` is called. Even if your encode fails, you should still call +`Close()` to release any resources that may be held up. -The above is fine for big encodes. However, whenever possible try to *reuse* the writer. +The above is fine for big encodes. However, whenever possible try to _reuse_ the +writer. -To reuse the encoder, you can use the `Reset(io.Writer)` function to change to another output. -This will allow the encoder to reuse all resources and avoid wasteful allocations. +To reuse the encoder, you can use the `Reset(io.Writer)` function to change to +another output. This will allow the encoder to reuse all resources and avoid +wasteful allocations. -Currently stream encoding has 'light' concurrency, meaning up to 2 goroutines can be working on part -of a stream. This is independent of the `WithEncoderConcurrency(n)`, but that is likely to change -in the future. So if you want to limit concurrency for future updates, specify the concurrency -you would like. +Currently stream encoding has 'light' concurrency, meaning up to 2 goroutines +can be working on part of a stream. This is independent of the +`WithEncoderConcurrency(n)`, but that is likely to change in the future. So if +you want to limit concurrency for future updates, specify the concurrency you +would like. -If you would like stream encoding to be done without spawning async goroutines, use `WithEncoderConcurrency(1)` -which will compress input as each block is completed, blocking on writes until each has completed. +If you would like stream encoding to be done without spawning async goroutines, +use `WithEncoderConcurrency(1)` which will compress input as each block is +completed, blocking on writes until each has completed. -You can specify your desired compression level using `WithEncoderLevel()` option. Currently only pre-defined -compression settings can be specified. +You can specify your desired compression level using `WithEncoderLevel()` +option. Currently only pre-defined compression settings can be specified. #### Future Compatibility Guarantees -This will be an evolving project. When using this package it is important to note that both the compression efficiency and speed may change. +This will be an evolving project. When using this package it is important to +note that both the compression efficiency and speed may change. -The goal will be to keep the default efficiency at the default zstd (level 3). -However the encoding should never be assumed to remain the same, -and you should not use hashes of compressed output for similarity checks. +The goal will be to keep the default efficiency at the default zstd (level 3). +However the encoding should never be assumed to remain the same, and you should +not use hashes of compressed output for similarity checks. -The Encoder can be assumed to produce the same output from the exact same code version. -However, the may be modes in the future that break this, -although they will not be enabled without an explicit option. +The Encoder can be assumed to produce the same output from the exact same code +version. However, the may be modes in the future that break this, although they +will not be enabled without an explicit option. -This encoder is not designed to (and will probably never) output the exact same bitstream as the reference encoder. +This encoder is not designed to (and will probably never) output the exact same +bitstream as the reference encoder. -Also note, that the cgo decompressor currently does not [report all errors on invalid input](https://github.com/DataDog/zstd/issues/59), -[omits error checks](https://github.com/DataDog/zstd/issues/61), [ignores checksums](https://github.com/DataDog/zstd/issues/43) -and seems to ignore concatenated streams, even though [it is part of the spec](https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frames). +Also note, that the cgo decompressor currently does not +[report all errors on invalid input](https://github.com/DataDog/zstd/issues/59), +[omits error checks](https://github.com/DataDog/zstd/issues/61), +[ignores checksums](https://github.com/DataDog/zstd/issues/43) and seems to +ignore concatenated streams, even though +[it is part of the spec](https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#frames). #### Blocks -For compressing small blocks, the returned encoder has a function called `EncodeAll(src, dst []byte) []byte`. +For compressing small blocks, the returned encoder has a function called +`EncodeAll(src, dst []byte) []byte`. -`EncodeAll` will encode all input in src and append it to dst. -This function can be called concurrently. -Each call will only run on a same goroutine as the caller. +`EncodeAll` will encode all input in src and append it to dst. This function can +be called concurrently. Each call will only run on a same goroutine as the +caller. -Encoded blocks can be concatenated and the result will be the combined input stream. -Data compressed with EncodeAll can be decoded with the Decoder, using either a stream or `DecodeAll`. +Encoded blocks can be concatenated and the result will be the combined input +stream. Data compressed with EncodeAll can be decoded with the Decoder, using +either a stream or `DecodeAll`. -Especially when encoding blocks you should take special care to reuse the encoder. -This will effectively make it run without allocations after a warmup period. -To make it run completely without allocations, supply a destination buffer with space for all content. +Especially when encoding blocks you should take special care to reuse the +encoder. This will effectively make it run without allocations after a warmup +period. To make it run completely without allocations, supply a destination +buffer with space for all content. ```Go import "github.com/klauspost/compress/zstd" @@ -126,28 +147,31 @@ import "github.com/klauspost/compress/zstd" // For this operation type we supply a nil Reader. var encoder, _ = zstd.NewWriter(nil) -// Compress a buffer. +// Compress a buffer. // If you have a destination buffer, the allocation in the call can also be eliminated. func Compress(src []byte) []byte { return encoder.EncodeAll(src, make([]byte, 0, len(src))) -} +} ``` -You can control the maximum number of concurrent encodes using the `WithEncoderConcurrency(n)` -option when creating the writer. +You can control the maximum number of concurrent encodes using the +`WithEncoderConcurrency(n)` option when creating the writer. -Using the Encoder for both a stream and individual blocks concurrently is safe. +Using the Encoder for both a stream and individual blocks concurrently is safe. ### Performance -I have collected some speed examples to compare speed and compression against other compressors. +I have collected some speed examples to compare speed and compression against +other compressors. -* `file` is the input file. -* `out` is the compressor used. `zskp` is this package. `zstd` is the Datadog cgo library. `gzstd/gzkp` is gzip standard and this library. -* `level` is the compression level used. For `zskp` level 1 is "fastest", level 2 is "default"; 3 is "better", 4 is "best". -* `insize`/`outsize` is the input/output size. -* `millis` is the number of milliseconds used for compression. -* `mb/s` is megabytes (2^20 bytes) per second. +- `file` is the input file. +- `out` is the compressor used. `zskp` is this package. `zstd` is the Datadog + cgo library. `gzstd/gzkp` is gzip standard and this library. +- `level` is the compression level used. For `zskp` level 1 is "fastest", level + 2 is "default"; 3 is "better", 4 is "best". +- `insize`/`outsize` is the input/output size. +- `millis` is the number of milliseconds used for compression. +- `mb/s` is megabytes (2^20 bytes) per second. ``` Silesia Corpus: @@ -259,17 +283,20 @@ nyc-taxi-data-10M.csv gzkp 1 3325605752 922273214 13929 227.68 ## Decompressor -Status: STABLE - there may still be subtle bugs, but a wide variety of content has been tested. +Status: STABLE - there may still be subtle bugs, but a wide variety of content +has been tested. + +This library is being continuously +[fuzz-tested](https://github.com/klauspost/compress-fuzz), kindly supplied by +[fuzzit.dev](https://fuzzit.dev/). The main purpose of the fuzz testing is to +ensure that it is not possible to crash the decoder, or run it past its limits +with ANY input provided. -This library is being continuously [fuzz-tested](https://github.com/klauspost/compress-fuzz), -kindly supplied by [fuzzit.dev](https://fuzzit.dev/). -The main purpose of the fuzz testing is to ensure that it is not possible to crash the decoder, -or run it past its limits with ANY input provided. - ### Usage -The package has been designed for two main usages, big streams of data and smaller in-memory buffers. -There are two main usages of the package for these. Both of them are accessed by creating a `Decoder`. +The package has been designed for two main usages, big streams of data and +smaller in-memory buffers. There are two main usages of the package for these. +Both of them are accessed by creating a `Decoder`. For streaming use a simple setup could look like this: @@ -282,20 +309,21 @@ func Decompress(in io.Reader, out io.Writer) error { return err } defer d.Close() - + // Copy content... _, err = io.Copy(out, d) return err } ``` -It is important to use the "Close" function when you no longer need the Reader to stop running goroutines, -when running with default settings. -Goroutines will exit once an error has been returned, including `io.EOF` at the end of a stream. +It is important to use the "Close" function when you no longer need the Reader +to stop running goroutines, when running with default settings. Goroutines will +exit once an error has been returned, including `io.EOF` at the end of a stream. -Streams are decoded concurrently in 4 asynchronous stages to give the best possible throughput. -However, if you prefer synchronous decompression, use `WithDecoderConcurrency(1)` which will decompress data -as it is being requested only. +Streams are decoded concurrently in 4 asynchronous stages to give the best +possible throughput. However, if you prefer synchronous decompression, use +`WithDecoderConcurrency(1)` which will decompress data as it is being requested +only. For decoding buffers, it could look something like this: @@ -310,85 +338,98 @@ var decoder, _ = zstd.NewReader(nil, zstd.WithDecoderConcurrency(0)) // so it will be allocated by the decoder. func Decompress(src []byte) ([]byte, error) { return decoder.DecodeAll(src, nil) -} +} ``` -Both of these cases should provide the functionality needed. -The decoder can be used for *concurrent* decompression of multiple buffers. -By default 4 decompressors will be created. +Both of these cases should provide the functionality needed. The decoder can be +used for _concurrent_ decompression of multiple buffers. By default 4 +decompressors will be created. -It will only allow a certain number of concurrent operations to run. -To tweak that yourself use the `WithDecoderConcurrency(n)` option when creating the decoder. -It is possible to use `WithDecoderConcurrency(0)` to create GOMAXPROCS decoders. +It will only allow a certain number of concurrent operations to run. To tweak +that yourself use the `WithDecoderConcurrency(n)` option when creating the +decoder. It is possible to use `WithDecoderConcurrency(0)` to create GOMAXPROCS +decoders. ### Dictionaries -Data compressed with [dictionaries](https://github.com/facebook/zstd#the-case-for-small-data-compression) can be decompressed. +Data compressed with +[dictionaries](https://github.com/facebook/zstd#the-case-for-small-data-compression) +can be decompressed. -Dictionaries are added individually to Decoders. -Dictionaries are generated by the `zstd --train` command and contains an initial state for the decoder. -To add a dictionary use the `WithDecoderDicts(dicts ...[]byte)` option with the dictionary data. -Several dictionaries can be added at once. +Dictionaries are added individually to Decoders. Dictionaries are generated by +the `zstd --train` command and contains an initial state for the decoder. To add +a dictionary use the `WithDecoderDicts(dicts ...[]byte)` option with the +dictionary data. Several dictionaries can be added at once. -The dictionary will be used automatically for the data that specifies them. -A re-used Decoder will still contain the dictionaries registered. +The dictionary will be used automatically for the data that specifies them. A +re-used Decoder will still contain the dictionaries registered. -When registering multiple dictionaries with the same ID, the last one will be used. +When registering multiple dictionaries with the same ID, the last one will be +used. It is possible to use dictionaries when compressing data. -To enable a dictionary use `WithEncoderDict(dict []byte)`. Here only one dictionary will be used -and it will likely be used even if it doesn't improve compression. +To enable a dictionary use `WithEncoderDict(dict []byte)`. Here only one +dictionary will be used and it will likely be used even if it doesn't improve +compression. The used dictionary must be used to decompress the content. -For any real gains, the dictionary should be built with similar data. -If an unsuitable dictionary is used the output may be slightly larger than using no dictionary. -Use the [zstd commandline tool](https://github.com/facebook/zstd/releases) to build a dictionary from sample data. -For information see [zstd dictionary information](https://github.com/facebook/zstd#the-case-for-small-data-compression). +For any real gains, the dictionary should be built with similar data. If an +unsuitable dictionary is used the output may be slightly larger than using no +dictionary. Use the +[zstd commandline tool](https://github.com/facebook/zstd/releases) to build a +dictionary from sample data. For information see +[zstd dictionary information](https://github.com/facebook/zstd#the-case-for-small-data-compression). -For now there is a fixed startup performance penalty for compressing content with dictionaries. -This will likely be improved over time. Just be aware to test performance when implementing. +For now there is a fixed startup performance penalty for compressing content +with dictionaries. This will likely be improved over time. Just be aware to test +performance when implementing. ### Allocation-less operation -The decoder has been designed to operate without allocations after a warmup. +The decoder has been designed to operate without allocations after a warmup. -This means that you should *store* the decoder for best performance. -To re-use a stream decoder, use the `Reset(r io.Reader) error` to switch to another stream. +This means that you should _store_ the decoder for best performance. To re-use a +stream decoder, use the `Reset(r io.Reader) error` to switch to another stream. A decoder can safely be re-used even if the previous stream failed. To release the resources, you must call the `Close()` function on a decoder. -After this it can *no longer be reused*, but all running goroutines will be stopped. -So you *must* use this if you will no longer need the Reader. +After this it can _no longer be reused_, but all running goroutines will be +stopped. So you _must_ use this if you will no longer need the Reader. -For decompressing smaller buffers a single decoder can be used. -When decoding buffers, you can supply a destination slice with length 0 and your expected capacity. -In this case no unneeded allocations should be made. +For decompressing smaller buffers a single decoder can be used. When decoding +buffers, you can supply a destination slice with length 0 and your expected +capacity. In this case no unneeded allocations should be made. ### Concurrency -The buffer decoder does everything on the same goroutine and does nothing concurrently. -It can however decode several buffers concurrently. Use `WithDecoderConcurrency(n)` to limit that. +The buffer decoder does everything on the same goroutine and does nothing +concurrently. It can however decode several buffers concurrently. Use +`WithDecoderConcurrency(n)` to limit that. The stream decoder will create goroutines that: -1) Reads input and splits the input into blocks. -2) Decompression of literals. -3) Decompression of sequences. -4) Reconstruction of output stream. +1. Reads input and splits the input into blocks. +2. Decompression of literals. +3. Decompression of sequences. +4. Reconstruction of output stream. + +So effectively this also means the decoder will "read ahead" and prepare data to +always be available for output. -So effectively this also means the decoder will "read ahead" and prepare data to always be available for output. +The concurrency level will, for streams, determine how many blocks ahead the +compression will start. -The concurrency level will, for streams, determine how many blocks ahead the compression will start. +Since "blocks" are quite dependent on the output of the previous block stream +decoding will only have limited concurrency. -Since "blocks" are quite dependent on the output of the previous block stream decoding will only have limited concurrency. +In practice this means that concurrency is often limited to utilizing about 3 +cores effectively. -In practice this means that concurrency is often limited to utilizing about 3 cores effectively. - ### Benchmarks -The first two are streaming decodes and the last are smaller inputs. +The first two are streaming decodes and the last are smaller inputs. Running on AMD Ryzen 9 3950X 16-Core Processor. AMD64 assembly used. @@ -416,26 +457,32 @@ This reflects the performance around May 2022, but this may be out of date. ## Zstd inside ZIP files -It is possible to use zstandard to compress individual files inside zip archives. -While this isn't widely supported it can be useful for internal files. +It is possible to use zstandard to compress individual files inside zip +archives. While this isn't widely supported it can be useful for internal files. -To support the compression and decompression of these files you must register a compressor and decompressor. +To support the compression and decompression of these files you must register a +compressor and decompressor. -It is highly recommended registering the (de)compressors on individual zip Reader/Writer and NOT -use the global registration functions. The main reason for this is that 2 registrations from -different packages will result in a panic. +It is highly recommended registering the (de)compressors on individual zip +Reader/Writer and NOT use the global registration functions. The main reason for +this is that 2 registrations from different packages will result in a panic. -It is a good idea to only have a single compressor and decompressor, since they can be used for multiple zip -files concurrently, and using a single instance will allow reusing some resources. +It is a good idea to only have a single compressor and decompressor, since they +can be used for multiple zip files concurrently, and using a single instance +will allow reusing some resources. -See [this example](https://pkg.go.dev/github.com/klauspost/compress/zstd#example-ZipCompressor) for -how to compress and decompress files inside zip archives. +See +[this example](https://pkg.go.dev/github.com/klauspost/compress/zstd#example-ZipCompressor) +for how to compress and decompress files inside zip archives. # Contributions -Contributions are always welcome. -For new features/fixes, remember to add tests and for performance enhancements include benchmarks. +Contributions are always welcome. For new features/fixes, remember to add tests +and for performance enhancements include benchmarks. -For general feedback and experience reports, feel free to open an issue or write me on [Twitter](https://twitter.com/sh0dan). +For general feedback and experience reports, feel free to open an issue or write +me on [Twitter](https://twitter.com/sh0dan). -This package includes the excellent [`github.com/cespare/xxhash`](https://github.com/cespare/xxhash) package Copyright (c) 2016 Caleb Spare. +This package includes the excellent +[`github.com/cespare/xxhash`](https://github.com/cespare/xxhash) package +Copyright (c) 2016 Caleb Spare. diff --git a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md index 777290d..166e7d7 100644 --- a/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md +++ b/examples/go/vendor/github.com/klauspost/compress/zstd/internal/xxhash/README.md @@ -1,6 +1,7 @@ # xxhash -VENDORED: Go to [github.com/cespare/xxhash](https://github.com/cespare/xxhash) for original package. +VENDORED: Go to [github.com/cespare/xxhash](https://github.com/cespare/xxhash) +for original package. xxhash is a Go implementation of the 64-bit [xxHash] algorithm, XXH64. This is a high-quality hashing algorithm that is much faster than anything in the Go @@ -35,9 +36,9 @@ This package is in a module and the latest code is in version 2 of the module. You need a version of Go with at least "minimal module compatibility" to use github.com/cespare/xxhash/v2: -* 1.9.7+ for Go 1.9 -* 1.10.3+ for Go 1.10 -* Go 1.11 or later +- 1.9.7+ for Go 1.9 +- 1.10.3+ for Go 1.10 +- Go 1.11 or later I recommend using the latest release of Go. @@ -48,9 +49,9 @@ implementations of Sum64. | input size | purego | asm | | ---------- | --------- | --------- | -| 4 B | 1.3 GB/s | 1.2 GB/s | -| 16 B | 2.9 GB/s | 3.5 GB/s | -| 100 B | 6.9 GB/s | 8.1 GB/s | +| 4 B | 1.3 GB/s | 1.2 GB/s | +| 16 B | 2.9 GB/s | 3.5 GB/s | +| 100 B | 6.9 GB/s | 8.1 GB/s | | 4 KB | 11.7 GB/s | 16.7 GB/s | | 10 MB | 12.0 GB/s | 17.3 GB/s | diff --git a/examples/go/vendor/github.com/pierrec/lz4/README.md b/examples/go/vendor/github.com/pierrec/lz4/README.md index 4ee388e..c2d4dfb 100644 --- a/examples/go/vendor/github.com/pierrec/lz4/README.md +++ b/examples/go/vendor/github.com/pierrec/lz4/README.md @@ -7,8 +7,10 @@ ## Overview -This package provides a streaming interface to [LZ4 data streams](http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html) as well as low level compress and uncompress functions for LZ4 data blocks. -The implementation is based on the reference C [one](https://github.com/lz4/lz4). +This package provides a streaming interface to +[LZ4 data streams](http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html) +as well as low level compress and uncompress functions for LZ4 data blocks. The +implementation is based on the reference C [one](https://github.com/lz4/lz4). ## Install @@ -48,7 +50,6 @@ uncompress [arguments] [ ...] ``` - ## Example ``` @@ -83,8 +84,11 @@ Contributions are very welcome for bug fixing, performance improvements...! ## Contributors -Thanks to all [contributors](https://github.com/pierrec/lz4/graphs/contributors) so far! +Thanks to all [contributors](https://github.com/pierrec/lz4/graphs/contributors) +so far! -Special thanks to [@Zariel](https://github.com/Zariel) for his asm implementation of the decoder. +Special thanks to [@Zariel](https://github.com/Zariel) for his asm +implementation of the decoder. -Special thanks to [@klauspost](https://github.com/klauspost) for his work on optimizing the code. +Special thanks to [@klauspost](https://github.com/klauspost) for his work on +optimizing the code. diff --git a/examples/go/vendor/github.com/pkg/errors/README.md b/examples/go/vendor/github.com/pkg/errors/README.md index 54dfdcb..30f485d 100644 --- a/examples/go/vendor/github.com/pkg/errors/README.md +++ b/examples/go/vendor/github.com/pkg/errors/README.md @@ -5,31 +5,47 @@ Package errors provides simple error handling primitives. `go get github.com/pkg/errors` The traditional error handling idiom in Go is roughly akin to + ```go if err != nil { return err } ``` -which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. + +which applied recursively up the call stack results in error reports without +context or debugging information. The errors package allows programmers to add +context to the failure path in their code in a way that does not destroy the +original value of the error. ## Adding context to an error -The errors.Wrap function returns a new error that adds context to the original error. For example +The errors.Wrap function returns a new error that adds context to the original +error. For example + ```go _, err := ioutil.ReadAll(r) if err != nil { return errors.Wrap(err, "read failed") } ``` + ## Retrieving the cause of an error -Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. +Using `errors.Wrap` constructs a stack of errors, adding context to the +preceding error. Depending on the nature of the error it may be necessary to +reverse the operation of errors.Wrap to retrieve the original error for +inspection. Any error value which implements this interface can be inspected by +`errors.Cause`. + ```go type causer interface { Cause() error } ``` -`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: + +`errors.Cause` will recursively retrieve the topmost error which does not +implement `causer`, which is assumed to be the original cause. For example: + ```go switch err := errors.Cause(err).(type) { case *MyError: @@ -43,14 +59,20 @@ default: ## Roadmap -With the upcoming [Go2 error proposals](https://go.googlesource.com/proposal/+/master/design/go2draft.md) this package is moving into maintenance mode. The roadmap for a 1.0 release is as follows: +With the upcoming +[Go2 error proposals](https://go.googlesource.com/proposal/+/master/design/go2draft.md) +this package is moving into maintenance mode. The roadmap for a 1.0 release is +as follows: -- 0.9. Remove pre Go 1.9 and Go 1.10 support, address outstanding pull requests (if possible) +- 0.9. Remove pre Go 1.9 and Go 1.10 support, address outstanding pull requests + (if possible) - 1.0. Final release. ## Contributing -Because of the Go2 errors changes, this package is not accepting proposals for new functionality. With that said, we welcome pull requests, bug fixes and issue reports. +Because of the Go2 errors changes, this package is not accepting proposals for +new functionality. With that said, we welcome pull requests, bug fixes and issue +reports. Before sending a PR, please discuss your change by raising an issue. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md index fd03c1f..f4b484a 100644 --- a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CHANGELOG.md @@ -6,33 +6,61 @@ **Implemented enhancements:** -- Undeprecate non-context publish functions [\#259](https://github.com/rabbitmq/amqp091-go/pull/259) ([Zerpet](https://github.com/Zerpet)) -- Update Go directive [\#257](https://github.com/rabbitmq/amqp091-go/pull/257) ([Zerpet](https://github.com/Zerpet)) +- Undeprecate non-context publish functions + [\#259](https://github.com/rabbitmq/amqp091-go/pull/259) + ([Zerpet](https://github.com/Zerpet)) +- Update Go directive [\#257](https://github.com/rabbitmq/amqp091-go/pull/257) + ([Zerpet](https://github.com/Zerpet)) **Fixed bugs:** -- republishing on reconnect bug in the example [\#249](https://github.com/rabbitmq/amqp091-go/issues/249) -- Channel Notify Close not receive event when connection is closed by RMQ server. [\#241](https://github.com/rabbitmq/amqp091-go/issues/241) -- Inconsistent documentation [\#231](https://github.com/rabbitmq/amqp091-go/issues/231) -- Data race in the client example [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) -- Fix string function of URI [\#258](https://github.com/rabbitmq/amqp091-go/pull/258) ([Zerpet](https://github.com/Zerpet)) +- republishing on reconnect bug in the example + [\#249](https://github.com/rabbitmq/amqp091-go/issues/249) +- Channel Notify Close not receive event when connection is closed by RMQ + server. [\#241](https://github.com/rabbitmq/amqp091-go/issues/241) +- Inconsistent documentation + [\#231](https://github.com/rabbitmq/amqp091-go/issues/231) +- Data race in the client example + [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) +- Fix string function of URI + [\#258](https://github.com/rabbitmq/amqp091-go/pull/258) + ([Zerpet](https://github.com/Zerpet)) **Closed issues:** -- Documentation needed \(`PublishWithContext` does not use context\) [\#195](https://github.com/rabbitmq/amqp091-go/issues/195) -- concurrent dispatch data race [\#226](https://github.com/rabbitmq/amqp091-go/issues/226) +- Documentation needed \(`PublishWithContext` does not use context\) + [\#195](https://github.com/rabbitmq/amqp091-go/issues/195) +- concurrent dispatch data race + [\#226](https://github.com/rabbitmq/amqp091-go/issues/226) **Merged pull requests:** -- Fix data race in example [\#260](https://github.com/rabbitmq/amqp091-go/pull/260) ([Zerpet](https://github.com/Zerpet)) -- Address CodeQL warning [\#252](https://github.com/rabbitmq/amqp091-go/pull/252) ([lukebakken](https://github.com/lukebakken)) -- Add support for additional AMQP URI query parameters [\#251](https://github.com/rabbitmq/amqp091-go/pull/251) ([vilius-g](https://github.com/vilius-g)) -- Example fix [\#250](https://github.com/rabbitmq/amqp091-go/pull/250) ([Boris-Plato](https://github.com/Boris-Plato)) -- Increasing the code coverage [\#248](https://github.com/rabbitmq/amqp091-go/pull/248) ([edercarloscosta](https://github.com/edercarloscosta)) -- Use correct mutex to guard confirms.published [\#240](https://github.com/rabbitmq/amqp091-go/pull/240) ([hjr265](https://github.com/hjr265)) -- Documenting Publishing.Expiration usage [\#232](https://github.com/rabbitmq/amqp091-go/pull/232) ([niksteff](https://github.com/niksteff)) -- fix comment typo in example\_client\_test.go [\#228](https://github.com/rabbitmq/amqp091-go/pull/228) ([wisaTong](https://github.com/wisaTong)) -- Bump go.uber.org/goleak from 1.2.1 to 1.3.0 [\#227](https://github.com/rabbitmq/amqp091-go/pull/227) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Fix data race in example + [\#260](https://github.com/rabbitmq/amqp091-go/pull/260) + ([Zerpet](https://github.com/Zerpet)) +- Address CodeQL warning + [\#252](https://github.com/rabbitmq/amqp091-go/pull/252) + ([lukebakken](https://github.com/lukebakken)) +- Add support for additional AMQP URI query parameters + [\#251](https://github.com/rabbitmq/amqp091-go/pull/251) + ([vilius-g](https://github.com/vilius-g)) +- Example fix [\#250](https://github.com/rabbitmq/amqp091-go/pull/250) + ([Boris-Plato](https://github.com/Boris-Plato)) +- Increasing the code coverage + [\#248](https://github.com/rabbitmq/amqp091-go/pull/248) + ([edercarloscosta](https://github.com/edercarloscosta)) +- Use correct mutex to guard confirms.published + [\#240](https://github.com/rabbitmq/amqp091-go/pull/240) + ([hjr265](https://github.com/hjr265)) +- Documenting Publishing.Expiration usage + [\#232](https://github.com/rabbitmq/amqp091-go/pull/232) + ([niksteff](https://github.com/niksteff)) +- fix comment typo in example_client_test.go + [\#228](https://github.com/rabbitmq/amqp091-go/pull/228) + ([wisaTong](https://github.com/wisaTong)) +- Bump go.uber.org/goleak from 1.2.1 to 1.3.0 + [\#227](https://github.com/rabbitmq/amqp091-go/pull/227) + ([dependabot[bot]](https://github.com/apps/dependabot)) ## [v1.9.0](https://github.com/rabbitmq/amqp091-go/tree/v1.9.0) (2023-10-02) @@ -40,33 +68,59 @@ **Implemented enhancements:** -- Use of buffered delivery channels when prefetch\_count is not null [\#200](https://github.com/rabbitmq/amqp091-go/issues/200) +- Use of buffered delivery channels when prefetch_count is not null + [\#200](https://github.com/rabbitmq/amqp091-go/issues/200) **Fixed bugs:** -- connection block when write connection reset by peer [\#222](https://github.com/rabbitmq/amqp091-go/issues/222) -- Test failure on 32bit architectures [\#202](https://github.com/rabbitmq/amqp091-go/issues/202) +- connection block when write connection reset by peer + [\#222](https://github.com/rabbitmq/amqp091-go/issues/222) +- Test failure on 32bit architectures + [\#202](https://github.com/rabbitmq/amqp091-go/issues/202) **Closed issues:** -- Add a constant to set consumer timeout as queue argument [\#201](https://github.com/rabbitmq/amqp091-go/issues/201) -- Add a constant for CQ version [\#199](https://github.com/rabbitmq/amqp091-go/issues/199) -- Examples may need to be updated after \#140 [\#153](https://github.com/rabbitmq/amqp091-go/issues/153) +- Add a constant to set consumer timeout as queue argument + [\#201](https://github.com/rabbitmq/amqp091-go/issues/201) +- Add a constant for CQ version + [\#199](https://github.com/rabbitmq/amqp091-go/issues/199) +- Examples may need to be updated after \#140 + [\#153](https://github.com/rabbitmq/amqp091-go/issues/153) **Merged pull requests:** -- Update spec091.go [\#224](https://github.com/rabbitmq/amqp091-go/pull/224) ([pinkfish](https://github.com/pinkfish)) -- Closes 222 [\#223](https://github.com/rabbitmq/amqp091-go/pull/223) ([yywing](https://github.com/yywing)) -- Update write.go [\#221](https://github.com/rabbitmq/amqp091-go/pull/221) ([pinkfish](https://github.com/pinkfish)) -- Bump versions [\#219](https://github.com/rabbitmq/amqp091-go/pull/219) ([lukebakken](https://github.com/lukebakken)) -- remove extra word 'accept' from ExchangeDeclare description [\#217](https://github.com/rabbitmq/amqp091-go/pull/217) ([a-sabzian](https://github.com/a-sabzian)) -- Misc Windows CI updates [\#216](https://github.com/rabbitmq/amqp091-go/pull/216) ([lukebakken](https://github.com/lukebakken)) -- Stop using deprecated Publish function [\#207](https://github.com/rabbitmq/amqp091-go/pull/207) ([Zerpet](https://github.com/Zerpet)) -- Constant for consumer timeout queue argument [\#206](https://github.com/rabbitmq/amqp091-go/pull/206) ([Zerpet](https://github.com/Zerpet)) -- Add a constant for CQ v2 queue argument [\#205](https://github.com/rabbitmq/amqp091-go/pull/205) ([Zerpet](https://github.com/Zerpet)) -- Fix example for 32-bit compatibility [\#204](https://github.com/rabbitmq/amqp091-go/pull/204) ([Zerpet](https://github.com/Zerpet)) -- Fix to increase timeout milliseconds since it's too tight [\#203](https://github.com/rabbitmq/amqp091-go/pull/203) ([t2y](https://github.com/t2y)) -- Add Channel.ConsumeWithContext to be able to cancel delivering [\#192](https://github.com/rabbitmq/amqp091-go/pull/192) ([t2y](https://github.com/t2y)) +- Update spec091.go [\#224](https://github.com/rabbitmq/amqp091-go/pull/224) + ([pinkfish](https://github.com/pinkfish)) +- Closes 222 [\#223](https://github.com/rabbitmq/amqp091-go/pull/223) + ([yywing](https://github.com/yywing)) +- Update write.go [\#221](https://github.com/rabbitmq/amqp091-go/pull/221) + ([pinkfish](https://github.com/pinkfish)) +- Bump versions [\#219](https://github.com/rabbitmq/amqp091-go/pull/219) + ([lukebakken](https://github.com/lukebakken)) +- remove extra word 'accept' from ExchangeDeclare description + [\#217](https://github.com/rabbitmq/amqp091-go/pull/217) + ([a-sabzian](https://github.com/a-sabzian)) +- Misc Windows CI updates + [\#216](https://github.com/rabbitmq/amqp091-go/pull/216) + ([lukebakken](https://github.com/lukebakken)) +- Stop using deprecated Publish function + [\#207](https://github.com/rabbitmq/amqp091-go/pull/207) + ([Zerpet](https://github.com/Zerpet)) +- Constant for consumer timeout queue argument + [\#206](https://github.com/rabbitmq/amqp091-go/pull/206) + ([Zerpet](https://github.com/Zerpet)) +- Add a constant for CQ v2 queue argument + [\#205](https://github.com/rabbitmq/amqp091-go/pull/205) + ([Zerpet](https://github.com/Zerpet)) +- Fix example for 32-bit compatibility + [\#204](https://github.com/rabbitmq/amqp091-go/pull/204) + ([Zerpet](https://github.com/Zerpet)) +- Fix to increase timeout milliseconds since it's too tight + [\#203](https://github.com/rabbitmq/amqp091-go/pull/203) + ([t2y](https://github.com/t2y)) +- Add Channel.ConsumeWithContext to be able to cancel delivering + [\#192](https://github.com/rabbitmq/amqp091-go/pull/192) + ([t2y](https://github.com/t2y)) ## [v1.8.1](https://github.com/rabbitmq/amqp091-go/tree/v1.8.1) (2023-05-04) @@ -74,11 +128,14 @@ **Fixed bugs:** -- Fixed incorrect version reported in client properties [52ce2efd03c53dcf77d5496977da46840e9abd24](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) +- Fixed incorrect version reported in client properties + [52ce2efd03c53dcf77d5496977da46840e9abd24](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) **Merged pull requests:** -- Fix Example Client not reconnecting [\#186](https://github.com/rabbitmq/amqp091-go/pull/186) ([frankfil](https://github.com/frankfil)) +- Fix Example Client not reconnecting + [\#186](https://github.com/rabbitmq/amqp091-go/pull/186) + ([frankfil](https://github.com/frankfil)) ## [v1.8.0](https://github.com/rabbitmq/amqp091-go/tree/v1.8.0) (2023-03-21) @@ -86,15 +143,23 @@ **Closed issues:** -- memory leak [\#179](https://github.com/rabbitmq/amqp091-go/issues/179) -- the publishWithContext interface will not return when it times out [\#178](https://github.com/rabbitmq/amqp091-go/issues/178) +- memory leak [\#179](https://github.com/rabbitmq/amqp091-go/issues/179) +- the publishWithContext interface will not return when it times out + [\#178](https://github.com/rabbitmq/amqp091-go/issues/178) **Merged pull requests:** -- Fix race condition on confirms [\#183](https://github.com/rabbitmq/amqp091-go/pull/183) ([calloway-jacob](https://github.com/calloway-jacob)) -- Add a CloseDeadline function to Connection [\#181](https://github.com/rabbitmq/amqp091-go/pull/181) ([Zerpet](https://github.com/Zerpet)) -- Fix memory leaks [\#180](https://github.com/rabbitmq/amqp091-go/pull/180) ([GXKe](https://github.com/GXKe)) -- Bump go.uber.org/goleak from 1.2.0 to 1.2.1 [\#177](https://github.com/rabbitmq/amqp091-go/pull/177) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Fix race condition on confirms + [\#183](https://github.com/rabbitmq/amqp091-go/pull/183) + ([calloway-jacob](https://github.com/calloway-jacob)) +- Add a CloseDeadline function to Connection + [\#181](https://github.com/rabbitmq/amqp091-go/pull/181) + ([Zerpet](https://github.com/Zerpet)) +- Fix memory leaks [\#180](https://github.com/rabbitmq/amqp091-go/pull/180) + ([GXKe](https://github.com/GXKe)) +- Bump go.uber.org/goleak from 1.2.0 to 1.2.1 + [\#177](https://github.com/rabbitmq/amqp091-go/pull/177) + ([dependabot[bot]](https://github.com/apps/dependabot)) ## [v1.7.0](https://github.com/rabbitmq/amqp091-go/tree/v1.7.0) (2023-02-09) @@ -102,17 +167,29 @@ **Closed issues:** -- \#31 resurfacing \(?\) [\#170](https://github.com/rabbitmq/amqp091-go/issues/170) -- Deprecate QueueInspect [\#167](https://github.com/rabbitmq/amqp091-go/issues/167) -- v1.6.0 causing rabbit connection errors [\#160](https://github.com/rabbitmq/amqp091-go/issues/160) +- \#31 resurfacing \(?\) + [\#170](https://github.com/rabbitmq/amqp091-go/issues/170) +- Deprecate QueueInspect + [\#167](https://github.com/rabbitmq/amqp091-go/issues/167) +- v1.6.0 causing rabbit connection errors + [\#160](https://github.com/rabbitmq/amqp091-go/issues/160) **Merged pull requests:** -- Set channels and allocator to nil in shutdown [\#172](https://github.com/rabbitmq/amqp091-go/pull/172) ([lukebakken](https://github.com/lukebakken)) -- Fix racing in Open [\#171](https://github.com/rabbitmq/amqp091-go/pull/171) ([Zerpet](https://github.com/Zerpet)) -- adding go 1.20 to tests [\#169](https://github.com/rabbitmq/amqp091-go/pull/169) ([halilylm](https://github.com/halilylm)) -- Deprecate the QueueInspect function [\#168](https://github.com/rabbitmq/amqp091-go/pull/168) ([lukebakken](https://github.com/lukebakken)) -- Check if channel is nil before updating it [\#150](https://github.com/rabbitmq/amqp091-go/pull/150) ([julienschmidt](https://github.com/julienschmidt)) +- Set channels and allocator to nil in shutdown + [\#172](https://github.com/rabbitmq/amqp091-go/pull/172) + ([lukebakken](https://github.com/lukebakken)) +- Fix racing in Open [\#171](https://github.com/rabbitmq/amqp091-go/pull/171) + ([Zerpet](https://github.com/Zerpet)) +- adding go 1.20 to tests + [\#169](https://github.com/rabbitmq/amqp091-go/pull/169) + ([halilylm](https://github.com/halilylm)) +- Deprecate the QueueInspect function + [\#168](https://github.com/rabbitmq/amqp091-go/pull/168) + ([lukebakken](https://github.com/lukebakken)) +- Check if channel is nil before updating it + [\#150](https://github.com/rabbitmq/amqp091-go/pull/150) + ([julienschmidt](https://github.com/julienschmidt)) ## [v1.6.1](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1) (2023-02-01) @@ -120,7 +197,9 @@ **Merged pull requests:** -- Update Makefile targets related to RabbitMQ [\#163](https://github.com/rabbitmq/amqp091-go/pull/163) ([Zerpet](https://github.com/Zerpet)) +- Update Makefile targets related to RabbitMQ + [\#163](https://github.com/rabbitmq/amqp091-go/pull/163) + ([Zerpet](https://github.com/Zerpet)) ## [v1.6.1-rc.2](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1-rc.2) (2023-01-31) @@ -128,7 +207,9 @@ **Merged pull requests:** -- Do not overly protect writes [\#162](https://github.com/rabbitmq/amqp091-go/pull/162) ([lukebakken](https://github.com/lukebakken)) +- Do not overly protect writes + [\#162](https://github.com/rabbitmq/amqp091-go/pull/162) + ([lukebakken](https://github.com/lukebakken)) ## [v1.6.1-rc.1](https://github.com/rabbitmq/amqp091-go/tree/v1.6.1-rc.1) (2023-01-31) @@ -136,11 +217,14 @@ **Closed issues:** -- Calling Channel\(\) on an empty connection panics [\#148](https://github.com/rabbitmq/amqp091-go/issues/148) +- Calling Channel\(\) on an empty connection panics + [\#148](https://github.com/rabbitmq/amqp091-go/issues/148) **Merged pull requests:** -- Ensure flush happens and correctly lock connection for a series of unflushed writes [\#161](https://github.com/rabbitmq/amqp091-go/pull/161) ([lukebakken](https://github.com/lukebakken)) +- Ensure flush happens and correctly lock connection for a series of unflushed + writes [\#161](https://github.com/rabbitmq/amqp091-go/pull/161) + ([lukebakken](https://github.com/lukebakken)) ## [v1.6.0](https://github.com/rabbitmq/amqp091-go/tree/v1.6.0) (2023-01-20) @@ -148,35 +232,71 @@ **Implemented enhancements:** -- Add constants for Queue arguments [\#145](https://github.com/rabbitmq/amqp091-go/pull/145) ([Zerpet](https://github.com/Zerpet)) +- Add constants for Queue arguments + [\#145](https://github.com/rabbitmq/amqp091-go/pull/145) + ([Zerpet](https://github.com/Zerpet)) **Closed issues:** -- README not up to date [\#154](https://github.com/rabbitmq/amqp091-go/issues/154) -- Allow re-using default connection config \(custom properties\) [\#152](https://github.com/rabbitmq/amqp091-go/issues/152) -- Rename package name to amqp in V2 [\#151](https://github.com/rabbitmq/amqp091-go/issues/151) -- Helper types to declare quorum queues [\#144](https://github.com/rabbitmq/amqp091-go/issues/144) -- Inefficient use of buffers reduces potential throughput for basicPublish with small messages. [\#141](https://github.com/rabbitmq/amqp091-go/issues/141) -- bug, close cause panic [\#130](https://github.com/rabbitmq/amqp091-go/issues/130) -- Publishing Headers are unable to store Table with slice values [\#125](https://github.com/rabbitmq/amqp091-go/issues/125) -- Example client can deadlock in Close due to unconsumed confirmations [\#122](https://github.com/rabbitmq/amqp091-go/issues/122) -- SAC not working properly [\#106](https://github.com/rabbitmq/amqp091-go/issues/106) +- README not up to date + [\#154](https://github.com/rabbitmq/amqp091-go/issues/154) +- Allow re-using default connection config \(custom properties\) + [\#152](https://github.com/rabbitmq/amqp091-go/issues/152) +- Rename package name to amqp in V2 + [\#151](https://github.com/rabbitmq/amqp091-go/issues/151) +- Helper types to declare quorum queues + [\#144](https://github.com/rabbitmq/amqp091-go/issues/144) +- Inefficient use of buffers reduces potential throughput for basicPublish with + small messages. [\#141](https://github.com/rabbitmq/amqp091-go/issues/141) +- bug, close cause panic + [\#130](https://github.com/rabbitmq/amqp091-go/issues/130) +- Publishing Headers are unable to store Table with slice values + [\#125](https://github.com/rabbitmq/amqp091-go/issues/125) +- Example client can deadlock in Close due to unconsumed confirmations + [\#122](https://github.com/rabbitmq/amqp091-go/issues/122) +- SAC not working properly + [\#106](https://github.com/rabbitmq/amqp091-go/issues/106) **Merged pull requests:** -- Add automatic CHANGELOG.md generation [\#158](https://github.com/rabbitmq/amqp091-go/pull/158) ([lukebakken](https://github.com/lukebakken)) -- Supply library-defined props with NewConnectionProperties [\#157](https://github.com/rabbitmq/amqp091-go/pull/157) ([slagiewka](https://github.com/slagiewka)) -- Fix linter warnings [\#156](https://github.com/rabbitmq/amqp091-go/pull/156) ([Zerpet](https://github.com/Zerpet)) -- Remove outdated information from README [\#155](https://github.com/rabbitmq/amqp091-go/pull/155) ([scriptcoded](https://github.com/scriptcoded)) -- Add example producer using DeferredConfirm [\#149](https://github.com/rabbitmq/amqp091-go/pull/149) ([Zerpet](https://github.com/Zerpet)) -- Ensure code is formatted [\#147](https://github.com/rabbitmq/amqp091-go/pull/147) ([lukebakken](https://github.com/lukebakken)) -- Fix inefficient use of buffers that reduces the potential throughput of basicPublish [\#142](https://github.com/rabbitmq/amqp091-go/pull/142) ([fadams](https://github.com/fadams)) -- Do not embed context in DeferredConfirmation [\#140](https://github.com/rabbitmq/amqp091-go/pull/140) ([tie](https://github.com/tie)) -- Add constant for default exchange [\#139](https://github.com/rabbitmq/amqp091-go/pull/139) ([marlongerson](https://github.com/marlongerson)) -- Fix indentation and remove unnecessary instructions [\#138](https://github.com/rabbitmq/amqp091-go/pull/138) ([alraujo](https://github.com/alraujo)) -- Remove unnecessary instruction [\#135](https://github.com/rabbitmq/amqp091-go/pull/135) ([alraujo](https://github.com/alraujo)) -- Fix example client to avoid deadlock in Close [\#123](https://github.com/rabbitmq/amqp091-go/pull/123) ([Zerpet](https://github.com/Zerpet)) -- Bump go.uber.org/goleak from 1.1.12 to 1.2.0 [\#116](https://github.com/rabbitmq/amqp091-go/pull/116) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Add automatic CHANGELOG.md generation + [\#158](https://github.com/rabbitmq/amqp091-go/pull/158) + ([lukebakken](https://github.com/lukebakken)) +- Supply library-defined props with NewConnectionProperties + [\#157](https://github.com/rabbitmq/amqp091-go/pull/157) + ([slagiewka](https://github.com/slagiewka)) +- Fix linter warnings [\#156](https://github.com/rabbitmq/amqp091-go/pull/156) + ([Zerpet](https://github.com/Zerpet)) +- Remove outdated information from README + [\#155](https://github.com/rabbitmq/amqp091-go/pull/155) + ([scriptcoded](https://github.com/scriptcoded)) +- Add example producer using DeferredConfirm + [\#149](https://github.com/rabbitmq/amqp091-go/pull/149) + ([Zerpet](https://github.com/Zerpet)) +- Ensure code is formatted + [\#147](https://github.com/rabbitmq/amqp091-go/pull/147) + ([lukebakken](https://github.com/lukebakken)) +- Fix inefficient use of buffers that reduces the potential throughput of + basicPublish [\#142](https://github.com/rabbitmq/amqp091-go/pull/142) + ([fadams](https://github.com/fadams)) +- Do not embed context in DeferredConfirmation + [\#140](https://github.com/rabbitmq/amqp091-go/pull/140) + ([tie](https://github.com/tie)) +- Add constant for default exchange + [\#139](https://github.com/rabbitmq/amqp091-go/pull/139) + ([marlongerson](https://github.com/marlongerson)) +- Fix indentation and remove unnecessary instructions + [\#138](https://github.com/rabbitmq/amqp091-go/pull/138) + ([alraujo](https://github.com/alraujo)) +- Remove unnecessary instruction + [\#135](https://github.com/rabbitmq/amqp091-go/pull/135) + ([alraujo](https://github.com/alraujo)) +- Fix example client to avoid deadlock in Close + [\#123](https://github.com/rabbitmq/amqp091-go/pull/123) + ([Zerpet](https://github.com/Zerpet)) +- Bump go.uber.org/goleak from 1.1.12 to 1.2.0 + [\#116](https://github.com/rabbitmq/amqp091-go/pull/116) + ([dependabot[bot]](https://github.com/apps/dependabot)) ## [v1.5.0](https://github.com/rabbitmq/amqp091-go/tree/v1.5.0) (2022-09-07) @@ -184,21 +304,35 @@ **Implemented enhancements:** -- Provide a friendly way to set connection name [\#105](https://github.com/rabbitmq/amqp091-go/issues/105) +- Provide a friendly way to set connection name + [\#105](https://github.com/rabbitmq/amqp091-go/issues/105) **Closed issues:** -- Support connection.update-secret [\#107](https://github.com/rabbitmq/amqp091-go/issues/107) -- Example Client: Implementation of a Consumer with reconnection support [\#40](https://github.com/rabbitmq/amqp091-go/issues/40) +- Support connection.update-secret + [\#107](https://github.com/rabbitmq/amqp091-go/issues/107) +- Example Client: Implementation of a Consumer with reconnection support + [\#40](https://github.com/rabbitmq/amqp091-go/issues/40) **Merged pull requests:** -- use PublishWithContext instead of Publish [\#115](https://github.com/rabbitmq/amqp091-go/pull/115) ([Gsantomaggio](https://github.com/Gsantomaggio)) -- Add support for connection.update-secret [\#114](https://github.com/rabbitmq/amqp091-go/pull/114) ([Zerpet](https://github.com/Zerpet)) -- Remove warning on RabbitMQ tutorials in go [\#113](https://github.com/rabbitmq/amqp091-go/pull/113) ([ChunyiLyu](https://github.com/ChunyiLyu)) -- Update AMQP Spec [\#110](https://github.com/rabbitmq/amqp091-go/pull/110) ([Zerpet](https://github.com/Zerpet)) -- Add an example of reliable consumer [\#109](https://github.com/rabbitmq/amqp091-go/pull/109) ([Zerpet](https://github.com/Zerpet)) -- Add convenience function to set connection name [\#108](https://github.com/rabbitmq/amqp091-go/pull/108) ([Zerpet](https://github.com/Zerpet)) +- use PublishWithContext instead of Publish + [\#115](https://github.com/rabbitmq/amqp091-go/pull/115) + ([Gsantomaggio](https://github.com/Gsantomaggio)) +- Add support for connection.update-secret + [\#114](https://github.com/rabbitmq/amqp091-go/pull/114) + ([Zerpet](https://github.com/Zerpet)) +- Remove warning on RabbitMQ tutorials in go + [\#113](https://github.com/rabbitmq/amqp091-go/pull/113) + ([ChunyiLyu](https://github.com/ChunyiLyu)) +- Update AMQP Spec [\#110](https://github.com/rabbitmq/amqp091-go/pull/110) + ([Zerpet](https://github.com/Zerpet)) +- Add an example of reliable consumer + [\#109](https://github.com/rabbitmq/amqp091-go/pull/109) + ([Zerpet](https://github.com/Zerpet)) +- Add convenience function to set connection name + [\#108](https://github.com/rabbitmq/amqp091-go/pull/108) + ([Zerpet](https://github.com/Zerpet)) ## [v1.4.0](https://github.com/rabbitmq/amqp091-go/tree/v1.4.0) (2022-07-19) @@ -206,44 +340,94 @@ **Closed issues:** -- target machine actively refused connection [\#99](https://github.com/rabbitmq/amqp091-go/issues/99) -- 504 channel/connection is not open error occurred in multiple connection with same rabbitmq service [\#97](https://github.com/rabbitmq/amqp091-go/issues/97) -- Add possible cancel of DeferredConfirmation [\#92](https://github.com/rabbitmq/amqp091-go/issues/92) -- Documentation [\#89](https://github.com/rabbitmq/amqp091-go/issues/89) -- Channel Close gets stuck after closing a connection \(via management UI\) [\#88](https://github.com/rabbitmq/amqp091-go/issues/88) -- this library has same issue [\#83](https://github.com/rabbitmq/amqp091-go/issues/83) -- Provide a logging interface [\#81](https://github.com/rabbitmq/amqp091-go/issues/81) -- 1.4.0 release checklist [\#77](https://github.com/rabbitmq/amqp091-go/issues/77) -- Data race in the client example [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) -- reader go routine hangs and leaks when Connection.Close\(\) is called multiple times [\#69](https://github.com/rabbitmq/amqp091-go/issues/69) -- Support auto-reconnect and cluster [\#65](https://github.com/rabbitmq/amqp091-go/issues/65) -- Connection/Channel Deadlock [\#32](https://github.com/rabbitmq/amqp091-go/issues/32) -- Closing connection and/or channel hangs NotifyPublish is used [\#21](https://github.com/rabbitmq/amqp091-go/issues/21) -- Consumer channel isn't closed in the event of unexpected disconnection [\#18](https://github.com/rabbitmq/amqp091-go/issues/18) +- target machine actively refused connection + [\#99](https://github.com/rabbitmq/amqp091-go/issues/99) +- 504 channel/connection is not open error occurred in multiple connection with + same rabbitmq service [\#97](https://github.com/rabbitmq/amqp091-go/issues/97) +- Add possible cancel of DeferredConfirmation + [\#92](https://github.com/rabbitmq/amqp091-go/issues/92) +- Documentation [\#89](https://github.com/rabbitmq/amqp091-go/issues/89) +- Channel Close gets stuck after closing a connection \(via management UI\) + [\#88](https://github.com/rabbitmq/amqp091-go/issues/88) +- this library has same issue + [\#83](https://github.com/rabbitmq/amqp091-go/issues/83) +- Provide a logging interface + [\#81](https://github.com/rabbitmq/amqp091-go/issues/81) +- 1.4.0 release checklist + [\#77](https://github.com/rabbitmq/amqp091-go/issues/77) +- Data race in the client example + [\#72](https://github.com/rabbitmq/amqp091-go/issues/72) +- reader go routine hangs and leaks when Connection.Close\(\) is called multiple + times [\#69](https://github.com/rabbitmq/amqp091-go/issues/69) +- Support auto-reconnect and cluster + [\#65](https://github.com/rabbitmq/amqp091-go/issues/65) +- Connection/Channel Deadlock + [\#32](https://github.com/rabbitmq/amqp091-go/issues/32) +- Closing connection and/or channel hangs NotifyPublish is used + [\#21](https://github.com/rabbitmq/amqp091-go/issues/21) +- Consumer channel isn't closed in the event of unexpected disconnection + [\#18](https://github.com/rabbitmq/amqp091-go/issues/18) **Merged pull requests:** -- fix race condition with context close and confirm at the same time on DeferredConfirmation. [\#101](https://github.com/rabbitmq/amqp091-go/pull/101) ([sapk](https://github.com/sapk)) -- Add build TLS config from URI [\#98](https://github.com/rabbitmq/amqp091-go/pull/98) ([reddec](https://github.com/reddec)) -- Use context for Publish methods [\#96](https://github.com/rabbitmq/amqp091-go/pull/96) ([sapk](https://github.com/sapk)) -- Added function to get the remote peer's IP address \(conn.RemoteAddr\(\)\) [\#95](https://github.com/rabbitmq/amqp091-go/pull/95) ([rabb1t](https://github.com/rabb1t)) -- Update connection documentation [\#90](https://github.com/rabbitmq/amqp091-go/pull/90) ([Zerpet](https://github.com/Zerpet)) -- Revert test to demonstrate actual bug [\#87](https://github.com/rabbitmq/amqp091-go/pull/87) ([lukebakken](https://github.com/lukebakken)) -- Minor improvements to examples [\#86](https://github.com/rabbitmq/amqp091-go/pull/86) ([lukebakken](https://github.com/lukebakken)) -- Do not skip flaky test in CI [\#85](https://github.com/rabbitmq/amqp091-go/pull/85) ([lukebakken](https://github.com/lukebakken)) -- Add logging [\#84](https://github.com/rabbitmq/amqp091-go/pull/84) ([lukebakken](https://github.com/lukebakken)) -- Add a win32 build [\#82](https://github.com/rabbitmq/amqp091-go/pull/82) ([lukebakken](https://github.com/lukebakken)) -- channel: return nothing instead of always a nil-error in receive methods [\#80](https://github.com/rabbitmq/amqp091-go/pull/80) ([fho](https://github.com/fho)) -- update the contributing & readme files, improve makefile [\#79](https://github.com/rabbitmq/amqp091-go/pull/79) ([fho](https://github.com/fho)) -- Fix lint errors [\#78](https://github.com/rabbitmq/amqp091-go/pull/78) ([lukebakken](https://github.com/lukebakken)) -- ci: run golangci-lint [\#76](https://github.com/rabbitmq/amqp091-go/pull/76) ([fho](https://github.com/fho)) -- ci: run test via make & remove travis CI config [\#75](https://github.com/rabbitmq/amqp091-go/pull/75) ([fho](https://github.com/fho)) -- ci: run tests with race detector [\#74](https://github.com/rabbitmq/amqp091-go/pull/74) ([fho](https://github.com/fho)) -- Detect go routine leaks in integration testcases [\#73](https://github.com/rabbitmq/amqp091-go/pull/73) ([fho](https://github.com/fho)) -- connection: fix: reader go-routine is leaked on connection close [\#70](https://github.com/rabbitmq/amqp091-go/pull/70) ([fho](https://github.com/fho)) -- adding best practises for NotifyPublish for issue\_21 scenario [\#68](https://github.com/rabbitmq/amqp091-go/pull/68) ([DanielePalaia](https://github.com/DanielePalaia)) -- Update Go version [\#67](https://github.com/rabbitmq/amqp091-go/pull/67) ([Zerpet](https://github.com/Zerpet)) -- Regenerate certs with SHA256 to fix test with Go 1.18+ [\#66](https://github.com/rabbitmq/amqp091-go/pull/66) ([anthonyfok](https://github.com/anthonyfok)) +- fix race condition with context close and confirm at the same time on + DeferredConfirmation. [\#101](https://github.com/rabbitmq/amqp091-go/pull/101) + ([sapk](https://github.com/sapk)) +- Add build TLS config from URI + [\#98](https://github.com/rabbitmq/amqp091-go/pull/98) + ([reddec](https://github.com/reddec)) +- Use context for Publish methods + [\#96](https://github.com/rabbitmq/amqp091-go/pull/96) + ([sapk](https://github.com/sapk)) +- Added function to get the remote peer's IP address \(conn.RemoteAddr\(\)\) + [\#95](https://github.com/rabbitmq/amqp091-go/pull/95) + ([rabb1t](https://github.com/rabb1t)) +- Update connection documentation + [\#90](https://github.com/rabbitmq/amqp091-go/pull/90) + ([Zerpet](https://github.com/Zerpet)) +- Revert test to demonstrate actual bug + [\#87](https://github.com/rabbitmq/amqp091-go/pull/87) + ([lukebakken](https://github.com/lukebakken)) +- Minor improvements to examples + [\#86](https://github.com/rabbitmq/amqp091-go/pull/86) + ([lukebakken](https://github.com/lukebakken)) +- Do not skip flaky test in CI + [\#85](https://github.com/rabbitmq/amqp091-go/pull/85) + ([lukebakken](https://github.com/lukebakken)) +- Add logging [\#84](https://github.com/rabbitmq/amqp091-go/pull/84) + ([lukebakken](https://github.com/lukebakken)) +- Add a win32 build [\#82](https://github.com/rabbitmq/amqp091-go/pull/82) + ([lukebakken](https://github.com/lukebakken)) +- channel: return nothing instead of always a nil-error in receive methods + [\#80](https://github.com/rabbitmq/amqp091-go/pull/80) + ([fho](https://github.com/fho)) +- update the contributing & readme files, improve makefile + [\#79](https://github.com/rabbitmq/amqp091-go/pull/79) + ([fho](https://github.com/fho)) +- Fix lint errors [\#78](https://github.com/rabbitmq/amqp091-go/pull/78) + ([lukebakken](https://github.com/lukebakken)) +- ci: run golangci-lint [\#76](https://github.com/rabbitmq/amqp091-go/pull/76) + ([fho](https://github.com/fho)) +- ci: run test via make & remove travis CI config + [\#75](https://github.com/rabbitmq/amqp091-go/pull/75) + ([fho](https://github.com/fho)) +- ci: run tests with race detector + [\#74](https://github.com/rabbitmq/amqp091-go/pull/74) + ([fho](https://github.com/fho)) +- Detect go routine leaks in integration testcases + [\#73](https://github.com/rabbitmq/amqp091-go/pull/73) + ([fho](https://github.com/fho)) +- connection: fix: reader go-routine is leaked on connection close + [\#70](https://github.com/rabbitmq/amqp091-go/pull/70) + ([fho](https://github.com/fho)) +- adding best practises for NotifyPublish for issue_21 scenario + [\#68](https://github.com/rabbitmq/amqp091-go/pull/68) + ([DanielePalaia](https://github.com/DanielePalaia)) +- Update Go version [\#67](https://github.com/rabbitmq/amqp091-go/pull/67) + ([Zerpet](https://github.com/Zerpet)) +- Regenerate certs with SHA256 to fix test with Go 1.18+ + [\#66](https://github.com/rabbitmq/amqp091-go/pull/66) + ([anthonyfok](https://github.com/anthonyfok)) ## [v1.3.4](https://github.com/rabbitmq/amqp091-go/tree/v1.3.4) (2022-04-01) @@ -251,8 +435,10 @@ **Merged pull requests:** -- bump version to 1.3.4 [\#63](https://github.com/rabbitmq/amqp091-go/pull/63) ([DanielePalaia](https://github.com/DanielePalaia)) -- updating doc [\#62](https://github.com/rabbitmq/amqp091-go/pull/62) ([DanielePalaia](https://github.com/DanielePalaia)) +- bump version to 1.3.4 [\#63](https://github.com/rabbitmq/amqp091-go/pull/63) + ([DanielePalaia](https://github.com/DanielePalaia)) +- updating doc [\#62](https://github.com/rabbitmq/amqp091-go/pull/62) + ([DanielePalaia](https://github.com/DanielePalaia)) ## [v1.3.3](https://github.com/rabbitmq/amqp091-go/tree/v1.3.3) (2022-04-01) @@ -261,13 +447,20 @@ **Closed issues:** - Add Client Version [\#49](https://github.com/rabbitmq/amqp091-go/issues/49) -- OpenTelemetry Propagation [\#22](https://github.com/rabbitmq/amqp091-go/issues/22) +- OpenTelemetry Propagation + [\#22](https://github.com/rabbitmq/amqp091-go/issues/22) **Merged pull requests:** -- bump buildVersion for release [\#61](https://github.com/rabbitmq/amqp091-go/pull/61) ([DanielePalaia](https://github.com/DanielePalaia)) -- adding documentation for notifyClose best pratices [\#60](https://github.com/rabbitmq/amqp091-go/pull/60) ([DanielePalaia](https://github.com/DanielePalaia)) -- adding documentation on NotifyClose of connection and channel to enfo… [\#59](https://github.com/rabbitmq/amqp091-go/pull/59) ([DanielePalaia](https://github.com/DanielePalaia)) +- bump buildVersion for release + [\#61](https://github.com/rabbitmq/amqp091-go/pull/61) + ([DanielePalaia](https://github.com/DanielePalaia)) +- adding documentation for notifyClose best pratices + [\#60](https://github.com/rabbitmq/amqp091-go/pull/60) + ([DanielePalaia](https://github.com/DanielePalaia)) +- adding documentation on NotifyClose of connection and channel to enfo… + [\#59](https://github.com/rabbitmq/amqp091-go/pull/59) + ([DanielePalaia](https://github.com/DanielePalaia)) ## [v1.3.2](https://github.com/rabbitmq/amqp091-go/tree/v1.3.2) (2022-03-28) @@ -275,11 +468,14 @@ **Closed issues:** -- Potential race condition in Connection module [\#31](https://github.com/rabbitmq/amqp091-go/issues/31) +- Potential race condition in Connection module + [\#31](https://github.com/rabbitmq/amqp091-go/issues/31) **Merged pull requests:** -- bump versioning to 1.3.2 [\#58](https://github.com/rabbitmq/amqp091-go/pull/58) ([DanielePalaia](https://github.com/DanielePalaia)) +- bump versioning to 1.3.2 + [\#58](https://github.com/rabbitmq/amqp091-go/pull/58) + ([DanielePalaia](https://github.com/DanielePalaia)) ## [v1.3.1](https://github.com/rabbitmq/amqp091-go/tree/v1.3.1) (2022-03-25) @@ -287,24 +483,49 @@ **Closed issues:** -- Possible deadlock on DeferredConfirmation.Wait\(\) [\#46](https://github.com/rabbitmq/amqp091-go/issues/46) -- Call to Delivery.Ack blocks indefinitely in case of disconnection [\#19](https://github.com/rabbitmq/amqp091-go/issues/19) -- Unexpacted behavor of channel.IsClosed\(\) [\#14](https://github.com/rabbitmq/amqp091-go/issues/14) -- A possible dead lock in connection close notification Go channel [\#11](https://github.com/rabbitmq/amqp091-go/issues/11) +- Possible deadlock on DeferredConfirmation.Wait\(\) + [\#46](https://github.com/rabbitmq/amqp091-go/issues/46) +- Call to Delivery.Ack blocks indefinitely in case of disconnection + [\#19](https://github.com/rabbitmq/amqp091-go/issues/19) +- Unexpacted behavor of channel.IsClosed\(\) + [\#14](https://github.com/rabbitmq/amqp091-go/issues/14) +- A possible dead lock in connection close notification Go channel + [\#11](https://github.com/rabbitmq/amqp091-go/issues/11) **Merged pull requests:** -- These ones were the ones testing Open scenarios. The issue is that Op… [\#57](https://github.com/rabbitmq/amqp091-go/pull/57) ([DanielePalaia](https://github.com/DanielePalaia)) -- changing defaultVersion to buildVersion and create a simple change\_ve… [\#54](https://github.com/rabbitmq/amqp091-go/pull/54) ([DanielePalaia](https://github.com/DanielePalaia)) -- adding integration test for issue 11 [\#50](https://github.com/rabbitmq/amqp091-go/pull/50) ([DanielePalaia](https://github.com/DanielePalaia)) -- Remove the old link product [\#48](https://github.com/rabbitmq/amqp091-go/pull/48) ([Gsantomaggio](https://github.com/Gsantomaggio)) -- Fix deadlock on DeferredConfirmations [\#47](https://github.com/rabbitmq/amqp091-go/pull/47) ([SpencerTorres](https://github.com/SpencerTorres)) -- Example client: Rename Stream\(\) to Consume\(\) to avoid confusion with RabbitMQ streams [\#39](https://github.com/rabbitmq/amqp091-go/pull/39) ([andygrunwald](https://github.com/andygrunwald)) -- Example client: Rename `name` to `queueName` to make the usage clear and explicit [\#38](https://github.com/rabbitmq/amqp091-go/pull/38) ([andygrunwald](https://github.com/andygrunwald)) -- Client example: Renamed concept "Session" to "Client" [\#37](https://github.com/rabbitmq/amqp091-go/pull/37) ([andygrunwald](https://github.com/andygrunwald)) -- delete unuseful code [\#36](https://github.com/rabbitmq/amqp091-go/pull/36) ([liutaot](https://github.com/liutaot)) -- Client Example: Fix closing order [\#35](https://github.com/rabbitmq/amqp091-go/pull/35) ([andygrunwald](https://github.com/andygrunwald)) -- Client example: Use instance logger instead of global logger [\#34](https://github.com/rabbitmq/amqp091-go/pull/34) ([andygrunwald](https://github.com/andygrunwald)) +- These ones were the ones testing Open scenarios. The issue is that Op… + [\#57](https://github.com/rabbitmq/amqp091-go/pull/57) + ([DanielePalaia](https://github.com/DanielePalaia)) +- changing defaultVersion to buildVersion and create a simple change_ve… + [\#54](https://github.com/rabbitmq/amqp091-go/pull/54) + ([DanielePalaia](https://github.com/DanielePalaia)) +- adding integration test for issue 11 + [\#50](https://github.com/rabbitmq/amqp091-go/pull/50) + ([DanielePalaia](https://github.com/DanielePalaia)) +- Remove the old link product + [\#48](https://github.com/rabbitmq/amqp091-go/pull/48) + ([Gsantomaggio](https://github.com/Gsantomaggio)) +- Fix deadlock on DeferredConfirmations + [\#47](https://github.com/rabbitmq/amqp091-go/pull/47) + ([SpencerTorres](https://github.com/SpencerTorres)) +- Example client: Rename Stream\(\) to Consume\(\) to avoid confusion with + RabbitMQ streams [\#39](https://github.com/rabbitmq/amqp091-go/pull/39) + ([andygrunwald](https://github.com/andygrunwald)) +- Example client: Rename `name` to `queueName` to make the usage clear and + explicit [\#38](https://github.com/rabbitmq/amqp091-go/pull/38) + ([andygrunwald](https://github.com/andygrunwald)) +- Client example: Renamed concept "Session" to "Client" + [\#37](https://github.com/rabbitmq/amqp091-go/pull/37) + ([andygrunwald](https://github.com/andygrunwald)) +- delete unuseful code [\#36](https://github.com/rabbitmq/amqp091-go/pull/36) + ([liutaot](https://github.com/liutaot)) +- Client Example: Fix closing order + [\#35](https://github.com/rabbitmq/amqp091-go/pull/35) + ([andygrunwald](https://github.com/andygrunwald)) +- Client example: Use instance logger instead of global logger + [\#34](https://github.com/rabbitmq/amqp091-go/pull/34) + ([andygrunwald](https://github.com/andygrunwald)) ## [v1.3.0](https://github.com/rabbitmq/amqp091-go/tree/v1.3.0) (2022-01-13) @@ -312,13 +533,19 @@ **Closed issues:** -- documentation of changes triggering version updates [\#29](https://github.com/rabbitmq/amqp091-go/issues/29) -- Persistent messages folder [\#27](https://github.com/rabbitmq/amqp091-go/issues/27) +- documentation of changes triggering version updates + [\#29](https://github.com/rabbitmq/amqp091-go/issues/29) +- Persistent messages folder + [\#27](https://github.com/rabbitmq/amqp091-go/issues/27) **Merged pull requests:** -- Expose a method to enable out-of-order Publisher Confirms [\#33](https://github.com/rabbitmq/amqp091-go/pull/33) ([benmoss](https://github.com/benmoss)) -- Fix Signed 8-bit headers being treated as unsigned [\#26](https://github.com/rabbitmq/amqp091-go/pull/26) ([alex-goodisman](https://github.com/alex-goodisman)) +- Expose a method to enable out-of-order Publisher Confirms + [\#33](https://github.com/rabbitmq/amqp091-go/pull/33) + ([benmoss](https://github.com/benmoss)) +- Fix Signed 8-bit headers being treated as unsigned + [\#26](https://github.com/rabbitmq/amqp091-go/pull/26) + ([alex-goodisman](https://github.com/alex-goodisman)) ## [v1.2.0](https://github.com/rabbitmq/amqp091-go/tree/v1.2.0) (2021-11-17) @@ -326,16 +553,24 @@ **Closed issues:** -- No access to this vhost [\#24](https://github.com/rabbitmq/amqp091-go/issues/24) +- No access to this vhost + [\#24](https://github.com/rabbitmq/amqp091-go/issues/24) - copyright issue? [\#12](https://github.com/rabbitmq/amqp091-go/issues/12) -- A possible dead lock when publishing message with confirmation [\#10](https://github.com/rabbitmq/amqp091-go/issues/10) +- A possible dead lock when publishing message with confirmation + [\#10](https://github.com/rabbitmq/amqp091-go/issues/10) - Semver release [\#7](https://github.com/rabbitmq/amqp091-go/issues/7) **Merged pull requests:** -- Fix deadlock between publishing and receiving confirms [\#25](https://github.com/rabbitmq/amqp091-go/pull/25) ([benmoss](https://github.com/benmoss)) -- Add GetNextPublishSeqNo for channel in confirm mode [\#23](https://github.com/rabbitmq/amqp091-go/pull/23) ([kamal-github](https://github.com/kamal-github)) -- Added support for cert-only login without user and password [\#20](https://github.com/rabbitmq/amqp091-go/pull/20) ([mihaitodor](https://github.com/mihaitodor)) +- Fix deadlock between publishing and receiving confirms + [\#25](https://github.com/rabbitmq/amqp091-go/pull/25) + ([benmoss](https://github.com/benmoss)) +- Add GetNextPublishSeqNo for channel in confirm mode + [\#23](https://github.com/rabbitmq/amqp091-go/pull/23) + ([kamal-github](https://github.com/kamal-github)) +- Added support for cert-only login without user and password + [\#20](https://github.com/rabbitmq/amqp091-go/pull/20) + ([mihaitodor](https://github.com/mihaitodor)) ## [v1.1.0](https://github.com/rabbitmq/amqp091-go/tree/v1.1.0) (2021-09-21) @@ -343,21 +578,37 @@ **Closed issues:** -- AMQPLAIN authentication does not work [\#15](https://github.com/rabbitmq/amqp091-go/issues/15) +- AMQPLAIN authentication does not work + [\#15](https://github.com/rabbitmq/amqp091-go/issues/15) **Merged pull requests:** -- Fix AMQPLAIN authentication mechanism [\#16](https://github.com/rabbitmq/amqp091-go/pull/16) ([hodbn](https://github.com/hodbn)) -- connection: clarify documented behavior of NotifyClose [\#13](https://github.com/rabbitmq/amqp091-go/pull/13) ([pabigot](https://github.com/pabigot)) -- Add a link to pkg.go.dev API docs [\#9](https://github.com/rabbitmq/amqp091-go/pull/9) ([benmoss](https://github.com/benmoss)) -- add test go version 1.16.x and 1.17.x [\#8](https://github.com/rabbitmq/amqp091-go/pull/8) ([k4n4ry](https://github.com/k4n4ry)) -- fix typos [\#6](https://github.com/rabbitmq/amqp091-go/pull/6) ([h44z](https://github.com/h44z)) -- Heartbeat interval should be timeout/2 [\#5](https://github.com/rabbitmq/amqp091-go/pull/5) ([ifo20](https://github.com/ifo20)) -- Exporting Channel State [\#4](https://github.com/rabbitmq/amqp091-go/pull/4) ([eibrunorodrigues](https://github.com/eibrunorodrigues)) -- Add codeql analysis [\#3](https://github.com/rabbitmq/amqp091-go/pull/3) ([MirahImage](https://github.com/MirahImage)) -- Add PR github action. [\#2](https://github.com/rabbitmq/amqp091-go/pull/2) ([MirahImage](https://github.com/MirahImage)) -- Update Copyright Statement [\#1](https://github.com/rabbitmq/amqp091-go/pull/1) ([rlewis24](https://github.com/rlewis24)) - - - -\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* +- Fix AMQPLAIN authentication mechanism + [\#16](https://github.com/rabbitmq/amqp091-go/pull/16) + ([hodbn](https://github.com/hodbn)) +- connection: clarify documented behavior of NotifyClose + [\#13](https://github.com/rabbitmq/amqp091-go/pull/13) + ([pabigot](https://github.com/pabigot)) +- Add a link to pkg.go.dev API docs + [\#9](https://github.com/rabbitmq/amqp091-go/pull/9) + ([benmoss](https://github.com/benmoss)) +- add test go version 1.16.x and 1.17.x + [\#8](https://github.com/rabbitmq/amqp091-go/pull/8) + ([k4n4ry](https://github.com/k4n4ry)) +- fix typos [\#6](https://github.com/rabbitmq/amqp091-go/pull/6) + ([h44z](https://github.com/h44z)) +- Heartbeat interval should be timeout/2 + [\#5](https://github.com/rabbitmq/amqp091-go/pull/5) + ([ifo20](https://github.com/ifo20)) +- Exporting Channel State [\#4](https://github.com/rabbitmq/amqp091-go/pull/4) + ([eibrunorodrigues](https://github.com/eibrunorodrigues)) +- Add codeql analysis [\#3](https://github.com/rabbitmq/amqp091-go/pull/3) + ([MirahImage](https://github.com/MirahImage)) +- Add PR github action. [\#2](https://github.com/rabbitmq/amqp091-go/pull/2) + ([MirahImage](https://github.com/MirahImage)) +- Update Copyright Statement + [\#1](https://github.com/rabbitmq/amqp091-go/pull/1) + ([rlewis24](https://github.com/rlewis24)) + +\* _This Changelog was automatically generated by +[github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)_ diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md index 24b5675..f195140 100644 --- a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CODE_OF_CONDUCT.md @@ -3,32 +3,33 @@ ## Our Pledge In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in RabbitMQ Operator project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. +contributors and maintainers pledge to making participation in RabbitMQ Operator +project and our community a harassment-free experience for everyone, regardless +of age, body size, disability, ethnicity, sex characteristics, gender identity +and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or +- The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities @@ -37,11 +38,11 @@ Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, or to ban temporarily or permanently any +contributor for other behaviors that they deem inappropriate, threatening, +offensive, or harmful. ## Scope @@ -55,11 +56,11 @@ further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at oss-coc@vmware.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. +reported by contacting the project team at oss-coc@vmware.com. All complaints +will be reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated to +maintain confidentiality with regard to the reporter of an incident. Further +details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other @@ -67,11 +68,11 @@ members of the project's leadership. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq - diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md index ec86fe5..c0cd3c5 100644 --- a/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/CONTRIBUTING.md @@ -18,8 +18,9 @@ Here is the recommended workflow: ## Running Static Checks -golangci-lint must be installed to run the static checks. See [installation -docs](https://golangci-lint.run/usage/install/) for more information. +golangci-lint must be installed to run the static checks. See +[installation docs](https://golangci-lint.run/usage/install/) for more +information. The static checks can be run via: @@ -33,11 +34,11 @@ make checks Running the Integration tests require: -* A running RabbitMQ node with all defaults: +- A running RabbitMQ node with all defaults: [https://www.rabbitmq.com/download.html](https://www.rabbitmq.com/download.html) -* That the server is either reachable via `amqp://guest:guest@127.0.0.1:5672/` - or the environment variable `AMQP_URL` set to it's URL - (e.g.: `export AMQP_URL="amqp://guest:verysecretpasswd@rabbitmq-host:5772/`) +- That the server is either reachable via `amqp://guest:guest@127.0.0.1:5672/` + or the environment variable `AMQP_URL` set to it's URL (e.g.: + `export AMQP_URL="amqp://guest:verysecretpasswd@rabbitmq-host:5772/`) The integration tests can be run via: @@ -46,7 +47,7 @@ make tests ``` Some tests require access to `rabbitmqctl` CLI. Use the environment variable -`RABBITMQ_RABBITMQCTL_PATH=/some/path/to/rabbitmqctl` to run those tests. +`RABBITMQ_RABBITMQCTL_PATH=/some/path/to/rabbitmqctl` to run those tests. If you have Docker available in your machine, you can run: @@ -54,9 +55,9 @@ If you have Docker available in your machine, you can run: make tests-docker ``` -This target will start a RabbitMQ container, run the test suite with the environment -variable setup, and stop RabbitMQ container after a successful run. +This target will start a RabbitMQ container, run the test suite with the +environment variable setup, and stop RabbitMQ container after a successful run. -All integration tests should use the `integrationConnection(...)` test -helpers defined in `integration_test.go` to setup the integration environment -and logging. +All integration tests should use the `integrationConnection(...)` test helpers +defined in `integration_test.go` to setup the integration environment and +logging. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md index 6d3143f..5924040 100644 --- a/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/README.md @@ -4,20 +4,21 @@ [![Go Reference](https://pkg.go.dev/badge/github.com/rabbitmq/amqp091-go.svg)](https://pkg.go.dev/github.com/rabbitmq/amqp091-go) [![Go Report Card](https://goreportcard.com/badge/github.com/rabbitmq/amqp091-go)](https://goreportcard.com/report/github.com/rabbitmq/amqp091-go) -This is a Go AMQP 0.9.1 client maintained by the [RabbitMQ core team](https://github.com/rabbitmq). -It was [originally developed by Sean Treadway](https://github.com/streadway/amqp). +This is a Go AMQP 0.9.1 client maintained by the +[RabbitMQ core team](https://github.com/rabbitmq). It was +[originally developed by Sean Treadway](https://github.com/streadway/amqp). ## Differences from streadway/amqp -Some things are different compared to the original client, -others haven't changed. +Some things are different compared to the original client, others haven't +changed. ### Package Name This library uses a different package name. If moving from `streadway/amqp`, using an alias may reduce the number of changes needed: -``` go +```go amqp "github.com/rabbitmq/amqp091-go" ``` @@ -27,26 +28,25 @@ This client uses the same 2-clause BSD license as the original project. ### Public API Evolution - This client retains key API elements as practically possible. - It is, however, open to reasonable breaking public API changes suggested by the community. - We don't have the "no breaking public API changes ever" rule and fully recognize - that a good client API evolves over time. - +This client retains key API elements as practically possible. It is, however, +open to reasonable breaking public API changes suggested by the community. We +don't have the "no breaking public API changes ever" rule and fully recognize +that a good client API evolves over time. ## Project Maturity -This project is based on a mature Go client that's been around for over a decade. - +This project is based on a mature Go client that's been around for over a +decade. ## Supported Go Versions This client supports two most recent Go release series. - ## Supported RabbitMQ Versions This project supports RabbitMQ versions starting with `2.0` but primarily tested -against [currently supported RabbitMQ release series](https://www.rabbitmq.com/versions.html). +against +[currently supported RabbitMQ release series](https://www.rabbitmq.com/versions.html). Some features and behaviours may be server version-specific. @@ -60,41 +60,41 @@ interact the semantics of the protocol. Things not intended to be supported. - * Auto reconnect and re-synchronization of client and server topologies. - * Reconnection would require understanding the error paths when the - topology cannot be declared on reconnect. This would require a new set - of types and code paths that are best suited at the call-site of this - package. AMQP has a dynamic topology that needs all peers to agree. If - this doesn't happen, the behavior is undefined. Instead of producing a - possible interface with undefined behavior, this package is designed to - be simple for the caller to implement the necessary connection-time - topology declaration so that reconnection is trivial and encapsulated in - the caller's application code. - * AMQP Protocol negotiation for forward or backward compatibility. - * 0.9.1 is stable and widely deployed. AMQP 1.0 is a divergent - specification (a different protocol) and belongs to a different library. - * Anything other than PLAIN and EXTERNAL authentication mechanisms. - * Keeping the mechanisms interface modular makes it possible to extend - outside of this package. If other mechanisms prove to be popular, then - we would accept patches to include them in this package. - * Support for [`basic.return` and `basic.ack` frame ordering](https://www.rabbitmq.com/confirms.html#when-publishes-are-confirmed). - This client uses Go channels for certain protocol events and ordering between - events sent to two different channels generally cannot be guaranteed. +- Auto reconnect and re-synchronization of client and server topologies. + - Reconnection would require understanding the error paths when the topology + cannot be declared on reconnect. This would require a new set of types and + code paths that are best suited at the call-site of this package. AMQP has a + dynamic topology that needs all peers to agree. If this doesn't happen, the + behavior is undefined. Instead of producing a possible interface with + undefined behavior, this package is designed to be simple for the caller to + implement the necessary connection-time topology declaration so that + reconnection is trivial and encapsulated in the caller's application code. +- AMQP Protocol negotiation for forward or backward compatibility. + - 0.9.1 is stable and widely deployed. AMQP 1.0 is a divergent specification + (a different protocol) and belongs to a different library. +- Anything other than PLAIN and EXTERNAL authentication mechanisms. + - Keeping the mechanisms interface modular makes it possible to extend outside + of this package. If other mechanisms prove to be popular, then we would + accept patches to include them in this package. +- Support for + [`basic.return` and `basic.ack` frame ordering](https://www.rabbitmq.com/confirms.html#when-publishes-are-confirmed). + This client uses Go channels for certain protocol events and ordering between + events sent to two different channels generally cannot be guaranteed. ## Usage -See the [_examples](_examples) subdirectory for simple producers and consumers executables. -If you have a use-case in mind which isn't well-represented by the examples, -please file an issue. +See the [\_examples](_examples) subdirectory for simple producers and consumers +executables. If you have a use-case in mind which isn't well-represented by the +examples, please file an issue. ## Documentation - * [Godoc API reference](http://godoc.org/github.com/rabbitmq/amqp091-go) - * [RabbitMQ tutorials in Go](https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/go) +- [Godoc API reference](http://godoc.org/github.com/rabbitmq/amqp091-go) +- [RabbitMQ tutorials in Go](https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/go) ## Contributing -Pull requests are very much welcomed. Create your pull request on a non-main +Pull requests are very much welcomed. Create your pull request on a non-main branch, make sure a test or example is included that covers your change, and your commits represent coherent changes that include a reason for the change. diff --git a/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md b/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md index 1378d68..647cc94 100644 --- a/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md +++ b/examples/go/vendor/github.com/rabbitmq/amqp091-go/RELEASE.md @@ -1,13 +1,20 @@ # Guide to release a new version -1. Update the `buildVersion` constant in [connection.go](https://github.com/rabbitmq/amqp091-go/blob/4886c35d10b273bd374e3ed2356144ad41d27940/connection.go#L31) -2. Commit and push. Include the version in the commit message e.g. [this commit](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) -3. Create a new [GitHub Release](https://github.com/rabbitmq/amqp091-go/releases). Create a new tag as `v..` +1. Update the `buildVersion` constant in + [connection.go](https://github.com/rabbitmq/amqp091-go/blob/4886c35d10b273bd374e3ed2356144ad41d27940/connection.go#L31) +2. Commit and push. Include the version in the commit message e.g. + [this commit](https://github.com/rabbitmq/amqp091-go/commit/52ce2efd03c53dcf77d5496977da46840e9abd24) +3. Create a new + [GitHub Release](https://github.com/rabbitmq/amqp091-go/releases). Create a + new tag as `v..` 1. Use auto-generate release notes feature in GitHub 4. Generate the change log, see [Changelog Generation](#changelog-generation) -5. Review the changelog. Watch out for issues closed as "not-fixed" or without a PR -6. Commit and Push. Pro-tip: include `[skip ci]` in the commit message to skip the CI run, since it's only documentation -7. Send an announcement to the mailing list. Take inspiration from [this message](https://groups.google.com/g/rabbitmq-users/c/EBGYGOWiSgs/m/0sSFuAGICwAJ) +5. Review the changelog. Watch out for issues closed as "not-fixed" or without a + PR +6. Commit and Push. Pro-tip: include `[skip ci]` in the commit message to skip + the CI run, since it's only documentation +7. Send an announcement to the mailing list. Take inspiration from + [this message](https://groups.google.com/g/rabbitmq-users/c/EBGYGOWiSgs/m/0sSFuAGICwAJ) ## Changelog Generation diff --git a/examples/go/vendor/github.com/spaolacci/murmur3/README.md b/examples/go/vendor/github.com/spaolacci/murmur3/README.md index e463678..703b850 100644 --- a/examples/go/vendor/github.com/spaolacci/murmur3/README.md +++ b/examples/go/vendor/github.com/spaolacci/murmur3/README.md @@ -1,5 +1,4 @@ -murmur3 -======= +# murmur3 [![Build Status](https://travis-ci.org/spaolacci/murmur3.svg?branch=master)](https://travis-ci.org/spaolacci/murmur3) @@ -9,12 +8,10 @@ MurmurHash3). Reference algorithm has been slightly hacked as to support the streaming mode required by Go's standard [Hash interface](http://golang.org/pkg/hash/#Hash). +## Benchmarks -Benchmarks ----------- - -Go tip as of 2014-06-12 (i.e almost go1.3), core i7 @ 3.4 Ghz. All runs -include hasher instantiation and sequence finalization. +Go tip as of 2014-06-12 (i.e almost go1.3), core i7 @ 3.4 Ghz. All runs include +hasher instantiation and sequence finalization.
                       
                      @@ -49,7 +46,6 @@ Benchmark128_8192      1000000     1838 ns/op     4455.47 MB/s
                       
                       
                      -
                       
                       benchmark              Go1.0 MB/s    Go1.1 MB/s  speedup    Go1.2 MB/s  speedup    Go1.3 MB/s  speedup
                      @@ -83,4 +79,3 @@ Benchmark128_4096         2360.15       4299.09    1.82x       4392.35    1.02x
                       Benchmark128_8192         2411.50       4356.84    1.81x       4480.68    1.03x       4455.47    0.99x
                       
                       
                      - From a4377848e69c4045216a744e96dd8680016c198c Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:25:38 +0200 Subject: [PATCH 21/66] fix license ignore --- .github/config/.licenserc.yaml | 2 +- examples/go/faults/__debug_bin293364222 | Bin 8722434 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100755 examples/go/faults/__debug_bin293364222 diff --git a/.github/config/.licenserc.yaml b/.github/config/.licenserc.yaml index 0ea0bce..2ba608f 100644 --- a/.github/config/.licenserc.yaml +++ b/.github/config/.licenserc.yaml @@ -14,7 +14,7 @@ header: - 'examples/go/vendor' - '*.yaml' - '.snyk' - - '*.json' + - '**/*.json' - 'LICENSE' - 'NOTICE' - 'go.mod' diff --git a/examples/go/faults/__debug_bin293364222 b/examples/go/faults/__debug_bin293364222 deleted file mode 100755 index 976d22c5987bd7542336ee0dc8e5b59df63ae01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8722434 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 J=1g9-QT5 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.WLt$s&WtfY>d@DLj2?G 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�SOmOkL<8Jm&LkrcF$=8%l*!2mn3r?~D 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
                      VL!JP1C_qQZ#T00hR1Af^yKm0sv?9UHB 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 z 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%0AEeLF{a6Jv?Y^Ol^nIjn!6xjd zKj^&KNuQU7r}yA3pubi>>*jGmV>tgEnv>XZKfZT_HXNnSG!6>YQis%~Jyx*mt!ogv zG5Ra_UPbN8ct7;jA4Di`lyWswu66Luw;?-&)##D(rj2*gCwSWo`_{%4vBntVtc>oJ z;k%CJ&OCir@;f|7*VFE?U6Bn0(TA3o{&MJt$TJLW_CDF|&{=~FQ9l<-oc?#eZQpg5 ziFi!ue}P$J>=XU(1?a2)rLA(mYg~P7G)Cwnf7K^8yPN*6>nP91sN3V{YAg`%T9MZO z^6a*$$Wh)$()!;Ofw;!u+M^ldT?m-((r#QF)Bmn<`d{QZ5&n$5I)W^nenWQ$4d{O< zi~6L`>KhmEYwVpD|1kKjtwScJ{}s+C(y?{we}9(i^uOROBVW`1BC}-wTLItByY&9| zr|75lqy|O%5V2^}2e20)9zH~wI|KA($SxNen$qlJiDw3>MxPVYfYR{-}|9f%^Rri4b#U4i%a8veJ2{25cSI*oOlE{`Bq)$ z;N=3a*xoSxZIHe+G@iCke;YhQ`a7hb3m|XOvDK{W07Jh?pQ?Khf*YaP1kGmXWRs4q z4v!+eg>-Cncq{q9quPM{xX;{9A6lC++ZyBap$`AaKD5YF=lh`PJg4-b+o8LQce{~i zOCTPFZrA33@egBLv3=y#yYD^vQ0m9@p~y155B+;@AL{TIq%PE+U4D#Cwo^vr9Ig)7 zeW>c5`VFdnsAIPeor_+%cs^`{<}U>!-7aBmQgcmZ=#TL!sFx7+V%Djt8=YZ}(kFFo z2*m$VvRla3wxN%z^C2e*`84kG{5*wD;53 zKDFV>`r0C=uhkgMJD+m*+@a@FBFHaVL49H$yRoA&^rVOSPTX$$_@goycaE{wKZf&P z`l4}kh;=H>rS_DgSBxdY+~?7G4Z5<}+9Urig3Ya9O$;5ohfc`gm2uWfcTm~;T^@bT ze9PEFOY4ApMPq@727R??bh|Y2y)+&flt!y)%=6Gd-$mnyOXDUFjm*LM_*>B^xAsI9 z2li-gUt@iD+_N7#?AO_Izm@qq^RIiN3v3w8vub~jboE=nY{?AlVL#35QOd(Stf6CI zxF1R|oLw2WCC7n*-()^l+wb`<<~a6t@5xj?@Dddtv$)HTvDrG#U24tE)Wb~btHj#F zUXwk17hwmbG_z-p%ZPSI#?|-j0KH{$x6H zDW*)~r5j!j(4Jj>?sfSwc@Dvk$#V#Pl;=?VsEmX0gZy0C7=GCE>hg1&%a6%(2!2eS zL-1qdI)r>w#=-cZE>rlqx}TrXEk#~?jDzumUPY;=b)&hDADxSq z1ojyHpF=DipGAxw1G7i^YV;4?)BX<4OZ|83v~bp;UsdkEjtnFHAnEAbN7n_i+Pa{*<@UQ$)ALCuk1dk|&!xcYd)l-|LyJ7T@3xRfH?$6t zM>cuH$fNs#Pk(evU|1V`k&Q$zwWs zO#93OAB_ca+Ipas^ZR$DrstDRxpO85o=bt}Jba8g(s$^39b1s+v-{cA*obLgsHDy3 z*!B$=-6hgX-RE=nqT42_fy)Grv4m~ofKyxU0nQrU4_5)4Yzt$I*NuKSaHfrUbb5&c z7ZsfB9e!+!(+}aVj5Gc_{eH!0+n$$`CLPoKzq_s{d;QrlziASz&NaAw&}|N^`XJpk zzJ)!PTdYT)t7ARQ;5+@9`XJWL_T1~G;q*a;E)Dviej1MqPJ=eIz)QpFgXAxX=Q8@B zBn|qYLHVFu@J~GcPHKP7yCMA@-g*3;{{H;U->ScJvHslf zdYS$C`}KE>4>5#)aWQ{Kybk7HykCFkV*cR8{2lQ+7(c&Ve`m)QYh1s-Bmc$rcXk{k zeGq@AKVANg{3F}n=}#Z%?eXTn7`AXo{zsH|H$@t`qQle{!a3p@pt6E*#6Fr>Etnpztf*Ce@Fh2?eFxb z|6lCy+&t?2`#bqw8dvD=jPlaBLVxEsBM16BS?tx5zvEYozvCme2(G_#ihVfpd-|NX z*NI~$=AKdKIpV}2CqC}PKPQ&Ib4)S*&QDDo*m=~%d2K%?mcL{0;lsv%WT%a9`#b+G zSjXS_9{(@L-x<+h^1m#9CuRRdG2{L5jJFsoWUxL_#@MFxf#n}9V62cq+w^Pgf;62y zD+pw?WiSp&Ny{gVHt9{vw=&w8@7-OT)jRu33pF3rzrQrd zJYtA>s4(+Tnx~I452ZEsZswt4tE_m>YUVc>Z)%@gggK`w=07x#sxWsW{xyFS2EXp%!fzWMcyG=cz|+4o&Q+S$`@`ff+zMyEz$Zx; z9gR;6kF2qmICC(Z`_#9)zRmuhJz;QEF2*=7A0&O*)g8~@*Whnv9_w4WPhykKx5C$> zis{Eg!0Sva?_b`-`zcqy`n=Zf-Ln$^L|SAj=Y%ZwkD><|l^L(ICuYw?(uG$s!FoG< zl(Ss>t=XC<(pfAo51V*)d8lCg73SMeg3Tb^ly!f=>Pz27aLc})_g)#7X)X#n+{^uXEo)84;hwd?JnqO_yivZ!F!KHe^46TA%C7v4+>6i; z=EpL5Hshyyd;g2}q(^4-*GG=vd5(~NpOw+6@uBt#Y5r^gE^`?wyVeH(2)tx@NN4Ut zA4@^@txc4T_Jc%8phJ3&2wiECrhcNY}eP&-^@7crJ zf5utHzb5`X;hBHYT)e(>vUca^cz%-S^@JJ+?m^;u!sXcA?N42r-F=IBb=fcTy z^WH~>jsWpUB&ej!F&T0JXTgWpH80?p=m-gOL ztu1Qo`?SN;VD~q<`}6NMcXSPIKNGdw6T(?uV=Ko(b3E&>^u+;mR&_R;d85e2-T$t8)Fa3th%E@A|K2w0@?iL&Ji)QdRcBNG$hE+%&3vda1is`b{4nzZ zq7h+kz)L4(y%yQdOsns9bWMGkex`r&JKv*cf8xcyx0b-l4WrISi`}q$0GaC2K zINuanZTFMC#do##&Ahwy)SUUP)2CUj#W(p{Kk`xbk* z-k0?H>v%G?y>9f>Uy4669@@F+2DU2PN9GagNqgtJsHbjZ zrM;E=X-^I8d=KN za^Tc<+&b0%(C)>|c`czGVM~}Z#0F};ExT>kt@tJtzS(sd_PVydu|9|MV)@iZ0rfFu zIPGR8v}U0P$XxqayU8yK&$K8T-zlf9?I@_rY5e^D^G#FP z4=UcL5U0Ek`r8M>HG1KidEWxuX4#`r*w)d6F|DDk&~B%FZVzBP zd0$KWsRy>1^cK=LlfItx2GTc>zRTFxlshqueXZ)}JIpul?z<8DN;@=mV$|Z+==e{x zcIW+J>y)dl)~Vxst=CV=Xw^MVVagsZCN8v$eF$Jj)K?3yjPri#Ked0XqSEfW-FIQe zr+TNnE9&fbRSsS_x7NH94apY&GP$PRNLm;h7p5HP`;4B{yOs94a_$-{9o>&t%RAY~ z;6&tsZ3$ynWVge)$Yd0<8H@eJZ&2MQ_Hv~*fRGh z=S0aI_a*A$r@T^Ifj3?Qr4Xvl{t4sU#T&Y@o^kJbjOeGZ3$ABrcMt9;%{i* z)jZ^}0J)S<2jv9%k?1_aQvNR^l<>bi5Ko?QSjzJ2o4WlrOLj4?4@~&0Bu$ zSDwWl5I^I@PZJNY``Gy(J&|fRe&yM#BLC}(`fq1G;WOqwrNRB-^!bGDx%8Rzd-Bus z=$|_|Yoz+kdKlzMqy3W6a(GTN)7gN_WkV!Um?X=tQSkA+7?l#4rrk<~H>Up#ik0eg% zU+@<`!?5|b0(%;knEa!a+4*tTuqz%v;c<}B|mcLMzrbp@h&lkP^!WHPppa1_* zKV}c5AK2mWQ2N0;&hsYg`*)!q%LdVpr?qztJ$cfJpCC@DYxE=ZKhHNkOS<&qE9vji zkDu~B1qc235owpAAA7%)YG;PhkKSzdspqm!eH8oD$1->Gxxm7bn`!&p_j!Q6w)BPL z3-j-qw#a&5+M<9Hmy=fM{I7H3I|`03yqoax<;NFpa?%bsanOmayKOr8P8@LJN++&! z;!RF`fH*igzoznY)(hfLr(21=-wdv$LalnZy zow&}4H#zYE;&gs{kZ&*YJ%N1tknfsntQ~7QW;Rx42U`7;auyX%ny|>4lwWhoZ{6}h zR?clXxua)Iy*4oY`pKo!=U)5Rv^yt1Hm$~A_ebGLnTwdaT9kn-*I6Uxzx0K?CHs97 z{_>46U;bcD7XHocnIqR(*8DA2=KOY^h*HW^MtRDo2eKZU zCVp}zTW`5C^p?r;l<98dZdt?U7f`M;%V)}VpQ)=%Q&)Pwj`!Yrap@QQI&n`i-xiqv z%KI!Ub#)D8zM1d|>gplt%3E%??a03P^QNT9c;Liq2S0TL%~IDp}vvxCr_)H zKY4o1g3{47SCw5=lQa3lHPa^-*W`xIjLa#`;o1JLwCSb8d7fUAGdzD$&g6ocyB_Lq z>*CkTS2?^_!TU=1h`|3!hxg)q@q(SWh#isr65M;iJnqZCt(dZZpU+I5v1mkQ>B^Uo308HnHR*;L3s@iWD}Z;&)Y@b% zwCb$4GH9QLlU`U9$qnpeE#>Wn!QjXR!Qi6L216rXLS`>bzMJ z-T?nmWWB+Wbr)lcTJF=SqiqLIdRL(|9SElCF?WvnIZqd}6>SotX z`aS9_uT6X9gjdbnB6i@dd}M8O37HM0PkLX#`{IC)@)gv4B@`MtoiY=nGdI@!qtUq= zYo<7~%79%!d8;Q+0VeFghErfgvkJKCfFHO*;35uOBn57&LvtOl4S`Hxrve*wV52Fp zqPYdQ_COYJ*8$h%z;&g-UGLC52yACy7_ip^+wH)1r@)G447k2PHgHA2#T>X;3Y@;j zcqQ%bALJ)G?YTB!y`9Uw5mf=}t^9{*Q{+2Tom@#?J>*r$_oviW3s@tX`fkfdtuI=(nh=u?V&Qia3qM9Id~1P? z?;{p|2C?w{#KO-c7Je47@P`o#Kbu(i`NYb74xAHt}CHULY2YuM>;LW@6EJkytdg z5R1k)h(%*7v1lA17XB;5!he-m_#MQ;{|>S6Un3U&L1N(_A{PE%WKOv4n=c$+Sm*R@ zj}eQ`;AvFNNP7M)GRrX0kk9K@y^#HJj?rX0kk9K@y^#KKp* zs)Q%eSWYY&_YsRm6|rdCPb?arA{LEL6N|aA%BRq%=uEWQ9fxahy6TTJCkJGnorr((2Jg=i)*n-WU>O4PzP2Y;W zzMf~<@Qc|}y}y+HO>n=>zD@LgoBf*T{dW7bkyq5G$)>j*N!)XAG<}WJxA9%Z#^y@f zw!d!W-}V^1R^S)?1-87N|1FbVTy&iNPit2P>Hn(f|EedK)C8PLq_4ix8oqJzy&B*&k;)7(8 zo=JMnZPh1R9?tzs(*IKF8Kh^BZrxT*zn=R=(!Z#5AL+hD`VO`$&q_yDbxyp=i4Qn& z(1|TqK298P;z}p3BfcD2T9a;Eq`el~JY$UCwSO^~Zz26G{xARHzx)gISN+)(V)bW* z#Olwc601MEj#&NK^~CDWiip*px$U5oXW^F-3%{IL_;ZPce+RMf?<5xfJYwPhmw$nu z^uN)+xEdegBZQ&+i%R;RXYemx!oRrTx9Bg3?$wO>KQgH>g|0hi^A+Z7>~VB3Wh{BA z{)kO~D)g`W9n!xZ`bEDJ`a%Eu^Dl;teSiMNrs@$-lUsIo$uVzEerfrx^2F=%&}l`3C+??(I2?iuo?A z{2MDUx<)=uF7vd-bFFX7$B}vUsZXuzVc(H`eIUHQ&I;$-Uh-vUr^J zQTaIXZ?@oDXzu5?DMzoLqPbB0-2Io_LBRgY{`)g^zvt)-?)S`N9i6pH-ER?O-S9#7 zH0eH!AZhlRwUyjcrgg-dYVCER6V%xl-QCIkt@^g>E6fkN-*)Zeot=As{&$=EMf<-` zru^T`B!8{Fvfit`!x8omaJD_(#riPkc;i9lYYbnk-)f&WXP|*&K1b{Ctf_a;3&elq z?!hYW-w*2E?WjEz>Fc1D!+-kRwR=YLM{c>Q>^n()e4pGc*N=JU%JX+so(Y#(p6@?; z@pZdPEzk7#asO-fFVUIt)Din<+`Cka?l||qF8*aaxdtg6YH@jXWqk?vzxJB%3HIx+ z(OcuRUc{WX6CY;p0(z}-*s`+s5Na=h z^jC8FV^>bB2mSyBhWi}>-Mh^lHT~ZNpq+(sIg3ME3(?lJ zPnrFb+=Iw7Z7#fkHbWV@XloJ5b3lC3KGjYQpY{EGipLuq9)ITWm%blGIwAWK8gJhT zt3AisqftIO&{{UGw6$=w)jEa!TS49%n^R>qChBdQjF*r+*_*X&86T)Ulu5Sl2VQ-0zW+3Qg7zD} z$M<{dDIfd&!m)s{*%c4j_Z#VaKHms=*1CF1qx9>xmyq8^%FqNnIH8TeH&O02@LCJ6 z^#P}i4m15rqILxG8rd2u_cw-)C=c#auf4i8)REB`I;>}V|8}sPySh60wzck}JOtgt z&^>~#nl`8VS^aJMRo5L>{Bt@>vmTfR^4tK8dHjd(P`TYkBJ?BL+vT2rx=nS!vuW$V zMIvS&h&i*gns-%vhb7bi&ielJhe%&XIy9j=uni~p%1@c-Pw=Pq1>pDxGf zH!n|)(j%Q6FlVYL?;+~h*n^FBdoX7l_@C6L-N;5dw~u(g6_2zNZzt^HKV^s_gRVZ} z7M?d-@vf~_Ji49d5-auoUY=EUlYa~E+ikg)A`|VY)V?|O?_q39i1$I>|2Ot9yEy1d z|2Iz3cv3s~U(~66MuYu@^eZ9Y-&XrM?%4lk>X!6}uA#kS3O{OO0t|bgI{ALvTgE?i z@{H65X0xBu*mdoLE_d$63kzOnBPq`t$idt8zOMao^evl+TL@nx46qrN@3h z#2@eCKFV*b{Z4Z?I4`cvY>q;s+dnKG?aMOv=tYHBLKqJ{7gszV_TYkJaFuU+Ry?{9 zT)_*kFC(7l$mqvaIr!elp!qHZw**|l3$KZ=lK&-v_-j^XdzU}&`9s7p^6Mh6SRymt z70Hapfa?M-QBD}o|BdWV9$y~+F0egT)?PR60q1+9^^(>LtzPK#Y|V`KZp`HVzl?Y< zxQR2!_z?H>(%1H`2*f|^%h~%nI48i-{}bSF|5JOE=czn%59ITb_ld=s*o4gZ3Gk!f zckSc8Fe|Ge+6=vwr1h1>v#h%3Og)KrzK5c6bf4pYgaAxp8G-wNyLtDWI_|M0?ye2& zjIBM`ELi0eYa-rA3|v(3+##G;%>R|8@%89H3>e|59%CE$-$1PQg5%!d1ozttHdb4? z^U1Y`ntOm-w>I18OwW4Y>ye3I1j~KJ3GOY9a)0M=A9ACtR}r5e56SLCE%6#+;Cg{e z%p%O>|FTl#Q5w$$c7bpBUN`OoCzG_fq`7kITTPy;{P8|;qu};%XDj!0HAH7XtJvnX z2iXmp|4Q<&CIFWxA{6RwW%6z+8#M2$$$KGrvtIW6Ny^Z-!XH0bMGWpqa1(iiiQLP~ zov0_v%i>@51D*=p9UWfFV1&XkeEOZjNglu2@ z%#70b+2+#tn2b?-$AJ5X;5LH$7Pv}#8(deu>q!3&>6xS(S(D$}i;?vLV(95x0lIfS zk?`0A*_=bv|HSh6@JGJWtUAto1e*Ze-g)4b6ANB=7iin(Jh-wa9UffqB3x+nmVi5l zSn$Gohj7M&D|@ovgX_(A7PvFO6}<5J2oVpi?8!b4t~cLeaErhdyzq__j)@LuI+0%w z^8PTf+O%xLi9+H$V&Hm!OB^K};r|8pDxC?$i-BE0n|I?raBd)NA!$aZpwm|}EPis% zuy`N1C&5h|CUjcyKJEuTd5&*#Q!gI@=i}fQodRbn&vSWJow@De)GTc9%wh3U;77sl zNywhiE)GGjgRoy^;@l&5{0`bSW(=cU42z!twinpMZo)49AEzvNgSX8A?W2gY6jBy& zPlB7+PH3krN7-x69mbd3KJtdqE+`B5r@>EbC2Y1RTOfX#JC85BeT*L#KRb3<{0wx? zLMPEeXy*RhLxK3&?Dx?=Mj`XuVez-2r#tf#O~f66_>S@B-p zCpHios2|>CK4#nOX^$LimOe@MdoIwYoy&^%023ALdO|(_oBHV*do8-}0DA^ly%$_9 zVT}umtp>)}YSE1W8v$1D1-F{8N_c@(eGuQ^oj4A^$Fkxlfa?V=v64{D{|)E^V=~u9 zyRmfJwI#0o=sQZDN3!C5;6}miX>fG13R)F5pFPMcMIYV#50if<0l366!cy|CCGXvX z=bfU9(C9mq6+hWQ-r$}Dmv55O@1cvU(Z%g{yGpUu;0&YrKtoYeoS@AQ_ISZXcIbjaEScNXO1ctWN;JWf1V5`aR z?d`~VYZksFa)n+`vm@(S(4R?|LAvXY$!_mPCstt#WVcm!uI=3nofhOSc;OWjiafZo z+q*ot;>)%9&EPhHD|q1*67oE_vfJA|xZZp>fZG7B;DtAlFy4bJyWQ@=_2#=C+BW}L`P&A0$24{fXhVH4A@Lr96fgc6GXNFU67w|355#GU{WgOMBY>0NUf^t_; z7GQgUO`IXb_&>HheqzZbwv`IXvW&8TdlKA4gm9d)n6iL>8vMjD z!qE)MRvtfHeg$o10c~X-Z3Q}Kp_4d5IGhnbbD=DLcGml7E9J<14s8W`QRpQ)iO-eU zcAI)KcAL8CnT2d;5_q3DMA%RLq}y%aEcyUkFK~&?gcklED#LaT?&rF8#q}ln zMv-SO`T%Ye+@AeqwlC2Pt&KLHJ;*D?ZcA>+;zTz2`w74$HV_)fdlz}189eV4yA6%L z3z_&mnejewPlB6RPpC&1+soo7BbVW0zmthCof$s`{%P=;&!=xh7dMy1Pai8A+-}4F zpmrO+&h%x*&&D$2XP|QyI*HYURp??fx_G2)XuA!rE8hWjoBZBB&N%Q`X8djFMWNSo z*pYQL^j8q7NcY<9t>_xx+!)|*ABD~l#-@T7UIk&92Um7`vj{8vH~qA)B@`leV(@3ff97ZDkE@1v+P;lkgJ~j7N)UE7k9# zt*l1ot7t3Gi$X7PfpKY(V_(t9q`$oq*;W&HpEyT&hk1f@yNw83#IZBhcw9C(jb}0o*9KJ?}VkBc0Idu=(skUMY6l&3_L0 z&m;hs*iYC;-VyT78$=h$JH>7*?-}S~F?oY~65PaY!Y<}UjxmlMJBTiVGpN5^gf14M zi{PIIKe3(A&fLfm=0%z2 zZj;~J~yu zJUt8N%h37=v_1~4&yscudZ+v&IyLWg@*RBJGsMt21)aod=(d#N3vzdcZ^ZepfO{jj zi@>b`S81ogW6q*)D(Q1czn}DVq~n+TjC~lLA@V%k=VuL=0KG&t-$-iWTSv$_Sf1PX zd)yC{SV7tb(vV?jHR*-9jboKwMf!Tuk&8+9=QfT|dIjmVq*G3l9=WP9oAl^nd)~XN zx-|YJ=IxWuD|qHxxXI@#p7}0r^0|WNtKD_KTatUPyz734KcBkBkkClS`FYm^p1R0- zfSLbSzdUj1wEzR7{&y_0iZL$Q$2tJ(1N)fI-=cK@mcg@F0RUP*n{iMm+@0{ z=_RZKkY5*gG5q7M3zxAD08Yv}0Calx(RR0D-^=N<$J4)^LB@x$1F=AS&~*TC2CM@> z_XK@UbTRE0{P$c35bv}D&Hr~}J7VW}UP->o2up`p2LRU0?KcxQ0T0}u>j2O;{T%SI zjr`w0ycpOe&|W~8$N!a{bpYU!b4v}tuSX_=5o|f3M7V?Wb>N+-r_ZY;2JVv90l;x> zadK{H4SBA{UdA@(ko98XTx6Y%y!?a& z_Q7qNnosJa{@rx|aFSz-dEk~KYrzZe0(R(}2UqswkOx=1Xj}q~A=d%id}U8MJh&>?q+#+xVFTCS~W1^EbpG1CUKBZxa@TRa827_4WXB{fJ1IskbO+CErIIL%tXWvv6i&yeloO4kA4@1pJFV(S3#lblb|Isj|s7hMM+FX{e! zt^)v*oKJd({_hNPMD^(CdUUmxu!jF;&A>CCB)WaT#(>p(!L25&5?(>+Y6iCn-1Kz-7gu(Bmj~CI??!MpfSZS|c-H}3T-ojI9$as} z4dAW^_r2Bu$gc;y6ZN!%+RIo604K$6L#J;I`n4MU%Ec$hzJzrEa0b|I=$={y?<=oh z9ROU@PFGOws>@ghfR6!frQ$Nz0mysMwzA|3)&byW$hNZJ3fBSP@1kv`9GRC4u?_$~ z#%@ESXAZKRMd-xOKSbEid|&!}5^!cdX(lvhpjW^Qx()zc*U#=L2DS*;-N5dH?k>W1 z{ l3%d=?q>o()Y#y+BFSvHXR^bgYp99{BiE0Ozu?_%^E32fBJ&HVY(e2IT(?Xdq zWgS3rQ~ufH?w0xpQ4M<=u2GYIsiBWbP>9z-noKx0PqIYMe?}fbpUW( z`3~x1M;Hele~)zl*9OXNw@WXbbpZHH+TLT(Im+0yiaJ|?+$#vn`0wJ%Zg2JAiZ9pS zJ_7Dxa0M^CrGzCOT-oi-9$as}o!}k0i?+Vrdz#UQ-$?xrn z$a?%0t^x10Px=V{Ny?S zv@d%d0GuJ$0m$cy)&an~=sEy-UThs;{4WMy2Nx3~_V zvl~BH*}n$hKc6=L@6R&l0ftZ3_gJ!1&jT=zA7V}_%)FNN<7xj`a-P4*GUs0Ips(%P zXvLqfvf82{M{PwgWC;ma&H)WLz}hFUw!-r)(Or8>~#X3yBY)= zh-b4O{g9R2zMj48G3e&-%$fOi=7w+Z9TWdYiH{H$6EnU{?lE)e%Qsr%q0e*IYUr~k>!S2s{trX96Z(ujV~jz~ zKC~4)S3`%jJY?F3On=6ihfd_sr!q^fu|vci#1n~uPgD^q_&+lcH*oBq|E`sN{z-5Y z_ki;h|G&q7cWtm2T0Q%j-`GbCzIV<;d((y^@2h;nSrg3admTLeKLJhy&z(Hy@|?5@ z&_A)8{f@hcmk}?8pCyFFJhLyZk8=VGeYvdbW%Yd@+^fOW^GWc&OxhcyjUesgq$St& z$m`^G_CB@~L+cc@v>);$d*=Gr^|JbY0PaX|7lCWm^}s_%`o2SYCh2oYPg&O^&(mAc z>&*n{X@8~88Ap(LurQ;s@EzJ`329ZNAkTT#~lh^GXkGwdZPRQy)XphHgxJ?8I?jY*q}s*xJhHXxHtu>%DHQxmenFJMG&(I|Qws7TR<( zG5EdUn{!fgc!oxAk$rZEw%tzKw$BcML)&hrZF7boXD@C0`9A2LXreuDBrYKaU%IY+ zt9{U^ekAZ5?RYQkx}A2t_XhCvd=fnBwVgI-&LPnT?Xv^qadHDPXds48^pMj&7CY_3 zeV*sE5BFK^MeW0Vp5<*H_L=ZtHnPt}w?|oV^?75`+Q)3#hhQes9z)ni&LEoqKI+Fu zTU2@;d6<|rb=_ZV*2n!Hw9m^`t36Fh?H|{(H=w~;6W5q?H@?(T&R6004}%5HCd9=P7t+V&#$FPxGn1>N;R5^OYa3&MWC((+hxvDaYg_*bN&vzo_D}KPAnL~?y`Nr=0N zJJC#BPYhfyzG7k(fwkb?Y}PS146^SR9M_LE;{@pRF+UJxo}drhD7e~BA^v*sJ5%-u zxp^`tpt*rw;Iz*|zEm$Z*_`pBU8S7eBEOWef%03*J~ieC`oKL2u6!=7UH9!OjY~&e zc%!etyZiI$gZ9$DJbwzBCz&5O#XP}Da8H5jo@YDB9QMb3S0~S32}jSuamy{8pG%rs z{!`2!M44wewS;mnhSmbYJpMP7_xnPts1x>lxbo0>hdxIh+C$hoi}HZi3!b~~-OC;j z!4>;*&oScCgqqxT#h_Sz@I~yg*;d{e-JnqUjI)5uX0S~|NR70 z2FZhYgJ>Z!xKVI*o-WE-_LJzN^vjHe!R^W8|3m`s6Eg_K>0@EWt-wXW=^0NvmKYdw zuC569LjKR}r)%_FbVmW3ORV>T%Ogy5VbO75jE;+LHn4tTy%*eg!dT&@$ya=X*Ox%9 z7mx>Vy}%_#5pwxIqcq-ESZd_?pl`U5lVVp!_wzp~pL5WE2l;{<1y^g=Dn}18N~u#f z&oj{PBLJs0Zmn1M=8<3d;Q2{MKTCc|{fwZO$H@=eQ{ZZ?Tj$qw{^=C+b^nO|X}ntl zj{ct}U!C<^$@6xe&!FdLDEsMS>`^<)z5wvgfUom!TEjj)sx*FP7JJtgm&V^_KgK)9 z1M!;eciVvJ->I`iza27dz?Ih_WYs|(fv5HI#4*BA{-3jLP)Zws4_Bv68-RwpU$76n zli=z6oX)`Yoe2zV1Hcbx1JFF_>;=*JxhS|gKPSJ$J)w++Y-twtxBhLG1pWHp{T0=MG_|Bt=*0g7z9?>m|4d9P=t=MB$`Y~-Laijfy9 z*v2WG;AdQcnVuPvMHWh-1gG#W+C^DxV;Q-yjcS=Jj(G~QiG(J^ArZ-vDxO20h=VL_ z;S8JL4RVl-ZDe5?N9-DAXr^bn>29b7dhQUvyPxmvKF#g!+sw>+Gm7Fos(#h?ob&zt z&f#~@|NHx$!*l0}-0V1z02>9Xbm3Z{W`oTe2f|>t!75$2Ak-+nJpHQN($5CJ>->Uq z?oX`;U&nI?b&`3i^!eCvV2wOi(G$FmUt4XuZ1>SoP8%?Ju8`+41kUVXJZK@mKJWZ; z+5j?kmzY;9@>@e2s76K=RLT1d(gu1w+5kKSZGithzJQO(JiqWK;5UA8apv2JZrZ>g zZD6v=N-n*{abOPp%+eMr&`UXWqOQq$(9ZoJXD*C5e#EnkhcnPL<3$a9N1k1?_9QjO zao*Pqztg-g@DISt-rAnzxr)1#!PQ{fYkoDCO7BIw?2(b9Z;rc@`eiJI*PejJ8D}cg zCX7Au3y&OIWbo-d$UHk_Wbcmi9>(~EKL)?-vbDduJ1c)=|06e_!ZCQ#w#mjW+5ZT? z{jay4x%g<5ve#1fUh*FWtGM(&rLk3(-SWjpjICea@m*fgx*;~oT3|$FVBJ8zvd>Ns z@7ObwS7MmwL5O(SZQq^278(6+`7YhsiL*u>ByNg0ba!VMd*&N<6u;cWU@^Ng>70vKnd637XYDXXs_)rZrw$7v>=>lJu#ENAKBXU4V1Gzr%Mw%0B-p-*M*2Ls;Ic{Iewg{?La$ z|4TQ&H1WWZf8Ht61HQ-U8`T40gl&LI#jABbX9zIQtKm0F9ufHT-6X>I39Tt2;N*j% z?=O)t`keWz&i6~L1HQ-U>sSxK^SwNOgg9sJi5#6#5nJLH-Wa@2UGJf;GtQen=lkIK zX?UEuCp_;Vto4L5CQ>HZdB%s(C-a{;bv6XQ)_NiNF|mIB<(prgaLUVjaLTT^3G)lB z>CAdALfW;AZ~IT;+a4hw$&Cd0Wo{AaKwc;KcBqYK)>lTZGoDB%%s;e#jwoHYR;a~b zmmQhr-9+lZ)`C^KaLrIqeDZ-n$NXRK<5xOUnRl62M44CYg45bdw#v@Bi*?&>o7R!% zW^`78`HjJIjW~U`cjnE=iB*v&bA}ka*>xBHM+7~2=E)o(syRX(dDTKSFT8Phjoosr8NZlt`b>mYc(Uh(!1DpZIcJ3+H^Dq%k9k6( znmK79{{NgaLdav^haQ+u>?0?H9CMb5>{5Q2_G#+M zhgBbt6FH_0q*TYjmxB*Lex4ot?_}O9XA&Vhk_4Lot90RfkWG7au+#xCP92ckFj(dk z5v2=vOdCxZ?3XffX`7O}33dal(uGSx3Go%FFU%dHtBfJwqTq}zag@2|uHE!x?~nOJ ze3@||%KUX38Jo}sa|70ealiNbGj&cncj}$qAM=XPBI5@9A^6RiBcbCa?nlZiKX|Pl zc6+el!9GmutLPd$tI!J1$tLy>JnB0Bl4&yRi^9VG*SZHwjG`Y+fD4ZcO%I5v2<^4vmVhDYs8ixskn# zO;{A0Fs-wq;LJKJI?H>V@~D^a7(JQ#6vIv|gq>JygnWjPF_bP_1Rdq{V`iy`lsz=zC?b&?K zhkp-#=X{cG>d^@GXfb^@z*E(eW5(+g-|>6-|B++9--Ws~Hl@cf)fJ~7(|b*VPcUY8 zg6{&~0k!K{c=|CgX08zlgWU$Jbm7{dR)ftO%QnGofK|G1El{(;(vLZE({qf-I@mR^ zN*68&HHfdsyIWy?v5b8NIP={=>!@f4?~iqqd2i;|^ZhMhm$8UlMm_HjUh}Of*2Vi{ zz2Makm^zp3$M_!-3zU7H_g71KYmie7Rq6kr9~;aoKX_-{o}>J;lpkyqtodFP4O0Go zkMdJzbLt;*Vl$L~n(|jt{t9H2L#%yb^_0KYqx|p`^kc|POkqzlN%`U5gI{)=vdK); zQvX<&?a#9&+u(fl(koWq*>{YXJ-Yp2;%83!H_!eI`EH$M`!mY2KY`xHsi))@B0t9l zv^vx8NKa;7HioW7plL9yrE~^FL4QU*&UiSC%pvL#n2@j&&^XW28pG4`z3jYf5bOY0 zr3*I(jTmfRUG4+h3s&jE4MRiXD>6swp}gI^UvN=y=FEmDXEyAPd(V@Mp0e|@F7oW; z{SK1P05ba1Ws9Jroc>I@;{V_6AkTIPoX&I5`GL_f@~eEp`qV~!Y9&8-QgiI3I09!jooGfKmNVhw4ZW8e|B0u38IHa>PaX6e+Tl~p*EfyGW}Vm zu4LzB4dCl}SHcL}3bhz~-n^_9Yzxyx7rt2XFB@; z$lO^)<_f=H^zFwv(_x$E6nhyNxn_R0vkZ0-tkR=kH=zxK&8y1`VCTUqUAT2nCM!-tQd0v%Ft$_rck#&3F^~0`N5lWj>9@@9sg6*r!nf&DD`Qc_39ku zn1yDjPphnV?DTr!sp`oHdKjjjASZ;Jon!W0DrqNeSJ|VyIP$BUb%=e#$j%D!i7VK0 zq{E?U@|}Vv;afs)>|4qPi@xOR_kHI%kKu)=_9vY8HOTJ(?+g5W@Mh0Z-@}Ew$ey41 zRUag~s{nCXn=9l*`q5nRXHcpu@c9VW7) zy}XBRe&OGR-<<1kavsA8pR)%FkLT_a9sEqswU>K%KRFRiFw)>)@Jo%{}??;*-C$UXt_&fX>YB|3O+hlqFfBd6GR zM8{j~MSkHyW-oGrIP`aCka+eYKd1OU_9#a)dz6YF3f%gv;(Li7CVo1D?+V;{jrdUi z^|Z~_0PRn)fDVqe&p|->|K5}V}qGKf1$+LzkKfn z-MLf#@Xv-SAO2YtXHYXIzr&pTF7xwZxyK=WpE$AuC6;63Q&!^G`INi#YR)D9Y~~zoN54yF9R13^^^MYRInnPRvWC+3 zZ||nuTYZ^l{^zaE%rpAhV!hKq`QMGMb=SjIu;i7kx+bgSzi`hzy4$KJOxc|c`d)VcxkDZX-NMm^$HvsYhD_gwd-LZXw)Hn6-}+rhf3hzp}-;#tHZG%(%PN zlm2z$s54vLgc~y$>d00X;f73@I)ct#(fuh7o;tAALAW*(roL{q6J|_z(y6msZG@R8 zJKR}yX{Oucc!4LlDvIrdt2f=#*;-{%T<5dMHG+)ns|u5cUS zA9aOW3ICWY+(P(6u5dHq54*yRgn!%>ZXo`p)y6A3o_TOI>H; zJMDQWZQttHs}JSbx31HsH!|(@rs-R@1?2Z{T!A6?U(0a@G!h`afrHQoD= zje8$)Do?2^?ynQ4GA+B}t`VnlExF>FD4W`s$@7Q7sBDWa%nuT$vMspcetqRb;W%*aVp!4EABnSsch4(xOY=FwRKarcY#saCS90!5~s3FxZ>VH zoXR%tihG$jm2J!wcZoQaZPXQap87-C?u_VtH#zU`FP>|9DTE`Pr{XiHTUUyk^8uE?Qzwfzpv}G_Ix(|{q{Tb{q|h$_gm`5 z9qNp;Z);zA-L_wPeXGiMi}BETPkSNmY~o$o_C?YHuiu?Id+RRm-?q;azVP~8?D_BV z&Tace!hX`v+|qqgdaqjp*p=L~$Mt-d=Pl~UhZN>lX@B3HM)>b2EZk6&^?&eum$|*> zKDx_9egcD+xZj(*NpwfZ9WcUu6r4$S?pOjZz61I+$-0}tU6pJ-^PakR-Ug$2lz4S# z$>cj-vcU+a@|g5jxranH^Wt-4BkQhk{MLYzO^H(u>crsrw5$uRa^A?uk}ZH!PVk2+ zBf4;F=DOu8c*d{(xr+|iwra$hpCsp}4JC9S=%gYey8_w2T_{`Sab%P3$Oi8v``^1{|EZB(o|e5$n;*Pc_#Rar$yU1a9>M3o z$7wLSx5&ZKj|{$g#;LbXeL!z&2mjH?A>EM!-jSpKT^N3U1&s5*k2hJD)edQs>Pww_ zaE8tmjOpL|zn$~}XI=Ai-EZ_H_ci|eD())ceQEr3@?bq;)&%NfzBMENY42<7(*01h z%RBWYmexL+7jw_rTe`3D|GfP8`x+nouP6G*xvz04y&inv-1+paC+n3?`Z3C=_h#EZ z`ZMkgv|o7r4(m9rPZWQrk^jSg^YeFt{5JEybkhFyzqAl;<^OAAtro=pq`Ar3ZfvqX zsB-FmMs8ZCC+jTf^tUr*d^7hoUVrD6*RQ_os&i-KcfIq>>)-jVvqkT1EXn+7e)qWh z8~Pt2-#>No{U;i1_+w7B+p0T#e*ms$s4i3KK^}D54th>~&PWrbijCs0;u;k^E&z0Ov-{<%r zKTX|U;D1>J50BK%ri~t`sO?Dv|)SjThQPC0F}LdCwT7Gonz&5nQ$re z^6PhoxaTpYxb!`by8m%&iMt(>e1p~9jtTNek;gIh+I6?%Z>#P{ORS&N-Hx+h=E#2@ zIqf|2Kir``IQ<~H)}BVr-HwD=>pQq@Y%k0mU?1aub?$bYgJ<^SZpWV?{#CEL9m&Vd z|GyXE=iXR{-+i~ETc;m+N}W3Y7ypCPfAjyEyB*#2lzR_P?snWnH>!u*{D!GJYy7T5 z8$9zrgwTQR#R@GGUcv5dmA+&h9kiC@-t9=(+|#(dO!`_{uc{}`-Hx=4?H1(H&uV_V zMf!i}aoz1mnX+vouS}}vo4iwdQ0&e4)MS6J+vd@ zwyA@vx2ktJ_d90l-(SV9@UK8W0M$X2@AiEy$Dgc>|CzRQ^Ft?nw%Kc{b+swef4%pV z`}(whw#}SQZF{?l=epDHckHg@{{pY|Wx9>$-XZAhg;BP@l~=a^k8(Ya^31;b$;$JW zzd_}B()%4>I;A{s_I}4d(*3;Eyc_C=^KRIKHFFZv|0X(5>dZI#e#hVX!6$fEnY#Tu zu5y~X{r3Hi-uFBHrJvxPa=+tu^IHx5k5ECML7V(&o=(3J_d8a+HuTl~u7+q==*$N- zuD_Sxir*Oe>Ooh-%D;Hj`1<78l3ULAh4stqlU%m$ZeDiwPaON`pg;XA`{=QZ-L(8s z^xbsh{mwrAt1lDg8+bPS4#JGF*|2P=>3RUc zZ~ij&XP2#eU_;~ZF%PmE{Zx8!%Ug5=8?&td} zXObFTm3_m-3y;IAeEskyU$X8AFTTYWDYJ`LI#_q{y7QfViL$~gy!d*cMi(#N4MJ-! zUU$Cj@CM-(UVLRx7`r%AX6bL$#p}-3zJ#tXS@(n&-{K2=^W(YaM(!Py_Z+;6>vf7T`IKD-a$wXw&ux3PsNZ?+zc z-zdC;5}p;l$wy0GxSjPQM{eXeU`4kBRz&uE@Z0my2=)}LL!!|ej{n{7!M6*a{Ky?Y zRQP_MxEOKYOI+6eoIG}?0@x7-tX<^9kYjg2*p%#!V}IV*?D&2C0laZ|zYpH59Xh=3 zv$1pR(aA5~5}{7#C%{*d_6dMz2brPdMQdjR z0%P<2*ydYi$oImE&H-`!x`h#T@}dY)J7n?dXaumJ$$*b9K)X$D&hR_VfR zVk+o47!oyI}1&>EK47&NTMBD1&oP9I_odLHO>EgCDqH-4{k!*|cDb zA=&rw8FzdPz&Z9Z@I7b*Uwy%PAdIlsCFnc5@Z6R5dB=7OT-I(8-bna7b@@EsqrnN! zw_W*Qhida|vcN{+-5ot|Mf=Y?-+-gw9NTr)Akh)*OSnJ5*b1887(6*PcgTs=pSR*w z=hL?9@EUvT*e13m*r*iP48l`jbBEl-w%^*D=QoMXU4p)aIk9|I6ZJvji`YoP*M>d& z*qOlXHEdJLupdrhN0cOw{Z_w~Y~dFOVT(%CFE6YYZ(ix<_UK|NAcb9)_XhZfGH*)RK;EN)6 zclk257ZA9toi^XZcNec0>Kc5Gu8|R2yo}G-s#J;igx^v%Afjt_0p1LNF{h7;Fa{98hkDTN@vgV-K5_FF}AdU9-M$_8qtX zHvInt{y&EQ+u;9s_!WNye>-X8q^*-yPFg={^Q5JapCa$0@yk|f?6P&ldL=cD{3&R% z#5!V~l`6evJv{quw|^8F{}dU2f{b?}<73G9Eo3O|Au_z`%4?*DNO$TC<#;&C*f(<7 zdWd}Eqbnb#>=>jmeTDWLY_?jsvrl#9n$B%Resmb#A?l3q6O?Zh8gcPzez5G~Rhh(# zjOZY|1MmtjzF}y{#jEjp$;Io=w;$dT~gG zyk2ney7TRZw+mk3#n%gUyLdHT&$)Qr`F6nD4zKXy>w-EZr^)(B-lP1oev02+@{7Q? z+jbdS?914~s2zjtfZBN;#OAoK$@&P`PvSpie%1f|G;yCI&bjXwIk6VnWRNxqZya7@ z{~a5~=9qn3^?$wajKZVm1Uw%l{At43dw!9dXrxUx&?ejH|5}mL0yWeBjnXFBf0r%s z&%k#JzU&>p@bwWlMqEMvS5KR)qfH_wi5z1;zCS^m9BFde8_bV54B2{k&?PyU;oN z6K1S2zcKVx&<|Fk^9pocgU;bK{Lu$4xhdq@HBdGEV?F)gWYe?j2NTT2qc2$xksm_7UBz!5_U+8? z9Dh%At9BU*zl04XM7muGRS@U9xbi>!J#5gGF5D)vHoz!Nm@=r8=c;Dx+QES_bG67i z*fp?97cKz#U0BJ~yiRgg!LEQ+x^O@FpQ3eXjjM!Aum$V zobJmOkUuZI-@yJnuOHKU;{EInqVE9+oIMB4qU-Pt{7*glFz`8j7&2o0=(-PG!yAX! zo`I&(_2v!c(;j^oJOzCiaudDix(8juzX!iP1x=#s^&9xy73ss^^X$XOW4{|+ccE+K zB#~oJKx627^@f#fI7Qd+7VX2x@1XM~>#ze|BkvG-_9!&+BD%j}9o99U-iN_|>RgVz zkJ{+NTIs`(n?kNV3=O?#9WC6jQZ>zw@57McRabK6a+Kp?3w5TMJ`DLGJ-6Zra7`&bJoc8hC{lUnkVz;?=xv%Ejx>w;J9mc!d{VJJjal)x2)f#p}+u65a}U zg%@8d)Z*gRyl%q9>&~|v-ZFTF7hf|Jl$;y6^E&cVKe}5=zZsw}1Q!8kH$e3~chWxF zZWPYz;K`ZSAt&aiefnsh@W$b_>!4cNXE*J$Bi$F~%@&pz5`*A4G^9ekeiI`Y_0Ub2#jOV&PelE|^Epi0{30PVB)M)7$ayhZ1AHdZlnadl0;C1@L%}Z8vu=6 z-8%EJsY_O55+dDRgI2+rc^&Uk>)pr%vc|zEO_&vEndkNE>3JQP>|AXW>#BRtPvr(JpM z8(<^v zk$oe|Q?y;R(5{+kSI9{s$L@#vbZ5(TE4h5V_`Httd5zWCJ-Q$|ZlqlyFND0v>h*MA z){Fce>HWGDp?>D*Tki?EyY=Y14gzO)L7nJ&5?u#8`Y`Z0x<*E<7G2k%Yj}00g53eN zqw8^W?eplv;3?2Gaue0)x(Z#xuQL_wHmDU{52NejBD#jpQ`h9NUx}_O&^2u9K(e8s4IP82KHP(}$IzYvdgw&kjP3^kMkv97eC7-iN_|>b#D;k4ovo0`y_X zO(EB=hwA9Vdaqll&Fhcv!;s-sS90ccl;feFI^&}cL%wsS!$zjg)RJEfR872lUN=r# z-VPS-*V%l}Nb&7Oc=1(1l`dY*>&9HXDxcY}OTwFgS9tMNK;^HphI+F}l*c zZpg*!&UY2w6?lagUkXa{?7yBnuOmP8qr1y|&syRe6gZvHU?-p`&to>6tMP@lSGca2Cd@bT|@hQ7&;$C=kUhiwdbH& zbe_0o#oIi_AM*C>6Nl0H5ITo{4}N3Y)6Z-?!VIMk2-XZer326Kr@8BBych8_t>UsH4t2I(3o$ z3<76YK;`JV6#0+84R6tT z9r+!sUbGHZ&^7W7k!Po%qz~QGhfO@@+bjI1&g;ngX!)X*TDoW*Avc9wI{`&~)=?FG z*w_<%dqsvt^Adfme9(tw75zUd`+JUA*pmr{SG~S9tL) zL5nV4&FlJHyzYD_;2nooc=0Vj^DbV^>v~$+*5 zU9?Z+B#~neLqoLB4eU@>({?DH^E%4+;bPxmDd#~aI_{u-A}@rz$a=;OWf1uTP``8^ z^G0+I z{~r8y7u12yC(yZ_*7;NI*EOK?dUTGQBy#L_s12Quq4U(~wm+x#iFNdeHRv39hsd*A zp%(f?&eJ_i1W#Y<@;)EiCsxxZR?#OSH-%ig84A)T4hF4MIQaOruG*keX979j?hE?F zO6pDpeIoL8cD&ul??CWmUPoD-{kn46Wf?@e-2l~rGxIv~a`x*=kre==G+}C?8lD@G zr+FQ+vU4>*SRYuW3s((Qxv-LH_Umly-;OU>5v2=P2~`+u-hN#QY!a-}g)4{33^s4S zE($gbR_Vf(LVknw*st3LzX@I#VSSK|OM5~D%Gxn zh4VV}Q!v+9ySvC=(VMeAokia>5IB1kT0z%7blvBnYxI<(Yh=Wx(e)I%hBpqca|iSi zx<1B!vByK#@D%78xrs@1J%O&5(KYMEjZ_&n!z zujX}aE?#%O&F}`{6<&N@P>1AP&7IegpR-@rK)+c}UkEM&&YV*i;as`h-m8W4I`Yby z*C8iXNBgX$eYVp++mO);wa`9?XrKLQ`{F0sudAVbR?$A;--F+rYnT|NeGaDWi=S%0 zu9EgyLHlf`eFl-&2sO|bj?+FlA5yknp7T2Xr=s&Z{{Mq=bX-RJL|zDak+G}kHEuof zYoKcBp0m+b^K81|b^60n-cJCXgN=gCo_W}X&X+xGx+zaVpXf*DK6GA%&MT2o0hOck zc67ezVbe|Co_(Tyo^KWBtpxmg@H=N9meMD-qVu^THr1|a7z#yHzh_cq9fChI!`&nn?w zPbd8MNPITRYuHlWrtGiQlHsS6Jy5@Y%0$syXpljsD+tGC!x`saizs@n# zU5ateLrj#>k9p}DK2Kef$6hPCZb8?`*+-7KYjKaW6!!yHi|ZQRKSI|(%RBfD-oXL+ z{s6i@;2j>2U$UA0D~PVU&sYat$nAvM&!GD&?BQLpe&uZ0?XSWAbMXHr{D<)W75Ei@ z2>&0G_Vc8DfwUvi{witzgtQ~%%a`J?k^ZZJeiFGy$TfE}9*$gL5ATY#e)d~$uOp)$ z8S}_UA)_7{W+`y zPIKQ;F0XUv5qzIQ<{u#Q{mA@jWPS?Ly+?8GF^ZFC%uoIHAscydGBJ_jjn5B^t4|03zvNdGYLuR^auUnHG+^L6LUQp&QI@>_S35c2I( z&e3S*ECTAvR@eDkXZAUVCqP^yanyx7WyA;1-#XqS-bZ{r@w{Iro^uKg6>oEHLJje} zFDHK6e=DK*W8$lbNAFJjlK<8N#ixj`ARfIr@l*a=+r)>~)BDRirI|BMO*oJ_5ETz===1e9gbQhnGX< zJd%ox|8iBvfBC`o>Hfo2{8-Ri7|-?HJ=I&ICx>&_RO?ohjj-?HJA{#ISQ?tEo0 zYd?kG@)CZ_({Islxf{Rb)@R_ijJ;1Z#dp+F?5?)?o;44R@U5@$P5Lb_@O^ahIruH} zU0mO&pW1Jk@2oqCC-7UIW3P1L3H_G&4iIX7LceA9UqjKS@LQf?Jv#Oje#`7jgc_gH zZ`o$d4>R7*GPZBfcMn4yJlE!}acLjUx7;bl)KSJkaBtdgnK@Xzo-wbMvB*z;N&2A# zzOT~gGyk2ney7MjOw`|I+@p|6H>&~}> zeA~&lo4k6-vkU6v`FZ;-H$MZvWqhCa8lR!xasxiJ_0Pd?8DHoSzRPdgZ@Gr|Q~ehG zmhpRj+i#gM=)X0;|{j zyAD?A!UZ6|3rinj_EjTmU{}E^T{s_Pvrh5yTV4UX3|8sF9kZrM8El>%I;`Zw0(%@Cq-!W+*5* zZ~HAjGr#31ep}(U;J3WZe$(b#^jqG*=WqQP_${yD^SAm8{gzko`CES5Z&`P&>I}CW z8zS2H!&&Oi%zp*H@ZlR3pWqV8El>% z?AZH-aNlC%I@sZ_0X=m z-u7G0KU?e6J-Q$|ZhVt|%MIvTzRNwlmoBLDDgBn~=)-ECf!}fseOUD~^jof?5376* ze#`hmAL6_G-29fyzKQ&n&D>1$x(Vhg+eQ4AkMT*XrcKvSf2tt)Asb%J>&9KY?m1GD zZy^bI^Zk|$ujX}QE?)N>DGF~G-h97h!>f7SsEgN~?>4-f@CGQS+i%(MYF;0DjB;&(UwW55MK!Z-C!&5AC!2zmnf_3vIoh zzF>epp%3cic{tJ0L{C2HLvS)@w)RJgLf2O;l(!x&ANCsuj_U3y7L`@cNkvb#Ww>@OHL8L z5y+(Y~9ehz-iUFf*;ZNFvDI|~|~qu+AvbM#xT zp--&-2KX&kQFkhzz;C&Nc3BQJ(taDDI@+-L4oiD?{Fcj*RSHIF!qh_YOZM_x4uJK8 zRl0E1P?ZZSna|sAIe}eW_?z5sc@4j@)o0+hyn?UZ@-y^XUcy&z@j3V{FYr$0-=yF2 z9DaJU&>H?`tI*1y6Tjv0xBZsg_a@|gbD*DiI6$50e~jOLI|sXwF8u*=?F^SW*quX~Qv18+CH!i#SRk{`0kSM$0~7q5Gc)CDiT%LRVRhF9~t z4i~RG-wt@&;q51{0rKpFdR_TyUf1s8b?4g(ZwtJ_i?0XjcJXRn*XH7N=i3Z#5MJTM zhd=UvQ+~_U&(LqViuQ@`@-z2a#uqwN{uca}%XmMfZ_#f#!1&{T27b#v#-HQ2{g#im zzX|=8SMd`_V6PvA!uSZ}`z^2FOR$U&pwfidhBkRlc=#SfvZM2rU@w+kVS?i~*j$w7eU~ zZ@K?D_$~MGPI}*@-*ON2vl|-XJq|(xPwBVZg-=T7Gw@sPp#N%rhJMR!_${}-?YA7l zuUS6s-;{pKRrp2WyZn~@mhpYwEq{i7%lJUYN}q$@a)A2ne~y03KH8A|4e(n&#%DR@ z?YF#k2fyM#q2KcFE8bV=x4f))yU=g>|53b$-|~XuJ^Yq`llZKk@i*9SS$DtxS<{Kn z@*lhWmG_tYf2ezwzg$!D!Gom>f0%Q}a^o3`d+4pZ&Gfrt_|V`_Lro zo#&mU63!2JVdfrZ8*ta`OlY-)vATpg0KaSe!g~*1=WgU$!oe%)yOFg%S;SWvzjDV{ znefhnuuYckon0>R&kS?_Z5X-d3IC^(^E1f59YS`PJapf3xQ?;CkzeGRyYI5{wRW0! z$tS!shy2>d$VYZq<;RyXT!Z`?!qv#Hf+~qO<=47y)+L|t&J6OaA0ywCzZ&^f$VYA% zxz2rgqb~Vcb56VD6W*CZe&u82oAOs8zXJIc$Vaa3xs>l$w)|QTPrBq2-kCuD=wsxY z@^kh;n6m*w$PFV`K4tO`3ymR%J9ViO*)t`0k5Rod)r)W`=SR>6!{G0Mmp_?&!|vge z?BKY+_e&-IN1uR4zxUz!C7!>`^8?N&c;LIR@&H-){b#t(_l$KP{s-{Ow@mk2-sjG+ z_flUjp1Hu;6fbZ_h5wPBBk+t6ULhPHoIRrg`4O8t6OZ{tMid$Hp_kuSguBB6$a>$I z0Ow1*z_}FuN0;DLco)7;68HPWy+quP5SKk)g1mN9_`fFkMOF-1@=FY}VevzyDGwoKMxqtKIe2Eu0U&8cyQ_;;YWy>Qa1=_&(x!&rZDW?5+P<@eRcH5YIbv;+M|cYFB(c@twq@cPD=8%&otv z_&Va-iAQfv{Lq94bGQ|~J@NBf(l>fS z>`7sptg!FJDDC$V{q@(wKL5%+!pMH4J~E7a-9HuVzn*Z(R)0N? zY~FKG*~kqeKSW;;rY{H~GmK32)9O#N^+ z^)p%7>ZgZYvei!yA)ESERJJL13Yke{Av26jr{C#z$yOgd=#s5IdH~tIxw7x%>H7}y zLx~dWPL$ssevzsEY|H1nb(eEueDrCb-lPq565j!a_O#R0Wc}*RrhjC{a^B^P-ka)0 zILz-hzu@nIH+_!A(lC7Cn;-f|^w%@=*SF2@efa3NXXv+Y({F#~0kZCI(pPWr+s@kn>(^Q2q98`t2F|?b~{ez(>D5L%)5Se*3oWbc!N7vQA&U#xF9W$Z+oD zZ6u7GC}X6~52MeXq0hcepM6{5UHIsCXXvwU(`R!R@x|Np*`JA#$L=b9=nB6b+USLwW~Ps2-pdYk_AcFq}N@X~%}=u2@t3+9|dK)!p6yt{dRkr^t_^jq|G zPQPWs^l?tVWy18OPQPWsLBi^{Oj!Mx&c!idcfU1s-m~BOyMHaW-})N;)|S7-s-Vxf zGxVX)pP?Uho|zY%p$~PQeLT~D>ba8qxBN}%XY$TIa~_ZSNz?yTeDD{)y5H3h-M)V2 zgPOO#&TqwsfAOmaT@5Qab638b+?lv=(*Mn4hZXQyAOD4OBlmnIpLg!Z#Wr^byWCLX zMQg_gk*;%^>?r@c?}Zi3L4TFA`5cU}VeGh8&sjT47mjzT^L9dc5E3D+Q#~MnUw|0~++#F@)j22102j`sQ2jBf! z_EW~rTla+#R(5IiY5aZWPQP^XOA`;kIcNF7_kewiP{VoafiS`bpiREFBL4yJ{ys239uCyZCHHM>tapTojyh=6F5N+~u%a?{WS) zJUQoNA}7|&+OU@Mv${C{9A2FxZEtc;CVgFe#N+&PcnZ!CL2iPxh4xmt6B7PC_?@$U zM>r>QiS|Za*WKR*=byvpc}^yI?2mCbB>s8(bDWcj9J>>$d#K?p>YqS< z2le=_RdQ!5@^rS7_Etjy?%bHqvlRpzMb>VD-!%xF_B3^-V01ocy^nLVIVbJ2%pY%O z@A(FwqhDmi#<)XmfM0my@Y-Ea1Lu-)p7N)-OWol090zaC#2zKg-0w39WX2oNFZS$l zcoXoNv)tnTpfyTg=H^jYJmwvJ8abaPZVy>|$WLHrzUSw+p0g2I$Jwm6bf#N^vrIpI zru23`pW?)4-rX(a-9p|i;+?Y>$!pKY`?9$U1X=sY()n;Y*KLn8Xl|W(Is4w-yo%q4 z*S!BRZB`I%`eD|?WPo}tc1(``?>Z~}O?Y57dSTfpV{pGV|BV%X2<#sVS zN|PK@Ctf9=SIOs9@_ChfUM1b>*C|UfNn1^jA9;kxLub6{47Sk3-#D3v;U5rL&>4E^ zdk*#PWALgy#-iNE!g)_I_@eM>&%_7 zW!ZoqKIc3iAN)4sVtx8tO@r5%D7@Z#FVER?HIW%#=N^_dwL~jPF>026EA$KD?h`t&glF@ zXkWztxKCbtOT5cP&wPc=ZlHjI7t7FG3;c9BJnL z?Jw~DM))p>Oznf{+@TO>;X21#Yu%7=%x7%oA6cwqX2z%p-@A2IcSPyJEkX+hi_J80 zoiPWVNH^Fnuu2zh9-1>)eBr=2qAt&C* zH{b@oZ^D~^*V*41rEab;FI!-opk1mivaY?YXVdTeI^pbDuasr4o_Acw_suct5d3D3 zWpAy?+Fx#R&L35OFb7}uoLBgCzwK`jmvinYA+Gyeq zp(f|tQJqKsoABnGISQ}pBn)6sgH-%=(vir>XGN1#WNsXH*s%6k^X~k+R+LK zoH@5AI*oogV^M8CN5AB)ww%>3|6iPM*9pEs$NSN5A2NENZuC2eemR%1K)>*)t>)+# zxqE!W-VdN(`1j#AXZh@nq2J>o`i0L^zvPkhpz{Cr>qGjghvc0~at?J==eU+w50R@illDha+fCL(*5;|R?;LqJ*koDj zP1ZYo-#%iUedq1JgUo-2ObeN>AoHIg^FJd~X%;fQ>Wg!BEa^_YpVC&iBjX0^AhQN?#*Z1kb4`oDOhJ?2%s50oTBk&&kTnTLX~IlE z<2+Ai{Bgi!$Ce4O<6xC8+!!?K!b)al{Sz4lI|5ee!VN=12Fo~vT(kCx41*m4t90Q8 zp#g(s973*H_e2K44uDmBeU zf|I|I-NiHhNipvFd!l}_o4V9R-Gny*ukKHjk5QaE+Y;RG_r(2VC-1m}It2ed{PIzf z@6jH2%k6VVo6Z+67>Cen(SEXx^RHX!Cy{f29QiQmPDR~;cQAgf_&9`ay!sW>pB%QJ z<7WCv&ex*f8uSbQKK$km#=Q>oTU}%vLKmL;<$p_7qu(m@TZ4Y9kyiy(qTe?3 zTY1Vj1aHxCi2M#K8HXy+FY=C%XYOV^Y`JC~&0afw9D@JUafrNA<%~mRj6)UYtcT^u zFM~?CH+64V>9Z{e8ziMsUO#ADY(`fklP^ZGK zq|2{LK2q6nhB7xHvj&^D9-0L^16Jw6%|O!zo3|dC2CMUslrG#9G-!AtoyNe?LlaOI=UQWjuZ4AhbT|cezKqQ4f{C57dZ#W(LId1TTypC z9xMfmk3*R{S#&+ri;jD^hXHvZp?37!hJNAShu_@AxHpV`6Gik( zc|7$?9y%LYXBj8k(Qg~_TA>#7JBWV6r|1{nqT>+x9R|6(tP%Yp?+AJ3?#09Ypmnqn zJbfI3|I~4ayi*O>{@44t1I=eW3?jb~YT%y7b?!tf<<48Jhq$xOS_wYcIE2i{jzg5o zs-xc2_$`b496zTz@~!3BtcUb1kh3!)Jw@7THFc+DhW;@a_tklhL+}(` z50z3E1IR?uguL)V+VFj6<1sSacjhANx9^ zlXExseY`W9J@;eny}Rz}1mmoSQZHJOBt*LIo3xYQ^4CM0#TnWbjx=EsP?TrxI&}8s zkd+-h8q7#8u`t z>3e~mYCSZ;cbaj&10m-CIrbzp!S|rlRqG&nwfH!csgs`L5cT756djMeXdNOiggo7~ z7+T>zI_hN3I0V*N4-KQ^AqbrAWR#y$bP4^|c#K2joih$0BR+_J2hcCP33%n>B!8v& z0{X4;7>D2~&@XcL`p|DL`h|ZVe)&7;&c(f1^jlG69D>ht93qco5Blv!zsNa2j_z)h zKT~oV{g$0F4#8V=93sENt{1JNPV|esBjm|HO1@5qlUJ=H-($uh_)i^&$UD{XqV=%- zMb2S4Ydu7+e5m9Pm9n{qu7P`oH4aT&wXEdTCmV;5`PgxYa#?NEo7NXCi~K_5C;uzm z2bmp*WH-W{AG+@_ryjxU%x7AtL(Q~R_@eOHZBQ%E!|6K>bH*Xclrs(?BNn6%HNp>H z96sG4sXHKJgXz1#4F1&bLk-l$I^@8cfY%N}jmYcQeGyOjeW;eYSc5!d>>)#UN80ts z?Ny&qWE|rEICVW#O&za7F0%HKW!FMA$nVx&i>Hi3nRi%p93tQS3f^Bi@{t)rrgINv zhwE-ZFwT0YjQ+P2ss>X9Rf0D@I^?7E(7gb%{4Zh`N}4bgP&v=lSJQV3f-z&uJ)7ra zc$6+&8C2@RN@iv~bT7qo60FjN3qXE@#YYFZ=KIjSDA+Jqr3>eSY}sR}4EX3E*L)wk zw+(g^tkQ)$=G$V*VDZsGZuV|L`0j0hU*}gCVUtioym@!sfpxwut@67_%&Ds+4W zTdzDF>)jwLI?eAC1WvwK^0SI0uUOHxtA+XnpQB%7#3s@21i$dc;WhU~#-dl~4?Oe> zPl0}sn;1vGqx{aJ-#O&WLNk1C-sBrou!w%)^VBbS?2n+|VSbU5M2&c2m*_H&$(ddT;iL-IQqVk{cu7kP)s(>;~CXYye6igj3nClVv=s7F|c`?1l^ zy#r9+sPgacqtE!dbN3(l#9FD>E&L)UjvU=>sXHlSliqj#Irsj-mw)eH&Ygec8E>YJ z2l+)_0(s7TlpW+TE?Wx!BQJi%%l;<+KEU){fc{7HQD5Kly}aVs;xy8Z>dB*%c7$Br zb(t8W4V}4EaGzk7pEU92-zS*9OVIx)L^|~(eV-uZ*sFWNx>E}wTlZbw9pP?2>dDs7 z#appI!WOlaxFO=G2Y1?a&)~&dVa2x)KR`V1)`<^Zymd$M&BXT+&%1Kst1jN!P<)X1 z9^%ot6Yslt>uZW{B)*e)bmqiwU%0hOd}usvQ?t{Sxlho9TQm0wns7_zK0y=4Z^f~j zG~pm&*-e^oBVlu&AU2Bm_X)}`r~C&_>?Xf-cw+0FwRe2SkYn#S^e@u(j(>ySiuVk8 z*gIar-tkh}-cdH%%Mir-?9_SIH*?PnferL!8eUR=RM@oGHq9A#8ZC z^Yfp;?&ZEC+drXm^Y3%kqRuG1FO0DCOEzsLRB^+)z;|%jA7A7*0`>uX5zgIvz*%<@ za1X%Q6;Se=^?>hCk>qtN0Ja62Tl1^)`7aUoKH{*o`^+wKqAQ$LHOKi@@b1EEFGJ&e zUl?z)cAIa=#{(PVb2C2zkDg=jTqgW}!k;4S%r%f3Yn?$g%lO6I#A*eS&Yk z4;(O&TFe9I9=*dC}cjgMmc`VVieOzeVt^=82NA9Y`B$i^;J7-2P!jZ*I^ z%PzLBpS<~d6M8Rk%Jap)e{Mu|FSfuQ-!yw{!U?}fe>Ki?kJdKlX7t`>`AvY0!<%4V zIL;nw0$d!N)8{wvyvUlm@v8MXu-e}>zkBffI&oP$BIIZfZ9l;;{rf(=j=f)izL>T2 z{&;%7Vh*0H4G}!QK{&^L2)W6*%sxdKa|`%o^C!Q?WH0-<(eysWZ^D;jI|Sbsh%2yb zA&vH`S@v1?&J|0tMVKhMKkVABHcYs9;4k+Sy^lV7TbI?&B8@G$UI%Nfc7BuCSiqaL z^<$jauek1fm&nmCJO%niZn6#iw(=XserOvxo6rXKLuK3xy`26oUZ7w2JoQT+hnz)! z#5wba$T>oe?Ehrncj)IH=$`cVT2KAL`&;PO(_V=DQk+}=kTdC1$a{!9*$c`RFlA#e z#5dA!_m$uNckt)i1}WZx|2AolsIxzW-N0wC8~QqSLw|v^N7VgC=aO&h z5prc?DEmPRo2*9@LF*OYUl;-V+5g4&?YI8}vfe<}Uqjaag{(hC)^{LFX>TCQtDc-A z{Tk^`pGJA!;Qaeg_a*BM@^S1B7szj(=N9@|#*P>mXY4>;jC1lsot(X{bm8WpS%du@ zr@cF45ZLoQA+rYMhRl0Cf(4@gGXXG*-Np1_+X0S>ZZUPz;pX`=A z`Vh{lk8@VNY!Tz&>``ch=Q-@1 zo-j0pJs~!Cp8DX7`gjHU=tl>A@bp66JWrqx?CFdi%&(_DI5U2~6n(&(V>>vCJ~p31 z9|82?M;~2zHiN_146YZ~hi98d=Z8Mpyv^Cr9eK8bgV+kLrfmg1+dRBQ+dTSD9dkx= ziZh|x@@xc`Y4Zcv24dIe)#e?0K#%vAV}n87R+2eZB5-00803BSs; z#5TaLfmOP2HBhw+ zt2{NIkla@YCHKhH^8tQwcM|~&ng7%NxtE{0H#cl~6hH zb=3FjBJ~|U&-zXthhv;kK1zK@&Jl9#GN_dJ2I@ODSnG@jp7kAGud%`OE2$B5JWPE@ zUI=-1K)SxcIzCUwl+Br^4WZ*f2%PPQe8kt^U=Hzw{YgLi?L)ut?!#-_tQn43*Vf*! z_PadvOTGpA<$p@{qTe3$3;zN9b_zI*PvCNv6Xb@5|rJnLt{a( zjkIH>3%3F-87y-N@-*w)SOeI4uu2zh5n3=<<`QnXbzp13DqXmFXwG1nOE_}VYui{2 z*lMs!7j71s5nqwHawT=Vg1!V?9Gtm}D86zX--aigFPBr-%c$$q?1fGtV-gytuCHCU z_LrVwz8s*g`>E^jAHZ*qL8H`lbbYXT-T7`>FqiOnkLKMS`p|{VndHa`A;%tphNYM5 z*!JDXolBr^r*A!GeVyVgXRvXw_7F74Gj}Z|>?hPmlCzr=oCyu@KD_n-)Q>)<(MRej z^bzIU;4tSB!+!w3-3RrckICz-&x-5Av+eW$9d2_@@Fw~|&Jl9#Zm5g4&s~E@+t-V? zeRzwuee|E&;9TH!&LKwLL*(iHBfEpPzj57qIC}l`xrE32%b81%x3$I|#p*@NLT(7T zc00c#*H7jWVAKXe%j}CRL8RMlP%Ahymr%NJi^y64qcmY!pdiof$kSW`Om==S4|W!; z(uHe;8eCY(%~OSd{>N~hNIJ*og<++~vUgJ^U`9E^z z63E#bqP`DO-{IYd*A75_>U$&gz0RY)!{a&D4N%|vsqgR~z;F8?8$0I~>U%?x`c8Q~ z>pOWI_EO(_sPD)*LXPej(tSaPZPfSRDfJy*ud%`OE2(aD+(msyUI=-1g5PTT6zXKo z`h>DMeM%=f?tsAAQ7FvbT_yS*^3X4N=jaz1du`~q75&1y53juqZDOxqhJFV;^b1dc zevzAOLBGxD7ybkI?G0!h{RYr)UlIMn=c!-vI1HlSM)ZrEBjng?&?@@%q2KOP^b7B) z{YeA;Nj>^S-b3WsE6@^l;Pqn7>zxo;rXUW69TSysn& z>y7p6>A6Jenzhw>{mJGM$n>f&IdcihwN*pCslI4!kza`X?0IO8=fu^*eTgctm9%4} z3pWeR7;N6YL^;?puu2zh8k#cLynTsMumP}27j6<7GuXU+2|rjLSfvX$3XO|CB=7|>>u>Yxxeia_!P>ti`}zO-kk<=!OE37BM2qNS1AVNc z53ustk-v}5Ux<&QkL@Sa$13_*K_Bq$!)ttg_J+~N##88H8GS6Fj}G+Fj+{2Am9{^~ z+-j}3K0Mn#b@_1Nf^{^HK9F;S9OLtI*pKhX$|-x1@D^?R=sz{b`P{P?tW*nazZtnf zsDZY>NZaqjSLChkOU&>dr!QC*azn^<&cf(rE}y?IF@?|YBvcQk4ypxj<`R_CS?5n6 zYaEQygsFk5d9K&mAa7q{4D2Xar3+UDRl2Z}Y4#;Xzz%~|x^NXxnZf4mOALV>1gmu6 zN}+(k=Iu-LgY5&Wbm9Dv&tN_FC3?a4fEPwsn{O`1e5b)?I;Z_pc4wUHroMMl-@&>4 zUg8zh_kc%zr!EwXbsg0AcItZyd)_4ZCGQm}Fyk292=~q%gblgaN zN1k&>&^o_<`V{J9j*cmtGhb^!$Mx!0$bSu5Mc4QhB)UBGOWry9MaEto`mII3@b1Iw z+$*$%e(@{V@9@wsJO%niZn6gbR-@k)^b5c7l}X}PaL`snzwmkLmpl$D(QgI%T|~bN z$eV}e&@X-kM=hu57v59*lXCi#GW3hQhscwUj{I*@o7nybAMSBHHwKLwY~H>^5^Msj(uEs=h7C4vUm^-N3|8sF4MBqjo3}5q z4R#Z((uEs<`o$+-1lL@G|IO)3Ht@q-#~%}19Gv`k-MsZw)`p zRs1mF-G^6xI67-+Z<4w`nzlR6`NjcHL0v~~avA^2CHybpKY-u(<0R4b!Fbx<_^I|K z7SY85ewUs6{~gF{huWkUe1z7D=wlvz%%Kmkaj?esCO$yh$8W{Vsm$-5mp*3D$29tA zMISB5XoecmM<4oFdtkQ+^K{oacj@-O`iB7N`V3jW1G4>28gU#EQ zXam~{R_Veep|HVv>`SzOZw4=nu-nk4c#GIc1m%ZKeFql@XZ%{?KI%Ju6sDe=U(dBf z1NFV0`o4ip_Bt}wpjB+L1Jrl>DeNTbsPDDZclZzBH@+}Qd<_o#Md~~6-m|{*ZVqdx z@72`z75ogAk+%db;Ac=teJ?$wz89;L?2)SurK-?zCG{P7A>_%QCX~cZf;#Eh$5x=@ zatNGr?%6E5-o_54^$GivQuG@@zjNppUise0cV=$`zmDdo=uiCU*N1-LKY(ApH}aWD zuCZ2YD576<;i+HraCnSAVG4gjd*%RJ_FFfzJ?#=nFFt~f*jQ`3#d`H6gXZ#x2SjmgG&9C-q|1EKG z;<9#kv)FCT@V~UtMp}{40yU?7SmJ$Y8}wOt67U$CyU!8cBb>GIM{Z&YU&Tr6zu@14 z-|=HJ>T!|oWA|N=broP^GD{SguORdkL2L%G0gRd za6R_SdEon&`Q(vit_OZ1_|Z9-gZ9b8oQKZ%nEda;jl$hC=K=2bIRAw6`^MyR{bgSH zlSbx0l$nT2Jo11o1uOZ2^J8;K?4QQ(=frr4MNG z&xf0wgR&I9u2$z{y#8AsCff`-mUs1JdoV=WT3-skYfiN8;NBTw%=|EZhOj}#f5sS} z7?d&ejQylO(r$bQo}{h5Jm;iM_NR^~}WlXZ&p7CpiaYT{BiOay=d|fh+gQ zFx=fSp>UIJ%C|Y69DAA6V?^`4@9^$3z;*4%Z=YQ2>*^7jOxec9xYiL2oXk~``6Q1g zxxR%r_FrGh-gAAqE=wW$%0d3aU4^SVu@2VkXUzX9^TPIBUpV`&FMikjw6SyihaZM7 z^GjsT$l3_km-#FyuP?l0o4e=wQpWl$ZORP)@w0)S>mV|g}9Tl9F8|0Ddb zJH|5|P7PMgai`1+Iu-ht8TReuf4QIAIXA$$yOMIt6ojXB9s(-$d5IU249rK7Q8lQiK z&oz90g7dp`hbVKkTQtsp{H@_n7h#2z(I{=v+wAMGpD*Vnw$e%75Wc7I9maPd=Z7%b zsJ{=}9Fx|Z?+)&xcFMqS7{9XC?pnRfAG*x^q11fI6Yl%ue;fZlz<&V$@8J8}*bm4@ zC-FHx)Fa&XrkZcX@GWcaF4QsK2Aw?2d#fut!5o}C&ed=Z9n2SS-u714nw)oYp7}R^ zzFX_O|76#qoOf}ac{hH(E9?CD$*u)CpTl_%=eg$A`Tmn#|5466IA6qhu9hi?pnbo=oSEw&wUG{5eP`=lC!$C)FIE zYx&RS_}C-Q=J61EkDku>!c#}q)(_jvxW`>QbA=YX2A;IPJb||z>v~`CGFCF_pZP=!jPcy{PugFa!22`0z9x9a zO77yBbF@%m;7R)#|7q2KJfrI?g3mGV%t=~cyyvce(tgH(TKN8qt}lWQ)W<*DBgQyd z-)l0>I7RDwO{N(~X??HBG~*$y?=_ibT&DHCCet~j6W=TGmHlhpJ2RBb-x~M_&%RsP zufy+TZABgbj;-(4bHe(5|NBp|Ux(+-z58`c@mZ$hdvxUT*&dE3j=3%m2NTC!(}z8Y zW4@1vZ5is}bbOus48G5Y=wmmH9v-3x>~jyR%T&gHxikHc>-R99bWtKbMtY7kts<9#~*-zu{KOdDzLKPz2Nx|K8< zveI>=TSzlD)JoTqZYEuuNY{{VB3+Y6SCMWcU6n{Ta6DM1XbY_WmJc78I?}!bhWqtl zEopBe&HehYhIDx%?IB%7+LK6^lJ=1PEY=c~&;$6gW7()pxM z80k6ECyn$h=~G5}hV)q@Jxw~xNKcWzXrw1eUop}Xq;rk*IO%tc^cd-%Fw&!>KW3yy zNPp5u50n11ksc!bStC72`duSEK)TFG_mjS9r29zUG19%HD~xmx>CYSKZqi>c(w(G# z+DLbh{uv|PPWp>Rx{dUgjC3pMFB|C=(qA#s&7{9-q?<_pf{|_{{WT-qK>9r+T~GS! zM!Jsl`$oE!^f!!j4e4Jq(p99tX{3Fmf73{NN&l9SE+_rlM%qLAcZ_r?>2Dk964L+5 zNEeg-JtJL2`a4Ftko0$rbOGrtmn&JdA``}d!H}#)#n?IS@V5!|ETP98CQ57(3dXB`1%pXd3INPm~~ z&;0cCLwh3q9n$Z8ar&X3dzCqIE;t##$GPAB@-%JvvvdE7bAR;JY1+BH=Df2WK#iqD<&_1j>iK28JkTbz?R(bwO_{U+z6Ui95}&wZ0~QaAeYyXSt5b5b|2 zaqb(Ole*DI-^IPpIjI|c?A>!;r*6`QChPVd7^z#Sf%zKeq;4g~xnJO%)Q!ISF88aP zle*Er-aYpf&Pmbe&XrNOYNKxN zf|0su<2(H<=cH~s#<@>(PU;pj&V7<|Qn!e4?qi&jx`mB%KfyVvTgW)~4(Ft9LE~I5 zb(7~_^159CBXyfIFc&!|b(=NLWpPgGHe;MS%Q>mrv~lhf=cH~^#<`PnFMoA*F|_IPT>*k~r?+IF>l> z+`+L<9Jk}w#=BH?!fzXSnb+fWY~`5uAFIAC96J-o%^dTdWSwu~n0F}axRGPtudL$+ z{PONKPy21vw~jpC&8)myjtdgUH5?Zvj;lE?P8?TpT#`8Uaa@`>_TrcK!g-z(mfv#n z$`g4Wj=hQFQjUFz;}VW}_q56`=D0d>T*R?6aUBZrTVDo0;kSUi?nGWb$76}(JdXW| zV>ie4gfADzyq8*K-5B9nDl{xuryo-)vtyvFr zYc_V_!9&{{U2<=T76<;V?vdw%ZaqiddCd7>!E>T(VM@-OA??7rZ!nl-M#ydor@{H>qIbPsc(k@9Sj^8!&Cd*Wor1>wn z&v3lJeq#%K?_A?7*;BIhRK|ukBjXEilTP|50GG_KJCV^P@3X>-@=hndlI8yJ|4Ed~ z{dx_KAB-Oz2{%Ary6>Xl8;taCr9R30_wgEiQfV zzE2vy!3a+3lgzh#gWvUyFKKI}4pZP{uBBl8MO=eKJ>QaRkSKpS;Y;$ZYXJU8=f0OjheQI$F@cm!*`f8WEVlWmi@0lhoKk`|yUrzcV-|_?A@*{c_ z4FCTd@#9YTapULx_-D2JkS~~DNcth)@&n%T!}qZu82*=wAKEIbJ}&%x&G=mMyE(%D>@`sN?gw$RSV zbMl8ftq=70{{FJ($Dg%nf03fUtm{4*S~@1NwyV!#ZCnQ}?XWxk4k~@pN1xC5O-VoG ze7vlT-S$)Z4KkRvkCLZG7sw-`#xwov;_lH0B?7IBjp7>Ne{`kPEv-4S<8>uh#mhW%Jb*!tk zHRHifP2zuV;{R;?zwB$szO!BOULkn;HtPDxumA0Q73Zs|S0j6)$!Dw~UCU>zBc@ly z=c_Iw9*Lf${#>7jlxNl7^DN#bb^ohG-T%FDt>t<@bzFN^U$iri4z->C=t=6bfIe&Z z?>Src;MT?K56W|IJh=N4o(FknGah{8;;{$$xyK)T^e1c&ZseA!AJ3(Hcn{(Kur8yE zeV43jDCH#olHc#I*yQ`Y{H$!gOO0k2gY_WSneo>d86W9d{XNw~j6=EK%Xr{^?-+I* zvpsPCj%`cgDDwqn>a1K7zO#A0y9K^~(cL_sV}Z|MT?h6fPJWMa9eyow9saZV{f%c> z?|%>8kUC{Qs}t9Gp6hJQzt@=$q;8D$#!g^wJdk~O=p$LzX`bs&f3fSPXuhsY&2#+L zd+}pe;yab^=LX;D0^jX|e6Q&6JI6A9(+|ESf$=|wk>{a2ZzV?j5G@NQelP9U=YMVJ z^UuxCXFC~xzr8H)w{P!#zvaDdp7*^4-UI!-AIiR+y7kI~1^RWOvD%ZzHm>u0=Q?M7 z-I4K~jFlhnnz#ScKlt;{b1&@h88mn}((hf+)Xz^{gVZ%tmbj1JwyrniLQCx3ALubqv`MHvl#uM9=Xo8E_vtvPfuyfct@1} z>;nB*zjdF>y>0v8--#}GSNxI&6UJYJdc~+~6UThEdG1ZCUFE)#*m!HkiBJWf^QZWn z60hW4*24Me>y~C@gzk{{b@J-I{Kd~o-(SW6CC~p7=ilc%J{mmWj+6cfCgqs?pF4nG zpWydp*ew3@*ShhL*V_7Ad)?6(TsQ-w3GN>l4yfk5^WHA_Ji5gBJanR zUgh^D-m(3>^Dgi%yudrMpU)QH+Q@ouvTwBC&hL`E|H^*1vX&X2#k!t0%Jq|$Yhu-l z_a529PpOOty{T2jXtmJ zN%nC3Sl2vU-~WUbcz+Qe^6ov)`FsBz_Z{c_3B8M6=UHn<_H~Z8|8d=Z@+WtC3b9XM zAIIFew*Me|^3L0-uY>F5#AsK3G56WCA^97|k8$0T?cGPM_RjUJZ7IY@5k9!)@{IQv z#@hgY9>+zAW4GkT+h1wVB=$Sc^EAiH=K=o^Uc9Y;*2eADi#q+|=j!yIenjbS+#Gj9;^&-y%(M*8P*h|^6?uztvtYb72KtI-T zLNg0!#!ubmd4BxSFQsv95}N+EMm>|7{(lds@1LEN>y^5`a?Rx4U!YzKqHibd?TH&~ zH=gl@!sL0;y5vip$)A^FKA$_|SV-E`kAb^E8@s@7L&-e(OaZWU87C&cc!FnmqMgo_ zHYMRhu95IcX^*50=VE95voGg;*19HOZe-Xd%izkrwCk7neA1V^*LuF3`&q00g6Exc zfzR`oTnF>s`v)K8JLS3a4*&D8AIJ8!6@2$!dG4Bi=eg^dsz0{CwUKs#wrf)QR>v}I zzgm`&`>TA;53II`K9^{a^uB(V=*e~B8`k=lb$utS{k}iSe^=Hw_OE|gol8t5S1r`$ zTK?XVH87_f@ncy7bLMpXSk}N~U8z9L7cHH=FY913?|V1R@34VE88e^Azeqa5_?Kk* z3TasnAepA`D05$S)BFY-nBv(#>0qp@Lp`efq8jD%{Vupi!5r4YX5H*?PJGRfP>y=+ zzrr)VO7n=gR7pdJfecx_mYk!t{$~is$i@_{VCYRj5j_^{$GUiXPjH& zoUC!WgrCJxr&=0tsztaIW!`i6Rm5hI?R6lv_RqBZk2N%=iJY7 zj99(Pv0JyT& zdYJQtoNwg(5Lj#cCFQM+oLAw#^J)!$Vf^V)tdq4FX74k%>b^BTP}UA#hyO|VUxoi2 z_|`Z~__F@`26>+%@8`*ry`p!=V^a2d-FfCdoM#<()@;D9X6*;fdIRf4KITZ=x5i`2 zdg2j$6yc)@AH(?A9hZp@S(80V{-??R1@ga3{+{uJ)FWa)ucF~|DuVwg{xx&@^_QP?VA6V@coS=*weupu;l=IjFzwn%T zEI7e42UW`)MmTS>cB{3fFF0$gv2ep@X&27o1B_s2PIB+l)`GXNU@R=0U=P?DQ4<+wWFE$rl`B z(6!gVn)MxVt3V%E$rl`BlXaNqMzRj3-&(NcU?pF0)@Yu)q7|8PPa@44@* zuc?sdnp%b%f@`f~)y-P#Q{^h;Ew}Fb6*%TSze;-F{jRUFj>1*7GRAu7@U69pSQ}?0 z{|;+alw0@v8ocN4^)TmB-sgi?Rk-^qV;0{~VOe8G)})zZ?S+;*D!fx}-RJ9YQ{Cem zoImjXuD+@^O0F`8jJ0m?C+l~}Iv49RcUYt4j&*-W;2(5vN6CBPeXXyk=-d?*!EY45 zvR;I&KM*Or%iO3t)_wg1A1}J6H_87g?&n|Re*Ql9^S<%He2-81uc*!TE6lNE{RaG7 zYXQtM=d%4SYxmx@)`E)Rrx-uY_!+^EIVM=viHnK$z#P8y!b7*#CoGohuHF#fLqn($T2Xk4iGpA+)f7bknKGuh3ou3V-_w_Yed|5^FF7vEm z>^gp}eGrJRMTS{hVf5b7Y1Ds-wL~tdCrylD$G?p4)x@}-)UxJ6?Y*=$x`jqRi;iXg zia$ihDc3<3jdosATaA}gjB>UpM~`E@tb@#Y3|sbl*8Dz&F9wx;_)GZuH~31qCNjRZ z!Tm#U|0B2$!5z3hGWU=wx}>&qE-6KM+mvUmU+ZCgWad6^58qYR+Q<0&ukiOz@%Mk@ z@4z*Z)3_&P{@?C;$<+1f>_rtAyQrQvW~cz=>IvQt`i%Dqd2boxIXmT3i@aAzKQbWi z6_mBu3b*c}S`@tSTCo;`EAJ$u23P8rcqduRhwFeVc;Pi;O$JxqNk$B=S?(l$`Y2!U z!fV7D46eMB3>#dt+&s9k3$!8Ng;$T&8C-cM88WzLx!t_abix(9@M^GXgDdYOg9g_u zw*ziFT)_*k3iBCUc_$e#xMsO+a9iODUU*)t+~CSPNx#80%WZ+%1Xu9F^I)Y0SKdi_ z4X#;kBishKf)`#1RxEyeDwA~^n1k^xYtIDA3&LBfzo3G37t|8CAUIu!6>wbTQ%mJO zCHpG;sAaezxH=!pb8z0rJBH6{uVsIQkHN9t zBjCv12_GlD`woHMm8uJ@^LK$hgoC;F_;6z`hgzxkF(=w*wby6heFEO@`vW}LKcSFw zd)^%=W6gU(h08CncAJBJ6Y!OTIUVfX;#1)|pVeNUh5Jdkd)^!1p5y$dIKS_mf%4Wp z7t}`S1+|X94g6^bW_PIdX5JYZd{%qygkJ=I-}?gmEb=~0Udnd`%8ry=P|@NGDuUlA zezgtLXPA4$yFyd^T_GDEpTS4U_XK=gApfVxKd?_hJ)RU@P@9DpSpUtTHu0}_u-F;( zWWuL5TYOe~or9lZ{2bV)z|RRV?|@15KC;`VpiZ#@w3&Z_IZVVBC@0t_?K)o*Z+l=vj0mNYc{m1 zv(*}Y!uZjX*u)vMi&iJ&^9)n=f8ie3|E0Y3oouxc%U0|7+rXb5$HvZ}U9{R1pKo|z z{}=uX`@fVOiDdI$o2?@FjpA32Vk2nPfmRtC_P_E@`ojJ%K3>}Yr5;a0*=jSG%{pdh zSjUVqhOt4kYD25zW$E=T@RL^Gf;z?g*=lPpoAu4ks4dFT16cnVw0oaEM|^$cwE7nK zO1p1C{nTu>+MdZ)it@H8PxoQHXOxQESKFSl!}Trj_p<)}p1uWjeL77nZ7N$mrQ87J z>K?3{32QX4rr&^!r;WtVa$~j%HDs%0xFNW@7%QTUY#=sR zdw+i$31?p$iQkp_Z1(HORx9vV;p;*ypEk0Im|*?=!@qykW~*=wZ6toe_|bWon>MnA zSYTs37MQY)q<#msk<@d&iZ;?m8;QRS{Am}KLmSzCUu`tUV}J*?k?>#GMpAafOB-2E z8;Rd2ezg;G&_;INSJBq{FK;99@zOSudOY#aMwZe>;(rtW+Ky$?M)urSn;rMlYa{XV zvNpqtF;b^k3EC{Cjij6aSPoQ`3U)AV=IXfREU z7NF65GzvEaSBJ6CX*7#Q=MJIKJT&S?qwrVZ>mcSojb_p4^ebpI2aP(>D1O5D(R0}B zX*7#QCtpLO4m4^YFSe)R-4ej3f9(a|H+=uQ@E z{bbR{Jk4{PGRCmc(`Xir4yUitw4URl(MT4tfh-lHoGr@HBiQh1G|O{*;Qo&;Mi9zU z+rccQC~uqc^bj_9S}7aP@xJ?qdyc1ZPwsh+^SPh;`E6=0OFgCB0ObaI6Zd96_2|QT zjo;QJUeLqyd8TrIykHhTGg-u)!3(bk>o&L&FX%S7QrBd>U>fceT)_*k6YDUz5-;d9 zxYT<$PB9600pgv1&)Mc@k3~e|5bUx;$?e45p8*P=ZA1|oQ zQqh_$6~S*5zuJZ6(02D!s%S^0)xS8BctJI7w~w|P|C{*NPRv2u-B+nLyDN`AUf@NW z<+RWpMWOh4H&mgjNgDD*RRW zI)nvJp9f@o8rN5W)dD7}<@VR1{^fPQ|m2$QyM~`8n?9u3~R9i!p>Gw16 zb*Om3j#F*NoJvvNHs$FNY?!?p?Ulq2Di7Ds;Pbw$@4u&?L0z9loWus4>M7+0C|3_* zgB)j8rj8eczy}!vBN)LBVEsw_bMXQ{*g3G0FSuT;$G}qlZoFU?>9;-93rr&8KJv*PuCuWfRw zXrog_@EgUiF2M3>BL^x}l(mXp8dF6(X~hc~ob3DJWPMxONc`(O%uO3PRG~KeD~>*1 zP>VKeoUD6`9w{d{SP_4oJ1N&8daY1F+KoNWaz2X{*Q!RRRTwyJ$1>4qEgIEnYSfEH z%h4#@5L|7;G~?Z>(P-ol8ug&jQZx#G6~5lVVsJOM&tbFd1y_Vdr;kvhd1%y) zM)ALie?5auvmass8l6aAqiH?I(OS&qR9iV{lybHxM^9ms?30*Rp|-{<(tnQQEA8hv z?YDCB9Cz>>r@U>-(-YVj`zJap)b>cl;hy92JfJ`PqH#WZp5xT@X(sokjpsP!1}HZ; zoVYhfsmBO5%=zSaT8S4l@jmI|nezPj0)1WucFwCs!3%E)8#K5QFK9HlQrBd>AObfG zSMb6c!1@iY#0we>F7@7x7lhyj;R;@OeORx-m3TqD!8ObE!<~aGc;R(pod(w$M{aP< za%bVrz!kjkI8>;D|q2GVT}e?;ssR(*DQAw?l4@z3$Grl6F=V6@q(fAwDac~XMm=_=~}FY z<2J8aYWAiVFBmwlLjC8}GTabcU5!=Ic6WG*BY4vvU(kD=JvA7k41X2A_F-Py?rtyr zj`(=6L&Xca8Jpb6*kt^K@uSNz4{dj!m-F%QV6Qa3po1~V?Tksr-v<74305rob$ZoC zZ+tx1YmF~xV=Qv(dBz#gcH>tUVTH8aLtYi__a0rmpyj;UY(CF81KMu<>jEsFwtK{@ zHV3^&A1`P^n~mogXMi3lCphel_b>7&*NwSEvtAXn({81T7c`*jdbA355vgD)7nNW1aEc!3A4mZDYsZQxHwurTB2%hBrG zOU5oz-&N;Gtm!ud zHV9Vo1=ox97+BMR*T?tBi6ui_dT`Lc5i=7m9qAPbY9p}_$J9CQgzlnccj1|&GPTV7=n*R9im$ezY z;|to*X6rc>qnrTc1jp~ipXUXXn=g93r-HN_d!FSdTs!PL=tHBCBhY9S8ug)3{6_Js zV_1awZ{=t-bc7o9qS10RivLag>o68#pTbf!I+wmi(~cLEo>N;TXq0lcC`Sh|Kl>LJ z-&0#NKf*Z(#pl#^(K)3kZ=3S;EH=Zwh6VT3_SC(@J;&vFaM*Z30rzJ9IrWrs1C$$_ zOx&B()ME;pP$P!IgMHiNQ6?-C-_d46fjX*NgQST!|MH8(g#82;2}{!3(b&>om9$FDNp& zX1PJQez<}cUI*4@a3x+)XmHJP=itu56}<3Tu@>=jH+8&Vnz^1+XVnt8AUNHOHF4Z~ zS1onkO)p+Bc~*rc&Z=d&A-K8`Yj{g7_upl%^WF601>eyMe0)G|0uE*-$QY(XZ z)oS0}!_P+;J*&baXVn^h!uZj(ST%dYj@(t@fxE9hzF_z)bCu7kb^OU*yt)eW(RPpB z<^0{(A73zdRz(NSstA5%k6!J?%4xeNnBzEl_vqpU{b$u?-`U;0d$oshN@=^NnBzDe zpW}F>^AUQ{X7^c@+|xHWnV92PLb=6Qk!bd=3g*#nrHU7HqU#Q{3U(2!F2M3RZbhrE z6n$ati#>f|?y==|wAzMN;fCPqJj{(&o6)K>MPC@szJ3ONS6a|&Gg^he3SYah9JJbq zRx=Oi3&Ts<&!CL8CbZg!R`Cz`IXgYP3&byjWp&?@C@QH~B{A@+{++$DZ+_eU2m@SauM zxMo3NuG%cfRZsB0iGS_I%4s9#?hsSGbM)g2@^e{xCzrJg&?DspXYa)01s=*R z6}{eJj_cjjI(6p~^T)vH608`FcA(LMyXk2(Czt1SF5?B!C|q5H6{68LG@2LhbMA@z zbARl6j&q-_*mHSa=Q3Upjl$OjSRNW}Mx(BHpL5?hL3k;j?SVYRuTM0 z@v9w}9gWtaQGJ9O4Z4ZsA|>|N}+qqc*0e)REzDb~7~ zbgQS78=%~vKXGq{s7Da6!1Pd$TQ{nc)Dx+FUU8zeD>XV z!5G|8xPlkn3^r|WC0^h*xLo7ic)>8-A-IAU-Xu0*a3x;gGPq{BgK!7n3SM~Q*qFhU zctMWAHOuXX+Y49l!W+d#46eiroCen{w+C)FT)_)(7#lLU5-)HVT(jIxxE*i>FT6o) zz~D-}z;1BOa@*my!4>+E)0aR~ z;B+U}!SOI_A`O(M7cXdZ^E-rFEyE4L)$LeYCcjg#Cel!RO{BEuBhxmq2GuZeW1@dY(*6|Sc3#!nbOx(RD!FWSj+6&{PPiS$b23#w?leYD;9 z+rXc0!0Or8d8V8(-sP_!FYwZKduY4y8^y1#!)n>*d9IwXVdX~`FDRw$E}`wl|0e!* z4OY#*&%tuWij^Pz_<~}zSw!1SIRVNE`pe_}iz>?XVdbLPauqD0-AWZNC`8uBqf9=5RXtfTl>bO>qbbLYh8ox(eQ!&cfq8y!x+307~loLNFPrskR=S#bv z!RJ)LYy2K@O)1LTraY}#qi*L-rK-w_ACw=ipMk$a#|!4J5pTYxo>H#thpl6>Mjpq$ z^3?Hy8SvAr!6z8O1~GpU|6IIa3hX3U$rs!lHfvzHR=e?n39#c}C0}qe*tCI_&z6iA zjDZ~mEBS((!X^!@>30O|Fj&bK+ypjeU`@Y+Up84+x#wY z`|$CC#%sh0uBkQr$X?326>DM7=9$|nJbC-o;|2BCh!b2>>-gKipKivQ-ej)$ZM89d z`}M~c)LtV_KpTnQD1LP#R?lAO!P_c2d;93-BUI5w`e-BZzlnccht;wtdh9muXt$3( zUf@NW<+PEM6QG=6=yv>hUPHOnqF2^9q}|x_EKlmR6rGk};B*z{L! z(RMUi@EYrIy3wc$jpAD1M{()%jQ+ z8f`|SIq^Q{3*-Lyc{dcn`rj7+R8k{bDYnY_H&&2shz9D39c$ddE1ny?N}zy@tWIeTi-t1a~yw%dX7`q zr;)3~39hQAlpCPj;7;P+v{4Vu+ORvU({9EKY`jlKc&0obF9_nte^o6CUU)GqVsIs1 zpjiVi$(6b$#}~}OorNoS;f1lF!IgNyj=`ngyYYe>? z-mCo1ah1Nr8!8A+4`BTqPu@~XqqowF7j#}FPHz>U-w|0tf4&1`m|HG4nMx2l{J)GSVI{k zl$%&X8Gjr2(`{Jm8)`kw`m}SmUO!&YcvVFkuBr%rqxjV=So0ey61%0M!COZcFQ~t& zHtVjcC-~pQziz@B-{3dgTZ|REb@cIqTC`bnRmCVLKsmvkTk-xy1Lf9XwW8TutOG{7 zl`39Pg|2;Q73?BdU4vC~JcL%gDf+_P7yIG`UbI?{R^f)=>MG2KRtL~(X^Oru_hrg> zfd{RYqE+~-@U<5!N2`5kwfKO(F!ebwUQmoyi_j{5!uZi1tQ4*Gpw+?`^o6P43*!Za zXte;X;%@_gx(F*os~u=H|0R84>ifce24zR`(P|!A#cve9x&X^Zt8Hl2okm|6A201^ zP>&~WwCX~u_}|38&cobjwFRv@)9ef5C#`-4b&BO&Ra;K9N;zAUqg`0e8))|y@q^nx zx_E(ueukZX2IXy2o_1o6Hs*C>X(N)?(jbjdTnDT)ZFxHVjts1sB622A1-7;{_qGL9mi9xG)wnu=3fG z@q$^fGhiiOa6!y(U`@Z%V5h)JzTjrD83Swjodi1pR`LZmjZGO?)9*OgF|d*^xJhin zz?yzX!H$5He8G)lV+PjrI}CORtmF%B6dMuV&An|T{;hby;1zynxWcph1iy2D9l{1V zp1!G;CT^zpF4lKNg?g{3Ww;@@dI0M`p_XTFs?gNU^y39RSJZ0v6}19?6~6AndQYg8 z;7zqUbMx@=g3c={+;K&%;U|nA-GgD;fCPqI;;kb4x!Pic%L(^@dZ_A)Q3jlufo^WSQQ!_K%?GxpYu@T3(C=` z2aVzxh@Aj$7v7NOVMZv8pYoR{&YF!L8Corv?$)^e64sv zF&ZsGqxg;DSC?WXXtWcJ7R39UM-ne6K%@C+6#tv}*Tq;N8f{}wguHm4^QCcru18wW zajt1B?+VXvG)g&Jl%or<{1a%FJrP{D(tnQQ>rn9m*A<@MSCpc>ZOYSmnEQlMO*hrH z^VW|(Uf|^3bX-wSDK|j5K}X`=bWx8S%*lB(UNFo1WC{1`^YH>Zer(*Qf)}0xvm0EA z7t9!3d3Gh^1=>YCfPGH{FFYHj*()VkuEYzb4KCMsH(n5f8-Xi$;q9<@O3dI&ykN@U zn&pPz2H^@`co8gYa3x+aX>iSQ{cz{t3SM|2ENE~gUNB*B&2neqPQw+v@ch`E!IgNy zxWP5coq{_FSMb7{!KMwa#0$m@u37E`+;O;q7v2;$X>cW8Flunka>w9~!WF#mCa`hw z<4GMa7;&lKu#3I~d*Fc6W7sIievew3_M{gt7-B!0LH4tO8-lAxuwk284tZ2)&Xaz; zV1WH>`q|G0{wjPuhz;1(O2ng9gPz033;JC2D_m*~KVkgneyq=?)^kD&l zSnC}&qU#2<3U(2!Zo(QloWV;&?@{@___|OMXMud)ptN&nED(TFQ`VVRcIAIVf^SCtO~6TqSf*j^o6P4f&C21 zTlb+=FIvUl2L7}U^P<&$5AlPS^o8NSG+t1SRy}AHzft_^a?FEPdp)dckVapa`ll5y zC_$^mXchmP_}8Ua30m#;Fa|fxzA&FBt$qe|iWRx&U!YaW*`gd>j1}3?u19U<-Auoq zfv>dt8PreZyVQ1`ODW3RraWDU<=d2MW$z`|&BOIG@OS8Vft!2O6H$b^M4|8+e z;z=DZ$N}%<86p_Ly0Dxi{<(O81FRja>OCh z7hDkY8(7otEZ7;ak}tS9Y}UY`#Zk z4gBdrtp7N3xM(9YV#T%E z&}l0MPPb!iXmkdRHhI#E7c`^MCNv5+1Xs6U&1iHIjW)#loN2`i8qsJ28il_KUpHZm zXmtFBTCI!sIS&;ts7Ir9XcRwT{OAU(9*vIPP~n<*pYxUC1+{3j294rx1An>>t3{*3 zHyG=B1RAYIqg7}Wzft_^8mtF`uYH&ojrQG8o2BV%G_B`2 zT8oumR$Cr4N;zAUqsuYRaWs2FZ54ace~#lT?dLdcpDMkqwo5K6MS0tlr%SPt<4Sej zP}_x`!#&64d2rbE3yQcm3oomulpCPjV1DA>ET$esSRv<=@9nv~Pmb_D*~Y#4e7v9l zKl$9Jf)`!^mS=D!UNCHMrLM_%fg7$1uHc2|##{zh;srwnmutKmFUW!Gge!RABkEuE~(Y=OKJuFDttYTjU7`f4%%*8ynk`1`3Pf|RCx4~TEkBm zKYA1!VgK74+HQNifALE55k@Yljp0jb9e*46)5F*h``@~0yPY>)KVC3&Nks=QsR(|f z_|=2h0Q=t-(003S99_I%fcdV@5a%OFX%&?y_ZysasreS zEW8o#U-VFJH`Xbdy{>}o&-I15H>`L;54!F~t6&$w>JF@(V?SDLNzoVPzSz?j#?NvG zT5U(Ga6@o)8`g?eXRp)$NYNLDv#&3V-<3AB+KN`;ufo?YSTkCkzE1z+fW9!i1LFlP zXtf!w;wOwB-H0`y)$!}}KVHxmrhYGs7c`*NdbEna4gBePtPZV?UZ?*N*Xn_NVe0$R zctIUntwpQ&jpA3=Vl}c?^L5tVh->wQePQaKR=l7FtyZH|{BPo4S7TLZb?~~{ERSpT zrN2w?dD7}JqG&LJ;{_$)i+P3!MzBR# zVG{pbyr2+l0a(cwTmhDEU@3n$UXTwq53J-1E)R1XSov(pc!3+N3#{Y|E(dcOSktc) ztOKm%3(kSr4Xo+c4mK04^uMMoe$ZxFV3r@4o^-f0Ox;=LtcG#CX23GO~ z7sDb3*7O?z8wM-+f(v0m;gzM17lhdFI(Shnfm;Np{n#AGnY58RW$C?(`7aXZzo?es zhT!U1Y$ii3J7^S;{!7oPk@hUY$`*oNj;tnUsRhz7u6H|Z{lAMVT0^v zUqTyMc>U<(1%qgF;G&9APJnWP#n|r#l8t_hCI~G*rgA z8`sm*XfGP=L8EX(aCJA!hnpwV_T+J;8) z6UL8j!&=ekbQ$r3*U)GS8f`|S_}jprZo!(-=wuns_ao3~6B=zqqxg;DS2tk|XmqTM z=lc?jOTm$8cpjt&V3WBy{NWo&?x0>QI4*~YBJDl8PE6Y z=|9KumG*O-dr?(iRNGY-m7=_D%G1?YRfbXnWyBAzAMQDhze7F8sq0f8_onxvdP=zg z$_SC;j`@Ew}y>;x(?IcHz1^=t~ zSjNZOq?hrtYpLSy|%4jO%9r(@dRD3xv++WA{D!xyX{y0{N{VcYM|5e-R$yLfi<5R9~ik9qd6qBv1IiK^be5afb9Ku>080VZVW`QO=s}%;Xw%S#{EW*(nSE zYxvir*a&M8)t2$h2LA#-k}p0w!GtNxLAnt0VU1WPHiU&KFKly6hN;(DCT*sTGASoa zIeHiyqU`E2HFfNb?U(ryjQIH`Wv)}^S^R$z`#knl?3>tku)hYkPPyy0vy}U)+tX9QogT@-~HVmY#ckg-G#pm{GEgQDeNC(KaX``zmNS5{sgyyulK;J=@z-#SlyH)1(zK7vuM9&o4yZ<+FQPd>~n>&nReM_s;I z-J|3C&bwXzQ1ZIT z%O?-L@8*5|-L4|Z>m<)j9-7_F`{KJ@ACtTe^2UA2kKT6k%HHkzh~%}CH%cBF+0Dy+ zx9ghZwUIYW9^dC~UdFp!IphVZzo>dMzW%vK13vY?WY8uh)BU7R80lWpCyjIu=~G6! zoAg;D-AOvjNOzFFXr$XoUop~cq;oUW4|iH0xU#qpnb zuhsijtd#Ykl4*&%MwoY&OiK*6gz?_Vw8Vqk_$@V=miXZm?4JJJc;U5S)dp9t!>qwI z%PofMhAVjC6<}KS-%OM%*L23GI<+j6RKl;al z7hVhIGq~~{PZ?aZT=o|aupjqh!3!@Bi?PpGvd*HFNrP*aJHy_i<5}vl;DtBIeqntE zSHAOcgKL({-nM}TxPlj66IL#MD%GE4oEUs$bAM}s|I#mb1TV;5o{yaDs|)TCIGuxq z?dnmB>}^`1{uJzD#v30d|4X0Z&p5ZlIr<0RTEfrbG<*1svOgN!CAfMV>tXMbY4$qx zRq|Xv`Qe|#S%xFW@=Tv39U@&on&)(`=r&ePa6CXeBFSRvVTbd`>GGb_dERy zcq{Ne2Jb7!-u`ff`urv5Ryp@^&iyRsc+P%nl`>Y?ziZXberfnw#gBGkLDoNSV}ErW z-}m&d;I6^_1l*s4`>&6k`cR&EQ=AWTzL4{coFC#m&$(||&$ub}GZ|(-6a0nor$@0) z)_5B<2Hpu%Fc|T9y?~}Jd-Uj~V`LoWx zH5=^ZvX0*k{OVe)h&B6*eEbF;-*0^y9}#>M;iCy3!}y5cqv-hA4a_vA;(|1|l( zK>l~hkCOjs@}ra!r5+LX;)t?uMFjs*{A)Wl$J)A+KF<5B*z|wE&lCK720#AnqzTon)9oFATFljWNFfzft_^TC9lq1%<3bJdnn^LVPFb#i*EH(98S+{BPo4XJWIA`)g+% zVq2Q)5R3L`KMra;esDbd!`(eOn1>QzzDJC50+bW1NvxSY#8|Ov`b6WbnSuUO#;9am zeV8$-;B*0|8Pn3hni)+g_SQWK0Ww!uZko*bcun)iam1;RSnZ@g2V~jyk}YmQKdB z;BNzedJ^m7w4u0#|=JyyydE1ny z8!-@@DleS3I@h*3=wqoUjZSKdiR4X)HLIgW*xR3IO&;Dy(WH5puaCmAug@>~=yJ{Eaj4@~f1@WN}v z8Vs(ylMEYNvs^D+*6UmpyzuI=I)f|kBtr(*ESE7Vf$j@xQSid6!Kw|eyps$XT(jH` zxb1K)JiIE*XK>}6WWeB><+j0Xg)4aBd9iYXEAJ%z2G=aN1#UB3!3)oWl^R@mC+Rb| zX1R@U8{i6FcqLe|`0=G4$5PLDn7RwZ8R<8H(}h?8$5lSHRPIY}982v56{@*FT#)s< z;p%)Wk9E9jd@AJgr9Y0P`hr@mxGQS##|Do^QqNp-{I%I_%5ih_kvo(PZ&Qs z2Xhi1YxFTT!1wC&Udk`9U*`q2j=v53X$NK}7S_x=Lxb=2$FY=NP|=bLDuUlAezgtL zXH=w>cZH_-yF&J{6N8^QmYMoJ0WDo1|EI|RMcyO6&wIos?-4)6d&Ivu?)-3*calvs z^Q7nkzi(YoPw>Bqf4zgn&hYNwQ=2WmqaVjofHw0ls2Jr0C@0t_?u@L7y zKHig`8!OA_vBt6Fp=%df1-l4V2Qfd#C1`az&2cO_Xw`{U;fCPqIc(+(+C{6ahZx7= zK&y7N3V#*8p2numpk1_@{|e(+GSR9Ht>Pz)A3cdpoI$&2b@Bzje{pRN>|5|1uj_33 z6xsaVb%x()@i~r-ok6>3wdp0lf5CrY|Ch2Ov25mgXR8Q)qxjXM*a%v6pjB5IzklK5 zrTt&gYB*bMhO*TY{BPo44`YL9)rMBb%hLOe7C&kI{zaW)!ECkV&sH(Y*`gdhfc2k2 zyZ6;rV_EvYf8i_b-@mAzn$1?*Guiy!bw+Jdp6kJz%@RO1|J~uqp#<`t1bU0ao$_=fk`P*7Vy3wiT@83$7gV2=9LCcdwRg z;sMz_yJ;7}=~AqOSC;jHnM@(VC{YDd7jodmilbw z4rHqp_^a@BA(l@Y*+fjR{{G>|vD9WWcOYA>;U|nAork$;BU^|CHpXLtuQaEinl`eE zHWGgu_|q;dhc>ePK4S;sF~9@I`te=8u#Mz?3Ta=?mu;J5amgo4u{q&#X_)7aZ&OM~US!z3!r4;3DQ=T5e22U$x<2l}U|8URo zH15eg&vEMdG{|pL{w(#Bas!kb>`mO8{nVom>otB`lXyWd?~^l?`{M<3_?gX8i-H$k z57upPC0@{DaHX!vc)>K>DY$|cUMJRJa3x;QZE&ggZoFU;?gU)H3$Gn(Gq@5j=rp)y zxnpog;R;@Otyr_cm3Tpi!8OYrfjbOW@WN}t8V#<*3)&5?S?&J9g;#@B8(fJOv>05o+#a~ya4kH%D$FZ> zDpSV`I{E#wBa6NSngXZGF%QQL{Qg*5nO?l0J&Uo1S!x+>2(B*0N@%;ADpjaH{@Y_( z`*5^mF;_85t-xP}uZyuF+V0j$wb~f}&GAt4UYfG#M`Wor{DkqN3$X&)?)FON7F51^ zyr4ddb-T0FI{r5Br}Hs4ZFgs-+GwkM{dhrbmWtM7v1TD{H-5DX%c1S=sZ`O9%A=e2 zQcc@kMca-4P5f&o=AiBFt7N`y<+C{5#ajou~UrT)socB_QR`by+ ze!}?Cer)a(+C{5VajmB83sb)r#tZV$svE81Zv%gN7MnSRcG2oYT&oB6g{kig`@)nR zaiP^5w2I#-e)TjqbqejG)v>r%k7VA91FhQ8D*iX|uP3naQ)m~hj>NTkr1M@f>1Wu` zD&=fZjvm8CPodpPwKY_kem{e2ly*OZ>&;E5ws)LLQQkJ?=@D%Blv4Ie;s=$7>u2Ea zWqtoW{S4~*H0ERsl~X;X+yLe3A#9N2%*xd9f-v}yQw0Sh*a56RiGMC$5CrQ7EBS)! z#d-`Z18X<1rr$}h6JRA@aBWztfi?Y( zgB=4a`GRY~nhmV!cLeM(SjiV$Bi3MGO}|562f<3d;OenD18e#n0NW2%@ m)d=r^ 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

                      BhWVJs--|+p)Y{p$`;m)L5G4W@eC8 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

                      C1!Tj(=PnsQ>B^HyZdfcXpm7wC%%UL0Is)Y5j+ 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

                      m3d>ZybHV_(nN^^f(&pI@1a^@^8!^sRh# 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

                      E4H+2W`0d;(vf|Y=Y<24q?tLbAtIPQ#Q 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
                      8Vz{t!Q)gbw8ZZg&1DY*Yr14ETXX-uC0gU+H}?p1I7<5t+K1%k+2*o3 z%h=#SzTe=XI*oboP<=>?=B=ueqfTU*)(Q{N|KprbqW2qg@*UYqBU`0&*dI)y4+G3$ z2bseTF^AoZO!Z+C`e{@1M&__dZoE7 zXIF;jw__!9+aa#EGPm7^d?Tw`tIDDOlY`(&UTxOdl|#r0wqk0Gxh?v18hv^aeY)+* zU~apUaqgmjJGb2#;~Kn=ao^*9Ft_zQ?jPenplhK{qYR(J<9^>g*q`n2R5_ENPGcCK z;kBcWt=wl0Td32Bs7|A1j(vsx+<4afbfvS8{9`m%2My|pPskhDeTDYSyZvu2qdzOR z(2jF1>!4vhIRJFX?k&`rcfVESALg%jO^<>1QYZfg`NEaZY!$R?f}geUq?zj$t{JPT z*J$v4n%97hp>MlCLp84+*V=1f_GdIg8{|iGlJ%;2jRRwh91*ssMQcxt)x!p4cxFWT z0qx7E3if5tuk4iInSB}1Mm4V~o=<_N(aDl}R~xsyFH9@qmPZ0Q_}MjEUl}@&f8ql2 z!<^}8&+eVp`N+svrD)XwZPqZZPT2+gim|;bk$3oG{p9a5 z&J5RDhcf#!+8OJv(EbeQ7|!dy?QO{YDDcMU7r6|d(PG;b_Eij^Pw0#CEopSd+aAlm zPyTQ-?a}#kKRnn(f4%%~28TXy>*x7(*n&z1ATwH5mu!Fa0@_&{5CLNPK^U$wW-m771 z6sbcq`}5E}58f$H?@{;Vv2R@K-LgR*&raaSp@Hn$^mLVp-%fS=G!vc`;7ME*RZJ(m%sXPBcM9Iv z8ly+v3hp7;sbjHdi^c`-Y)!eh27a1Y$bZ*`t@Zkw(zf8@B4cUEnD9Y1OuZViR%B}< z0k6Y+f_`Q_EwHs83Daf??U#Z>t#51hmhkVXxUUb3uhjWcv-kI;p_SJKe6KQU{2c4> zlRfC-CUmhET%pM{ahTSDGv58i*52YcFAw5$vkwjX`jD9~AdiXzHK*r1cz?bS#3qWD zG)Gp9lYtJLgKpkIlSLhPN#Ow z<=U+e+GXf7qj$a1@6FsR^u5S=Dzn#z$NSUoD1uSt_x%RJsG7fTz00%|XT4WiI6rVr z>@)f;tMLRdg~OMC`M`AxhJ4)m4Q`@kis$rv8hQMH{CFTQCI&@jj4m?{*&F?5uo3o* z6wzO2q!>PEzBCUXQrNr~OAoM1sXAg(tqVg}`4s5^x@qE4*&eeeA>d_^Jr8)Ag0_RI zgTu~$+_#v*AkY+NXYpv9&Wc{91Yq_+!@=Xx#EiA^Yd&psIHKVd?XM zY+k4>%K|fp&zwZYv$V~j|C7H4JNU{lU6&NwL7RUUeeZb||Mh{8Jm41sJ@Eb50oA1< z4>w+*JQUv74~c2dP5n#5B%E0f&aJu>_&4Q^mFiM@_POh$e;0S!Jm!J?aw|Ov=gn2KcnA*KU3eeF#fK>ll1|xtx$$Sjz0c~;%J4z{?Ebs3 zgUtmyXySI!RpVJ!?flr;vLgB6AFy5=r_W|zzgc@Gb}2q9X&LoN%OXx*b3eQGj6XC! zSNWFRU5o>|Ss2R;wt{<#+a+7tYZ~A=m(Tn=)j{DizHUBaU;W$Q`fL9$dv60DS5@b6 z52P>Did72)2$Gfxu@o&@wZw>-5+PvGx(1CJ-5@~%TQ$0M4I0)UsjXPn7Aw}ZYSDn$ zvM#l#5D_azWsy~JRdyAX%v+`f7iE285Y6-boqNvBnVUP4$#hzMo<}~Pel9n2?|J#Z zpa1!t|FzdWTxaSte|LV2?v(JEem+e0@oIDSJI4R8wv>N+q3G-U%q*P+2E)iVe$((e z1wWOGPa}uoYX&|jW)v;NSA%6GhHz({^=l8EIaOuToWFMpkWPiku_a+$^^y%aLZwK`9#wkC( zP_%>}S?@XL$FGSzZ^l4>ZvR8|A#=PpPWyS<&oS3=_?~ZN+`@pOJE<1>Ze@PRZ#Im3 z>Wc6N;rhN_GzABybX?S*!u(D80)dM|VAnbVy6 zA!8h#)0}?*S$L2&ONOyB=825fEKl31Gu|7-qXFLS+0eZBgyaufIRinwcfqO9dtwLA za*onJSADpAJ%4w3#Y_+O>Spe5q3>JiyNB`j^S7=1Z5w~v&fnmZ@&xXzX_wBs5|is{ z>K1O|na#Wd{ZiyijJ%G{4se0UhjNC>A-X<=&6mvFESX^3%5k}MmuZ`PmT6nxn=IG% z3g*{F`=hkaJVHM;cvy3|?$U32C)Zuq&}WgK;@Qwo4X)CA!MZE*-WB$}EPWb3MZYi5 z_+8)5PtjiJr(7F$jdYpX@cmRw-^Ne5_v~6xx#Mu%#cw&y$F})OehdAS85@3zu^B(b zbM8F-QHqPYpgVLLTgw&QGI=4Mm9A(`MrYcR)XE9IyEzj+EAQB-dpOfbXbGZ_~mSrAU>5BBk%4Lzyvht~Q-jTuu zqVMy~HMwV=y`O8Zv$-l3%5^4@vDv2fhrT1Lb%=7##-0rvX4dlLx-QT+F|^iS&zyyA zb@FBA$2;cl=)l9+Bt0j&J>R~ky#?v@h4>}+o}+{2xB*(OhpyVk8y{kx8!i8~F<*Eq zx&IgXH@3W;-}U$I61t(^&`p<1St?c2m~{Fc*vY@3(zTc{gmZ0H7K(^`0p=gj{6cCcNF`=uMuX>1+WKCV13 zAD68gGD0^MUNVLvo1DZbxTxjBA{6^HK@qZ51tO33^$R{o}Ig6O}*Kn|Zy7MA@ZkvsZ&_xq7qL=Aq_`&7y z20NT-FlQdVC_AS;*D#Oba)$Nz)@8hdoMoVwa@|^UWf}uonmBTabn|dyZ-g6B9G*sw zOl&!rX#T!(X-$bjvur#4rRtF<;>i?kOAhqBi6v?Gmx?9%{auPf^=wCAqgC&pb%6KX z^Y}RPD4(XpnO~&6g!iAJpT%45=lkb>UQnjKCUUF#kM1n2Ik$?;b%?I`rUvBjFrTg+ z(4~_xcLlV<#(oie+fliGWEHv1BeNBsgB=Ruxh(Q6c{e#E_%%jb@>^-zD!dXJ_0!(~ zJVMtL^BY?a&BnXvtDE~Cbf}l#;CB|ji{4rInOi>TBMi^D*FKEl88Pog;u$>uPuZLn z`e?K~vwYVcvGEVIYk203E5oz@6&YK}aUmC4uWDR5I$Zqy zW|O}&>(lt}6DsCb{E$Qb$C3ZM_I;2wtygr0QG4rSt&F=3p0y_ntHqmEWU4K}J#)eq z8>|9ydz$8j{Cz|7Vm|JjEbqHDR7>=I`qExo8vQV5CXw%y5%%Z%3k;K7u_U{nkAhZz=bcC#N~V9#Eb=pghmI zm@iMxjQ4`INaQ`OBlKRLKJ)lc?Jp~57WPfNm1hq~?S*R**M^Oal>5pPZR9@5Wnryd~BQAA39<-<2vDpO~Kd(&DhLZgy;0U_TV4=J7f_1q`hUc20_N6 zIkWtdWTBmPNQ5`{UBVs^yt(hqtUq%V@gVe!_;djwFq*3c9q5q$RMPmK%M{`Z?DcJiz*z51O#>OyCKgyi*e&M+#Y@YO` z#F?e%TK$oISvp<*T`>*gaC^f~c{g-f30>U*?(b6IEbe`q8&&o@_0$)rVZK1M4Lli#(-}rzy0P zO<<0)y~bxUr*Y)c;lrLK+Hs#=VZ^gMYrz3M2 z-+adB_yb>~e&LEZUcqPIFKlHTF60d2^`L&@J|G zwsE!-9;M+?5TDF8`M1wAwmjp_`@YU^Gw^ly8DCdnn+7+r99_5-d0CU#H)0 zne=tqA1d;7JRABta=W3gi@fK2WFEaSzK(v4uXBAnUq^ePuXAl!zjTTE_I+JU-^SOu z_pGloK2m;GzK-AaX+E}1?GJ^%&WsIT$JmUo<2gMqeEtg+Q?}Ik*FICzY3{DXVXgNo-qSvatBa?z$XbV`yJ@dSI&#dDA=CMwiR_l<4ZmRxvy`*qF$B zAF}T$rZVzIzshBWeaFe0Ys1RMfS#{J-rRdu-qyOlC2#z;PxG;DUc_&qyqU2fZ;Z|4 zvUpC_q_eU(bI|Gnh2u)Fu}ubX@CyeF>y;CYF8oA&o73i}3_=U|{)Z^K{YS0We4 zZ~hMGxi?wZkNoD5-+jpM{+^l1?{;C+pxyh-wQ<*=z5i!>KVYx#=2~sM_m#6_VwQUA z2TR0zXOhG6^H*1w%3pP&v&>z1I1}@&fyN!l!nKMMkQdpgDRB$3gO3aHSoO$~+ZS_r ztOjTZeO+9W#{S42xR@}^HMDwhO`DBtkjd0aY)MO^u>PHlVMn6*c*zj9alP#3GJb0a z_DIw8BN<53wuuGlQ@IB1N8k0T;8|f_7io>oI0GLT$z?5I{tGAL!|pg*6CZw_b_03_ z`=?i%d{%t@%gg}nA#b@M?DIzCOnEKlqnwt(oew}`i*;@Jjo=CYR-S<&8`0tH$Wq zkTs1f$GH61_!<1o#Kv*sYG+*dRbjn;qct7ly4sG*(I7*=e!P2Fq+iqLlF4{?4F2a1 zfCsTTtOoc9k6j+*>n|;%=gePukZ#7|$Gck3?Kj^~ioyTEhYb3Z9VT{_oS4ZEY z55+Lb&l`L^yf*ny=u@OaLzU;TUKvLdXQwUy?uhWu)qkCLX!BXSZ9Z%F!Omy(qo+kN z7xp}i@yq11@Z~{H3Ar^f7yO!OKI;Ot;m2GteaGdq*e?zGj>%`W@LL#jnX$#^v(9|E z(XndsS-b6;Zg;i$the>iH~LhIJl1Mq6!GupnQL-SyS+c#UfZ}<8`rFFD`W3U#5F4- z`eX9>mE^OqaW0?rdf5qUL#Fs#Y=WPYF|iA_!No4e!GGg-uq|C>@>zGu?_i5$V_&0O zifj%3ttgkpm`waa`>r0IIqS%CmE^LXA4flI@K-F2OuRB=&j(FckFXaTycQeWCmRgz z3*Ql*CF#L7_9hED_dZ{=Ye%+_uPL;X-Nv8EpBVqiJe0q8`K(h!JMOhF5z=n8jU}+> zDeQT=4WEFY_0KCE|1$dQ!4th~}}rb537BUUDVRqWd;Y_ppD)kck@l6=Cg@c5R= zJcRR!2a>u2o68Wpuv>Ey~bVIp;xct=y#ZuB&@m_ugd!V&m z1^KJ0_&tV>jJ%aThv;J?a<>V&!yXO%h4WVHR|mfFDsxTlxzgUh*IuvS>gTPLN2(@o z^@&R5YydgypOmv}?0W~2w=%ibO5`lkceo!Jlec1>F)3$Dtemkf{Z7{EQmNTP^ZcZ^u8?GGFy8VRpz@{n%U^cm2@b|G?gV-(J7Vwc5DuDXYr(yApBT zsz|=-vP$w*4cHylhssywl-F*>K46ok#3fBZ9>w6U^iDKih3yiCLOD?vkLf(Ki}_e^ zbLN@&qScFAh&{|c9CGXORWH>TY|Qr)*+^n2#gAvPu1?d3X`6OTtVe(2@K(0%7{!M? z8|JDQVW{$ zmF1V{nMGG~(A4FtLSA)yyy~&M>YxqcNad@3qI~qqAU=Ov30?`iWpY)HSIjBQAHlbG zM#qJmnfQ`1`Pixk$q%^~#iwE1>&Ardbh)Z8+A)QF(BCXCmVIrcKhqcOI-HfhUwg1~ zRP}K(R}T*wm@_m{EPIhBe`bAF?mXhcMB$Rx9u}UbKP++ONUAY0qWbYih%dy`(!CaZ z{S;hcG)HC6zdX|F=|xX*{W_B`n=S0nH25mzq2Q$mFJbelnpR;5V>*Z2@M~Dvp8GKS)3MR4>^>tiPk9? zW8J%<6S+o4CD$qRnD$0wuh2u}pYwh8y`r-ccCSaV#5aUTLRPkdz%{7>kQh`WqGBBqb}qdAI0u_wy+7`c&OQk=%K z@4a&wr3vE}t8sr3-ceIIO6oh>?>r;I2 z4VT|=JN0`i`~OcKM?twXqH1p9S&F6=OP>~ zI$2S@nb9))7j`}I37^&xJANbm8v8wJ@wPQQzyA0I@L)i6*ig~=^;gMX@8J1i=ynry zgMKqTzusccuj^XL`SsjZY^T?!JHNhD{9)WTf~`H<)(talbAH{lUE%q4)@%j&yS?B5 z$2l`H-hEgz?FDB>^xNLaHO2?&^G0&|dpR?b)ZGt_nyTycG|vgRDPJ>#x)SIft_17_%(db8--(I{$1wUxa)QH+Q~K70lhmX_hof%-Ryzx zNEW_z>6_2Ubsc8->CUYyMlkjUd*|fJ(3LjK-#deI>v~S|dVb{G`Z2_vmu=4JSYUvhOFW~3J@p>=m+L}%9B+3>p}`Y?}v zGGNJ_PK<#iKNh_R@Z~}O0k8x`p>{qoQ(ce zdwyMW+$Ibd^!;aZZQM0r@850j`|b6gxXv^-y!}O9?Bo1#iJZuBc0a}BUrm0YbiJb! zJG^+%KV!WFzt99kvIleA$A14)eo| zuUrgyiBCsj$S>2LTc1B__eX1EBrbT;@I>+9GQPKaL#cY~1|4<`_M#XS}1y=3XmnPTtIZL?!rL^uXbF z|L;<0550vg+berd-;e(Igy(!6fS3KU0wf%-^DldU_ZMjV?Xk4 z2aMl+`B}&!@-@@*=!Q3((KEcM@;v&d^nFzPMGAj$py$xLggwMpzs_8fdphm?tL?Re zYit}Mdxnh}FLMt4BWIMbbJCX<_BwxaWpnh~Bvs>g8IQy7{=;RHHbj25?t~=qi2dF; zJo7QA26Id7;IJG9zstR9=5+CHsq^Un+DjkU7}?lMl!KA2!4_ojo#oD=yKj}m#vjgC zSR4G(IQn6O4<>%ML9}Z}wvewWv}3-e?g_Lu{*w8Q!^b zSAG2Msjc+c$?sjzka)w#@3xB0`1w-!-G<1!W?YQH_;KX(P~dley0VO%BTIiN{O;%E zFMFZgTKWIV&Yy2oys(*fw!({Tyw?UlwsXIO`(fQ9}?U{cobrA^O^goNYozdjInH-H!;%gm3(?xhD5)vG*Uc*K4@`4Zl0}-1&vbM~D+& z!g^IW@fB0?yHCh=OU@MMcW_<9mFFuxcV4x;vCeyW4diW%HC1XL$@&?aIG8j(k^G{` zLsfd-yw>>L31Pg*FXhaYZw}e}l)Zn@UVqND+PLn-7nbpNCE~iO@VoWM!y0HzO!d1< zkQL-aHYqMHNglv?bCNp&{<77JTkvyH{O$>FW(?Rs#eDl^BbQ;Th&9MNZi+i=Zt%PO zev0Blo(=K4%*(`o4kI;}-{#ZS0_@&G@)|b&`{oN`=uG@~F!8(FMdxnD(-TAI#>7Fv z@9ugrefH5Ov4P7)30o;Y6FqMp@~Ye873(|0E7=fYlXO?2@P&(M)AH)QC3xkZH8;E> zF7!ahsHktSmf90PwZ;5EB9C5y%36-HoM(g0c?w5mbGaXpUZ4xdh(E~v6dW(_#^$Pe zf*jQo&-e7BrwpEIy7QmNOx*Xe&egc_PqH_MY24t!%Y7f~u@>gx@q29Ll_Oo6qkI}` zBHj9GaxIVohuso~Wjp2jVX&cT*589ANWMAxi9&%wqRdnk?_E@pAzpY_}<6Ygkd7C{;Ihq z_k6|P-)^s8<{BHD;1^5bfeR}=M3%(DJjm#kH%4dY8^DI;RSs6Zz^&|_wco}-o>f$=~ zt%)Z@SBoFslDM+|+ArJ*et0!~wg!3v9%Og)`&h4SDgAvc?R(2teqXVzWZt&peIsjR z@(j%p@n>kP>}WmzD1FJ#{K{ODd;ZtnKWwl2xz5yQo))J+C4AW8W{jVq@nj_K|Gabi64yJ z&0OzguHT2IKg8Y)&uPv*z#c?qPIEqkjn8A_ABM)*f{8lLbE+2a50i!TdGKh6cZWAj z#TVbivx7(P9J?F3-pjM!PZnMzKhNJ&H`CWG^aXv#Zsq`e0JZ*nqtGY^2|2g!EU7L&T0;1bx!boEMz0Q9be(~Ie||Ez4kr%!z?yVb>7VP zv0UHIPtjiJr(7Ez?y<;E#q@3blzY$msV>{M@l*Vk(|l~3uj04RPnod=-vBcBVvq0V zE4Jx@?&9}4u12T0G7ssB=45oHy$DBHy!I-?i`2@%hrC32@^1R*VVyM;_@hd`lLfYN z%X)m-H}17~;~o!hOgoC%-#3Xjrq)~Wce1Vr?-GkQWtzOR>XECBBoz+S{DFM-QBw8G7@M`8&E`zLUjs zlHU+-%)Rvcacr=AFKg*g^qs7Y*oaNYc~3V zx6u)P%V|Eg&41vxP)E$z&=JOF@Wwo+d8CJvg`sAvBhYDV0Nv>4%Ja&JPWevO>LNYa zVsjK*Opcipm z!d4>#=9?&%HaX@bS%a@3-uTA2?`3UAhOqTHY`va0cw;MTImR{4xblqAeJ_jna!V9% z{B`gjv3TP($W{gVcZKk3=-@@>+PKT$*SP-mKu-;9-t=C(OgN*)>-^{9A?`V#70% zInith|KAw!#Ke_Lq@%(2vSfEs+zb2TpH+KEF=kVu@D|y7`cxilv9QOqFW%}M6I;@@ z?2f)Qu~WHxJ&Vn0!On)*W5yY~_haMEcAu`qowwSxzr%w*I%MO|r|bOM%)gg)b31fh z8$;I)=+en}y8>E;_~U+LbpTl%ME~27Y4kR~20Bu!*w6D6;g5&vOq`NM&gElFUI>2q z-^+UT3!zUx{SCmQLE3{S#t%R*)!O6yKq1>hf7p$3-^(&QTMo~o@Lh5cjn561tjQbOiePN7v13co zXByfn7L3~y$iASMMy3zibMd#ZWVr+2PdSY8jn9eE?|S$$nr!}iE0ZoCxzyy#rukkL zy5hc<^_@2|FKDKH)P2<$<_y4kw#`!WiB7uCC$tvIfPI zR^+J-xkVq0Z@?a>k=u`GUd%=F`nl8pHhyb|zpe1uuB+Y_Z3CO8v(jmFq*mX|dO;jr z#J>jg3;7l%?RL+$g!aX*Z!a_F?Wg(vGrBweN4}r+8@`{#S%>`_`8LWXY#=@}Jof-S zg8bRMo%!EHzMlmhbvAv|#%9(k zJeT76bRV{FC9;W($!{8ah;5AK)bdRprpxC|fZ^L>FnksACPiB*c<=IHM@k=%^S;+| z?cnd7$a@!KpdY786NB@1#__!9yC8J|?-kdaCfp@!i&M=tx#wB-{uFzCCfC@w23s^8 zcKOZEE@A(qKP50OrOw-*H{JfTjd`3uebL`TBlweQ3H)@Ok6*@a`WRe;Ic7`_zihAw z+)syJzU&S30e@tx_9)*fc~-uM_S3|2ML6b#fqyet7tZks>mn>d$+P$i&|TiivR{{} zJ8{?3<7kPEjEM0e=z-pkNN z5C;UciL;S*jQ__b8vhUPegqGS&h{fS7BrezGWGjfZx?T&uktUI;+xkf&e+U5Tj9+%-h+=tc{zBc zIM|O(GoAcx#nkU>HRzlTwo%t2eDf0Ip$lFviT}RVzssJl*bw`DEz>6WX458nOSwMy zv5s+0)28u-$aDTyc*2}weW8B4WzrXZ(E62f{>bDcBJVjL8u~)|HNMdG9p?*O8`f|2 zs_#mCp?lBzLgPc_hgBDV-~8`u34<}k7cw^E3z@h3zSiF>{z6aWcg9w8ZRd*I>nx9S zO#kxBJYU!)eVV_sT7EkpX!3>V=)b>){)gyqBQm%N-eNNburD+E#unq#zCh{@Y|dWf zbCi3=na1v9dNf|Xu@xgTMZVPg#@6eE`@)xYnrm{;tL=S>Z*l{F_$hBJU~hX5ugGo{7KcS9!3o?>L!rZCIJRLeEzs zbM8Gm=C`=MV`>$1)@M@Y%-DjO*d`Cgyxp4euIF2sgH9pVndcSvPx;2y@~Pk0s#^B2 z(TmuJ{JiWQvbUfHvS-$D(C9#L&u_(N8hlL5`9R|Ezb=V?W2FZ~K^UR$${~+Z4yiHn^BE{ANX~7w5FuI0wI{efV?> z`+cut49Kfumy;z=*vp$_ONnO`hn^)IG<}&qXus&275tvn8iZ#<95iF~$2lb)vGLqy&-jw((q|ui zu7j@q@Xqp2bj`v$<(b@GNyxiyk9R$mcOA6RNgK%1TRq-=S#dtRJEH{eRFlf=qoAAS zykcLHu_Ob1hmS9bjt}|M*rM^X&On&>Ic{w2jBPbzTazf9 zZ{uW4{GeiD-U(|aAh+Y_jfsgW_!im}8HDy`t;ihRcesABw2U2KEQ*QW$T(d7X5L!RyY+o$d2-~I$lr`TKo-;3l}c)l#`0%0SZ7}D&wBwjZXvRRyeelI z;y0ZAJqY!U<)ejf*0l)Vj7)@hu(k*u4BMWCro=@7zL}g*xX-TN)=b7uZ$+Pq_SwDs zQP#(UMc(^=dwt`7d>(Rye3;x7vLb(E;&pt9^xxP;@=XrkZ1@1a+3j*zp7ZB_C{R(s*?J~9~6!XpZfuGP43xX@7LSwRa|3Z4*XjwJoC4n6=P#c z?61wVzVYid--x|glbS>O0snn%PQX&wi&zVYDl zsW$CBk-yc_rnUL>i`cYk>l=?Ji})YxPkMgmc~$cISbwbWy4LlLZ`Zgd`8_%AY5dUB zBm9vcIx_ONTJr4vrWoC|e&|rvH^%;%^ESE``6Fyx+4DBo+Rz{EDD96nM*R`bhPayl z57#&To?;mJA?Re}2AMRrk$73YNdFW=d;aJ?VOb0xe18YSo{9`oXPl{GYThU-2DtP44**d;e{F{U+C$ z`n|bvx>LgMmD+EauDF{Xd@X63CMGTcDPRe*|x611q zUp#GnDg4|aMu@;A{;>tA;!_F&dGzSyUA#P=S|`o>QZ4+cbs4O8*Q zJ6I@c-EM+z&~K*ojg7DHZPX^(*-Sev^pjZ?;EzXV z2l(SPtcka>uJZaUSKoMwA1c>2wsZm+W6f6hTYcm5^^H$c4AUh!flq6>qBDw*wBDAU zWXOjaeQBG-RnCOZGp%n7o^tnkeA8#Y?&=#SOV&4*zl!3G*MnJERCi$Yjhlp@!zZ0= zuE{-1?EPYUZRC2W>l>d%-0I?@ztuMm>Wv$m%QkczJL2|+-igerCi8*RH|~9o)d~Da z6q8@BzVVFoVkP75uB^VX(+So79orkNZ=C##)i;*@Me)WrfYXS@8?Po0h5w%zeA-Uu z4~p>q)-Py|-NKz=cg{A~#$9dpewDp%wbwJb&NMc>@|j-j&n095u6?eMxYp%ZW7R8u)7XGx5I}S0%j4!~+MQ|QAKl~h@j>M3) ztZ)3li=id{$i&t@EmuPe;s)VxM4u2}+~?)$TglbqyYlVOPW6&ollU^|)}AaB;fvcW zzIf2X7ejZy#_!R~piLkBt%EQ9vprp02*}uTCu< zSIIFUdzIBUCa#XDZ~Ws(KPC=9K3&{=FzXwCbV-b!vd$rNiE- zLq1a2rZl#xR`rda6-N{C4HAtR^J%k(8Hc%_hcN!{?Q~}nBVs4 zH;aL3;kOVYg{+y{e8`f)Nb#K75{B{U(~w2$`;48FeU)tTtZa$?<(GIEDP&rEC5ATv zCT_RE#I<45vF90NXbgGIW|GZLzKxF>4SbZ&(4?f($lHfrPT%;86#gQOzwq@%c=5Ql zif~P~O~oNggkQv0FE-cYo<@8B40~4j=rle@7qiS~m7M%E8Fiz?)1*?dlspIgWnV;DcG;I3pX2 zJPLa-g?7x>$5!WKlJ%aTz&Bmi|)pjo&U__CmY0^8c09H(sN7VKeV+g%{g+5BpRR z{&!_8{&%;<{|2^>cypY1Gs9lA^7z%%H=g3#Dr_^vV%`crnA3#AVm|1dh0$-fO!^7! z-xOgndDi7A@(+4vVIuGK+xPOwt;1qIUw?CbJ1i#ch3EEN8`ck9tml0!W=!8EN8sMG zSj-Dt-!b^#)%+IvHZ!&Wi#Y}Vt5}NoOL?*o|0^9_?)kRmo^L~ME&jJEehYW-6Md_E zh(0zVcbkwAeC)tXF~5vSF<_KJL?hxvVjaCP{`*PCl{&ui`dYwYy` zt_EKVoj8N^CDnOQzJG#sPl&sXld}QjtbbC@K4EzlVt!+IZE)t1_pWigrcWbh^c#!$ z_2ta9Vdd=IYNHZ4bMIL>yUg_+gZaIX-$FSvV~ekE{LQ6S&RUVP4*0f)E6)qZG6nOy zA{O(z#oCuGMdu4*cpTs;XPf-|7_rouHITP4#*~6C2ZHmhb$#Qzh4CV;`@Fd}?z-9D z@3i+f+3Ss5tBvc%8_W2+5^>#u);GTMmBWhkjp(quw;rO6dx$h zBp>APy@lUj@fyZ}4OGnc1=+}D*s6x<>l;6!wF1wExL(E>$YUh`v;e!e zFj2^Yd(yeEYvSlk{C6YNh1ny$X_`O$GF^bhjrzJyw2fEG-=GHFiu9>~0v#o*wDX z^hLWaCv_<58~^IWGP=#Y70X8J8}Bdm{jDC(q#@52tt973EH1rG@ZHKWhv zyL-1kzMf>W@XQJOpTiUHpRL*tGygvP85$?PN8wp)?i_0ZF7rPMF077<(>N)b9p4WE)uWAZx)eP{vruGkOp`i9p3$lkCmcs8|^+M#@ z`c38Iu`9&M^p8ES1i$-nVUF;rA2ZkFo{!r5kJ#&nxyHs4W$?Q{enyO)DX~`-#qZuT z&3S=yG~bB53F8CoQ5YXs{O;G3L#V*)8ntksrskW`JGcD z{E**S9Qj)z8U{R3~TZ|p8rWJX3_dY z@v?LYnT+mb_;}qv9?Ll%uyDFoQXl`3=OgDUC*vw?SXfW^>vIzKC9XW~+E3n8jMr`9 z`_fUo?n_UeF4RN|t!q1h$>z-Gx zo-qFGGomjsfQefV5U*=;is-iRy2;Dm^q6Ax-)mh04TZU=6s!9X_OWFB6N|I>QG;h! zu&LjS@t=>5+WO@46w@C)Y4f`o4{OwPFR{;BWV?_3sG+)M)k2%#9OHz(39^>;m}t}C z(WZ8I-N(%LF#0@<1vK*OoP6~p=;n_Ty51J~TXcjmG_d;s-= zk;RD&Yd>2r`0*9+U%)u zm-dmW;`~loeGb>xs9RZ{gF_ZSrfN&ZfU_;+xjvo4)cTi`QkncJi#m4`y9{@?%-r*iIYov-N@H zucCO}kAW9iR96nKOMPG~k41PvuRd^#uxR+CW^+yMS!wTIV6Q8<=DMIaxhI#8Qq4zG z_vof%;aiu!`HbAaVTPYz$}Z5nv_>^KCFI`iXBoQEhWR_PZ}3k%CwV>JzNcJ>>I1)* zxYfPqX!%*_coTHI5t^Es0h^%nW}7eD5y-ye-P8vr7ElfCoc`WhLMQYaI_a>lH!<#t zbRzQJHv3+VK9v{O-nRBg!oK5l!nI-LcfH!EL?_&PRws(^y8Je-`Peqs(q^a=j7`{E z)enu<2Od~rbpkq#4WJACTzOtKdCK8+XQUS^p>-#|bTikDjB``6a92bh<}uz3^%I3K6lLgf~*8KCsCjUTv;Mrk);Cy2Cz0cy` z{<^vM-uT4TAN*Eg_NLtSL}A|!_JM{28Jey>u=FpA*S#J5M0vdKbow`Y*E(Uokek<; zEA@Zu{j2SLhrRwC*O|tKA34s8e-n0Sht++=#)&s7#?-T`XNJ{n^Jz#7Ipuq8 zL$=<@Q>&{7eD8CiY*4uaj(4!6W=!`3V)W3VGi2ESS(C6 zZOb2IdCt^1p*_PVZ#)^EofR2V$?+g>S>(?6m?r46Y|>XfP5p2$e>Hsh#gCaByVuXd zjm7geZScJDQ?&a_Kg2=@>K9&>nGu6 zGi#Fg8^+y&%(Ny88^sUr{joNF!@g@>_zBI6`M75-K6jV!x$lm?M<2Du=O*LmB7QX> zbB*XEdslxA_*{JReX8fH>)-IX2M3?~?8V5U^>s7B=NjIC&o#Uu$CX1rW{S`Ku)g1i zKGg!B+aheC;(v1`{H|a|W97h~JcYmq;6!s*8pUkR$ zFXM6bdtY|$qzzHdY9{#HV_lqqP3q!ZQ*##EWUw0e1LZK&*xYxYLm$|fcI8`;gG#Wu zImIH_3xmz5E04`MIgWPN;3@WHD9B&k^CZO|WxlW13%}MPYkji8kvvvUvXJV<#;#2k z{wN!Zy*`xq+$Wt#pPlsC1s%KLBlJ$;3)0yBM$wrVB7)Dw<_GxPKR%=QUE{xzFXO-Q zfrkR0`;}wL$hq|k*I9r5sIAX?-t%i%pBMR?Xq#G}_XFZ3e4hzEw^uR4X5QHfFSZ5# zyIOqi6kCVvjjy9k;*_zjWL5ZF)28p+Ds1y__}s(=mEv>XrC5siO?k1I;B%|xw{QhN z*LU!S=yM}-w+R`+9t~iBXH=7ywMZ@Tx$hJ{4&V5X=9=8|c6 zQ~zY{=|X&HCHUN*$?i+eSSM72&#hYCSX-{DfxP`S;&UGqhKqdCx6HM1*QmX}%iiy` z*E_jZ8`u5$s51VpL|hle=a&5b6mdX?IKb53RZPeFP&lR^pN*^_C$dRXVmjim5Pze0 z&{-eTGT%7m_qmD>6*uDV7V)gsum0G^=JMNo+FHQ87b=zwu(>zJ(U|z}7UBq?KjuH> z2Oez;@=x<>RBv}cbS4Hnl=$2aHqa-2yb^qF$g6ITSH!P|R~@v0{G^eeYb~$3OYq9a z<{Do0CFvg-z>a0$+nb|fLdHyNiLa^#oBLKfp0E%4-U^SjuRb`-Wq%^^8QcK3v}TR@&U;G6r3*a1?!~9 z_owXM{?8YBHmE0pmnxONUW1MyBUxl5H_DoEIdQYw%g4sNQsZo~xme+(7;~!A!{@RN zacj&pcIjuwGxm0#Sq*<^dknd0)x6-B%ULPE74Z46U8%amcctyR<-5^$8H;c+>6Jll zY;1Xwd*pE?@`ydlI-6E%-3Tpnqk--Cs85>(yuXk!h>xQ&`Rle|{W$L^tsmOcn-}=URp=;165S-$laqVwa>Fm0+HR zg-=3uKW(nbJv;3EC+&4R*Vs4&KUk_Z?=PP2>AsWi68l>1G4^WSEXjHaeCL8h;T4)c z^YiUh(w+a|_b|S&_};TbBlPc^%0(=MKIGs-Zxz8g<%F9n@d$bR;o%xyXN=9trw&S3I zH$K_K$F+}xY-Z_G`){(H+Ur%`epB>$E7!HKgBSR8b#h|uAONm#f90}rcyIW9|EZJm zP=xozkBw?>@c!&7dB4mbBfNhgMqV$g(w}`!Okc1n~d@bGHO!|D85ee~TL z@^kEIF?w(L`6bKGM{PcIY5g?$Q2dz5hxXvl*5S|k@n-|bKk^)WFY$<-*(F2e{TVhg zgRCom5uQ&O3i7&c&5`ZGZ=hG9Kilj1GyR4xISk6x);EMcg=a&5=GT{xyr(m^@`J*m znr~D$S%2pGcK(d^LVxDkuy~P6)Q0cRV){1z%)Mv**=uay#-H(9PV=#C%14I&%#4k1 zR5Lb%59T?S)BUMpA?!~IIvHPs%*y^MmlOIk)>f{buZb%Hd~o2;%J5-~wZZsO^q_Up z4q^j+eDD_GgRlDp_+a8V<(;J`;5~?4itG8l`1k;CbrL#s(%fKd@`oCu?A#Z%){wm0 zHiWfTTgGQH{*+{k`YBFciZEGLZnSp4pMK##n z*M4vp{hjsVU=6-FarmYbw%WAG`>s~oKISsU^Ras_b}jLpr+Rh;8~hD#{*Tt#?>(FS zm1(}mI?BEZGOW1BeE)A150W5>j_x^}4?oE>KhdzDCV?FfhrMJPh4xx>FlNbQQE&7n%;{o?3vS?`ypc-p3|Iv02}`xHa-K5 z#iLQ-hpDG{Z?f>vv*6JH@Akythj)md#r1wql&|OSsbTuMiN1QE?akcZ!u_qfXZ-#A zZ7YA<#^1K{H~1u9(Uy4ZHjD8!XY805Yo@&bKdj&OPWq{9=(A|u z#j~NG>RzSy0{n2~J$?Vp_$m4{eu{pD9}fF=ev0-&Kjqr6K1FpQiu_be-^Ne5_pG0K zo$cHBDSpdoKDNzQ@>}Sq%-HZ#jLrBdo=fq(>O7yW*rp4*i{ERx_HyNU<*%hHnv>C) z)*}3H#e7!Wy~OQ>4g|jAB;jo@>yZs(d3?`!pY&Yn#?u1=VW`o#9kM3HMJI5 z^E#}UaKu`33oCoWr5B%(?K;e?ryY(si;XwCE`1>(sqQT*`dz<9*shue{<3iR$` z;nC3lmzithu5<1EIrjdg_IeiAnZ}Fne~K3qIe%OtUOe7@V=>r|2=a+bOMPEaSe=E) zPZK^D*=SJA=;L0O;Rj_?ksV<*g?lx1S9mAPyR_LgRz3V%hWtURObhR{qOVK%|HgnP zCXQSp-8}qZ*#==jmAg_-)tx>2p>ky5Ew`1eX(|wu}XMWMfH3|Elp`XPQ?>GB7PoK>B^wZw}^F?km$gONv zu5DJc&N=A2?GqDoca9-*x19oA@l8|c+QECBw9ysNs^)lN_~qk?k3Je2d1KbPx+H#A zJ{P`=-Uh3SA9Oy#@QnL(x8)ghzeGG+NjxW;)54q@Ezd09g-JI4fp!hg`jgO(Hqgrq z&pvWg@z_d^3%O8kSmVke2jfkXxZ-0a8{CKEs!tS>c3dg?OVeM5{^D}~-;4Bb+NUiS zXA38mqm62D-c$Az8JmlGUqEvv~C3@`ig} z41J;76VelS@?P-?zGYf$jbNS)^yILhUe;WAI6pDDE+F@-`a~DUjdeKL{8Kwlmmj^X zlJoJ%|9B^B747>VYg(U849?n_=}Z>JT9J=7c!u5W6>nM@PaESww{(tP=aSOs`W2cN z^ZB;ZfBR0B_cJ!1*%^JGz8q#y{f%L-Qj%wUS<$}EXbD<~chGK}e%<#kPmH6Bc-Vl< zAm73vk3b`1Pwe{jyknFPn`ZqwKtF#>jO2e)*SxQ8R`dRiiNZshh_N<9FKD9N#bkbL z-p>4QhKj$TZlBS*!{U#LHNm*9rrkC0pRtM7S;pt+9jwcP^`Xm|<<~L??8yZ2$v*ag z_K}NH{k!?nIsMi<8E+}~Ra8UK%Uk8inekq*7Kyy4b%gnzHMBLg?a+1Yzl41gZ{^to z%KJGp*M^Oal=~{GZ5PwGS&O*$Y`k@j>sz($_-&u&W82jJP>7u|W23emV>4?Jo^xya zBacBAtsWX1xDr|A`4rE}p6Fk`$*ZC0^CrL_Z!tCPD&&o9o$^;EpRar!a{YFFPZ+&Q zp;zfHexnbkH}Xkw{4T16=<))@Fvkf)$@-z*T$6i_w)YF|^=VvVV;H9&Et1;=a(h_w zerWIz<9itT$d0_~$t7%_^rZw|<+)aW%>MRt`F9)BxV_<1&x9`UBh?c4;UfGoc2RP! ze3p1*aKntl)rvcwznPraN)O+F-HhUoU)Mq(@MBoKV7@0ScSGChh1eBrRSz-DS&6z$ z>4ml*`Y_lO`qmlnF`kRfi7nuF-pN`UTo*?>Y;b5_M(zIbeA$<2&d;yI4)mjM(L5PC zkm|!Gu1gjkkd4JwC?BR6riga%RQ5-5ZhWTrhfQ(kQlBN-aj*TQF69P~N`fo1w8Nf< z`L=%k-c6r9Jc~{}^mO{{=Jy`x*Gv1@b+^wk@uGmf=ZVhH*S(YBeILK^lSmt8e2m5T zbjJK+Xl~BT(x>cK#ksT5Al8lb>CnOV3m=SFUHr=ukm%R?>JxQ+OU4<67@}PVFJ8Eo|*yji!Qg~{H*bH z?mg@4jE`h*Dj!oXSo=d$d>vymzK(gPXe)hNvhXU!R4vGWc)yx!J6GnSbEeWW{mU=& ze4WpmD)=oQw@T~5m5IV_`bPT@eQiYkHo;ePcL3WmBV00LQ%=8Z-QXB`De{$G-QZUU zr-iRP-&|S$+xv6v^&GA~E_n;|F>%{+_&BkTGxA2i%4LOp$H|*(!^+!$p07mS+IPrLZ=t-Iu?6+1O)iUhyEWpM z7g~9PP9ZLt=M~3KsT;g}YTe*!?aUZ9dRX=jxjU`~a%a|K(8pjJ2a`ruTwd!$XhAIw z&c!Fpx%hdUi$5db1=}Yx8X1HE07E1H-87Q>fU5w|0wt9*uHM|Q+i}u zkK7q&@8ab5Heu6<_daQ^jk~tn`+v3f+wAo^uGPkS_s=Wi2TR0zXOhG6^H*1w%3pP2 z1DLzPCoe=kh&7Z4`n=)<Hc5HElMo z!Ox|Tmvl>_@S`&r12TG|WC+`Mz3gTaztvlua(%$lG;Nt!kUrg+w4ZA|!LuPwnYjf% zutfY}ATW%Qh}DBkUk z#JgJ0?JsqnzK565a;V6XIv^&z#Py6w?>!z+#LCvu>r_q8ar~J^@QK)&wT;9wh$Sj zPvsg9MLl8s@O{D`>so|AMm9pcmfK5!-@;ym7+~TFgFhzD4fnyZ^9BQKV~w|>Q$>4y zUQC?z@mi7h-e}*Og4fb>@H508(_Xj_?%J^N5q~e<>x=2z#N+NgJLVVJzT@!6&*isp zuMc{Zswe!mry)nkhxTY>yX1dNJP!S22aH{8n#5}vK7iLUd>|f|ugV~Yig%)X&^qkP zi;(NKK(3Vwp*`|iJd15Jm}C21(O$IWqhgB*i7pQzen?p*qhjR!P=Nz$~9DBi?;Z4z!ufIp76PvN5mejBJMH%xD|hd zzsTvzjG+-377Og*tD|eU(kyk&j0Kv?SD2}TOQ(tdDi7*vSrS{^xOAh&%dZ| zhc%(SQvT;+wc%q;V)~BrKNr}(6pgMsDPXWDjjjZu}2% zv%?FQ^gl6tkpDSJa*j`HK)$7q*su^Ud_CV-Ph5HYwO3zTTu-=x?>R^D!ly4dxb=kp zllJB3zGJS*J^x|vziqGIj~d~BJ?E&F!ZeiFD%~Lb&XlWpvw-^ zVPuT^5HF0)Olxg|pGYm_@2l-P%*P2Y4B`}n^#D^R`&CIj;jhp3>k&+4}9K%;DMoSP)|6( z13yPR7!VycOsyxpLq4$>4}83QG=EPGL${lt3G}N74-5|-9(an4+C)2>X{QDLWFmNA z_%4iI&g*lclm3yLo5UZ+?bj2Y;)lw$jV(3xghy$gdF;gxO{piW-}X-Ci9aB_O`dq~ zboGQI?_F-+n^I5M^^G5zQcu{mVb?)#RvY-Ca(x>c;oh_BpjX?zZ&aR`-^Mi`+a_4C z$=a#V!_-b~n~DcMO)*TD5grzu-w0)s?Fwj9yqdELwB<_+Me$@I_7L3jWvLFR|CfTyv~N$2%wO zlc^)j{rHX<))D3%V}FqOl68ddO&0FMkGput(XyzH@E~iDA^5w|=FGMQGOs$q{{sKa zIe~V5*WbHK=z@Mj7u}u-SkcOKA@bgJ_C4(jYYnS2l-e^1`;OBE*M^nbtJFp%y5Qck zy6}&-Z=(zRHm>>DHieTZSx1=XLj3QMRu`aCi2r3S+N M;LwBt+UCx7M+8Lv3tV& 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
                    1. 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

                      {91|{aQAz?{4VkPM`+$aw3>YHmyuCE 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

                      XuWbtEV2NOC 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

                      Mq@ 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±=JPik?iPRCKk*1u* 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

                        Z)p2KWn2J~2fV=@7Cj%~#gP~HPa(Lu^OyyF7tQCIVuNE91 zZWS$V@_{&d8dolbdCvI;E`?ILo)%`ryuu^`MT%J3o3aisO{NR1-&sFbC{8&5&Na&; znNXlH`{kH-!H@J&)jOpg>VgbApu=Wqrg${1A`{VobT#boGrY9zLeos^RNDGv`EyPWMCi6gN#D_q@(ZXc8@U&|rmA0f zU#{6wo-*iQFSO17A{v!qv!v9E9@WH^rj+PdIbmhX%Br%tKSf{@SbWFY_KDwG@6;OT&9gU7HIrYbAT66o?Mm6^oW&nR@UVj z_Sd{yo^Uq1v()^Jt$>&o*a=Xl6~}t*-ECVf{qPP!K6l~xHR^wZgbQvjUBe~byl9U za=(>ltQ@iOHC7H=d8w5@V&$Nf|J<^V2`k?bZ;s;lyD}2Jr`3V}8;(VX_dHz7tZ{{_ zF%a4>&p7NV!cKb=_beQM9HfCo@QZE)?6^Tcixs1n_`8jByMkVXx@yGvwzxt-tFEge zt{SA*x_+FqAyB6>piY8$aEp*Z#<#d$XE_FH)GFu-%3NjWSkhUyvkqco{s%* z#_pe-e_H|*x| zQXce|6zMCk(z?~MZ*d*@d&jlu>-=loyP%gUPZ zm~iD=Xwoky$-!+t;SxP8SBNr)Xz2;`lS9T@?c~ZKp!2nSzKl;T&MWww;M2DKRHm3B?7KzwBscJl?uMn6O3ab3fXX|qJZt5cmFKOz*~;sz3^@_V zE6@Gx_(mD@p9~)7Z?uwb%EyWJ&sZ7Gg(4U1_fXTtyNsR8p3q%)*!gwvH%DwJPVS}(^4J}?z>YK_I~|Ij zQPUg*l|sqRLy22wF?tjon%M3_vWGANxf#N2$X6P_G9!ht|GCTra|9>ADLkc$(Qgw8 zkB*8I0bg^Q$`SB}%|b6~;VHbM&-aB`F8Xfb5eTeB4t(QFwyrQfY-@>F?}q}nji-rm z+vSARsR|12^XaWwB%PMzUonVcGJCY(3bGy^!)3Va-|LEssk=~PJeudpP`#kth>_30 zz08F&LI&Raig`!yxaPqbFj%)A3)`bms=D+ zs)21Vu-d-wtK5NrgyfyM?&6`yT9)iLVNzd7c7g7R=mZufkP$E+fIhbE4uJVqGET?3 zd!p;eC=Q!<3k33_#VqU~Ky~pBgXy5!4sPHBb_I=DE9&A>c1~0PRuvi`=PN*uHN$w5 z5sGm3F5^3qDFt31bOJ;Eq@R{ffH}XzR(vYkTK}t}T_hN&G5d;f-I{&+SpfowHX|$o z-B@8l$$f3u2e-q(_kja}nP+M=1^8j3tSrxgXjqd!}FqUFzY4If?2(s+4^<^XWxRK6G6sRLaY}VO&q%& ziSrRM0440sV94}NR4ji|fq~=zU6Y%dKvGT2Vg?Ve3qu*dRym?@FZ=+;&OEWgMK3Xl zM2u7)_DHs~#cP1C1Tvw1%j1zlx1omAt#@kLc|ul6f!mVnX}Qcl+=)teM32C}@jT!e z`{_KX%W2jtYi9(7J^WIk9liGjcWu=&`fxk?a`xj`G0XIFgvaUs2m=CV$rd

                        em&VteEZU>mdB9&=AMv*5(-X!3}I*BwOc3t_w5Z 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≧O7?0-Z4M3nb{=f&7y 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 z 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�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%0A<>+ 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%0DwNgXt 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

                          v3{09%&H|~~LvawzMqJBHR_quX7j_GTY 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 C91blbCc+*}6(SWH@AWlm4opI7gvzXVKS6 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 BNXU{y62R*vY57lZj2KNh{@dk0 zK`uKJqv(Ruj8MRq_sI}-izqpCj9T0?LwV1VY4o_CkNw?!~vSf|poMKr94$1!}?kK&?Fo2=q|8L2Yc{iSabWg_c^9Vx|1fAt$i z3>wWCXMAZXX1+t7fBs5T2jMx!?Rn>QqL2#D@!5Fyi<*D~20j^nDj&Q)bqwGPOqjj1 z_gL~4xJEcuZx9ceg)$GL5wnhcWai1-!&4F`CBh-Yg8Sd_$-0KpNwZETkU)qBZyz3*ri{ETHgVmH@0&SEG{RSbnD#bO}BGO zyz#|e5}uAaVl4!pcf#NKJ6YHU2<>y{Oaz~I<9My^i7}i zG^D{DbK9^wri~H z2HKp3w6pB8?Q)kKxaOej!{ULc6*rsW;Q!a;d^O)F zbawwMWD>|L{@^7>IfLohVJ4Fe7Br0@epqgDQ@}KXW{`$5;;4&^)vsdXdfFYDHY^z{ z1-L_N-HcD>3>iiX9(T~@KkeN~4!Z`Q6N;Gl?6`y-afqB|A^e>Z{?1(ZJ83_Sa%Yj@YA=hXdM3P9;L0dyB zJ9r%;x&U3c=Hkhmo6Ul(7Cdb%k$ZA9JSa6hs5DTbKd8M!3S+x~!_6Rx(w~F&uta+} z7wusUo3ETKROC)I@YPa@GvZKpo;@P*9+7xO3(RJKN9Yxx=Wv2dY}uWIUtIuBDR?{4{2stm&lGy~!r^jyPQEcWtsA1=o8Hd>yiRVtgZwi$^wm=o(m;hTPDJOpM)$o+^{MsRdlLzXx-p- zbtof8b0MD?ZyF^U4H>$+lvVOp**#t=EcX!6*!w=OR3VbZO1rR z>)om7<-lR9ETfihy%Hp$vc1w_S@qi$3 z=dm15ci`f@eoE|Cs`?j;qZ(hitA0-L5*@VE+?&H7!wfQc*z_Ey81OL`5AHe$D{?Wp zy--+%Wz3HAqn$C^^AOYd&<91_OybbKQuMd&MEiF1#3};qbi88|x&zc(3CV$5unfbW z@5OX#JS97Jh_%1SiDD zlr*zGk~}y(p66vA9}6D+EqVYx&ujY_t5!!+4<>B*IuF-lyqWHn;!0t5_(Ue62NE`H zBW-k91uHIPiZ^p#%a5cXnM8GQoHD3zD&ui-UXYLD8)iWVW@Pc%DP;&|tcsq_f%$h{ z4vfx8!6|`bXQOJ=x9l3f6K3 zX?YB_(7^Eu@o9#EmR)lf^;}}LRk$&)X3VPz^II&jJJ)l5g{kyoA8P5yhx4dnQqNb=VvSJ)A`tV{sR$d0`qh}4h|0Z#0Pjp1cdvvPh|Ds z@HtJJL%X}7+GeGuf0kQaU%rN~KJ^ju6$+_OBwk0#U+UmdI(Ro9n`YcXE`Cc8E)z() z1Di#7y2~j|9XYxI4W*JIa!@Ky&vujem{a@X{FguR!HbH-#{x7r2eX)*j1nqV<%aBM z$bNzxv{er0`pM4Yx5^Y_H#U6PLP81@T-WJt*l!s28_Jkw1^W%b-mhTUjhB`D)tG!Z z@A{6Y;PpE2w@KmleC$Z@T~zS*Na2z}O{>rH~cUkWcCgq6sPXE*&L;`lkUcoVb@ z!UBS~O~GF&g_jFqCw3QVV_jwnS%)(YX;|Tz(m>b#I%dQ_(L6i`g^rP*x^}F+nX7V! zr?OV(tlEsiv1Qa&_+42&MPk8b^;RF8i@;Q2<%-R`?BHx1(4vTTZMIb$`D5C$3oTMp z*;&dm)_50bT&*<9HI{}w)F@Vtq@La#_1#JOo>%(hqS61RPp)!|$~LePyXWj3Y+9o| zzSReL+kD_^TzQcP`)}7Ok2iByDr@M`K#L=}N$XOKQ%I?-@|+!%K1fQBMWvK=a^1(Z zY%%UX<4?A21>3(P{KEuqD|opOlv^@zZR^MAbJHM!yUyK#|0AT}wr#Rm;FX|0rI6it z%ut=x9>23axr;@rFO=HS)k-U`P_ChM98YG*Psu5FiO*5wDil&fwV^a|L0_Z2x77#3 zKl?u@6gj%Z>{h7j6~EfG!oUZWfk|AaF6&^j33TrtP0wHV2pSYr!24o;fIOv3Po4}{zt+icg$hYTT1x89o4KSHIFJa za?LSU4K7Q%D@bm-a21izv7oYq3+p2k-IK{#I~`CORSo$MDa9Hja-pd-a3Ot!j2Pda zTL~BR%f4Bu$fn&cDj^T!aJ5!dK&dHKyMspU4)o`W@kMZR~gd%&FKv!33eeWq?Gk4DG04$frJt z@1_QU&+UVR?B59*$=`v{RGUM%?uEv?Im|f@XivIhE{i8KeB8_4w z2~lS62!%9%`;|=Aoh!8jqKuc(3!NQdFhPR~W>*r z@hn7TCGWmt&DT@_*^|im3?7w;;PZBfeSBON)ZjgDc6&Zz#Osf&3B?`o|7vc&vb-<8`y2Fx z;#Ghp;`qlIrX6*%z$$5RGipB#zs9`Z2bm%8o=V;Q&=73He+28O@gPw~#ATKv+98B? z2tLNJ|JSnc9I^|vIkpiBhb%!&f>h>!9ZO)xBDGT#*s;3+n-pqLQTuWrwtD$_!L4*x zs`YDpU@8j2`3O3jrR!@{ab6+{8VAO$RQxKGaN=r$ejfajE{5Q9*tYt+%$-b=LJgQY zf<;G@J9Y4yCq8z#jNVlL?KgrAJA>$K#_OJ#de?m817^d%-b|;sJ0;y6DgC@sxRXLN zxiQcoTwN*Mt~cUvqj0z5gECj-VM@{#Xu>Lm8-!nLN>5m0;CkUqle1L3OpiR7zoBP)4j}W`zWu^<|MnB$y8LW4uZu?O!e&Wb zG;COPB~iQX$e10CM{5$bN6JH%N19e3iudu344SnKMi~5?PR)m|Z;znkXOP(a20`F> z_dt1xdRkR6X!HG+nDEN^q4XHjp?GQZWh}c301k!mI{a(^*G?N8fJ6Id>M$9dwE%~{ zyg-NZ2V|pg=J%}}Qi(k?-jWxBk=nXK9 zHFYe4;^#z|*kF!BVJkRn8pBp_*!D$Ge3qBPfTV{ORC3t<#d-r&Vui>1_)vWF51iN2 z{>{G>b`FQ_!?1HWZ0jQMk4T75DxJ>$z34yh@RdWrn@KN%;<$(PmI?iO4Mh1dg)X|7 z73Epcz(Uxw@*%E5sZ!B4jP-HpXr>kDX3XVoECFT%Kr<%xH|Sab(2Qke+_(5VI6yNN zj``op!qJR{3Ku|m!>E}J>`WGaFG}DOLs^$z3#&9Xxh)CBoA+YzB|qa|-GN)_;0~^^ z;)cb>FSxalaH`-@m1+kTHmRpTB~eWSAK9`SUHe9Ph;(9av$vw-Qh1^>=V(|;WUo|{L?9E)UxcG@;hHu-CfAyFhvf@Tf*etJ_IDI-iFOV+B zXBLL;N$O8Boq!#R#iKT0fzkE|WNLJdQAhDTP@!cTXeS&Bm=5?W&dpc-c6txmT!G`| z-;$A|o1(UZ7ehvs%*11ua!gR#>>eAe(KLJ_ZjCniQy&cfPS%7q8diAPm=t)H*%Ysg zHk$UV+BuC;h0>LS_7FZC%3t|}hcxUss}$rz8jb^SbT?E$CaeWkw9%S|_eBr;6i;dk zkB}9xO~VOUb;?hZenE35KM&mVYgc+k?Kt=+SLZ8k9ea|Rh~mZnmQ-N|DX`c=nS6Nw zurG}j_r;yG72n~w%5)rneG9kw;K}cNpxX_w-?lq^G;(tqjTr3TMy_ePNTvfYkvy3) zd_Xo7hvDeNVU^U4G^EPHMN+jF0Dh|#(OF&i?bK~P_yM(rLx?dJG4SIA7L@Rx^#X0D zG9eK=a*)fZNR*$s%?HQ)OO}Z8Y=MZ{@sb^ig9PZ$0h*>22{U0DGKnd)XP#%d!?bwaiANzq1&6-$ME zDYs($Vj&s4H!2?b0~XCFz}|>867*A5wV|#ge`crIG%Ji^V8?P`e zeiR&A4%xCy!SG(3lSM*7u-Vm-(qo~9XdF&wH-3URR9EjtXiMov*fxz|vzw{SOfN|l zPr8s3sb2gNytvcfnNp=RCe7p|mPy-l5y$2vzDQNfi!@B+ModZr#8vz?=&F&fkI}{C zh5xUh0ESs+BMY^QsKdcSAiLnNT|}b*Pv&er1j|Lpm_A?qE!!T&n?6#=rSLZOL&iq#G0#zU;~B32B{L8f%)*X5Y+qAEOr_tx z$m0G_^7mw_{e8$G5)CH82?xFuqmFs_HUD5V0$*rN+py+L^A|R1pofA@@U@6qU%W-6 zU8SI;N8|OT4c~|Wm7wei)JLO^S&4Ott&vt#uXJ0p)FT^_r5-Hcmm+@yU@5(d_cXd{ zqzk+SFpSHH#{T%_L#plCQV-YndOZXyDJ~Y3`Oqf*o~JK>jQG1!55vXc?`bsZaNsg> zWAh;T%cvbR?XgTqNzn!Qb?d6hlJ3%?E!H^*u2}z(j<0i635m`e-_RV7=Ylz4kbk%@xU5u`PbUlVHL2C`s z`ZljXoW17Q*glFBVIt+h`9{FBM5an2{W*jlR)iiVLZ$gk=wTuhMwd|fFe$w$Un=Dg z*qQUt(l#4R+c9SwR-MUtAvJYf?oNV7l*UI$;~S{M0CA%`wK=#WE~Zw3{Bzl^FEXd>M zLpXbBjB+wMYQ*T}f*}PzdBD;wEFB^=quCYqMSFqb-m43kz1cm>1$0}RfIgtvl=HLHqtfEr2>pG60QC)BkQ!su1 zfT^g4DX*bR4O8|iC;-{hUqt=Jq=KBDo`wIn!xY80;|4cx_Xq`fFG6mH9DzKDE;T~g zhA!@X#0ce(p*g(&n-PlQmHwlfpL=kE{LUK6HH`-+?dVd2lNXT5YE=Id#wBeSE_Ylq zQc!6ZzdvbQq73M|#chatNP>oRA$2t**@`YTB>DAT|Gy7O6x)tJxmmkMBgp!Uy*T-K zbg>#;YBcgZxNibG|mn~Qr4f?TS8&Rlqeu@YTEACEzvRQfo?uE!usN#Sj7 zW$xhzD*FN9)$rq(Lig|^R`|aTKady=d6b&I9Cc5t(azJP?p9P_06a~@nD@|CBVGFs zD}W+Px=tBZ0L8}%uy*mQhu|5CiOZQ{;N|dgk<^>M!)@-1O8<+bzg6gXkx-r(RsgyI zFOkEOiRm@!?|QukzoAWgjlIIZx)=obapG5xK%elOr}#8SW|(%JshB{Qo6&cQ(Rak? zU&zP+_>ORnE-C>0wmrKnbk#_|TZ#(sb5lX+@#2ghzafUp0e6s#UJte4PT^=z=`pxp zINId1b3$A!-eASvf{jZnEqMfSFeYq!m}ERgF?Di z{OSwfQu3u*0RDc4{sYNy$zwiTLw|cS-KpZzyBWJx{Oa{^9r@x}rs6gs-7J3f1t1@y z#?^`9@SPm{Iq|Cppj*UNi&}OxZp2NM2bF*3C_EVG^~xz-uNN!BTbSMkKrf-}`wPws zcFjUpjr3dg3#u9~Q9vv?^WkOjcRhFmkyuHE>A2qh3|aBBmGaViB?%t@4402Oj)7;l z`LgeR4o`Osfpw_031GN!LlJz5j%MLFd~ez649E2xPbR>6L(WWN=9%jCT2d?(#&Q%N zBNdmDVvz4g9)quO*6dvXsQ8#SZYYAQm9Ar0S0l*11Y9u8YCH4nkQF~7SGiPLxJFt% zgjQom;rfgb83TdOTviu0e&&N-p}g?4jv^SmPXT^eau}ESYNc5$`_01HuNlm8Ad984 z-Up@90suHcDJ_M2Kl4F>H2H+h+k7x(p8^o;@FzUiQ3NgMHULgQ&1=z7BOG6#Lkzvi zceHOs_dMptXcOH5-p<=uPqSMO3nYgink9MntLh*!V zFG{Sscs(!8(@rI}3~`R%ofHd&XR^C1sjG!TfzX-U)k0yMx!#;C9`XPuW109R_$b5m zBxxlDcUBzCQeF|=b+*Xt==m$-X_PI?HI*-vEt<@hxj!>{sXxfc9m5wxSg0I}Zp zcXZWA*UyTxV|HE}oLrnU_GKX^<1W`0m(y~YH}kio9#Rj6Zb|C%m7_12ErN1klol9w zZL&1A>@l~=_xza2_mIhp(F$JmzehXmrXpB_0t3Vv;^*k9k*-nuW=-bx#_D}@OlBeV z5Fzztj;@qGUpYEcxi;;vD!FURq(yB{xh-4&W0tKa%dSGQY}tBk%*{pc0tyU(^)$iS zYd;=0-IE@By2Shfsu2sri^OXEXJnQCpk>WX)>Xt{=t&2Rrd)f!*?yu_BMV_8p zieNPga6U`~{)R4`50gtjAUlO%36?3bta*_Kn0moW$^u;KmVx+7NWoa zxS!bk1zk1L)sL=#bR9Ol0OUygewvG%GhCKWj-5lDmt}WNT~h9Q-c9|^AESOJQD2Sv zxlG;Z3Ex@-&!fNqxRa>s2XfV6*F<#T=-fenT*h5^pd`y7JehgJXc<>JD|bkBxqiB9 z6D0MH7u+VS`!N&NkqLiBR&2sL&yk%)umuGMz&bMFuwQ0VcpZ^G=a-T+hj7=3oPCI0 zla%Dzdfg;HS54Fob@y`(>+Y4vf=Pa^z1mp>&!NBo_?#M$p$Bm~v+Klzvg-q1kiREW z>F>oBN3IWiE%q&@$$g8jwBV;csuKRfg<|7kK*XKruS5}VR(vajWxQFzU98-u-L=Ki z()7!2i$}`FYKJ;8601Zr8pQUFTz^{;bfMb--k|*q9W}yn=m@n)Dt2-!aaZ?n90*{| z4@Y4%{_V|lrHWq_X+Gg4W}=7W8HO_Or_sm|jN{PVsceHRx5RgCo;0iaZw$%<2>*|m z=STC-9-(Ty|K{6^U=_M?2i=d#UqKhHMU$)GR|O!~qDfHxE4da;yXDy4`MZ!iFGlZ& z5O}aQ%Rgs9e%D4w^0B|WjnIF@2px@RLSmdpdgzWKxCh+^@QH$L=%^8nLk=zge;-l| z!CpuYKk{3+h`Pz2vAYZahT@ia&aoZbl@j6|4(*_i#u0WnvV%Szs2Q9+vV%u;!T&EO zUs+eVX!j4D5(=FhFPU!DDyV*yU_}79#o&bMEU{~F*1@u+*c(stc{0^{1MI^mUFrqa zOk<|PDBCC#AF&S7ctP?Yjw>Tf$H|lmn$C%GFnvq$V2p4D>JB-e9gHJpdi)J7D4Fgc zdl{|lb+^V6ie7@zpFJ3xJu-z(`FMXVO(|i#xZsap!8gL8g{H#l$-$gJM_eW#=I;@s z88mX>3bol318o8q0BPP78>JGX^bN`HR{$`K_zgoW8?kC_BLEt?@mxDb)Wn>uQqZd< zI0;kzrW?-vp_!VcII2T`15v@~rT?+S5062wAJ_T{#McgD_ zFeN7~i%~X&qjf4)|J#xk#-2y9>BQ^)zmbVfP8?n8vmuGVxFS*u3I21MUONV2{CAmN zU+bI)DRhYuP6PklmC_f4G849 z!j5!GBydHvZmhDP>>X*zVF2JKOZ*sNwz7nrIq5J~MeEOrejr6Z5Tmb9(aDJi+Ay@ZTKNyjZ43YmA@Cs>4TOXNPG^&s5dGkk@zvb8&HyH zunY?@56n^g>SbFU3kY)&wGw z8=Pgi;l>=r0k>-+0FOX$zcv92X*!)0QerZW?_wYiVGxHFawO5@4lizlV0ikM!(Dh{ zB>I2OP_Wv*o$r;Pr5IMIM-?I`Y%`b$xQ>cpo}dyB{9?asFI%@eH$nL2 z);pT>q3@O>==Mcy54vPR*}Vhr7=@nXQ;Pd-Q z$PTCKba-s(5ZI`y)8Y5k>evtNiN=wmg~CxKmf2Xm#%GV0I)Mr8qXxh=sDa|Z!7lO<0hcihYb{^m9uRsh3@j`|39 zM{1a0tVCTYy$0T=PuJm>$lGuv8iEgnLAZ{;2ZhRIK_F^5i3qOnGw~kr%l9b0;jH+E z3^@8Q-eCHMlv{@t?C!M{NshFW zEEtCs$%~)I#Mh92&#u0OdI*j|(%wvOvwmJ88aLr+zQ^%NqrV@`vfwxl(9^8ja2$UF z|NAEYh{YP{HcaQxA2<3dQGi#Ps`-{q&m!G|vp8;dv)%yJ*fn}H9nIixlVKNd*e(oP z$6>oL>;ewk-VFX88CKl>>A8--;-WjIj7K_=j zXU(EZ;bbc))k!tIueq%~lhmDw>OTGN)tzRC;wHa1DztQLbZaw6n}OPXGa6^w00x$k zGe`f|mXhidqtUQZIpTG<>UvULkE*Xi)inV1SnOW-KT<7ftyEh0hFkf0r2IToo_{#o zeID9<+~Ip>w-Jk(R#2#vs`@@~t8CD)jsY}a$!$WVAq$`ZwLXZhoC?^0De=YOvJav- z-b^d*@Q9tywibUH8(Iq%O}LOQrMBocEaH~Bf3d#{JwtE3cH5z7q?GZfeSwq)cuR~W&h;Pxu8Y20(BmSEb!9*m1%B^l9-I^#7 z-PCL8zhx@jMCD|3DJtDW<-*^}1mzg?F5>?|YT=YqQXBE9o8pri)srVFtsX*37QmAl z-oF0lZ}%)+Tx}s`6;Ab(*8Uvr&$0IBNc+eVPM+sztZ{D1|Bd#FP~5bQuu@$1ncMtV zn7}JUU^NnO0A8WO{rrDVAZDBRTJ%i3wJP-%4!HHd!TR4I{k|hH0WdJUp&eAKL)nr4 zbsD%Rh=*+@fyx{rZ)%!u3Lbc(hiEVh4=z*vS2ecEGGb1BG_G{^lh~`F%|N-Mb-8QzX1{ zHW5E7H`~-04JHY&n|HK{ft83%G6VGasXfteB_h+zCW^j?+Ghpg6y382$!8@Z z+@|6TDQ^z|rdth0I242{_b~Y<&zeGU_r!J@h@s*=vAil^gbkabd-uR@G3uNZGcCf{ zle7~U6Y=FG0?FS4A{8Mgu2>A(Lx3!W!FzxZh(;m?88BoIVmoFe6u_@_5`u3J5Ne{e z6n9Um-}Inq#i<}|H1$0yg>#x?JS9MYJt>J(LS`7hI*K2NM2tNtj`fD4KHbR+xqDKf ztOSxc6<^FIkUhb0XhkTCu_q}K=3zt@WKWVLzpz{_fN(DneZCK?S_;D(;h+a#baI0rxCxBJ{`aeGi;r3IFWw7?j&d)p#T z+;+f!L~B08uHbQKS#tLeC=kj|8WLj2lF3$W)DD<)=S-QP)b^}m^}KHU3$3U&2=I#+ zC+TopsT=_Q0;kB{%)_bTwSsKDh^5yCVIM0Hw1LC5|97*+fWdI!*C4a&D=z< z3H)SYCsoawnWZKv#jbHvJBz5Dh1Bj-)X2%y&KA`01U7vS+zCW&6V8zdwrhfE2~b>)lk>YV?7QwX|Y! z#28r|*U~9mPo`lvioVb`DO4AVD=l3)+8$$VkCC>3()QRMXq#&}My*^HlUk~8khc8{ z0QR9(^nEa`|Dbg3gSqmPms%+qM~*%*5ef%QdsIm|t&B}cgu|5mQeWF2-Fio9MNSRC zs8vB7ULS);wr#UE)C4eU)bDgC9E&qw?Ac({%j0#Z7%LNe&W8^js}MfC$6;g;?zdSCQd7#O){LY z2wByf+0$ooNSuTSsbpnZL5ff?RHb1wX4*zPYAeP=vwr21CQ)!bE2^4%B8m3Oie}8^ z^!iy=bjsXW6zb<$(d@}HNK}{=mCt1OVOh~EHmE2onI}ZQ$cn0_vBJIGB96FER#ZN7 z(z!EdaYFiC;z^UvEw8GYK6NJ1DbD&-%{|fWvv1aC#@q_G&wg2-Q|8Wc`|O|fnLT-i z+vk9+4-#`R7@qZ+HQViRVAf+^uFo&CK2_6ls2$|?$w3>D^+5tNXU%cz`c>AqLT1as zE}6)LUuQ+-vuDpbjgs&;S>g1V6G?PPRy1iciw@0-CZEFjcUV?bQB_3|M`lG+=Wv#e z%8Fd6HaaVnnS8iQH2D;QJ0dHp5Tf5^MN@^SBrBRUdCK&elPT_zS?T18is_YA)0tvv zR$ftAK6^5kqcJY&iL=Wmo=g~HcaSpjxU3Xgk#Y(;J}a!8JbU^qt{T6~N@r)49p#c{ zl^wlD9Gmr9U^X{K?VxHij>~$TID2wA z8-ILOII+Bn+5C@7Hm#hAoZynpnpwp)w#U`_PMkG!&h(jc8R1cv$E3+q%I8*agvWB_ zlezFb?vhTf5G0;(38$1-RLq$+d)C~k( z)Zbh(S%PHYdd=l$1cP+O%E)%3e|LG$nO-r8m27lLU6CZ_>n?8`ygTtq+YHc}kjrPT zW!TNi!`0J(!a5AmGm}Gnjv=6ZsC!)W zzrRi$G@U?gBo6*VGWpPU2oIgodoXm8KtE|pDFT;FiP{k(j%%|@cmJWxfyY?;(F|?B zwr30A4IC2M0Q=z#%RjyVitst={krGrFk}2r9ga%H_^EwXJS!GgI(tuW>mII=hT*7T zIqC~Jv+?CdpzGc1QDTI{(Z(5xa6BZW-;b9=)!|c@;{JGVLdVi_AiMe+b;p5m^PWSm zz6PD|{R_|DhT=JgF@eg_{HxRa;~kN|c0P4nqvYi;pN}i1zXPtJ@CD-RB$(-qwh3z@8fZ8t-lmGyp(x-_|vSihE?{*{aq-CK!AZaH0liy#8+s&nI2TK zCuMw+=>$~yDlKP{T*hNm#$#B<$NjDVu#CsBj7QNC2Z+rp*WpjU+p{8$da;O0m1PUv zs+%-a(1Z%!MQyT#H(}cR@+f@u#8tvcIv1t38Hn0JfTp991#rnxvdlMeK^-`U%KTz> zrE4(9F3?1l8M+;Zg?oR4S(Y|1|C%|Ow^WPjAmX)G>mg@KC~U&{wCv!`EIY^FhdE;e z0;c0cZ3k}D;%87nsL|ulq2W@UH`7|}FTH@ig!zE>JM!+SE{gYDG%=e+R)`8cx6|+#pp*HPA!AZ#a50UFQJ!D^V7QP1?x+L4Ymife6l$kCklj$C7zZ3Y}wsyY_21}@mQc(fwh0l39;RgDghW5KDVO&nTOxy6I!<2x)o zmf1)!aEs@IdO8@mdsS>FQi@3LMQ%cO3PN`hp`(t*J_PXU?$gyhEFa{RtA?FO!j>6;O%l)@B z`};9^bOAgpL^n4>@uV~})z25d7W8_!;p$q1fqO;Zo0`F2x)hsDcvA$}vJm{$EP7k$ z-MA3^JuLc%2kW;tvtc3l`&qO}Q0-m_{t?Rv>pc&yDtR*<3!yl;ggNw!U%dg|7r1Q; z;in#!l6|c!cTS3iER`p{m#`KtEL%n1Y^A*UVcHf$H7?iM`+ z+ePf&#l;&%tZ9O$9&)&=PkXU>^k$w~{9h)8IQ=3MV#G?O$qDkUM=J^ed`pB5o=^b# zp~Av%J$QQ@PsAMRIPk4!ug(IzQ-;kfryjmH;%{T?z7y8<{?rv|nQc5onn+vDl38J! zo8iS?`~Y$=7_#aBE~dwJPM;w2?P4!hZ%=04?p5Xa(U3Uo=O}Gu8MoHeUabhz-r2w7Zr)sSrY2=x<6&hL#9E*jMqnleKMKJ(vW{nPm zjwyg5{0=WVjz6XVhS{J|=jF+q25{F2*|E73w*yhD0sN^y=BvwRJ33yZ5AfYyfW0wO<7lQ_D;A-8OLGaronJ)h`33F)2t`vM>u zCm{__X0{%JlUc_+-7y-2xcTD1+3b4?iK1~hi`|v}G}1C*HJ!lpWa@R3XkQ}S)h?cR zw2KcXNosxHxGCm*xa1n-6)~)M$Z-tN?xACicwL^a56gFHx>Lg}vkv`{kT}|1$#FkJw}R>&nRawxD0oizx25nFENzTGO8ZoJ?ST@K)Akvmd_XMt?W*DDT;GD<^cbO|ETqTBf$4|tac9|K~ zKe#jHArD>pdC2qSXFm8lmYmvf9N;0(jr~6O*|7yMtOm4)Jj<8hUE1nl(FW754M!VM z#yN6VN~fE!tGpa$9wr9J=Laiw%wt$90H*m%(FzOxrda!{S@I8(;8kfTUi=+X>=wVe z1^vRiE9J7&h(~LW8gDikfw(fO6m*~_h8l~zyjl@5pi%~R5y#2L7C;f+TLymTZZW#C zl)+upYOg`7YeBoq%T+o?MTq@8nMk%`qWW=TS-n&XUbp%ebJV{`>OV$xr2a+fseW}F z?l75k056jIdB+t1s(;Zdt{szl_VZ-U%TZ2O5m(!fIPX59yxaeOxI%m+cyFY<`$!~0r^vgH zgo&Lgy#`k0a|!FfylcznyxY=9dAChO>~rPaHj#H-oOjy<;}x8D(z%?>k*-hbwG;HmLT_s$_(v?q=H9m9OJNx0-IpSK zZzK3CF+?q-^Evx_2qG=$ENv{l`RA;)u#kWCTKHZ>-#}r%7wVQZfBOHysI>9M_e+I`Bu0OE8+ZmFrVt)gZVfFIrV?=RU~<>_w}tcc zGMU5UkuXgUC9sVjYM>NUcpbytxDyzcu9IG=aLM_S!kw@aE)G2zR>GD2(hYkY!ybop z_bQik$vGXJ7$5lN^wM%k|2R~GT~@Xhh`PqAq>8?S+^Wi0RT-*Ui`bMhl(11Bu>Is%CN%-h&lw z3}`d4AW^g6l)`Ctxp4F*Y4~3XbGgla z06#aI9e=lq@%NgfzYCkg0IU$>@B5SfK9pEv;Ew`p19mMJ3;+9)?yike1aFnegh-dT z6XY3%;=US8kkU@n}d^OncH_xB{2WOX1(709#w# zf@NX~(2?|)p?{zrF7jY&=*?W31Sk%dGR1wz@UL!R_qp1`MRp*G1FzL$)^drv(M_l_ zFzaMxXxq_@qETacgGa;5Z#Q_b;QdP(d;`IGGNF zggY%;N$F;((o#4F1Bbu`qOB|8`;pg=85GF&Ff{vuHU->P9cC(5MUGXX#h9{E8M=53vf&`7wa;v z0^+s%+1hfPDpvYqm`4p`;4}=0JwTQ#y)j%>AF7QjMg7OS6}saxQn7tS?oh%%Kjy%A#gCr&c_9mpgA=Zh#Y@b|K0g^<+i!B8Ds zEL_##hl@2J*(xEM=VH$bPSc$V({bk18(oaR;oxkX9?p#^5SZcy z!&m+dfENjD@2NP|4x$qa$H`M=HoPdZp&?sFU1Ujv!tKq$f0xO=OZXQ^{C5feFH_xY zcLbaiZL}0vda9fBHU`~Bp#2hb8-X4+?LUFejVY+o>2Anx81fr}JZG9nhi?e-%4r4Q z@4=i5!4D+y;D;$u5P*ME6YI%X?jCMOTg>2eD{j`Aw$j>nl3V*qFO|@hUaZm2O_RyK zlGhzF^Yjp0K@)y#J}r=IN%*3>nChD$#|&4Pk&tcT7w`poY?jo5-{IVk)_MT;!xqOo zomVr)lmajK{vHK56^H#cEgAynP3KwVemr~X;Dti+@@Ae->Vfb=e#w-E84;%jP9Rw9 zY;BX5)Tn8rZz|hnd~#E4EF8gM29hYjRYF=CC}U}VQg50Tf+N|rC8;-6M5U`Q=^t^4 z26_a)4-uReg7F-xJtagHQ7LLm>CMwZFpdLkOzO=QQR$-1m0hISxUnj&3g@`f>>QD1 z=O9`qCXv}hX?70Qkbg`sfFjGR12|{XqW_P!H;<39JlDtX$r~XVUNHoC$Gtf{=UB9- z7;rgVPlJNOktGFG+G@#=nIzLpW`>zJAt9@P8kcIuH7aTZloYopiV<95wTcxr6&KuN z-N2#-+)zY+pXh_pTd3A}|S|q|&F`IG?c!vXW7Kmq&##nT^HX6Q~b}YZ|cPvWIjQ{piAZt1ixYA@~_GigH!B-ecxkM*mm-Lv^ zAf4z0P>Hak24SFb6P!Zj1mxuwxD6HdI%vACiHw$$o|<7&8IFaMk@8dAc+fED_?_1Z zKT%A60w$+S#~yYtO7s(OITudm@)K}*5KiI38yug)ZMd-44`*mDjK^cXP^29VB^YjUEJlkxi zs^UpEoN`Hh`}CRS!0~5_n#<oT0A+SW{gxyrxj zY!$Ay0hX!ZZC4AYNc%8QveJKT_6#i+L@L?f+R%Lq1jEP0ZY4gNiM(IwgUJ`nkeedq zL@OElCU~&XSNdS}EpT&-w~~kV2hGG+OM-X_X(iXKQ{cf%(E`v6H>^x6eX#RAGj*Pb zM4oT49fSZZX6U^iqct~M;g6;AKJlHNzuw9%|t(J(%Nl$g!(29gP)w7%k z^^yzK%gWi~9m?>U^c-Duv=Rd~US+mJ8KUiMt(m39_S@O^=fZ<+znuj<05{uyJKO$~ zQoJ6{%R$$3r;P!2EiQl2h00w8e$hBx$$hq!9!PSzkH+Z=-fywe{Yk8+LyC+mt#n_~ zj>O8NwJF@QUB$y5E4?-;$TCp8i+g-4eS6aBgH>uHq~EabO*(_{ibmA4>{faUM9}?; z!p5W>rH2&2-ATKK{-hjtCGB{12xFdSl++&h)F$X{<-Rj%*V5xE`W;E{c%!1monov@ zwO%Xl#s*f(CECpc?PGqWOUG`8jldm3C<I}lCyo#Ps>U`7U6kWp4fp1ii+Huv zJUGigV6|U{o7WAtPlXJ~Q!KIHi2C`?525 z3W?DzzsZkwKRl8C1!D@RD(p+Z6?5=~`U~wPcBldmgP#l;ytNmK&~f6p4Na??4Dz$V zlfQ=8{E0RK-o#XRheooUR|fN)H(MRC3A*xL%t z)q|2ftuS5)F_E*%da|0qM-AAVY?t%7pWr@sA*r`1JJ?7KVw4M!97b9s?h7(Tx{$j{ z45f4<)Dc%PTS>PBdwMWZM6?(x*2w;AzIBWUxQ2b zE@?H(9z72yh}GO&`TaNi#CEH>(>rILpRi&}-Hd|b6r;z~n#)uhYg#qo5a|chO6)p% zoMWPz1Rhga*m0?_w1adjhvJ3*1?K;Gp`9L$BWZlZDVOS5{?q>78_+qDS_ zt`i|rUfvc{yv?TQg<4W#-ev(G!-HFlw^_}jevM%|&Q-k4ef!zJMwuz6FF7_p?Hh_3 z7gm;QjjOK(1?FSMv9KA<1%$3w3oJbt`RbZx+Y9M4#b>bDE-yAGN}p=B%WD(V!#%H+{!6nR zDlew5xI9?tC!6h1G~?XZY=>$y&L^7fXuO&pQfVJ=wrk_nv|2g;+#ERgO38pRSIMs( zDnD)_eeILh<28VL+*^R|aX;@JX4lk4PimMRubenNUOA!IWNm3y7C)2Y!*k5f@HpX$ zU+Xqr-1x|(DKZ*vLNPE6Oh*>n7J=Ksa8DUHac9Am$7>R`ZulhBos>c8TP|u#`5VaL zdAmzAz!{kH8{J6BM<;&*Hzwy&38BO|Bigej1d;%TMzZtK@C>dcIk9niQ z6XB8u178+b>oLiOT0N3i#0pk;31SH=MD$S(+KSa+Bhu+3=KBVGw0Pw=_P2g26#2?$ zI(*8Di9Y6Hu#}y(3GH70TR-7zE3_jAg&-$A*)EU9jjP0tRz+x#!>sfJt#&jTH_qNx zyS6GqJ5}gCt#)lRZk#=>P9K_#7%kyW7>5N1;Za9REy%Lcx3xM&m*T+k1X`xNx?9nz zXxFM%@(y8*!H%0~OjWSjYqI4SxDYM3V6q+1Rheu#Yfz$0;xR4*+Mvxsa6W+}|1M5*r5# zz6;f%k7ru!@?bLAK-aSb9%fV(({knNXtk>*7*~6%9WAEoR9IW99i3oYyIO2~QBuPU zwy@%t=eDoKiU@xaQMDPNNL?fqSr84M)KH3v?FmNZ!7SBRi0Ug?+yl_HnrH=U{t0yD z#j_QxM@~8(n5PnNQNP%WT2Sl3E`g@X=S&04SrWHxA%9k)MMuB_WrJ1 z)c2gUE9XD7Gm!z7^+MhO*N7drYh*ktGLp~FkHlayINxmd@)wsnjhvCE@-;ndCllZk0u++&r?()KnQ%i>9FwJ$#aAKZl97wN)V*wux7zZgI7%3dr zN)LKwe&iRa0u0TpxOvGPgLh& zyni>G^6>I}60dCw{4^>=KE|@r-L0ci>66BBJ{PWIqXf!qo;+Oq7EM> zA9whmoP`~aQur*Sdz4Ra)+vfeiW`Yp6>}HGjm-wLZ1|{Sjqq-9?+R^5D}i(N)e5QrOqrzH%l}c^YzOOCO@~ukG*Qhh4`?+nGv_j zU?m>(Vg~rcKmeG30Vc;M3IKOl$WMj*)KWYaZ6FFDLw^C!%49H66)B&U@peO6FUHF5 zOCPh_Xp^)7QIVqCcydS`!sC^IAjtXZ}`yQyB4bLoU?0rR8 zQ)6HpJqZjb0(}n&0Xue5Z3X=+1Y`A#oHk_oqDaWClA3O%ds>_xcqZv+9GbAwtFj7$ zSI614F|oPUulO+$FCy9OvP=5t(#K2BOKZTx?;Ni)FpF+=icxLIz z-gj1LJsFrEgVM!7*vUs4n4Y23)9OU=h7aLK0-aE7kRFaWxpi7$g*?N(>FC2x6UES0laOZjNcWxvlgZk-VOgtFa2c<^ zujd&zrW{TweCla~iX-RP^o89I&{8@bh*C$-swi!(PCtBpPtPlu?pCMZav$0C^n!|m zcL6#ps3vG#& z-U#FpM1V;*Db`!WhMN>}XN#SrO)AA>&32}2Z&Fe=@b@otpS2(r4kpX1CY)$2TrlXh z^iDahv(vhzET8Uyq3eluS}!)|(I>DlPr!CET`bu~NG=RvmEia0|9MUVw5!xro}6@* zr@Sc!SPM~-3wC%JoRiB3hR(_T+2eV1Ow>x z|3?()z08}de}wccqqbK2_w*1`!8F58Ch1<*h+C6>Q1yV`raJEJFRr^^{`&m}|C8PGUtTqm_M(72W zg~g#{lAdQ#Iq3?@Tx-^aOy5EBWwI}TN#ciHCW9cxvgxa zZ)v3w8gZ|$NowzDG5KN%1~h${*tPqKUK6aJ!~1K9|8s*93Zv~0hj`MFnpH739Gk&c z(Iymg%vH_b88uixh0jd^^wk^_H8uxR$P|0OLw-#;o^T^I=qK{6qVpHz~W>U~r`4ChAE2D$?4Y_&t%P zB$Km)vC1&zTV-?P{U$Vw875PbN%^cHUVR=i29BqeSA~Nv9)TKEQf~O{Ko7_e#-)6# z3!e=pq7y#%##OWB}>)U2`5s%RdB6X z8g)6Nex^opq~iTV;u?C~M9Q~HRSYy-L&0#Qgo?DcELB61@7@^n!*u4tellDU4VSy* zyuJAVQ>W<4|M`V|4P>c*k03bfr@a ze5F(3x_%8e#A9iQN-m8o`Ej&EazYo{oNSZM8rk{k?$ zCM7G4sKg$x$R-xq1d$&=q)XJasVR^CC8m3hrrDoj?W3#J4$g{(=n7xcCvbPS+6n$7 z8nuY>3qM6h&U4D( z6QPfI;($$Prwcw6^s#SIJ5rVL)`%{5nF1ALO{T@%nMRBLJP|6|oGZte&&`2xtK)t$ z{Ljq+{}u4!5xDYr86GjXkfQ|&90qZdGlB_tVX}Q{LTh}kng*PRd^9XU~6H|xdr&VE(k6Pz;*`GOH%C2kfaZe}G~KuKr9&8)<|@De4&V>>)z zc$ElB{Odx^_-4iUq1HfCzDT&uFTZv~O)>b9;vsmZ++caNDmj{7n=OgO)(;5H2bkt> z7Gj!?E{h&ul4*DZqmjy34S!ovd^aw{>2#g3vGAfv3nF;=%Ru*x@`_k$@w;D3Eq{9+ zeG5dXD@!eu&;LwnMVDIVe1@WxXGdamm8EKH3(qSaRL+5Bn{_I6lPS8?y6Q93=>BFL zGM*)6e4T|NVx@bU>{KEWjnc)+qq|9xo*axuCnYOWb0Ukwbgv5RYqTS=+2KmYz1;e8 zSsu2c8X;Tzu2;VIH##LKC@HskjvG!;r-dqxK|Dr=Zjw6naJ-S61Y!o0m9&zTlXu01-aLHS;-T`(R`=38iYL+D;c({5 zEcq6=gUL#^D80-keI0&o9L^IK=h2vyx5z|d?%X(pX(2sX!Ujax01G=UrG*W!uqALC zVFN7ee)v@+<26JBEN(DM91k{(eoEBfXs>?ni^%s`%QD=-ueC%Au} zvamK7HNuMjT?@s5_QQOIbrXmVi+-L@ZvwAwqH-Ns=cht!+qvNo(P6Eh=hNABx>_EF zL93O%yV0%+CPVat2tTIR*Bn^p2>Ql={Mx}#C^>;nMSk-UY`7=VRB>-?MmLAU(1cC!50qJcW63;!&aT9eJ)>8Y8^gJRe@D*~UEWp-_y-4R@0q$|&Tyca(sa?(?!KJ)vNE)XV z1N2y5A##q!0_$W0JrTY&j`C!@emhB1C#inhRY|SGGAdlK~#n%p2kHe zdqic(fcp$IJFRr@Vmr7X5~2jU1`F@oRiMyRqbsq}gNyBoI$AjUEA#?e7u(#gQ~}6J z_b;~b{a~t*?x1V2T@j^T%56hJi5hf(KDPJ4~5Z)Yr827$|ohIC()?~{==(2j`)|m^)61}pSC-nK8Fc{$;uQw(7^tv-cJr) z<0I}mRb2- zkK1xKHDS1x$f#oQYGd+nmqAKoA@<~O&)&m`*BQi~oTl@DSms5H#N2SQB3K^Ar@4+E zkEdp5Ra6+j!7SjH1^DHhKkd$^=jvqyNc3{fVNH3I-=L|#oD*t;pm`ZV3ip(F(m)lJDPE|dCPn(yogz74N4{oj9lfuRy4VmnLh#x zxxq?O?mcja>l3&W6oMyuxSurQ^i9oza43}VOf+g+Udzg6Rru2)vC#NA{AD#Gz34bE zi$2STQ!Rbg#XIw9wZZCRR$2Ly45#AJy6|k7_OoIdsx1q0X)b5c(p+TG8wPS|E^0yOUXSLCAgTH2(`{1vSDdL!TpHcVDNnbu5KDh*t8f|qlr z2oE;6z-?IqmWzPpEMR`K)?hiC1Ci!<1mYH7rx|MVi?Cdjuja?&8*mWytCuQpP3a;SF(r7a8XK|yNJH3(Tyo5dj9bFAM(( z!GD7B1Fbs4o>1%XC4sprdcFF!U6-EBMfZqyWC)2$oEAgB^s0j`0GH@l7B{n1j!r$x z!p?>88uC4xd&SonR`oX7N4XU-+LrsnYoKbvuD}CVsMc1xyVGfP0j&(I-=Ke-* zHz#awwqGmc}x9M$_ez4I_ph=*Yxk_8< zt&JGMy_zdyxUNP!L0fW9IuA4Tj>f>jKRJ*W#QJ`6ApgQZe`Nz%IR6kR`H&NdzvY5g$n5Wg^G|2yY!BVFn|*jnciBJM6vNn^3gYK;nI^Oy>vu7Bx855r5}K$ zStr`T)#Vdq>>bM3{Y`w?dIxXCSn1CijR|+>qNG{Kj#`&K=b~m|O(R0za=x+ses3IY zO@T6%<#S7f5G?YEvPe%8IVBiiR?#`?y{e9;p^8zd8Zch$Xq1m_ z)5SK;Z*F0)tk$I~57?(#s8IykGmY1lg}YpEmmh#GslwncSGYs9G2CZrl*B1smR*9@ z#VoHkXk7{ot=B5`KXw^!RtCXU*M%n~gXPs>H$}H7-)_%pF|ra$XmR~nV%Lh;wXDSR zM(kQGDpP6Q_-yW{HaI09r#9P4)77N}!)&J`D!?sRK~WhekUE53?JXzG+^#X9ezA zhU+;;wM}gO_YL^72UP7r>(tSVQoZ>AEJ|DHUCkMrn$Cx1sXD49^_}LG_@+pFlO-Ox z#80Y@zR5Xt`VwvNH(cH6WRZXB5Vo6H zTf^ovxJ5I)_}?DD)&E<@|JLAttMGeTfxmPZGH2*=FfC>fi)VR}&mYFf=MO`}a^g}c z1m_RKw4!FI&X4nlp@d=U0dg)HCcO|2JMU9`XVtn!LP@Dt(v2eNMwYZnNxG3Gy=o-g zm?dfD5R!tSkO6MX60mLcv7YM2wO2otRvhV_uPWqy)1 z21$`s!B4IV#wJISda$Mib^Xe#(fVON+{#%$?B<>M^nig|&+r&6c+9ictXw)YgV#65 zi~EFF>WN_(b$kNq5uzv9QpcR@Ckz^%7$$>;T`hKko*H(<^XQy$SpY31Z5oD2i`?p$zVMWx_!On4$wdF2X zuJO}SQ}kq1v+2oVwPzT=MY3lY8od$c=>oEc}3EYS=X>i8H-Ab`1B) zY`A0iIeYS{>O8z96>cEv7>)wC%HWHe+le|#b6{3A&Ip?xkK>ZRmeY2&SKf76-gPW* zz{tCfArC*_Povb)J@G*aVZ&ZGTnzhYi_-&Jaw)o(Q*o_dD9IjGJ~)a+Hw{N4fz`4= z^emx~r|9tMswaly=mVeHkwz$ZfY=1KPU*E@so zsi1Xv%ASpO1s9OsJQQOq-GM#5P`IAn&cneP3#-R5OgQe(!?2Quf=zY#dk8^@$IJd*vX8l+vQ=Uoyyj|jiVCDa0z}luIx%4b$a%;Z_UW>U<1| zHXFFrtS(Q*k4hxyk^HCGiU~XDQnw20Y_TI)j(eC*Wno=55us<5tH0S!B;#%z%VX5X z>3KIhMQgbrSlB@BLUBt(=nj==kY8B3gG+{${#z3{{fObZbdM6+)9lc4AK3}IS7Elb z0O5XxFuph|?C^z=ZHN`Hm=wHMIK`8Z9IlRho0k>Fx_^!RBt ziD($-BvM9nPn}nfH${&(IS20pg<7IFxp;hJXvizaO?c7*QnOV6>T*(pJ}tfR|S`Yi~)LIn>rI|&5;o~~3r z{mo7feB2tk$}dCO&Q{y4;T4Cg{W7L)Z?)@cs8fY+1PKnmMuqpaID-PBS5%h!(aQ4n zNuBZRQl8xyjF3}wJzo@9rkVwH0n5@92@?P9O^B_r5?OGdzek3!%Xq+DOYWyCKT0V7VhM2i=< zm43ciPPLss0?Xj|8ky72C4jCQA#>)z7Q2p?D@T8eQ*Z+hH@Zehl^JZNz&#fUrxL}@ zj?m32cxy9J;I(rly#74-#prE>)X%Lzze71TwvbZ-c$Xd=fsrXLiQ0AakaG03I0*zt z=+6p%pxNnxk6S^HkC3t6mKM9Nf}T(=zEYYgH{2X!lTn*-P*IkS;FA%)!c@52jl^R_ zpNu$RaUNA&qBmnc84TO9`cdPL|v9`d&Ea`PS)p{K=G6jSu|hzA}MhvKxhHW+!!@Wy6xy5RMD zx?FknG&}w9!EpHs8wC-g2p%q*`WlHvTuet$lvBnai7UN^={u0OFZ&Ke!798|m(;!k zF&4Da{f&XiX^Fp8{o1kcq73R|2X^!3!ayTYu5OdE1dk7eE5b>9!C-=s-ETPf?D4@` zH}2LX=1-(Q9eBig960oBMncl83X`B?g^-b49XL?#CJiu&X_unV)Z%p(cDKV_7feQi zp-4H=z=5cYPZ$*kl!`df5(>?YpByZ&3RBm}wH9Vo9ZlGeNYUVdZ?Jn;BQ{n(K2TN9 zMmthb8!M;x4#XH5S3K=FeRQClbm?vMjNjf@NxB+sy!O9Fy*SX(Xvb(PTir?z*4tIV zR26-CAjU#gdZ6AZ=t6~$(PxTff1^_ZFPA<)5aUfN-QGy#B;W^~zftkJ8=Wrrx%91y z*M@lg?3bcHj8uFV+wp4p!$_FKO21I=6x`%P3vtOvDN4H*6FH^qm!eLUsGk#cszlG% zJ8c|+u2G2w7ZU~M-6%OUrb~Wp*QHxkgpG?mt%BsNp8lwOZCfR&B!9a``U+i_sEgBo zW3sMmq?FFBEq2mP(M=M_gHRL?Nn_Fu7eY(Ze!N_ks-~|vIVP0}oIKve z!ML|zFN!BaDf&`*;11>r9<%LcpPY1wQv#0&?NJ_6oi=z>(>LsanpcUmjhGFG~?$?1Xl1@smbslN%;^p*l?pB~2rdPH(vx=p3)YH|uzqF-e) zw=20Do17B(x)HilLG|LqXeKu!sp(T8zo_YUuR$|{XlCVq?jyM>Fo%;QGk9K z8@J{322;x6Zw_h>vf?|d!pJOn*DHI6mYpKnQP7s-r`wF+9b5#gbZ@oo>Hoeiyl0pn z*^j3Y~xW)%;x(ly9-|C&@C}LBFnM#Mxhjg_L$ik|Dr%8N3d@^?GTiK}v6E<=zEWj-SCqTT=L;px#wZtCP&r zi=)sVMvXoPP=j&1B2g{&`h&99t{8?LmyALyVx{|IHZQ1Nr$RT@*cg0o^bqp-wfr8{aIy4goI7M?eZlKdH{c1qw^LywM< z>26nr)5bom%44Hsy1umrkUa=M^5<0YE!EBd{Ay^kO5Rc76y4$@TarJok`Ev`Ii(0e z`nOg3{%WTKel_%WmA1Q7nzg?x@g7glp#s^4h6SQZPG(7isa`(9Zq&=e~b2C}~ zlVamZM1g|Gr1t$-{n{?AEzBK`3e^`Srv&(}OAi#vKyk2|oCN!&=zUd>I-_X$-Y*ma zcZZxFL`b=`wGd6VmEIZ+6uc;6>ea99(zZe=BE3< zh`dTg?n2~MDsp>OV7rRjzgfkNQI8U}wG!6phqMKC^rz8sU8y7C=^u29%HywzrakR? zPr#%X{mW?HLjKF>6Bg&u-!GGk)Z+U7<+{uG%V^2NOIp!vnD(o?HIPt^bV7kbo2OVC z3{U8fSfq{6CPv3_#9kPorE4Ij@aT9ct|nv`c0eZujyvv8kL zv_AGb4I2^ICFbTw1C$sboT7hgwC9#=vNq;MYQjQ8N}Z0~wOxxxs;#3{uS~RcG@9ot zja{~KPGCP%PL*us7pmA!74(G)>}qw&V3u+kO?DAfpf=5pNTIsa_4gX7^zfktxg{jM5tZ) z>}qjnjgJf01uO-_)+#Lc+(hPVKf}8bgPJNV$7qjz>(}I&NSUL z2CY%q6}qsCn{R*|6$C787$e76)By62V`Ko?*<^69ACEBC zjFCFJtAU&{L~>o~Q9$jDP6xas-Cc@EZhEVlP+~S*cuT^vv|CRu`oiHDF^O1n~|~1+Rg~_b0b=X5*o>8QAL&RvAhG- zJr<_-Un$p~y1CR$yHXcy3C-~y(RSllQ8QruS)lih<$8TD7w6^`at0*^y{ypt7JE1JGdAFVCm0J9jg2mwZ8%-lCXCmk?ro}>$qyZ?+0$S#9?kscA`2651oyp4_DX*UGv2n*N zh`48j%iVbLXjPaD7LD+dyVUU&E~q2A)WLA#cUNIWBjUo1DZ-Uk`N=7|4Xb%{g(KzI zJKn(Dt058Qw<2JuIBYPF(h5VJ~S zB3NEM1troXFDmrHEMk~NfH~X1ERs&Gx77~Q;s^7w1XE>4r~%$+FI}n^&QqNdWDO=@ zOMD``G|;Aa_NZUGoX%5$32(itjb+GbQU#;El+y;^tAFFo2AdmEddNrpnDcIJ z5|0!;=p zDu{0}XRO2Jzos_jo)k9Z6Nh+}c+ba`;61kNLDygyR-Xu$^Y!ree5g>TT;sie?m;w1 z88spu>P7xokUwVR=6?h-CmLU50E!Ot0(~YxpE1xq`vdaq9qZ&hSup41u%_qapbY)} zAHy&s4N-iAm(lqGbv{FV|5~qoxHOKR6bdCx8amRO_L>~7oY&-_cK-TWUCG6b;$IP^ z8yPt3;E>>+gsxZPb!Fk=6_PrkQ$1<=cRhP zP`#ZYUm8NqlN#J`$|UN~O1w@Iuj9ndbz0ALIT#ZSp&H(9OtH;1PTBXpWF8W{hZyg4 zgZB{Qq53)ncVK!;Pv;EdTh66+OnvPEPyBf*h3KEeV}nLU@xOXyy(qF?WLZ}jSuf^b zD>iE{MX*i|#w5oTN<#hmxKV#c(B5IR%?9lql{229fkB%Sb`3~R7TAXZ_9256F4t!L zaQ|S@sDbGCH?Njo3e=Yj^{eH6;^!E@%sIpFrw)TG?jbU)9LO4xO1#J&7MJl33uW4A63rEe|u5>5>{1MsV(j$9NaE8VdWvo>`NZcEH5?!oRd^tz1i-C60Lg-#nh zQ!aJp3eLuwz-uQ+`E*Z|Upt5vS}x#P>7F`r`jJQte^=*X*kh&J>d2wHe5Cz1DF0ox zSnY6%5fq`nD?0r#Cjp-nU3Gw@Z%5$?CsOoDZU?_ewsE2D*3tG{4799t_d=(K6S(xL zqS{&G48W@*O1pB=QCaC-F(RknZdq2n`T$XBYt$)&mm++v5;#~(P6zx`biMLwOH$zY z<3;Ow^{bP0sW@9%pG*%S1B=<=@^GXM8(OMzmrNEIY1Y0NCU1LuF$~rE0#xfdqA!La zqy7w+piJX~+4RLQ%usS~@Y5*FHMti0z8EHk*wQk}g$vVBoa-A^5rb11vDJ>yE>6yG zi}yi4o{!Oz;p_aEX13ugec!0-7`s|9^Z1JIby$1|X%H!nid4kt^5H+c29u41U6Z1V zhRbf!K#N^NmkyUr1RR1hgUgf~PljjXxi_u);1sV3ZW!)^&NmE)&Of`sPlXAh8-|1T z;v4)}$G&kmG|Wkt29_z~ZBf5Ug%zv$+ zD~#KM$*hE85@SxzptY6}tpOaEqk(--AnW6u^X|6&QHQjI%yg`H(c89_Ifo?Jtanu4~K26ber*GF)u3b zU5j*7cykl~+;C~)2eX1Ov8CtOwpa^Lsb+)BOT(odA8@(3r$2M%Sm|zYbIQk6$}ZRD zp+4yLE4o{f;>Q%|uZmf}_N|TasV91TxD?inDu8AGbvW$6U*!}#FbH=HPv;@StaMM@ zDOxLa`IX^Pmv_a;DTSX)+ZC}+*N)Kk;ixiJx^1D;gJ6N2!wt$u!=*v#QyPfxhsw7r z=@i|Aj~T(6mgI??jWMSTzBTN-RQo2Ju8i-c%C|G&48oTmqUy+#T$5W9PSL$sTV#-% zRP?QJrwqO#aE0>ij5$5p;BL3Fs-CmDcmgznE11$QM>!uwUitu;>ZIwNGg^6ibI z)eTIZA;q>={i3^O6Th!a+#L^uRMoFi^}nyz!7A=Xsh88^SrRn z2<$Tq`_nEBD{ekWTusk1E}F!^GR5iQGXzB4hj=a@b9;=9?Rt8Jv9S3-0UdACnJPZ! z`UClr%W{|Vi+tI7?Up^JU3^yC!VXPEl)lWDt_jC6_cE7kjc9H9ej@_JSWEnDtR;RJ ztDy_yK%yml;Sy-HiSJQKRZrMs->3sq~iX*=~W+;@F34-L@$3o>}rn1#Y{@DM+OC>X^Y0$r) zVlH;pc!T9$+;0T;8^-;?3MmoaumvktXd6o?O1;wo8@n!@GXkrR*mmNaKX(LrS>yuR zZu$cs^~J1@3&IE~2z_#ZHtf=QBcv_vZXu@+h$*^a#PHQvvnc_3=LnoovUJ(MMxl2K z`n3wZozbsT=)Elzn72T58>4iz6SR^eqbnv2>DQAC#Y9REVHZWK0XFM#N6%VAYNq+CwUD~i|DHG zih5E+J;|b8Goqg4ljk|<%DrpVH2vzA!6~Zr;=LqzFEQR>EB!PoLcW(qpoPNd$J7q) zkTYN!q%7hEdsV<*Ww76@^iyGqFIK`?;LYUt^tiUs*D6(o(vzq}?IX?qF#Ltkcq#|$AxDasJ9OkvQ>K%!+Qc6p)U(*n;>mtq(2y>ZG5g6 zI-2|vb4J6lnemv+ST#~{+{-Q+yvECECesQJDjIHG)v8eo;9; zJrGqNWqKbw&j==@vC)!ClagL4&&4CzIv0;bwvM>jPlY&tsNDa3vo^eh^R9fDI!B_r z;XcK6>5`H1I0G&PH6-Yd>eOlnSLih(rJdQ*5~xau+>PqjuBL0%@!9TH3TW@dLWyQq z(+x^a*S-r?GlGfJ!VM{-OrI;MM5(o+)LK^R0;9y*k!tw@p9XtGIl5czh)WNTob)9Y zpEtJH)!_yn56hupIXp`16_p;IN8PJb#y4oA)T?wH#ACF7Qs;EHHrqAPaEvx6_dv5# z##tF|pvM$gpSP78cT5%D>O7i{^GAZw$l`Fws71A2_1+)pE36`Ve`M={e%ff%d!LV4 zXWfS%cMP)M4JVHtk0&@ZOlh4L?vs(eLWm~%WaJlLFE5l?zLSZ;?wJ_4V7I|6RaFAwk!$Dwi;w`%D-Ea`freVQrF)I#| zB8ZU~tv*OfU{|YM$DF$PFf-~;rb>EDfvBS9R7Ec)#Pce%c!{Vuf(9l`w&-WQR z%?Kvs^8y+wvDgdw*+E>xK4UFb8NAOJKdaT?Z3Mjpjpw^HP+u0{xdpste{KP)*4wxE zJypIuo@h8D7&Qrc8of*|!fE7&1kpu&s`t>wGH+&R8AYvLS$B%8J6YBV-CC_XSsEJ6z1nSA5>UfX4b^sz7xE#2e25|4 zZZiyhh|e3ZH8LcEg>9}H`g4Ii57Ne$hySe3xxVXp>{bkCo}JM$3zm3gKO?fAVc8!W zQO_uK=AlvUFOW&VKE2zlx^S{08efFrl!onC>V^M8;J;w_@qhGFVLj0o1sF`#{88KP z3q}6UR=b*Z6`(6cf8cbXjav|rx#w;^1dQyHucm*^AUyEc+vJ+o>5-Ug_|UmtUdu*t ziCH!Zg>jYQwQLmL;CI-ElWe zI?nepx=9$_#EcGIqiu5&yr9Y|&==MTN$Jf-aouG$Cq55HN zytkF+gk3|S7U$2o&6IbUNEV>1gm0_3Cg#zt)0a1$FoUqG#UK+JO z3w@=auVnO>6#7a&k?7p&ZGSRg4cG+JC#Sy?CK<`u^a>dqnUaVZ3R#3A;xMv2@XXo1dIw zdbTpT>OGl$3u7wN?43v8( z+}uSgj|q49$qv&!qfzoK%=4YT8Aomf-txLOcoK=`mwewZmI?hvy)JQ{7sop<=j=@YX&G8&nRnmd$P)Rk9_ zT-NE8@VZENoh7`dB)rai|NYJ(iXq>l(GW#9c%j}CsP`Buc&E(&-{TY4U2y%Ll=a!-26K8IOkpUnZM4kl2l1us1Z`z0 z7KXVMQM!H%#s#=M>kP7iBC!x{*EVW#itoohlS`kD#_R)=0}32`ji?e;zjlgtj~0;~ ztrT#tli=g8mtXrRmzIse5&%vsrl^hoxA-%H`;<%f2C|Iy>KHDRuZ}^X9ND7{ z^D3WV&6-O~8znafF+CGhjn;po5R-EAwxGVvs51=e+X~h5W}Kk%#6d&!b$Owd;1PME zC1XMGVgt2AomAWh3Ikc*`PVQVE4^?R2;2n>_mqLVfZ;66zG_m`HC8rruzJ~$pi9(A z!Y*tcUCF0Bk!f}ftr{yEJ@2$QWysVTT0ZuO=dpUiONyOi<;uzs^-el$MXlpzFU5O= z;yp~!f0xdZd&Z*Lp+YBUojyxySJS;?QTc`#j-4LEI)?6wwTz-}udJ;iYb(o|W@K$u z_*3m_+Q#^(+<~o%XY>}quoJYzLHmR~sa)kbPW{R|`rnRK%VRjxZN`hpq|}Vslski; zmMT)5%Kj+0QiyJKe1(guf-cdm4t53G@4^AX326>_43KZHSjac7)CeAk(lw?rHW;jwc!niN3o9LCVy10d)oTIz~AkbW+K3QtrnMq3aZIZ;KrY z)184$O*nPe-D-zYbZ?+(H5NTOTJ2QEHPB**s%d!uwGmszcB-0gR<6Dl+!c((Dw*0X z{7G*sy{;udJ;JU`{o1K8-KB)Jw^HE8cd2moYp1H{vB22}`nd)2=!{QDNTzFr>0U`H zihpykPwx7Db1*8;0r&a|*CvR*IT#k41b2Bbq22ZO>YVxJU@>=Bt9?|8E>wGFZY{4ZOYTjFD7iNs0=ah@+?x&oZdS9UknpW?-h0|HH)_zk- zpK2#udPj**@KW|RC85f8>1`EK24WvDv8)5QGsBA}xkhHe2CwWvEqjn<|LQ(DAu-7C ze=tl26%*KD=OK86A}7su*rCMjGh&br%gv1&c^waVL27wC=7#HCqTPp} zU$T1rR2ageV7pnpU&5^>j|jXh$u2H+<4=yq>cUCakT2_#RFZKk4&^eu;!sq&+nFHIibGK)w;OH}%0ruY zf^IqV%#mnjI`&yN!bC8bdHmaSqUSx?P;&{b%&`oe%)cH>Xr9nM+a@ZxNk6g z)*S{7vua*Vup0YC2C?W_FLLMMzQPKk&cl&OF93Hz#7)5iLo<6l#wT#WtS7J6YIhzE zqocFt`f%;x(ioNUMBxkAIj+yW}xLmkE;Uhy~ z4O8H;qno7L6oWEmaI0eA`ThW`zzmL?Xk?fC)yv^N;cy>wIA()fO1kfGeCH_$mrHaX zbGT-MHp6|21Dc2=-LE)QF^68o!Lz;s4k&2RaJ`Y;^_-VOpK$174lh7z9Z}!mSaGl) zkgVuq4*>=Fq1&lyFY`NpTQ6Jfb-4Wd}9S(V`QZy%aVHg-uN1JP55L+H^Qtg$Lns z;X+n?X(()B3S1iSrGTf|xljJfI*=At_PkfLf?m&I-*w&$8yn;4~el~VWDR~q=ml1QjE}7 z*_kD@ypES-w4|aJy%OI)oSUroIoUNz#``Q|i;*FrdxP@iN}~;Cp>7w{?Tk9+VPU?V zQRh6YnM>&2s9YnkgrpIBUh?wYA;>!z`BH_vgOQ&x$PzjvGLzPji7j5}&jtE(hW7Uf z>CYK@TAwB@p?gD5iwSRoSn{$LdAA_%X5@1f@@__c%pgnX-pJs~CNYo&uXv%`j^O-j zI|8jAJtCyrjzDert5(91^P;cUic@m#gz=*W1uAz zq;cx^2s9#?SKp>cZdbo{JzaeS7A7$T@(csY>o`jk4=um#4KI%ygvSlcW4q#U1M~Rd zqgq7?RXlDqJRVRQeXV}&dg?j?{ocMjxb;#*G=a7^y+l?Ek=0D3@=-C!Y9?}vAtIqz zdC1B|0cIHnwQazQew(1*#^`@j=(jQYzdWYZl+b<9xe*i*2DR-iFZx}Aeix&k{g`mS zi_w=GbP3%DU4U7JL2dh+7k!Bp=IEjm475znV=#eqhCKZNl?1ltAbp!@cis9o!Gn^dZDV}Ck z^uCwf3&QRNW;g9|7zO*iFEGD$!%xDo1BPML7AAq&g-b6n13dIqK`$PG;US0zs+0{@ zsb9OCUR9~Q6Rz?)ckaY#hEv~GFSmDu+dItdF~jX0=4L&iZ71Q7%2zYOF1@QHmD%<5 z-VvBMU~kOK+tK+>oMwa#Zu1Hq6rqDG^p{U)gAB6J79&)`F&_zxQRzeKmq#}{IX#8| zo`$L>n2;%#k=gcvSN4h{`S$aQBax}=A-jfX#gQltJK*A76LF8*h|y0ls>A1R^ezG# zLGvquDHrb=YC%PR_X@mK1m4O5uL5KZ(XA}-X}DP6tw*9k&V5n~l<<-#y#m9j@?avI zGVpy_VlMk0pSHj3d&r7KSqXVY8FQzo^g3Pfb}!AFB>hd_gC*8xrH{o$v`JBxm9qPL zyx!T(DL;5p7a4J5Rj;1@_&u!CW-W_^!rrd~tDEl{c<@6_Z8#DAK)w*E2!o6VCWNrR;^Nm_q@S+Zq>t6fCqD*>Gzu@H+NcZTPhoMsNFr<3)FkQ2KQiu^Skv z!XVwicT@L5N=fx@NEmY|kbd=xEM#*n{4}4gH(*1W%L~R9Qy8UtvWV?wtmh5ZkQVb| zd5orz`qi&ux7Gr?5&hq3G%upqO@WktlSS_a20O`s4PiIWZ91K}D+4l0KKcC^-=@n+ z=Z(s`OqY``7?s@XE?rLg;8983UQ<`;a?(XZbY$FGPDv)?Nh2-st)ZUjCGo&TL%-_F z;OK!ax|hsJpE(3J*6wh*?PPqdT%(rKLF!c_4?4bM{=PbE`#huZ5yF`_~3#FZq1z(3{iAvKJ61Q2N%sb$hUWzX)$+pxRS$i z_6{pmPs#w(+B=ZfWpvV96FMzc7mP+iga!Q!4?Y(MuZ(;wp1~(0bz02*F?(fXO^dk` zPGmo?1S~}(=>Z<8?uo~<-!S8cH7WKQp5-MX^0NGtjQlLm<0f)yf0n0`G9t?p6F~5> zjV~KV0UVg^s}M#SU$wBU{14jOf5JpzTwnrtQqKZM89xln*sIWZq0+I}XyY}_T%`fs zF~)yJFu^`!jgQWH#B+=<&+OSRknxkXE<`-o>seba)<48}W}iVpfEL({S~XUfnQz76)b2MbH#{6HJA8^hFSFdvg*GeFX6H zBaqUTF*p3xq>4i_bu$w(rwZ@%Laj^%LZ}iykTLh1a5P-*B4g>5o%vaLjeyzV@;VO4 z$d?q8!xce%cn*myzitX6F?Uk3k}pl?Tb<`G;BE#qd?rdoG#>Os>e_##+2KmgynL%$ zMMBPJkWfYmQt)6SkS=PKwd7c;vH;KxXZw-`(IJmbr-xC~-!{#XH&3<)6T z5LJ|^Lq-YJ*3>jmzSX4+^B0(o&L<+gjz*N{Qw4~e-%lK7790le_tAJdHC|L+6FRm$ zUXzGK!$pH2W9Gz@Za6d} zm^hk;)_OEjW=17BM0BXHFiv#nzaHeL8_ht3H{^NE$ULv1~9v!8HCmmQNg>!HtKC>mD!;nsho$(%*Ogb~#@+$-{M7I`>CHbP2-=x~U< z8;;*A$F|K_%iBjS*vh~ajPSx9=PRrUCS)W^$6;}*=y^^1I0)mj6u1ILzrZpOug+pM z@n>i7QzKoiHu5?gqLU=H+zPG@)6XSB8# zCYlLu^Pk6?j~Vw3hU-j`(A8)Mxkk;xCY^De%C8-y(`7HJugPAZ z|L&q4Q;js28E?|Mn&dv=>VH&}jL!gA~E~s+DeQu@~t72bwA1j+7WbK1hD; zAk|vW@?kt+s{eO22DYe(c{*Y_)rnpMjYNS@RnBP*>>xEt$-1u5UZDTKwvn7RVSX-; zxvg{;#AwH0BL&VnNSKrr$gdqt&}AxeXOq1kL3D(cs~A0vfsJEC$n>%DYnRjYDzqOd1|`Kx<=5R9Sfyf)Q$@ipr&TI+BMhNw z*Q+eB%jtF%-rE>RD5d(DUlrxqsJ!wLm(=EBGl0CVI+;gEGH; z0d+yUE;k~d(jteD5lPJq&NQGUS>P`V_{$9bl!1F$QC>uJou}VP;A0ccXa70OpcHNR zpEvM~V&N~}eKlBphM7#X$A{)kCD7QjhP1>I5BG2|IPd&LI-cjJuLnr|Hj1dyP(e%@Ao%j>c2rkV#Q+gjd;X zb;@h^PI*cs8lDjkh4p%=PFGOmP5-3NhmEl(eYYLtr-jIu7Q7GjB)=Alvt^5D6IUPJ zz+F&VK~MSKx(qG#mKGk%Td~9I3toWWuUp9JlJG4myaVA|RQN8O{*!Dm zOp!T;Ur83vLE$;bJi84~ap$C6T{^}cQyO%ucnR!i)Q))402Ta;SMjzSe(bd^XW$?| zy=eg3a-_%V#mIyUO%~$mu|>&X!a$W~K`s%?~ z_p&@!AkSsU83yv)9O>mY;GX$;In4!ltG5I_&v`230q;JSC}Ip_Wc2^5mL*lJFhS&l zJ(j(sYAYNYUh>pd3p;4J0yyp%opWX%Nh2oy%^*why0O4dI{}ncyynpefkHvW#2=-w zt*xys&*QHyBIux8PtcV5@@Q=;QWrL%IiAqD;hID|8B8{qP@gAsPD4#J606o>eOXk( zb&+xdTI5NESz@R(k}!be<5HJ0ctAfdFB3bl# zc|aj%k)M`KhAV5M!K4cG(&v$%ShDL&FF~$)2>90WOO{N@w6pnE+Z<27l8Jy+sx{5G zI);uT?OwjsHFU6P8S|~4p<}4_FW>4LB79DDB!PmHZ}smdbW${mX}dR+9?tP}j95#< zB+U({+-SU#oYVhnm?^;h|3n|DfieRr0pF7b=JqFS9xswT0aKw7tg!B%BG_mRN%F1xkBrH2hQ_3ZxV-%%h z-sg5^o{jG}(+_dtK|0sHEQoF3aIDUt3}m4l=PQ&~s*XcTd-N7R1=>`EUiE7u8;%!g zRWyVhXC=Zh16%e3FWH}J_@4qk40uuzeyn~O{%79-KgSKa26jNDk~8;{H2fsM-vszJ z6`@!CGW7u=msKKf$V5JfoE zkisI&v9+;CJvqmh3^VKp|A}(UD49a+1s{J(dCZL(^!{-=3-X9)w6CxtM8wx;U*F=V z!txsJ9P_fD3h@}Lgr4@Y?j$*KPI{iq3PwwhS!Rcm$yl7mU`UaZp3HA|DM!ivn4KDS zr^MVOu8V0}{YPth`9d#2#2<=Ul94YG=V^&2Z_4MJYu_OS55z`d6>$SkKh$DI648%* zg;nvCD`ovh!$sY4A;b9`Xazl20Cc|N)kX9s-rO+>Zg~15X zFTwKqSNz_3nFV!fFfzwYhItoKBhY_%O>?%dFkBuFg^A9FQqLP5&qk%frv{P}=yyW7 zbN^WopCelq8oVq^NF@(vDq;8$uWBP!Dgpb;)~UhN%y?`;G+thPN;Ft$AUh27K~jRS z1g;A4Nd}$2x|Nf)ziBFemWi+!FGWY;7L3>S@r=Y^=!RF-NDPi1NXqQeE}{|pfuB2n z_LLd3&X_WJ+H8V_F>=t2bT*N>^XL3}#`I}3Pn$n;)+w{5PoH%rCn(wv^67J@&6qNO z){JR$Iaoks#yPpVW>Igaei7-z`@a-qUq-pa{o-}jT%$bvBOkq*`Lz*;g z{-o*CISPhXLz`jR{4chA=b=U zlPArc#L@%jFEY`^Xu6VzmGk3}imOA1)qRl#E%Is5gff%`; zh%=|n2e;W%ekGRMUxv>)dH$(W=AJrx{_Od4ru}Bh{27zxF@eYTSB51)>6v>cc!KCO z-#_g7?ml^#sk227{LhzRzN_ntMi!LMuME4oxt#ANgEfhGG!hFNnO&-0`?x+2_wBE} zVXO*I+v^3>AU#=NdEX6I8H~(Nspi)Ura}6$!2CX<9?v4ykkx~n(A%Z{z?vC$F$0RkDlsLCCkpdKu}UDbD^>JPN^>s zheP2|)~b<)@5>VNbI!bM1oi;U&TaD@RYIZlI)Afgj|g*CNACmcE2 zPhT0-69n~)z+}asNF}mk;YIYb3zp^K6qFs0hUh=VG0!`=3# zapY(}RT%~q!r+WRu8O=x{W62-1jc_>LUyrvu+G zO0M8dn#phIoEP_AYOeC_qvuLyg((QD&WdV3ucq2>YM@iuoD?xub)A9{RqtZgepEeW za;8!#h(7fzI%0_)^XVsjt4I5((WvyKTJbO4yLlhSn5uAUtkR!(?Y0?T%nA{0X3V<{ z=H~ClOooG@>GASvgEp9j`kF$0jZwE5)Ytwo>gkfp8n5iCoocQXU|ljG8I%#c?(ZWsWHb?h;BBbrz+9^57N#=nKfbtvcydnanm909NST^un#Qp~c z1_!pTmS1#|m&ZKeF%LYR@XDPBx!)MM^OW50vMxl4X|;@wELmrXtg|5Ngtt98c@|_v z-_|;w_5UCX6@nj5(IWb@L}4K+L{te;D-CcZ~g~4C( zQg;D4>K#qp-7j^tm2<+b9{(BveOZE*sYY!XH)>Pg!F^GpWxmO;=2NSYvP`v|L*#}M zgB&-aw20CvUY#ybqAp-j4=GU>u&B?Bs0;p~D9&*sOUoF@l68rabqUKl{#{Y)5|&l{ zt~TB!`;(Q**lk)(B5J?~PW38unG$jt3t6LtT*gA)f=k-4%Y4YhqW84a%UCJ~3U-Jt z_sJow!InVu6anv6zgXraz2iTXJX=I4i+gkQZV_pkB~t~_=iMSYk*@clugS^UBVtGy zQ-tFcJV`Ri3#Mt9u|!nhPk6$MA7Z`)j&L$bRDeSHXQMDXvp11gT%<>sVt#z z%1y=_jO4QEUIx>J!E`YAn}Jtte+k3?O5pc1B0QP9eGOVV!wdc!0sjra580}X`5WMw zO@=DC_-U_*UPXo0s%)T|8_?okdBHDMwc%neU8P&)k*|w=iF5Pld?V~)t_)UsW3%jV zT&yZXS4*H>aownXS=m3R@ctGGBxZ`dE$Wve$YB~Q-Pb~as#y|Yd#U_#gf4~9(_+V{ zONsAq-lslE;fI3Ws-$)7FuMBe@xfX*?$#vcpFka~?0&0KDaO(!?Z6zN<>Rt;r?S_b z4Dq$)?zEVK^m) z9cP`k>o=l@SaVOVRLwoPu;w;cGexu~xA4V$D*8ZY{+?V^P8`w-cOAheKvf`2hAPX;MRD={QJd%-8q|m%(&MbIZ2od2qub}Z0 zMvkWj9Z%;R0FC!+G^{vqKA7}_1_v$nnghgeYZ&HCW2!ZZ{ywc_R;M#DLMa;i>EPys-Bi51I-bDeN(Q`WzF5GwJU~RYzf zM=v4XH1rJ>KARVQP)IyGu9@U#nqbcsWhQubxPsGq_E)n4c_9$syT1L_8d5x(BaYG5 zh68?CBP3Q}w!vs?Yy0}!Z-><4OfO7Zn|H@L!{`pCRDouD^8v(^WK!oUqU>#16=i1JEsaNI_={-!7${gjTh0}L?LPJo*5lG(MIUDnEYyfPXdUm1@EW0m9M z$;x9B$+#O|P+M`Vx^X8S$#7*PfPL4=g>2{oz{~zlw$FoyMkDtw166RuTDEGbTrJnQ^CW(@F zoMO|j59xiDbBrT0&Eha^qrW0Df2{Xj9O=jYLk-gFdpk z%Rk?D^a+UC-WVu(N!S;?BEJIF?!%c>E8V-;DMcz^U8JzOakVM1{8fqn{A=(%H~Ll>2{E zY`sG;tx1Q`$TI{xj%te@VHN&2b}X+7msg(}j+LSbGR0R5?Aqov<$XS`JNNlec^>-+ zlU>{dqx<*@&2HGXyf&G{?F-t(epb4x#ZFXL;w}OGMR|3!u<8`HZBJF ziby@Z$0@AzuEln$wgNuy`~G$sYVFp=f!x1~&`)>DuN|Uos;unddx+aq1F@sQ=|OP{ z(cgWSOy|^%T+K9|?BV$MS23=nKV~o0Aer z@s;n{$w<-NNKQh$zVSWGxSfrGAMcRF7iWkr$vI;t611Zo`QH@lp|ZtWymihLe<~b& z-r{{cz2p1m%XdXqiI^6f5l*Fom0=^Q_)9Gk-Pt8MzCs+_z9a|6U4v4gvXm~#L7u*6 z%Ecu)XvwT}N0T(Dm*zZoJdD-f6lhaw9Q>JJ+u;zUb0kySn#t*c@gsCa4u*YJx~(ZN z^>c}N@E7uH*M;cH9Le*ZCZfQ9sDQ`RuU#LaYjPw%yP7DV{m9+VuTFKaD~<^4+0q*xTyR!+g)~PGuu}cISUF96$lYi1wrgZfrE0qHnycHso-t zwjl?t+OG#qtF|ErJ$nae^1-zYIT$10BU#cSY*4FeT`hJ+C`FIvNbla)^1rPz8OGkq zqDi+I@}9onczPt~pRX**V5~AcH=dY|<%di=nliHba{hzIwvvrkS+Z_%l?8)rg2gI` zuClKFl}&j&{3!P+y4u?CUnpe*&2~*FMK@ZHm%!QIY^OpgT5WwW3C_M|yFQenmDUZv zgtM#JDV74z$uGTO$PhBWQ*II+zF7-4!9q^0Lbt+bSGZ6(gek<7;C1Gnvs7pm? zYo30|dwcQsL9s`B2he(eZ#tKh+ZvR2>!^E*orFE(~@z42Es0Wx4L@Hf=Ko zTc%cnx3-`;K0jBQ8zc)jCCr5^fuWws@uFJSLP#Io6rN@ko)wR zsID8E?21S@8lszX@0tjYWlc^|pPuckW>_n|rO7FUCkkh`f<}dP+O+ST%6C`O|4ETG zR>;Z*WrzXw>s#)##|LZOxLcE$|Nk-f=J8Qg=O6HMXOalXRb!+x+S-~{tAHBABH~uU zDpZ!pqSRW=khw`ll9_R45)vSbiW)b}xJK&|Eht*lxU`LXRMb?drv5}wQR7lYDK&~# zRM7YHeV%hp?j%u5%=>v?{$O&>J@@M#+_T@Ybn9SbLrnEP4M}c}+xw4-_a9~N zH^ciljEU&cG`whDL`2Yu7b5~~jI8aLug5vwkEWrscj9)PL60hbb<{~4;Ms!BQDsHz@Q&1`LB>rdRaejv7fz_y+TOLS494_NI(#+nb( zP{rZ67J09Jppuw3Ca`5ufQ&vQxRGOZj!D z@@r?Ud8{u;m&dxP&X@g!g;(B%dIF}F{LB5qdiwtIYgf@F=_rZFEB_xRi#N!v3pw(C-o#fm5z#Xv&o~U(oyw#%~r>!)MQv^oqxs8gyr-DYh*l)8OC*Cl&>1}aRRCEWe0EKuQuW&Z;{)Q8i}oS32Q{-vA#)eK8UHeby^ zt832Z=o?@lk6vX(mmmTo9y;P#BT??~Cfn;|NMvy-y{=SuNiB`2*Hl#JKt?}GBZYzD z#pu*()lI*4tA8hh&zpXSrF#FXo%fF7Y^?Pa;F%B7dl_gld6S!J$rqKV_cP={?m)Ly zqPAp6QEjUwf5$;WwB}&>wS%-Z1Me&^78OJm)7A_rn&^Y-L<^NVJ4pY@n7t6~h2~l$ z{*Oxh@p7Wf-LAfiBQoS#7%9gf^H6W0npQv=v34Jir^X#K5;oMEyHX|!3PE35aY0PR*<`8=(rBRQUT*y00%27FjQj$0Gl02 zOp8>8F|SjQax&9Kyp#$5hPd|J1xg$Yu=4n!@A{GqY7NK?YUdNXzlAXct!KrSJ323f z^=_IZf02-xDUzOfqLiC@4q)Q(gQ4C+_be0@{HkZtC=w^%`K1|VCb)Y5c0}AKPNmLV zO`BqnwGmo87Gdz}sR{p88>q3Kpb8Is&j#vJ@3FQUdO>eUK}2Y_d#0_mNS(UOriRf zm)&@V8xOcs4cz$e6Q}2^HBRAKZh6Ns-f_TNY4DDddYMmCI^MrOc2M$RO2%4_Cqy5X0AnB<3#$ zo%e=$lE1eds>6m=Ec1#iraB=#y+2Yz)gEzEo@Xh}^LWbO6GI_kPqM(5`=mwOA3mRt zox;KBzCs;$p>-(d%R=%s=(vk4WFx*_!9u21JH?d=UW2Q-i=tY?SR%@?meo37N1!( zF=ae|f^__K`)AS-U+VHPUO>uNmP|5YE;kS~H|Hj_Fo47uBnFV+mvRzfEPDPB`Xdm- zWW{8Jy{Ud53_9r9+_rk#p(+#vPjb3{SX>Z`)Gy~p99Q8l@v~dX#Do!%yF_laSWF#@ zse_o;l$bh*+2^ZF%86k4Y8_U$7k-8DZnEk`TX&sktJ94Bh04TL>X!x8%jM>J^0jhd zphhlLTxV8LqgmXVDp(c^YMt%XZoLm;$t}@?78G9yk&6(59KAMm?i~ zYwGQi5Iy5r`P0mv=V%U&Xwtwf%iIKS8-ll)V67o|o2~RD3*^asTM@L1c0l4$GH_kX z-LRh-*v}Yt%hy<BsZ%%3S{wRZZyD%e(U zm(YJzTBS-q4tR-S*Nzs|RqqzJ3ey8btGvj@DWhX|Uk|;A1R44f}z%8u0G#0>|=s-3T$j4d=LR*dYWvm|)~LcrOv{V1mFm+9x}{ zi-4ac!=RC~&vi4Li^aP{=cdDi7R7LGI!xGT81(w)h3s_b=2EAT+AnY;ew(iS{%txk z)Ay|w`Yo>k_9k1^P}8?+7^9`u4h9kdx;6u~ix)Hh$ovNGPJ5FLb#@6gWI!N#pLRU7 z)S(M9q=IZ;?w@&{&~H}1eDj6s=I&aX&lS2bLmtMCT7R2LXVL?3+*oSNKn3hgwqZ(j z{t5wYQMNJYbqcf#OX9Cn3Obhix=`l^=}$`k8Xnh*#Eqxi!z9{Sxfcq7)db6qrDd#vl3x>viBOXYzRGVGJ!99QD@i1 zMv=AG-NU$bw@+PcG+BG$X~WaS=I)JBE1b_a$L?NvO&$QnrfS#t zQ6|v9(Tm*#zvh?8uR(B!BKS23x)9*k@~=@U4zz^t*W!j2#rNxe`FMM@;VHbt&36Rz z9Ra>mEHUT^@Li?|)S+gYKpkqpekk@{VGIT8|w6j(7k)cr9QjxICn`>=W!JDnP%Y+(e1m51Jg43|k%iUJJB<+}& zxE)gkqY^|f@xH^mj7cwXYs8Z*@UK_e(i8|k2>+)p7g9>OjXSAzxF#-WatnA(1iZ!q z{;dSO#sUuVYM;KQ7z+G1DB_pZFAI2GUG6I&wT{=!*-5v8cSONEtYDEhi{OHHSiyBh z!8?kgz+bN9uTsCP;9YgOmjYfFc1oZ;6f~R-DcoCydnT51 zY0qP8=(F)&M~zo-h1;etfg2|J(!y@XlMK?A3Te83mC|vrx{uBHT3uc!Iav~_o*4<3 z^01A@Z&2xFkIzqZHTx43>vIhc2lZ&eY-b6Iqq(*7N-Y)JZbGsSB7}np9!txj9A3^s z{3U?T4PXdW0;(>%gqGlMPqM%+35Mt_UFFz34;VRoKQtg_-@>V$(_8AQ?l^d?u< z`!_4~MM?r&eKwv_JX&b{#p!H8Y*yWuuu`v8H#NJ}-wsCyiEih{{-|`L|8~y9GDNU2 zy4`}bRp~lYZ|6MsCOh%|UZVnA>g?ijClH$*2~R4=!5J^B6>bmLVgax$nZHlPJyh#o zf3=9&agF@4J$mO}Q@tHe&_mYzjX0aKz1GG&=wsF^wV3aCtd{%-Un_T&sb9WZo;7c> zp`Lu%PhlQ9QjQS}`j86;CPe)&>l>6W_{NXa^=`c1Q41;0<>B))qm19W)jd*x9@giP zi)c@>&^{!dpocANSMwyJSc@gT)!kz!8j3pnU>T^+>%<+y^o2p1zl8WJnGi||B-&fgWP z+25{KI;~KBf>z}BUFu?IogJskJZNR`0$DC9Ydk0^-ehx~9ivN`hg*H7FGlC9Q@by& z^H0BC1V5mDIV&zyT$}31-=Qw7xV2L! z_Rpjp#?bo|8iq1rF?vV^+v@%KHwnU}H_NZ>kgWGYUUCsR(Mc=`8m8PoNjmF>;Y8%K z_6de!Wcg6Fc$00aukS-HVvV~Uj3nsi(r#T-=g+-GZvMCWwS#n!T~v(_Ng%{?h@O z^yVI>(z8MKlOal;ZeRk=+@F1y#yN+G<>QIH7dTJ3+RqI=KF=4??Abv+-3Mw z4X4?1TivV&ssq!VX<&_-D}7ACDT zPUYjYbqio#pu$1HGIuuI??#wx<&=a*5lu$Me?0_sY-qF!9z9eSi^+J4dy>DkOX8zw z3fR#2Es2k&sS+r(Ba27T6iGJIjw~KcQzdW`d)93af8I^2XfKwMVk`ff`kj;eu6f`RP% zix!8Cb(Tz^0r&y{<7?^&JPO#J3AAacpff|^#XR$1&^rIt4=P6TKhvlP9F~>U^F0`E z@*4NIE0k7)RPbOwh&vmEG>!%=dZ-^@OfYn6U6a2 zp0Xlw?$QTCG42rVvtK5;Bd3I7Q^VL0hYOY~H69>LD)I#nF3dS|?vy#RXa0`2Kr+Uh zGf$msV)$mHIaN+|R`=l8;@MO9o*{xVdG6GS^W_}ihBS$qx^S{O136nF=KXH=WWJ|C z!Oow%K*uo5ys1-9I&1rib2^?D?dB6?;ho=ClPEH2?$ z$JZn91Y>I|8;;06-yDg=IljLSj;KrX&4HU5jST`?-%pLGd!{(4-x*QSC`aN21;u&B zNRiYpjHnxWe_o^~I_29UD!RW9i>OO7H=t<6_I@t9 zX48jyJNrqXM_XJQbi4XVRv3#EJMs9GNZ7%y;$wYCoh4_ z?C-dQsfD55Ty@oWZ(br83e!+;+iwLCEiXo#mk8psLPNdn{ais?YpA!Q_Z24=I~B*# zO-#%P%M*ai#{!++wA^1iH5T9*kD=biSI*)!H+a=B`@~o&md|vZE~*ytw^U^zg8Eq5 z^gz7lfgI{Ba5KD0AD|$XlD7P~g7aQux*M%4- z7K_uNN8XKrf|fd8?mCO?K&*6jWraQ=vZK}x>A%}+eMLy&(BVSZ!AmI*M|OIXk6<5( zxMuiBHOmz-t3b4sttr+XC(A6L>Oo`MaZt@oNO&s+ORWLXAl)fo6Buj)z`70C1Sstf zEUwq5XpsCT-T5$`!KRPQ&7?#3)NQ2c-=!=*LQB&q4Jl|d8Eq!e&M;^*;dgGsiJc`C z3G~ICKuiXtG(?Mm!nhd@7$X{&|I19edQbGYTsNb7Fv)YD()QrCW4Xt5EN)xBCq~#S zONfr0c3>uX_v(eh1NDW0U=ZgRXq2v}-Dm}jRsghP_d++2r~qBmv-ip(8_-iW`~n57 zx!#T{pt%x*ubMhbW;$V-h8uX1XQVuch^Z3MR)>2g)g&C6_4{QgzkjRqHKE*vXr3hL zzyOBJ?kE;JD1n8~x`pDrGNRKUbPa?qB03Ed3vWT_68_runZV>;SSq5LZr6A%9d6um zc0f6Bf3bHKVY0pa#Pf&Hg1xgy;hx$F5CPyMfU8KB(RA$H zE0;#9$_0#phNzi`GI^{u z8gq*2G8JyEM+Tkd#3J;t8i8C@?{8JAhdd{o%IKuJiT575{8>_gqkJ6xc$89Euu<-m zai%9l?USswB0Gzq_DNQ|3Ly;45IxE8uOlK9pBE|(J3&OE0?OGZi*l-**dj#WLqIbS z5e$`v5^+Q!cN+Flc6Ye!{x@S{YDVndsKQP4cGxKmB=Fg|r#JjnP*;DtCsaKQF`veb0dIu3i1(|z5{O3$bP$2Il7{HJ+4 z!?P-;wVwJ{VR&0!bMwC>{4X*8kvXVrh+gvGu`9{Z{1OI#6l`I7S+TX$`&tnbq75o$ zO}(!hF-t;0dQHV)ls;8dNkw9w5t945ThPBm(7#yFY6yxG{fiy2Ij8SqH7RcHZ%x73 zDmYsiXTN>Lu&r#^oPGP^%v)4#0HW`>1$`nwpD@r$0L6(uVL?wLvqWgJu%KZoh)#D~n9}ny6lu6YFvLyw&O`zKt z`mmpfbKAV|!Xkt;bQ`nX@{_*MCmY0qf4N0JF368F@*BX46Ftr_!+gq_PcsoJzuvx> zY|ygbccZ>2s4p^Vp)ZSaiiuwIqI$hhqrSqZs9t0Ak{6YdCpo1z!O6u2IsXGU!)9UF z%nXkyhRw|Ixn_9V#qh>=F-$9u1QG_kd%K%ttB`DElEeL|Ly5L}@tx#igs=((5qO#X z5fM_wZe^~Q5Wz1C+R7=0?w3V&xUzyiVO^Ls@)e=9Matz3@~szjwKw^GE%};oArT0b z({*XcW^N0pY`!!NgkGHTSQdy+af(9~f%3vgD4d`_rU}FcwRSwPWOgLH)QLr=py1IB z>e9bz8Fx};2{osk_)D}z-m3MrgD*rkDd=vrSJgXeQDsSq6B{8-ALF6?&$Xw}oG-QT zT$WBdFp~=Q%Ob2CFNN$S`}GvX6dcun&?wRWy3rOh+G3#n6=-py#i*gTeHR)xh%`pQ z7jCQwV?}^9Vt*-!5j^Zg`+tYBxs_qZV9*XXR-Ccoz`7P#F`_sM?h6Jh>?|pa@dA5u zYkLZW>(j{Si=g;NsagG9s9he7j>y9ojm*tOU%7SMB14O}@NMZo?J)%RoyrY2eM4)? zjcsyc8{c^RPqSzryf>^ieye+u(S0I|5keXABqMG$g)yf%#2bJ$B7N_V zbJ4ftkW>x*P=C<;kvNSO-RVYsL{J}L)H{DF_1+___HA%*ckdAe8g}dDKDa^4-sMJp zK~P^{)ct-Ys4sA$VdR2x#MrbSVpN(^x4H*Q;S>dX?NH?8-d97@&!7{69MIbxkYgQm6Kj?!B!){AB;*8p6gOAK%8w{HF|Xqqaf=I7G$-^L`7pX-*BT*a%(j?#bF z5KM@~she-Z94p%-BQqt2C*R}d`@-S}{R=JIc3hX^F63ddh$&C zX-Fu|O?I`%g8Hi&{$0THb96Pgu^`xv(lrbyzH8!dDx(4r@PT{7RwT%yV;aq z9Vn*U&0J?3D8=t?)fj71h2d_uDfcjQk11UI%EN}GJ%#N-vE@O=zfs{osPJ`Rdyw&s z0i{l28lNtpp*l0%25j)~_QnmK^8XH{%`hNDs=fWQT%FZ&71eiDpqyUew5E1QL?SZ- zu~NqX7wq9Cc*|quR1>|$D(4!=x46^fNmfaDi3VbECtO)!Zq6U-20^>swA3%kMK?PU zh$YZ=N9*8e#5m!g4(|jF(5!#)bx*QvpHN&yNPQpNC+sW<^(2Ujj^SL@RfZRbBTK?O zR;`5;X1WD!_wanzcFw*rzm&$(c6Q8Jzf65aEeZrrL1$D0wA*f=T>`X=f$m@+B&J;+ zylcC9VW~j_gAv`+jdg{WMP1>=|BUJ7LFh-PLjaWE%N4Bh=IBU(NV0B2o-o%?4&1+{Zv^{c4_uecgQPgl`@5op7-5t>e~j z0wHPruH&}tT0{ufI_7$}FW2NqMYPE z?Q%p2+bhiW%&)V^N6%V3bWm7c8K>9T1)k(drvHW)Ho9-JQACp$_}wD5h=?sLVi&Uz zZSkV*Irb1p;^MM}IirX4@g|y~aRb@gF764u$svZ`#n3-LG>dYu zgI$TGT`Xb#p;_e1hm|3^Fbz*RpMqCR7p9>_>rHO2C0~(TZ&KHr>+E7`QrADN?d=Wj zHQ=M=N^9Q4-h_4-Sk@6r~nsItPZ3jknle_BtQDyE9^=nsAC!2=XEOr)i zV?k=bvOqXk?#yDwxRKs8(rv;vF<~2`J^~XYYn$qiUAff%p7KNc zuLR7FET--1@)b+TzfQ$pb+EcF%@JhWuC&R&LKm)eId0meZb~jC{~DF}(nHiuaW45z zj4nt|@I5Vj&jsqRho+_E>xQGMs9Ei@Xj)Fb+ztzFxhZ`W-_wATbY$!j50qG=oRVjb zr5|hjl6#o2r|el6eH68%qfBAVQl9?Y!{~9;l8(H_uuV_w(bSTT!sSVxPCv{%#xS<_ z%RGv%?}vFbUEdG$7`lEpm`5ANg2Vf=6w2= z3uKD7M~$Ly`3Xt!_NdYHEtgez+g13vc|I{#Y8dj5)i$F0e@8l36nC(JNtAnjbnjr( zIuMpe_YSryZDbbt#~&pCjq2Afp>?VxZmcE$1Eb}#Jx2YO&@<_`T#Ffx?ppG1QqhNx zHJ3ZmF)o9NKJu?up!ws><>%73y@0#70DP20XKRuYTAz+LjTakn{4>>EE$Y`Up%>D1 zbxZz7j+DEH<;$;KLY?W8t_1iiwd6luUA{{F+9mW-`s>X7W-a;0D(*|wuU$efvsb*y z_iD-Cp$s}eSzwpYE9qEfg{80LU#B?t>$!VV`uj<6H`S4UzPfv@`n5~wwRCwmYyh}2 zDEDZid~>=iecoJ4{uSdTdb9eqOX$sXYz6TqyK2c_rhNX0`n5}_D;-06Sa?eQd?js# z`n5~wopgB-G+@bXo`C1}xaB?G?8U39{fDcpXjZ>=3B9lOer>5E|M5z3S&y_W>39cW ztvLA#QAw51r(E7JRF?9dg&e)&8+3isT{F<=5sVkDcn!mF^lM|F8*iX}<#b zMc<^-p;r}4dky)zft#Q$8NTP?V4}9QZ(i*_rJKe@yXB>vUWMu_e62=>QpHO^8IDr^6xV_2C>d~c{D0B8E zU30yU*7HkkEz9yG3;jE03HS8b@@t3b?mgtOTT@Sd9lfdN@&kKF(QiRJfon?cun8Fs zb<*ZUPZmfqYyBQQYZ%t=fmX}aFeDTXI@M&YXVb8Em&fHKh|P68Ft=WrwYuJy4+BE< ze=7ZS|L{U#8KT(m1=SF3;OpF_m-$>Bv8Eo)g$)XDm9asZI=4~DRJhu4L~2iiQ@O-=qM^j?k$Z=7!Mt}U3g(hL zR2oG04u$!5!+e~vrTSF&4V5}#MZLdMdG&aOg;hRuzY^10k02_Z`<0@`djD8QSabCq zp}2y5K*65h>yc8r%fm)-YpGz!Bh@a-+gbTGrM#V$AADpM`PV9@pt=j9=n18<&1if= zX~Yz;7d^;h^PIEM?bTcBBQZnVS*8V8M0&MyXKp4HADKltSgnk}^+#evoGcz>$G4w* z;g(b+3{v}9{UBmC^q(3Lfg$-WL{GAmvXH$_L_Qu<&!Mu)Qs>lAkk`#(QE3{-hQf(S zSh0YT(Jr@DhQf(xBIb(D1X?sYE#^2_6Ze#yv32ZYL&@SxPAsNJB8Ga4QkEIwPA3+_ zA`}|xjk>Q<`rbXu>3D)C94J3>Q7G;dC&*WJdxkN-=pVbkv`*ploG>L3*d=IiTb63) zqQ#9RA<+Q3fMLCWV*>ojBe_pnR~>|=MuXbD@gxtndvUs71wE@SV)+sMoyW7$Rks(x zv)z`w)z;M6GMxB{8nO-(2Wu8XuC?&Qs-+$Ofh|K z$@9Lm*4K@gia>lZt?~#}bDbTg>v>QTJG!{n-OIsw!$$@Zk%~}pAtpJU*c2yN86A-~ zGZF|Iw{)er2g^L7SlIF5!I`woIA)#aXTQcigQC8!?wpCkCTkOQabQs_&*7kyq?q_R9XH5^z}?ik#HG;ezsUfFaz zEmZEz422z|AbO5l$@N|;o1mqHw-#Q{V}JfJS(H=G_si0hd1JIQg-Co(JNiUO?ABP@K&#N(Gc<`AFuoVOiBcb7aMtWu3KiS*FyHRdXYUB zL(>wXR`2*jGU*8;s8x-rtv24uEX}& z#q_Xu!$thn5}Vh`y*xYgSwIV7=&v{W* z@CoSjBIo)W>b5r2QGIfm3$;9~#+c3v-9~-vwcxFf*^KDeEXpY(`j~~SHAa2x#hP67 ziS0ucRhCe<_qsz+V@2&nX5C1OoVBrCC2gwjt0sy$W64M@f>yf4d?{kSWHIk5F<-Kn z1CQd#q{T#Edbiy*gibk1d;CkqxM?Yur?0rEdXwGDc);~?K2*k=>{@1*!~zvgoWAw8 zgwV@uScaAtK4c;T-rnRE{jn1)L)qzFz{4ZS8h=Zph-|!6e(e%ECyhE$Y8#i?6_J=j z=cqBx&ugf!-7>GMvO!y1)Ffci()weXdeZ*L3u~^1wW!hln1=V!%f?u_?8WwTWWa}&g0x1tSr=cCf15SN~Ob^7%3~~F7ZUNgNAdmIkiX$NiSAUtb`>?Mfu#p($Up2_xg1o#b`@Q$#=IIZ`hB%r9@eA$QZ??hqlWyQ zSIFgDrNOSEm1^9nyM}xXo!r%LO2_^QFFpj(ikNCjs?n#;WkkL%#8uH%YRIXv)|dTH zi|lH;TKVXX8X{i-;xIgZ#eYz&yO;Z-h^eOQl&iKNRSV*(=!W!9xxj2%?(0NMHQlH@ z)`e8`66q^1qvkuBXi-d9^ZpIJdq9_ax=FG~9>B-bdBOkV>3{uICjHhF{>M2#csD}t zH)u(?%3u_xU_F;^p%#6PEjVXf7GYxjInJ{-gDh8hpK3qIs^g|{^KW)*?G*e@#{XF1 zce2t$j@FN@Tt#!B3$6;$Ke;%-l)e>1Nw{i3D4ZBK)-biFFm4jYP0YCHXt78_*BM3$ zdy-}T>FVZH>emj@tBO7P-RxsV8`i=Wx4mx*``gUkso3ATi(A3YbSo!Fv@;#A-`|Xvx8zRNQ)v|J$l@UB(7mt^3b@UG##go(V#+w1M(KyjHvmu4J( zC|=JC?cy@Jic@36%9s5zHyJL|!>1TSyjAGds9#hr>IU8rV0!DlO(>3pgGOwt5$)=< zqw)FEV^pUdfs>C(>0&RTp0BN{o@Jz@B<`RT!obzfG~Uv2!|h+5)F)Xq7OKEOXGnGb zc?}H>xpctLemcUXk)X4vvXp#j_h(S+DzUWS<=yWIYoMNtR59Ea*2qn(g+VHm8Tt%^ z85mD(gzel7o-vj4#@*S|V8chwa}tSAxO9XZDXIZmZ*v3B=C4Z42FyBxIvXUsU(IAx zKd1}B!ANmsg%jqXe}!6fyBqx!Mn47UUmNsOFe=4sfW8lXM!0x(Bs|3_37`wEVe{9x z;T?u|06+Rz3{!p|U`&5tL}PT`;l?_PvCaZk=m)W6rbPo3{Mik3k;O&mg#g$QWU+dlO z`C{ZE$O2xF*`LZ{t0rg!Bfj+EE z7V7YpI$t5uR8fOxJU?q)b-pIVoJHsG*oHURie9d}1)=>id}ORLoCsAo^AgwtJwh$D z);4ve*mkYQ%BhRy6J6_hbz~;p2iq1Qgv|jTnq0Y-NwL_PPnf(`t=BB-CtF-KcS`X- zqNIXa9u&XQL-NauP7-CIIH}?rrL=fWxcEpJP0SlUQkr5TcqkDF`p#$%g1k$TJTS^@ zB?Ryv_ex&(EjTWPx>^OahV1NtwiOmCLvEh-Z3Aep$K`cp?(TfpnAkITk2-1i3921{ zz?moXY6pA|gG_nnJ|ei?>Nn+E04OWhXnX|zk&1un_u;D-u0hUyOqfy_;EA-~C<_oc z?l&nGoJu_(RM4)Gme^2lK~Ofzx3yuYzfXPWR74Xs*vo&0B*RO__1$xgCXfBBN=y!H zJc}2h|F?g@IG2AM$MA}z8+}+NS@eo)qM#y>C_6G12nWe`bz6pcHaa)#e#3}Sys4#E z4Tt}}G?EuD3q+l~cp_F=oXB04+sFEZQ=Q0_6=28py(*2u+>z!siO5r<(7CmL7?C$G zfzcQJco(Wi&AMR^B09zzfhsOgF^0Mi%OtM~jiv0oOiDwa?3fMZ!zhNF%?si))^rR8 z>+V1V7EseM@0JgvuHR(Q|ED(cjDj{z*Ct}(IBjA+n@GyUQEZ|G6UVhx3?u)9EYc>9 zgNd^z=vU9UXDWuF25~(k?(Ec=Y4SjqNPaN?V4isWgr+<Z_@%zx5NT*SmhAb#1{R0LjbQ}s217iMFSK*6-C zUyB|8sC;YsQ44@s6Sb2bwXg&ZFR2oGQT<)kpHxO4Guoi$Kjjv?QP4Ls`XqzC(Zc#W z9OPF*o7Lat{h{NuZv$EMj2pVi!;Wb3KzPkW*(un>t$|h$g~@8-wg6T(?}KH$RueY{ zc(-KsD;C)(9angeDYEvfKu2EXnJ^kjtJ-g3PI!nhDM&gKjZ_iA+WfIn{kR?-?o@9Z@zMf@c0}Y;m8$DzB zktoEHEV{vioX0?c9gW24j~-b)_?LROH%s}8OeoSub@y{_^^bWhdE6djZ*ns)M(b3d zq2Ax1jBQiDc8nfZR~zel6=B_`-$wBw+v+adbeooPAQ2KZD-_KAV(2G zJM;mBa4+ZdcFyVTI*xOCJLmMsDU#FMbqQ75m$q|OBRk#sr=KycBl{n2J^%2k%=?E| zJyq^|hmS0e6fbsyso9|sno^Lykk9*m;l(2nP!hlJqJ*Ji<9ZT$qjFAYFnYl)?|k_Z zsk|-~>`NItW2(Wvl(A1h1TupGE=|KD zmYDj(e1@d(MYkbW3)$67_Ge&29MRQG_RbFgLx%y3cDjLY65yK{c>ifqlikEqN`(mF zRxVFBrJ?4yT*t9lH?djIOq24YH(fWW@^q7$NL!Oqo}il>fm#RsQ|rkh!lA)vggng0 zd+Y)-Ka&#nB+Kox5IxBkJ;{V!9-*gHAmzP0d}J(Ks!JW056#m4lACQkUJ>C^qV*Ok zwy`IgTwHIVge*QW3j>^+6i3h(MJ*koSGkw!Nk)Awh^VB^oE&vV??<~whrC#|fZYGf z=2p4IW`C%Ke8@s>JyE|4KQzE8Pk;+n`hEtlCoY8243!`ybU2EVHZWOT`iW z-y5wx@1=OG*cB3=ALojRj~nX>$@Ot#-6>QNLvz0Gg~CW27shkjz1K1pZEF4oZ8941 z6Lbsr7`k_KCJogs+S2^Uy{Cyg0ZrT!5fLd55=~fBJ&fuQvwS9A`!y7_23oi-y&*61OS1hQ`Idy{{2uhHwTi;+t9 z2g8!Pu^+a{M`u!pW<%gxHygSZSv`2Ma4Al!!cf&)X{qt^15u7odQ#(OVKEqP_*VaO z1BSwhF{3L2)h5LrnLTVhO{5c@uoL4WD~Ed5s3ZBFI69LoS87zA*lUD}l!kg+RWgh+ zq$CTMPL4ztJ4i!E6?0v4e?EHl4X&>;I^p67_IDn+C=?FFYRGqcdxr5}=PSG4zgIZk zUcjoerZT2Q{p!A7-{j??M55f88V-g6VXomujWc%@ZPM9`&f7$5A8u<+Jbpa-H$yNk zHxbRDalh5&bRzbK@MJ`9RVg%ul?l|PqsAGA{8!yf(-hM*7t=H_RsI$Wpoyk|=Yiki zCI7udU>P&opclO6W|^m0=DAqrfn}?)XC5}QcyP+__tGeP#*8)$MX$S=7AmHNE~bTG z8hMh~vk*L?ll~`r#*H=Tt()B}A;l7Mv4p_Va+1!U5T@mL;P8L3XWUrBQ1qsoDWaGn zE~W^W-ct5N!1Ifl{n@i9RGM1YG<5D;ZisT%gsBp<#hZ^X(fzakS8u{DMbh+vo2)~Vb-2moguRax zSqGDin4_(ft3TjPwQ5DPwSVAd-Jn@FXjbVA$ebG*+uxHxZW~YJZJMLKv`wvP zZ(fSUnx47GVCbi_)~=$*JhItr%~IKq^0?}*cP{aDqtg+lk1ez}yva>VeEA!(`z=o0 zoc~x`=P%zP3SU;gHin@-QFNV4$rr^vtm<>?Q$B=~zh-V?zp&70^(NbE$=7LOzqB%z zW8D=#bDqClC|cC7pnYw6%*dcW#pu1^N%5_9 z{vk-wQcM2#K9Vc*x5}@i0N_9$zc|M;<$366t|k9Mm7+uaN{aJ%1jL(cswMxbf6KkY z6q}?t-*e(#U}>x+f3`}|sD35Ig&ym_NYPMB{+E@)nI8+5q`1hlAE(%{oP4y&Qn8nK zYB(pmmir1288RPxSyOFS)1@BSNzlH8$k%`boDY|KKID~e9m{>~hzyY#MZ{fA>aNF^ z5cyYii;Czc@+$~e@<@<3*$OqUS}OKx&%SG5Me}lB0U|?mjVesd*reHjI2Lf7=e8mw zY*_AVM`WmHM*|YlYZ~!JkF59GvdmY2$PnG65F3%O0db6Yi$|9HbuRO@BQiv{s)P+l zNUv+e)gD>(*S5@8fXEQtrV{R8Cn1gz@9@aNzm{dbc0`8gPL;4532C!NyvuVx=RxB# zUjZURqz~-bf`ko-W5jzs550t<)Vr(*rx3f4klxUUfAPr9t}g8V^bgq~o?oGU z`2l-g4WhL#rM|V(sW@oMR2}q-eYjOF!%44scvJ}esHKZgz^Kh%Qi>(FN5Ps5|bfB=T2h3DSG&*RGga%YOhon%}agVhzZd(im(%e*Qh(zfiUV3qRr|TE0MfX+czyG z{|(AA+E^aDxMuRz9?csbdw_N0O3vQj&=~fX9?2$9>QC^ z81D39?X^F;mt1~X{n}OZCmxvgCY!3r*9!P5TJ1fSEALG;zHY>X=r%>z4#L~i9XmjH zX}TcpP``E+-QksYQD+VLJ8Zdp_@44>SJ9t&PlGqvSVg}4_t?U_yiyUi)%c=_3DMn( zunmNFt2??uc(^KlkEma}ithEwtF5(${G0NcT9gEhlU09veM>lSWlo+)w2f0;$<+bn;%dePpkCXLF;44MiQR{#2my&+UujJQ` z(=K(jtCoD(?^|TYD=X++weh2~)>nYI5S^!Dy784?9oSOqe?TD>DJ6ECR;Z+#aKdU| z6R=*nI1+@BslR9cpn9+<^yqLm%i|*dahAVM$$y-2zy4q3j~Q(Mqa)nF>qP!K zmOpx)mcK3yuK}E9SWQo>zi0lSe6T3==twuqb0YsamLHlY-hYm9Tju=_-XAyC07egU z1HUNpUu5|kjr#zZk7!qe*??kYre?ez_?TA|A72Z zI5FP9b*8|+CgNXX@yq9H-@lfI+5dhAy<86}<7&LzBiwQ~i`>mD_kJaJGoya=Kgh*E zn!;;Pzf#G(DSF>zy}w+b^}d;gR#?A7TB&+RjWd9qDZpJKxQhiZTp<4KV%WU|2!5XhFFr+k_Fj8TNw7$9}>*V z%?w`qI5+M`BKRW~oPBB*;S(Gm@rijSo|;9zC|-x^Wq-ikkIz+1Q?0K6F;(<66M1oj7kW2{ET{8$zmXT4@mdfQ zq7^Ep5pUSK0s4ZPAZLhV<=|PpCb-6E!%OQG5#dIw9wIHU79$_Lc#(9W*oro-_bt>7K z-rI3vZs@Ho-mp?>XZ`dA%m*1VkjIy(P&NoH5mc6GUN`S&+O;)_F3hHm+taI@zt@q6|xo z8eEit2I!WB`sut#0e3I=6@dzkWx9kDd6Emszh$c66i$<0NpM*P#&U-(vfMX)iu}rbf6S1+>6$w7cg>b7Gv~;!q_{Cd zI+IOxs_9Pk2LcSBYFnV zb%~<6BHX&c%Hc_{jaJ>UnRM{)bdl0y=L>tblZ+uAUbk-e0Wvk)F>0J)Y46Q;CA0nh zcUgofUYQ8H0--8W6Jh`ST^0?P8hc3c4<&5vl2&eC|K3F7#&V*}%-(deHG@Z0hI+eFwyN|_>cnDms+?F!d1MK8q0E>4DmWL! zqWir)yKhS)kn$W06E;QDw=IW)p$Iu5jYcU(Yt@b{rX%IbBlUx$YHD@D3CBZ`u#wf;;g&bn$|(sFjeT*7O-KJhm;SLL z0^eUAsB2J2rtt>~G-3YV-NchDoSjHC>E6*c#SQZ$%tCmQ3kPmJh!=$UpnpSI^t_w; zS)V)nQq z#(K63yNdM9EoZnv>KUXSAS(?>{U)B`TT}0ALTN3bbF87qVbYKL3~qT7s{*0&0H2Yj zU<=N4!(VJM{>2suo;Cy*tIft$M&?|nG!#!bF~~I-ROH4=3RaS_cAkNgREd(TY|NQi zL}^Oc@R0x+!IpDoYM3Si$D;Nfe_SS=b*A>e%EzKUIGhFg-rRte#25)+++r}4_xr&} z#Q3|Y>h5;+i-vC*ksm0V42mfUS<0eWQ^pb;X!S%K#StDIF>m_BQ5@rS#f%;;x23t` zjvB}5(p_<5#!I>kSKLvfMsvD7blj{dM;VeKI&$ue!l|>Sj2f5EX@~0QdDAD3Ia9M| zrp7A%tdv--z)p$P8uoO>9yMyTLEfu(yu#jF$4{C$@uaDv<7es%*{K&6nG5^$zMuu= z^uC}q?W-?T1gcTo*a5>bRfYvarB0mNH26?;(>=0S7QJ#yCn*cW%lK;1B5B54GkPzw z=-NK@;gJ==qsUkGPKGHp?E|P20ivE<0CJ_6mv10xkuKJ#pN3f}X@`##dq(8Vv?Bd@9tZDX zwo7)xABR>SpXRrSj+aY~_1~d-LAWA?RkIbHUGfNSH31jddwJ z#gTBlvcf^v04;Qd8C~qgKFva3>omY^H*g%p=^J9vY3O?46ItJdj#&kT+EDIBKZDWF z0Q%^F_7?|x(9gg;h8KeQzuCVdoTMYOKN(%nHV=0OlHlS@Hdtr}AnUjgx=2TVsUrBEWkq zAe)wWsjqJl_9BJJiU1qOKgc%5h!lqII$sywkzuNm>zKyP{x`Sr&QonXoQwD!KC7%S zGFoD8Ie6Ix@p^-x1&eS1XBa_b@}-c(ZI2{}G4f>x^XW?KL4HfO)Zz1&WptJG@g%Ih zYDz7zJr5&)XdfChcYdW?L$k#`X=V-28`5Tm^(2Sji`#TF4;f&FOezVwgD<0~*@=oM z-DGvMsIEHwI^&GyoQ219oy@U4nT|{CDR+dzp+r8%pYzOB59xOm--b)0_|ioi|N4!7 zEtpHvJ^kjvtxxMWl({s9@A~hWzn`Put$az<7f#T~+)T8BdN);(mVCeaAj3GW;NJu2 zGzO1KDISYZ@(p729GxZD=#ps>%bW>eAgCWdR! z3oj2u4F{d4MdJ0br-dz1d!nd%inA!Eh9oetSXWMaqA%!42EU79M%bwi6el!|hA&#- zrrDoq_6JRaqT#^fhGu`Eafp8H>Ep9_<)TEnL%#Dq%rL+W1Mro?@v2Huf_al8;dmkt zPRtKgIBJubVQD?zZN{E#27BupWd;XM2pVtUVL%;RMLAgI=}DgIYe5wgqG58Wh`x`1 zo>Pv)xHWBe3jNP{$;!`xvpgvCVH~(0ff|y)M@9=@^YrvD`m=XZO~RRaw&BUYz-?|W zo0|(ee(6Zz;J`vho0|(Q{ZK5NGZ)Bl1K4??2KEwBmO8yO3kBkGKv$ClUO=Em1@RO)^rZNkKE+^X~$mjG+*I8^#T6e$s9CbcUY}_?przk~6Zo!P<%-pVz>_ zk4v-24pqsPFCJ3r<>%gp&2thnPBCnSSGZY&%o+r1UYW|zAiV9AxtjdSW0HYW9G!t0 zD*GxoWHo1CH8OCOhO7o;SDDVhYLkHvC^d;I1%fkh`BT3^{z?We|Naa#YTOy91r?+S zyUb!^FSEWrA(IXaX)%{^tIl0NDRbG6E_`<$YUF}Hif$<)mkYz?%y3Fb=i=qus=Ewf z&PEBZ52*vsZe{^qe2M^{?Vwv!xTVgH^OsIrR77)6yYD+BN>*!8MK`#`wTZYk7MFFF z%Ir4QHtDSXb9??=0}{PigJBExp;nGGYv@p9^f?;tP-OI@XKCLadeH>rWLF*5opakO z4-X8EC-+~a)Xl$9fbHT$jD~mc4c&Ekc85#WKi%)Mn~06bi#a8s@^T}s`&L1cbBvDV z+&=d0-(=Fxv+#lcIQ>S*yYWqjia;n#$4Nw2oiBSEFEp4U5nH~Ka^al0Cpk6q5-}%G zVF+7SyNTy8@f;A3S***z9607I1i1)s@Q%e<n0l zRA`wkuyUj%5G_DHY+0;5zaYH;o?oLnqYI>W)7;Y;mHSZJpE!Besi8#K>`1s6-+!1N zDCL~eOigRujL{y(C>Ree&!U_#ZsnUO3OkArnNTR!%9=Dwg$vF=!Rz_FI84>O3b< zZjhq)ie{PkStE#R7%{y<7nU{rP#%vkyOvbUGQ>p718BfkCv@yXh~>o@D%n>R+SdYv zuZ`G;6h|tL6G}0yXhJkMI;Q8_-%X*6~Ev}dnsl=3kMr}<&zd+D0VDw?pEZQe1 z$*l`Cq+JnTgxSvvdDD(3S=yUJ6`hL8asyuUklTb?J^bk1>OqZgQdCU1l_}4SVx1KI zNs$%!y2byic~_4oS?0_Ak45&9NGwRV@dr;l$wFTd;?APGRH7nZ3nCKqH^#&VL@VM; z=x&vMA$AXZhiExRQMK)~>aK^~>eq?-b*%nDrG6bVbtA;D(m1~2gSW(?XZL*>D+dXe zLGOIj&GMqKyvQsiXN!+sWR@Edl1Ju6=6Lz+EV4@~%gdGSPWA&%*79}25z#;_5empv zdf6l6PW`+UON%RJgp09IRY@s)%q?lN$I4Ol4igb=_Mm>>H zRP0QP#AGA4fz54q!~e@;<j?%i>c@ zl(gBfMcawx;m1hqepX8zLWD`-7}368PRyhWLBk&_+7}Pz-zzb6OxC_AU+8(s$nn0? zf@yXiMw3ciT3lgBIy*EOh65}Mr?c_q$ZhL3ccgNd9# z&_H+n-B7S8`%lWGDxmk6au@J>Ole9r1?O=kYN8H*Q!mvNH?1M+e$Ei~oY4!`e}naG zA`Tq1#ATBghxe#CH*Hj$Th)^)OG=y=wj7W}hY#e<%)mT2QAdEv}gB z1S^YCl;`vO`cQADnnuKuREvt{^$ZGq&kB*4Q-Z-iSpcO1sRtW-u)r# zXe^R2Xx`nVSHnw+z9>gz^eo8OUATEQ;Y6T1Z$|u-KzS%=06PsZMh9<|^Yw4FD#zG# z8cG&VpxoNC5Mh9{YGz-v6%EtofOV~~u4UGwVO?ust%sMNn*q|Es1Kvigsneu6F(%x z4>56vA%5sb5Kj)of}wDrJd~(0zSg9=lOnqaVS3QYaiW?$&IrDXdp|tenL} zS9)lyO{)y+m8$Vvwfhe!lPW)JuIvL3<7JT+7i_ez7ZcseoUa?sTRj6W*i331tm&c$ zyJ=q#Q(s`(oEn|IFZ>AF*?|hjI9RiFrLf-NaPMSyAL411 z<>e{Fny}yyx4BOV@l)OrN7;0~A%02`&oLk9^CTDg3ehqR(?57)t_O1&yDdvCWtb6k z!U-d#=}@<%S47e){O!djASp!FD~hvh_bEg1nGQbIYG{gvyXml_x|pcT`}<`>Xcy?X z+U`;wNDQ2CN~koHFl;o!&HApFE3kK&b?j1I%-$V1tI2TWx?$@~Vg1l+<%EeoyBg@G6{Su1E7>9+q5VtI#Xj zUA4nU_UIjvhl4}I!Fi!@X=QmJHjURsYt;=$3Zcd7OIdv>6kfkfmNu0_<3AAy2Pzz* zQrMEcTozT9zBJCJnaj0*IW5MT2SxB)C+Y+ePEZ7Ep$((mf)gw_0m0`%(;}h-1V4m; z2u?uomk5^-B_Q~yS}mBZ7#^M$DtD$h@#0u0nux>-(eyQPqepAmLy2f8%N`2Z z<+bAHp^*J2ql|-trmVLrt)}5Px2nTg)!|U}j#70vRPA4<{l&pSQ#CbQSk#=$`o z$InA=ziCM{#Vu_y`)x6#O{o{ZErzsZMj8hPQChh(CyKsk+$bqL$*lAv8QKF43 z?|^f}k21G0?;Pz%2@jgQS+WmGmpm<~d#+p9d*ZkESlAUx*n6D8e>cJ;JZQptx$I0V zi;h(}LCIgOFFN0?^J~%hHR~L5t~l^();Zx^?LY|+noiWj{4u~@f{nC-Q`{08JzTFe zdhig}DT$3d68#q=QNn{NQD?AL)4I^D3SUZ#5?#xxK2xf$WmSirryVEZK~>euXJ^8h zsTr+x=AY))d#8BuPS$(Yd6Ln0vff*aUI`DH-dRqfEYiDJ8eLtdyY>A|^!<(Xbt!#+ zV}1S=+Mg00G=1vDt20^)YCXd(Y`q9u&%#bwA&y(m!Y(tyBs^%s_@%35X*u1+ZdtF3 ztk+rAdL`?1mgPNP`%A)uC(8*WDq{}jK(&~b61S)ZFF&dcUOcLk&KF-b@a#y95hdY4 z6SW|Wbp)|!%t<)PXGT?P$gS>bQFk?~Yg6j3W_2GMbrK#lb*Zg^GiOGM18A@qWx3^U zg=qei12TdQh z2DB_Krz_%?)hV(%S=LW46t{JO4=JN z?O7vD!huE^1b#;rbZq}92C@$+}T_-eZmq~cgbh&G_GpEXgsQxChR!3EC zmFJ{!eR573>XYS4Ahxs~mBW z_N9aeO=Ul|-kBK0D-6UEMqW#eTP6-6j1t|rXD$E|u_rw9XAI;nEm4W9*tgzgFwWAfnqWUIu)d zRe!Wi^9}QDYR+huuM0ztVOqnhq_9nT_eZ0o7Acv8<0CbDt5Jb(MJ?sc5KA$xf2Gl| z^r-O|*((|_;S7AL#V}Ewwi}G+Sxk8ze-G+8!+D-H2&Ci28nVI^(ncX|f6p}lr+Xvd8;bX_U5Hwf(w7QT1+rlGyzN7Jg=K+RUv;5POa zVZDXtIenMv@^p)0oj%|vM|Q?&vix)0q^L2fP;p@7Ypx-^jY+Y1Yrw2%aTv0O6w*J7 zrGK_A8EaG0kp7uT2UJ0-N=c1%7`ps(-L|$0ZL2lu7@Il_Z7b9MC|hTS;t506l|uR# zA^nT>)G;=tU8ZyOFF&4iRv>D)n$B|@iggQBL=Ra7$J$h2I3N14oaXJL={i$r9~V;} zXPV`P_Hp(0Su(()ls5w_s7nIHj^Qh4beoF>&Q(~ajN1NT!}|<>(gVBO2TF|9SZJjf zzRpYCyzh#=?=tUKhWA~5fW0_pI=h?C%ihH$j@LN)3MA@VE)QO;?({_^>KqTU3tyro z|ISNXo|uN|;R=pqNQ$Kxp#Z%iSVYiinjg;sL|CQmw@}b)b|p!U@Af zO>V|!VQgl`?S`?LKMady00T4Qt0MXvleQYtzj2AeuKR&nD(^K-MpwB> zpAbu*VA78b=@T;IG@vzO@(l57O>=doa6T`b&ogIUlg`oSJ$TJ|lJf^@r+H!(8(rhJ zbc3*NVAcx5y1|3D92O4yTDX1*(MA=urk?zbR}02w^=ns!=v7t2G!JA}UA)6DLai_V zTH%nIGCvfVAF|A? zM&^gAa&D~m(I=?XL$p;zLFN`E?|6j;ncD_M=1ESCQP_H&Tj_RDx}BAdOzPsc-Sf$@ z=xG(~esP->0G)ZuYr5R)-Lx2%TugMe7c?P5d$n5DGk}G1n%2DLHDOB%@%3I_p?5tK zuQ9~e^A{Y@m)-5kOA+&%NONWX(QWL_!g(`ueqcCn9t>j*RYMBpDxqA(l!siQvvn1J zr({6ObCj9ng)~53h>* zF&WBrks)hOA$>qdA7IjV4e0}3G~f5S3!oO>GrEDbzTlX zYAL=a5Z(O}%V&zu(fvqGRg^+GnOks^v9jk3LpgcC<|#^f*=nZt6vk=H$lqMO-Y`!4 zv5Ygg$*-AmZ*seJ1~blpTVFMdGlX%W9i`tMaUANv0eG0pPF|^#P(@escBSyoX8zeA z{K-{1TW7=N11ds>RJ^RY+HZE-d@^&M49@w6^JMhf2lT8MPUUCC)zISRoX?!|!FeS( ztI3)Vr=v-nw!3Y`;Uiru&`0#FQr48Yw`gi!IQo$_{dk*R0xd6Bl?C9i^~W;nO%9r{ zJ(c(+CLVgV&R4zUzVb&Ct1_keif&CYcr)`B7+zU#KR|=gZyjMQ)lBrK9>zE-{40;Q zX^COfi?K@vVyRvg+rz5aT2fh`@@_odrn?QRUWxr9Sz)oEDqPiLXc)_ZLHRF3sh0y! z-+e=;h02{76_{V)zChei(dr(`I(&@Sy8Z;44!A}aqw}nXe}hVC;qG$|AKAk?LeXlv zrarVZ!KO0?gSLk>&&-U(4Pn7;{n>l9A->SMX~N*xt4~Uf8_v!?+%S6MU~s#P)+O4| zHQe5x$$MR^vv?x57!2@%?cp8KL#zq2*YqZay@i87+(Vlur8;iN+WU~AKwoG`8>}$} zgOb6TSQ8fB(Vw+{9}Hr*x#6HwZMf*p-kdO&nswHW#;!&*g$MBR=^-7FC#;&SsShji zbUzik-4ZIlg_YDGUDGpTRYT`c%x{;k!{k*5DL&&Dz-p9*gHxgnvu4b`t2Z<39ebTFUO$4_WiY=2HC1~bN|fluhH^YM zVhuuN#iW|7@b3QXylW6hU1k;riWdh;9YaR<^d^O+?-|nCL8_KDujXs&!;4HkXR-mAL@gFymp6kOR@8A%T`*SANJZm@6anK-tJa81!74^X z#0~$S=XuUKb0-9t3HtfS z4L|b=@S`ck)UyvG8arDtF5&^^A$K5&RFYLZGMJgMAA!_vCVuaOrynS~oK*v9(bn}h zXG3l@R0PnWVa{gZOQ}PA042C3XM7)S%-N|clDS)l#BDQLtk(@IzKYd@+5GqlS)#7c zKK^kkuVR*refuz@#ozuI%yxrm4*^Bi@#tXY7T+SxJsEcq_z`*-f>zSG9veuDwnlyw zT3#QE^=GUc%uBjn8*K>qOUC;ZDShRLU;hoEFtdHO2@^>b>P}c1#`pcjlML9ZIC-Cf zAwJ#$yNGP66f{AnGu)yDc=bWsRT(*;ao}8pG^4>QT|R*%9lq&GV@Gd zz-wz}B~?dHl9ihsdbt6Oijw!u7-IXwl*+GysqpC}#%qc3LB%LHB^gp9%Z$RSlBhSC z@D3vUKoRneBttY&EnZGc3`@H9XA*W+<0`~yArMGbWapp z=vl>@*f1n}K2A3Y1}iCN!LLz$3)Oo=`~}L~+Nn7^s(XpwqtgpLhZ#*3(Wb zzE%iR@?mKw=Wj9Ge!#7V4tV6*pwj1<7dQAU(@V+Iw_I**K*`g$9pC0-83&kXKt|fO z2}s}nXn_qNH*EoE zfej%2;#*ncYc{<$Cmf!geyfp;Ffx4vT-dJMn0_s&BqMBo$jKg(5jKPoX(LRgJ!O>@ z={E)Zm{9ARo@sX+TIg7U{#MK{K z+Bnt0pag=MhXO<`jF6OZs7NIf1yar-AvM@V{p^sTlq%ODLDgU#o*;ddf9P0BSK%RH zh3Onb;rLSz397m!Vul4$=^-JRfrfekG~Esa5AJ&y41EF}aQnws2k}J5@nK&rI3NDy zNVTVF;pZ9@z_g&tQ|}$`3D$>ve$!POEGj52E+{(9b-T>#p`e z*jEd>*f(_$f&#g-Xt~vb2c*jFQ{hGXHmbQAz|I344aI`NS$xz;m9k<8Vg-)eEq8$4 zg0lmb>Gssoo~2S?sS=8tVvb21A#;GlQ<^^sw~I_m;w=pd&V&O`40}CE{jrMl;OA zzj1mc$>%nr3B`(_bc>znTp~IbiGF^kbRGp2(Ybg6q$5^pG{gD)=j3FbM0VjeClSTa zlf>jEf4R|Lf4I}O@jUqi&y$qV3;$^s7!c=42Dbb*3y0%|7c9iUbqPtIV8?jB1s9nNqDXvfl9EBB+wQDZ9&i%6llvqK+mBgB_&YRJ9e8F z5#S;O+@J6Ur^qUqNw5HFn-s7hf3a{eN&F7q;!Zw zC2!PD-i#k}eK(*wB>b#Sm6YUt@7YD%%pz_k5g#kon+aE(D(N=^@K=)Mh)p*zw1U3h zrFs&9xCnH$$wMa}rqrZ4VmoxQCvgJO04Lec=R=1{jaBd4wXS8YYf0-dcMFHDC1vyP zmi3IoMD8twCkHs}DIx6u4#TqoQG_Hf{MatySr+juiMUa*K1;ahFh4vm9MTt+4tbC6 zV%b9X)kf;zIqlk;Fyrot8hBhlQ8jGTa9345c30F0G{XiFx-)8o%@FPy5VT;kxOhj@ zh`@^?aC_8=Jq^PL>$Hzzh`A>U&cdA-~TO@f7zbdpn_W1nFX=cE*d>-XW*B8>I zxZA)OE!XR-1sH=BVKe4y2w)7>&EfZCgHcxqd8}t+)Tk?xf%Q?Nu2=@1iyCzkWS}Q% z)J>FuC!$6Z{Iqy7)|xG?PS+RYmtSF3#^%=zF2>#!HLB&`{ZYds|NbOuc;(;QqJ}B| z{vhhCVys^<)^uka!xzDk7{O>CR6@|R{B7XB{DqRWR#UpRv6#l!5(@o@1JPLU$MEs5YD&6UP z_ci1@ga3Yj)1Ahl6;a6R7x8m;s&te2ZZD>r!hd&ix=9>b9)-lI6IAu-%oJ4&a&|Em zpEmImQ5=4P#bNS2+*H#M4vX%|hP?Tr>^vuajXKCXZCwU+(roj)_A)5W!mZfNG&x`K zuiWGwiyKwvHAr?baNzTMYzH3TzS6P>NCwc83p095(&fZc4euq6%%wD*x`x1l!EWG* zxq}?0ONsE_AgAf7dxIROtL_bQp02t#k%aU=`{J$Y@C3TI?_s-r$(CPuCQH5Piz{A} z=hk!53(sVsx4-$H-ReYO0=@7|mihMAJNC%q>g634`Nm~ezN!vqpfn30Q?FRzp>57F ze>J!g_S3T-K6a!kL%m-NVZ?|1^Q2Y_uW%WaWm6U&E;M->K>x6W95pK7Kft*aC5dv@ zKLkkvN9SL+UjS2aPz4zFBp2j;qvy-FnbXXOie9Rc;g>}&`ZUAkn34tg_sWN;>!bUy zM%C?$xWH_g8nhHf)z?x2Vijn)p8C){w;!MY5iV4K1>30wj<@Ai3HIYeN+S&8c|Fo} zBe(#@<8o0wb_;$xI?(t9W($9AqG)rzwbPf-hkYeTb@RQ_loGTIUpegq7k1Z}_yMN` zDgDk4HbeB0XRMrpedMZr(@!%alkhM>U!Yc{?M=csm$s@u7tQNag3e_@rTYTbnh^yM z|G_TCOO|=jvLidCWnKirGwO{-sN=so+wz|Ho)ez9mwyen*K5IoDGRY{u!T<7Tfjbk zJqj>vppR?KNP*X^F|8)c9V${X0CK4&YAZAYj|vJ#>O&V6L(MPO(0PCR+EPQOQ!F%9 z$_`B;U`dHmsf(g&cPEaR2kMaN?P4TEzk;%fDS~!QsljjQ==__3uy{(LOzzU9BHQ~r z-_$Hv-YMSSVc;e7w|sx6#~xJ&1=YF3b%Wwd+@Ag6kN9ggAK2aLoek{wG`ubTssq3GdHF&g2ca4b$*ob&oy!VA;1(2z4 z5z(gnItw&t`e~xg3z(7d0W;zYfpb*BNM&u#uJjvVhS3!wH*?Z|p<&7SWRF-ahx{^9 z&u|$TPdv_|k$4vNB_qnuSv;^0CF4{yMC9y&fC!DWL*)=u4njSG`PT@LgFrj~isSBt z^lFJTp;#ewWZ038B%~t|Y3zO3fJjGTN2%_t+{*|pecbo*7XbFoo_Ck}++77cS!kKM7@S;cOV=MQ%;274Be zU$BHJp?zcRf}h7TECT?~li~|eG0jIjFC_Ojb2dCLB=`w^0;sM6~gs}ckVSnOyqZONsnteq3!hbZapaShl z0{>Ege@Wo$6x^5Ogu$fBHBAx+PO^*LEAaLb-tY&d>3jE!H^~>liX~w>lHiu;S}yu^ ziH-$kvVvP8&Q_`0$J#$)IhP>u0=u>j0oFlamnpCg+L%C(b+&OWxlV+;_bmW3!V?u} zUlRE90{nRbe@1~nFSe9u+DGY(@WdH`5(U#W-mZ0nfZITD+Dhri4FWDQ2waK6a249I za9>(E zSY6W7o1PB5C`KtMJdJ_*3Gtaw^cgAIsT6%S9D7yR_~i8q6JGl*Co~qqSK@9r4!;x6 z3_jdwvgz^FyZwqNembXP!dpgAxAvA1XmQcQ*^t`|aLWjMB8487nZU@)6Hgu z=qj}%-_OYR6Y{+R`Ti03{P{>B^W6c+%neRdxUO=$_!k8J3xt2(-?AYW^BrCw#G4f#hX-R|{Ur*wKMDU$ zf&V7q|4ZS$nWVpu*akzF`b!jU;dHzH4+Z{*gnz^%QvZj9IR6ppFAif#Hx`;!a7w@n zA5rG(vE_WJGJ=~l%ZoR*Ibk>T+y5h?t!Q%=;+2bFo4E3qw!EroEao-wYxv<4ardS+ z0LVLUGDlc7g?|knd@dr~oLq>hFo@~RNxp#FYQYD^T+8kA`vSGJKup=*|38ezMSIgo zE+d;pVi~y+eGo}X2Af7=zx)m5jZGu57U=jUp&B-e!16X{6&kn@-WZ963*S-gTdR}b z&PyTjGwp)j7lPg=L5Ho9neaX_VaGCR6@m8tNbUtEcP#S9m3h6^SbFGM;X1c)hN5uI zwo`2vRNF`XFf9wtT9pmB!g@OqU8ab)3#M&RBLE+hGjL&my%nvn%o<-acA6DKdxf3p z)lByCtC{HKXNU>U*oRj$(Ye}cY2~Y#=S;_;ZmEIyEBp=N*#Q$?%fzNekF84TMKLRO z`ofB?CyDk0J}2x00zFlcd_bghes`j!5@@PRDuCekc00B+;C2FBr~tQT^0P0gV$1>KdlkXDEF{olceUl+C15J%FpN=C z1RJu@i&Q~tidCpHxdh_-!4k#pn#;+x6~h5wjD|a)j6sysAC-AA#xV`EBB@`Di|~qy zPn81!iBgq>_De0d0pORIJfhHki53hP1V}V@z^fp-lAv4! zWZ5LBf-N9J=O}3E&F*zzBQOP_sCy$vSr-fjmfVm@sQCP3$oHvTS*#$r3BwIxliRRu z(ZM)G7f6Cu{2>|qv*D=s5e3ejA6(OuWPGw?$BIcJ3Fi7^0u<*K;97F%#|l+W4|TRd zR>G$X3n5c)7b_TXo?EluoCulv(*4~m2?Q5Hrru${4-cM}n0jqA1KyxDzBcH02Wks~ zR_*v^oQfUq4TSOkdhzL+v-ymXN`A-g^yg*00fnWf##xX*E?|ZurkBd7bft7*uW}{M zKCX6XxhBAB$IUac;F!m=feY1Y+R&AHaw&68H{D*-8e0%@dlo2`((`1-A=?WM4O@m6 z9CiPb1@n>3=LPKrF^v%!jn9%qxG@cb>jb$c*bs;)){67(>~USg8UMIG;;bzAzsK?D zRMP_x*Q;h^!8%k!6)LV{uNJ>$PTh7%Pqs_e-V5yPxIomK~?Ty~@d{Hv7r)Y>h;IgL7iUb4XTcj>WS{iZYV z`FBwo`9+i87Jm1Q{b5Pdcafd$em)4~{$a+%-iS=cub|P!f#jE%__S|ti- zoGH>tmKhE{$*mZ1S9a~7pX-~+?wS{zqm5wdLUYmuPg>NQ`K-)sHaN}rl z)_WotZ=-qV_l99dhkEdJUJLpttseVeabB-T~`KZ;1w1nWA;g3@AgI0r1E52g5XExscU{PL% z#bT<&FByEffbYSzY-#6ZP}KYYlpCj-z|b&ZH5KADXJd3v1JIZDO2*KtcpL`<@JxG zBHKR_i)^`)*FW;;-`m>zeleXC=STA{5hQuLD5@U2awwgeva+&-LaEGkxn1F<8Km&i z3{<#KDZDh}cDuq$Gq8>+2VO3Mr0{Zzs>l8lP1%97%%({VKH67Ns_9v3SM^S&mRsFW z1Mp5J_SqkPidPW5lZhR`ex>rA%=72qqpdq?RKt5B&>uDGs^R_2$LZEpsjJE#Cq#`c z2xDipyw3D2P{Kl2*ahxEfdG3l|2ZcMruSeU3`5uxZ0nJwa8D+B&4JTJDYr~Y0?i-G zCu>;I!~fc4T$V*|Auh{88ILOB%d(hweqM)A-6MXf{QpVZPODi;7M5ra!b(y{lC)b{ z+N~t*Qzh+I!973EC8Ae|Uy^p4xIHv!zJSLv>&-x<()3`{Sx!S#sQ|G+PQR<-D!c3M zVSV?IzT=*jd3KKwP+{=+_TDV78`t-QNM5J7Ta|KAw-qXxnMz3L8oQvUSkO}>=v)+Z zF~Cz9O8uUhmZm{hjzF^&3R=ZE5xNRL0W~ zNj7-G!^#HN|1lvylwM|AUM5?vMO$dR|1t@146Q=Uu9z#y6bV4VH=xPgri4#@F478-FI-1qKkHA0q& z3oF)&E1j)*bA=1q#V&)h6%c_tfjgMRN!oHDuoFwB82yo8@KTV^=y3kCqLKP)yU3qBig9dih-KMb?z z_-C_WG}Z}?A@ta`=xD!5Q8bRC$NHkY4(P>ihW{6NLto$tKGso*up!=!tW`yn_?XRMCsxKVYW9?$X;|?KIRR6m~uvg6p-AMp?Y-u`Ay@5GZ<7>u} zEiLH1&2GtBwqz|?lJ%UlWGz`zhGF4lSW8;k@sg-3;?iT!$?CV348XU}o?rkupQJQ6 zW1adFbD;c6GcslJtjasppxcWQ;0@C7tLL*J*KCf= zDGz#0y!h)GS#Ta+^ajFV(=+=_y!hUt47m1rY0ewMoVr6$PrJ5zO)v9G>7}>ZP1w#R zY$p>opeD;hDz}qLZJiXv;dJI#!}h5e$r`%X&fb5R#`CHDl;@|e!}?lN1JF;7Yf|hS z#=^+WNI$s;zq6xu?Q;>_qDt@Q1fb*Ro_>?Q8{B&sP7v#{OH(h;A-87%u52zUQM#)- z?fS16CG=l03LBS|sGpXT0$ec)={{8!aEx?D_uL8ye#zVMS3CdJlK*PrKkfzTzpF=K z%jJ1N=HAt$#u1yx?&I5z*!QQ>`dW!Fh%*O9WnC}r1? zvVSUN9A+s+pk0@?6wD;r^+F2hO%k#~3Ryuya@J>q%%T;eaCU3iZXVa&PC@*rI0&~B6b+~% za64tR9$S|B^9S>iOpww;57NC#Bp+QmlU@^76h>IC1%~62mdl&r7D4w6M}nzf#h#B>HVgPno%rJn`!d z(i1C5Od>P+ej+nhl4n$AK14yz%!deyGSdSO4J|X-2C2O($%aRy4Udow7i^F%#v??0 zi?V^kiQIfdicBjvv5lBetTgmIWcO#c)Y45_UPCRS_3R#npLP7?Md?wFk$!dxe#u+$ zu$})I$^Q)T|Idrk7tfF{u2AgHkQzsWoHMCt}V`*-Kdagi5Kd zKS|{Vsd59U>`^K=kjfvFN)EHEBG5KSSt(1w>c@+@qypC?c7J^=m3&M}N;W2{A75$M zDD#WMxK=V{c7EJ3zvPA0cK#ibe+TieLVl`$JIE7XU|5tNjxlbN)Wb0nYa@1$bEuk$ z7oeXJhMrExeU{loCof2qJ&)SeUUImWOD|2}lEbGh$pD`cbIIZO7R4dord@J4K7G+w zMgT6QdwQ&6QOb_XABQT$s7Pw)ebTPw9@GMG&*4kvX2Ct1WKa8^!$V6l;2jJn4T&898nEoieF)9mJMl5)Y9Dr?!Ax2~O5;L}l z&MsWoS8dk%0+2)&vWA9pzJ&vE#r|noSnaZW{r|hoX!LHpwuKizh84eX;2O0P@hPjB6 zMtDj3jl<{?_S+8fTRIJ#%yw2+9;~M!t?50_} z7@i`yTU@*ivp&_4AU4Wasgw`9Ua5f>PwEcOC?}$xzR*_uTC@xf_Q%dDzplAZ5*1`>T%{y~6T+y~OXZYD!5JSaOPIr<8 z>oJ_v1nkVgCSc^tgERp`t;0Pf@3_*%u<1#*Bz4(#h{^gf$&6 z+O2wPw8)9KMq^XffO@GMzcm^Q&1xm`ti(nkH$7x$GNxb1XGS+ zA}ijZ1Xw>)E<|ia;-!gH-nG$g!Ll*Jf@QRC%cshMWwc)O#8;%7myJn!(X(s}TM%zE z+;Hs}{&w-Iw!HO1^<2S1>aP=#(^+F7=vw)7OW%-Jg>;wu#zmeLs_tL zOwx;>l|mF+;C8#=p)vRc3AP@2+l2UtAR;5WMErD&$RB5$>K$8PnQlJ~b)*Hb*>1_^ zF&fV7ZXPrF>@4`F(!F^MjuX?F`WQfq9VATUa7G9R3XI(h9dClm^pLl1z20&Dslfv zdEXDOkKyO(j&zz)+<`^e8~V4jn-|+cVyl71lon+c*p^2sw2pU^QE5jSTot(seRMGZ z1x|Qv;1b^K6gjc9lmX_ymQIpcm6XPjP8w?ODB19Il2y)TeIwFIR55oBF&XJ3nmM1+ z9G*^^x%1~zqMURRVWUH-j!Y+2<(zqx=$Ld8&8}d5W7A1=&Y7IO+36&jK4aF@*(C6= zbdt?f$wsAN&f)LUDz{~4okbFVNI4ZvHq4kcWiH?ZOnS-6D`mQrD+;!w(|L95;!p_Sm2 zI%U67YCL?(w5Ga!{szmW^eOw7(qq>*!JV>?Ic+d9qdw%PSLdde$W!(;0n9OL8gLkc zPD{BV#3wARa_|Le%iSS3^|B0TPnoyD7l;&<;2RrEm$I)g*@R-5EM+!cEiIF!+yaMr z9m1?&gbX#kfGb2&E>ZYC4V|;#j?a=BdXGw zde2Z$Ov{?&4%3pIOucuA2<2|S2cH3%dfyNcaCd8~(ey&5-akZ$xxwH}cc29)Q8RUz zKLn4OmNg^L==S@(43cwbAXr2oQ+Ev!WtPuB2R{b!n3ICu7Rb~KhX_O{mPh1q=@3yW z&Dy!a;90>yE$+xUL=bdI0;Ot*D7djurAZrOW$K|Jg3K|)2_@}A1QBH}(VNKBI}Qy> zb}cgX_#pz>`Wcye*CB%0IvtsM&k(_81q0>oKrrC*xcyiXu*Df76o2uX$iTiK;>cG5 zrWZ%tnR@?Fa751vO~Qvtr+6e>h>rw#*S1$;Z7^8tHw$VLAMA$kB;)Fan(-z+(|mzi zzS88gOmKex`;p-KU>tqa(6J}|?{*2Cp!Bqud9F(`=X}Hpc*|Q&OBZZbLw&Vr708du zC0t0s;%B)oEjIw*dbrqtYMkGS;;LR3zUZQ<%Jk&pKJpFq=2YAZPx18sN1B0r7to5> z3qngW;3ma)0n+2UOP*xBU}v#G8!7Orl?$+!MYHVn;K9FfkwXA3AK8rz&y9V!Bpzox7n=-X}QP>A*9{%S~le3hi(u;-osz#Jvu^YrEVeFPLAV>f^e73MtdvxJVpkLqiXy0J2}&SE5mfX92CD%gsOSp}c+F6x4tUGP z;x|~L*uQa4)Y*lvkphKqxrVCoolIW*VFM#a(|*Rq48o zvvHo=@&zJ_tp6*!;~rP_B`^>H%)MJ0gm(ihC>l_QaFLV;wi+G|&ErGv`S zl@6>OjxE_Rx)HQ19k{owBUUv!fC0{#I->=y5;x|j>kIU~&>{KbNjko8(4Nd+5J4I0 zpfdY~Bu|%+oj;XNKvY~^KiF;mhHd|bY;WGe-v7pd%cdSv3i$5OYmJm3sr%prda`m= z{*zAb{}b&+umedOLHm=A5*#rvy8lnKs{k!5O)vM+<&s>I=4f{Et97w^@701MbO>H9 znW)f14m-;-HgOr5c+x-F%gb~uVg7&0rh@MtqL)i1D(b>vb_sEo5GM(DB55ONagrbk zd0coP?Q*8PTryFSRwa@DReJfaf@6qY=4D+HyKA`Jz?E#^N-}V(@G*yu`Iq!DhjA%M zy4frm5>_CY+eg|JtYQVLNI?~HHiE_>dH@74gbfM4oHpuVHF=*lAsa%uW+hTVUy_oi zb?VeTO>DQJ5^6~}JcN40EeZGh6_qQ~Zu~knejOSA#=p3TuhXY3$$+1}CEd?=55fI( zhNoig&$26c3yp552Y5@ze#r0N;$GNWq-ZH>XatQzqQt*N{-JL>(r;H-ij+{5ZI`k` zO4&hDUO*`UfE~oQ7o|{saCiv$G1C-xGd|83bl-b;*kDnWa7YyxSIxAZcA9q>nA z?H}E>io7C8#O1@t2bT{+ihn7}%ZHU+$@_h#Ny$bFN=en8M0pKUUPBb4-;r*=h9nHx zN<0T!5p^XI-oS)65W#dsc*8IrzBLWaMk16%aF{)3Z)L(;iJ(mp-bw<{!eQyOHG-pXo3NcDnb_Ao&qq_fVlq=5!s+9bH`Z0@%o;n_P6-RQdy+zdmRtHJe^>NH6lI>k4|fD)s{&`aK9cy;-H_ zgM!er)2kR$0^VeRVQB)GmQ^0~nscp&fX9umd9mZsHZ%~L&Jjf&VWLBWncZkwHU3}| zVYChnLsmS(SUfZg>082BG&BrVNhZ@o3VLPXfldM+q?DMJWp`|*-apU&<|MuHVp^7R zZ>A1OFLKgGQclj)a}EtjxjIvK9U2mCQG~Bz>@cu)?7{bBw1N#06P#`5ja1A0`i3y2 z%P{+0`c1ca`c^I`?07GEQQ^T7=a0h;L=%9!KdoEcoY^y_3e%bRTzFanr|Fnmk2h%uA!cHCsw?!|JeDDCH`ZP|G0m1SNm9; zKsoo{vfpzoa_Z{5m}BuBD}9yWbw}J#gpp}`H#eSWn$MA!M-4w5$A5Q34ZjL3jT!-4 zy!Hcpe#@57o}$vBN_+cuyA8jinTOw@lD{a~zx&}FT)?_5%Dv>@vFt5T!wuzpYbk#{ zS%L+dZ&u{?Bd2l|m>S(GTYWZ*ckRRPHZmo|RVOtQ7 z;Mw2Hf6j&caWevDWa7SsTH2kn!*2g28kMR`v|rE9g4xRCOT_$R9cPIQrcjz~?6NpZ zMpwU`c?mNwA?C~9@Je0C$WoU=-@7*x{O(gPEx9R_t@1vfa+=h9v}gK74jY+d3{RW z0~%MCPLYET2zkq+PWV~_!wr9<5`YGPvyd-6P8MU8%Zq=-oH>Hq@Ohz!81-0RE57GA zaD5<4xG7NfNIR+=KM~WS*uHNT_G~8fqu*n9Zzg-@y(itxclB8JBCZ;ng?;N6^Q*JX z!oKdshF_gA+_T78#g=^~EbCtk&JMoxt+=#pF*tkp(q#^;j(V(bG2~7EfgP|#W3h%C z{w!{9S$u%6T4Zw|1{s)`VThVQipAxe;d_ani9-WJa83&GoG^GvY*z4JgZsi$k#D*gV`WZf>LI zL5BJc+B{H+v3X4i>ltAe_#jW@KS+`$DM=4HxV(4c`=%n$9u$%~@q3?#$r_q*K5(gZ zd%aeeJ0p^{E6dKl8r>5HSnasrk6CbuqF*hHZpX*^qax55b@p??dQ7Qvy1t>>_qYQ) z6!gII`(cep5s!kif+IX33R`CzMp!E%ERTY-og+Nuz=jb&SiuNAB0@(LoLwB@8L}Eb z8pR0DiU>>TCFOzLAc_c<-LP^%`)Io(HgYy>q-^Nfnhm+=mW||=ACy}*IzGZJ=40(* zU*(M=SN60T?nuN6!zK}-tJT@Zsy7Q)ZNraRHw)37tFZ+%e%_Y-_s0CuC_ zUly_Bt>7%>=x+)yZsF)#MD$LKzC}b|-U`kTNB_6*X)i~AS45}I+PflpM=Lnv9Q{M# z;q@H-BN2TmqJJc!FHNoek;MZ?@taq`q7tQm*E~3(7>lZuW zJM#XwB6GyXvEK@~zE;Bz?KJ7D$9finvyh|zS?5aG!T$NP*hae-qhBSWcP|EKh@&qP z(c3xtG7-H8qc0QDyB1?%zEOnYi@_P^#J7pW{k)&pZ6a|OCcaBV?_7NF2UoQZ4{SNh z7m4_B0PS-J3eKkW?kY<x}S7u-~9EG{?UzH0-;kRJ4$mGD) zZV+m5R%lU)Vy!yT&VH<5Ki0-hqmywT@SBNak=yqHp7)tHIods;STTlvX=ffQn8(_f z$D-Zw4`k^Z%da*gkUq7r8&5VBtQ|+$*$V`FfsMTY+20j*7a;dh9}d~>l8K73?`S)7 ziC`|VF_$3o*&j-~OK>J0Cy7(Cdy=nqO2A&uBwyTR=RHI4p7G~IIXeS+uT#8dU|y$O z&Jw)B*+nIaGIWfcx?E6~+o;Qt`qdA)kd-5G?nkLQJHaeUn51j}e|B0t7duo4FvCVW z18HY`Bt1O?bJ>w<2}|$_izgH-%J{K%>RH0#SvKlfNWJtUws;m2zc56LOC~D1{^RVl z^91cY8|^%#-K#8~mtxt9t=9^vQOg_vl0RCENK+)>zu&2=sh$@^LlR)G#=BtA~1q0+#{-*&fie@c=q?6RwIDhQiSD&{#Iu%_7waumSeO>o$$Q| zMiWd#XW@n!MsNX4#5Znw?7ywfQoM^!IE5K;t5-OMy|oQ{(FZS{b8t#ll)|y{oFe6d zivLf#0@sV4qv5GB=k!)*!5U@zIp_*pN5Hn9!%7acHw2IQrkW8?9lBj|^#0DyRj=jZ z6hb|E;&b#mEh4PPOvwKj`|?&T@ZAePmgPjuu*oT*dX~}^H6m6E1Q1D&bw=|#gi&`1 zLgV;)Uo~8u?Zw_v$T&U#)~GgoFU;fyzCQy>UsiBSA6Z&u_`rz|Tu1DzgXOsuYzTN8LJBROg!=!q zTtC47Lxl^K)f7yjyEbRWBz(=u4^wxw-vkMsGh0d@$t^H>ni}1Q6^%HRFL*EuaGEsv zK|QvhvL&oY`YP;XCsC_$54ihl@UDBN}~6jXJ^4q zuT=htoK;4R6*L!|5FCqoBJU$~e45 zgo~k^FZ8w=R-_(I;m~>t6~k{h*wYHb4m^y>A6LE40B&r7=)aJ`@*)I1C{0uQ0C|0ElX0(V0s7^x3kI03Z0^Rhr&aY%9|6e}537YvY7fO0mX zf@C+!k4)(%}N|XlIg#)x4g<4vWz8ZLJ+x4kzGQ`+6lJL#ML-P%a znNX}m^bHg<7R7uf#L$5A_#IM=7;uJuR52wJm56xN0MC@57;^^~8X5(zP-4U=ugb1r9_NllMC)4DZw$OP*CL^pky8@Ip%Zr35_r3e=dC@#+S*Z zHdQ723_0zcl#^=em6VW~kVMZ)>XqCmBvG$qvyvowC2`RQ7QK>=HlrX?=L>_zkA|+c zgSW-|=o>gBMvYQidrd-P6z3sm41Cy5cH1Z{N|Sd=w}~;Z)F}FiKdwgG*bj9|eI2y} zbkY#^GNF@(uxpe~F@%*m#Sr$#)j8N;6$MM7@wx$msiX9@5S)pQE&M_{R*p_Z=4Wyz zbP&Ob?Xk{1_51_(5zvuJMck*<0D#6jV&SxS@QZAq9kDQQ4+^qC({Oa?h|Pxm?nc1l zugaG2OfzEnJYjffUe*D2PEgS+Bkl-C-v5>m99i^3scr%G=2J|d3Ogm*|E40$680@L zgEcd1W`=9)yw+s5)#M8loebCk>_3?GGOc@%#A6QPIhnS8u*Cb{yJ9fW#Yw8;2XoUv z=H%q5>YnV5xRZGMQuP+5ESZ>;_5j<1*bSZ&8N|_Vr^YMOCR>|&VlL%Ls!vTRiz|bk z1^B+TG7_}hwI-FU6z!Esab*FeORZekla)}qBlo+d2fNp_tg{2*hEOPIMNF@l$ia1o zf3UA$JaB7cT5=w8rY~IYj(F;Dx#5ri<_3e6bwMkFs|?cv5SvaUEGQgOdTKc{_0seb zljcbcH8rM%8#|8pUfk$keMu(jz8}I>06-oOKIm8Csd&SBois_Ros|+jnff zw1Z@r6{(*mcD>2eZ-0Xm;#Ro_OPJ_h;5YhR;v0P&BWrN%h{OWU1FTc^;m|+e_K!C$ zD`FF8JnnPp^P8^PU{OJFaY4~(u9IfDPV&1>3fH+U z)9bR#T6eV%1kQoJ0U5wqfb%kn6aLBEDSeth7*at^L%>s{aM~3f&UyY^e3bZeT%YH_ zr7WrY2KN(JaP9w+G7)x+mRkcb20`D!r+72Km}^{FaKtXzt)R_4X+cODg!$t_mRaL# zroG%swl+-KAw}EhKc#(@Y7TI_(&>#lD2BAo&G{9 z2p4u28SuE`z7VD0BG|Odm8_;0HQ+W(4Ssh7_cxc6@V=eeqvd+seu`vzfw!^f|1ukL z>rHpK!BW?Ly;~L*4`u^Zi%3hz{B41GaX}is!RkOBQ99(VBC^S%J#MjZU9em9=rM3T z^2;8*9(%M64)p!Nz?O{}Gxgq7KV=vQz%2=GXC)9Yb2J#PCms_Xt0fc(j<-A$!TDl% zB=miKEIq@j_NMms$!zDNXtVfxb(=Hi2Mvq`Fpc$;8jUcG|_N|s!1PU_e%_~(Ff)pQ5i9?0>Ncvbi`@_@@y3$mDa#(Ml5&03(jL2M?%jl+#-d3 zNWZ2?pp@EY5t+M8k`-QMcG>=<2Sp#HN{B)Qh25GXL~rQ`o`h&h4|ql(5>S9WNx(;G z_|-OjMe{1=1XXeh(rd9a{4dt9O?QXu6i45i(jRC@Eucst5M^FQ?L0s2Kri!Iyhz1cuGg% zU>)$m8Tj!tF67SZdV|@|6Do*6EY{eAYcmh@C9i6=Wk&PMB{Z+VYu1<+K7ERmg|efr ztp&H0T()&oiR=X zG1Tz%459oJiflI(E|+kL8yEPA5-u8mMErVph|&}ks@PqZuqtj2f36L}GH3FvO7r3d zGvF}`#4ZdnRnJm;>U=HN0?7a1#B9j=S~g7iTnc&@8(|pBe|NSz`?y4m!xmGIbu4z~ zfCCK68-NpPPs+x|vDI0Dmm-ZYzV1Z4(%x!Z1miiu(#6gWylaL%?vUw)vIk$tz>?K! z1buR+h>1+r+lu=^nYc+CoXnT{7aNUke}gHEDdnqui}CIM$ykl`Snncd4-$Ayi@wH% zQ}CHUr622pTzt|B&VG!x0Locd`(ncb>wtf0R`?*$P9SrOr8~1a(i#E%U-W(qXPizwNDGM%aM`mqYxIN$IuAMsW3*EzcB;8 z!b?G)7sDv-ly77?TTe-F@M45vla?_a%goX?r_130A%C-wzlT<_Yn)@!9ExhR~HEp$7>a9)4S ztY0fudN_P7?Ay|cH7N|=2o>#7X9aozb9t{|ULJL}opqBIRN|QfnR?+tQ&a@Q5w{SM2%E6?h`S4-ZfO3F zx`|zFc@ZJAU;G*#XyLKby=^d{6WtG z!jxDYNti1cb0uL;Q9OT)Mm6-)&Ha#` z9S}=41+ApZ>9y0|>7cy0(}8($!uR}s{!RxPTK&DunLEX&N_dbymJ6()qQ`&>H*iNg z0UCPQ4*ns3=k_7N-HzbR03XuMg?$Q~@8T3h0^2g(5?Lb30U}qkU5vbokn{FRp}Pnh zi%_=G8LX)Zo4B|H3;Oea-?=nn;Ju>aQ_l)EnHI&k`pP%2dt>F&x3}&CQB-{DbYCsb z(IC<@mwvLg@53t|{=^n9WcljN3B`2(+RNH)M0BTQBHel9viA0NS3(5cOVaRn$G&$f z>wGm4O8>LOO_9Sqy(oxntVy>8yRo0tMa8EQ`WV>oQw{LjVt@>-))%R3s4nmX>&IK} z>S|x4{^IfO`inz_zbQJYHVDqEE*}Y@U**&Dw08)Nw7>%Wz(h0}QbZlU&L_ge2MXL6;4GI{@zBIFi$cSPOvkcAQ?|M`MGTPQZb%@jH#KIOsFiBJgyQuU!mkHM7|R>>CQsr z(_{UMcqXt2n+r!QWJG9Lnmr%^$huH}0CJ~I#jnC^KY8(!87$fefBQc1%A({T%|ssq~e!WS?f zmbZ-#E&y#hR%|`?X4F}M4S2ojse?07sUBO3o#}&QMZjz-uX6_ireBFGJWYx`5&$ab zWl6>Mm$PBE!+>0zhN-}>OfN@8QT!I6;>y=iPHsc4?6r=R8k7WfT|>khYzipIivQ1Ul9!>q2)zq!G6B4o^=88f`p|g9vqrL1 zmD$;9HRE^_YR}(_&-#$zsbgZCdvUg7mU-afslDjHjws|AXK>nx_%%GRknb*yLY}<( zcH(Yy_!dmt9)&!4b@J~R!|=eR+9h;*Pb=if%MT=OU#@lh3sd*E0t`DyNy*>WzifA6 z{=Hb4-lJTgCFb9Ypx*U#CblR)23e6JaZO@-lP3EM!S~BGOm?t3V7JT+cokls!o`Yk zo5scFHVw;7wQc|(M17mK_T_B2NjG4$X<4A%MuRGPC!4xQgCR4Z_$nq#dyuzN@OBdK z>&Qd3u9J9hW9M`X^tk(^@If}T4UiO!+Y@QN_Lt1T~Ic-t$0(Dc`Z=?|vRR1YYo zv$4oXQKgl3aqkLo?~=Hp;j*Z{OXBK=%cA^l=USBvwi%KPRSCw7DBMxpq9&up%ahJ-JM;zFG zyfxeaXBDcbht-ZZw`b!=oy~duXEVfE=kPC8sI_7SrK1JF*}-X^bv*Ggrs;2X_Tm)} zJn!HqLstvr{pkWuzUM;zC76E*n0ADL5e_iwVUuIQe-UO|v$GVhc;F=mKO#CYRtT@v z!|RTdKEYUh%?7^tc*9Xk!LDX!7e?^F76(6e;+UupuhqjljujMZOEWlKBZ=)J$2p%O zPH!_ftN7Aqj^lRVrS;9=?BGkg$U%CnyE(1wz*PugU&I#-sEjCdv-wkwvVuS(C ziVO!BHI}>Hgv<1YKSUpNwB_xpW)PPEqo(msI#q8#wzCmv0~?daNH`PNn|bLc7JutkT||I+n~%zFF9PGugdI*nKmx zjUQ=%)0L_0zD3x*r4^hNiOaVOLwZ}m*`B!kpfF@TK2{Q!A0}u$*4>&`X+cBEMe`>u za0Tp^bPG$m$&v*lxwv!_-5qF2e?r6>VM+gDaJsUTflmrcaHG45#N}s%C4Gy**`B!k zGC}LH-jqgEsu`lkmeSrHvfJ>su;Fd8;ol?WBm8Z#M^kSU(&z>fQ=<1*q{#Xesjc@{ z4DabUiogM-?epFDNJ?s>IA!CEFmZboQ|ZNaGd~t)eoWXu&5&k(OjX4ZTaZpyU{)~V zt7#!VMUxY@(|s%Gz9qV|G7P|#Yv1bFZ@)~Da~P+l({Qnk-0o<}A5uDOj-CMD>$0Dn zMpgcOgV|tCHa&i~Wh&r`CcB~cj^IY@-VxY{twBQr*kHlEBXGp|IbQHKSTtJz_m04J z>7+~paPB5J+4P$cQ(pGsWwY7iZwUJu)zzEvY9M%y+ZT}$U%^Xmt2T@mZ~`JTOXlXi zBcAHVmTbM)65`$wJOj}kHL&0Mz=-X1yB~vLSUn@ImJ zn_co!HoD|FRA&lb0=$%sZut%`F2Gg99RAHH9AvlyUVJUmg0axnM!f2)uQ$CuH&*_a z=<3Q*28^cB(o5O%_u#Zh1`lap%4TCbdAI9c5lnAlNtkwyFH%Pj^yY}N&ed+Wa<{N@ zH(B`+N~JBDc4yarmtlmxby^dFHR`b=va-`L}ldaxO zW~Mn|V6$>EE`PL4Z+S3K%IAtmE(+4BM=0 zH!x4X!mBpx`0Du4(zqC(i*kl~>4Q5LpHqjTui^j_o?8aaiHX7G`i+8)CdEHA{rmgrb0I1c}>s~+$DpGK#M<9+Z2+5XAKvrCBhaN|>*W(a) zOs;HG$8m}5ZcCxW>_cQPACjv}aoW0J#c*Qk#Unw}5Rev0)ZT0C7EL6JCZa`W<{GI? z+YW+lH$uV}{-30=8Bqi!Loq^7D$LRjiH-R!zP~^dF3rWxGG`{Qkb~3T`bRcAo@+qf z3ZW=Nq&ECeI_V!=MA9lF_|BHsGAkv0F}tFv|D}@BWl~X+|ECYd|FZ+8!t1$K;-c^8lBILe(i4A@@I8JE zHW#h*{3OjXH9L@Gjbw9OCs}RQ6vMosSVP-bg#4xg?YLfoqe=Lk8-NE*x@~|-9yIBV zbWM_c_FR&b{fautE^{b$@t9H~cHC$;>SD^Li_xguF|y&hm>-?X+noJaK>g5!)dAOY zrB@J%ILSJ}-7kKV9(2VJPSv`A*)*UxLX|qKfV-C4jl4_~izP49{;&b-^}(0I)HX~G-WaGdv3cFLW?DRJqPJB3p|Jp`u+fp)J*jlD{1l2>m3(Y!LV!5^Up zRWfzN?cRBiOUi@fo#p#_=Rxw$OFzZg+iV9IjqtF>b!SV|SO5=GiPGsihl6*?_fuws zd!$mko21x&B|6DX5B&&k!i5P6KXixPIcwNCYsfj-P6M1(?1LxmKHwF+hw1~AVYgf= z=~aqsmKVVjX;?m3Gfj&!aBv~zK$(lM|Mtf;=CTtKdqz6(Be$#g~{NwlY`h_ z5oGP+m&XR1m~<17b~)vfaFh1$4^kU?;m6RyK*03io1h9S7&5I0PFYDB*WJ>_V*p@| zcp%NeSr}RieUNt{;+T}lKDS>%#gicMm?w`?FxOXa1{)#(OSGH+l?ne*7A?{K-G`6B zx`Xy?ZIt4jrz8yBYq#Zc{5H&tGzF~%0GDgimSn(Dc?RUVyiMA(hbgHW^@!B#o#t>;{;Iz2Qh-n%s7r|x+_UT(%n{f0)Zs70un`~TND97g9ro= zh=>veG>o8e8^fk?Txdlxs9+G#h^Wu&oO@5DD)N20I`i`ni|SO}_vfC^x%bv`tBQa4 zhnpjMw@vLs;4yjzYOYb2#~k8DL!Nk){V|Ed8RyCD z^y6bCfkJF_-zg%YoyL~(mn7En7$Ez|w*x?{}Gc$Pk|oc6bR z@D1gc5>J%5V%S0XeOe&mFZ63VY?s`&iQvv#EowJ?tyrpZM%shU^X|j4niq-trNlhYgu5iT+&{1Mt=nKA0IGWGbrGy_UimV1T6T_dJNm3agU4v4!3e!{(7ljjC0znO^` ziY+1(TZs1}RvtSV#}--J`l+r29@F6KO8%X;^NkEVRL3Fg-)Yzq6}!_Z&25pVjI)sZ z?PftOLQo3{I*Q()AZVewpZ#lF=RPOG$pd(XC3cyi@2AO0i|?lyv&W?b{NjTvOLgKL z??f7op9&trxI;Tc0WET=dZAVRxuzQ2{Bzz;v611jNZmf4oa&itP(mMaRgiYSpxsZjcO>n8qV@WX3a&hKuCx$lcM~)HqE)UC{!|Ea z|B59YPCwL5^nf_m%~gv9l)}7jFQwrzU2T;sfxmcR zemCK8a}|Iqs~63@T-Ytz4Y!(C<;urjys$`a)r4C`@wZZ_?S@lR75Z|bD?z^%LS45@ zy5p|xmEg)c2}>)4l~gqaC$=R$thXN87?G4Mf#X>Fk*KFQd|chlp?YOF@f}+3hh(^? z%grbpYh*a;Qa*rX6{8JqeZtItR`~fW`8o18B72^tN=JXAf{OD@@DZ8~-9%#%2hcBu$&7rk$keFy>gk^k%orsAifix?5^`rP^Kj zu_$iWUa?dQp+#=nQth7piTKs{D|UGA$q3`!_O3cDDkbgaDrM~xG-3D0WVfgp*`4;8 z`129DBr%^zF{#^)PlRi_0gdh#r3?505!VA0*K>c1rz!vky5Xr?;cr!-LFZt%PhQ98 z3~I&I4`}O_wHr@-W7T2`Zy3Jrc6~awlGZA<*i)`urFncM{(z=Kn>66rDtE)@f;&p` zsa8j2t)j9hI7*gwr2`h#GIwIaUwL`k{XsTz;o%EU`#FF#BVdd|CE9xum}zmVd8J`N)7SNw9v_o%gL- z|BpidkEH*!9BJr}B=8@&ssa4i9nX;CIVqngFq)AG3wmY`I;x%71H09x9Byngd*ES+ zGcK=x&+H)%6K!1owjP|(!-7mq{9vy1EJ2<{^}r*>i++crCO#`Ts|P+S zsQ-?Y&5}}@E9ps=hiG#JALtwSohZItF3Gpqa`Srp(l_>*8qDp1kyPT1^xeL>J;Wi_ zla=5~;0E|suE%Amu`2gf$3&?kqC0PHZum*m=qb6R8oeruYqj^3j_Ftf1Ab#!Kr?F6mT9h0LewZh zH9BgpQG#l8_Gx(E5^Dens=_0uaTOC%QIU0((6#tiufDUCLmFDJ3rrhFpJRW>fuaFs)<;8?oqKfxpE*d16d(_8|N zq~k%AGj95x)Wz^fIv#pC3{5vQI-#FtVr*fg{!UA?%G}g5IIRKDWy7j@h7y0+ z#`t60PQy2V-ZW;Up(@nhtnSrxN1rm?5AbR_-UW2>9Qs$&#XY!&N#btTt5R;=B-N|w zk^Eq=1e(&@FUHfAn#uH=ztHc+>G^xopAX{Cu?hvH?nN#N!ULw)5AcmTXzZh(&nSA@D?7x@lwpKW4|6tO24LA~C)ZxNp+&f#zTRLEyyN zm_Kl0i*;wbJZYC*>JJ!z0t@JS0s5Zmb&mvzwMGLZ)@{|xACUE8OuYpc&7d$wGq7IY zNt{?4dQ5NvuQKk(G($il0jh-R{TyF@t2mt!Z876)4 zi3=RklU2qWEX8Lq@a3dedcvCTreA;0(PBOqZzUEXiaD$kYSI9GoY zuRPeC`yVbV)%5V7!Q;y4Q$}25^Y6_?U*yORmyHVpT!dv;ov8x7c=4iHZ)L)IT%&n7 z7vYm@U!JLg>JJo__=}1oa4Bw~#M`H+;#s`Q9?r(DJTb+UmF2`vo}PQFfIq+S7Iv34 zm9Bit@59CK_*!U62fVg0TpXwFnQZGMU+ib9V#kTvc}6XBPvhE}PF^p7i#Ke+`yqDT zvGV_e8DbP4I}zr5_!Gv>POmf2jPdwpt*0J{V#v9fslm6oJS>m0?7gcxF|C^(Ut^Fg9kp zI-Wwq;|}cQ_M_MII-&w(p&+qHu1}C5B-26 zOjAYj6aUd=B_*SRMMauEIA8Y%B85gx@{Jndi&$NbJ|zIIk^S(Rb9%P?ycoE!<<7y% zl>@jQ$mt1hpJnS}mAJ`(lhi!E;ku_(GkCF!Ig;G~V6X$f6EPU?ik$RE>>y}c$Ka*! zV+~uX#2x;@;!0I(m3l_ltJB+b&YeV3L*lhUe-fY3*;HlRbGrzSR+ab*RVseJ_(Jg> z>4vJLM<*zJEPlf=9MKJ}S(lnM-$t5myYl4>xEeK=gX1=g6TUH7=)Fzot(&TjtB7b} z@CuI`rm7`cpeRxd{}Os;CO=w2J)?qwB9y~28ZR@;8BcP?qntaXobgsU<2%VI>nvx2 z2;X#ja<0<6{!&kgA*1bbvz$tjQ;BjmOF5Ot$*X)3oJv$<=ecIAI?f#qM?9q=gVOeA zGYw}m>o{#0dEZOk-41bAs9xG3CN1OfYFP8aOvlh!>2!>1D;b9SwGy8}4P9%dW51|l zr-$?l&sG6*;c>^ll~{glrKqoX^P3W{ucTD0bqMd5O>x5rQP@_wl;5UUF1J`Z1>FDq zi`XPTPb}3l=pz`g#__C!zQ+TuoId!l1%AW?o^@O~2hmSX0at#<&zl_Y{|A3wIR#wN zj-Ow4h>w%hPXYHs!$tWct`SQq<#idWmMP$>@7Qy@WAP(c;8Rn;{pnR=kNT^{QtsK} z_~UHcq(IO7d=vQiEP7!iGez6L<%8D>Y8a!Wx=d zdj}dLURLU;apDwyoF^m9sgYBUYpc~W0$Lb9iFc3l(pTwFS;aPYuT!+8Xtn#zzY0X2 zM5*{t{KN9^v1(bXxlUofookp_jiI{ksW9Xh0NCop9(n)SDrDoU;qV7M&(1lAhsv!q(b!3! z%}RE=69cE|g9e8@dRP;0ni8W7(?hqL6aU3NZ)mWimbk84*7fPraD-?8b{NRo;bp_26RpJTx@c#-q zF|@5(9ajh|<=dvB$$Q04sz+$@HouV0l3|=#I=&`L2WTMai&3T_y@8~+;BP{D14-|F zZin;+lJ1O;5C$}ma{P)$aUndf;KU<459I{3iDR@#nI15-N$}GLX zcr)&1iMttbU!JQ%_C$c2_x(EqexJ)Pzq}cbPUvJ*Nga;elEG{&HM2`4yA;{~%EddO z0Ht``@UX!y73@TH>g?+$kj2b|fSEnZA>p$ec=u{M0x6+pIV>*oY8PxqJ{isAT#JI) ztY9`NNFTzT{%kt=v)Ac&@|uw3HnXBZbFJqva}F{8GDP@2$AN~IqXNA9;Fu$yp0aft z`~(unb0&v$vjTiaFSV^YQm_sc=m2$exVYa?z_09WO3`=CTc&GdJ7eoD_$?fOEslXM z75;D@2Yrjxc3w@R=LG#613wYqb29$77jWP|{~wG;31mH!W94QAZLFY;6#U}?VSO7} zA2$@Vkpd-E>v3`ewRMIzTi`!4{AUMFNO%izWc$xn+j%uL+Xb8~XDm!K*L@lu=HunB zX->qaUC3R{v=k2NJMvue$ZiG|Ofmy!GH@mVFS}5*^O;WU+;zlLJD*91>UM6_ncKO* zlhsVEuQ1c+F?}A<*C1U7m`CSnpBeOdlK!`p#&e`&s`-5ewar3b%k;I*Q!`cg-9;Si zwRGlT9JKLj>RuzB+-7jjWOMcLoz>*_GbG?|hJa_f>^2d}Z$?F@n2{T}&Kn3h`y%1@ z2J-tA6hMA&kP%P*xO`{7Q2;s4+~!I%AI~7E%1y*~{z(ONyonsY5csuAIC+QD~mqTgr8$hy-k=Rw6GGVwtLXFuLHbIc3*fI zcR+6wKILl##K$(~_Zi%rnP&bz=I>K3a;k6#5~+#rvl`B;T`(N^!g5K@mrK#$@KxzF z+I?;6blq}73ezPkDwl$JkZXOAn0qc0rXM8JU6*sz4^q@qJ)|>&PPQ|+-Xh>I z3ph*y##}Bs`om=VJ%)h8T@pYam(_gK%o*Ee!5?S*apk2n6}BOeTt9AgomW$H-Qbh! zOwOq>=Up^S4lU6%RB+r-5TysGQ@u*lfh5=Z@(!p4!dY&I`HRW?7f}QC^NT6=sWy3&2C|>gF^hy{EMXZ*IEE5*fMsO=kiT&LE$feJS`RVYO&wfuT(0`O{z31AUHIly?BWzNI(EMq;%c+!xu zzH2#P1sAUzn7(&3#|24w=%WA~e@zl~LFBNe0b zMEAdqGGT_HVjHPY@QVyH|$4Gp$T#97a%`$eU#rmtT1;LaIyRFH%z#mwmAj6P22ZxO8n94B|r8OB+5oX~bh{thn-eiy2(SWd%A7jn+blTQ7gZvn`O-B)f5dzHd)NngoTbTBB8_k`-xs_(C??$5ZFA> zvsP7@%$#W49O*dMHcq^EhY6G8-S8mqq^mg6@osnn)aF5+l}nHkGq-;UQ02?i5qmquD%;yv2(_6 zwlk6nzl9WXn-$bPWLC17m24&@kD(GBU^BVB+fcGuDk%_3UX)7gdlKpg-JfJe+ijfT6h- zcss+}3BJ&Px2K)~Orr!~O!GW*U5_*FIN^3)BNE^^B|y&+9Q5Oy0QTFwgp=XSY+PVw z$GXeWG}ayCJbZ-c;$z+M9KOn6$GYSAV)ufb=x_**`R4Z-POl#jb2N^ws~;gDb{2)Q)3qTdZw=@`U0fu0PD%>?FM~)3UvO6nf%Hj zwP%JlTj1LmzODPnqnXg_TJF-fS*_+(J68XKPF^!NXQ4UOUSs}i#J|emzb3sdx6!J8 z38Yrdr25Cq#J8CE77?dhE6je2%wC6l>ek<)a4YfpsiI&1Pj?*ImH1P3?#2B=5ZTW< z;0d#yW31;G={bmcbbw=I{~!L!$#+cZX{i=^evo?JwR1DBlOAk;exIQu&!Xqi9;k%vVi%Us%P;J80VhyEX~5uSi-0;7P)7o;93?vZx*pi!R~Q27 zx+DN!{y?1oGqaYMQ*b@A*Z26_02Q7^8d<)+hsAPUP0exvC%+k6V8J&qzJc&x8Tbb2 zcWQlrAJ?(j;%znfkPRK%Z|;FTfHQtoNC?k&&a^h%_4@W5<)}R0y5{{AusWyHVKqIM>p35f zb%B4SKOpbWNn)E^iX)$zblKV0q#rs(h1-xtEx(4|`C&}G;MG*z7HD#sp?P)YRJ)Ji z_YwRd1AZU9MaIsnHwGF`OB%I$#)MXyaWTfl2=~VI!sS>xcJa=9j&e-Cyrot)w0Jr; zdnLXwm4+tNkmW2QYmHeYDrI-z=jQS`B8=c>0 zh{(5yX=X9a>FvK#;c3KE7BpM4fLBw^0)$f@Fg9wz?_&He!nYduT`~_+Y4KdyiIfQp zsL;Vri%u;IetcR>;8F|l| z<;=;D-R+zV4F5iqqXW#zz*hg8v7C5wGQ?RuxB7=NL>H7&s~2*x>G^$zjHpGELNXS>mij3Hpfuq1rD1b6zBUzAI+wTxSDZt#U=gcY4$oxj)UwWhH_!}t&?zoXt zpfLqLy}ZYKs?WrH3%Qxe%^CaKGGR5c$n9pU+q`PWZ7Z6bW@xPizKh|z2>z)7-zA;4 z)ABpfsNFNBt-&1S7RI#@?pHSnms`l?F*k9PTV#~;M6-WSwzExkhI*?Qa-22PZZvDT ztEX)AclE@$KY&_vfV+BPqu*v|xvQsW^zCw}pVm_}`tR%v^=2{H=I|1}6p@fialp5P z#VqNW`AsG`Zsq}CNl(kE9g#OA&X@zmT`QSj~Er|XO->zN8KnduvuzLDskAYBL8NY)Ryh0|~& z(Q){(acW6;Jj|dIdgkR>xVxCUtLN>%RpBNiQB&V#b(vRfyDYe5FcV`Iato7NhcTg=h@fLR|9>*ZU7w;zzV$B<0keqcmbwDJ#S!?HEFo1#rVvx0(c zW+lg2$#GJ0(ceU;ew=(R{TusyTq@yl{YR<9*0^pc!6xSS847AGN)~3y&Sqie-%nLx z1+vNcg_)N2&8sOnk7V+mnavhYU!eR)wabFO#U*m&4QlA z=vjpRz(CJZMGtLzbY>Qr%aG82%*iyHVY3O=_cmefY!y4`Yj5ND&Q?VSJwlAmF%=Jc z?OkQ3{#q&_qgg<1vsuVe7P6Ft+>JtXfTb#S*P9I?OG!w_74~JM#O4+D4k?)PexD&B zWRbForEF4f`@IU^Bb>b7Wc8j`Q}Z6t6h`BK@`9x(ygLZ>ALNGKY8{)AkW<OD$q>ut{W&$N6q+|nA+uRQ z{ySzR(|gGdb$Tz1`QQT4kx%c1?OQ8gv#0mMj;5o1&*+6cO)BkMXu;I;`wR^+i~fiVks3xl^1`0R1q zdvEDw-&+$&G;N8<`L8*$+ZeTtP~LIE)@@|#0t8dj-XK$Y91t z-#5#6pJlvHGTuQMI>7s6a4#=s*ZWdNzBqvRK+3q@#u)+2z-EQ-pON@RxfF-whgim; zUbFt7!bk*@m%` z_3z2`gNP>Azn9^*^Fj)9e1*}Hm@k(i!ap(jCnBHa6CL6RjzExkRjrszMiDFc|AYoXUOy`JdJ2EATpfc<7p89+FZ1CrA$m!el& z&%E`->){tUu%2?@3cm^>2i8;MQ)%S}oor`l^L}%vH#2;5Zw&QhgyTa?Wc$+wd^5pQ zY2^83<4XMDVru1#%=*HNZf10I@0snHZ~$TCae4~jc@wJkFX?v%$u5& zAtBr$fzj}lIp!a*gbzr<9F&0X#0~>|z#_8g;}Gxxsd!_&t&c8PWr%ENa^iqlL4p+| zNI~WVk?je}_A4i-GTRd};TmK=^Ret_*4yr9jG$2VvxtH=vzQ-Q%#S3d8pY@UKT`HT zYl!(#is4)SKS?pRZuwJa#M_^#F|dMKi;_iIa@bjvbaiFmujeoJ5#q9HICj+h0kW&x{7K<`q~5LRd5 z&_BGC8^Y==9QyHHb9Q?JhEv`%v-VpvyOG(A#J&sJIzVF<4))I*>_*8>*tv5?d482f zU$3D=XJo>H{*cihX5rUmjv|Z_{X=V_^Q!GcH_(*n49)t^T?aA2q6C@i`&op{ z_5Gw`XTW~08!|+)Gr9SgS-}BTaDWu_4T@wxK*@e>kdys@OgQ{}4Zc|MU=|+eD)Gl` zC%>VFvY$mHel&}@w~y>=@9l#rcsGjC0q*UC*}vHkb8jEf^7x!~Rv#h8{yFV6^4&X( z&-uwLVt3|>Rv+z_{dHGNX-?*)mD zZ5h%0v$>Az7`2X2MIqt)x<1&+J%(U9zgb72HqLLJp-9`i`9R$c=@5=fe9Uo{{H!#7 z)}V=HG?9$|q6{6Ni5%~92d7^X$>_NA@EYl`dFO$J;Nd=A!H@!)+{eL znQ$GV$@9;wp7Uxdo+FrCXCyeyG1$-O{e+%wp!avdb!3@(J|@*$hzFQ>fQTCn;(x_Dm1)Pvy5GvQTWP!3lUhUzkP@QlW+@M5%RcYHY)rh5P>K%l zU^e!7{lYBe!EDjzwaLk?bFxLB_qFXKfNQkK)uo|G1swvghDM8)de%~(J>Xa-+<H?V)%P>d2fq4zYdnqiEpdlN( zz;BUGU0?%6K84f!jzE*`42|_P!?!Se3&GEeh^snV$aa5(ZQnxhR8H@Qdc|iy7}spU zzRlRTvlo7q2}=<~4!>=6m{)B(Ojt6Pfskpg?@k8qB=83YcxS5S3KIFsh&R@bz8t_1ZEH?Yk6O-aHy?-?q5k7Tm^N2}$$YTI%qlk3cEw6O2& zD?7J4`yxBHoDXR3?3-efHeh5tQ=qpw;xm{wgJ?zN!uT0|u|YqEY--Rm`eIjV7=L$P z>`7BFo~4lYtRO4PtmF|^@(3yUFDlUi9_fpndY_4$f{$30%#%t|@ZK9N*Yu&`ih!3g zfK}vM)U0GREBh`xQ-$l0PZ_YXucce()f6(o%%?nHa@3+=4J%kf3Z@$h)})>X79?c@ zvkLl{Jy^%gb;R5_QDnn9%7$-H0cFEFs|U|W5A3{shz=~rSOif{u#Vhpvz|uQ(@1&- zPZB+TBjtoPiF2Y+>XC1u+9LJbZofaE08u)yfRIJV+brbmzQqGoSd3^&hqtZiz^kdI z!yu6f46U`mcQSk@!CMUY&Ms!cAbFt2m}p;f(BEa;yM*gqA(G%-N`m1P9Q1c((B(vo z78&$ZlVFhWpC#mJNh#9*eNsxQ{^NN7&asjbVsa@? zb`GNQI*arwlmU*U};IYN{E4aOw>h+i1am$N29EfA(Y^6~60Y4iJyJ0tU5N zfIl$s2LgI0i!AtovS0z?sVn$FhTitX4B7S(PYs``IsMGWM^Bc6VDw~+_B%+|0iq}4 zV9;v{=V0_?F)Z1pkM_tzJ;oJSu(KFD>*QMwWWq=Uk;$`8wwTPTwoMjX@|TG*3wbt^ zXA?PUkY}I#@sxC%ub-jLRiemRX0*A?!JWgbImFs9MOZuMWE}GkBAKk6BZDg&_(LbB zIOYo>!eq(M>2KDtf_1DQ9cNXF-hBm`?5SjvS6FqdlsfE;_>oCtwGuwmV|al@#3mN8 z>EvyLR9J*qvV4=(a$dD#c?VWFE`c$*6dg(2jW@UsT@wJvb6|M2?^UhV*M zVr^&c_LFZrONB#7B2TwlJ>}I@JVh|M%E$r>dN-qY6MA4Z_tU$(;3~1mSBAtau=g1D z9>H#}7QVhmzRpE7HRSiY7+-RhiH#QWM@;^R$UBg%1AIizW=!Rb`Y0vxuwZGaU!0aP z4Nfupx{s;*PX6I66|P1O`MS^QE3ew~m9gY119L6lFBtpc*pPCqmHXF@j{=%2gbDzV5{hU8jc z)B4FHnrZ#8o;~gqzE10hgYFe~a(t)tvwuVrkqL!pa+Zk&7IF=fYlu7<$vQwyKRlLt z+921YL>?0?DH+EHQ_QQiaAVAk^&4`w3I~ux&c^y#4yJh3p0gcba+Z~+Nc z{dCbQuOo;5KAjz2mjc@x3>5nHQqzGkBl9fijf~#dFMN&)45Z@jAd)WWHl2C*oHr;E|^3 zg9e8@dRV(oixdZa!*x%oW{`9I=JY$%&w<24{jN_};m*gsjr z9|lcHhgB%65FCg4Eqy-|lz7{C5u-ySQi(?=sHKJQO~0o8XMeZygVA{#*NL)@|;0;m7xtcw#)b5`CP;z7M+DLrWjwgmKZt$O&Jas3 ze~}A6=B>n=$Ac>?yJO#_uF)qUw`n}M+vGmG&b02k+I4CsZqqm(TzRH_pLOBaWR-Zs zcyJ#dDE2urNGzGV*@fR2RpRyI!OeebKg+t!HWz-CQi<1%2Uo~c{#!2mc%c%n9S`nZ ze-!(?dA3+``MX{Cp*bZ!Z#=kaP5XZ6!Y`pI@z{89KXi`RXW?M6A_STgGwH@=r#i8uMd1${g6WTPA3POZcn{ot;>MC|kArDDnZ zzU;==87uJyKe%#D`@Z4ESKBJ_dOx_Mmx+C1my0FuyVH#?L{;K-esC3-_I=;o{wvJA zT0gk|_GhtA@fBjp`|fq)+x?XIJU_VkZv+2g-R4X8+TUO~F+aGQ^2Fbohl(YabIiTJ z4ZW!GgDYmza94kPcb5{6`oZ0DrP!x+m{{_@_x8X2w^)9AF}V3}PhDl*=E45>jvyu8 zRt)ag2=TXtBgK--S@dX!3yrmf2 zZ(c3-sT(eqT>iTL_#y-)-dqf>Hq*W@^zU~Xa+`|5z5W`p4{PLo|J@&-I#%M1#o%uH ztJr4OD6!;iw)fw3I+oK=46dA$JM!nf{`fGb60gU4T_^Ub8!eW+@5lY|p+F^GR}8Lv z)4u!r-**IksVxTgrt8H%4f$fp`yT3#kNGI^dBxz0n)dy^KRyqk#AC(aZn#10^X3?_ zaJqr?+M;L7UP5znUw;EW6< z-ckhayuXWma{eKfyzlb^@HV;(5HO zt_a-xw;He5mbYmefY&pXcx@55LZ-U355VhTN_<`sxNr1{efn!+$@@l6!Rro6JXQp5 z{@Vwgwy8M<&(xK8O%b^HZwm{p<-|_GGd?9AEduxPe~G`f+%A^Pdi)eTWl-Ynh2ZAD z%`32Ov-}i1pj6^*g^=_9D|neBi_@L`uAUimMh=ps*Z1qD_=|OC`8s zE+^n`A3Gn&>4~XZ>1xEE%Hb2a)x1jgjS&I5Tmn@*q}|H}R|0^m4RBx=%d`rUKG2-$qk?hPlE2A$L4wDD9TzJkzAzwi16$*a6f=9Hy?lB((*DJGj zXTr#PRB+{EL`nzbtBmolDcv*4usSf1=ysUhbp@K7>o;?v)@S9B5EySnpjK|ixH=iO$s(!dv9JBCkk}>GRVL&rrCnq zFD%?o-fS`|yFUe5vF6bu<1|mC6OchrVGee?0JbZabXVc90c=kV=+pF0G^XTQXb-1R zhCZBj%?Fuq*1hcI!~A8-q>XLhS@>*RCl)gbEUZ<6wJI&PFB3fXGHaD>RzRCLf@67A zneK`BgMs0Cuym~E4F-H+1J`K5u1j-dhXK~5T|6xv<{8*^X}f;Le!M^}hiB3r{ci?1 zy(7C!_XAvyo!i?6>-sT-!b}|kj_YODTcM6C^OyKE z9rE$-N_^fFYB@KHzt>Dri-X|^c(E)c-Y{7Wd2~-{818pme?E4m^^?_5P>+C5Y!I8Q zmch;1dHAQA$*NB)^purE@^On>vFb{^wn7a~80#(8N;S9@`xGU9Y?Aw{DWV3^O0gsj z6NH9#fjIv>m@sr!I!den_g1;#=2CB$!fW$q)dZ{9YSWT0^B8X%jUaGdn}TBwD2B_zZhABSQZ(ZWfpq{iM;|x741G1Q0x^bcA+8m3L&<^Cb?sX5m?5> z=9;l12|E&pmllZ~iP+xvbBsm`Y-3eNjIQMvm3qPx;8qc$xm7kY%rqEDRZ>mfBW6`Q z93*Rp1Bar&-Y>$j!-2x?GKB4*&chkcOUfk_H7J9Vm~ZC2+Nox*B2 ziXz4EE!9+sf1CWN8Im+A7$`zTtR%6}tZ15(!a2=}hMhWF1ynSR&M0o3%|V(*hw{|4 z#=&$aMvz*fRCKo!FFGsnX!3L?MdBojb=0ph>v>Y>d6M)zf_lV=hQF*#hn@Bat?{Ox3LCnR(F zDzTYb4qKdJXs(?C?oms`&uwz4mcuJf&po*J^eNyjmXbi0qL#xOPI>S!1>CL6#NO+d zi=|o)&CbP-;NH7$OrGOLt6cTCLAj>{_RAB}d6fX} zBTGf8jZ(T=4#%8Vy`O;%uoB!C%OGFS5s#mp;&eAr3GNY3ioHLOrKsgFLlHhVRf0Pq zgZ%5K#Aa$a#1u>#CEid8t^_H9hvZLnmB|M%%2qlDHnOy~UKH-2VSSN8t!ELPzx9r( zkR8D@W`IQs%KmGNThJnT3fELEvh^_q!{&^K+-I*91?I?t)d^Y!)GF8|DEN+ejA1Qn zt_Dyd6(Q}?!P*^zi~Nz|vT=jG!P0Ye&$w~^Na-EtdP?sIRQCW#u`q5$NP2D8ILO)t@sqG&7Uz6 z?>;qf_0OLGi?_ADVJxl;dZ??lmajGTmUwi`EymTpZ~`pebt-sB1{+r%`QNbgCT9ax zyYU1_yn*x|M&e4hhyTZ#;`bO0R$|i$n0Vvq@`q(LaV6YkCOrmlLojTBqMJ_u#5+_g z8Hg(%TY)Kb76cS;=rULZFP?yjcc=Q#m6gPm>*sbgu*AGZix{ASmrel0TTXW~5LY(; zZ@{762?i)}A|T$6I>JC)`Qsy&8m1am@!+JvDrh`GCGq~&xJP7Eab^Dh#>59V3=(WP z0TJ(JH8T-cdd%x;Ew3yIdMEe;MFuEwBA|M%3RldNRm7DtD=>u~cbJ&}MwcKBSi!$f zP|G#PGvO(Q;>untGzBlO(h4sXSMO!3$+;#T9L#C5hCMHjq`3fqgUxZO)3vbTeWCx8*eLbDck6q|q8391|>yh^-rJY&}d`FH}9BbdQeo93IrYvi&tC-ECxmW_#p& zBE?kw2b20ZlwvhTD=Z63%ABP8j1ESI2g{@>4<+4vj1~@->0WJA&^tjg9!|PbzD~Dm z{dhHExW`{2cbuDaN4ic!!y`rDXwn_VRs>#Em^x99gK`D4V7r6 zT7XA~g-LfB8Hi|lz+;NRqNMxWsCxooKfW6nFI*>W&H0)h_J`?R!nl3X22)t#DdHZW zA|%>#G@8n8R|mX7A08p0JJD!Tg-8_rvgiw*3>d~xZw&E_sg1WAi&^gOUk=)UwV>s?N2K(L{gF;+VUvZDCCx!fCeumh|R@kr8 z!eLL5#?oxX8;AIC#8Vm~j=g{z>0m3)H-$A_O0pH?p`no6+-7XUnqIE?hEN64dL}u* z;{%Pc+8vOgjCglE;PE5QX>cUlRnv7&HEiPnf5h)8@lV!#kfGGy;G=@@R&3IO#90z# zD52S2+UqYzdnMmX({2%KxZ5yY^JxJLa~Lv|{1o@TnP&fFD1S?FKQZb-hEkB?jx@ePhEkm3ew_x* z3?-Ce0i8#~3}sS^CD6@TYS$S`G?jfdUB79}NI54eLupPW9mT%46#FAuIOOqS=n|>y zAEudDI6({3BXO;0f+q)hCQoRenB0XE(K3{RG_fa6Kytuyy&aGS_+Prit5<{~!E+-e zVQ_8ANQdUo>C|BJ2RLCcTocUkmio^121`T!5-q1FIArj7=M5fmSfSpe34ns>cJwgXn*i!^` zWAl))8)ACXZ0+6yN-|*~o|sqTM6cf0%)l4x{LNBh4;IMRSGbT^HEY1ayi}NX^7u^H zX%r@>`qfWW!(vvSGoGggCx8#{Y%1~9Q%^u4-A3VU7RUsGOh8D_MSQhr!if}@Yr4O% zVuUB)3m1DPXk-0F0Z*h%*Ng%aGg!TX6T2PRVZRti!G(uoLl@zEm9lYo9~fMBw)TWc z_)D=TTs*ui;016kzqBW;$KS&KqJZWDaN$kxFXbh4uUZ8RaQDHfj?GmVp#dU7-&cYwG{9+W^Sd5@z-=06o8O6T+AG0*<5W>rT~sW& z%t1e#f!o*9_JhRs-&MNbl$-bG%{5(zbA-ayDgalli8(}+QCFp6O|K6{!f@f;gRt0I zDt3q{_S;H#-kpMepIlP07l~q9s&EdssTE*hnok}h8Fs{KL=g_M z{9`!h9M6OCL53U9`NjBC1dqMFx<3>FxS{3Jp75a&_#4m`1z&et41dQzDe;=A?%cZt z=j@qcsg8rOm%fTqAm-tmI+ISk_dYb>LlHDLmorKBu`D=xzbHruA4kGP$_*_k!UNml zQh;$kjn9MukE_s!v&}IMvrUPAS=|S73moIHnkcsqdg2(DGau)Qv{zeNN{LqF@mApY zU{Xe3!vKmvb-(apCb5=+m|4>_oNrJz4q%!C^EuxlW15`LbnjHDW12$(aU8II3!Vw-G)Q4$$#9!$5dLo*kAZMOg$!doqyBtq{f&qZlG(YUV$I)0#kKhmc z0-5kK%A+1>wWC)Ev#p_04e9=JSmT&X>$Q}SLraRn@QmD~xf0vX8k#tv#6OtgYL}n*!i&dPr0z z|6#Gj#s)hbqG`5Qf-8zUW2kpiq!oP5!_|yG7Wzvfny&fA`i1cSO5ycYuB=}<0bAJ6 zk|KEDfr+BT6H_`j8hUY8=N#nd)-Mo(L=LvfCuZ-aSh`;q!v3kP17lW&`Lsz zYq`5>l?tL$#it8erTw*2)o@t|r)g_G+H*hcsKo21x-XwE@E1rKYDkwic(6`KWQlim zYF}jmqd-&Uh*5wm)V4&FEGl-V(~&JwVYf7KSv~k$paTgB`nClIK=&nzhGgb7OS9oy+VL9UaV>Y zPv5UFb&!@CY2|)z#3(ho%v_-nqCz9ELemzjfE5~n6?$PYzLWj`Dl(u=#KbTPORO*# znlB2?$3hQbq4@j(y&tHHTE|*hyie86}aHnPLP}2DmJO9R&koN=Hn+6 zHdR>@0*^Zf=Nh$Yeu`^{M|KIP!@YH-_~j}27u5@Uop>1^zn);R+v^V%YxZYMJfUEGik?s*+g}cHbs4RO$7miO{)CnK%!uF%5iE_k4 z$#((?=U;X8Sc4r}Yu2!wH7q9$zg{9Wh}BzZRccsH8Wt>J7ne&7__YqaKMr-u`IqC< ze67~eQ3xD*^;iR)^R!vQT9&YuBy1;UImp$lCsC1Wi6xYJykkcU z9b$m%Edm-?Km!T5+bF(4!2=Y0Vy+mTS28Z^`HRLT3O?_`i;N<3*O}|Km5bg=MQ<~T z-YSc>9@q~&3;SsQq|w2ER~vfu(5nUwrhn3X4=%aDLik8L&-IZqE}RKzOF1$hDR`-m z9y#(FXK5!Y|N3%GFUB0>VjC^R?-9lCq2ezyir*uPFScac3FK>&LM48$KSI?Qr3H-Q zvz{@>DIqWk!srGjVHY!2^OP7xW<6^z`V&#~Csg!`r7C3OJv;b>3`yX60He*noVpAL zVtgz|Je@1H`xpM|@rk<%o|3CP5fAV1*fNf}*i@k@-${awvj$mabc0#$=R)r1B=;l4 zlHAWpZolO!uw3!WjrfabVM4F?c@F;ES+Drh&gHCEtSj-RYS9mWF6ZMmSljQwvnB;~ z@=s)>kufYhVX43oQGp}MSK&tZ<0vt%H5f-FBh)D? ztqhSXvb?qz%;kP3%KeVYy|a#Ue)9G8DTh_j(B z$!D!RWgb_$;6-!gr-|n$r=_8B&tWAf^QNWY;B)}jW#z>$XRpLl1RCN*=82yt;Ln{i zPyA`sO0KKe-(EX*Wp7>^4B^;=<-fN*II?HvI<>g6}p~s zn&S9xDQ{lqj?5b=zD4(hLO2PF##9#7W)Zg|&5`W|*paq0k_nn2Vh5#^ z^B04jxm21dNJVpz`Az0}?-WJvq@ouZMenpx^cXFyMU3L=EyeB<#qOeFcRuyY<9AcV zZ_)h`4gNpYzC1pv^6LN0OhOWJu}JMq_oj6zSR0cdR;zDI2%wb3NI z>SH4u6ev{_@K^C4N#1)X$G}RD~zc;s|q8^9{dZ<=>V~Hfqa88yRb9(qB?V`*)x%8>1g3 zYgLi8Wix2UB17WVQHV?0`bF*m904wXE3>h#xl$sW3E8T>wPi`-X{qvFwMw^!rCUSN z)!U_8L(<)+rCUR|&iGl0(5%+|Hj*;Al}$+GtBEY2v85R?gFZ8=#TfsZRh-9JoX1I= zevSNic4RRYb8^&C6*Jde5k|A@dELr-8?)Xwcx)+TlE1X=(E872{p_Pv%3z`gQWY6AuNW*c8`%WH?TwT)0|zK0GoU<1?;! zccZ%tDQd?RoQ(3pqr*A;+1BK#eS>-Kd6S>SyIXkU%1IyQ^m*YK;oO6ZdPCGh+N3_! zteX}p*Gdn(&5XH~+KtKs>>iFa@b~u{FsjNs&#b}}T-dt+Q+!k-XL^JFP&K|ljqb)5 zQ9cp~yD8~IZK~ZO?s}fteI-BpFbrEhEf6%}3(Db&Z?X^8WeY+H9)u~^lIHEQO8jN6 zgGU=*=Az8W(XJZ33sROfc@;zPD1FDu>ziB$_0hO={7o(fi+}TX14fmHVj#cE|E|ja zn_Mpcq{X*DR6LCqlz1I3vD&EMM!su>{Vtc5CUHduzRUgg{9L#NVRfsi*OoM+C=%il z+^bri?{cwybjGK9!lKiFJdG%{7|0brgO}_XiG{(l%m`PUKqyE?(g#FD*u3|wLSJDx zaIxSD}DSg2{k!A-MM!aDSG50+y)Kv_16+x9gprEcYumq9^ z?%G(q`l)tED2{FaR-E$zV2oo_0ALIn=Mv3#3~G?PL8Js5i1s0GB&(404?Yxtx|QlkKZSFEeAf+M$6IK-(u)`ByT~N=MQ1TzEx* zRua(2^-7zS`vW>V5{Q`^Ng)&rSdp%0r0X3;%X8t3^{mqMgmke+x_$_xuoZ=6?S7*H|ovN7*w=H0}6>_f`>-L&FQcjehaktxj0>ToFHjnrwjeKz(RnEeJ~ zf4*kFLD(-$lD)!PHNPZ;?iw}O?9=$*fa2Qqnbk5+IUJ)Zd;m{5&bTTURzHL*ppgjv z#& zWZ3j+xw`i-dk0n27e&4oNxmZ*g2o1H91o`@5Rm^-%kTYK4&ilC&i~zjhz(I{OUYgw1 zBp{<^Y*xfOe}2GM#v=v=HU29r=+!U?E zEdAOl?k6JdCnW9<9yP#ouITeaAv6LoKrlE;8Pai6);|=^$h}s)7AL!IixXXU+M}vO zTI3#`mPPIsRLut$JD2@&I2DPzi&I*i7@@{%r`&y#bRr37X74L75 z8JF{#^RY}Htv|duQUs1|vK6Pd!3fLl_?^VU74K>^!g{@PyCk+Z8Y#Z`7AfnBw;&Hc z9$i7>zbUDk@B&FnJq^q84Kk}M{&>BCcaiN7c^<2Ghp|X}@D6z1VZ$z8HMk7dzw;w3tMt2|b3c{Bn7H;@)kIZwTC%3rR(c7C0 z+Oa@!`o*%0*4kiH2ZHM8z!FLAs|R-}=T?^_wc@M}lLF8oRD<>4?#3iM{9J|M-G^Q1 z>aKWSqYg~-(v?|~; zCx;@%;V@p-raY+Sdsa`{>T-+<1Oc{^1Z&Wf=ohxv@1PS^;1&P}zs9Nf;W2NZDv{8> z$UT7i#X>P}6>Ot?xH4%MWwfQeG=uEfN{-Szt30@^0K1eoUD$yA^l^)4zeysNVUqGx zNxKr$D9i?Lx-fM1(&NhgIg=~iUdQhLrYvQ*)*1e2489_sF1$I^=GCxEUJTY5LAXoS zH8w4D=lv2l4khnhct`Z^Tj-vP1c7MDgc5jl!xSwU*iO6fHd6NS#T21;#k=a$RcNK;7_7(r&q&~d_6)8Ao5;=JS|Qm~XQ>j`3E%#O)>ifgN$p;kXfLnSG?rOW0wPi8m{Hvyi^ zfRz~N!W(Z3!0}`T&xq0lPlIFfgXY2%5Y2YvuehYR!QIGfQ5!RG#DCZmxWF9>1_3r^ z#Oj8_BuuD|mg8>(T>J#CtwbW=*r?=5YUp`18Zo_omO#UWZLlve>&+ar`8Ln}uLgEqK(64}U8J=!Jh1i*?j_ z`XytJeh+IhS)Oi^XHDi?blKxxtf2*1Ly^O0!l4CkFQ(?34)^E@dc=%H>TrtAexY3< z?^G6pD^Yxy1B0gVVOWW-+m}nkhoKZNX_tr(!!pOAsU6)Ln`U~WF+|3ddwgolmOogr zZyrXUg}QlI@ycAt-oWeEHxEP4`r`)Wc{dMZXK9!9>zfG{*D%NmYv?Dgiw0qhkanbm zv}m4*br4S>%nrr^Ra%t1@m7)6u{qX}Ihs+V2*A2w*nj;Ue+BUu3bb1bxQ-;igApXq zqw=$Tkr6aae-s`hdfW|@WGI#@Y6ksu=18W$N}iq)t6Upct_>vD=qIt};_P?BFg(t4 z-jm8$8w7ly*`N^eq(}r_lr+5CG>w~Re2q9T(Td#5$i0MowMOnG6?Fxp;L zVlOF?@e~G!@XFo2!?4jfv1;NBAC_g|fC0A?xZ8B%Wm&wtX#FB^ck9#@S=_~UF0%CLmkY*VGkB(n zCbjZpgjHGGLnoiOQQG^d{$@kHK!#eeQTfda z0^ixd1KJlvwvI+4R1=#}Gap{19C(eZq?E=Y@JiOBFW{-Eu0|sW?+A~s29GhFg$m1) zti4ruwlslz0KEqrfd5G1K%-F&?+J(Q2JSvT&cd*hE54?|vuOr%+#^pTQG1|YvaN3b zPurPHXUvo*f-K4AV()7NaOWL`W9>);E|t_CyoEMRjZd+;?8;FVZ=1ys+zq{!+vM*Yd3$CZJ$Sud= zR%LHll?#7-S{3xFY;F^J41R4RhbeX4{VxHcCz#){AQa}+;p?(gA3zK66~i-j5lxQEK_eXZL)qzryBV6zA_ zC{HT8b@DnTJj&g+O%@H`{THhkkFgk!kr;W;B>C23S*Uh-62Y@VFxX_D;i)QB6Rh?| zq7~jMZE#tZ)jE!x&uqB@zsS12NV;Byx{}cFB1!!`CRi)hi==$cvr73Fx&Fnw8@UC2 zQN-)QhHZ}gCp65x(si8Hs#D%OoT)YaXXgMK~fS%V^fH|Ah1ZPeg5=18rU=KIDR zZt(gW$y6`N&q0*s8KLcOFoN)s{OE0PmtwnE3mrLLy8L`|19(cyS(0{n60*T!lC2uQF$vL9;v*3($=; zn$f@oiXqnPom`qbsWcza<+oEzA^VG8lb^lKMuk~b6`E;Y0DU=+cVL9Ir!vekePZ6vo6>5VM!tk43$=))5hbd{l7$8El{RI%ZjzaohN7{Qil!KL)F{Sig9~}% z$A!buqd(O)xNtc8YzMd0%jBo%yKK19*Har~Zm-Le?6GqA88@SO);EJ^ZD9a&yRPOf~EH&S_9G_th~oZX{N-?5l^P>|-_=Fsf4LfYk&scav%oR*MS# zjWpslWvAn9!*NN8n#G{GP}ZgHl5Ht%O`hHbj5tk@sj}QJyf!tFy6XrEcf{jQ?n&+! z7M)ENzE4OZe!wnWMMzTH>K01#@%1cEQkA%GxT;|3yn-gpD(Bp0#R1EIGuv=8+3*^) z;XHuNB|C}t@r$2|kVNo?5DYefXS5L1%998_5rY0ENNZQr-)c-{f^I=cGUm(sG-e5X4o_t* zSj+;mM-H+z2g#Zvo>RUzDDrJ;Ht6~eoJU_S`-ldcjavA6IJff~n?0KsF~eJ1_(=-3 z32}cjxcgL-y-E^$hp0q86m&)?7MNeB#T>tsxw5#OxzwF?=3)h!sKxCR#zTzDEPSm- zRjfNSgr(ssf;)2e<)ON@(%JJav`V^>CEZApHfTvVlB75>PUrTTDc#jp8`C^HY`nKJ z@2$jp?QbX2j16MTLmk9L>8+qU2meW6voIata|h^Rxe>4{k+2JC9HFw z$17RQ7&v+f%Y`d(K5x)xRzY9xDevLruD8(=yo}XCALVq#yBa+cFJ`3LR(=}(P|$== za?2=VPoohC#>_~hCLEh-Mqwa#?;6~@(Afx{k;^zosXWQ&E}?B!IEDgG-(^hDvx1+- zFo9y$khty5Ztd1Z>5FNwIejS%G#|J`g<6sxn?$>F9mX-} zKD%?*-%aBqt4tWvOydAJVL4sc+$B%L7sHz^;WP5WG+R2jllJM$aLZ!em?@zUB~$4t ztF@jssHJ(@z?P;R{k$0$Z=N>Jx)^;Z+lV3yc!qxCVg9t{NQ+3NRH*SfuCe02ZaCCV z*4Jr=Vh`21kR0%R-N2!{@dEC5HG}vuDR|w$(fiaFRNKuYiQ|f|t7_3~_(Y!}gR#}# zN|Sf|osJ_%EnDC1O2+>IfMdxt$D(DHXxL-7U55jtPFd4D_L_dItR48X2pq@q=&Y^I z@P&f&1Lg1=+yhH1iku)DjBwjb6z1}d`JQ^J*I~}vU2jy7P*WJGy`DD6v^p56tzNDS z!L8_LMDUo=xy+`oF3sNdQ~6z2oe?x^W2KQ$EEMJ2ilG4Q>B6NR-at&Izy%t-a;BJL zN;lPd!tHF6<=67l2qP0HWR8sl{CEt<72i|`;MusEb9dg%PqJ7eTdb=d+#`?11x?-)3M(DBcKr?Kq_mF=q!k5Z>YA z1Gw8!v^*CcLT9E9>~05kU<2qM2|XHf|dru^hT=cWCW~| z`|AxlqlKgoh-++8p7Vf%U1y-qsEER)&g<_)m+h;=Q82toThd&(1{TFzC?izvu*-4R zEl9Pg&WM^(@_|PknXQ=AU59Z*^bFWdTijgnS8LIzyTqv5Y7IO>S2!`WFjyY(`c3#u z-fZPJMTs|`%A1#J-C-;nv_Ov-ptBx4op-YZH{Zig)_#_4d)ljFo1S`hCfGsy&s_2K zb%rJSu#-01x#FF5o?hWvrMX5T@Up!-Y-vLaHZN4b6|d?noRK`c$itTH*Ih@jAKyl4Gz_f_{6uI@d{6? zWa^ct;lulL&_ABjTUH@m?}}Hilu3~*#J=aP$k*a!LIBq~(T|VYY``dPq2O94I+|}Y zUe+ZX9M?HB$!j|64>v82>$pyK1Fdg3JmKX!b)bRk!gXS>&W42i_d2<)>1(jf5dZCz z8DfLsi^4kRW%poF^fYku$+NwcvV~)y-U!gOoUuAs=GuM}QPvybXypW|aZ$L|wde&L z$92_PUFa&h5yXX!a4g`fG-Ji(CbYWndV1XRVU_2MO88i=PP&DbbJxkQo9ie}e?}!d zEGet&JmVi@1NX?&SOAYWxj|f02ks74HMWX9+8e;#gNdQ}cnrxuWg>hc^qqB{qn=`J zt@2b<)X%_x7-|#lIDuoFV0f#-LHJh8+S&-7Y0oi(`{hZ_d!6i&X>CaFIN^Y=a@Mpm zY#6Z1P(CxTnR&6-u69u`y4r=la~=AQwbg;uE^KyQLJy*W$7;bGY&NV%j&7zeVY@Iu zjfczNHu?QA1$J(8aop^KWx5jrimX0fQLn_?pn_ew=h7hJSop}lBcI0JnBWSm0+_F zbk~C?qlY;Z$dfp16N0XK@TeE(S_yUvK}S7!)Qc`F!7D=0Ru7(Dc@chzp$OtFA!w-w zcLDkiYWuDv4%C5Xvrr$k)spLdA?T|E&uDouOP<8xBO&Oi1CM&qVkH<5g6=x-s2AI< z1ZoFYR~>lNi{rLgWcWfjbku?8RC!S$Pm{x#=GCf!31+v&WwE8Y>Kamx*|SFJ6E1K{c2Xv~brpy(3Wbu<_?q7{DlBBO|gG6PW~ zT3HJ_GoJk$!gWVU5jllu`t{bL9T6i`2_3Q6aSro#}i%g^)=w>=;IeBy~R)Bute?TK@R`o7klMN1S^DKAO;@e9VUQx`AG!V z2|-^B+->NPJ~I-db7FPSkqI<2=^-=1&6#|uUsueC2FinUCFv8He;9?9=!;UC>4(R~ za+@fH?rOL_^S0mPlxBdea=&P?13?uu`Xc&5F_!gciXlZ3oegzRBt zFJ39D56Z!vnRvL%74M6H=iCoC+kiYN`*V`LJC?Nfd-M=Kk9Wb(s|rLbrkZt8?df@+ zF>kJ3+wjago{7!G>UFpF_-z8#Q*ZcSdnWc#7_yNW5m#I2&E%+hhe{_qy^@JXIb88J zl{)1t*eT{5Y!D7O{8EWHe4$fj(~C=V;-&@}g(qRHSLrsaPL*oGYEx-etigI=YsKoT zPa6NRIC>T%-6QwUGpP^L14Cubf<0EVzAt8dpUk>ToArJ28oYb&KpL%ZB!pjhDKjGr z)NDk-gu4%O_Sfn?e=i>3zJ zIz7XfEjK-%ij_VkE7fbOd@6W-7_a(5tkTY#p8g~6S{G5*_aCv!V6&Q=Ga~lMi?bf0 z6}tf%2`|nd0->qsCR*B*FniXGRLaJWm#O(mt|o|-=}rBEQ=#BgQ&w5w4Dk) zEHQP9XQAWLC)j;axFL(@XtK5IYRTQUNT~%^XYu5*HF<*<*OSzyDwuFmC31JJRrJ*& z`f3urUpwh)+Nt%69_6H~MVR&2X51{Q3^W<@RUPQeVh7yR^4a_9ZpiBrn;V*d4u+@+X;HSQr2!x=vvgF5gKvBVGNr}VZQOkRMe(CfHu zwj3GP0?z%RRnVt-XWi3ezg0cBjFLEJ9tC(h3uoDzQ3IOpJx#*6;vIDc-}8$lTxCY# znXD_8VRdh9pfOGqp3PeSdra6=?`}a=ywPAG-T1hP3X&#b0oWw!^wqk%kP6Y^xh%fg z7Gq|S2s|g4>+9WpNE3uDlB=iIoj2M^yXK%r(t0V<)gz|eREr;3aF-$#^4cZ5I_r%P zUi$uO*1u+=lwEc17NjBkx3Y$vf{A??XWIM&w%0T_KZ(ttuxYOcPgq`Ldn^Rs2|;VU zz4b=^d`W=yb`9M9jBSG|o4#K#D|V(!vmG3Vyfho*khw3(8CHNx=^BsIFaa6k_#Q6J z#sPlwORAn+n$4r!_GTLNUM4?rPlm5}fj3YEak`Mi6@R(Oh(x{iw4F`vE@c-QOkSDI zgUQ||aQESxXrR1|zL5bBWb;VzjV90XpRochq6iu7LD@Uh(Ttgh+k?Vw2j011tz&At zQ@I)AxWCnvm3hYhic#21&!d?Do~NBoe8$;(mKbF00$wyYxcd&GGlr>hP#OU~q5@!-$7=h#ZF&KxvT8lDHREz-`fNpl|E>Fe>T70)C3-te$=tdhw`7p z?{TQ3(o3!H|HAKaZ<-#Ex-R35z%i^`hKO(SpVqk<(|+)XoBhY#s+W%|af{ zEJUaIhjyBUjM}ou@Iful1lw_BQbi}1IFx#mEHtFtrm_#oqGr%Pv8KAZ&bmvt46hha zQuW!SyBE)`M*;4o#f6M*s?Od^ixIf$Yj4^10WC8tGRRCmCq!2;X~dDmR=YeV$d3{7 zDH{1PLUzS_F!1@fqi8wzW`?hVW~Wcda?B=P$GlBK*1f#mbeo)1Z^wltoYRmraF-JU zzpnTI^{;nHWc;F9&kpk`K?{UuOocvKgu0~G-G{jXet1h5U0w^G>_4ywZSpjtW-vBoB77h;%WJ_s@>nMr zp-T8fSY3=G1NV4L4M!{4TfP-<8LV};;R_UQg;=Lm7VCJOVudV@bk$*QwI*?;6Guy~ zc#CaW>k=mi9{Or6YZ4bac}=3d*0bq%Ed895_(`yr3M`H=dQavTKm9#FiQp7UGgN7n}wvm4m`&HFu_UkB!YE9fGf5K>!X&ctG#mkX$-=(_F+7D9|d^WiS;(3 zz4Ku~ZO4lH2(3}!VQDlZ7sFe!{?WO}vv~q@^q25cm28ibSBzT^Xm%`3jt)HO28kk2 zO6q~>jKR|H5$X4k^tWs2_lWd84TcXs7wHF7Oi2Qqm&!6$Z=+#dQ(Gd*-MoSMOJUVz z*@`3#E)mN1Mp{)*pTUt6P0wS{zrkPbE&QTiAd67LoN>}xpif{mD7KbLB$ z7r!JOGb2%Ll(sUfaqf^6mpfcow0+t*cSr!f2Pb8B%8E-neuIKy;ii95ZOjbf>QfZf zx&~-juZ?%c-Yr>Mcqj1PE)Fd8(dU@f%F4{Ftp|5pt zsT2+Wh555Lydw&~LkfGgt2X`}1zczN;9XI;jpsl(qQ5w!;c9GrWm<$I^u4Y>v|~~W zQ%N-VuNfQ-9^^LpOX1sFPXUE5#TxDM4H!SHm7}~ZltRt=9T^-5=EJgk#bi&{>CyHb za)I~8I?o;{&emD1C0X$k0qw5`&%`AlFHpeSJN6cKt8s3ZKhQ z%Jq;CbSBM(4zO@^L`juMhmVHHgspqkc#8zo*U+~juqwnBwJo8;o!jr@KjXtixb2cL~ySV^dFkBwfiXx zcZV5-E&YImxF5(w_j^=Z`T;@hz?Seq32AS#gr^?LWXI}i@@%eVj%`7HlGu+4gY_xl zO^);69?L3ohPhDYl^kKz(se9gUM%I-Ob2dk+DdYKw%q_eUAHw8j~5)fL$zjG1#_^; zx={i?q+5Gk@$P2B7lr?1a!_zRx7&LpPiHfB;ILZ?wM~aUVNa&S2%C+nz8Wy=YuK(KsrP0)w8-Q-XA(xE7=_Q-|I)N#XD0QkOR z)O>*Nuj|SM?+$~`8hyXb$c1*T`S)=yk$g#<*Uv|b&kn>YWDlO=JF?cw|3{8d^8kK? zEVm&41pq(78Zc}pem(%;N4ULi($1ty#8TPIb|S^RtIi7YV*>dxf;8?_CH7;K+l9g8 z1q?~2fP;+aiuX0!x_|8PW(R_?lUN)6{DSG%KqKp|fG0XeMFCEna#${`Lq+fgJ2>&t z7jod=8vjI$U?$&Dr(g+nJAx-B!n`g|*#vn9 z?FVzlC)-2B`<0 zupcGHD9i)ej%P-Ur9hY07F4It#5!8nWB~FS>y61F}tWmO2XS>|V zJ0ts&I>`N6zc9a03o!Bus~{`1AS+0aBVRSFSO-~QPSD(2Y$!`L%2Gl(2T?@bgM=8X zS?9G`75N&kJtc4b+JWs_{J(&}ViV?V^5lWVHyY#{0@-xvAVr#WLENgxdm7?Bg81&g zfXFY@%)73%g5YOW*;xGqa^h==)&oZoo;f1Zg_6yvjKcelqi6!(e{kMcMBbh(mS9i*uW@(VTdmQ_|gwrh~>1Tw`A;@Kl2oh!L;vquzm(6NJq?AlJ& z(0Nx|McAN4*gzt**hM&q!N|#2k%jl%YpfVgYK$id<3S4suGf1`mux3UHrb`~lmpl0 z@YveHbmAvd6;KlN2}^ELHfl*Wk|ZCaBz%O2!G>H=NZY}kq}jK$TNPfXVb&4M(f>SD z=Q%0AQ1c$JVcf4V?k9|M4;kZknseK=RxLU;LMI_yb?6BBg_`&H>#P{JYmD0o<9R!V z=YEmsr;-ap9=LrH?r?m2e(u3mf)h1*pYUV1xKT@SBT3g9y-&qKx-t2uYs5SC~ymJq@bZyu^g;P^)Io_mv3i=`T4DPc^t zV|ccUM5jtFUa*4;Y2EE0oBu+M4S%)DP_1Si)i{h>Vwd0`yaD@a#ktFd5L5_3M0n`G zLC7!EyvKJ~wFoPWFk%cG3I>LuLN&1oasW#4pL??vr`t)vhi*FP_3J(rKk1g)QJ3s` z>6RFSTubt-{OoHs=GRnJsVjw^m0X*eW!i&BQDK8z3O&%|sTCdbRFXiLG?*CkJnTusA4m)Av$&Ss;^3?`YsPnh;Jc~1HpOFLSmCYJ9D zOT5aaCI;^duQZ#4e6*!F(S6%Y!a)>mkiOd(iVgEGp7H;Sl-b@#^`EUoQ|0v{&!dt_ zmCoBD%l@azX+*)^L->vFv#ltgp7xjJuw+0_VSGz1L#}dhYFDihh0lbfZ-Egt&EO=Q zKVIirU5VLx7r0B&dFVJaERh3kYihvVg2`rWjJ7x4DEv0zCAxwFHwg7zHSTUC#tm81 z0?`=Usi+rvMs8qbYei{U<(=WJHsL-Y>s~-vXcqM9i6yB38oeSJu zwpZ|>WV-{i_1WG<;d9B>w!oeDTPF`6h$DP0**Y;>DZZl-FPUh01{YBKLeH+p*hEJ? z!B3`wxKMQAJ-lt08_yh4<{RYIV2!(5y@1sjd~owtL>s_lu7YK_d>(~+Ri0YU=?^kc z*Lr^9T=f17p7!=3T3$XjC(x)chiiSNabt?l+A4 z4dEX1FKb|&ah>tG2ZvOs5xQ+idl+dCA^ioBls2g|`F$yKvgSMYMXM%nXR7hX+XS)l zzktXu)XaNqAiFfkE&_Ss&_PbptP8eS_4ucT_$NU)-=@ONdqnC?@;ppX*cl8wDB05?ac~?yV zE|SBA_t)b{K@Ih<9>ycdmPR8Am&gw~xGO{b>xc1Bzoo%liUT_}roTyOakrBm)89CZ zN0E=#dpcfcAv50Kr;JMqq)~@_C&;?La=LY&g0f=x9cIkFy(EjQxg-lWV&12Xw?qzTwKelrg(Y&9 zsioPN2bW|mr?H^y{!xeMI+OPV>_;LV?`e5PzH60hSr!fVmSy2^ub(}Lg-jg`9S}}_ zp+;zX&x&*@BV9^Jzj%*)RUsuWXdfU_ev!t2ek)cxW3?03S$3@C=Knyk3N=QD4QmBs ztstxw|DUih)+s3C-?wUZIip=pXdC~(q2(89oE{tA6^wTU;eB&xc!`!q@$UK9s?+UU zH*Tl8QPi(nn%lE*q7>*?EzRw6&~PVBhEz*)cNVua-OWZ6?vx*cP3~^2@Tyh$yQKFv zV-jbD`{m;RuQz%2e82+D`G}v~h`BgYVvx?wy&O7eTn+SBBq3hIht8Nljs;DR&*)G*uWqyRDjj#8@9?;U&tmHS3QE%B35? zk3`iLYydyCH-LNPT}lI(Rt{_DY(OSY{WdPv@- zl)`>xk`hr8b$w}->~GoB5&bP2JEHKvsYF=JO32q4e0$)-u{!LVLrGmOR}#P_!bAG5#y7W_L2yorLv+4{TOERLu%CMwbn% zld(DpYuce=CF+yn-t`}=Mvt?{K29FH^aEX=9w(Q5_ygs_k5hee#g|%I_$WL{H49I; z8d2z$A05r^0c+>5MbdjLS>Z)G@9l~&PnoFU?tJ^X^64qHPwCM8omH0s)@2|YPo;dN zMIRtl618tYY8chN&+WDE?i{X}DYfqaq>}olWD3Kt<-!%*xBVrT=9g5O1s{^-H#Gscdu;Eb@QP&XZgN9`ZJq56$#w%~E5LW&npi~?-jy8v z&7KQKu$}HdjGx#Dd_Y!l#e49Ei=lnPHsV(Hp8Esl!(O*^IN5#aaJ-msl{WKI`c6io zw^=%zdz6-DqZTfgm)*@q9b79vI-3nkEjYs$Gh|e=c0Ky`8r8X{Xm382GTy^cS`S`A2Sl`zlQZ+ zL;7z{_}v;t_(b{Ln&Eg5#TCC~k>Q86{E|MYS5sYLMq*L8PjtaU)R=(Z5WZ{pm4`&)25kp;)T(dP6roxy?-gJ_7BUs$0&V5koWs_PT`?MeV25Y~I2 zB%KROWiR?D<{iJZf_%sz9}>u)1`IHcu`2Z8aJ=uv84r8z64_#soeCX3lEUc4I`fgZ zMOV_H!=XgVFVezv9BCD5Hw(3!gj$>;)NUn|5zv^M_Ge_aLVgi~3Rv4wR?x+{RI-b6 zv1He$fG*AzOYEmG6F9ghR1o@(wjwQIq$Py(Nea>uh2&W;+1E>UisUZM#TXK~)j^1Y z8*hZm_+zZXT*$&)NWvVm+pvNpkD!JwNSsm$+ws4)vd2&H%mWytqWlZ8xB1tgD#`;@ z1r<>U9X6z|*=fEeq?IX1UmqM&q2>;wt@?b-C?6Bb3y6Z%Me0Gay+)^RXA;f40K7m$ zzvA6-tQDgzm%6#OTx|H9pX%X78iQEti}5#m#znu`-v37hO1zxKe(!+v|pg zw>Cjag7F1bNp8+{;3>|VbMe??ElPsg2IdER-k1q+GkNO0TA-UnpclA%rP$&vB!n|Q z-kn#7+lI_Y3_3{>XMB!z40JmY;yR;yE>fyM=Y5jixd@Xa(AkyC!=CNUp1j|(#2NYg zwC-AZESK*a+uRK94rHp9OEwDAzGlz;l5f}XD!(rV&yj>&$%fc7Gu5n{RO_qo2FtNW zOPuOd7KE|PkGt--xlG^AefDp;@UFJl+k(@wh~uJf)3;t+@c|sV^vlckMQRN4UM>$& zdh8`ST9#UqMbag$g$bWv73wn<>N67RXP;?D`;35ReWo1kGb&eS{A^n-wRv}0%p0q* zFB>VWmJ_X*iw$z_#RlFAeU*k-OrL;BjNul`_gyGraIs7`|OH=SW zt5mH9HU6yzHvZ3lMzI1Gai6h*p-}Lsl<@D6C%eI=jB_dBIQAR@PNGZ|=Z=%Dnyh5| zt|a@Ov`3feN-}V0k1ErZ1~wkf_-RHIt~RjM!1@@aVx%2^?FQDJ)KH~mRexeAX!m_3 zO6l*dBHhX&-D==P-S=n-ZY7EIlEAG}s#a7rI47!tif&_`Fs@=avc#(8JFMk9q~(Gyv~k}dHSgAHzaz#i zGotXGs&~o7o0w80A~cB}Mgg}?wF)rE0t^}_Uy}zj;PST;h& zl1)Y(Tq!^B9&Im9331l@9hEQY5!fKQ;-5AdK5rCu(QB-GhD@8WRgA(TqD%{I>qiqk zFoGw}dnqGdCIN4b-~q~Dle+~q3)WPZ1?Xf~6t>H|FPbD=gBLL2RC}|$*wf_h#!La& zDQK@ez+mmP+Ea?h7kRawN;s(Jt@ zxO+h=g&uVMVJ?B^vu3`ILL-zf{pmxD)$iOv&$_1}E3|-I} zpJqhi+QYa{PTok8W<4#@GAP)AzgXe#WcWJ|!@I-p*JyVVdZIJBQ;Lu}qjmB!(HX5h zjB9aEvs^@oet4fGCQZN7E@+Oi*hvW(o@*6!0}Hx=1pOdkrwt^`uf9@t+8}nCYLVn0 zB#AR#s@kbdhhepJ#-}AUBlIz=bj_-grNC>I>D9v=qng770IweQct!l8tQs6AkB0ynza(nfL0(^r2+rQH8@&+Mp(Gt8NX0Q)f5}!oFtF{#Hu6b6a z`q9wQa)AEBE?SifhkcD7`NCgYR^`H74CQu+WYdl#lB%a z67^2CeAy*G9I<@x!7^siGL82s*^UE%>5juIy#Uj57vS;N>`^}cv?5IJZpej;QBod| z(U}E+>3C7jW0-6i8v;znJ$`#I8Jh-x>BCORh2MOGpIWG_1(=T0uzBAoMWrrk7&4@Q9pOUmHq7(>MSQR;w6*)6mkuy<|Yf%)NB4?r^J(P@dWH=Kg&f2R)Jd@kv zKIz8K#DOJ#FZ=Lj{1WAvr~r2I27Z8N9>46iT%8F2$N4+?$l7eCZ*NZdy3S0dYiY*o zyzw%~bG|tSLz;thmEt+rK)K>KHrXmww8C46eV8^tSHNnBO2;UQghv4?@ru(wXr(Fz zY>`ocJfMp2I_+BIxl2qrQ8-B~y_z$$Cmoot_Kzz&y_jWC*lkr-8EO(T)SwJaT80{C zInZQORQt!lLKb0tvr+9IM?x)Nf{td-5$7|@yW}ZC)iMG0(bf@5g*RF;ITYbbF|F>R zB_RlCZGb*&K-sCBr?iOs{h zZ}qc|G02 zx~ahkYr54!*VQ10_9m4~Jbh9r-l7_X4td#57azhc^0S40VlloYDgE`r61(LaoZMIQ zjh|FCpLC-0xZ-VeIU*9hCPc0EeDHe8M7T~a#=Ve;$Q3s@(Gy+qZ|d9wSk$3P=yY-` zu(uA}c_)ZRdF>y5+UVr5{gQg{%xd6*+$&G&JpLs{9B8nIu}7!#m7$wn7U8H4Lm zztcg^(ofFvZ!B2lEdAsxzx)oDQ>@O?PtG!j(y9IJC#SgLJLLrZWN2r+l>7UBCpNMi zy(j`lzo@g`-WQHO))xp@n2|F41hDL9Gi$@%pnsZoo>`^E4lhyS{{{e#r27_+#1CFR zg91fOU&M?79ElF~A55vD+;Ak`A95;;0923Gmzky(lVrXIN1`u02qS<$!a+=2cuyzx z;lJgMU{jM(QR$!0LLJ2;`+>$p8lThqE#kZIUSd3y{6GAwyU_^39}vS8Z%IC|w@>Y9 z^k1ZP@3Gn7SQ`8vi(~&!U3<4eF7y$;GmMohZ z_DF^Cn~?y1R)8FiY6AM1SAhs zu|bPMbk6wr{Yrvgqn>5^sIQWx;1a7$XOm24qfFo$0ceK#^8-G)CKt{|xqjzTmY|=h zBkt5PiZL`c$_lTv)rxyA;hu}Q3)0}8i@0|qZlzfV4*H2TKd?amNDfq{3ZbG&)EX=J zyi2WOm?VaYVtj~V%=1RE(*!V4fFm>5BEhIH5(vitOmvKS8Oj_)P1k0y;V`e1athFu)->JSbvy4jFqo6 z)7qAX5q3EyskStX?c57mU?RZp&U2q2-*oTA?_-f6(C%q

                          JeWKm_%tB9kWm0z||q zxvfg6?vDlrSg1;emdmZW)H_B+yg@%e{e-7-z&Q+6k#D3!J>Gc#hhfUn^*m&0lQ?ue z_X7Aa49oxxf9l7};@cNtci+Ih{ePNmG7;hAP^1JiOqr-f8QEqP39o<&_yLyEoh~&R zf2jiz^yGOdeOAF4pPdRZWugMntjAwzg}Bn;z-DTJ32-HGy-TB9NvN*)yHY+^5{xVU zj$M_YY5FHmDJ|2C!x~^Z0OUBh~tJooF1S_pd zk0OSnkl_l=aMYT)IVq!oXt*j6D~*`8CPXnCxk@qp0{|T1(7o{ySoJm{=V&1~=$A7- z_wZWU_vCC_>vi*r;RK$$dRK);(f^1#cmTsR?CUA=B7mCIB8>e~zKgl^| zICN)^0K*GEr`%W(E8wTxSPV29=R+R0L$3IyX7^kifX{=YnK1cMmT+W#VSyH|;0CLZ z1qmSwF!vyeAng#R{4Qq%sIdu=EWm^)Nlm~1o-+arlzRHaaZrSEyKw6Prr>-W3ONa{ zz`+4)anN6enNL7CT=_BBN=5K{P8n=6qJ?l0|LAKnqDAV*rY3hAY8rt5Vbup4jd}1t zJU96=>C-`|b&=M#$EJ0OgUmdcX4EAp-{(2X=Sx=IjqX`ttKq~<`Vhsc^siP!PD~hb zB8q<8a7$@ZN+qU{34jyszyvlV5xhTK3`ug4ST4Laner&JO+x0bc%QxX3P zITTS9T?yFIVHI?aBM~^5gY|n%E=r1X6M#9J7v{p;TxE+nVhirs=HTQpdDI<_%(p-) zC|GTUoNs}gkC4|`Am=0GiyCr1L(Vb6k@-;0KkTg|k16njcPZ6dQ2TDNqE}ncs}ViZ zNGM#5=%->rIJvE$FjEv?@f>lcH|P&l1E;UWbPg!k(svumc9b251qKT&rl(W5eY5pP|FHTNYSzm<@qbVvX03p^^Flq z7y60g7@I2fm^FDoR%zBnQEHZ7lvbkl++h_NubRFg#gM}p& zV!8}p*h_|AJdZEzMZ+(Ke{Tegs`gTF1eQ3k3HcKyRho4e3X!BGm=suGNqP8tBj9jG z!f$*ym>U-D;S6I-ZEY4>9HVL4mPJBqOYKm!Q_f0|wky&^qBEY2Q6@e3ZY2xQx+Jw9 zOXc_aW+MofI8ZYeest6ti42+x)rTmk(^6$odbhPq+8q`@YNs;!6b)jT$^f)e$&4AP z+@sxb{M{HHZf`c`)y$u7M&MczsC5z5@v@ z4mSMzO1`&AAXj|-B2VK3%oiTyCwt^a6wJn0kFC-qd!#=Q^?4(H{q?U2?Cwg|Zkx<_ zwRZ);H{_xdzCXgwIvAQXb@~L;=dFn*eQ{iIX?chxbkHbuiBr!~mpE~nTK9dN+l3_L zw}c{-f5$X6PhCQ>-96d}OrnFAODI~I9J#TIH6t`>dYKku{KHmpmLB6%7jU@ILp$CV^&tD^d?G>@sC;sy4-1Lxh|&w$&fxPmO|!cnqKGgi!n2aPJtM5l5aA-Hf6 z%+}l}@?QKvyXlAPgsvNZv<%-{9 z4;!C3drHZqpf6Gv#;@~CGZ&au`DL+4AXu*L7Jfn5Z#)3}&@rkC;D={c=E5V|BtOK8 zg12uc)#{Q^FgPavf|`JDrs=g*XS#__@h#YF<^Pz|fgeD6jK0_RDV9SJ;4#u?j7Js0 zV`Oq?ywuYz!hI-D3ba2VujksE0`;k4l&8#$p-5#Mg;gR9{KG2BGc3w8B+6V5&d<<3 z0M9s4{cA8q-2NG=2rp6!vxH};{4#%-)E*@XL4B`Cq0qawSf$v)Qfwh9CjKxX#TJsH z0aHYZEhNQSN)aixkQDFlO9~R91U(=$(Hrw>_?B%}F?v~yUJ_&Uj}l_^k{IV<3T<3~ zUV^;(M-<k~L^8B899B)p@{#E^9`is2nvj5FzzhDw5wJFJqt$CA89lI%d- zFt6XidxUKKcpoM|Ej^M#D1F(A^f4oSOh{9Iti11If^o*j^L*`N@;2<0J?%R=d!IbX z8$YM_IDj9rcIb|-Bvc))GI2B}f^_sUM+a5Dy)4jP5@^Z3^qgs)Z~E|>A$6UI<}~n% zmE#f@RktPdLBxml#qn%!Acjlq7<;SIT;QKpZY!AE3gR}P4YtC?G0%=>$e^YsbbPET zYO4x1?)iRmz8P5<@rDaEz+4UFF!H@Mu~4i!d|na6T|avmqf+)mEvk}5%_uJ2m&Nc1 zh2qfGr$jCUfLqz5w~|SJ{S#Hjw>mRhF+L$>d@Ge9ma(l2d03@6hX18F&j5hq9k@~$ z1UNocHyr-&C)~}<50nEOkCCiQeVpWh=Y7k+55(yY@|9|%>q{YzI?xs|-*M~(&u0654_pNrg@6MRmr zru=jSpzO)%ty=!iMg9TV7xpVY-1c2-sRe*U%SPOES(=p0#MgX=^1Np2jr)|zJ z=%{ADjF`4bN%S_k`w$u@joVdPGnNKy7YlVYgL~wOcrrT@ftQ756Vtpb(snev$0G?Y z7``HDZO!0rQHiffVoNig!NyeN_NH)K&)nV=0}m!`^R+mz3@nw_@B^#%U*HY=kqE#S zSpq=6`2nG5eJ2>kK$pN{|yLFb>+DH4vD^8>XrLP4KdJgIo1 z=H2z9G#K-uxiI_Zq6Yq0en1$tp-2KiG4A+D8h{U@x$u+%z#m^H1K9gJZ0#rU*nG1!#P~KCCLu(v7q~#<-b;Y93&dP_ZDl{u!dREk<xU55;EgFA^e}0N?x5hFqAa*?liPyEOAC zEvI4#c?rfihYD@Tg$B)-=1{2xolW661Ax%k|_VRoSR5*9p~58bULkl8FS~pg&sStu%i-zgjC0 zJ}RMzFIEe1x1;)<9B4u;?EM^fQ}2g^+5A{VAPSD6t4x?r(cc;7LgcEr4J5d7 zuy;}K?}uY$P)vA9tTcVE>TrbTP{^((ViM`kQ%JS1Sjk4GkWKLVOA;r`h}W?xM6-i>qen9FZ&HXY6f?~Q zp-R#CxP1{$stpJ5>l&I^TD)?0Ff=db4FtXOs@UN_NhO~hjF`Sqc`#6K`sph&D8fK0oxS>$ z(fRS2W;7fMMw$2S{pG>N_bhK!4U>PGN-o}7S~hix-wei7p?;Q1Y0+_}c|nb?QF~HJ zXM~Ew;VQhyA`l8H{~{#^ZNwDDq>Xpfl-k-_d542ldTDEC=_PLYE~0lCR;Q+SWv3U9 zJ?R8`nQeXPHNAcs>rdkYx7frRR)QeTG;jx2pw>cS1DG|f?7W#}#pj(pW!CBE%`7?L zyuzZB&MP~;7;t+)rj?nEa_q!OW#>(rIO)8S2_>4`*5=#Dizk&4V=J|-u}PsW8h4_N zdfbqrB=Ig9cOuDdYa3G7qn4+YOh?gGh8t`pmXZSnk{nnVXr3EWa!~Q(-=QpeNsB94 zk(4}13K7(@1I&j~T8(_^Q2B-|^Z0&qq%Hd^_nR%9T2~!Vu4JWF4wY+Ci8g!^nkwX5 zhRUk#F+|4O4mhJYi9)=0sElcZP0D)bP+4ulqID#ra?GxwGA3cB$$HmNSv6+K>BS|d z7Z(+rS9->@KNpTI7-y|So!9Q)zxT=D_EZL{L_|qt*u}>r*CZrNqtcQT!hK4xG=+R} z@w90Zic6-RS5{JX7FEZVyN0OxLtBaR9g=w{XOdlHe1pA40k!*!hgq#*d0j}amkjlq z`<$giy&g-sFHHBktZdp?#%{5_uJ+cJR(S)wnp9@x{{mKIyjSM9Bx9W|@WXq4v@Q6d^?H6vqS*rtT8 zZ(_O2!ln z61TY8MkGkVkqV+C0-FtyfKQz!2y8ANm*oPX;XjUyh9HtL{{`f(NN01A1T%G1g5t1IqO^@IQz=VB zfnba&ZO)RQ#Fbx+6XS(4kwC1XnyGERps9IWmBhz{8CJ|h=eAwxHHDV(f;_!N)*sG3(y(Tlos-!9Jcs@ z&N0=jBkK@}EqkElDbg?#W*>wEp1cqDZ%+6qFwy0ZHyE3MHkoziRe39MIuKo z#gPl1uCn<7zrv9lzOvO}el@PBkY4@BD&m}?apMY4ru3g#)5Fn9EDY*^sY2UoqP(4W z`XqX16ETc6XmTi0?TyV2s)}!N`($I1xcTjjlCsiNMi|q@E^}sCF%~2Bsx~A=K!Z_D z(rpJ()wOhLNm=27!f}N2mW_|5nORm`T2@9B|4L6mP(<+d5CncUD0U;eY$P*6+@h2J z^(IF^rCUiNu`xiBK*TH#)+JHddRp#M5)@PBpB7kP1_{yTZkiod-oSiI7NWIv%w#kG;GF`_KR)3t(5|OkSJ_zt(9V2VG&cfVlv!$1CP6s%q!XA>AuhG)lpq{eRLF!1dZ|q{vP|2SY~6YDQAXa9D!uYM=yPD>-ViKPPMnz)`RVzvoAco ztZY&=7O2LJO*n2}pJV07W8ktty*VKiipFMDM9gSKsLD^IEiJYp_nY&*HC3_c-rAXE z#n=Y~>SeHRZ%=U2K?AcyY!G`O1h)9Qjw4ps9Wz zbUfwGaTN%0uwfs>7+vP`y=O#l+f0tDRI=fLTbq_vS(38N2o+B%gB(|QsJ#9_6xSg9 zG6Tnhh^SA8=#Aggv|&YX#e7n6|swq08A;+GH8lPIoarGTUMrG%= zA(iIF%_Pbc1lproKBQC?w7J` z?8yalAjfsnJ}8SPm7P{H{d8}{zt9^o%Xqp0Ij+ABmB(vF%YD_XDVA5)kmVJKn7$a+ z7Oqp-udrsg#%|M0j3?OXkKO0Edc=fy!rqp>!mO$a%`{_?I&4wQs5@9&YEWSBLe~E5|jmgKK4qx5cWWg$2BI0&-m4L-7<wvJ9}Mbx#_P~Cg&mDrc4yt0?2Vq z6xx3*$+nAe9(VLO(Zp#8XMr5oT*+|SFO!NSR1=#}Gru$xs)8IBJnthBe*bu~c9BR~ zMNQ0)OX@kU@k80lj6|sGrhOCC&!JvJQOByHHNmKNzG+rgLyl|HP$e8Qqp?7+{ET2# z-Q-ZjXN~GxB%UmmLR2Fvq9k@DkfkC)L1 zUd09OZMS6uR2)Tq3%_$hKAaZH^Huwg$7y_^%FHVd73LQeyi6ETFuQoLqK|I%1z(2d2jEGt74Fsc5 z$SLca_Al!s^eDfUt|x4ja<($yY&77^qesA~aMY~vhw!GJP&FP2huJ9hGJF-lU=;t} zq}7;BxB0|R$D4$_K^%>p#de$nuxj`LIh3!$>#Oh<6@)`ob%kRK#)13PJF=mpj3v!G z1m{ZOxGzUbCe9B81F;1BEEdBdyS)#N)eLhXC=MO76({uF(GEPR0WccPn{|xxiqV{h&Nfw zHV(bc84v&W=w+t2N+Xt@ZMDnEgnTk0HytwqM){*LfRoWk_v266T_OpeVM16h`!Q9~ zuSdWroc-X=8E+L$`1noa*UHGmjt+tEqy0&?S$Z>u&7fAG?ax+4P9sH5Lq*o2Or*$Z zsL1>HQxu_u(W7x&D_t@~>yw;Xj;YC-5dCeVl_vDlh1UqshpSIxcfl)<4@NV(Aa!ym zQXCGOK|i$p`6zJwKla`{KC0^M1Ap!e^o4k%A=(*hw^S{HTABcYxV$DLASi^9uvj-T z%-kd+lbK=e1QL==qN0t}Y6elGqK!*6b&b{~u1&RXrEZO_R%)xJueS2GwnnQhTCKm& z_j%4abBEy8&+qr&k3X24bIng4e+s0$Z&@dQJ_YTmp1V#s zemq=5$0CM_k$SJbzQ%U?HP~s@p}N9-4H|1jP}wO*+=mEHh2zM7AaZvzjZaq$0@rXKcS1kmGAiv=lWL5d;BD0pH)_=S$( zjAGJ)aKtJ^cnyJLFGcL`lJJ-3XJ|<{m~ZNf#Spr?Xs^#xMBe4vW zdor(n@Bg_no1qGtYA$>PND6U(2MwPZ|G=s#etu4V0<*@mg^0_OH%=Jo+|4}hOG zlE7OCtWBoV$&D&zT6r-|iN+cl$l~N+PZBVHD(*kwZ)r<>&TPZiNCAKQGJpGmzcuBe zJPuq2Zkl3baR~lk;z<)&^f{G;nSdr+f1EBmG=nqMOkn2m-B?D^rWvaA(q3YfHW4iW{)7rNu|!MI03TgZOj8nMEkT{bJXx+P zEkX5R$2^}<3&&fpVgz2DH2J|QFB_PL60HOqo503eHO;&eY_K+X7V3xFuI6xrR>|0G zXZAnSh-{)69=hjyc{zhsat3%A126ib5y>MJhs@Ls@)=mz_UC@m#VoA>OaF;#n!^z_ z%+N)p`59cO`NFvNSmx_kw{b6Om?=fYKF+T;3>_JUVqo;ELu$3W8rvglVhlkE%H)tRMo5z)$D{>#Z=l%)OcxhFFI=$E`fh8 zi*DxTL=#9Y_7ciirD38Bnv)@rS*rqX&eE2X*@x%xLtS=Lj9QQoxBucv{rBf>Tf)(3 z#mplO8}%o6*=b{T+CXyZY?%*nVC`(p4hP|j$d1q^;ieLtwc~HNCIf5y0aLrrSuSo< ztRb^J*4UJp-!{{*)?dKl*%tG7wgo1yF?>nb2lrK-ezI3{%1Fpr_1SoRJf1B6|`N2dq6i`PCr-Su@1YbB3(hh zP~p)IyJ=>+oE}%^ZMQQO^s)-=Xty&n=@k_kX}2@8XjFx^w+99x@7k6Iy1{x==Fsh*GKU`D zrr?lt1T$z|Y@veUy9hqjh%WM>a6(5E6NWz$`Yu9k`r9K%Xe*bmpSFB8o|A@HLYfuL zLAhF(w76Nm(q~CScBKz3*}I_LM0BNZanoLO_?%)YbrD+Iv=>F@V0us2G1KtUX-8;K z1xB-WQ#oCwLOZfBHXRzt!q{|Zd)97R8cVdep>hK?Y~m{DdWA8RB|pyV9tFo1pR4}h zuB;YPufpo(Pb_3x=o_zuXt)-Pz_W9T$#X5Z@e}7H<5j#O+*pT(8(mV#C(RAUXH72+ zyX)jez(*f_^wID~AAPjXe}Ett7C!jT5Sqj8x+TetGv~)LF2NxEpN|9NuT5qOAUZxD zL`tqy_~~c#nPxV61%v|6+%t)~=SkBz`X5Ya4ALjH(K-tCw-)A{j^aci9nIBADoV4M8bRVxAeHaN5^;uB+Q{XkC(o-MH=0B>K zu-cevF-TYQ2VXApdAT`x*>Y3=4Ilkq^71nz{0uQaM;)bW$`Fsr)+5YSMZ$yNt)V3z zr&pCn<*^RDW~*xA4mBtl?FiJv8rC^&b=>yQ&lwI+6b5?nB}PvwfSqvN|0KKa_2+(r z$A3qV0OOfARi?2{4~@U6d^_Og{}cLIQz<^F?Koa7)oYcMAMRC6x6i_8qT7d}dK0SP zmBwy%9yaypViMIz*g3kG>_|D~d@xXd?)M#bq{4)DAXHA5_~her2v(Tj2!gX{tNQvB zg0oFw~++jy%nb1QWc4RhfQ8+^#cH{^Xy1T=U%rT+C4m&c}gl_Gy zBS#u`20HA>JQKR1BS1&_$Zm+F%jt&-y1xVAikT*28%NAG;XV!@X~J7O?ACG`P}zGs z?A8kUkqTXiQ2t{Ng88qT5u9lfcOy89ZdQ3eXt!G{X45SyxC_A}44rq{?bewl?O40r zI?E(|qup-JXWZFtx90P`)^4}XF(gOZ?bf*l<@fD&>yak3qup+uXE2{@4^%=|F}j@{ z!eS}sQ^w*EwHrTUQFT+e8vF9b3cJ7MwMO_ig#$U|zVrszpK7ATq3Nqf>!wb^*z=RN zZijLtw=;`|g?`TljJ560)}AyO&NN45ne>(lzJuT_dRqm@5S&ea zSHU+BJc8a)!JVBj7ft82PMC`hjdsFZ{!gX+eJ9N2&nmQ|6Xx<46?(1{=JJLLjda3X z{;EPxb;4Z!rb630gFmYfP1>{7Z;bw-Oo!h!{VXk9I2t`UnKp%@hnKQhQff)7Rf>N7 z6%+-x=N$anvDgqJDn+YwIs$7|VC%8P6iC68H_!q2iq7Y=O>m4s%aF|sHuW;T3_6v^ zBebkff-t5w2>AZHU~04K6Q?$Y)Y_H?Go$JDebQLoWI?~ECqbWSXXZcIk;&)z96K>H z&MYUW{EuTlz2FOv7D}V0N zEYXC|#QcoLq_}+6%$Fqv+48!4t|+Hf5X6^D<=xp;RM0BW_T`#9kuzx(WW=tM@fck( zi&jBYANJiog{^3^IvkH1HU`&gb};=sjdgk&Sa}6Xj1Zj$76O%8!KZ=vQUsyk(?Iq7 z%3=!kr3B|Rg$K1p?`VRKw_~^BQ@C1~OgB34M#TqE4OiW+ph}4+nY$#o8wLkFvSCk{ z|E$zyoRk8317(~B>%3^5Tt{j7@Yn387F;1OI7P4Bc58M<4O=_*FnSQ=9@{iq}FEm`v%Fi6VLlp@fs! zm`txD+7~vp-~3`KZA#)O;eH5*=IbK;;_nhLBmLCm7iIMT2k11X%*ISZK2^ZR{#I!= zRZg@&E-GF)9}71H`DU5)-39r+w!56OO@dyN@DL)hRl??QiuE?5+$5;~zE;S85z!$k zp_@!+=C>_hSUqR%%-JSQ*+n`nYU17&4x6N1qP-#hV}|d7%o}5wrn+>*HJQt{ctO5s zKv;*qYMFkzL|>egDx#`tJP{a;rmHfUG<|7j3Tob&wcT`tV-Ap*p=^MT_L04TzPu=j zB)wTXMqkECus=8287Rj`4YN2zUwLRDQjKIWi-D?v7lkaEyOPViTpnh)JPe|CSL=d5 z3{3hl{+^0S^tU#r;XX43{#-g-KK5h-^`IXkby$0(GtiHS2vz(!4L*jl>=?U3%w`}P z7{O-@XlDV?pX=wAeU`KjPj%vSJ+mE4K?}$2;TE$N6;Q$-F`$`5|2sQJ_& zQ9HACIFm`&R8iw~tk+Q$F`t?wVuwVij8znq=#hfx`E;g4Z_frdUngSON<2G~Y;H~_ zs^}ML(P%iUqUO^RDrzW8Qkca*hk4#~9q8;2OW8Z;> z((uh*iZA$hxA+Anc+5iC(tg2*qHbSUOj9DMI9V^KIqN`|9jp* zoD#tv5MX=lY}&yHI4T&RV|--e$QAuX!3=iU;kERJ@6>i2FTJVDUYifysMUpL3U?$H zq|=Gy4Dl?gSueXqC|TRSO+??YN}X_w=o?37is%6_&ExcMpl|Zw*e|qE2)Dv%P9@Xf zben++6+j-SAP)rOTL$t#QTs+QsofxB%?{3BXrS%_z=IUvK>(a~ysm5q6#zyWlS`7x zbuFn-GMzC1V?Xu^i&gzhD^Unt^_t_0@tC{noI?=!Dn#La63R%TUH~~fZ9`TF6(5_W zaso*$?{|0EQ=8cP&Po3@1!k5K0Soxyp1ZV9`W)Jvr0t>ih;_$i@dstK{qELN)wW(^A;78 z(oIZw@9q%Y#1!wHc0^}66H_y6j^Hg@N`s0YhZh0C<)^>hZeJ}5a#9+F=>Mdw?kzr@M< zzE0Z>Q;&7Wa|rF~prB54VLtKqRpMSwe4+IMCm!p-HYX~HDR7Ury`yTa@Ij+^cM z2s(#ZF#aEp>|W^u@5E8i~cOZDAqS@{9xR(>|-Q4~}n-0YBw_&16P_01(~tA()# z6hDPMes5)u-~JrVa?thG7dp_W?Ch|`82YSVPeHdn)WL;z6LaXtBDgBG0o7ALkv$f&9+L>&CEu1{2PSfZf5q&EuJP*KpMi$v3Q%w-d_N7guomDm~Wn-dx9g* zojN&R0tzM`ZgfrVkph%Cf-(mvrx}zvdq7Dztr?S@rL~{jXE$5iqE^nl-GLg?j)RiI0Kp*i z7a$!iNJj(d$P@LTc}?}2#&B$nn@KxqJVT@N(9>SM9H)BgP3WQEJd zWKuZ~ajP4XhEjh4#cjG`Z{yrPJ?5HrXe60vm_DPq#f200Cc1kqiq684vya{oGs!{qFUR0x~IY~X|<>(d5 zvZsQ=E7l2{xSVZ>!b}Jcy!wcCR>Q}6*ePOaF#5X}^iLw@pIFQ*Ay^uZyg`xAB4jA2 zm)|DUYBB$$#O!O&i}@!d=5VLo5KFrmdY9iq^L#HMPZLPxbKhH~-Ecccu1J-Dv&I-#?5ipiNT2W9||( zQ!rVBT>nomg>xoYrA}j=L^dDjPj5{ zIbWe{&?w7VGHc~*l*(SY%gfBg0&_9L>@qMH7s5+~6oPR790zo+5$ zC8DVo&gxHHoGqf+%XGgoRRn7gmZlwA6N8Ja=`*4&;dosJFJWkq{sOS;EUPq1be+|d zEuwV>?mDi4rqyna!TancC!NGB*+9_0ynNjtN5F2dYJNAFu3IK65fb`?0hX{2w|8L1 z9!8yTG#*Ph26XrXFZkWU=iSU_SqLY}FpIvMhp(#C@9K4@Jcnt=m7Yp-R`#Kn!$*X}N0`H3fde+V zN4SYKL-SNPjf)vIT3U@!_K_FsaZITo&*RM8asJjW+$KVNefH%n6~o=tb>fGsQh}Wwy6fyg4a0laGT-0 zyFdc;s!^hsSR0QReqLfwuQpt#R;_<%fZpQ$c+b;fYyYFAW-5Q=qJ9@rCsYplBlpM^ z%X#+VL|uLx1ktDs&C4-gX~0H{B??XkC9T0-czY?OB)GH!~idIzsFqob3e?Rk{;|#*T#g!`Xwa0)CCZ6uPbd^dl&~A%XboHR55e!Mk1E(Mg=~$i2{Qr_D71w&P@~;HLY>cK0ufl3p3uYw)H>W+zhP{D3*r$E1n9agZzrq9kdB}-f4nOG{EXnl`C+r zC>q7fT%_VU5QjDaNOX-K&B2hNdW}ERhO*kOjul^{#wbIbc9eeLU)6<=J357@yqMt5 zuroN-%hsKK7Vl0!#CsFOO{Kn*nVh=P%cR7uU8&V@r(&p2&7au{?(UsXEh2 z|I57lbGtU#Zj|2icWg!hjcp2M4iU*;n)^Gg!**NNg4{0^xzSBTK@Ht{s3MV!N2~d%Eqc!X@@vT1-yWpt@-?GV zMI_1d3cTBZKd-SdP5mrElMd|bc=F5AJ)hgd(H${>@dQ41EF&!z}!ASY~Ges z?9r>W)t)m!YIt|Mj1OgZBLqRp0NKbDA(Q&WtnXz z?M`j1ZOR6II6BnK7Az77hMRr&~o>24+BKsynys89R2 zvQejvW}C7ZG-c#jo1Hm_?wSDZ3XU7ioJ)5xb&P{Qg-jIAByp~3mZ4B`thNR(r3$)* zivh;`DVTClYNi3|-4kHNk#y5|)+^@GO@?(fg#Q@pRkcQgj~u7D#w6yF32In(38QUV zjXT`jso$}k7Brkq`6&3>FW6A(0wV)%X>NKS`c+RF97 zk5k0Eo7gBegmyEr9i3=8&*3WO&y93`nodnQRTxRjE49R)a+*iyvk{}1_N>1;CmjpN zP43WQjRL(rJ;CC-|1>l9SE!Ba{?n|+gHOh?W7s8nnx(BjS=aBUl@@oY`u((0<4&xm zq}|Mdbef(~af2O!dae**8kvAWq91L2j7BENka@U0(2wsC+Nn@`J8iUEs8%m9BYv#> zU}G17qriGu0VZxu>k zNARHqqNmV8`PGf`|ElWW!^cfbGrybB*2NNyamOfoWR-wO6aSu4`g^SOA3({h^!HfS z-yob06TQdED*X<2-N|}S>1MQj3KU_zr=@7O<6+u7Q4~AeuDY=ICrB5z!_$S$noI9b zkS;6`f;Q6Ox=flr;DrP~y4yfEqT^xu?nE`3Znx86I!}fA+9@!oQd~4q4X`=I_f@F3 zodTmOMQ)-D*#|g9uL||FQ=nwNk3ePXL>YUdO%Br~D%9Ohfl8!Ehv_mU*Vv{{*0gFI zw4PI|z4|_DqGeBo($1PVbek*%c_oK?05_^i!h zw4Wu@^Zj7bKE1HytZxa&tLmy3FRsO=lg^U*j^++o=U7u(iRMI>VQF^Kls5IZKiA_E z%sCiB`Ev2VAe0iLql88(Fp6-Pj>cB9FPE^_(lPR9v$o5aD{JpeUXvX=-AjHcubnN$ z8e=U?jaM0#3dv=5oK6*L^;}otPD0KH;Sg&)>}IH5D4t{|l8M@uW(Tg&!jd}_D5>_5 z9ixaqGzBUVj!;zcEZ1Cy*LvC1?9m!8o4s;zt(Pav-!qI#*eE>VY+UZhV?;XpNL0go zkqF9OPc-MtAy#&2I7-Co{W%b0QL^UX?HGUVwM|o6qN(N1da|@jug)o%NI}ei+HjsD zLz~{Ly_SwVeL02>{aHIsCqZni+uG?Ss(G#!AKuv%TvRU%-K~DPU7IHu-B}9i_$6UU z$KQ{U?_-@5)bT^!?^W`Bw3C86RD5WyC;tNZKGI1+9ZwO@_eJuZosz-YBTY_Z-Ezm3 zw_LRj`x_*S#kyQ=m8PBbi))BhLuvnp3e(Q|lUf{?Xth>x+Hq5hqG_VlSDaWxb57xH z05|1H<*-PpjQDf!v;;S+ z@;kX%q+tTxioigYf*tBZf5MaCT$P}2Pb*+fYlL6)Ga4#8N3x2h`Ym4i>gVOt_n<58 za{GA|u;Mhe2kWGX`nicooK{R|D*BmeXwR%>^z)+QEy&a2IxDI}$OFrL6;WtX`Z@UJ z)3t&1D{YOoh@ShETC}43m0(KK*QwyHjrwqcOE+4wlQg&yt6gZAu2c7Aw{NgjQ>9}D zH`uW#U1z}%{JDoR!6mJtijuSCSHse+EUQ1aePdt{#v7qQ3&!Nn4Yk^83VoX;GpxZ@ z8!D3r_Wim3RxY$b#p}+Ec8c!Pa&EAjXh;e9NG902N$4(VmtQ-oR@VKwo>nXq+|3H} z=kCi;FryMtmr9&mN3tX9&)u7$z$h3+Eqhdv-m%df{N-kAkrRfeWL^H{-xVCOgJCB7pKMUyzXiparvzuv|C;caWtp(7YK&M&HFh%3;syX@u8-N zz+V%Z@pF8r(!SgzX+h5Mi7NWrf)6P+pZlJ`FuUL7^;EDMM)vRegyS39R8u$2vxuEZ zw=GLJJXX=Hj9wvF!qQeBSK_U_e*MrHde>$vuV4S2!wrpu@TMaA_8Kf;W86hsc}2Ss z5lZV@ebD+1YqZw4vXuVZh+1Wn93tgRvbHKI_Gg){;E*5f9mYVI>s+d$dOK`)iIbqq z)t%3QO?;BkNiS!|5rbNAlcGG>VW;ROCB|U8B1=DH(fzspcDspg;lMY? zm#E)p0*Bk^N4`}VnD&m2;6P43b#IYhI{|vP`)>L^5_ETjR^R`&o+zkkO}k710`CFEe}6}CiQ>h4S3EtacpAakHf_m`PNt5}x75_u;jBcg z(HKkUO2HSSdCO;sslMfdS(vfnv_tg{oMfNQ2VYF)`m4Mk|MXd4Nr|x{sS-8xqgjxt{+(Y)*C}TmluRjs4phS4!-C|esJwaw~H;jEoymn zs55xs)q>i8jr`ip=%T1!r5Nc9_Nf$y>l9G9J`k`AXD#Sj|3wF&ICo+?tJZmT*NYLz zyDFh&>NT=?RwZUqFN@|`mDmGlRfON^uXCEi2BxH6gpsnl&8X@&#yhWGSJ>NlVcBe4 zj4y?>6L-R{fNRiH0r&g`(-T9-DLyRrJe~A zG00Nb@Vn-GySZbrm3>LJcnm(Vk)5&DUiPArqQ-AKcY+x8oiQCf95NoB2)LKAa zSMZ%1guNXpc}Uqb`%i*0C0@d_ZzbdEPm}DoqmIIRPh~ zt~UbRsi+Qi1#6U2wyR&;rMvhm4uvPz(OpWC+w#Xmt%O0}~y zc+8K4;NZ>jt5W=0rP$GFZ^DbaIy~4J?B6{{EJe>vz*P&lhYk*_&$ntoruh7XMSKSb zo+Nb{cso&jXJB!ty0&WRf@S=MmsZB;lfs*n#%mL}JAG{ewu1v}b$9w2FGJNLoN(0s z?`tf@1sungFA>`jkz^9|8W-xs2w-sJ5ICEP=-3Fh%|+9%DNT28ni63c>$M5!_0Z3v zX|i6^i&|}VJe+Xo+=<6tjn-*fD^UsRM z;WnZ`*#h`VLB$xDDE2ba8t6r2Q!In35W(;unWkGON)5a>5}<`X65i=Y6EO_&=Xz2U zD9=aVrlQYF1-cO{3(R!;#D3OB&&J>z4+uxS56Q3e&4UxAZ|>(o^`IhoPlN&^fPspi zQtBIQvzzFti8317nhO4GSb$1?CcpO7F#UGo2S30%Ns4p+R^{w(qd>{=KBNeT!?bha zG5tu?#EEvQM7?bks6-;r{HKcSZnGow&xt<>p%CtiP;kdDgjl6AOHO_67o>p4T4CQr z!J&I3RrFr@HKwrb3o=$2WO28BK{R}Kgo1@7b*zP#;@n{_2niN z8o$0T`F>W3pFkCyzH52Wat ziI_t9u{iJ1nHi#A!v*5UCgEqdx0yzg)N@{mwwiL@%CK9b#iT{t%DQ_tT1;YZTaCSW zirt^<>-3bnKiAXA5?`()-i3L_S}DN&I7ZC6-B*GG9jwd!rG1#vM_7YVvI1yYD$nQ8X*V!%$qZAm-JWoWK3>)-ccUnkht zG4?wKNW#W!H>Sg>x;8fwj>q|`ngI#@OM|Tv2M=7rR05gH8;YqEts0fUF5(TkN^sDZ zYYJYdSec|yFcO~vJM-mMs(C;R)769!)x^p_&_q`g;TZ)cvKNR97$SQK&S}9W1zw_Z z*{(x&^;4+l^&n_V!qXMOX@@49%)*-KGh8QA6^*71waO1Q)gy@Lt5#`4l<2F&>x<|$ z2pY#=l<2D)(na*;M&95?Zi!gksONwNzB-!zr9S(5u7=|c>+A8hB zA)>)kmRFFRB9dbw*C`@7Ch}WDBv(iz;cQ%3V}Q#18n8wlRdm~27~}y^_WoxUQ>nTg zC^5?r<0fTonA4nx7@Rt$15jBXK2ytf0F>*?oh*9_2cWbtO2bW`FUzO;-AXQoxA!zd z{RNColMA>fbR$}&B2nB(e6aQ`v$#uD zx3jY~P_EO69m^Swl#aZ@LhI7*p)31eJpD?M8yi=VPKDX7|nhH9~Fjvs?^Iz zlO@;Ln)G3gyuxAsnkc3yd(?ebuwTg)Qn-)=tN3Ta2+$zOAjLGR%HF->6wT6@f+!fL zRLr7NZrXRZxl6@tIt8|5E{yVRs3ozClMcrhhYS+!r-eO*c#J9C6OS*y9M_efgMQp+ zhV}0Y#`yu4Sc>+AV-nmc5Z$JoaCA}9&A0}+zsyTvw#5*t0*&DSSKOf*47B(FWmAgg zpy9y;#cpz`s%HQu49j+D{@ontYgdcUM?*rGDKAzZA)%p7wj0~z(9u;FV6R}XEzl1W z=Ar9Sf!?(VJv<*f@#lKl0;5R4g0s&wOeH*X_){fQcZc0T%Vl)Cqdib|B5#}2qG9!8 zc_t8&nA0R?s4dWoh$eY!hR4frL{=|oJ?%2;Jzat$n}Yj&RrECB>+)-Fpr%%qx0l&% zl1AXWGOiVyG1~STi&i*&Lx6TSmL*WO8P&?&!MaR16N{kWOt!Lvb#_?BS(e4OEQ!wI zG2v=s8)vCu?sj#cLB9KQL!H476bDBhC{T7hxzR~8mG7$k*$boKunsr#c*Ia;B@7NlfnE>B76UZ8{PC%(6;1MezIhkBaD$I1WoRWDq{><|29m z;Rd|JjTjW`*$|~iR<%xy{n?GQ+#pf(GZR}E8r!{@X>#S=I2ytpJNR|fJ&j5ZzN0;4a>p; zk_^yFrHvlyU=vX-_V!L2X82`EI@oD9yNxdG+p-pxvJ2;Ff&k@vL$t(4b~AnT+B5L6 zuQO0C5ns2~AfmT3kV1qTrm6d`M$8y*(N2Xq`*Xj<*-if5=F*{iIY=S2`6%1z$YAfsj&Y-!)WhlOD z7QxX^4KQ|$SBO4Kkoqh@J#3)*xOVw+s{-Xq(NCvl(-oWqmlgy+=APoDldb_AIo1pO z3pqja3(oX`!Tp88Z4A^iEh5HU5I z2001O%|*y2r&VJs%+VSz_Pss}=5((wb?zkEWuWg>&_i9eOZV|dUv5!g7-V8J{C zp?)SoL&`tfzx8TZEVZCHm1$FSHNEZyUb@3dreS7yZd&VimU}$Lh-<(VY^T8!oQ>7-(mQ76ug9H zxtis76#UH!-iVYOT6Ik`>ayDK}7Vv4;3?Q0N+>Y9qh6b^e+_{ z>I#gB_CMel%wjgs2TJ#M=w0u{ArRK~q$!RTP`=jBH~X*kgY2D#?6rKFz^Gnr@z%C9 zuXWN@i70RlQ28>iCF6)|ErEq460rt1fLa)Lx#xkaxbw0*Atf-Vt->qU#>FvhT?6r z%4SdHSL693^ZoF+z+skX%-L#J}3m)?~V*cbVgd^n-FMVF6+dFaQ91tuKjd$k1vp^h}1H3Frq5^h}hQFL#D8nQ%5P4pk=; z36piS0OAR?miUB)g|W8`$`jVz7oh$qBZosQn8=Fc;*de8KUFhx01-S4yJ4cev79q) zgD#A{v7n8{I#5;%PcvaE8G9PnDEqo75K>X4i`hG1uQs#1X4NXBrW88OOL2b|e}9M{ zH3avU-XXsTt+lB|Fd)6Bd%+H5umb^h)dtV{=Yhccm4QDH;z1rU<^yFYH>RrPxQmqV zO{d7zul161<%XNvvAKvQZ`8|?E|w!J5mfsDF8Jv{L>lTRiTLqGtzH+UgkyNZjw|f! z!d___H`NvTRVoQeJ;s}GJf#Nrtzjiwdi8DT=rlHKBB*^GvZ6B2E+PjbagkadiISgjWlf z8=T7-=K+Irxx!f`#!{Dx$1+$^W8btIWMrck48DzUa1ynN=mu8HM*u`5SrXyT^><9+ z6eglqIitNnDQd8T6@|6yA6d<}!;**LRqPI)1NpI&jXH@a z-K*kuwJUpfwFp>UGptjaSA^fme)R8{_oLg3N%1Zba1q4E9aR`pl|VlT#^_~5Za{ZJ zCnRGDqcBZ{HhHQ2#VmIIg$ZtK#|9?cBCCiWg9BcVk_0~8pL$PC@p41L;q78Jcul1I zyIx|uO<}FqgdGx{>8Gw4s27qF7}~v@kt}pz7-9+E_f6i8=1{8L4z~tz(FeY}LfiAfhkxZImxxaBC5Ly|Y->S-&Y= zY+t9%IbAyZ{{~S9MmubmzA1*@(-9aEyE{fAdOHFoA+`0UUUBc~#Hv}f3^+!RS-tk& z-4XnX;-W_V^6K63LU=YdAUM^%=Kvt*QbS9U7xnF zwV#c!8k23Yz~m!{QA|qA`-st-Y5iz4R+G1h6_G%X- zjFPoQ4bcYG8H+8tdUn}L0aq|3^wsQVpF4{yxbgSrE>#m=Tm*yoXb~1CoXl(^{m9i` zEnKbEjIQQ2qc3-Z`(!#pbTtz>rCT>5S6in%gCj6%PItB9YG>BQ656$#9dG}^f`7X=I#+rn;+qNxibt6-{58JF$_Iq>4qL-UXDKtI}s@avFwmVP!uQMA4Y`m`WW;2 zj^Xt&ODgydHQIPgF}pn*JWZ+N(5o{U0Dk1WEWoVN&b|D zxs^{HgnmjTH^UU!_zJ;7Bgy#EaLS0l(X8Ep&6qmue@`Ga@+G!InMaVJ{Khm^G_4wLB&xYJyf-QneK zrKd?*2?pb5V~Fdd;f$XoY5+WQnaIN@ek{(5du2-%^1onhx2*xM~UIc9d&ryYtmdsR5z;<(kB*6B0&PXjep0C_du zIo%K;y4ttx&LV2ttRGUl+V`iMC()oGB4J-HB&D`7mT6jQhHmEjtZx_s5;pq?UX4qx#k`DVKvUbj;DbI3P9Fz-xaBkLT)hA? z$VAp4Y!(Uzc~$-@#PRr3MZ9pXE~Y^>+8k+>5$&M5ygA&8SL2@c$uoU}n{az^bvTyc zBI7ec&-(s)4=PRHCR=#sPs*j%FMM*v9M^u>^R#@-w9+q_OPuCV*-muY=t*YNpBrqm z^{v8%Er|&I#D^Ek{J3W#e%yw9$Fm=|ovryR1V_xKA)j)BQ*x3T2i~LP=-GrR<~=@H z8r{)G!IK{pUB01y?QlFp!-~+5$GOfCN7As*xwnX{Z4{^ka3sTrivFmu`!{hv@+Wnf zwR;l%iAi=Seu=uH+?f>P*qP`aOe@Ce(+D_7kjhssC|f=T7&!jM54{-mpU+=~Xr)bfx*&dGsnd+hBmj%A1il5OCnNXDE2?0DWhk9 z+Gk1Q{4_Tpe$$sftxA7;*5+y_)sQDpBG|a_*|M; zP%kI&er6MlL?2mZ~`pXtEGro3ey~S0nT9l%Gxenr2<1;fnij<4YbXVi7YERM%&cJ&xjs;cnewXm||>Xhz~#SW#TqJ zx3ahS(aKui)vfGp>}~Q$gcFVw7~RIZHW|dBSBOO%9XI%0GYYv)anr44Be${k`AN(K zToVgJbh{rV;Lm-iO4-XZT&Ni?%XfIWy=x+Kd)Gv8`vy4S8QEPEv3Pt?kIcx}yyz~z z%d-Y?;1(WIB&F6rUlx)OoYJ)K#IKopywV)W@DKZt3n<-+Hpa9lsHl;xEXr z9i@jSitktB;RVO(^mx@ZLX7@ia#-8GPDK040ml7g965q(?Qw_p!oB1k?MTuZwx62(I56 znF)P=;-JKk=^gcwJC1GdIGEnD^L0fz4z$lhFrn)SKdpsU?+9)&R?3yD?O9$YtC6(*SzE3vS8nFFHhT6@Z|u#y-jNN|!_d&Fha^R>N}-;2LyM;St=;?-E)A`y4jJ+4Ulpp>wvZgUf?L>P zY@B`b0xf4TQwMbKpZIwPms5Kgn_~iv!#^T?dixsU(88H?Mhx$a+G`!!Em_8%9 z&JZ6qOcWCq9N5Lx%~t#RBKpFG8uaGf=L_%8+_Y|m2fkNgi1+`Wmx%|3i3gd9A1fvv zWG4P>n0QbDYbG94R236HQ9)+nCn{~;QME8p&6k!m@v*;nnRr~7c$}G-{(Y@dapsTn zCa|O@nTnaz=yKwRGSDL%%{iYZ1b-{a`@t*m<+!=bEuk%d2NGsxXC3 zQJ+JmPKnBQzqX_)kG+>DcO z((}WSb@61Qp*UPX`5iq1en*{cN=a_hI!JZee=Nar31NJ;?4|{aBOTXoSr(-vK>ba%H9R8OV`(J|nFUAh^ zYTf;db?480l(jR|JwYa&J$yF2djiyoBObvU6q`HV7f3td&=x2q~oRYU*HUEPj2~jbMo(Wc|L)0??3SVmE=uynR z2{|sAFy%h5wu_el#lN&aH zt7yK3H9Ix>hyIVwxTPBp8RYaSO6t}Q*6C4+C=??Yx$$Nm- zMXfeNa#zoN(}cMKnF9ZSp}Sx$2JggsK&w@dgWU9}?V$7}qhl4}Chfc|B;v z(E{X$1^Hn{zSbZ=T!=jFP`LU^wuo~XZ3!Bw%;(kYbAtHXgfs3dqL&QfbA>wC9Z}1# zu|fry&kN@BjJe+yt=H#2najNF8m+qk^*4h08%90Rp#J8QQ5U-grp)gZe22j8V7Rll z=yi-8?7!!J11~PZJyu&&TgR5A)v8hJCwS4{7xechzz5B{2JL-Ts~?S)OaE4Z{1Lf4 zwpOr4?JYn*eP#B?f(8x~9`2U)v2Wn9Kdk=o zJnmo#siDHOLldsMF_wumRVNedSB)<J9qk=@=Y2(V zu*i#4p^++p^z0?Y+S^{GTyfmlX(y5!=_m<}blM3Q{ty~y5xDo~ws!_6Ocuax>X*k+ z%5QUT7QQ{I#J5Lx)|@H$ST?;20-Dp3y@Wu)I%fqP369Nzz>+hx^>Bxbi|qAX2OYR zI32CVp@(!VYyd*VT41o)Y?Zo1&3M^xgW<0k{P}a|bp;Q$B{8W?b|f9kP-065`td=$ z(v^_;w0VFKMJObb3ByDkzo%Cf;X{C$f%^RfTO`88%m{8}0{g+OeB{E-AOg%xx>W1# zEDrl}3+<@WKsgw{NYG2`Qf!dpGhNF0k2C0(T4H&pCk6@`sR#=!cxK-3atUCBQ(Z2y~+g_hkdUSpVP^zMEJJe$>F^I=YE9?9aW^ z5g102=vul{B^c|p-E_pIyHt1(sPSY1JCo;3!l1M>Kr4J=CTw*-wI;HybZ3#1?pGOy zJ8d^bLuwwrt0Pd3T$n=tLaBJP(_S0l`S{ONsvca2RWm16h_bV=(Zq0>S0gW5eEj}p zCV3Y$5+Unl<_8DuK+JksQPX`*0j}DY(5Rt68S97{M0)5+$Va3*ZBjvgWmSPbzchWHX7!j~1( z6ql?oVNnj8Oi8XI>r1GT{@f#3I|`Hoa6JkW5<5m;7CYFU4b-DV6LLPCuMbN1r&&Q) z30@5Cu|vH)R4@+};Gs|PP$4{w3J(>+!`<0HF9@MDmCK8rj znQ+F?tv}pLznbY+gZ?i;Uuw8jEnU@Eb_(Ckx2olGzFthNmUX(GF5AsejdV<-YOyq# zauS9J&F~UC(Nb&2Cql$8T&~-?6G0wpWwHu*qM+}Rwn(jO_I1H`!;&k$RK!~{qGT3K z(@1^WORG-PsspY0prvH16WMlY+3G~L9crPtPN?^?Y%4@Iy-gNLwj?rDiMIJ|8OPA; zF89(sjXRptKs0-~EZ}h90dT-ohaC>!1bsq$U-@z;2Zm9$F**YUh&@at9!}a;WkAg} zWV&a0$u%;$Mv(i5BFBN5eOkGVvT@PhWrwLr{vPULFNt&}$ngQJgg$LDmJN&vFX}mh zZoSvm=wuegoOskV9MEhpC+*BhJ2*)g;_V=4x~*s?88f*?j_~F_TMi7L&CSfs$e$qV zY;H+>x%w%we4vS|=Gok;_;RO6M)5N(QVtrm`$#YPqtXaJ%1zmUR}@nqBye)@40GzW^q3{5Z5FEX z%|jbBn&(A*(&CGmPjbHS6}m_z?9;>YOgh$FmkML2P~{#x%8T-A;qBKfd7nX%uuso( zW3FK6y!A(WG0@4ZC3=}TdCp+GthASrVn{p9$qi0*vbotwWDG+2F`{X4PC1Ae#LO`6(7w`v z_GSaUfadC@hBDo}2&woQ?Fft@K?8ja4Ks%Db~8QJoAXzG7dD;2<=^#%UtIuU*gr{9IG_ps6z~MAl`4bp?c_}svK2%wK;I1Mp^pw zH+$Gat>qdNNz(!6Z-#Nz+v#|$nF8sjaqv16994{zsQhd_ zK@4%w@C)hYa4YV+cz0+tx!zh$_DsH7DxB{vWGfkLihwP$6I23w_M0pAxasL+494(s zjaAErET>9Jv15Gh)pDprIZFL0g8F1P`%U=}G5SnD$IQN_7!EX(nWS>9vJMgE?g5pe zie85}wG&;6+X62lB8?LQBoVePQJN{pui7H_c=LX#MdsdCAC7|W#NYE|24 zad5SuTCB~bVqr_c?}gx=Elj!3(vv=e$7g>uK>rzDpwk5CGypv&x@jdk4TbbRf=ZdE zL78*z%-j2QLw%aaH_%~6=yVvrpQr2aKDSX0-}iO0BI1&8 zXNMhk!?aGmZSP<|bsHo!)DfI;vM~OJ`n5qB8z9DKS7$J#zL_-8bA!O+eoioRs({>} zemTKe+^hR@J34kR3E9b%=eLaJQfmc6isCXXP(+C?;~OJ?5|y+f3?+W`T3+#q;<22| z_yWs!5VKb8jM8O147n6>5JxHUGQN!R)U{fZdVQu>rbw47euuNHu&dNnhW>2uXKRGD zXubT}5xUkA)sJL@BfEcvcCJ%kIA$;HgRvWt9y993bhz2b9cmJAk^deg|2-_f|2nQ; ztwi^*{6`@i7y0jD`8OcOBkMgZ>s{ArS?|&Oh;2Nrf}@=*>oZE$;m*Jy>JcN~XKm(t zyFJ<9wuta{q$9t!cvyIhQ}}Wzli)d(kaaMuh>T$=CisEMyRAWCMCduC#O`cxl8QB7 zp+x;C)Cd5$lQ2pIhkPJetF7!zfwi`Mm52_O3V1Lo;QtvV9Q@S>d3{B&TqjfGG=y8? z8C)hxrZTPp8Cj>n)~S&V5szWYuE$td-In2))riq;D#u)en0yn;qn!V_UKhkZs5Yk4 z%k!Z74#SJ)p+4^AWjYUdr=!{Yz+g`Q7);|w$bf3F%4RR<3Mnu4EAbp2j-bqzWxGU*@oOU7y58A2EHVv$)t#A zKg;x*{M6_^Kg5_uxr^nPg@}=piW1TJL#;Lbj_Yf(2%`>64hbJ>#IVSAwac-7HB*>& z=!$B-V37CZp_vL9=4KILyCsbO&n}|74bej}^z!L3kOxb-^3V_?>$RMKI-Gq(91f_z z7^uSmC988ODwja-cqTp0JTz#3+6z9H!RG?}z#Fx4=Aw|i&OBCBi#HFQcf|E#ysz58 z_qh%H&W)29Aa+qQ2`4~SRBTh!vp=DZ;Tu~h|fMXjq@NB6IZkVV9 zJ#gFrmEiCe^d1;R1MG&Wbj)}bDLL6kh}sXg-!QpWmCjSrs!h_QMq9lk58%Q$0EIDN zD6->YR1v8a9xN?|K`GzlMLU?$4hGsQH+h=FgHfLY16nl)LqJF*HQ`{Xkss?@1Par1 zLLFXumEv5avSV`*EgjGuVI{@^n-Ns~U?mtDMuZxfa>PFkKb0^7KNf_u=?bzcg`bgZ zut`Zbsa>erO;mN>xmX|_%TiFs-jM%VBVTvsN0{CdpUIk7n5EHDly?fQ#l?SuNOJ z@YavZw&?O#N{Ss>tW&QO*>-Ge8{zHgx{aFjGn7xCZu zy6mP}(y?TVyP$U2imFvri?eORB>IzQSEIE4AuboWM zB^J(Yfp&5oUBZi(JYNl(M2d{p4r(O?99FmW}}kR-YBMZx9L(-4l>mkpm6**?a-Aq zyY>5;O0S`YN4&qqjqbNFBEQZce+%~M>Gutm>i0E7$@!XbKz*B`z743~8mMmr3azyr zOVKO|Q4D?*z)Nn|8aN6H@#T~gFOSSgzIkLID!=FDvx=dr0Cl{9 zszN_$L{2yxSJuc7LgyVRz_`LErF4Z4#gsKLSNQ&%##BHJ3D9J(tO=RSBbRs?xz6WV z=DLnoQSZ4uKLNeY2NvH#jA|7nX4)NE{_B{UKi8u!?_9?xd$D3?N9b1daX@Bfx2kV_ zooGgG@u5Zb=XyJpRhj_?v#Z$bzFf0=lA5lBiS|MNyTdQW3dD@ydV1!Y$b>hAApo@;MJSoMET z^Mv=uh*3o?F@H8pJ#E3Tz=m*TCfeRE?-`z)qbcH+=Q%Y`?(RaT_Z*LQc>#<2jy(yY zIy5cD;5M%~BRG2wH)SKt|2OVL+vKQK+7aH0IURAPPm{PS5EmgDvCykMf2UUS2y>^p zHBpi2*QOo1G7)RVYEgdPqL~>pOs$Y7V!}jUZ9Kb(rrf2WzlwIoRAw)jYQQu`{nc7P zV10w_;~T(QWU#*Ru~?oqOXG|b;7wz^X~63;c+;fKQfKzmHCQdJ0qDNY%h)_mJ24OZ z+X*ww6S!Rn2yF{*hZWPM!3sd@r#C!yo6zVk?-QoI8oGMNpZ33DzoKLWHt>j`-5u z#iSg-@H0m%5sqY9t262N!URzX26tQT*35C=ov$3KyB?MGw{J;zEw$iVXs=NTY&G+q zBCW{|RlRi+vLXpR8349GNxzvww|QloZShoVHX4d23=^}_68dtL!FQA*_EVW`mySq{ z@QObMHb=k${JDqCKqcSyCSt9;cBjdW-0mfNw2(a-WWR8ami=f=HlxUGRhev;j`5H^ z<`c=L!V#=oXo8_ZFX8z@cs>ZvH-zVF!tW@8`>9N}OVu92)w>b))<@O)YjWKR!D16y z#r0(QW$-02nK6h=D*X!qRXY5h+D;2Q@26bNZ*&nd7SQ+viY znTc4dAv5}8FF7~~LgRlmH~t6Rs~i8Tx$!&&VO0aJw!qV6h*4EQVxGQN7xC3x_wx3w z9SIdQ{?`;X{@Tr)nEef0n_>6T4(w49)%t5WhVS;u)300qeimTDeNv<4qH#aB{*{O` zt-r)|ATC1G&#nK^eOjb`Z|g5QGOd5XL1x92W~TBU%@l4*yr54g#|!T;sZ2U?cR{9i zeU>Pp4hML&^E#D9Cmp<3(}8!(A6XU)M)V_=^c_gGv8hdm%ZH2)JxSopEmB+562=@# zcBy`(1UEM~67mun^oE6J#fPRpYWTqN^E|7RZ&1yHk;Xxkcar8wO;m$U9ID0v>s8^n z0@EP%Lt3aW5YcH$4bkNMcrvmsmS}{Rp6X2Nsg21QZc{kr%sBOQTxS;F45uqF4N`f( z2KzP<&9SCqCqLXgiynWli2U}9Xe^SU!#2JNH@5v<_F6@Q4*S+aSOe+nvePt|Uf7@Q z8vYOHh)({Zk8^zjU$I0+v!mG<`#5&~3D81zhP>>Y_%PTRWOgoQcEFnB(h=wLm;7u+ zb=K+W>YB0Wh1D|C(64_$s|9`|p2geqO+?SKXNrL#v;yHo#NkftS$0hE%257%yWKq(v?oElXuQk#Y7-vm03_ zoi1bNR+5oVAPQ03@Q_G1+0fuRnX;BxA~S2Iii;&0=g*%^!-&`rjuXv`zPLaA^Zzfq|8L4}NirNYMOOKsuK6fB(;${} z(UB^;3NAW65or7xd}cPPtPre;9okjt(4# z8D1lTrjMt?Zhm=xy8dBp%7+cTjDCJtty3L_Q8oO#NVorU{y5ed=s(#q-1TA26V1yof;$wtIzn>TW$-hnZ2#=mWFFcPR3WR?V(&mMq z@<=gxg}>>Q{b}hVM)-SPf$%+Q<>oLYyc+X7#vg~XfwJ$2@XvC@_ACYJ5hKD2L~s6f z+2Rm-4xBYL681l-CACUpDWaQvUl}f<&4!Pgc!d#@8Fo@L?a;*`JQ!kdbpFs&d7NgV zYyC5ai|9cEbFCj!cmq>VZ)OHvNvL~KiGdL-j7`zqinI||v&=4czpup19VQsv- zL&@k>xqHyJY&A&g+1>cM!M|j5m`{7AL?nXaM$(P%ZCpUX{a+r6;5)H`(>2xBg1=5s;JrtdAjOZK9!$tI8 zKh@g#hE#=JKn*UO9s87>5S zoxyq^E#^0=#lOts2Kx1nRYjeXfi_G7sA0QbDB$&NhX2B20x!;Ej(tpPMLUn#Bj>Ae zq1E7P+{zsV_#ZNUhr$=nFh4f<+B3{}dQjAVx4;IpRoS)KZGN|K>PNP7}CUftL1&rRoAV2t-*XDj>AV1aS@+6wI zZzD~h>~{r(USUFC{2#4@aVDpsycVZ1MhmfCXRIavBPJmhcaA|GXK@~6sKOY8M(zK7 z0jF;>`lAY64DLOHKF;7g=xh=OUc=VEQ~>`W!yox`VP5Pl`E#w7arUO+8QWl0zFdI$ zAY`jA@6cTxyH`ES(T(dgP-V6-1Y;q62Qo!mRjB@JZUW40W zFhAAcJT#2OX$qC21(aT4O3xbXaTaH=ye6kX=nn;8uQS-B?NVxDa>s4gsu*W-UTA2; z7=?x%E`)!Z;j;=}Z0;TdKhEa7@N5_cU*mTFZvp!sGX6UXUySasUugEn8J)pra06EV zY60kj40`4-q$tI)+qDMt)2&WztLeT~qmLC*dECM_+Ni-DZ*~R;nl{--UMpbs4u%On zAa+DaLpDQ=0A1V0`0zE9s%ECRF}^d4dkngA*Xj~YH1Rt;-4SnAIOygtOBMNeyWXje@J zba&4s*a7)gL$kpd$>Z5GGEFg;EI2H|E~1k54uYXm9tm>4|H6ulA@NDRtRtS60ge=cqXBw%fv6!gZCei)6wuQua5)P=4_-c7GAQ3kI-G zh``~`eB#<$+HqUrnNzWD^XPpQ26Jpr*!K(z;o7@fq4z4VGZ9U& zgP&OA>4rw-n|qMs;GY)JvzitHlYUts$3_n=#*KyJ%UPC3@0)2Ld&l+wz3Qh$blfkM z7zk|eLhoS>QR&ER&1q$6^!m5GYhwPxvUFoU!=!xt@$uwZMR{+I zjWi~)+PgT>kX*>mmt(75Xv51frtM3d1ji1GB+cR0+HiBhm+msgT2sBIYT=s2wF_2o zdO^uY&f(avd6KTItqU!v=4ioQQ@v(E)#5c($5$<`F-%U@6D%rE@F}g_bW{v1|>F zxkEc&*!=^Jr{TjC{h@AI^@(e0j$d9SNJa>buUoNvf%+hY-yBW23)9Kwx;8iCG}E%? zBBc#{sB+zwW@kZb%+0v`DW69^)g&FaHksiRoIt2W<$BbL>QMe_4i4OQ-}?C2T;{Vm zm5HQQx{kU?MNN6S__82@XZ@obt!N^;Cg$ejg;aC6wWhW%#HU;8Vw)V+#fTIHnn&@) zUfq}^IF*)y&d0-hlUq|;#~+1I{$ovT9e?MKLM{I>|HaP&<-ce+sVR|gq{&$tZmnu` zLnr#B&LZ^ z<_;Ifml%@ETM~&_qLE{z=HSK9xT&EZzQ2Czh)(}ux)i6QYJna<2_ zX)xNC4{KwMob02IJ`(eH+uRk^p*1HiSP)uVyJFQ6{(6>(h9!&*YD}_zX+;ki2(K$>FfTNiU7L zYn`U>1{CaMfB&8mE>7@k)-|uB?G}%9* zfF2tMROh{cIN85LCB$8_LbSS!lfqD#Ci_QKqFZj6v|A#1cE^c=J(}#_IW8eu8W+t^ zD4c1c$^NpOnDz1JYA76(b22z=M3env3gEln)C!0s6Sz>KzVA}s|7^a?Su6FKE)w*r zsXBY3lL3KbDziADK_;nGc_PduP4-hvO88Wh-$`p*G$RryWSpVwA>HCc)M&Jc0&)r~9CBK&z{+qXHbiP3rNyhQDUR7oIR1wX&;#345o7Bf0Nu4#Ca98W6u)w*( z4nC@T4>dl~lQx>{FHxqBNt94XCL#`&F1UkKd{mC>hon{+FYMY<#uUlMLv;PZlX%Ix zmRJV;9frraKQ`H4KF;8rG}?WfRm!KT9G7ZAI?XE+E0Wbx@3{y= zuwYdT*tr!kaZO2W=uYZPSO)HZ(1*aFI-APLtD4W~OJ(B$G6m zgaV}?LIw~bqDB-5f*1ucAVQE=5rl{$%4&&4TK65(-xq}ZVX<`IiY_x9rn-{|h#;^hyGQbcgS^)^V03k~1@f3Aq&kCr* z;?u;YV%)CeH{|F!o%Ng!J=1=ptUDdHU`u{NX?)m~MJiFlIU-lF$W;(|susEGfFjpg z3Cq=D2H)~}VhxL1198dU$hVJen2U>rOPUgCkJR z#DQSGzw#S$FL+OvnT*<7lNMddr__whGhKo5v;1V*^gYQl+C_mn5p<&r;v+$MnCFVe z+!W%m9OPf~`AVBx@O3J{9RAcyDxEDA)7N}&Z7ZZNKZV1tUYUFsnwHc5uGbTIo~9)j zs#Lq&y^z=v3{|OsC!bP9^G9r$KNHI>o2xB}cy6VZJ({EAGM|rV>gI9HOlo1pi4^$e z$|4$Fd^k5VJ!c(yGs9Apy&!;SiRHL;u~IvU+6IQU0nl#OXqYtcRc4$vBFe}Nb(I~vTqGP>A%4v*^c9TXjm&VD*-Brz;_pS= zB9skE#s?LnjUlj=pmPPwNEcC=lG3?SOAFn#2v+~DGuyVaEn=BRWt}!)ILDBr%=x6m z3)fYWFDcwJ&|Ow8**D5xe6GDV7IPESiX=E1FnMX&WJkkwG1rQ^b}&*G#GPvi4WN3h zFhLZ-3-Ey@(FHz8{VTGYGmS3rA=^IpJ5{1C@Ex`U=I+^MhJw+s9S*uyf^LwZqn&0; z&{^qzS#U-*(~*K3-qI*3Q?~N>EBj1 ze44<&ZjJcO;-L(K79a1%q6yat;@+E#Pn6Hyom>PneE!71bz58P@G8KjuXCGXWUktV zn+hi@nW0$J4cgI!c40-mfFN9nw|x^tx3ViY{tjn5QOW35Ms>M%<*icLce*Ff!J2Rw zB}i-NU+2|yhsd-$SkuEE54L0TX!XQG)MlBPZrN17U<73ixWme z>^gsDqo~6e`MFFk!gkHq6vl-r^I2Tc6GYE*pS}9`Gl>siJ}>k5k6nRLl;GJY3gUX*Kl|=^ z3?DMa&DoJ)M?1rR-8Z)uJwUVQ(&-Pr|2+n^Z6GZ?{Tk1N+AA4Na7v)gR6o3My`hwrbCVz7xfc9SiOlbh&vF4~yImhtA=T_lW3W$u^I;f(D@bAMUTMYtbf5=zwbDN&&VPF5c--jPi8{xQ@)CoFQr@B< z;WL86`R?n(k;CU{IP&=FmfT9jH~iMrudb9|-zz~SNw2_@eWh-&iRk3@<_sEoW+veS zrldu5GRotdTF1#^AT%P6)1NFx9mDCsAZ%)+YCtkF+tU;nMM#3y-`Id+GL{aM{GXr9 zh!_zXctDiOUWf`1m&U}enV@rohS4+ys*#|PLPF+w`EFv%cp*{QGTI@;_}ED?AKHGR z*q@4L(A?ds6vx8z&_E8#&mm&Mg#IpbwiAxlTU*HmgFh1w#G#)9U21JQ4yi`E%!K7q z8$@ET80ZI2&<(ayrwmJ*LDzMt$Jcx;QpkHKFP4pAPug^XZD$7I+zWgn$(}BhkfgOP z*hCllkOM~MQobG0TU6QHnw8qf!7i_{*Z5=uat#Y@(dJ&`JAIkJA=;2@vOt11^~uN4xq6r+L0t|J@#)uul!~aTm z-IZPp&-#3&Tda0mT1xb+@5yB|D5!Bf>%%MNMrO1_l$&Rzmqt2FonuZM*64kz1d7|qcX*H)TNRe zn?>OzNvGAK?f&!r0ina4o=~*hANoE`5HO_lFSQ){Kw=!)#!4>nm(2oC?=~|4mG(g1ZGKT-`-Qw4{U5OnJ0aqFDQ~PJZ(zkm_cW`0J@yr| zr9$Pz;8jA6XtM6}%UXONtLoFaai9NFJZJ2awdOu~q0msbnS|iQHs)#mU%ZdwOe;hf zJ;ay2<1kTR1kIF956h5&{6PVuTpUc;p(T3ylgOe~D95h$qJ2W4eS*BpUz0X7$UthC2>qP}Leyxxr@_erXyqEP}3T)wM0v%g| ze0%-aJO#j6R!h*1$lU~QRA2Wjo3Grm5;FWTZb8PY-*Ur(nwTU)lzKXU+uHEzz% zGfc%ao3p)k?em}bC5(j|%-L+#KL24%Z!Fs_{ki{}0-wnO>0Q4VO6>0}BNvy= zC1LI9Bnng@_tDbOM>5$!XIc4mLSTdZxB)yHkD0K&$qofws}9FeY|GPjDdXv8p+-32PUVC<*$F+`33nP7b7dKZ(Us)8 zQyM*(Mn{*RpUL>$>A)~-TC;Mgn4SNE1);SyLvgxCQaihmjP5shDususVq55bY0eMw zhqQKr2RY)~P>p!(2VUfl8NSk%U}6i=V+QKkeH!{>EY_bn-Aq_k^elY1`?w5R6&M59 zMtZ`)Xxg7yJyC0gHfO^2Um+O%i5JN$hOZP`iu8(sY4C^7<5NIT7{M%jVJ6K=Mw^4t zaKs9e?-fR3WIos?u3~vb`n9Lav{Io+GHiwE9qF_^oo18e@*p`uI|@opL-iSzTPXCl z+3X|gRNGrQnOb=`Dh!5*J&Xt;=^qdG>nru zM>dkmH6@RDU9_XXSDHvRx{ifsOLi2X!tH=(bUWzVQ6O6Qv5r}GJOO$o7r>!*(c*KE zU>WE@i@r40!fS~-42e>8IC3}59uus-QLwH(V8MGBg4L)GVM45u8;v&rMRoSSdy2g(C&fZN*QulDo_XI zVTMk9eBK>nOA`+?wOC`#>q-68zg^HcH54dXYYg*!Va&;x<7Ep!9Fa%*I+ zOc4bJ5opKh)&f)wBQw%&a$Qk$f4do>TMEP~M1P6`qe$Rc_xq(puyb44n2uPi&Ukd;X2QAt9V*wH@-siJ{A ze~PT!=TAZ9eh7t@*SOA~B4*4xQ>^|1NshG#N*erRT6EzQ)PEz>(-CMuh^Ht{5#z#d zwFL$dgLRQRrl3w3nbA~W3}NB;(%Q9jmkh;hBaWJfz+cF~p$=07);U%JuW8*Y<$k9v zP#*LXN*_HgnfJp5W#1nWwiP@je$C((J50|=o;@85<@b`@m7=mcb_vGRqvF?0Ai-ZG zM=w_#+9S!q6b0&_7*nBlrii9~xV^0US&{gH=fp3^@124U(8vt5Bd7LC=-+N53iLt- zobr(r+?NUrBP?hK;eZRK3SaeXGg~aTITog!Q-!eI?R)@Y{BX|GHR=qG?-g)FM&CG9 z&N*(JiaPVY&gdJbBIAwB?wFVX-Z-`V8`#U<6%$L#H_7-hmkYw5W%Q_P+R=E@rJE(% zk%Va{5=qNhyL5Ge{xKEHD@JCQ3dNGk8aDs5@%WAVEKosrMwzxGd$jPZPE0d$B+TxY5birrZP#P22tztg-EM0u6}3 zD#rcOL}rb+7*^5!(?p%@V^Xe6{6gyJaZxZaFnws67?}1aP@Hl~Q(e$W$iB{&^C}JmBciIOau;#Au?wQxxiX!cD!M=Ipp*w^GH=R%4P8XD9M= z7zTzTTda0kE>aG6;^GvSDk0a%40Hy1mDBm{E1nqyhE*6}0g63C3XCBvNN4{Ryk&Qu2=P9Va?x;&cyJn-BFI|0`Bd9i$>#s=~t-Qjj&Cl-Z{ zcy1L;Z7BO933*2t;+Jjzf^f`Wd!RgoqUks^TLksDQ=m?T@hc@prnjA_tf4@p-#AtL znvLz)>OBF#xGTo|O048y&1TW3dC6v1s%)1`xNeF}2yN1FJ&>#<-cuwQW{0pI~uy~!oF^V25r|u>A`w!m4=QAOy0Q3}# z)V}Kq`H2(JL4SO|JQGq75~tyKQz1_V&S_gtn-h#zYB8f)oG*K4MQ&}kyN zKZT}2PItp;o-X&casQa0;*o_AF`O_XR&W!Q2y!4{Mw2b*mlMQ?<%~>!!sO2=Y%4*Z z7hHV_Gm(h!Y_^@gAi{bQCf{kdrg1YJBZBrjfgV)FNQeRp`7F(z*0Non6$T$64L3tn z278Unuo$!PlQl+WPn($t(P2W;&IAUekc9&pYpqRGB_f6rWiNbO2weIJ@yn%kf$+%g zHli{W(f>&g!>NK{SDWcrE}be0e{X^UqtIg0DiJc62$YBMUbyAB;>eGY84@_v%M!w& zz_eOm+6Az6NQHWHu23}4MrGmu5dc2@8SyJuLN|-WgfWM5i{k-`Pqt_-&?RVCI+Q;k z4JO@~+Y&#w>I9k(RDOI$>aB4HC49aXT7I~IoGW}G&HK-VS81U=6A7m}tIc=GhipLy2dLe7APF`_@ascXS$|uhgr66V#swPiAQlcd9mdi6Kk@vgg zJLK)6uNf1k9oj`Cp5OLn46cCmHeE{bXbylLb*!O>Pi^3-WqxC(hc`m}nYvuNxW}$t z;^~r{pa~3+|YN11QzIlt^yx5haL&>g~=hd;!SDM?^ z(mM3DFT6OD#8_b+l>gUDGf9jU)=tBD4BJ`(!pID7D_byIpx-!0{Bo^6Q)FIm zXP`$_^bI1Yr;`GMDvU3QHZo)5mPOIR$|5E|ui}df=kj0eu(3*^(s$j*h^W?AY7y0z zoH2ve!aH2zYB47Eo@nO&6i4OZWELldDq$rHy+Xr$2sxZSV+LKNg@z%NkK%^N5=FX? zxAg2VZ4q(1(}7V~X~!vYMGV_sJ>7v43u`#RC~Xx%c&{k8Aj-P~YLaeq%(2~eFF*xs z@B}ZwOMPtirM`V<%%INX@@b2O0pzrq_9^$Uuu6=tWQjO7%|7P(KPqnzNxb*U zjp8BJ@6R*`#!wDy`h|f(qCZm|C~xwUSj)Yaw=j&%ecdz>O0kseajimFa+VkA!`J|l zCHi4@OXQDvWkUoHXtWPYv>EB$hZ!xt+wc?xS&jZ+h$Z`;v|Qko;lGyQd%Db)WWrq$ zY_;l>jRHu5o{<`^?84gMuO)RwSD+5oXUi=Mqt_U=k?BjDHoeB4GBSPnS(i5q4K-V# zEoiy39!hA}^fY>1wAbLd(q7)(c~y8P8Fh*F8hgr$=&)C2QfW&N@0rL#u_V?K4?1=t z7EKWCV?b-cgnn{ed)y-WCquqi1rqJ&fQJykEo~Ukh~71@eBpbQHMqFM{a?nu`WbX8 zLbAI)^d9rIB2@1p$-vuRRi*4bnNL02^i~t^Ezt)?WFHpJ2DW8)l0-~zfr#ndhK#sI zE~mfJQFg@H!b6L`B7RMqE|A*^V;yC6GWG}+o6R!1umC1uq{3BAZPtuz69?dFhg9-v z2T>WFE5y4E;@7mPPpa9|QFg41{XZ4!QS%L{W>l#8rraGE9ydP9D;IL>Q5S)_sL(9x z^=$=Q6mBcPP-P76#sEO%>1_<`$UmX>h-ccDU=B@mTfxvtGw3Ub5VP#t3NX$7)}K_y z+$O<|wVTmc8{J)i4;qb3e}@^;C20v4xe?Z3VEt;+68E^|8EQB6vhuN}l~Kf|oP2k__1Emqj(uOsf6f@aUi47TUB za1&>m+=5hDMkygzWZlaJ@|?!Y?4REuJHkOXNc1vqlFj(D$_|Bcf6APlp8+oypvwDk zTw~G}GSPWsRP?6;bjh5lXd&oTxzjbsJ0pKm^&wT(5ECig zxcFtC{?+5tKpirRg}fz&^tT6k5E$D+Z%aw9q^N9Ef*5f;qW&pG4WQ~>kPtCfCB-i* z>yf)$eH}u}M^Z~~J8w4iOc6&scD9$@;fiEA$uE@2cS3=RxwTDjVu1g(Dd;ba%xHVr zJyP#LtBj7&WwJQzNl}>!)~T@qa)p$?AKO4VbKSfGbEa4tQzc~Ze4)d~v!6Gna3z0( zH~hZzXT3P~#*{yu;vM#pFu@cQJUAuVX0)a)i`r)a*QuZa$!z^q!+>JIB0WiAkHB~JI z1LiTYJhf>@xMJ%^>emslSLD1o>N zgtR|1vytiT3iKnKCA`Lg{!H_@eW<(w-I%l^VYWJ<&85o)7~$%VU^dZ5to}hZH>a2S zh^>AP5ed7AyMYAQ(cYc3M^}Q6rlRlKy2rCb{E;j-JJaI)#YeJ)jfwG~9ky`8jQHY> zE}ZtpMmVh}Z8qCcUI3%*yys{P$D#A&#@FtyvVlv58K-|u{F+WI=F-r#e=UZb zp)M*@F=L8@Uxbmp2>o1g?)o<)LXQh&N1_~9ceT(g9C_h1u_PyY{R^j|iyDA~Jca5) z*7?$&nPkr9Qk9?!r=7o1tR2lpQ+46Ap&w#9q1l`bo4NbEa9Z19ur!D;_(8F4G-qdX z<-%z(7FCBCBIl=(8BAjh%CVwy)FHCdfS-BLA@U7_^s?bzVNP>K{BpB!rF8gM7nMb> z5E129ieF~9K{AYXQCWqIIO6M)frk^a`2A#>Xz2R#r+a+2k6JIP!y`IQRQq-~$H$LO z^T~??ALXss!~UXLfk%1w*N?Xgy){2a_DbG&R}w3(5gO_@T}PpmNJ4I$mw>9IDnObM%|e#y#} z8hiEiUK{!g#cEbR3*D#D3L1CE{xk&|V2n*am8g5V%@F;xP%LNtKHr4AK0pj=RHkS<`fn7PMEQTXkOwyp z7ou~mdL0>0^e`J|zpgU<;X<*(yfdBc@mAK+E@tCzFmzkT^VDZ##Bf?1>R6(>SB~8+ zt$(O1(9h<@>G47_&KpPvMi8XM(UUS}6l-_1g%>+8@qJFJ7}u)sM4p?TWidyen^i`~ zf8aI#?=W6;@_#SH*yRQ|V2k`JAwl%_!gTcvdR05(?-KgHF0q4_pf{O=ztiC_4ial| z$~uZm&GyMm+us$a0C1Z=kRko)Km$T}0PrEZ9>p`zk3bef7ZizM*3L8qMi6Y%WksUs z_TiP5tw}54T4CN|rOPC9Z#qB`9Q4As4|Jsr?ZIMUUTLql<=LK^NE4RBn_K4EiM91L zb@lbyN2A(TB}DYP&sQ3ZG{x}W11HR&&%dEc$LqXm>(6BGkKmnv2~@~$?Udk>TUBO2 z!8=;PJFMU=t>7JAIfjqR3T_ce9+$sn*m8q*Btd(9bQb#mo%x?|=&yaUmP!~({a6l+ z%lyjD%lv;oVFqP1jLUd|*Pp-4-ekGsO~qHOH7m8~x;q4HA6t60;VZ?%9akGTf3-_1 zxY~eY4gTn^rD;>;ieRF7Suz@;L1T&BXPO-k^5meS{*@29&;6S!J%2UeWekdQRAAC7&crCWO5WhlymBuukYD9qUVtNiEn4p7 z1?T-^`uNEBIjItq_d)kMD{pqGtAq)%+{uNyV$X%SI)# zJER~p9<&|0a?1amgOWLvUouxl6ILkcWUFAUkPPb8itm-vmcH)ny4mscFgw6^U2bX3 zL(?4O@07BxPG}T#uNTcr0*#mhKB85>bWk><;qkgviLSfPtKt=*;uSXdL#^T!KGlkk zoyv}qkUlQcnHIe|Rh*0L&o8qHTlO0{^?#MTk%SA9*55zu#qkD;ZYpktTq|6cY&^~4 z2ASxMsi^-8-$YJuFoLio9C=d}fj4AM^yKaPb62l3UF#cp#H;t6sj5AHXDXW40ce65 zR+#7=_QFdlNSt<+p`RHOkmR?b^v=}t_DrX95E{fK2=yy!DiMlN>a}AtNlbR%kyr=P zW^*vn%#*^sQ*RR2O?8>V#2WOY``B8fes z?y9~tmEHP);2(WZ{6aikJ578v+MA}b{W4b0h(|og*cXh}?V-%MWuawd%UZ6$G5lc)bAADkq^fiC*Wej!XZ66)ew|t_a?xA*zodzAiTz zUze-BeR;JkuWif4RHd=>{@ROae;%g&jH%$QJWL|E`Yn}B`{k1K4HDCSiD}?aFwNIk zhM(|a+A$^9Pdlcdnd!{OB!Y)DrX8|_|DnXRV~Usz4IT=n1sV&DcroFPWA6svm5k|~ zd`u#^;%()pDX)v z9d_;vio89OO1F|Az6XSke0vpF`A@83!m~J9Ma4@Ks9JjN40=wf0x|0y+-&r3Rbe5` z-o)QPdXGD4B^9F+C`+C@gI2sF?E=xAuPpCGV@_}A*lu%+e!)^H7|AM<^Qg=G1Lw}5 zJ0Y4!aoPDro^;*Cq2I`ruB66a)@DfQ@A!Uy?hN{ymM$hyn7!mlU$b(l2CKxB|1m3$ z2f+irf1Ngij@YXTpt$n}m!{=Oo5bI9=8EE^1dn$6AH*#Szh z5=ei_3dZTH@A?WFW)SUDe%1%Q{=Hy%x=TqM%#(aGOFltMzFD5@8Yg+;X^8@^#Mb>e z3)~|5_SA}o85Gshzbz*Q8}o5z$HckQ4<%p89rMVSGmplG8FYizpr#(V&vs&V;=3+i z>Ez=UrBy!I+%m#46?}n3SVx;qlBdC5OWb;e_&OR{P|3td6UKc~7 zOy4?T2IYFAHWjxWE6g#uepphIBVk$0S=VgyJdv4mtzH+4tqMllS4Le+ZCoXoE!Xsw zQ9h91+KmxQECm8luJKrNRTDIh&b1uT*-Dw%V7tw+Bz7Q$zNtBGS|8OTN;%quzG*o; z61qnwGZp4AjdzCUrUvFO%HhYCBAz15#VptH-aWp2&fJV}Vlm!dlfwd*mFs;R<-oEq z@|fp@yu2V@`FJ%~t?WKDr|zN&lg(V-RZFYj-nI2L9GQ!1)zXFD$Xq~}YkFgIOF{jL znyQ7zd*gFUK>doE`HL2K<8zBZ{fe4}l{wIIbA4%j4H5$c1JBLxY%Ho4tj^8q+9g>I zkv=zTz41!I^qkE1a?D?}fOX86lw)CK6?2$5963J1DmQ@6%xB5ENwE~?vt&J`SU#4+ zQkQhB+Hlpvg_S3=j*^^MSzN}C7YVB%xy1$L1fjX*WNCd3hvpU#b`gi?77c|2a&ilW z+8SAEH`#75q6;wLMx|VpigigWiYsuJ#9CTxx5bLO%$o~D@t$V2*G5C!?rY9T00iCO zIM&=E2F%uGD{35&rOJZRQc49jUit`Fbb}gJw zj^i;1D})tcX3otn5A({p`r0M6QTeeD^X4`v`Mm3r(Wn(+#@v=ApK*P{a+oc*iSe-E zZoPUp*b-MJ<(3o==b9z;bza-^TAi%ztL%^yOT;$0!u!jEt`%Ow6Jmyv*A`{dt+w1m zC>WQSmY*!IfyyS+>QIj?Cu9dB`Pr1)bWN1@G|P!vH{DeKrm!TKZTE%$P{M<2cf*U*!-+SL zP8TR~Ty9c{ID=DU^iPTogW+Vt+9YpQ!%zdVN2ToABk_EP7lY+Et7ACakl;r|1}Bvq zSGN{ogn>aD9Q%HV9lOlVH!Ws|QTBQ8;u&@n8NJ^ZNw8{~Yh`W{Js2r61`jF;Mh6%r zpw}ugMh-TOXW&v~j2&#MY(I?*zTsd@${pks85IYWN^Xf48FdH6?j7kA8Sz6*gV9fs z(R)y-xWk9P;df-xA*T}BMh-b0Mqow8*deFGxU9%1x$$5!OAT9!jEV#D^S~Fm^KZBW z=J>zi5(s+_#IyGIo&M3#(8PN(K(#a8J*Tp)vg znan%hEHdg2GL;?;iY)hzB8!apK?<3CBwA$j9;6HnWa43Ikui9vg2s}dJh@v?MH2$#{J7#%3>1WDF} z5^)q9nQX#Q-UP{3@qvUjmwgEeUs5#&6V|-M*2uiD zW4Brk1sXF&)F7V(Z-^ZFi%?RIF@bQg)2W0HzZKwdv0Bz9!?89+tdKhw^Py!iC+Ep> z@xpldwsQW)@u)fFM@^)FBabb&94F??DepQ*E2(>1DVst>4+MOrbHjGX#lH(5EuuHE zc+UHK4+K8`PkdH6*iF+X(opL-^;>MtzMO{!C*fTj3@?dAqnHL94EtKECDv-yI88}j zJt;DJ|81&PT*vRM6|RHlF!hnCV2Y1IMmEbmvzmFl7#j^n=CuSvu>=L`uPUOEYHWd*v#5R3qFekbnH(&0YP~Uy6%dOp9v8|2w+_!#MF~le}qe1fM&wfUNa%mCCuO>~+B~; z*SY`UNl~ZZor8}dk6u;kKWguCzTMWMIQ5n3O#D`nhI%(~796)^dhNT6UfCy?n`;!d zz5xDS?`4&|WcBCn8a+u)VWsx7<8SSsJIrW0#omoP!&Zqm;eYp`+A#(QUWImF#9w{{ zKI_k2APY0TU=s-STz>HXPF&xmkax9Dx0v(loDPvopIF=03xvv7;3}Z)h=JS(4;5kr z8&vA(66)GpO6D-pId%S7dwBwarDg(NT1NCxi0x%iK#riyEZ8S4h%W}-mFNAi%Qu|i z@Vs^E`DP*{-Ps9Hgoa9cLZ`7q)*pj?IKA;UeW4ccm|`^U2M$OWrVhcx{O-CzSG)uiyF~~)c}}k+Z4$U$g2^~} zO>on<@N7{Xnfh$A(rmLVS?t$RY(ZQ7hdxP%j2XK5V;&j0tlzoQ6Esr z(HPu!J8iX~#IVblJqCha?*6vPFS!Y=tr}=r<~Y zigv~MuU)o&98oKQYSi;?!}_Co9K#xT6lla#R0ThXhMqH#2Ik(jE0Wi&qLyr=Wm$JGHexk@B3VN zz>|I^wR)XzP|bXa}{dyT(9m_?<E2kQfLZD2qRB^&J-z~tZQ9IJ1xImUv2?`L2e7kU&>1>t_LVWJ` zW{ObT?BDZc?yXqgkvf(-P8#DENc6n2>e{?+MOs{w0V9=*Q*#?t>qRw z7gDT}KEYbRf}d>!p_i5!&H4&PF~QTsR3x-2Wu!ZO-cPs2l6mJP=+G!{#WE2sf+wd< z-iyD!jy(U=PL7%Umohegu?7^yJyqM?R)WtKtMZnIXr$0sE=HWT?bilI&y1}wCUtEdid2FCHrGI#ryL!AFD?lG6(3w)HoyE zE-_6bcz)rM>1W6o*Bh zEU;E*ie$6isKj$Tf3{RhQ7LXE)*~c&WDZl6!Ynaq#ieWX7-_Q6^Oq<~K3MyQQSK}; zp`$mbAq*jUC3aisrM10R(p5g5oSm08QYuULxXq=)VMKocfI2609^(xMvqj(?2lFm9 zHKj}KrY+T2_!Df={zW+o*3=QSPr9~`J?%zwF+WBF+P;(QL#B7>QNsbvM|tN~WJ~+> zWDp4_rI)@x$Oi{wNG-OO5EN^@;$R8nQZlTbOvu0OPES=H_k75s#ae@U?E^j!%mT7q zu|kD22V(U1=b+wW$o8q=Bf@hWXRv&S2CsGcWysqkn-c)KzV^D?hK>dq>mM8AhN6%4 zk$Qn%a5Tke%0GPvqfBmZKqsULPGgJ1;X4oQ0pL;9hwW{>Y3z+0dAQuz-Jyky3{%U7 z^l$fOs|rkyY+QwF^w;yPH7q~}1J>+BW7WWACu#Z z)Kg?1$!ci^%6zgDk*{LIgN@`^kz!g}enz)UW=bd6*vKka?ndr2t=y>5Gj260RoUi~ ziSGo#JHByU7)nHsQX_ldOcPJ~@Pypo7!Ak#H1Fey0`jsuU)7v{iHV6z+mB!pt6k*S zG{#Q(d<4s+YxjJA3zlC728NqGdYVU+KWMd1<$vp6$=~^mzi8u8hRJC ztiXlcy63BNxQAGGFz0?^%wh<(yabYZb>wG&k>N~CkA$4v3qBf|apwLjf7-P~Azrb5 zy=C-#{Ai0`lIp%S7D?0`7=V+;FxW9fzT$S8xM}H(Zp7m9a(5T4e!n8BSOj#Ex}6J=LEMTUC{RN-d3$ zC;I8iGYtyKBSQ7XtwLSOqOG!Kzg;g}MxR-vDhx#lsF0S`{s990F{YJMqi)1E?JT^4 zSS~E@6+TeE`07MA#%5@+9p_!HW0CFX} zQd*ip2!A=N(+lqN(^Mr7q}}-RjqQN2s^M#zUX14>DIBjsyftx5PR#asw>+M~4P9>nNAZq!!LX|x^S<&?n* z|1LNGVy6$M%%WtYA65Q+#iP#4#uuh{3R8(O}ITn@lr7Eu@d&X6}$ z?9%6VK{XNi#5m@dJzYgVn|I0c4y>k4CQd?onbbwy#E6~ z)k}@B^zEkddPIWl7Omz)lA}pllFQ$~d@Ni6cp_dj#ZES|CN;FEN3SS7i`CWQf9Mj~ z{~6sDWEOobvn&Uu zQe#Z|3#myfNn{Qzw>fRKmnzd)vSlJ6zF~jDExQ-3`!U?TOZYYOd`@NE?r37d+ia7S zc`-MWX_2#}EXAM0Ha?W4w_dY8;swHA<+i^ZZq>?_DjCzs&XR>&PrubjZZ9NppniFH1P(!*BPA2k#86>-iPua&2{Or>>{47)ljUwT5bf5ot zpFlOL{M@BcdDfic-!zzZfh%AecKvlLcAp0^)7&AYt)xk}WB+Ih=pH(xJ1n8Ln1k+7 z8iWUO@~)xfB_i`qE5lh20cV#kgZ7+yIA~xlK`IiQw59TQ*)ev`5z*$Qe>Cc7WQd*a z&a6gh?sFclJ$J^z=^Ml{m06v7R++#T~7r98iI2YR`@{Iv-KDsdstioqovmK}U@xDL0W zko|!(6!p+pu2#q*NOQh}4m?s*cqOS!99Vsf)pfU#6k}K>tHtV>rARihw5;M&!Vc6> z5YF7-tICkZ2Ap^HWmW&!T~=Xo9NKPZN=nsgtn*f{qH?!*u2xsDRd}YWT8;`LT#K3N zX~wNC7DzjqwPg!d%PMEhKHF3ox^W3z7g@bCXGh*W&HfOC`em+MB1Fih)3gNg5F-{d z18fiP4`-;OgL5B=|2FgGLnx!Rh^cHtrvDqj_*00<3ahJR^*qVNGQU(FI~csK@&<9sp5d6S7uEZzj-e9`n=YfPz)K})HL zqz=|DtZq^|uTXlP+XK>UNKEJ!0m-DU$Z>J89vJ7ULV;V@dG)B2vS8`*-}l1pQ62ag zy9J?~Cuf)=|5m7+9VZ#IOkrqq2V^aNHuQ3aW_Lg1yw87Ex`n`mSe8#Z2gg)hO3uf_ zWN(pG<4auVo3vqn5P)aDx%y`;cX7qG3eC>GU{&j|v{Wna0?;Gf6&L}uJg7+_xMjh1 zsG@n2TS2Fj~=?{`%ca`5d2X6cA3$h@`3^}$3rHU_DywvFPOaE( zeIhln<8!VUIp3Zp4}8uEf8U6*+d|C1+M$6&vSY<}0fTCTr0q*XSV%ZrZ=aUsu&%Vo zUeAghgx^{JtyJ-FqI?EV7zhQkDczgU2-TVyM|txrpv^5QvzHc2ANQ!N!L@dD_UZUD z&g$1YZ)rgwPf2x#bhe~2LwR|j{X93F=TAwD(j6;n-L#}H6CqV~`e@DI5B4H8SLUX| zs-ngegkJg2EIG9YcHCJHhw}|=#10poMs@0k2h2LmRd_&cp8I@V=^}ApXC(P!y8;$^ zHHs5rp6Ze69D012f&!Zj5;U6S7#7=_k77Ufrn8L6qMy7EK#+7^XHE?u7?#KDo~6=K-5 z;nMma2AUNR`pKLGS!c(Tz(3GD`&6z6ul=JpHPV3v?a+386kqHd{;=+B!CU!0 zGSs=Gc^7Rw^o~&M;*wD8<|*t8OCDv(EZ??}&}a5eG#^j6|M}X+FeqKGQ9f%K8w*c1 zy+_;iTY9w#@@9*c&2-crQU@7?=|A}MYXQm@!)X8|qHjRbd;*EwG7MJ7% zzBO{cX;lh-s-pMKzK^bA_kCb~Ek>ie39@EU)efoYOKr9oFz=7;I|M-+e)&+wJ37v@ z|HUHQDisr>(C#(visZa8uO57Cn`fwhSg1eLK)SDXEURF!ku!F(@K)R-?rDd_Ur=OV zu((wU3pVLd$+%iFt<}W2$5t$N@_=_IWs%O}=>|O;HJ1I2+lUe~1c~n7@khbDqfY`H zIdPwP#WIrpgQBkcW(K@kvio3pxD+lwmd%U$ zO<4^|t-&19Z_c#|&QLs)(%O?Rnh*SUs|bs!EW?^7Ks~%x%$B@S9-y_-={3qEt;bE{ z#H(YYsB1Vf`fR6g!|W*%R_`@yB^Hc(bBysm&Hj;>1m^42pUKsjsVlZw-s_Y@O*~PA z4wbAsQHOpgaUb>STQyfNCxOEQyTovub*DV~QZ3De8~&lfk4%bvx_i-Tn8~yPbFVe% zlQ&iwelZk15LklrXT(Zyu=uFs{Z9mKZhY;R`cY8wb|yGv1-VR`L%^dlZ>eT0l<9HUDp zl;Sn^Y3Ob-B!B5KbiAqj7^2m9opkaUQQ*W%$gI~Ts-bbBIQco8J7TO5y!Q78hnOqg zNbIal0|94&X8U0c#ERWBoc?Igs<7kP3Gk!=X>!iOM}F^!%iml~s|Dzq`oX?=Dr?xc zA*#8m#fpPuqeX%J)6Cu&pF{X~X)qK~b}7h` zN?6zNH%kNv5)MHLAED21%(j5?5dFB@JSA)R%lGvM+PHX4*BcsR1d-CZw@<+BH#U%n z_?(S4V@K7v{|O14Lz5D}l0p0yWzGE_DAwY4&=;b;k2iEvqR+JY`n#exuKz*uF{lIi zoY3bD5}ld7?achuf6KPOVf-t5n%YOw?W$@-2O?K9+Ee*rhUXzkT-Pw z8KybsjpP`$h=|$))p#?&F6?;GCJ9eIy8z=daY=Clp=Hs4oIQeYR)Zq&Qu3{d{Khb< zOx+%qN0>9w7QvWGjN7Pq_HWE{2zL@i9sP1G}r+>No^J!uJA0y7!6%pxO^b*2EDyn!l~aFv&WJ!!;KM@iI*6|+>2 zrB*PO;xkXm+5*qSNi5ba^U}ymdF1knrN|Xh$I29{gK6uzDw8oZ z`i4kHzs;FIgJ^yHk-t-1xj@hcheYb6Z`YTRY0r@zQ}CW+Y*oqQ)?w;fU>^P@vgY}A zLKdl1H~a)tXk+iGrK*ytT8h9S3fpR+QOF-9nyBgE($N6e@$Rj#C^V;YMaD*t0m==5k_oh1x9( zswf(uhxhTMVnDHk|Inw4bCGCkbIL2=)!pg4vSWOtnRs5dbO+_8E-^6t>`h)WIiiqUkoKk(Xn-)@j)SZOZqN`MxWey9G;!k{^dA$^I+ z!A)#k+SZM&>!lw17#VVkxN)wELROgHx0+TiXha!;iKqeJjh)kdKn5abL z<@yQivR4Q^NY^VYc~be|9ZZ2{W13kvN;&nRy7=jY?u||B>O8+H7N>L9W~%eWHvUv^ z7W^vTU&^?icMe{t=0X2^?TJLwAG^f^DfMEErGE=mmM0iQESJB)9?A&Q zn_Ln7IXAlQi_w<(|Hy3t(4OUm$Jc6=p6=|!1e=(d5Og{8D8REoUJH&UPUp$IB#7KK zm~0*Lb8&0)rA>5HBUJ1uGab;~9S#^B4yN1BHrt%i?f7!pem}luiAUEXJ2Z7t(>UJ} zG_Ed1t}f})k3kp}3}$v1O^cg9D|Yj^7n{$JaF5iIVOlk{nfUkB9P1Pv838Z5?S;$e zs@heZ8WVz}Dr$SbfG)u3B7>j90!*RaY0#P%j3D`(pD5oN>qoWKMmld;L z(x80|da}Tqns$X8eRYwK6&7Q{TPYmPy{p9eHL)%@M#~Twg&}pWq<9%cTdfQSS$Fdl zUuHZPm^K)*pg_*N2D%IxJ~?*94wq#*a3kbvEzM66ybN{i4R93{)z+tA0V?teiA7#n z@DeX10O``|r#apzB=9nsue0JF2F^38T2e2btbIi+eS=zhkoiHo>hXIqGju1y`&2TB z>1_>o{_#?0WYiK=sSA1N^AM`sL=tc34d?tQZak^Sdwrm1LuK$Og}5s=Q!z#hv1(_b zyk>C+X%8hu*rxC_*It6nI(gTdAe=14mNPm;^?Q#`+W5;S2i~}k@XWPw) z++VOnm7q78|D+*rzBUHCzY%ClL)yRr(bZLxfCiuXowOmaWvb>uBhALtt5Y`oN!r-I zY<<35K-8>)RTLBQ~IO4)*sDW7?ysf-=nlx1dI8a*q0Uyiq_S ztXE9}(P%2A=%ylzzR{j|DY5FWPtAz$aM#$I4~&_NgM{XwW6p-q9YzeulHNhv{?mQ_ z@wru_*7?b#(@T&NSTSTXoqzqPC`fECCsSM)q2D4JXIl^sv_^g4#BHu3Ly?gD^~oT7 zan5#-nuT}8cA%DpcTP^b$xpdu_9^<=dc&DbT#pjRWFExg;(WxqlIn2Ic6%?&YaGAzA1@dz4Y#GxRCo-IvLI3k%Os^|HPKE zaJ*zR^v0BBBV<)CY=_Fm>aKZ5vkc2aOX~Km!k&;v?+ZI&_*L>kn6j#SJeIsIIGf_wHST2q&RAG<|jiY)TZ-^^NqJjrwv7O z`Y2r2PLDN@$B2fUgug#MUzCcO>+-`(Xeh|--#Yoa@{BY)yaSx#l27b?#1#Y5Cssc; zU>dXm@6WBV__1cmxhy{D&IGq>wT!6Jg#uOf9Ftkf8zWH z{6dt$&=JtEl}Q^c%TXH@TBUB|XzC>#2b*AmaAy@TM4nXKp~(aM*oxrXMldA zgLq?|4&<@4ge^UFF&w6iqLSEe;Gl1{FKtBKkKZdeWR^VO)uOv11W$~XXP`XY$B~@G zZx0VrqOZ70){jJGs76g$#v$hcqS~%(Ly6d~h~@9q<#Td_F81kxs1MJ1@1#9Bt!Re_ zOPa-*%aQ`eBeH&JYZGeUJ3EKcv?1EE?kzhSlI#@c-I2ltkFOahY*%b^lyy++YKTL!b?YYs zWjr6!`TP1s?C4Tq^82wFu<`;2Qq>+ATI$f^v#W*VF-nJs{S#QcwGF}`h# zX7i*!lm}(^wz&xzKeZV`*|eqR#i}56=tHanvq*zw)zJ-+i3qQqY3u4w6F*|4uh@na zJ4f{(%a|M|&T?_Za);|6Wge@TRP|qQC)R1^31IB8%om?3(c{f$&h0-qLzo@wbfY)d zF(U>|!*`61%2_FUJmlx~)8a@8aUf(^FH_LMI_Io^*^4J&7yaa2iw;zbA?_;;R(xr-t&sNXI5${Wd$U6kGEz)oL zrKciWLa0VA1#haXvL|9mKZN8!;c-Ky_CqpsvqdREt*HmC**ELz)mVww%AAwzZm;??RsUXXsmauaHj!x-kcFd9XyQ zeaSmKFnfJ7cCV(8N&NhKxE%653)3nVvbE}D{k9j6blwP`XCwA|M4!Nby*JEF5_v^X z3AGlWC`uo!gI&hKfR=z};f)nw&J7Auw9~TSLWfyCwZg>@&?xe5Nc>8Hm{OVEl{8j$ zgY7Ko?xdnljcypOslm~?XgM~3+*16Ce*8r9OeUu>uwypxA=|ICi5}nDAaK<=BQrN2 zB0woarce}cy6G9>h~U2UPQsCNkt_xrC6Kxy`)c4Lo3o%7x-zcyVQYoSCWMRlQ@cEmz*d&M9tC+rq3dSv3a{5E6^o^mSA(q8mYOD`#$9XDJcIPJ?&3#pQFU6*T8GZW zc3%IaDvZKKR*`+?-&KHC^T=Xn3R9s?anOC5*V<08br!+cCpus!Ix+XjlaTVlcHfqz zlREHJ*9IW59&TZ(wA^rTaU_nKPK>_zVengj5c&-yPcgJ zizgB01&>}I`x#tVeI-UNE?9IWE&~_JN*0W4$9HKTW89$1vn_N$xK2H_LhK?U55HyWt0tRIQE~a_#DIZZ zT(;f&>zkOT5)oo`GOeGreK4T^aMGB;z*Yz$uf_B5;0;l2GhDG2Cb@{kAx;|Xy6LvY z^$#qD0#uDsp`RI6C{@^?@fmGOI*Fa>&1a?z(RZzu->Mv2jx6`8d z(x1i`-mr zNwI}TsMw3?o^_Z~~qRU6`|h z72O$Hs!8POX=~<`+D5Q)fQZAQGwDP&5uIdb(@bpx_;e?Oj?mBTx4G#+W2<*Qy{j4aRI%$rpwb| zF&78pu#&_e^<*ZiM-3)|&G8OpT^1a18WTX^eaN*@!`LmX9PH{mytDA|0Q_Fuyi7N? zI$&G#C+x!@CIkJ)p^T@CX>s%fLw(4fJ-PjKLbpmurVTUuLY3ZI8e6T)D^lg_t0rRS zz!^lHY`U^(*bxBx3Ulnb#mxWXWO$GeA|G}6{H4d6c3-Qsg4$h*f@rJ728y45t*1KG$`>1hCu~qLF zf|N|S3ND*{OL{TQh(u83K1?=HwjFzx%jIU_Oua~=*A8boVpNbV(@Ut6eTBJeDt+*l z>zCBu6&e0X;uD5lf4FTJO)S)V(87Y_l&*8NVaP^cQ$T7`)^!e#xh~=0{RZx=M4v?}{{F|VhPnGgM7L1QA`G3ujSOkG-}D+O zBpoj~n?nmJ9x9+>)Fqv;(1uW=HVX^awG;;`U;O3ts?fG>!L)OFe5AcVbF!;cvzo?u zT88qH3G!-Fr8qGy&*L;0EX`P!PA>)WD10wt0!0mrQYzKiBsQy)q*mF;43+p+4UI6e zx}1j)prMx3sIWQ=p7GRJOr$mtFY{6_@cjP6bfk3-imPu-7qm1a8!C;Z25P2J!68KDQ=+oX znUyYm{nHC%297+4FJkJM1H|??$Xtj@3zCm^D@_NM!w`;fT+3!Tqn#FV1b#ePz=duO zjXHj{NShT#eI6ETuhbc|tNON-rm!`8cR$CeKgB6iwwCQAVw*;RSV5&>ooSr>c^XxKar{Di8AFweDW4ib0Wphzpud3l#w+3YL>q$SAMVw0Jee*5G zAaDF9nRqFhY_j6a?3+p$k;M1w$vR`SDE8;63In+F&Omm0k$tY>>Z;w0c_(daOg_TM zPc|hQQl}NCBs@Yj4lsCy0*s*Z`z}fOq}JS&q7QNse@-lu3#ObHNix<12G&loeeXlY zqC^w?U-p0uh#4h`d&-K-nk^U8OZ5P8b|$rkI-*SZ-i6P-sMzIZ++^yCCIVfJuUo2y z1ZLP-XR5Rq)@TQoG)^Uq)csIk=B&2q5#UB|5iJP^u#ikH6Lj#&UU3crpbtb4rasn>ov7DpY|kM$&ME@ za!zM~=^U#S&d6oskx8OavM+wjVKZo&jLP_m#c z=tT1IZSNq4)vK=jcT%if$HDL5+H9W}ftaBRB-Z7;qY*`M_HZprGZL|cu{tvd;}liy*$o=6^?*Qh3Q^n=5p54g#{Cj3Gr6T|2Tr{CZeFJQ z$BcRQOqkrGO_bD>>kL$}j8Nl=6a-&XfG4@7#BdJgl$vHZP?(cCQ+=tz=Z_`01#7+e zfk<&+4#KE2Ci|M%9WKpe!CZE9!^Mqc*%?%}`krbP!YgigwNyv5TK(1%x7O8gO?hkW z6>VMW$@|*Wy>Gn>mFNhs$H{xZxxn0lBI+H9h={IcXa(s@3Ttx>Y5rdXv+8_i7A%wM z`_~-^vc=uumEEbR8z4b;-Pk;Xri{k;nx2-&!)r)`f_s+w|GZbbKq#@C6Mx>q3@8=!b!3mR-bmqyk+6Y;JX#;U1G1`fy0_o9`M1prla67H%Qt0Jl|p}9opPYx zS16+dZ~sPm#Sq@wumHcJ=dkH^k1oxQZ=RVPthdk6rS$l`-#T9=b1+Ol8t`X>fQ_o?;`8&WF) z_~*Ckifj;gueY?P^(AMsbq9l{8ZNI-7M0V~+XG+tnSu7K9ig>}s{S7NV7bm`JmS`- zwdbXviw4^cH5NoS=r>g3^#@U;I}3FPan#04`-5-Ioq>1oAEu?J63U7WoJgW4%|f82 zPb0eSeay^XYbJDcjqYd+&aese`K(xZ<2E<0pd=+X&w#+7^0e{ z)oA4EK(xQ|JH)MRP-ENBSAUG^SIOTApGu*0cy(94QuPnP3p-C+-1R@cFr|n^;w2TC zR#=)h-z4UFrqWqZOco4rsnBR4QBVb%QpmREWtIU?V$&oARg%ik_Ndubb4-5Np2{Aj zngB~L(h2983lT2PL`qe=N?Aikl?nypD2nzV)CRJ-^!ckjhJJuar+; z%ff~@frLMbG#e)X6m?f14CG18E0(dGPT_VZT)H-)M*Pf=&oDktue+$n@(bm=1HtEW ztx>NP;aLF6RChnm>Faf@^&>olRUx@ap$kMKltlYF|!o!dWIc){z)|wEjlmS)=>A@@43=%J%cq2M7xPY~Wf;6d8a?j&9dwkmQyznv_uVRZgBP&|K+%FmnB^zH%?y9 zt0hL5n|p*Sb#)c#ktc(UvapVuKce z6fOT2vN((7XSDAV8!qKf=_hFpk4&p}d(x#&JWCrNKGE5db`Ywyd~8d1{_CY__x8tE zf@_q5L~8B%NjHyzQBIlAiJ&26${fv{^U@d1XkOuu-}FvAZcmHGBQBCCj(ZNg0)}cE z-ue%Pn*G%3--g@2sN`4b0v4*+q2dNp#H*jGg%s>f!xmoy}_WmM2gUCzH{J}N#Q zNDGy;886xR|9TuP_-Zl;98M)KXU(ikT3YQXys%giT{h@t$91Kv@nV7&0f<^chCpl4 z!0z+cBp*0BA1H2|c>#<=b!)2j%<9&21b&rYhs;#EfX*EygX)FZqzj3G)L4ko(67%+t zGg`CLbJ3#n_ZrQ(@#?2Y_RZ8mNDOhVte#K#7kkJTb5YiTE>fNk!mhH>B{I0czz4d_uiIO zF+ppMwuGaC>6#m}J?Ki2!+54tT6GF0b#3k?aGCG`vj~4mDs^q_MWRP{W&{d=DMQXb z^Z@HxQ4F1_4>U-A_y%%$JW9HP=FhVYY>lswK2L4vmerWYOxhWL@aa%q;0N`hPR7fB zOIB^hKvF}-E9UH=LSex>Lm;q+1k@JxJSRnW_8Iyak5qhszECz~hn}q3T$|Yi6KHA( zrI4BR#QuTCxiUC4I&Zx}SF}olt1)On!rch5zFzLa*^kgxff`8xv>@Bj`gSk85D&c`?adc6E z;(y~R``@@klZXu8fE_Xm|MKI@u>Knt+*^ChrCCSPRpNs@Xnypio|*Xbu96=<%QGwa z{Jw8r_r3&)u&|gYv8w(2_%gYiE!wS|;WK#22C7vko_BR^>lN&Jt?IRPcG$;za9QO2 ztf|#L+suJuPp)+J;Hd~iP&Jo?O!|mY8d)1#TT5zaur(nwu?=BvWx|0lM_I#Rj_&_q z&K#{Z1%|No$T#aj%-g;VdA97oo;SO*u+FoP=r`*()8r9^za}vMgyB7Aazx-gPId&w znHWBR8`m(8m;$ynwbJ7pp)DgBf%>!X;^y1WYJxqIJ4x=5!NUUQAc=ACBaHaO_X%7g zs^=6JKH)1`Y|p4IRE8T9d^;VQzC~L*nsCpsEk*Z?gufH0xn!#;CS5|g|MGdTv0(Md z6;f5YWOJ!4JVW`^8E$BQK7hZ%epDjbQ=|OREDBT(SY2&A z7Mr6qOemnlwhBJX62&G6NpAnbd%2x!Kx?SNFa~od(lDqg(xe}wDuS#Zp(;|epTH&p zydUfY<$bqmhT=sA-&o;CA5W_rr06f13mBf}NV|TR6I7ibW)3v`AXpC6zd^P4OTS21+DI!d7(XAk>bb9>W;Ip5z;|D=Jpy|0abw;*UZcg0j4|L+F=->H$PTKy(nTx822?eU?>>;J z|8c0nFlu`!(J+jEsK79;8x+ncFgxPkwd#qp&vw`vI*cRhW=9ZG8)!06?a5jpO}6B1 zVJUwnuc62?ldnLsZpl@{9{&#KdUtnYV62bl`seOe+sA1qiyrvxxxtPO#~4Te%flx` z04MI5z=aZX%hbS_@dwpdfoa%esMauyxq&R>0M=NizAt%brA?3r&5-FdI6(Ak{!8Jy z^F1VtI$H3kC~!D0$?;EIUHV=?q`_<0zkj`lD(*x$->OO9VDi-(%!$8OQ@+C((yvQ= zJ4x_`sL#D13vd}109zA!Lhbu$O8niH98`>+iP~q4v>N^`d;LN*0BJq^8+H=!80BG^I1 zYJ&HjM*E~AA&B;EjQ?)`gB6M^eDG1Y&z|G`#~<-VWU!|s8|UBDBLNq|0omgMFuzkl z#O9dED=W{06ZFqw-9Pdy!2xarx$$6E#!aAv@}2q*QDZ#VQ=%`1Bk{V#cQViqq934K zlK+VRij`Q30$jLtiJ|yL%t49#lTjbKDTojQ5sUv3G9V)4Vld!jOaQ?%5JX^)BYT?Hl6S5@YK1f{0Gjk?$u?o&qRqv*yGw zT?$Wuec`6WFiU>JJ!3vU9BJ2~!S2TeP&9==1tN{e5a*^)VEEj8#ISUrK|o+7`;ym( zT#yBpn1XW1-X-&;h&~iaV=*Sj1<*8wpA!3|oi*OEHN~!Au-At6-W2nP&57YaOjHCh zF&qrUL~0NdMFT-h!~ij|;6En9{ZeRE{39C|*U)EPhz!Ni)PxMhV@ix*OY&}L2*~Ug z3Rf7l{3Aj-7#JN91Ko;-i(*U0Lb@hzD(ML8WX;@4Fx9Nj9;-J*PBiM*-&g%ii+4f? zk<-91$Tk#QtSxaKYvv&qvbKQt?28Pc&F15&`iTltcG}g-!FnTqx5i7BwUz*e;xG9pDiX#D-gA6m0$IHd^ z`%1&d&~dwt{Fxxg|2dY0iOGpB6nq#<9M0D-mcx{|;9DE|-yo7J@)Zceu%S%4Jj^}& zeO0Cr{{MufFHp}0Fzh>&*nEtG8Xg2mM2;k1Im4~1a1IaYnX!hBa7*0)IAx-ghO`RV zE`E|?5o`=!;*lyPeM-Wkl3MadukcG6+T=_Ina*2!!&|u*LZr4OmO|4)e`f!b8$Xm} zS?uL}nGW79TAh48b@PoUI?+L!(1*J#{g>>pk$v3tvgn}A_6!xjo902%SJ7+j|IiE} zIz@HPds-h*er*^M3iO3GS&Do^qSOQ~c`ywd7j^|BIo#FXL5X{2lV2Oe;7aZEKwKvs zZp+*fN$qqaTqhq+Pu_l)+UW#iC#rM#Q#$|k8Obl5es+7p_R{Xs`KIyj#Q(8wqC)p& zde$!{C0{j!sQIbQe`2qf@5OFYS>Q3vK(Fl@MR(AH2BP(}Vdqb$E2_biX)O;n)bAiJ zbp*%ZvP(UDn())a@ChW1Bj27Gh6@-! zXhRLPHhA3O9MOH4)i@Zy_par}fIzk-l1n@KJC+aC{dbgtAXZF$G#8qzBcc;^#y-!! z5R+)$8upYEcmtKDA!oxo>uc$n^f?UV@5D7MgogArG*=uHe2_MvTmfkV>1vQRh~;{> za+@jn9n6I}%HTt{=dNSGT!!65Ngq0s_$@BVZL2#B+E>bDZs-to_^s@5KNO@2~+Ho|p|5*SI>YSO-LA-mIqm z_WZ2%{$xwC3z>=5da$?fNtc?l)rHP`&IT9sAHgi~q0ub5d4wTLZ*gL>Tj5+-iLvz$ zgff>~tAd>0Y4fMjOytEUt^@+TpNN246@k7sR`u9FuqvS@8>X18m+YgP_YBVIElJdH z%b4dZ8M5Tz4`O%AC-nRCo4ZRTQK@4e3rGGI-^fWr{PY+&fhZk+>(D}_MSMM(*F5mt z?>T%kL(me^p8bFxT>qrf>K3V?(Yru&udY%wNocPuE!S>5)0?m=TkKv zz_`U+jv4RA_{3a}R_Vw1$6QWS8NdX_T#kD)fC-JcoXT%gm39HPA!{R>exW-FQfPP1 ziEma@dGHKpoXB^{K?%+{R^fEg*^Hv{uO4Jl|257y`5zf11%@u}?E%c=7^gT|*Cw;h z3w_!IJ1HmYC#HCm#N7~VR~86P^VHf@WxtQLHpVAO++{`eV_wI|c3KeZWQ&t(li|F^ zKRGWBV0vO?doTn$1%*G&(eQEOpO{MVK|QXwR4@B6pJO;~&iRpEFqEE>Q66;T(ii!X zPI}8A7XR9{$*&XEsYb9mP^e2jxo>m%oG_H@3UEKK_Z`I2&KF{nzlpV{ecr-hE~VOcn(W3t*hTTD)&h!l$r-HD1yfjKRO~Es&J*@-q3^@q{ zusZtP3;>3@APVr{=Pv_19{fTSr1%AMN`kg`F>m^G)`AS{o%7a?`Z&*sczMq-X%fGUnhq`%l!Scv+M4C2~*#d9w(0ViXc7npYb%h~GBDrgM&Q1$dtuiLid0#N;h*8VQShh#Zh7!Xr3m!<19Y<-6TW zhUO$$dD-0>T4fneKDbMg26`#~sh;mkA19MNcR6aE6B$!G1kM zL%Hv@ZeBf_={NSF@YN*+jjqcBxNx4?d&a4`8K*B7ggYGn7mk0JxqP6}{@5D_f^Pfn+TVeVk6_z>LSw*8 z?U_=WMu|rsVig>UD)>0uT9Kn0=gfbsY(v;63Aqh=kYLj2lc$`Dq^UGOW2)t}lL5Gc zs)i|`C)$|>=*c;2=ur|KiroXdFSdAp)lp`{C2%-`jDk6>6}BPjzws{ZnCbJHu-5U< zg+VP;MO(l|QN^9e-jmRS9gpMP$WZ$0!h74lS4aDgKIt&h?d<(F-=Xtf>{%Cbi)zUTnqdE>Yd~Eq5fMX}?YsHnA!_&|IaD0X+pm#|wmC;>n%_r+@LdP$3{%%+aihdT; znw!;j{4BC{uL0xtN@sE1ElXo`BxKJCid1_l&29WD zVDjTw-u{eO@~h4K!Z1+X7gSQ1%$>td@@|CWaFXuoTI<{%c+OY@jzr1+61B3q&b+nI z+=a9AWLHG3m!W0xsc{asv|kf*_vWo{xR9Z#Gy&7PIGM_99`aMF6|@qgIk4Dh0%QirGc(#f6zGRy8li+Ui{;LVS;VKl2K{btL{IN zgI0giyDBGFdvs4vGjx`7s(O6-&T)$U z$@)q~r-L(7rf%&5Q#FeFr0AXgQe$3K3+uj7V&{_4h0ty47k?&3yvEaGjmEJ>;%4niBA}M_ z*ex5Zg7-P2Um`?*A#)2h^QaVEL(T5fBjCBY2x~1?HESrj%e|ybXr7*zUE&XW-%oal zU3SUF^k)O{+_niip)Z(uf#Cqrz$tOU&fAy^V@ROczLNRi3YE8*(H4xM_AzX-w7VFE z`)!_RX_$#5UMLb@E`?NN+?E^&Bs>7|_r=F6J9;}i*aO;`bFC7&rFvo8y8AC)WqjXD zu=^Dvv7YoS=Bh#805XHI=aUs?9~6R;~3Eq9axw_|#EFte8_z%WA3~9L zguxfHgQYFL=Z2aib8l8p9G(lMMY^A8&ev!iXsVBJ9@}d2ynS5qNnyT*bv5SXdYaz3 za%X~^5bL84|2fnzJrhcrxX~=RP@`31-x>L`ucYQns)ph}z}HFz$j{zI$zA8;rxcG3 zD2Prvgr?N^;{^?;ezbjd@o#*sY})H&^>JkH&L8W)wXeURd!5>Pw+})ounvSTUoR(B z9I3Q%oqTRXh!P`P&AzswERj=^Bl}A2yhbw-Ga`*uVGp^r_RY&(+x(cNaXX{mkEzwA zgK#rrquqA~%)e)jcKcu0(`sGS;yT%8EN6@O2FL9@-2W>qqyghG8hp}vEp;LCdhzd$ z(sXUl$e%l-EF$l>Is4haMA#Z3o&16kLOzG8v14???;{wFilepE_O8{L-C*6%Ti>fY zVTv6?t)GNYinj%Bl#tT`e+mnS83VlXS|^W3wa*Jj&197Rt%P*0Us5&475>J@FTA#r5QGd**s|bVX)OC!K8%mPg;Q1CmVptLwxHC=IUlsd((zSi|4u z)RM=rNN3-?n z^MeJU0}ndkqS!G^a_OH03z$s3p&?^=tdMM4_1>V+%#6UOj>=wjcyTR|!**J$oZMNn zy@%_E_14XqqK+3%1$)P03Qnx`VrsZz0HRGO!ya6BP;vrn{_BR8qF z&iNeoXKj?iP9k}Y4*f5-hHZpIRGA&fMQ+%Ht!?i_olL}zf$#bi*GKO7hvG(0wVA=f zN7&%LIoiuy`tiWpAqSq-#eWexeM9wVJ@QuMmlHN_BZE-5@MW$1ppR`q{GYADx{tGY zcLk#nLP{~4K?H6i)S)7TmZ`kYVf?4H$6jHbvPI?AUUX$tz z!LHhq%0LuW;U;p|77;HO<159xQ9jBt$8KP_xc%JSUJAxk>;-DlYi2pZ?z)NmzKS@{ zR4hsK2RYYGiP}FiFgJL#*|HVG`mGerM&?jOheTRax4@g|iG78&Dho3n?O>b^+;P2u zAk9>4OXT?FeFxSDsM#YroEye*mV4SiCmjZ-QE}zoMdz1prArcN^A~IVV%8^`1f^&< zV&Chy#h)Q-nxz6-t(fF%-s@75)+XRMXRWga^Z3VhpIXBk9Mj&|Qk)-ouyMucbePCp z69k;8*dtOx(S)^?{oV^m2d_37w?JUOS6P6IeJ@6;hsOw=_n7DecHV8m@1|7Jtivim!+c20)PQjc`C_}- z>kZ?viV&ZrhNs-P*bjAW>DXlU;F{g5li9H!xJdNDwc(YJoY)UyB${19__G3h><4NR z^KRX{>Vll|_nIUsHo`mUf`@M31142Az79b&jc+j#vecS(7#ZTxyc|S}AO|^Ma1F zZ0Y?_pRL$(*;i`G?N5MC(}U`Wsz{R`2{u>kx#-*T*C(yqv_;yJ(Ms1?H)SaXa3P8T zJe*q=itVw(1qSvH&Ra2(Vu=*D~o=CNL5bNzD9k2R$+9JqW*B54> z`q0iQbuNkDi)d(bMd7eofi?$EVzneOvmhf%3S1DOm3Fw`_h~VM3R}e%53+%Zuntc3 z9uiq)8g_A|1nb(Dkets^fZ8>N(IT%9bMp)FZgvvE z`l*;5e(p_nG$H6|IRsBqU~#khGWaRGl;HUEDWtS7KWGl5d9gEBeC)4q9uuYln`E0&|&o{IXggObSDFI+QCwhTQ(=04@SG8rxZ?Nm)riJ z=|<;p{o}RN*_GRBMENi$6I+CgwAT%yjm?dZW+Q`N^WTDMc9vYSW(yAA>*TDK>^Rza zr;M|8_73u~goko9{6NvpD2tK!l)e-&15NF9e^P+gQw}FpRuYz_mNwj!?MYOvBTu*8 z1_mNh)?3=60u^o~o(`Kd(Lr?cLs0fW&sCI2&njE;j+&-z1iNy+8)tJ}+}p!~xoIXj zyN+<+URIDpQqdumRJQTc$Dh6t*4m1(#`o^x>}}4@TuUX6?WJPu@V##U^^2|L1^Dt! z783K)W=J3jvXtco2FY2i!@6H~ix-N7W1l-eV44UofdC*Ew|E(EVJTr)itzcqjq*)u zplvDZ(iLu=VQ7RjYN45k2-?_J2lbg|cv6XhW`OM=!hIbC9JR1QWYq){U@75Z#7_Ay zJMNx|o}K3yDu=UL=BEBKQ++^wXSFQAq_S7+mmI6{h`Q%g^Zv&F58GVR#3e7FDxP6F z6uK+KP@A(3ma?;6a~=j)B~+HiQ}WLL=jQoW7t#GrW7>MMBd0eFCpJC0Q%q?#8;(n( zf2S3w>Dd{}kq!E(W=j1TbJ+{-_ia^sL<_&+oz3vQDmWdDfwe#qee1>6r;r8yhSB4C zHQsWDLJ4&CM*=q(m2;sD6bJ@G&&}JZ!|4I8F*V*Np zby`&;dU~MQXi9Gbt|=W!Vt)B|&}!s^C|fpDr3l-xHKEGR;JF;TBR@J2E&rf8YyEuu zM&Onp7~=zPz!*1eEr;X;Zn2QcDzmCVhd&N8L3BY=eRd4MrB}cI>ChK;xbjV|IqDUS zlrs+r77=BTc~NB8GqRt2=o5&OKvOlO6tyN*F#)asJsNSqGFh87eO=ZM(Ii2xDe$N( z=6ljdu}n%2D7nSkFHQtQcER+AdI&$ zV>Nv4nH}%T3cmInY*4li^TfMSGST8g1183H^1DUqob+u0BEy>FeS3tA*KIFwed&Bi zW-DWtj<0_4n6b}#pblZq>?hZpmfc0|)<9(4tqXq!nLE982}~<3tJ0D%FQ05njm~3x z5_4LHIuQ}}$H%s*oy+?UgRr$hWij8Zq4IdPj)qBHSfKNf;jhGRF5eWQ(=*?BIcR z4k+WeTDo@LVy@$fUvL3?&XbdKK*ll~B8O<8V9mAv`^2+9Uy{l7I-U3&0`{FOta#@E*Ny%V*qEv3+lzE`#ARbWTG-J4g? z+&QX-k=AESuLBb-JLcQ9eH?I8v?oOEq}odlk|qMhL*8rqM6*s!sIhC@Dpu~`%c*%S z`7cjO*2T+U<4NpSngF|wFL=i&X>5udktHC~N2ihrVhvF9&EF1sd~`E#?MdL&(`b$= zmlfR$vg1AiOwh)tS7II9&EQUyS%s4>I<(2x)&U$gU%i{jnu0gg+gZ)Fzx5I9V1GmK zvVA|N?2Nk5DcBw7Xje6Lo!8ip*VZfAv&nag%yg~k^1;mpQ`&9Jw+5_Z)ZwJsarE@1 zKP>7=Vo^`*-uS@yO6;DQyq^<666E-@R~r7%xM&c+R5@ByO?}}o-c+@ninal?Q5X6w zy?y9;NN)%J$o)OycO9@)xVCDEGnn@Gdx2T4KCmNwb;x#IJi*kLU(qoO+rKrKQP{N- z2$yO-^$3g9TK3`%kJu_fPk9R53XV@2Kx#Fmkhin!!KIeu#-C)QR;biecmzgra!FE7 zQc-IXTq8yk`rM12{64dWyxf$uYH2tZYi=_KcGQE6yR{gL>y3vr<<)+|x9?x4L`g!( zHniFIEAG)-+N|RqushCmqh_rANS$Tr@3t6K-nr`yhs>l^*P`NnyWS2z z@jd_vmCNHdYHN9bHvbMNmb4U+Epcq=;fY(9321Yq@tP5*ywN88WCbkz+cUKJLB3>B z$?t4UV{>29Jaue5bq_*{Sw$Kwqr`h7B@n|jay8$UVBy8jM$He1 z#zm#S%hQksHeYy%+Y)Z_VOH`mufwp+tw5m>NvZJH`DlxStqVnE1+{Hxi&mW-Ln8;S zA6dA=$+aw8>-ix`DJ|DSYtC>_8|Zo+uGM(RLkj(;T;S`s>{w?cs_DTh61AMv6^18_ z1QnHQJR}1cI{-84dS55a%26uM#>nB4L)H&?yMprJ#q#QNkBmg+0yZREktR*iN8$Nn zIVt-fTVUIh$a8pjk#v@Twyct%Knku9H@6A(-=VcrY5gtWwT|36SkZP=<7)BodIHBzfX8;JzQ^lfG9ZuN?ZAcC8dkp@0$n- zcT`g?)Mby>OnOL5x)#0q{m0W~U{{ahrepKy^#ewwqE}>4P~rUb&4)qSfSDU3SDK z707(JI&}Tu+U>BnW7Tf&Gv~UUn($F*tAp3fVQ;tWk&i*NhY1wQ-JJdSuSV71^fX~q zr`*UKz_d)Xw3+F>TkfFOw0ko^4~FE?~n+iBIscOsctbJ z+1eg6R8Z~^I|%YTwskYZWV@LbYYAN_*P^w<9G6f{>q=%1enGi;8 zT20(XwxB0#gC7k}yL;~-P!3U`c)b?zI3syjP+o1cgBbiOlJxudN>N>b0Z8lv9Cnx7 zN5-meD8Gj|f%6f_R0GWLW`vJWx*DDXkYl7M5s*VL1jQsuoy&j{PoW8j4Y-3JJ&?}> zfWkTIK>IBK1Y9~n!ZWwbdbIDb!0i!W<9f-_a|I7iy{|=EKu*7GQH8QBen?>;N#K^@ z5qcWbmJm_*fMwcL$dL1b%zFt%k5Ki|AD8m$PN`1-WUZ&B0kPpXqc%53 zj*%XdVxV<$jJt?IdvEXq6wV`*1t6>zQ}kH28rVh*A|C-6{RdFv%NH_fhQy}(g8+7v z(5?H?6w2ZLO`|s7i6F0qBGKUVygJAhxnXfR=~OTQl&^~dhQ0xYT5>?~VZY@t0@_#v zqGDUtQ;Hg3zp)gO0Fr6xbeWRfO%NXkSo=5KqWUo0oudQuLy%f^|d8{fV2_+wa|qQZ02Sy6teJan`9s%Q{}@l z641taGLXfV5fJa1D9HH?a$4|!+i;Nc{gV6Gn4Hb8Ed2cmkad3m>4`W8fMi^uGQy;n zZev^WB@!}I;_foSk_ukSIT~(X#^gf3X6m}qv@J^2;YYV>hi)85pz~h;Miu@)fZH~M zEMd^6G7eA$A4;XKTh|)?PYhHi)|WeM;XDW5>{~yTIm)aswrw4}{x61a&`3)evTa4X zey6~-xUGKN0bdlLfQJt5dkdo0Hrq2RhHPbBrMK~cqTBcg+N(cgcQnE^fhTZC*Zs*UPASB~@qv72Nh%9Zmn!Pu?={8fqEn8$GS^$(RhoX*ap z04e4GbnddFBt`jvWvfeWKejX)6#f^(aM|WHwLIt_a*N;dSIDtgB!A3q+?}l_xwNf) z#HSs-EtBCDzG9o-7}XgyFZe^guO-IqL&}AAl&;NPG3HIi+VD)=nv)SuPo_T7(yqN$9DOASuo>Y!TZ=#w;x8eS;NFne$W{N57S5~wf7 zvth$K=(k@4UH(nuQeXu96I4@xe?m?A1kaGUWCIOT!Da6P*sg`vz{00kD!7x2$%Sr< zc{0sAmBz~jh3DSXYxcyOnx;1+3Pn=T>4&gFi4@axTb@EO7Ib-9n%Yvcm}~&p|=ddD<8^dM$>@aH}@4Hdego1&yuYRoSayIFUSN4Gv3qnMOUD|47KY7yr2DP;EqKU4wn>=u_WUPd;eg-%GsqwD z21k3qW?c|5uhKO97>8-IM*d0qoMaIHM)l!^G3y zPv~0U**amD@Mjph+KYE=ymBNMy3X}JceTkf`=VTk_FZ1Egr6IH5#yBZBw~Y?V15V* zBvhhcUIKEWqpj5|dG7}2OwLfl-M7J+pOa8&0;8Qq4T$-q)g)_NP5mGa&iru6-E7Os zbGtZ2aPiL=>y+zq#s&|=y-u}twJE)DcVcvoC>mSLR1-H$Fe@zOX!n=*&7713U{y6!D3;9M`Iyeopsl20hKdXb`tc@p4|z z0v&`r#}>;3U-Y9(Jbn8__^=WfAcw?&edb42Gm*noEEwkkr}#M+m;(DF#Tx5DvBr+n z#@JcP`awg3aDVOh32hs(RG$!gSmy_BWR2^rAI_!W1o2t%MEUFKbVP>hnTJHF>lycn z{5KY>FsVw5shFtOiw%AWdXSqa`F1sBU`?u&9M2Z~3V4lSS)6=RrmWtp4|wg^2fQW@ zFVnEJ&?5Z=sqB5gxDT_1#m~rfV>RpP5rc`Ji-LB7>}i z3QmzMKAs(5cezT6_h*L33~tLCKDY4{D3CK{9LR22PtKhM*67aHz#5&5q$tomuy*(O z0vlIGTGk2?Q7Ar+W75zo47dMPM-6Ny=i@{08sBxEre?Vfy0q0(gP|~1MeolOTC&P2Jpk}aix!wr069waC_#p! zQs|R3bS<8OShNd4L3{@Bg(3~! z-M_=#Jz)$Gm7cpCuW=|X_0hC87F>7KWNQE`TMDK6b76mAr`u$R7pOWbbY3T`0QtM5d4m|A5pWfW93R~Y_ zDb(K1rPCh;;wOx8w)b4(S%{v7dDvuE@pEN00!e;%;Z^vJz21*Wq06tQ-W7~bp|rH;i+`NpZJ z>Nk0+F!}KckP5%SyT9o+xv2y+=D>o8GXR9db1+NWWiWGtrCcWr~leC^|~n1-Qu_$#%XzL0!a z@bV9aLJ^|L+t5UYTIgd%4Fg>B-ED{*I|=%&r9DZv$>2@<6l7uV<>w~R_Car)z}+PF zYIf4`bm!c)lIcQQ-H;Sm@Dh*w_jAPICcS7CEar}H#yse#N4BoH93=3c3j3OMn-t%` zHiT+7Kc^LrA2hAL{`=|U1w;tr?a|_hUd(8*+?qN~pKxyU*MMh3hW4FO&jj{+%4r>lT;lw85A6(1Z)3Ufx{YArC5RP11qid9U*2#Q1@; zQ#AZS5};r)BpDQ#&H94^k+pe0rFsTxjShDfpH6mk21p1NLQ%KGro1#!_*p13mxclU zCzRPz1C9Tw-!OGA1OCB;54di^KcpC6ey0t}?lwN^%9_=G`sArMo)X*?L-~nWnpI~> zG-gOWQyJg{rzP7v84_#g2dK;1L<{6)-ljBl_05PF>aLjO zRe=G}xEZRB<(W+0H|umdFt=*qp zphJSb5-4x39~{1tC_k(a4ZQ&jv)rkOUSQN2RylRhDJmRJPF;;8h#y=lt4up|jbQ z!Ka||AqxM#HCv|U21E7qp~9tMQj+r*ayI$qUg4-cP92>^?YM5{kxL&k;*vV?()p<)*7 zqM$a~5Z*aMRy^qr6!41ilPb@O88_5G-|R&HF5Ba z)Fg{a3DmQN66TeD&Xq=3-#r42y6pM)P*nZG{3(Hc&h;xMBl-jy4cQ>oA~;7{l9)FX z)xR*$$D1zk!=La)#wJ=w@;)}*YwModE88uyoU7?e@M5N0Q?}!yMmXoLstp-G%(>qv z-YwzE5MBTeLg6R+BsgTnP#X)GeCh+7M~&hgXIvQ~{}t`^N$^*RqE0Qk*4h$uFUd;z zu{23^p*NZ1rA5-SKKo9>FQ=n)eh+ZcB5YRiaHn*X7#WI!h+AI0-_J=u!2S6qL020n zA(xG|NM6a?Ja}!ou{lsX$16{t`HG<~E-DzS+A+ktCjJUiMrnX*!I={0GNoRK*ocbe z=rulqi)0KsPwU`w0sKye1Po)7c-XJ>+h}G`LcbU*#B`PO0~2pNu?NQJe;PoS_803=Qi(OO z023j3R?iiXE1}`d@;dk{)sW$FVuKePdM|-mcIGBE#%O%lp~}hZ>y*E_;0I)qNNv~a z4&dk6bF%2Zew$+id*RM(3Wj+;tBmHag|oLY28bRdiXi5h$1`ld7M7wZqLTHarihB> zj$fnFav{yc@Q=yJ%xiSOvAXcQI#~jZ6JzeTXyTJ#@D)h|NB>t~w;eYH9zQ~Y)64J5 z8!<8uXnLYIq4DF_nEiMk0Z*GX5fsT8r#6kEG$sYib)ab%dygorjM1>AdmV&H35kP7 z;M_xU;pIu@`3oFCI!4$L7Yc6*EyI*f!u?F9NZFico`E94ysj)teF8libi6##S>vCi zP!~jkTj7s3pN6DXzD}}97#WkHHjKOr=Q?Z_QyVI*4e^~ls{J*I zpy3wLbriMo2QS5d{1({P145KS-(CQRt^9J-yI4c*H?ph+ocvl_we|l60S6HCCuRXH@K*=_28OPxl(<*_R1fVvBK;wyM3gW)FA-%CE?? z)W)geuE)OyZzy8|b)TCVyHo-zlXLzP6SC0~w*YuQ!YqI#l-$l=2y;f=VDg3<`8&ti zBJ`z9hN$e?d%tpk*CXAr-IGPX#$0R@EOK)7CX5QMcqJ!+SEV#lz_Xp(zT}g*J9ySn z4wWDDm#UR}%tRL7Ilk&E+nVA+W~6N_NU=!GjsM9}epWuXF>@kwgd>QfoJT&*U&-8v zW1D82vz${N?JwxRBl&h`;t$0fCO|QV-A`E1%CIe5pXD>q7TF<~-)3iuf0RJ&nc}Bt zex5yv?+yF?vHV$O@K~j1RaZ(2t}tzg`_(1dmk#?JuLu5LONv&w^%cT>}{QKq-wSts7-Pn+c(bn*vU35}^2KZi$FOPU~Wi%r7hf^YB0 zEx(`9+$-0#YpsuubXh)%cVwdzqGDU|3Qwbs)MZSOch)lYx(Ggn1doLerFiCCje9`oRgVR^Byro(9&uDp}5_GVo~Uq)9% zN#P>*>(NPcK>-QY_goh-EZ<9(u0XK*ofUB7nw)SF@rO@Q^*!SKRR zS<`$c-6WtMTbK1>OE6f-AGmTO{YCj)6#e13E=>M+GsCzvd(4?*sl445F1-gn;BtJW zC>-ITMh|NVPH+(+D|UPGa)L+Xg4bK0KeQGE_Bq77dk2jiy9$GQ2sWhEG0G}I0R6&9 zssk5N=$K%I6`&DoF~uGHmosZJ-!zs#=QDo~7)aU2AB&%s{4Q1~#y1x}f1`s>n0=fc zx|iN~<3d-<=p++PJMme2*!=m)aFuSV`N?Q-RIcJSu1RRrzR=}7ZxfBcv*$4JsAf%Q zJXgz!vDWvd*T2P?!vIxHYP@=(%V<6?n)W(JPQle|2lD6co@iFD1P^+BYm^=ENf$IX z(ivl3;zZ|sp%O@7B3Z@(Lj(_f>_mU>M;bA2(GlPhaC-A<2e;t7Mh7!5r&lzstY}1t z^R)OS6?4?ot}2 z-ptNY5~i*m4>fOnY#&3?-46<4xXw_1)s&0HDDgoq(xFYm6EWg$fSsds zt(=w0ZSnnkrc`#ufR1>#GN2>LI)&YOm8biYlQam&`ZJifxp0ElEagRIjW}42Yv!E7 zJh}UYE_hK3o~!3@mBZmZ8ktvP%THIGOEvwpUMgh%qSGQ?8f$R|uiuzBkuxG6#Bo2G zp$ckbZ=FAXwuC3ntq~8)cJfSJNw7GJ=lRJcAZa8r`&|6FGME<8m4+?}0tt#zXYWp! z6fo*f=-@D2@ZJ>N=PE;-WQo+WfW$`$z^#NDyx8j-1~2xaY!lvby}+P9y#nvc6Q&Xb zFUL<&UfKt<+eU*g8z|FoF=GQexP!rqJ^nT5NNP2)`mZLK38U^~vld9|zb}qi!`hMa zKlfftpRL)uaM;mu5;7n%2cHk`8(cj9g>zTXAzN!wnRETjkUz(!5CZ-qYYln4&c+zw zB;dZry53fxb#i!&I$&>KXO*-4+(0@EWi@L&>5C}3q4$kmt^EXgwD@wrk^Q9eIMVfx zYJ8;U$%)aQM*0)tais2_kiQK_yBl4|6Iylm6yTxXbCNxJq7?Q5p~?{dSm*Gs!U0> z)qMGCs9K3qpQE_>m%Sb_?KWuL#4@#QJS>d}`ShXhXys%ZorZi7_GXIIe7r&zloz=e zrL!^VawPC-Zy>F9@NY-oUgym5;))im=qN#}rf!o#lXxe5URa3sFCIc->ihb1h*1(B z|5xU|(>u!-29rX|C(}WKT7-KAn|B0+k5TV@*A&+20)A3F{nr%a9=@%I^tB!L`2V$4 zU(5Kskan;szo(+#HVt#l361>u_5V8l7cPaG?|Jm?ztP@YAS*;}*gAO(3IBRear_U+ z2}LYg5lhQ<2uOz`-oC$!s@yBW8jCr|r>hF;E*JpvgRp>P0u&7~MUfI{7v8cY5%6yL8WH)8OO-2VL7%*B@75+0qaP{kh=0w8(jML&H%TS>aCC z<3h8ewGVs02H1!bZys+n2~R$qa+o*xmDA$xcKW{)s*Uo84)no!IlLG$dhs^n>2evP z)ZZcdZ|gU+gk5s>A8P4F9)sJWKA*qSn{5@q=O6Poa?4W4VHuqb+Use%XBm0(OyuOk zAkWNkyP3@C~Pa*%10-WYaCJ?8N% z30sR$SVBiDM=l!fna^te(KyPeWj*S_VKBpxaLF|h5<$;rsf$w>d~qS#M^fS&=!uLqyC&Kvy6J}TAm z<4QZ3H?ch05g(yG2QuK3;C;P{z_v?xdo~AIW$}jiH(!=s52}&2m z&c+Aaio3}1nw++cD;@KGv}rqMl`oTcN)Y+% zG8d*J(WuUJ!7=Ij)qJIV`l-EVlb`S1?&P!2molNUC6tU6yf14^4(|m!?(xTJ=Z7<} z^m1m*Cfzmf_N0fSurzXY1~a;eQhKAhaaK}qp_mra5Ax=-EQt+?>@zsDb@`+MbE8CL z`Q!zTc^~8x-_AL~#C$CMy2Vh?00V;yxgt0J$_BEhTQ`wSsu!y8>8|>cQGlyxyw9+M zC#wl}?x+y;8CHYI_QSZ--oeL4bsnPK+Q=tfoyC9*hZBe1lrHmBaod=8-j$jd&9hL8 zwGR%SUrb!Bdxey^5Z*b*Mgc+D1uRyMi2KIZboT@V_PQ_3>K|qQn9xng4r}j^S-1`o z?{#B%?lT*ATkCvK$#9ebZ6U56N)K0InO7!DT}1nuxP7>2mCfp}cJHOKv^eq2YBY?S z#HbdPxOa90ZB}3Oup%}kh}pFZS#rs%adUAocrO6L-l9EvWO;>*Ip@S;EMyAyAC%E| z+`)6_n)qH7ON$5JEGKA)Xw2%2gJ%#p=l2TvaB+Ckofy@*iT0i$f4Gq0#|9F((MjEk{-rl`3^(g*J5MT53TaWxTN0fR9}pTDy*%7ellLH zS^XOcmrGPCK~Ot>ENks+#Qmr`3uUa zp#vH=Z<9Dl!YG$Dra0dg?b`<8qov^PJI@Glp%&(k3&FDS<@-&qw2eV>6E3)=wPJId zkF4@FxfpJGq*YoligeDsR33V3@t{qqlK;Puw09or z614m=6KHv*Img3et9&jl4y0>ZEtYTl?$QcH<2s&m>u^c!9#>zagDSus0U1cc4B%YR z{K<%r{TY!6Z|Zfv|5P8Y`f!QxSk@b>!i#U^Ce+|cd_{W|fJ)PtBu=_vlsmZxrJh0+ zDxc)$_Sa@QdzZAIPt0J9U+|vQ={hCTz-AmnQL?!je2Ir>r&?kamTyH$4a!+B^%ZL2 z{p40&e@#Y-lW5;QcOcL>%THHz_pmHsLC*`4VC}TtMfvppB0b$PT|9}kSbAG2eW65nF! zn_;&>RTKFs5f3p_Kbf9Sx``_=C{*D$7=xJUOY#cljw(H7deI1hz4i<3DcVS8rH1s#(fCr+@N_e+x_4 zZEz9WfHsbqFpyWC^V90-*Nx%md9RyHC-oobeqAu!<~b4zvCL@}cTE=gEbkg~hZK~& z676D8-oQIOkevJurVXjYw+!(ffMZb&lzi63Vs3T~19_#4+0aBRmRrsu*~B#j>+CAp zCtXB{VgXZz1@qNK)q$^I#<=Nne^fVN9861)?`1!86E=9je38trH>evO3Pb+3M69G2!0>=)3Mr_b{G-xufF!z*;I`;_G7!~8gUbYr{1Qp3Cb=idB2l1m$-uKN*Yf zJ#Y>xE=Yy_T&~jgTVVO>MWdMns9Oy?Ox^%=VA>6f~NN{ zyKB;IP2qah7;w#vlDYv^xCrzPb5ZISl(9h1+|nF;3MlMLMx8m0bqA{@=E!W4-}>JXF|dz?~c&xY%2J|$}N7niT*Vf zE)iw(PbR7q)kvVI#yRjfTVA#dtg%2hz#99C+l7n2!93Y`al%yoqWLUmVpJkKOKQs< zh$Ef)Z?J+Smw1VGno`EMl^Gb{Kh5in%Nl{8MZ09dya5?E`((`Bh<9$VF^%uSu-?55 zc{0k%1+=At?~&hxiM#@b6B}iCzXQ6=;9K(Z(G`D1%Fe(R3=_<>{s*u#2m(6;dJq3a znFZh!sMDpJAfopzrt2HG5>S=mT%XK3j-JLGFi1MW!Ac;t1`zjeoC2~)rIU(-GHMvh zn{l{E7<^Y@-Jqv%90EA*bOJ)=n4_o$A4N69L-GN~JwP?M_@MwXqOdggv0R0i>;_fO zRlVps#1_{70q>-fw`lhuPz}~!}ljY^R8?{^~QDM-hjy&GX(nz zR0Z|HBE$KN!S@TS8$#-zOkzSP%l{m8;-o%8z%wR)ZNSXa)TBGtKwdt>5!o}LoA?o? z59Wq4zWjcFH84L%sp&cB#eIf^j;glvliw?GILqtx#dPI?y#)szaNT{&?4q&wEsIYk zWvWRf?xJ0ciIbriH3G!L(%6I>D1~{33yT3#nYAWgP#>xd9&zOR)ujBQY{KXpnEc8o zRX7&xkYygCQ9hq7DC_-nbQxHG`yCI%ujc!3A(S@}H^2@g0j$4QxmDvSL;dFl2N>!q z;a~?Nu;|Ur%3Iq9R{NBpf2;k}gp0T6ocnb4kAAQns*)ZCLtcF^JqlZ3t7?@W&PD5O zyJ%D=Dca%imFAe`RK;8o*Kh<{i`v1q%SI0%Ud=IPiO06slN+>KT z4N?+HcdOKjuyo2Uf?!>x7Far@ky20*DG?Nv1r`<%5akkrN?I6zf!DbAcZTo#dH*^4 z)SNkU=JY%}PYDl%G#axgis{!pXE|aTA1WWb~@9^$pryprhQ5*C@L!|-8fnzCct%IWv8|oW?W(ROmXdeN zI*Qce(W4ZXa~I zs;ib0AzqKu>1Z?-)urTzL4J2@NusNdEl~)QkBYD*E-M*(+MXJQ@I11EXGWEXIZa5{Q%xW=Ip5> zwbPGt?q;w=q#ps6CI+oxc?5We!CFazwbH;wCDcMZomrN7fIjm9%r_+u&PkHJA>Tnu zJ2jzqb*FjJ@4`2jPZpRQ{oC)_+&J({#yFzrNbq-CorvNiAeN?c2cWy6l+JKx2n%x} zmuk_lRwk_q0(wo^XZ5c?Z75|nC$ZcrM*b}9R#~Q~5M|kAX`APa4@t65E3KJ}`Vq7i zs|*T|(wqQVOZNw@m5*`$YU|e#4+hL4tJ=4^`zS74kWG1!>Dj+MrWqNUQ1F_fjaQLr ztSh<&Mz^n{0vVbJ6i1wugY4tORpDYLSpY29rBZozN!YLO`1$i!w|V|^@J#>q2%pWy zRQ|h8r)+iR?8mjR3-;hRg-wt@KJ5ZZ+d)N2YnV3k9`^AF&IZ?ZJ#_~mEj5jQR%fG` ze34_?$4|1)1S~o)p9?qmrhMd*eZiu0iPya?v0P_08!%0-16xDUw;KmWx~C;$s2@e+ zUg&fuiiLnzbWqE)zA>TObr`v1Y2=bskV`IdPPeTE^A#l7y9#z!7tB|w9E3U!W{EaB z8;#_PcW0`6CHwTi(C~f+Lt{Ga03tMh9t=8euk(bhU;Vq7{|a7*6`a$l7OiszV^idy z=7ja-;5Z1z<{~mS$cjbQBdXmXX2bfbfl-f_20tW!8Aac2=Hps9HC8~hx2~CqS^Tih z#y#>y!4HlaSduj3Lzu2eYVUqv2d5GuIuuyFs{vSTN#+GsCx1gkL!478*K`Tu2!{Pu z9HGAzM;M|wLIxPkDFoKB@2%s6oz%23${HloW~_C^f|F?wZd1Z)ii+f(Tot~_jAXMg zROgN4(&M&E?8qm1_bjNVJxt{+bopxAwdVg_CPe z%|OmnI?LA?pLXL>bMZy?wCh~d7vP1k5w*f7mx9QLei7Kr7y*iRM*zi4vIubElAheX z{TL!6=X5&D+#oO5zhtm~yr*3b*qVY=fbBCx3Bsn+n%F(6ax|Wy0F<;V($`g8Cy{a(d#-6BFy+Yh$5WzZD0m{ zj3IhmiUZU;R2&~)zEZujoYESG z6VeaL1aiuX)xz~DPu?(p^>4?wnn1*jB!kxmT&JXBO;Bmdcx@1*=VizzV?gM*6#y}% zp}NSbIR-BnSdt2Znb?a2qX!9w8WIf4NF*3(AQ&>R%mg9ek}^amJ5IZ_9f6RU za1yrIDinJ!WBj3}zBsbu3MuAVS%!X33Q7(VfMPE3YGIfsPKbMwEr7+as1DTwefx1& zr}==)u0YXwtC+VXoFEYpL1>@|qT*^$amu==S+8mQ8?e{TU6!CEU?gUC>57?Uy2?St zz*b&Hk|G*>qRaQ{zV6U4@nX*PgN!GMy&^y~_9X;sDeGEDuTKNf&JgaXq0|T}1)Cso zm~)onj@U(f#X2bVbBXWHV2{eI)jZExM=SG*y@m+I)a|gE8rD|=BA@t!KzEuMSi0SK zuo=s4#^c&f-tuM+Nxk8saZ@_o>PWXiDoP{W?8hNyWCOC(3m{zMI_5NCTN?z5lKpH! zy`ie8gxP$VM5^vSnAV)ec{ggAu(WM;#wSS9v=mg^hXrK_8DK%xMv(<=Dz5gGWUv7{ zb}NI(ffqp;!m+e_X~L%|C_@lx?G4K*%h2hIL8`3`5pkjzh=!UnGDb~#NVQjxYM%jr zqT5*ewpgx-R((^Fo=x}+6ILSjT*jDaGp@c6DFy^5t^%J)bBBS?-h2$($%Mf?NQrFi zV15zB7fB70j2EJBnL6D{A5;%u7muY~;-b#V|CEuOGaA>x`dUIxGp`IXhuefu+pnV# z(z}84kV>#%JNB!MnCi@3DO$p9Ox=2$4*cmw_zU81jQ9wX~d6R$s`&a1M^# zPyopVH5qULUa(bEy}iL~&O$WDUPd(QTL8^#`iN#BM01xZ&^#}gHe;+S7MCUuYLYw! z**}!-)U=%D?b346c5ISSMsu>cx7##jx7n-2UOm8!eOdDsT<#U%GMxjsEN_Uotm<$& z?e+l?&`fJ5ZKwGIX(cH;PTW0FJQELo(Ci}i#K443_l}q=kQE+eOedO@gBk7F4Z@*@ zghNUv59zlv(r+Fphltt%M|K1{wH-~2y+}9-X)v7^(wfn0^&l)L2B|Vr(}P!hgnfCC zdf!3nJ?WGV6+Z_x^_&_zwF6GxER4fRy(Xe@uXMW2W8M~Xk`2wK5_?hA0=!6@U0+8w zu$qoX>g@^qP$${~KYaBVVGqlAT`O(Wj$#*lGS87vPL#goMf`evWWiG<4uckwzRLZS z*+sM(*T^9Wp%mdJN)bRTfOQAcE~g1+QI>g@woSE~yf94>fvSb*cgM%}1+7?%jvS=k zc1XS1LF(iqsvz2kQ~<=8vq-%`EL?Nu)sT97Gg0pUsTy*Ba3JB5JrBU4sC}vlDzc0` zWcI=|jRO#?Lz-MFTSpjNR|QsFvXGP6@2o$Xla;}u-_J`BkmyID1`-a_E#c^YhC&Sx z4oHKmpkM*U0tyyFavuBD_34+i(pkEgywS*QfJKT;BFQL>3c4q{f_Ei#nX5q#%L7Iq zif!p2Yo(wm1L-91>hAlv^Mbk+i_EkA+h6)pAwK#HH5{FDhsU+BRsAjhLV)xI-0QB# zb@h-6?t%P2ISJRw=g>GR7?=4BaAPLqW%gtAM-bIzbVM}>g`G~Bm6|HnM;_EWogJAZ zl#8Xc%0cRgh*s{jg; z6fQ(|Db-=)NlWYP6h^rI@`n$$h za}B>MoIEAl?b27!xeo2xfZ^_APfrDd%hGL%VT6>lf8$zza;Ry$xZ8b_(tS~YVk4LC zD2!f3x7kaeejZU9ll;2-xnOCK%!jGA6?#Xk(tX7N8 zn52(?+=DNNy6Q8;kDtvH9dpcwW1EGk#*VDdVK#fQ>`ewnd>&nkafa0q2BMp6w?y5# z7Nx%zz5B`I^Z3PK1rGe}qLzWaGqrQrHj4Lp+SH7%p8;jMv64f{YaNQ(ZPeZrf{N?y zqGpq^gNdwMsYuJhwx4d>H`{#LNRTJN4ETIck* zF_$kzq3L4JZLjrh7GBCH$OrY(zhRwH4w`kIW9-JQYzWfi*}rEC2ReVXlXA0mQa;fP z*|>rF0eP5=%P#rDt__uI!>;;$IfbjP4SrP0pR}X6m7ju2X~oL0Z;_jcQ{xF_-VJtv zyDznDt^mtmvL##WX_r!Wh{*rkzf1pdPT@|svN7J{tNbJlv(AfP-&c0vg`D$ux`kEA z2{lbazusgubSEaQxN$Li`7H`zr;Q+A26jU&Y~DFWxR|p!ubN0-q@-Q?mhz+qd>vWZ ztTUdWoYwfwlB{V~cN!d-tp@Sef05r`lPO2v6#w_^{r8h$&NXyfN!`>XCsA4YXwlrC zmnDObnZg4)%^5pJi)_pI+G^ROC8fq+^eAO}Nb}cAXCG0Lkh_$P;eSF>`p(X}|2s+L zaAklBe@cMLchZ07UvBDep3vaVZOE|$`(p$&NH5w;9T30Btb}=Hlvrgr8_ps;8mOe z+;)^J(rSq=|1T+AU2LD>HGt(op zh&s@Jx+z}uKCftB>*#utL%UxcLol~|f-W~ysy1lqcQKhalf}v&14BC8tg6CT`EJT_ z@1|Q+7!Pu8XP0v$(C*+Gav0Zfn1CGNI;SRce4Pt`Rr%#p*u8}Gxr6RybWC*g>9ylw zm8v9GzCfq?-Shz&Os_eoW38j6aY~e&n=CC#KHn}w_>GgWx^es$dAMMNN$?9#b2Lal*CL9Es_v$MnD|_3g(*vp0*j8s34avEYV+p3o*Bh)J*ar_>p;%ZeS$5 ze3k`!d6V6MY@sPY9#0jKb5o(+!Zj2!>=4kxOb#ywVB($yrF)_~ATR*rYrXKd)i& zF_`PcjMenHd+z!}n8^_m2uJ`Dkbrd^1f-Jg9n|lWsHj#YC321dVhQt%_~_QyOyj>N zm?YVxGz{1K^ttEmUELUyYw@(>IBWAYRbx6_FhyYN$Qm8lBVdGp6#`}wcUoifam@wC(OZii@_@<;4=_VU0Cvi`^hk(My5R`pBdyy6HH_t)VXu9(@wN`Oey z1-y;ild;7M>=lLha~vo0ZdEb38cy;kU3LztznZYLB!!uLLfV~#bs_XoFq#BYHzWEU zk22$`kPs=53{s-vF&9f7rI$XHCLZ+Y?7*a4EU}?VHHeijRNl>m7L9ADVgv&)yA-e4 z=H`IfT2)n5@J7V*pj+k`f=6%f+4Qb}X}Zj@reu7eOMS^6@zE+rwfHQMj|~2KeUNGh zJOHsIw=+BeQ)WV=Z2|e^J3M?E``8NXK@k)Sf$mW{A{6Z3AivW3SA_DmUrV$hM%_TJ3eiY?+n$QN^tEw*Z=Fnv2Co<;A5x?7=OlW~_ zH31>4sv7t1@^Fht^hGuJ@F+c2TnVp9#s|Foh@Lo3?Azl})LApjZv8wc-9h-DN*`*g z=G_dq_)pHPIggT;e<>pM{VXE&^?0}lbe~5%(9Z1KWuY2HZ%0qg979jOT#?jlwY;p6 z($2$uGkadcJc37Q53!oGzeBavZ|k{YS@hgvV%8P`F#|xrPK`&tv-MSsUF8=W!zZAl z^=as+IbXA(DyjHQ^T-~LxRO&#t}oDS_s(d&4dENJSXwV8NXHOeYTPaz_$qrk?^0_+cJJM1@mcu8MZ=l8aN3iR|&jb~ffUWD}? z^q8~pnQqJJeyoi;Ti+IXq|N-|1#>U050Sh>2s5=KF}f|bsHf7sZ-9VHGv{2BV_OYU zv!x#dSwp}G0Z_kdyheBjm-?IhBwfN@wGZ>VkAb0Mv?4>dpbLiXM{ETcy6s+-j#|bk zLh{_ZC3-jk)4F<+kqd#YfCJ`);xHbB9*lW}n37i@+;gh)7E^jzi*$rJFbl4bbBz~l zXku&@s2}!aooZO3@LtFIJrZ;(ZvU2-@)snP^)RVW2~QLRgkX|t%p&%FIXHaKL$L~w z*;fL%jJPlB1ORk$HX}H5fVU!PARe%qlf}6 z7eM_6buQ!xAOZI_$Z19Fz@0W`lv%@7MpDB`B_-u*Zva&YTm@i_gBvRd6yV;!-~ zNQ=MI){$&HGQnK*z+At|*kc}{q}1rk78*=80MJ~3?&koQHm7@di-0hmCY2BQATan3fhXTqI#+F~nELuJh5(?v4` zKn zW`~-MUUSrQ$sF(N)kXaTpf2X(N&g@H%=XS{7RU(V$=1^JkzfNg*k1B4usg=SqJwj?xZElVq_u=1*xt$F#Z6 z6Hf6V(A_oi&ZKzkjyY@k8IL*ps#g;!ksL{7Ske(WHwW5%1kTE(*RLngT6cGTYwIW! zY^Y=W!QBYp;^T9y7p4y+;NXG@3R3uI<@3||7qFPgXC#iK>gze)Me*O-V#|!*2a|aT zcPsD?O~&@6YeW!*Gaw38jaqyaS$o)4gVz<4O0Hu`vglABKr_vlp_n@llJE>9!Nj9? zAizArK*=irtOA{J6Lkny;aYN*HX`pJYKBiLbC>F$MYrxFa2Dt6K>H#b^zqa`N@wRQ z=?E1_#4`w51zS_Hwj^R60@i0B5z;P%p4>yrb_`Cn%sOuaFa>f&d)&(`C2kw1>=cfB z)6a+UHBYyvb z+yC6^!vaVL;m5Qw^h~rwzP;XVZff?z@MBoyDY3r)$msqRxQWVvDivT0Z8cDg3QS34|44S4ZH2}>KR~=O~_2=v* zPO|Pj?f6#P_#y_x!+6fDN}`{4F__GUTB#s#2u;K`HkjK!y`Yc~vb<}p3}4L^n=x9u?~y6U4rbd|EU3o@O)*kZ^TxV)~a1|=$b)i@rZ z_pYSRm3VZ~F>x+*vvT7{Sp6Eg_fsf>Q@_eqRGD8C@qL1yCu znT=pLq32F|SJ*Tie++UGh+y;6=NCwr1WM9Z|9b?4hLJp zT#Ui63GO0}F~5MJ83e*3ovN}m;;Hu$X=f3UzmPF8*|m59P*qz4OY|)fu&p9JXOi@i zS}^Wm{>xydP;N5;X2b|wi7zr!klloaKz7r09bPX&{9fZmW@vyh_vDJ&zC75Q^(}S<>%$K!O9n)`zLMYw;*XngD-tj*q?rIq&#{ zrDL6=sxkhgljU)xh-I12Q<%ntyY5KoKSOqMJ7IOf025945#-p^h=<^!cn?Z)!V)?6 zy1<1i&hC}W9h&h=PWQ0tC%26+dJ4ylHYG?Z9Jo9@#Gwo^#&M<5 zs}OYj&_Pks_E8ii@h9MJKr=$Fmhbv9Q9i5w2Re!?fP|*O%8VD#L z05&Fs3>j+(SvD#DoizP8ZUdwy0(1Q)Lo8jtPLRa0*)8WSfdet6f^nv zq67jy2w;(!O}7AkWTWCp$ht6?EK5h9RsiAxsMprH;R&ajYz<8)saHun zp#0-)}&EA3;K@3nUPW~5oeEwhAgw{F2pM-8_a76`~9P>0(evUeeo zX{WWB-GY^bpfemI4o7v(U5Z=Q%Dy`LxyRfv6I!YtW3KLMq(NYJi-EyRPJ$iDxVqtT zUc1{G&QJ&vno|eOp)}%&N+Y+x)$D&xqyE|*H`A2x%#Hrsqs$(BLo8&#a0ux;gr4yH zXmz%Bxal;c_#WV9JZVv2re^5Fi$u)zTMQPc2Y8eXpzhA0Ub5rw+?h76sxJSreM>M> zXsC$|0>h}^VR@XLh&$0p;?AAe?3_1ujOXX~A8TsIySf0Fat2_6DEo#04=&_A8`cyB zo_9J@0mz|;v|TL2mBdNQ(Bm=G@~)HcgqI25X-7CdjS!r6VwRd2&)HSI;>3P}@{`i1 znkSBdR8=|)AT=xKNtsM(D$kkX){9LMgkE}aH$X=$5OE+Fb{X4xamnfYi)v^{T$qGw z=JB%fxQuMZGaP1rUu@!~*F1W$$$~#K<`>=3Bf5}q#iX3qM?C8~jDTfT06rC!MZjPn zuytf!)etTHa20XQ3dgS57?$pjjv)%2B(WtK zwA}eI{y|72z_1WSCbW<_aQBH*xnXd#FCDy_SE!Y>B7Bz zCEoD^DZTOT@EI)e!gt>yHLgo8&s&k)pD>>FNf_~s@!P~3R!H+=*kd!@aNO(q&HIEG z*hpTg{j|OdbXG!NnKxcVKx81`%=tO%8#{GllXN8CE^3nOp7gHv`55huCLLAnF6~S6 zPPv=vPv`v1Ph}P8vQXp-7~jV$UiywFQslba^1KPj=m}$>ud9;kkoqUykn)#e*3nxm zy7X-W0wO!r9~h-v?Yrlln3qC`SNoZIhpqS}?B>3(0Kc54b8o-{YM&&J;{DDD%-QW% zVSWuDs{{va_Xs?tR5Ycrc~bAq*HfoPg0K9!8+Gvh*@FSUKVr*28uYLG|9k4JwYUG5 z>rTIyzD~&f+g!GX7AMnD8Og(@BIvbrovbxgEk(VXV3V2Rrk+_e?Z|_}bc~Zj8S80*Z+(M{;?-q3hFW>cUF%|V7876k8GlgEN8s5X zvDxtKMJgO7P6H*fJvGqLjxvkfFEV{>Qo7-i+_}pQsbmQ&`w~{6oaNfV#a+$|(*`=6 zdS`e`p7~@wiu29vE&M?KktXrd(U96Y)rER>@FyAVkf7PNNc>q~u*7>l$?U`;Wa892J!MY$Nt{4*rcDE%g%K(vVX{mSTCwtn@8B?*e1Zg&ijn_|H{y27c)6kHMR zU2dVo4-A?NfjTL3QFRIyc=sQSO=Fn(3pwQN91;&%?rO;j9Q-r1JtjA5NTNbk`-1eC z2Yg#^bx6%iDoai_HkIfyy6C^r6q)!;IO6Cy{ib50-2GU@+%@(%%NdJuqBHLrKF(3M zZ+5wwl6V@JEBra<%MjO|f7(i>AMj4YPMh+H!Ffe#*L;>T zQ)LCJn>nzzsf_5H*&MH5Up9{e#I%Ct_{j7xyCb~D=^^+{h5Jkp2Jy*kkwar&&opP< zS-wZP7`=>L;jhaH9l~OkeO825L5W!da}|c%!}b*>32>{!KSwzrig1o;P6c{F4xDBN zbb;QBBf#C1FQCL&W#Fzacdp2PMen}lvI^y{4!ILe#j&HLoxQi@4|XIndWV#irCkdQ z@|lAEdkgc1hqgCL@qzxP0kx4lpcegiKrLWHcd$8)vTy!#@)8#t3;LBLN;G{ee{gze zDB~~Y*Pod*k-=zxzF8(=$Z!a(&P7jPgG2-%Cd}D4$_;cR5RZ*k8;kFXA*=N&K*yzw zgdycm5<&$Aa~8^SzdEjzx$-(nZz@n@v&&pE*Hk;#TWxQD?w_`ARFI9$M^=ZIVmIA; zmHV{YINevVasU0;GNRM>HL1>q4@>eO4;KSL9{4pudK2G(Jix9cY%8oP*og}2kN0HT81^)7%%)U84IKa=(MdgA4o;n_^K%Zz~MA z8H+pFNA5ss>fX0EJo*3BNNaXhGTBnDX?YY>Q@5YP+riZZaW$#Y;V zJt+2W7s?Jt{62rpRW!h!FjZiHL+qV|4?b)kmEu#NP9JXEZ!v8N?41TFlhr9j^y&h= z={GxcIRwSR0?1A?jJRd6IXjWfNdW5rA5I3Fqb#X?A@|+4CE-H&jyIPwAxkdMNpdPt zfY`g1490@Kc%y};FevEH=L!O0*eJm#&mk;Xm~TR~5I>R`$pTvJtI!FX)5%c0bZOyW z)fF54J9N!Bv|BsKhp$bI-9tOleUB80Go2auh{Qo}5X52s@(oJj{Xwwmo7uy#&p&}r zK9GE<^VG$2M7NcXris|jxZaiYbYu!+^^4}<{Ri+D9itvwh}+WyS4)eCJA-I zhYb?TTr<~qb)L|rD=e2$@V9eCeg&Rk;q%-baeSPGKC+xkiT^T~09t=o8Dr6rw1CHnh53-ZW*AA! z7r+?+a}AZ9B1D411P<-{Cwv`;vLfgHiF zx!l+&N%52Sa$GO3xIZKb9n(foW8lkj3YwGiG`S#h*eGy?vt@flEu`v+v1mOJTTxXR zMPZ#0*2Elz6_F^kqydG}@@zt1D)%|dArlTk%3xE1klSBSV~lZnQmkV<(96kIo=P}% zuFF*7B%W&x!&Xiu76G z$_}u&tBDqOQLXDd)Err%Ha6Ogy(eK<3rVZwIa?@bsu@;QYD6Y(Jllpj$Y$|2Ag5IF zZeshTF6G4qarPS;kttQf>kZi&g2b}JRT5E-i4{-*fh9*+&9#=YTMrAuU@;V1uP>Ek`8RlA{h71^AOh!}EUk;B>Y>|Na| zqMpJWWU+Wlm2+ek@4=2%KI!n{eg!$>|5;vnhT7rLQNraUgZ|`S)P|UhWcW{%K~hziPSA}e3qB+m_OIdFV4yVi+pfU zR^ustCz&oeXH^xEC@hFZEiByu3rJ9`6vy;JPMflY?Zdp`vHBv6@~1jSt$6Bw7z`o( zygn)xv!dlXtZ`T!nl*Bw1sXMM9>=luh=9I%)vLA~sKcJZWUA6*%wJ}^@9*hjy-0@#WI@UJp`LF>NM!!$gdOXDi{uFSaIuyD zMWB#C0$(ZSddq_k{ex}A=Mw~R~|^PYFc&}k*|FgCgm>b5W%#?xtBeDA8p2A;|_7h zqG`)$Q_eTo?zmya@Fzre+Z31wADL_Q4KBA_ws3oL48AKuTL)Ry*mwf08Iw(a4k5ppBA;lMsliJX<}p{iP&)h^Na0yyBWNc*UjjkoCp0cit#tP?yu1vVQGG z*@Fej9@e=adsuMUsBFoaJ5iKywO-Vl3q1KED})|B&WPYV6p{}!GyWR~IC~7;kg3eyymFQfIBGuNZ`1^k9f^@oW?$ zoxTKa?b~m?4QRh03AY-RKRbOm!g9~`E-{F{Si&T;RP((&2 ztHHf>BPJanR-DvPazI2^*pF;=FYm6epIu3YKGAft);&(oTsi2^w!&P^;A1Z{ax_D= z(js-;TLV@`gaOvDy5_7t8vS~2!waENYu6w`OEKaw$*!aT{(%7}21EyhM%rB2<_r0v z$Y99<1(iP3zlB^LV6%_h33!$iBM70BVeuBi6*40-yb*!T@T2@mD)edCVwLe^?M&am z3qWSK1HKGhJ0sP1ez~N!Tn76|78>oUv7T(0k)kK~jg;86#1;V^?jO8iIHl1|Orf=1)7fZ$0kG58CK1ffRO-rX-d(( zRXoD4EmvbzS6Ie+sNs#y^x#mg`l_z7*FGCKjh!~TobNuiu4W8hyd0d{xwgyQIlw@+ zPr+}n_*)t0?Of@=$tY5n{pB+EF{?FpcM9C3X%FUVD7^Z%yRr818CYjVgwmgDIl&JJzT9)BKFPfrmYegY! zsz(Ws{yRbw{V2pQpyBEyI{}$>)boMRO`)Or)-&yoW5Met-!$@0%i6g?i<`+aMb`<*+B|MDx!M^S|)I6RO zc6|(-+(`4v?NvQYl+L?xg zLO0^&_Z#ME(4#xw?JbqHK<&%+11^P=H3(zI8Xl?daU8%_u9woGlMP*|k~WhKS>fr& zC;{g=RCWPx3#S|#V5V|IHYH$+&c|^fkv#Fz2=Tqp)p2=4Mf#|U=_i#DGcRZpx7`e+ z{KU&cNJa~%9ME*Gd=x;!^bZXQ(_`%2bjF{jw znB<2dK3n4Vcf>_>)^$qKX0$=&a~Tq}v$4esR?tw_Z2$>?flyr@5VEO{VDluC_4XLq@3x-4%u)8Y+BZE%M9L zbMy1oco^N@j*b$*cVT{E55jjTO9K5EU0g-N${`W459k3eCk;Q3zr`RX{nK9(cQxNyThWEOb{b0(v~ zap}Ld%zDQaB>DKGNMP$V=AIw&J0tz&lMx+%=B7pwE6R&@T9j6G)QT{u1fj zu0;blNegDxmA#n<%kpzNuz(@UWhezIn9CSIqP}=Mxelb8<4O~d(yDAoaJ|~uK%F~L zJbVvq{CQENfMFK}kfigFC6STG!rMI|XVrcVmS~pRK{4yehN8WU&1Bd`^_qgRnQr=7 zQ>$VgQI5JMm?rj2+EHLKk0{?wkR=fvLw1-n5uNRmV2ZUO;XhQDp+#y_CQSY%fu&QF zf9i@~c3U~Zl!ndwk&%t}$G3wRYKU|wBQXq{KQnEqY z6^VAcg-7~f?_0oEI==&ifIR~5$-MJu>d1X|?K&W+B4MXH%>Jb}izGx}1=R*o6l(~3 z+zy4!v&n%%YONU)jl?HDNfNCPc{H+SXXOf4qXfe3uV#v_4N$qYW&b|UG1ctm9KiC5 z!Gi{Qj?WVf@`qsrC}r3@$F#Zlzp1q^lRAnKIeQoIh@1=QvrPY6SLS23PVgXmfm)nv z*xrKtnSGIt$lI`AqTL^43szo>S-A&=j-33{W&X?z56gB2?-H6?xPK+3u* z@F8IzeG8q0p-*hDv%#q~IU0gJYwgBafa#sZZy zdFqe<*>VSFw3R}J?>TcM>_(q%kN9_8TY*p+PFZcBVwNVrA&bOQKu8vBu-1CyE|5ck zy?=lpyB&(MTY~O~q#kRJMzjmQ57HWt#|n;1v(!)RFrZPi|9=5YGAK%EG}7#lusAB zkpGTH4AxvgjFK~HQG-X4@|jm2(~%1@TD7_qf)GW(G7Q_Ty`&VV zSw)J$e4A*~d6vsA2a;>lqXJC$h7UZ{%2QXEp=dY9UwfQfK~rb5E9PN{CHJgp4gOp^ zH)n0+5@143sj38=LW{hZ5)F|w8*a9dVx9-Wr=6aZ%{Z2kYbkCyANJI zn~A75N-4)}1mwUjTYytF1>Rp9ov>6jHi`=9-A5~wo6!9GK%YFqChhr2@Yw$v7NCYz z)G7I(p)lc}u?gtZCq-MnD1Sz^XBKDs6omXZMkZ9tcFmA2Pg5jdeLMQ`k!I1fYRyT= za-&O)m@6ArdFMjpa>Yp%E@nyp+L)i-KM;qTXT?Mdk{SYJWdgN~Du~ZE6eqJa{k3{- zoskF?d6GE8qZ!G7LRpJtiCer2sZ3#qIF-y_A{UHp9a3T11W zXz{9APO{GE^df)}d2 z_dAhR26b0K_b()Yy;IqmN?KfzO75+sJpQR1O?j=y|E#n+!D|mU@&Jr>9_SjluzsSPy0gmHvs;I;-(qS(>a>hV;6eN zCiSPo;?EA2a3~yFkkoFRO*mI%axmcZ}eGXI@^6=9t`({{3iyEXV#fy0NS z*qm?W&)YtW!J#frzo|bC_xng}?mKle0}fA)kn@Y{WZvKohYMm4ijREEyHZ~6aN}$0 z-MM|&=VV_}gmROA_IZ9HIbV0^T2YqfNlTTot|h&ysAc>3sIsnRwz2C=-s_CWM=v-x zKi^+pf3SAq*9Y^C6L*IWeJxI}%}pmAw&=<~3DP*1m_(Oy>pJ|S+hl9SX+d2OEWGRlAPi5iPaKeqAZq)}8m zW3RaJe_h|MrXsvZAU*OY6?k2mb z(pLK3OX{ZGZM~Y7P0Mq4!+&kg)sYhRz38^swQ3d4VKE*+HukCxSULu-gKlH zlYz%yW-}ogi|$G%?{*U1-Re%X7sXkabM*fDca?m?Vzrwsjkoc~!-X#e21GMM2ivkJ zJ8~+LgErBAI7dagS90Y6~35}jbIY%kHkk0=lp36(7(W@wjFXZ+vSFSU$3V%D zJ2ifm}K~H-i@pHamhPgv#+1L zJI-FO;K##C>aT$jHFH!PvNbghyq*{m!)FS;la zkJS=50h{LT_j}74aux#EpnU7LBNeys` zR^a!*>VAji(z3zx=%zHrnY@_e4Kl08pMT4iT@CkmymydtCFaGpP$s1=<^_M~AmwJv z3)pRZ#p~lewaJ{7fRFdM>bpMCB>#TK3c%%X*R0`*|XJicUgo^V^4WGI>$szHHFmzroCGt?S+#mQ# zi`?d&eMSXxcT4xtI8rG>oMdsU+at>2GDFfDUz^J1Tw9(D5KKF}6JZ4`Er%jZ;vl;< zu40o@kJ5#+una5R$BSGfcjdozt{jkpmyD`~yeBzdi`Q|nSmwW9yTCd-)*IbGbN zrUKu+w)r5G-ket?V7sQ@Ob#<=|Ea>iIxy7wimeta!ErxD(@02V7nRK*o&RRMp_e3d zCpzy>a!Zo*qpYA6zYyo$fV8%(S5?q!EX-;Jb% z|Ce+~HS3-VMy4aa{vs$4p>AU==zrUXvyPrDtEnwN|oy1~mJeRoa z)bHp2QdRmocjfUXog2RPW1E}5X3BgI-aGTb;NEwKcMpCZVqvy@ zc(&cI;!K!I*SI$J*VkSDhOC>OYrQ>eM7wM!taISm()?Lx2lnxSMU}^Y@m*9^^(L;K8{668dEuoRN6W+|~u1MJ_u*J(L_Mm96#3i*k| zckh35mA?yoY})(ZpR9ZLo(uhMt9dgJ^=9myZbRM8KlO1@fv3}c>79L5`j@8`Gb-rX z%IV;*|Fw@*yjriRxH3{aGd?>P^Za$bTDZepO*>!E=ivW>Ewc1w99G|jL}-SO?0)wC zHw74@U&waiDSs57EPj(@2=syqMlgPKyE(x}L@jnm(|R`!mR zPN@Z66XzSj)_q**Z`1S7dTvnppsts7ZjSWa`GPI&)r)8N*+nx8t6L#qAUQ$G`l8DFlbN3l@DUbd0 zJu*3X=E8Hex|*900wW5;RX0~(C;!*tes}LJoa~7QNjD?Fvezs;bdhXP+wMeGGW-Gx9?E`Ekh?c1*iI!)KTLUZ$R~&?+=! z2Dz_xuT`J?9^Dyab*-V0nm<%+b@s}E?Zugm%C?%h=?QAlPrpBSvY%y&O{e?!Uw-4u z^8bbW)Gzxhx|wB!lw|1rw5{z{LdNu~!s1ztn>DNRol$2ai-Ils`*o&&KYA$Fx{X@$ z-xS_I;BmQzz{l6`HkOm_mpA(zip!mT6>({?NQrzPtFY$k-w@};+>g7O6C4$&Qlzn2 zKl**9y&#TS8hyaxRs7}i_}K0p!40ljVJZvi_kHfzUf~anjy@%tX6Aglr+Z;3=J%4j zn8v?LmAZ#2UPaqdKTHi=J)-&6YTD*LA)_Et{58ouS+};J8RyZ z2(#~0x_8@S#h@snk>=U>;^9;W^{tThR8@QE;}G5|KV!LI&e8RE-}eU#S%_Z|SC&pb zFcE0HUroy3&FuxP-LJLol@MR_hJURo)(Af`>NGO`F(^1^=R9vlM2+eHQS}x;bu_`E zFoX~+KyZiP?(V_e-QC?C5;WMs-GaNjySwYb-CYmxpYPsRf4x_=J1aHaJ3TYqGuu7W z%{dKygCfQ_I00u>QPiX#U-(4gmpufs zDG%OQ5WuGO)2ng(vpsfYdt{BL->rAW)0Z_i5&0R*o{L}g_SDe!gI{jo(1@RKMTXbd z**0jxY+{1g(e_0hl9r438J6O4+d_-uPuoJzBuQTfUuBi$maX`u-1B1QrF_~DCM7)E z8RRwYc4bOZ9rsvz~3wX3bWPPw8xj z19=9p)iKcuI7tlT&ov|RL;7}^eVtYO*e8ABnH_8UydHcAJIa5MUx>y`&FE1g&-ZUE z_)kAYlGu!5Ic}+Lt4F{Qj*B=UOTM4G&oblT^kuCP!N>aHHDT7jlt~G8>?_ebY{L?j z5*<7U!mOXmv%BFZ94ucP#>jEqP`7GnV9J+` zkGbwz=_M@v=@XV^nB+u3Br^Fh=eZ$?yhC7hMjVQ4W7dXIXUzP*RCeuf*qr5JKJ{J+ zfV-wRtJH2O);S)z$C33Y0`eR%>y&n@H7f^{pVwKOiyu359+z(I+*-O1eOv$u+C=6U zP7x-oGu~Fd%`bktu%44bGxF#SRbPef=As5d7fGM}io?1>tTe~k$FlHdDj9DcgFy#E z1F5WQoK^9}B<5Rc)Bx{Gf4sK}sK+UKY%e0U4-9PyJo6pq*ibT>uLtRTIvq0U=_rSZ zB|IKh+-Ql`I{-R54~0uh>aCfXBxfrKbCq@8S->!S{_f6lD0&^89DaGiFA4^kX|nudyppZsycSMCVlDl?>Kd;?fx^jJHec4_aWHgdAl>5W*-5{sAX)3h-7-v zFSA3CtDMEs4iQV`3pw2ZWtX{>C;tH z;6DLk;@G-m)z#WBkEb$WdPb(9dM5&72NTi_wy6+32PO?~#R}t6TsF;iqZn~=ql0b3 zO?z}!_6`C3!%rzo=Jc#s!Xa|wbFA`C9Wam6PX*JaO&Pa!hnGlmmq_uKgh`i0P%xu# zA31OHmkkw*0+|G+@>k*pMdb)#9S;qzWwAc&Dp4@yKAykMPj1n(2e`p5 z7-2HdeFFzvk)hN49TIRG)ev`-eaiY)xR7$vr&QGV+CqxITIB8+U$xP2P^3{Gqu!7@ zI~sv`a(4872;G#6b{>J7&BR2{I*pM3?o_svjFt(NyoipJ0%}fx3%hg=lc6;UWwcUM z(O`pVp8amXVePXlV~g<1dw!@%DM#=?G-YReRhyHb3tg(6s7sPe@ap*TW3l3qd*1eG zF(ISBWhL0DmZRzF*7eF@0?nd@k(D5&VI;+46b9d;@Zg2Ru7hW0W0akq{>|0R6>8a% zGmM_or*Fne7-6pNEm^5S1*Uec;_~=-KHYZDFtc07iyghW zzXI0X5@io&-mY)m3Pzq!!(*vuiTG?*o`u3LsX1xGC({%oV%Cx8VGLLU>3J!;`w8=V zOAE;f9z{6*``VL(1p!Xx*&SkMAEUE(>lS-o1-$k#E!sA6+&*omQ0fFR4dL8cr@Z7| zZx+t{(k@>lR@Lu(T9RQ>4d*a2+q%5O6s#6&XQ(Ud^1As}qe8xCS!zr;&PP->&^E0@ z`Avj=Y}^^(_I0qPi)byE#r!;DORPkdeueFl&-vVJx=E!$`&N`jdF}T4Oo>HP-_uJl z?CR>~F){F}&OJsEk-kaf_sY20))z7-`u4>`D0Wj zi_JAN(5|(&SWHnLjOZB)dG%4p)9oU!fDWp7`*d@iY@FrBOV97F$MaXbe%`H6ttvGXW<2t&M{;dIuvuTXLZf-36m12H|QN8HQo3x#qX74L4y<&OsN6j00Ku#S*x(_Ogl|sY?9>Z3@Y2OqYg&?Ey@L^=FfN z(rdSyco`aR0`vWTYyF5#VQ;RK<4VPhQDv2+(%@-wYrLFxJMg13R zJ34h)2hfB~Hpp8BN%kifxWBs+jtBSJR7@okwG4A>!ip{4P$XQZPGUE>Ydafe7a}K> zE?AT<=1PzZ%nNR;YmyuMbC8qM)At=Osa92hrO+@Dsbg%vob;5Sh(0+KDR z5}hT+$M+H=?&c=zA8gF;&=1olRm>G$fCeGOUPi8p%Mfmp(eh)O80uBSIr)~X5m36R>A(47xc&~ny9FHC=&-2#nNW?1WU)t}wG38Pz= zoGTnUY*$@SBg(CKYyr?OdX6z7vYRPU#rY=X8y*5{nAJfyi>^T`xAn)lJw6C{WIB(` zI5Ckm|EFKh$jzwe?YPPw$4s- zLEXT2NQ#_@_u!m}c{%QbL)QfJbU}H8m)O{lqBu86ziR_`bk{e_ih3&tcL|vGK{})p9Bf z-MebXhjf9AZzyYD*hhUxM?KXeWG|I=~Ao%0cGV8B%3WG%i zcctK;42BCL>yOV?g+WgI=C^)v<-W&eou1P46774>+MI~OMW-BXKkn=E_0$FozLkx& zFLx~Ff7qJTI4XQ;Fg@4pHO0KTdpQ{+3p53|&M(EXT=@?5WY*05WS1XRY8#${8qtUq zq-B!UmWyC!j|4Gf^uh;yX*e3*gnGLKEqVGTc9Mo-14_JDR}==Fe`DBQLA@T#3XEm1 z-Ckrl11>*Ec#1^ss50DDeG6Je-byuje1ECy6PY2b^?!O;x4rHK&?GN5=R_bz`O|Rl zeH0t>3%hdV;vFgCnSRV38eS9|!#xJ9Zg;(^+>{Y?pB?fnxa;BCBlY^zB>(W1m&@Uj zSsN7ND5!o`wQUObH9OCA`Cdg4^O@!3iZ`kg$40{k#Ls$HrJLoaoE?=IB8Uj+kl!RY zE;gplYGMF37kS>R)WR{mtJ+fipR;5{VK5Y2xBve+^r_0%)&`ThOnQ>Olw+rF0;XZf zDy@p7M*4)JJv3B85TpKc@RqMWnarV{FH<_cSxaCk4vfLP6^xsBHT<@8WhVPl*q=sz z*=%g;(5)^f!YpfZ(G8p>@bjJRaX??>@2j}3BRV}_tYaLZ-c>(^h?*58svv>JD*j@spMfv1g)q7jnJ5l;lcm0{g)Q zTy|BQ42yGc+o}Vs^L=+zZd6xUori5cRQVJJ4(U5A!0aa4J+bCS+d20?Gi{ZgC3WtH z@;bn4sphd@CD9%A&v#Xj{}#C5$|{?yYYKznEAKMD+5Y{27$blPi=y6&-Jjw5q@8RP#CN*Pdp zfQ9ch_VnLmdt8f7aK|(LmZ-}J&tTN}1#$R^>N6BP!^SqO1^qSQIGFqoga`BJmFb0M ztolEYGp!BHhBpa2oZOIXn=YE-c9*pbik@UdAI_K=B!7KEiy?yCLb*}5P7BxIWRBFg znpPvgOu=g8!N}s)C6)goteq@p)1nm-d-D`ZdPA2AKuqco<2iwKjy85zBWh;ozCa<^edlX`dM==`Wv0;+D;X?O>VXA5`BB{L;v*(+5Vn=px7)%ijq{dShxBQZ`hFDIOpXVA(F}Meq5uPSs6_#nIYi9SbldzoA_cZ4b zMoafI_x|DMA52k*8i|vOgX-h}_U?H+yqt*)@Wd;B`>^zDJOE=n?Mi2I^YX4O^=k517FZB*>M5jpU31qmHz( zl{8=$W?dI0yqtucync>(%3qfhx3p3X3#jMj0V6!tPdMIR^$**9n%b@J>;`+q$S5#>f#T|$}%Cs$d0#H25;0A@_1myc=2VC9Y( z+C$3|4_bwn94Eg%PXE7fU^HOy!XnJtP~09%+Tf};mXN+Y3I?XHQF6}!%zQNwlRL!7 zBrWMD1k6mWr(P~qY71qX4da2k7q5G8a;S2~2L4_~=-a++o%$B}JZAlr0EFJG&8C&W1CF=+QNpqb)>$Q&^^X zs=*;6b)r6!Aa~UJLPPdHN%Furg0@AtDK{}yL)y>~x#5xCz7`9v{&K)BmbfLJ?G;|b zm_4{*LEygdl~&@xUfh!Wf20Rt?xLveW}gp-Fap0uLgSnpFQ}WnIv^fS03A21XA z$o(cGVd((?w<$R8CL3uKtFXzhe9{KCyw}u`b67cC(CX?5tQ?icqo}O@*qYgYl7X1u zV}#$iSp(t3@ADmyDrgaE^Hv^E?G@=7{ULsPXH{u(Sz{8j)F8#-_H4k(+1k-a&f3}8 z4n=vE`?HkHCnrxMSq1y1K}tpJ*`p%Qaoh7{)gQIsEY_Xv!C?;RKxFaxYH;;_si(fa|Y#m=kZgw?_Gi11pzzfYJ=Cl#L)Y z(`7trFp*=IlFDg5%G+fumC=#Ta0t?K8CLKe+{FhJBPs|S&S zR`y5P)mK8ihjP(u@eG-~HLY`XUrCJ|!MwS$(Z}o42*KOc=;M+INb9z{N?*MQ z$<26QC*|QapB^a4FxVRBQ2FGq@-0eZ+=uk5Eq{M}hs^2g>dx7Gn%|CeC#Qf|X*SC- z`Ry0bV#BCQ3nljcGmmPodaIVm3tuW@czWKB9LPmK7flN6uy0oa@wc6@be~H3q~4An zX6Ip^P{(I~+-BZ42Il#G$^7$4Z;9vs%55(BIOJC@Nqmf<_TCrt$3vg?4>t5>s?ha-mpo9woz*KdBoc55{0YXiO?oZ0sCD(-Oy;wNg=d%StT! z@mMVz*1fwWOUYpBbTS@#x0jZ2=y#9ZY9Y?|*!wz~u&&A$+=dFk<7L0`@|@CNwld#k3+!JRmiURp9+t%w-h#`}Px z{}H9zer;rqTaYDVkKTt}_mDHG^@``!Nxgk<*RMOcFm1kYUhC#?2*#3IX0%?m$V%}y z@K$6MJ+?)>()V0o03+-ObY23GWTYMeyoXn2)G-J6;3seMSgwSbkq z)Y+S>^L{g6U4_T}Hv3ZfliZk$66NMU<+E|w8~~?w6mMTqmy{ZHj?Vx}Nxit5E=t$_ zjxQ+7(BD4U{!eGXdDv*)+=U5da{ILsSGbb@D6&zPsS6wb z82;`0qZdaLbr|PxDkt+H`;ZD5;N>TfreMn_cDY2L!;pkU!sxfr#Q41-;^!xC*nPcy zC$&4_yb%-)0M51^e0)1ZDq1(G7r!kOgd+&R16g`MZLHq;@Yr&ytYGuC7!54rl6o`94uKuRYaSOuRQg9WUqbx=(O>%G@kE(5rG zacsXki#Z)a%4L6QSp6K9TJHR*XVlJ7*e$VKhv7Tzu9Y#n@$gV|cGh^7veKAKjg@Za z_#S*k^yCJ5?Q_LTRp#dO&eF zoJhw9*Ecixmv0rpuX7f|Gc*}CA3x4plLxnGQy0VS=&&5#3?FsJL%R6ey7Acq+>h6y zS=`L;hFUEGKb)TkFN~6G0Vh5DZQS-LlgvI0+OoMDnig(=xrPa)ddF%8%BRkJbF}-~ zeGmLn*^D=x>4cZB^V?+-95636t3k+TgdokpbLi1-DxgJ?Y7Py7ZH}S6@B1sUAbBm+ zH67xEoV}wC89`CIEG4TA<#&9*Xm_4B4Ve9E=k>`bQc9M<_V#d;WcmL636!G29Iz=K zt-AL9mu$9}TWkPpmS<$43iAs`ncW6#ntVrfVVf1DLM{jo%(A;Cn4ba)zF?aLKHX!! zdxpZB2U?rgrH+~ZYFC+>J^QDBT&ph*kIpf6Y^a$6eiWt(htc-6!$%X)8#4{r@s^#R zRfG@SsjaElN*SyOjydfSho5KB)6dZ=lrk9!;L5T18HoD!J_(Mf!&#(v|y$ z#|@`!Pyl}D(6)=oxR3iI_Hf=4eju(^eI6L!5v%W9L1XsxXa0C*t&F(s1ZIK_9xkkUZT^zSrSvHs{umCYtPmuyC8sl)s)p_Em3`FJ7-6^QQa5<8z)F>Wo*$WH8ZV{|G9Xd z4%s6YTpOyabaSx+AuXWC>8E5pdbu%i{nAbdKZaDxpUjHhp0B=%zp~6jfo6VHGP3sf z;_|AGO*qyjt6q#xTszW~&ZVU7m=Kh1q@IEO zo*_~(fv#5y7ghrBQ>-TScdoYX*Jg){DY*xAR~B5@v;JTnp~|=6l13(S46$=F|6 z>iMbVFVau_(pCkUYBax%dS`;y6jKZ;e_kdZ$aDji{_J#3oNs>?UySeN)6_LhUt~Z? zRgsCFbEV_t2X+0%O@M%u$bu{XsiP0YP@P{i@0Y-K5`8Hz`SXOW>K~xU38BP9G5Ifm zV;5B;uVtHKh(L*%%6fz8H%Z?16K`>HS0@?Sc1i%x(Pr5l-;wHKX`7ncSs#yoJLx~} zlGDy!M%yCcD@9E>V~mlor6wZVPOApAZAOiQID*g36wU8X4@)^R+;Kr=hF>f42$VN7j3(QwA>T zKEtwAlYrP{OL%3ViD#rif?O)v(U!`B$y>%O=hj(H8aN&ifSJ-Z_=Dc=`!l;*GR(%p zrx>t{(QY6LMwI+GHVHDtnHBx_R!j`5Q1cp1Z^!MjY8u}WQ%gMN&BUKCStb-}$qYXh zQPZ$7K~yK#af6FyNbPQI`kcZO?>FBs8cFsbAX4Qm1ZBJT%2l7WmJUyzjft``%CeNz z^^oe@Oq#ZaMQYOMbJyyxryJUZiT_5z?HUJ~% zf%_WVd*0XzkzsZb#TP;G%M7Lnp=Fn9r5(MmQ$}d}{-JNGJ@Ky1@yyEfgYu8QmZP$T zc+hM?lI)Z89KYD9e(66cihdoO&XYr*|sup>mdhF91m=9=5VFBqA%ipXTwRfBvCdNSRM3m?{J{97&lmztA{W5UrY6Sp0#* zFe-&lfv8rrl=Xz3j1(YI(-R7VNf%~4iLIiw(q2YS&r0fNW!&l3#?c*gn2MOVaMt7l zD)k-ck<7(W)mTDvx+q?U5Z+YLaeh(zWU*# zHxOZ);S}}y9={$2;a5fV_K-hQbB&Cxk{Dtm%mjhwppi#%bXdFBQWJz;>QBaCr%j%+ zf(V2mbZH+xC3nAq>jVu!X$d zAD8vgh|I%=hX~m9`b=axyN+v2OiRD~yMg+;30T+;pK}e2w}R%{iL6#J>Y^J!bL>u~ z?s^w5Erk3UDW`04#4es3Kn@HL16CpcO83X?9(0UZt3{-{=vXl)mBlRqknc*klM<(O8W{c}8h*S+bV1G~h zi&RVudchL~3PdXbhx?DLzIW0x_=>lVlExjiX#GyDT9&$gJc}lS4;Lklhm}GN`P-%y zPc`r?k)@6SihhsDc`5iZeDUT=K@ReJs}ou%%F_}0GW_>LMR~M!R?><@DgAGve@Y@n zo&h`&ihmlFWsSX=aSkXDn!L7;6NlLX^-y-8!rzq1lxIUd63UQ*XBV>LXIpa`EU0y# z8O=(pY)*E_#Nbzd%9eR;MyP~~Y3w-u@TPxHsihRTXJp(Qv~w$4cAKx?sn;;K18&Orw%Ft}{$=a9nt&`E9@s)jZwD1?<0pxh;+)hZrvthJ34WW?V z<(tsLE4ndTirb^wr|bj_rXe41B&=*{zwTQ6{;}Ra{^mwzOcHt_cZGNX4nZA^qV!Ab zs{ew=Nl|Ta@k_#t$>v2>D8lzRfmPS;Bgbh*ST<~~QBo4$_oma2WbKA9_fLRN{~__` zYF(8J9%@4T;5ol;2g+5YYSR7z%2svBKLb99C^GR%{1lgR4@0R3ue7;3Kz5-ax`T6d zxuD3IC80;JwsSA1XGq_qcHQN`a7d%gsJEIwuPMF7 z2JTGRHl%+&f2>+-X0A;pblUO|n!{y|S9pI?4dW3*=)ieHWT0R|g)GWJw!}epg!p<` zk%h>~UXaj=?XYq;0b}f_yY2jE66SiXkO`v#MT;iXW#61@Rw5u|6=#NT?#8VfksHQ&)nM_cGc2uYwR%kS7|F>N7`EG^j(EX;rLPfu(&}(zE{)x3{a1iGP;8G)fwn`P;&a8Yb0*>UzsUT?_;FURnVk34F44)}+4T*x zZm3sqj`)Z*bNWi$oR&HQfPFlBtf}qoP+AHu4t~DKq`wN;gcQ6` z!z4ht(a@bv3K7C6Le=3p?j(WwH8&%kCNi;hQr8T61jB+k&v)2Ow5)g=Bgr)Uk(xGS zYM8aMxg_dmVmOVd|wJ?d7+qf4T3C01Ia#ghq@fpszT2oC?IJW#PNuv zB#JA~GT4h9{;curensx8;%y?frSf%){9N8Pap#E1a2(Gpw$Rt+$HrRxVN?lBJ^_Ms z#Oj|CA{D=jL$0XQCFA*2@u{UY2cWBWmo)uD24Wg7hfL~rY)8X54X=*!zoVGZ6%s4BaB5x1Pw)#;^zN;nx2#Q#Co zY{&72F9v)HNZrQROni&aV|LLW{0u+PkOXO(WZx9qJ`3M+2M$F!^zDpy{0}Wb|Irfr z7-Tz9{Z5Tn$2r7th}wY)Os!t0ig-k}oA|b=2}2s4cE{jH1qcwhIf{OH-K*Q-HnllU zdy*;(Fg4*|y2xdADFcF*S5jy9DwsdtpKY<%8S;?X%{AH`FHqRbq4-@3z*%^*b~F_L zq}mnC-5$Oi70C@H%mH*(?@rOHJuGF+F7_8^CfopWKn3%%nMME2v>4~%T@G5;+kd1M zSWaYW-1OIi;KPY*CIVhvI5wzWMuzCrFDxsneLClL*)hX_=2Us;>{p*FG9}M{e`1|c z1;G?Msw_O>ty&YR7d(Hh@8kd?P+Q-4C&TAx87oKQa^fm4OzI-KAKkzO<0?#BJ6dy! zU2I!B{w2ycmlf(#oL|Vt<@hAi@d@`M?o!oj4ekt!s^^^5_VU&$_4+nV%#t``aV_Io zuJLq7*BCbPh58iJXk)qbU(ajYjm&SPFyLOZPA|w(I=up|Q10EJE-`&SpHCx;cln^f z6D&o;7IL0aOMJLK8+4UeD(}?{G^^+~li(SR`)jm7m>s_kK0$`q$_Qi52N@cUIK{k7 z1q>v!_kGs>2%PZ?FAq3vG7Q|VU+a>u$1YcTezVh7DC%#9v;{`D_%{budv_RR+M;~( zq+@7z(|)0A4&e9%)iC|Maw>|EEAGH!-q&L(IQD9adS-|#mncPQY1r}VKV*Rm$-&3H za+Dm*rusb{HC`M@kbU`c-c7vlO8uEdgmbp{sGw!8_Xlx3Ml;R@_s=?_V{%>&@wiHU znm1)M2?OgsWw|Iow4&*_Pv2kv@)3WV>D5_1)9#T|FX@sVKSvRgD|Ts*S~?SWv$<>5 zA-Yh91qllwUa`5$=pi~2A7P<&(YcPJXf1P!5oPo0o@F!26ZQ7_-B=vM1ZES~H${zl zI7)%8UUMM_YL1K=qiu?I7R{;8ZrHO2XEX-c3}MzigzP=JMH_N)33PRYerw_i6^`(! z(vUO8r7=VD&zu_d$0&ARvPl`NJ+gWSQHHl9$Ll~QrymgbwE4ZYpO^9>EO4@UPScs- zK=cpUBc-9j>>ZZD*c8N}!~?f-6=_H!lpLyZkdV)`}L~)|}mDNPHzBaUdNsWTL2@=sN zcA_QP?oOZ1*SR=wr_BtZR~+QmyrkiZJow;Hs?gyYyf9-VkV&pt9dXC>8?weU7U&s` zyKW_uAi1Q`hOKATGKiqNt<1lpQ};*%?#9>bXhdCONm=LxPw`xe9acpCI1W%Mfuf)j zG9t#}==w_l>yIp&n|K^f>?Y2=QZkzxkdjC8y3G~Q_2P)rK4Yi(_bfN_rcqObmxTfX{1f;22FzTAz+?Pbm2p{CUVEunS2LFQfe^UFfb}ei7G$z_&3gl*3 zmw2IMwCx+CML_=?AdhU2ZpmshVQ(nVukX*&gg1`=IV%oB6rus|pk zf+D)^Cd|;64NRO_Ta_BvYLTPmFSexC)48gY1%6cY=yN#Le*=xI78UUf?$DgE55B}Y z+XR_AdD76=1SOW|8vfR!`pw{PW)P%a^hRHkFbYk-fO zxB4^v972z%`2(nXYS|Om0%&7qZ)k-ict_~ASV>=3N#La8MHmig#wGCN?8+P&YVydK z`EyYHJ#+%D5yAuQP>*a0?nV#2T(Qr{VXeF`gsv9XS}5fpC@}-C0S>{4zEpWORon7F z7|$Oh2D|gkE*D)Jua2)HG0efpl(cu75Z8A0B;t~$C9KVr{T|QXAZ;n<48&8hN4ZE; z!Wnjw2NWz{gL}HeG75YqK4@_=mwhnF?te$Joz3>CJT?*kI~Zd@vgs4r;jvlHwGMF| z1@~UB`Fez7?;2ZO1M6k*(*|bQcU(f&WnjVG{uI^wi{(+#Mk3?IL7$#lzu2tbVS*3>%ERL8W!McAH%h^F2T8Y>#bU z$@8Y%!unymz&BG0V#P{Xd?Lrs#$Qvk_U&uAWQ-E;!eDl0!||$Ma{i9R7w2;WAKKPjaxWhMMQT9cI2)Sh*sHT2$h-N2!H}Dz{7U%Jkij#f{dYEK zOMNKk55w_!GlH&t_55xP!`+Npbo z(_DRwSzEa8^(?zNwfi~58-g!;C8rkfpB1X|j3c4VGrul#lJ;|i2t0Y%dZZ7|18tur zU@mK#uybfRrJiad1U^zk z0`3-ZI%X<#qnUIAuZDGT3-h7^5+?f@oq=&}#?#9<&R5I4_!6AT1sY1>?kggl3F~5=#}9I{Ioeuf}YPL+QW{a7#fBja-g2ZGVez<#Xqs< zjHhZ}@1zpC1EMFv}lh5%HZJHWML@Pnz9l zPBdkE(Py!k9Y8PRz7_A;3*Sy@=B)ZEjxsGt#eF(qi~ZQ;ND_me6gE0glk^jn`)hbq zj>%}$Sdc|PR0KZl)I_MvCee4LI1`+?w|vsDKi0DQKls}Bp1~DhAhOSO<*<5MHjg8z;Mf4GJ zD1OSXkqSdMOZ*K3JL7yb-2d^-^#j#L@*~akFR^onr#eSw8##@0VlH+#{!&J{wP7y38R0wXxv|?AGeING!!L$!NinxTZo|jFU=`&%+buB+aoB$=_Fx>YyLk0 zHfAK>;M?xWq#KZtDl8JHsF?ls%Vt_Y6)JoZ4_|36k&z8ywLu7FzqhHU46~r$V z@x-AcH*bPuAK2`vSUY95nK$(bPbH?77CJozOMwxa&Px?jXOh=f5_#{aqfy)iQ0&~Sk zVDuM1P!#*4&)}JZud?AXIs!k4(zHM9m||~UdZ?+l0qP(o8Xu*MIZou-R{4LrI=H1h z-GwPK08`Ihjt};Dxg|N4+i>B1hui z31GOX{V&BUm2}4cL$P8sJK3i!%fJursmw&gC*noP{bNyPRPH(+7!h+a=Luo(ebps8 zN4R3I9qKNTp$eHZY@~Di?*Gy&p)eI%99I#A@1qzWXR`0!3;IhcG4Rgk4C_yS!zZBx zCkl>ZolxIPQhJZc?RZ5@pA_{^8M7@TzL1dwIXC1@IoFF9GxHpBQ{QNhI5?hZ&NJ}k89HxzBmISZ;$;n(@2z%VMZW#Zpn zaIg)IeAZAr#hNsS42=B2n=98t4;+Y5_11V=ZWl+PkJIA9)6%lcsJrqQySbTTTs4M+ zP8r_@ce=%%VSWgrW{F?*7=ib*s8NZ>*j%m>>(ck5&^i+nM(CL)(n@+M?~c4n?>CWl z)VlCIMjlUDl{wK=Qq@^$OuX)3a&f-dDoW%{e;W;cUL=xK(s^c3KBpqh&kLffIs`;s!8qeHrNKwGcD1>|4~$jqVuE_z}6 zXtWa6niJ&bfXE-3B_g1EJhSC&8B*36(LBawJ)MD0_ue3rLeMQ8NC-7_+_=6_W|D;R!jdlUJp*XFk-;~)5+awU2 zy(_nD(!ko@m+dbDLrEDG4DyXSCf4jJUB3%o43djlQ6_%mp>;8ePPWL=I!ntSXLj;r z-_w^g6|(~2lP(TKUz`g%;#IovF&yF&PYC`0(Z}pWkRsqBhewutsU+?Hd-_uqCa)-9 za4aX7+5k=>&JrHuLDR&`>)BP%|3RYU3fnlilsFYP*yY8GgPB^q8od z-Y@eunh4U9g%e9Wt|1YWlSC22!93lU3D?>A(QH+!e}|LcQC~2_xge`l8Q#e;^S4QUknl%U@l z`uDQ)EsS_U?{x%n8Egy!?zDsw(-ob+RQyEPOvJ2d@Jwf-*R9w_P_v8HDsSO!dttn& zXbHO9(~=9jwF|$@(aZN4C%A-m*MPojFx0W-s2hqATmG^kQ32ySsktRlF)cJ2{xoy- zV1UqF-{4G><0pYT&F_AUnE_OT{M?bZvzj>FWx)0O4n@wpG^mc}!4i^1tRHV9mM#~@7eyy(%%^}}97k5a6 zTV15@y)y5QDF!>Qd zrZKh2J@<~upiYSo@S0pXcvK8WQ)JW&lUnwp{b<`v{+6 zs^=XT$L}ALi@6Pt7CILe#}AOLVloPO#vSBwVm;#B@lM9(AGaA_EJ|H-M(k!%>t`i5 z3J-@~VydRoxIr|ij6Os%pHlWOM9%s*Xr92)6E3ckoK~WvDc+>}3^e?8E8B)Lsw1Q| zlqPEZTA5i^angK)pptgxurm=DZQhbL1UCs9ix+9%)X<~g=EySLZ;N-*lhQTV*G;>} zJ8EMAoYBb3IqOX_I#xY7oA-*l5bm`l8=OR!FVnWVA+b7dSSqt*LEy<@Z%gl>7Dp-?KHHP`Q2ksq6=3(y}?h4brrpaA~MeFJpC67D$MEIs~@HqX^ zs#VGu_?mi!yCc?x1m>3Ff-VeH(W z4jb|+JkNE#p&Lgq_d=cUDH5$lm-{xQ-fA&T8ksT)xh{xk6NpT;6iv>{CB+;lf zCYg%A$}26ZJ3qwb)9IH7pI!SF>*b{{Zt<$p+t?@jYz=&$bCnTL8yV3-s z2(=^?4nn0}%t$RRdnQ;O4dVo&&aEL*5XjzBw4PPKoB<>p_&l?youG5_O|4Wk^U|%P#>=l>p@pqet?QTJEu>}3`$GI^udajP0TKww($>0~IoE8iCh;#A@X~}xZzlIwx-KBN#6+e3*i(0u? zORd9U8-DoKJ*UkW_-q4`R_Qzp)JUkwP!|yjYlZ5c#rMqEvbUP4xMs#^#kF=y-%*cf z$hrPbkK{tA--_*jXtkEbW!91*BSblcL%6M6EK=Xgz|g=8(W4vDdek#H8g+vj+)j>z z_Yc?FJw4;PiNIdY9F$IQh}7ZC%y!3S_tk?p<&pb`J$Fje&kZ|WOH!_u$**hpnxi{y zXY8~a{VHtSlU|Mo@j+e^-+P&?{Q#Ila`sXj=213OJW zbyJHqciB9)?RYDW9A)qiqt@mA>3xs6W~=<#{6|Lb>l0N92kAz?uBBKD;riFNwJ~Tc zU8-_@&%j!Eft-r%aldJ_$wAFY>pwCVRExR6X1BcRJWF`A)AJaaknC8*HoP4@7ss%v z{GNmGj5ln0kRaS~u!jNEp6OaxxapqrIPR<4ng`giLA2Kaw5@ zp6_?rSHpnk4KzWWqbV~twKivyGqzvs2tgBQA!n0fo`vv%P&L?#iZ-3xe>Ki)JRxkf z?L3dqi4lyQD~k)}E*=aFZ>DN_-A=-{+43cl5w{7oI3Oa;NVWA4bk`!|0jSE{?-rN~ z$%wyVR{Svujkvvtf#TM(xymlQq(IpMx!lr2`wm5DT1gyvO%c#A?Q{L$0oIrFwM~~m zRB0xv=CfFgKr;22CSRqH-uY439c3*4ZV}qy!Lb-BLg_oywpTB5F8D zCQ;6bQzlvbmO1Vchux~ntijWS3Vglu1cfg`pU^QT4epSw@&pWGIH{odyjC~~C7Qs| zT^0UH$iYfVPmvzK7fzhKa1cJ{MGnzO%!Zv^HOI| zN2RFv*jWar3pV&F(g-%&5pL9IF?|GP!wJ$}eTornj+^|WpRboo3OTt(Dx;K4KftI- zAEiLbJ`t`)App7pS&m^svF6jQJ{W!KO}J1ywO43bIpEk93D^+@T%=@{0TiK`QzdW_ zV$q|x2gZ+Ch)5S{UfmB9(ES(?#Xvcc_nFTTm;EOZgJ&2`o~~s20H&j}ua(Ht4~$6@ z$TN({Gy8%}UbdX8JxU^?8kiIDlf zh$^+1=In)$S1A1hy};tA*2nv&xomo^#B7SfUK+t(O4yaZ42DcQ%dwQu@0M&>3c=>O zKC(Gqcjy+ME`g!IXgnSchV2EG6a4$X7*5SfT!!S*iC*2}*JoDyX{01ndZJXfh~uqV zNVVX-vX8t8XS~OwyKLl0sl7W2r8VNgR>C=I|6s_hu{eOsllC9dq)8UP&McD3OGg>K z^pK)t`gE(?W%B_%q+m2zv|m(`hX_`f7w)5Zlf7QIccR-am36+2+*Q2MsWNlzR%Areu=gPD$Rz9(jNjKzq`pMA&hb|J{H!!CwEHV3>Rvw{ zUS+{;8v-Uc)(E#y$+YTTzYky`2FCyXimzR}9d@f-7uS-169q#_a3H`|I~HR1&$?qj z)MMnNogIE8F}rLYEJBSqj_JL3)U5`d5%M^Gl4RjbBk5~#8v($zw61@)q<1Zq1I}eL zev!9`H5#8R;rF)$s3x)SiZ9PY5+CyS;MN}b<=XUe-MheR@#IU2rIMP_>#e^oKg`Es4@P(Mj5cx5Xsj$$>zqa*SYnh zIUMGIH+lYIlqO=Z@8AewdX>J!?}h(zmBw8kJybrj6uXT`qo>y^jsg4CC2I8zH<;mEP>wrccaHYk7DsTvAFrbV92xsupK9_N>1!9#wivf zKIi_MO5WZ<9C4uEpOA%Jyv1*ktf0uqZYQ1qrhEMWJBgWcP}GH;6u%ISaoI^+sOZaJ z58cEy6RfL0aAJ6nMeIRFiQFi<8Ymvmxa3S=zvAIF6Av_+IyMc)9UKgFpb-l0gHZ<> zUD#_l7(P;YfxPSVRQ z)ebh3bEr&gKr-27b>qIaxpStBqe-3M6~V}iR1bKws-0!Jw`7{jKdN9(okypPYHuV( zk6WVq{dQM{?|j`??eOy>o#D7KX}!};oSmBB`EIwL6v$byM5KFBFy1FsnEG$RB;8d< z@P}dkTo*qxQ)ezn>I;0d=Pv52=UBF4uiL8YHpNW}lx9wcio5?KiRJYGR%i`2$+I>zu@Q!ls{GksyXSrF!=V%AM?=_E3OlP^NK!vdc z_STbu-e|In)BL(~mfJtYUF~AVJ@8~e%zF1d&P>-rHAc z8IxZC<_kxs$%%5$VN7*%Jz|!Ui8Q^Pn@JJ9PAcgvF)F)JA#FD*sBY-* zV&rrq4UW`MkU!(x$VX0inkn4GZ#GAcvx~!)FN<+>fm-}eBlbM`iaI{oie3=nqGkcWXOiG`VN|`KQGY}vAZ)?Qf z+(>$>P`A~f?xRDg8&fFN0+#Ou~d-CBh-1bonCr12o5@gQmbKZ*Mw zX*PuhX&#Hsp}XK|B8GDXD1}Yf=5VvW=7$Yj=niNsAi~R(8~v&IogP?ky75=sSJ2WB zOS7cfiSb-e3c8KdK0s>tAPFB3_%g}v1JaM|Z19n34pSZ%-pa7PovXWauiYwD2Wtcb z&MuZJnKpX`Kq*#^w-r`7N^!9(#gqLR=My*2p-_od6ivOD%&3P+mHx+-UuOndg;Dvd>zYL7^+1!Gc>|noszPy-wk%)(PgL16S)mkg7T~TzR?bZg17 zJ$L>7`Y%^~BOmp7ZcI`@N$&4{=f{V3KK=OFG4PmTG^Kd!>J>lifAf}W-%6x}+4b%I zYqoBDbnkN~Bv3Mzl>GAizB@wqZs`6fk&=AsAJNSB@7wd=t_QyC-jgU9>qarz6;B+z z{qvvxbKuVj@J2~xZ*F|{xfk#G>AznkQZ`y9YrW&GZMT2_>SO5%l#P+8o?o_XO?c-= zyM9ijtWYM~{QZv|*F3uYzyC;}Y^+SRa`o05KYZ_rr9%>=%DY_DmIrn|wEfM8H#eV@ zAXR}(_10(q-T&CXcE0l01gQ#Ts&%_=+wuIyFN3EhNHtcby63}NZruFTYab0xkShOj zQB$v7w`aq>tFL?GvqY{KC6hhz@Dpt}-SO+~$0SfTTBcfmTkzoTufMW9VIhr`$yVL{ z_0Jz&`S#YAV=?*HoOGLPov+JBCtlevpN>y7>#el8CAe`AD9{8wJ|1j7Crw6)(mVRU zw}^qpc2*RH#`~O7bvPgb5pLBPsQ~=&_XsDQPr999@wxKB{MO&oWQO2ja3U>glu~No zQfcX8BOBb06P>uk@2$4_tGyNnOxEhzQ%|#TVl*cjB3Q7 zDcjjSDJ9m^T=aayRpl))s=Q39ybM)7f+~sjW#g~MjZ4jqYy^54LkKsTTd=bvQ_t5e zHmJndiK|x-TNwoQr~--Ez0`i2W{qdaP#H-2q%ffjTAyY5k>e zG}JMoTLM|7+_F{tmy*}8H{|$$JvW;|#b&tEge%)O z(X$3FN8unOn*Rj5pUti0j`vIArT=1hZ2e~~dwN}~Jo8&B%uhy z?0S#IhD#I^?0z3?<_y{cvA&pHHcz+ur`dEDuH@_9T=rtQAdq*9k;rF?lIgYse5Ras zAQh^T(;?H1)3)NuI^;zy;4?aJ+Z4Lo>|s9mk{IA*z#$p1N+F@cw;Cz@z$yGd6uy># zKhP>Q8IA`4u+=SW)|wBxmFHi>9 zB)ih(MwW|BGBhlvN3G!l(qV`Xl*K0WT%^1f^Dkp`1vER{!5@H^1T=SfIUf9R6TcEf zZbI1C5bHvsh6icq7mUMbAjkyoG?Lm7A+>=>RSdue<+A%{Gc?#haBGk&#ZV^WTYf`0 zA$h5pSGWz_fL2=RFB}bznpiwr5-_)5(Nm+)ZSWZB#wj&(2VO6OXH9IU`@x3z*gzJ| zoihr_Mg8d$4%pOb6}XytCN(}HmaKBTYap>diI zKHx%EgBk8Jf#%b_cKYyy4L;|$wlu_5U1CWO#4Ihb6)eN|7}?^x#=H&hCbroFMH}AD z*^0@M-JI=aB=#dmZwX`#U&$0YxMCy8{XAJy5A}9dwNv-nt-NUoYB{TzMiy+ZRuw_< zY85-QOC-gs)pM`L9&HKlO|Mp2uhiU_)ydhsa4*xPmBBSCE7-m9Wb8i9L}Ir@akvRN z0Ng|xRvZzVL$C%d~ zF|UKu3$JFnv@%#u3nfc2y!V^BI|T6})pYxh;*MbCj$IF~Lu zJ-XM2ha|yz_4Wg)5EvwS?)BUkRSA7DZTuMS1%X?%&WQgi;xjM2N?v#r6_XcUjq$>( z5iexi$8_xAzgii*Mi!`{pW_Ren#G*Ld`?6V=!hbM@8WVI9}0t97H+;^n=!s4FxqGDgT3mSQtYAH8qIkaejKoyUL?kEMkbCr zb1W6(UA7r)%f2AudDKW~S(0qe%aX7?uTP1I_sf!S@Y{_XsRk@d`pZF_S8S`7@t!47 zLtE;ZkCr8|mfzH%mBET6*3ciXHa)wG8R4gl=5$8P=_GUhCp8^1efa(Z?WTavq@h2jKsjF39lFza@t#ys5 zz3Az7-ZgY`dzJ(={!OrJlL!8ePT10*>9ro+>ep>^EETYw8?d<^&7ADeox02KgRlAJ zwtCTLFX69iwbpC+<_)fa5|!;q7{k=i;(CqNZpXXo`?~Bas=r!Kwe#0Tc z^;xSPV;&j$B>UC;@GUR1CG`MVQ~C8G?m5j4OF5nP`nZZ@XWs_rl}LCy?`fu+wVu22 zwKzUJxSLdMLkBxp#p9QbNfRZ(b@A&n(nQd@I~k3~FD4`^`zdzaVUxf`KNtzDNmepz z0M;a9xm}4sJZh|=ck!ObE5evOrA_;vP+mHisd^N})utUEi{jXU3AznI_^ zo?t^6n8T>P2DT2^OHH%09I}ROVM$N>ko{^k@X3H|z?WIJltb2!@3PB7-)FyC4Rj7T zk8XFAL)K~HGS{Njz~=*!J25hBE{Cj~k6ErC`7b{8=EJuGSS@L{Yc=rAfcd1Yy&MCF zPq*Q~``ZER$^V5i$kIMxIz0SWtASkuo~1l(<≧R(AWhkJvAR_=!V=?FOws4Zvr0 zHPl>zPbdQ(+Ku5UTn^?=a*M?QzYW0Fp@x=}XFbi~Y}<@_4|2UNLNCn(9po-vUj|v5 zdHOk@8uMKh@}ZU23}jZemqC_D-Vv4U2A(Zw%yz>-_GHjv1#`yTILM|6G-_+N z4rFbutDMy_{zS5BAa+n{C~P$sVGcXo&abpv!R*0HEE=>7WUaE(4q3MEm<4S+*{^1Y z)jU_5HR~3Bca^wH4Ib7EtUQ3FzoZfXvVP;%4E>C&(7oP#c#>PyU5Q6ZvN!LZ9LPN1 zQlUkL~mh$)qAFIVR)l#GLEs5;46%i1_QGs#CKm|WU zx?|uCyHntA81HDDv11^H3{%J*8)<#IKT506ma&TwWAVOwAcfm*GHbqut3MX6#pwg+ z9*F&77=heXpmcMb@>ra?Eq#A5WOL98m`7S-q{^Wh_TPbQ&h?o{j=74V)tMjCGnQgBN4jX}Rd8eEI8q)%062r{!#C+JL&K{X z7e6SMVQJHWKOT$M50~RzTDWY%R;PQtuz-~ZOwGTG3yj`IeHg8ujPOL|kvO`pEr^zNYw7PMK-%`Q0+2U1(+1fb7 z?wja#(nt(1WBX7;YZ|EPNb89PrO}8gYS_Q zRiYCSnO;SRu0uwZOtsV&Oc&Oo){{x=$*6T$dOBpcsp)F^KQR`UR***4DQyN^DA;^yHfo!x=&Q|El%QWgei}ap_dT-7Uo;?fMzL|in zv)bXeGkwgnLRsF?Mx_%KJPu-FwweZmhX}G0kt}<@voF+P5))e*v;N5meaC+_9VTxu zrQvjPT+v1mU_>N#c&L%XbmA}_Im{d)44aOI-7q8_Fk%25ql`;8=A0H2!p=lkoT-k( z_33_w#>^H_;bV-DbIF%;m#As*nlyVZv$L5W`*;BpTN<-I=5!rgho-}Yh>u4!#nwIp zJfk6z!+$a|xRe-NiVRXSh0&Ly(bF>1L32QP<7+9P@{kENj7(F5xtKYi0tsNa)$CBg zZZ1|TTQBBH|NojEJ(ZV@RoOPw< zf)M}T6Kg>f1cQ>=JO6BC-@;H@2xY5e-$Lw%3{3~k1uHpBr8$gMVIJJeFW^y+(WO#m z@$qSQ{_HEzO8;U+#g~j-_(Cyul*L1ZZLM5yspjBkB%4B&Swnf&8T?nX!-JF&`;=JA zE%bu3arU3*3ZGyk@Tj7&Zsbui^xC26fP@|;y)Q{Z>@F^*Ip8r)t~jfOt1RUzH9NHN zn-^uZ@teisrW>A6aAL?5njJsDby}*#qNO0%Im}4(MSSxR;6+-XJRpg^sIa!$$v?3F zB46q1XfStT8Br(5zeIy=R&&k7Q$X|KO;V(Wx*NkZKAG*!VLiCV!XyOe?p$Y zWrH4^EJ~R3%{ax#`zzt#uSm`4V{oz!_=&^5V?>FwyXasSbPTf#<@eG6-F41*)NRQPsVIVWBdU76`a4wF$-hZT{NZ) ze&uC8H|vG}VXDp^&VDrqu(N*A(%9--CRTx2qh;|ykSU5Hbt|s;0NiSNJvj}^B#B#T zWhue@aGYueA+=_l%J?ZX=336QFDLD*%p$5Sr`4J-&GAvqZ5N@KBC*hxcbZY_JtkZ- zwE^5?I(tAGoSY?GcMoS>q&fH*zIYH)5No3yR`Hv~aqcpJa%%)$_;e%gI)S^6aBW$_ zo^@o;y;6PeMB*3nv1t zrND^#3PXK`P%q`Euf(9f5<$(lhhojEy`%EgFmA6v%ouG%eup8yL&(cH@;foe??jM` z81lQlBOBID1YA=T>?aKN6M}sYVd>fC69P^!hTySffqRm@0{0vUZ5?Bb#%#wu$oMp~ zo$BF`KjHH~z;+^A{3p>m*j*eNs?psoLz&{P_Hr1ZK0MY4^M!!jJ(sy>SK3etsM2^tcm}um2uW-t} znBGcR!_@!OuTRZVc)>LgOjB}T+IR0R(Js@4JCP;u7H zmu;8{eM7~$v4@d|4$2!U>*DtLh9C>&4NjxWXKuj|;)l1XDAdqqFPJ;Bp#hEQN)aKP(a`m@uzD5U4+g%kjnFrn6qSpE5Jj`c@Z}^oh^C8Pq!i*R? zhy7|k*w2Bwy;-aH-9h3m3wghhSJluGKR{NtxOXwv;L3+<#ros?tf?39%i^{Z{*^Q? z85dnzeCATd=tiEtV?G|%ZEnJ=RO&=GacgcKr_rpcJp=N^$Q|veBxSof#$A~(nAZff|oHvDlcchnvI=Zz!nPLB8${e z(?T$pqN}_$@Ojc!S~F`!(p^c6bW0tWn|8Y4e!YN(cMZ{C;?f+u2kX z=V$(crSxu|hh<}4{sb3p@er*~XhrcpbSg!nPx#8AIHKf}WHwP8jGKbx0EQWN0pal) zp*|N-pA*y<#v=VZ`P{1q!HItnLF03d-p!vQKj-M3xS^qo-)s$NI_yYh#orvD@Unv^ z#5g98$cP@CM9t4gjzxaKRiW?E;rntlb#m!n(%I1%IZ0`73o`VA!l$PnZv@q=mpgQ; zKNqLPr?|bBRJe0}l@^blJF?pD@{hYzYVME-LjhouS;@?`*{y#3cg!m(@EWQn*Kabj zAcK=jJ!-$?Qm$U8Ev*&?BvfxYLHM>$>e;Ga&Z3-&*hX^fF8^6Mb1W6?pJ{TYKBvs> zcAS+%i|#p`(pfoEsvVA~OF0dfg5cNPJI^x@lc(SA)N>bD9F83HOX29V*cH9jkDR6K za9eXmQra1AtHp13yO5jU6s+mhho1g%L*HB~b!IH+RrlKd>9)K4mr9i_y{q2VKh>99 zO3H=OyxLxQACq%<^(v}IX}DCvw)YM{BN2R3bb}v0GWPL!gxJ0; zw0r7=kvI_m@Pm>KX>g@f&NeRN5ub6o%j*1M1!{zN+863_7Dm)s0ZyKfng&nih=+Vy zD%zEk4u?>Ry_V1vj@Ec0YRo%P6ain-s*G0{^BRm;brtGL7e$Eb03)hW)1X4C<*&d@ zO`taN5{ytORAtmhsmyCmO@n_+m3bKN@yRivKgF7sbf{3)X;4}QaK>|~Y4F~O!lAUD zrJdB1LnB(zqe4}%A;Pl^;8avO{UqU0zVcQa&lAVRa*a$9721jd5v@Lev%XDDgDXxF zL}@AOiG)OB)FM-%t20{XSk$>sG95eaN<0tXqIjmx>d5+-Br24J8zV%W0MpHBX>i70 z1yNd>D*tODk49@noc$le$xF<)NSa&InFZbA)RmoSV>@cV<16XcamX-#ECkwu8 zQq_5KBEQD#M$STE@Tv%BnhQq751cIAE9Qa|1eD0ksbnjZ6<-}u>c+|1b*A>TH27Td zWs|1Iosx*JQ7k9d&%+lW>1?$w+6)Dn(V4}(!JF9dxrU01l8hG zl<*zXbU!1}eRibXkoa5C)6S?rGd@x5Y&<4AIzCxsqdz7X8lPaAd?f)BnBxulW2+w}EcV)KEPhsuYHD=tF0)t6cIkMC)hrwB*}|QmN=zcG zeKhEW6gBT*E2YD&3$f{BWW@(cJX?yN4u#Kzv1#39(eDNFEXBQK(OuO}-D|=9^0<#H zMJ??mak;}HXn1-_hR;)6Td>Xu$om(lCBJYl%Egmr#B zFOMzBdGU+z$ zlKr5nGw4lr^GWm4WJqma)&F<&NsHQdM2x(-6WuQMJg?g%I4l)$9bZzaHJf6`=3>!IzqalhmY6&X+ zQ8Quo>=~2C&jPfmUm2&(nlt&_$>&o>Q@;?W&AGf}&iT`3olAMu{^XrKan9tZ+)4e( zJ!|fa8HAbKpIoyioHu#moXe+8nmlXHv?SraEy&b?48W}B{$v#c1k9M#pNz3X z2UKwEVJP5(3e0{y3_hu!0UFGo&P$Uas`D^nb0paJF+#JGOhi;{k!$dbz8d|os!!7*X`tAUjOGSzmJVkS(RtyrR3+e3WiO0 z8kzpYT=o;W><#2eyniyCJ2(ZBP7^Nsi8B>0+iPNVvd;yHE}QG}F{cR%rT;ckIUt;N zfWXf>jXCWAIn67n9N<)R;k1L?N0sJw=Co^Ri^AbM&A7LjGt6i)GF`3GRO@OLc4ehNmt?w{pPVq6K6xNM13%T=&1kOWG>gqSYfX5>!FoF4z!aK-TMYW!YDJF~ zyFetVXWVNv0r$B00A3^$PB>izqZd_NExO=zQSL9232NwHA{f1-vVxz=UL1Deb1l4~ z;vP&Dcf#1=Q!5F-F!Dq5D%vE!EU~lrVGzW-Nlbo*c>nyV~H6KZQ09jZRvZ5 z73n>Mp<>u649jUX8n`%#D&68FH1Jnx;Nm1Supn2I*kZoD2g-W9iruq+^AYls4IQ;4;>2*fY{D9H? zfM|XoX)<~68Dfa~K@tv8C!ZmT>jO^PulZpM-J?@y4!8ABcF;Kyl3VxzqbqkXjys5B zJ#wPB#pDer(=d7m@%Tn^++pDO1>HM*j;=Z!qe)(Q|1t90#rW+aekbOMqGs|%T*mVY zU{_LBdK%o6C)~J;Q>=l*a~-24yeC+NquA|d?DiA8mpB{X@&PUryZyv&biQD>zrXC* za6h+L*J((LN(C3sgGP@9lPM?!ld+9g<%?PtOvYNaP7(<6<1pNZ=bqUf++JdFP|*nj z!H0}QmN6pBk}*1MM>;Ct*-W0wWo#j^CmDl6BVO`V**#Nr3oie`9wPVHXkj;#)zE($wMt5YtEkrv z7_kU9;y>LehLz&VBXk8HhT!MqODIvek@i;#@xexOCpyTXQ!*bcAArpfk85=3u2BVW zGgsb5st|730H*07d^x0V!G4y$V2Zs~xA7?w=_Sw8!dpWDAXmvOt1d6sy#TqmCiA^C zI~V6lOno1*8zy5)bU&SNAhF;XBj#8Im&V7U{?o>!1Ac@PU~JCvL0}!zpUD?)*@#?p zwoiiOJZl6yhrrH3u)D{IB0UF9HHD_Kqpr?DXgdC~kFGVCI^Jf(=cREHH5`RLi_m8w z`uk{V4Ztic$)gGn%TSJ%UnpUUHyVvCA-EERn^c$%2v_oc!ys66L~x@DBuq}b5e^Tx z1-K019_DbDVYB%9u;Exq3Y4ZOG$$G7M6{f-%s3~O+~cM`C`# z=oox~8;-)igV}!v;d?p$9fW`1;o(~?4hJrD+FjMO8C3#yJa0676$4&Hz?~d;6#-|R ziKi2KD}djfb>?9?B9;h$RbJ4@dBI4hRZ+Auj)xy>@WTBHPLkrYtU0F@AIot@nnk~` zV#&aH+am1p!ZfLiy+}W%W@Lo3*!au6vYrZF@UoHLQ_NjYk-M%&2RU@=K;S8Q5%+1l zWcSg)44xuNd+<^@N;v&J@^9=g27Eo`Im&XFfwA0C?W>$vX?NHp#g_jXscvCZw-8ke z!dfZyCv-u@J?;)*`=!)SX9ISPIOX*PC$*))T#WwKYyDme3mezd#EyzzLE>F2?53A~ z)zJHtAA3@9<-G=T5c3mgi6769xsm7Jhwoj7@unSam%x!0hF8MeN zGtu$4>`TuU1JaQL>IcCs5`82`*J|KY=8D6xUl7SJlnlb}8ND!un2bRt zuSq6jY?c%-og@4(Cc>ofh?$HkkPO=2H!_({Or|4~GtUt|nLg>YLEw>0rbn2}IBX{P zxFBbe1&59gj9lgsmwCu#t>iKfxoks`opt~)59`Y@e;0n5$Jmu6zHO4!rMeHl_io4p+12Uz0 zQd&}rmZ+f>^ti!dX&tj@s#XJ6&=CvR!(mv(7~Fv7si8X?&3X4>mj?kH)2g96`qQ_? zHJ%tNg>~&wR^GstP;a0m)Lq;v;PUW)h_bnXx;8q`v%e0Hw4oS6f=J$0quXz0gl;B6 zm;Xc5WG3Gx3Eh0;gyM#3f=Ejgp%skK3L^A|B*f&TBH^JGM@ER%5`pab$mo(5#-N25 zoK+-T(xTwXtruk%KnwNb_enl2oDT-Tl~m*U_3SBX6Ml@EaTA=v9~-&d&$!)B+&Ynq z8`s_LC&aAr!aMg98#Q!OqgDg|p_|kIT<`$#R{OC+!KmdLbA#iPUm&q_?~TP>E`F>_`awqwG(Cq{OJu&o+r=vJH00_N8OX_89mef{5*$JB`L zCz8arb_n}2wh8ZxtsO=Jxx+^mSC={L*6DiPh+Ot*2a%)WQ;`$5=}l8IJ=J9Z)3S!7 z!L8%dA+r`>+TyNMcwM?{8Vh5~8@1Y6I1dxj2Nv8_a2~s}qA`Z*@R7xAb1UI9DiS!S z(@3CB$@F;bH2`&Y3`v7Q6GTm^Lk?6`qYPskGnqv~QD>CG>l7u^0&pE2|MQOtI06(> zjnsY})c`fLv3KUUxGdG@d}ic*t0IWssvz_KAd;6(ZogHTuqg$0;0692Ke&~udd@^_ zvmU<>FZ?|-4KAN3%w-9%`m?!{Tlq0Z_;PHN1CSCuW(Yc+T}E2?l}5%QXhIfuAS82e z(1biczzg)zL;mr`!IK0B_Ay5_)V_#u2-1*M4TTqJR-eb~s(>3vry6Rir!}k_c!FTP zIfxw=u4{$(weCfl&t3r`8g{FpEsG$gj?ji@9nG=$@x#-?j*f4P_PlLUGQ9wAlbV^6 z@Vsdu-5`mxyLf;TBmOq$(AA)o!8@iKj=~q!n*zNP5YML^-t(=I#=C5U|1OR2Uz?N; znwN9Jl`WtAe`*Ydg>9dj=JNC4$+Z@LZ`A$?)BXu*H%-PW%l3SHLS~;i86R4rYC()% z&RuBjj?#{2qF4dGAnmo2(}AzdG3D`1%!%_g6HAKEpLMR()UnIR_byf8mFzARE7?Ox znN_m8RIFs*;ssX8?xJG`PMRVr8OwoBo3q(tRo%txlXKNZ9GeJK&#U0;1PZ|7|@(H2&?!dT6|c|nzNIUex3hP=KFc(R-7V_ z^65e^jZvhn;oU4d+pzSSstgHu@&H~_ug}8She7NVkk<&^g7&#Ud5zZD@$*VZRC$fS za34t++lL)q=lAi%$0+a%bg#XfugP)TjJ-zucU2y#-&HXJw@gU~?%{Wd!3TH&TO60o z=L(O%%a_{U512cV1v1-4#PH)cvCYzh-wTVhN0bI))X8{>N`qaa2y_a&i01}G zRae|VG()ejSnDLU_Jc->Gez$>6XQYpRHVrI5SWP}V+vkjM$AMbu9%t*L$FFIB&wm! z{6h^h*&;$Ppv{8+MJrUC!Lq_Ew3f~(u7bJj`o0FOYMQG?h}{jESNz}Ap!vlAoek!U zbtXKAw4CLmkLN_0S3|9l8z>CxR&(eT8->bXG4}sBa$2lldwecp&tmH9_u&OJh|6QA ziT1ddk3GIzq|Jh*G)z%LtqqzLmMGk)22F>X`JJW)YOz;{0RdWd4ZpXqUh}eo5)YG| z^_oxK-cqmmqHnj?Yt{L18_(WWuT>X7Gnc~k+5)(R3$689E!@S0mU^u=AMW5%bG=qu z0C#e!sa~s-376Dsb&-U@daW*!a9`xx%B*GLFolk55zGC;!NmiNj$WtGp~&mVH#O7J zfpX?$ z7V?O~s(x1hcY!6S9ryuD!L)^|R_+`F0BJl@r(wm|iHuoAPs56S@_9Ih!PrTn?L1K} z(y*e_{9qIqwlsti5E%oRH4G|UG_!PUX7{3Q(ah4ZnQg@@3_Tsu&C^9QBheHpX0bUv zF*pV>KDH3Jd4mK#K0e%-9Qm3*E7eGr+6K8M3%>fUvY!v2Sc8wxmdMVkfbz z00Fa0K*3N*Tu8v|PHBtT&2GXbc88^y-Rz<)HI(J|`aI`3*Vm3A3BT`O_WPcrXF2$U7JF9nnSO|4MsOJrfEVS1`nHoGVWSE*X!G=gRkH zaNIt=x6m}W)@xA%yKq!qSQ~A>t~X#jiT$c z-Am~OHj}96I>E6gO_^6lDl|~!1?L>F8cB-0;LPFz4`hn(nx{vyqAWN!tTBE|pShMf z_Qbkkt+B9~I;6Tf*BU0BI_~8mxZ0uaCO?ujY5Q6u;iYrNso!PS8VMhrFEq5qNYYm> z^}FI4J^Ovc7U3?_NYOeGTUeuKKb_pO##l+0jZ?qwUSq7HGX%OuPfpPozS6UO&#($O zyNA7?KXB@T9@QQ`aH2hYjk2mC`oMX=b59D+FQX~EQlSr=Fs6YoXu4v48M(7O6(y5Y zlzZ8(jImtJ#Cs~bVlrJZ_ z;LGzcwua~=SKhTJ?Y00LO+awu2oMzF0_K~x1=7&Zm&)yIa~ENBD!ST~4dUp_?rGOz zMW&|S)A=R|ecD}#%TYR0u4LPAwA@JlFhPD>uh5Q7`2aIY9Ay&}lHV!ZAZ zS2!_7-3ga!h^}xZ$L&dDVo^%zv@}2Tk zwJW6B`qvr@=}KpI9C}K7D|*U}{8LxHh@Ns6HxpNWaILYNt`sP&Rm^b}qib*0S6w?5EvwOpzPlH%@#aAw)7T%K1#o% zZMRbT8tR+9MEheZoVBowrnG2U1#0$5+6|xZnLqurXx!9T-tuEqNQh*9Q@hzZZG zt+gyE{$jL6Sh((4g#+M?kCnv+@(mC0TeR}K+#lAb^(1DF)`vnEfC{Z|>QSf_(Kr979q1c& zPAx4g4bu)7tqGp3x8&`;p{UktqnolNafTMDMRji{62?EcBaxQCnN>BBhDZ`G+|0vs zRxPjBGnT1eqa2nK&Bh2n>u6Qovr!|`0OkMhY=EOQYE9kV(Hh}N+tHXYMdROgUgKy7 zm2;wEz&BbI>fuwULbI=cL*>Vy%Dtp023k&30mnBVqa5da;<)_36OOYb+Jd5gv?Xx* zb!f9J`SD`AB@02?lG7LOv?arjWz+~DiYEt08$eS^sSiqE01qzzcB~k{bO^{A0oH)5 z5#Xj{l|7tMN=E)4qhxFkiZCc?QznN-n}j>uccI8K=_kk8O*$52nUn)rCOvrEPMb7r zkZqLE)(mWC6$m5)^nTcATL90X{Ed!4WY zg*NwOT+%9Lg-5G`Z%11KzkOV?RiVh#vI^VDL@oYtM>2;cjvgnpz=4XfjD7M1+c+`x zcdE{1G^)hZDF1(VGaNNEX;p<^j#dd@j{coZ<=H#0ayu7!M9@0uz|p!;7mq*}T0f67 zyZs&wO^;1Sfb@va_Iu?z=aU{N|L=_JY>GBv^8b!D1#aI3b(Sfgfh<$@KT#D450kYg zeupW;2cV5uwGEezrG473Eh~nPK7%1wK-mf+hUcMd_*k-IzEwe!JRG;=PX5gp@-YhU zRxO8;0gk91aqQVK^n($0r_EG48mn6nYiL<$;vA)DJXRHHOf*Deb#vqKgjq`^u7P=K z3&FM5P9n$1-i#Z4c$`w=8WKTxZZcX>(B~D4dcR9h z(C4KR7tL2?goh}j1ewX?ab_~kqY;(3vfo~s@fZqnl8C~b@1XL-i13_+Xp-L75sjtI zWGvEffLXgLlB`YnfMT#jw# z^!*aa__9jhjG3qaOTpwL?23NL2eJRM`oBu)PIM`LV8w{deBWIT^UYOrYRya<4Gk}iz|!}yGXvwgWTIAx8Fqf(hc89c0j^eA$pX6DnS41~JKqmAV{ zYps|5?;$>;`Uy5MDd9uA zR+XP^*5by{)#j}csrYNGBkh;EScfEy_xwsr+m49`M9i#OI@Qc(zbi$t1Y^SQte-Ug zjD%hYJX@t&hVY4PTGtvY=pmw7#UELB=~g1-xU9_Mb#fr6vEvc^{=>PAEBQ`nsY9a! zEMZLHIWdf>^+bpNIqKazb&)M+Dp>uKY`|4GJ|u zUAEWLVS32DNHHt~Ft`7%_sCu7Oz`4csovin4R&evtk%wxZ<5Nd)D^XMUw&bY0K1yQ z?W@D-yLkGVr0Fk#(>HCc%n58^T28;(YT8d80#>dtF()x7qaMnDNrQ%8a*$*@RBh;&RtUIBa3(>AX2jD{3SU zm)V@j_Dbk3O009^UKSeTUSc~c-BykBOpJtc^;j~(p!?c|H%dt^EaV!(9S}>%yzgk| zkT8UXLzW!mbWATmtkfjSWu(iF9@=I^-r8nAO2y*5r)R;>-B7!6DcZO^9-5eqTA!sp z(}@t93NC;#l(^$~^@}^Kn5cOV{1#rA(^{D06nv^Q6nx4&p{CM(bWC|uPK#Q8XzU%c zJq~&J7ed$|+z7D*lD_piR7wAInZ}Z)1Veu z)BAg5=t72#=Sr?fNK&%iYOST_B(o^Tw-yh-5#M5j%OvY`jKI-nzB%lm$*}fMs{-tz z^G5naEAx75y~X`$ZA~WYJrgwF^Tn6m*1 zHlrQ4HB~E)3Qw!K?jjYuZ1e|epUXWlf;YR~nPsHkcRWp3By(WD)1=ppyR1!cQxnlu z&731blZ)$4vR9*`QEFw2a3Fz^7Xi!%bXTszKzt-us7{{db`h$@R`zS#{NdLsfPeSP zfx-KYdI%;DUux(W1S`}5G0=aegZZ>(suj@W9)3hy>xalgzE)WsMrp-p2`(sm;gFs! z#)M}=q{de*Ok2m%J$30$&Fmb$?;y=du5=v>$XcAsS~k(7{%Qp>l+EFKTA!({0;(`_ zo9K|MP4wipg%h3Q?d`Be1n?si;%P+`Uv4MHoRrMEG2yNJ5G|~s3@z`;3`_&AGZg#ds7M@U2)<m$ttw9ibw_8m>zH0 ziCL*_0ow$>;?f2kWI3$uO5)3Fp?b0lrHNUznrFHzEReFlu@r0h&LW%YHpI}RvU)b< z*>5geFI6WY7oL^1V^oi~5ytq&3h5J6+#~6towLhpilF^(zk?h>a(chbbCc6^;3LOH znj=5lpg8|-*rgb3(AZ<%R2rF-uWWrWDDTv|PTV}v+`VpE?o;C-d3D4Uw8Avfo!?*p zs6+#d1Sn|QqPv$cf6m5t!!GY!R4s3bhd(mN-@5T@2As32pt*J)spMiOT(OjSzB%Ip69|L&JT*Bn^IH zOtr0RG60C%{bUM#+T%6cZ_UwjNJ4no{(x>(vAes zr#Ff1jVM@6HF5N(lgkrMo1!l>o!Z>a5u=U3TC?{sZjGInO6-|hi}$c@4UrW2gm-6$ z-4(dvdqnTxUw&h&K#vg48q&s@;nbTG58oUxHLR|kh)gMA8aZ?|g(|Li606HCYGQoGPfCDen*O z0c*mP2MuqV-Q1QxZkgb0V9oB7wk3sFx=wtpQQ?}ru9k_6&IJ!b+JiizaKgK^L7Pt> zggtUU#k#aaTU;LOnZos~b43@BN1fPkrb9QOuQHi3?K161U6bX(@yw_ii z8Q1GO)KV=2Jd$QyiMM+63d2O`gk4=pFyJavCUZ!FawVA8 z@3@{-=2z~eg7SS@bPo_Bp4nwy&^@ghjmV%<)dAI_LN@$!2sjYZ011bDF6`zH$}UX~ zWR{8=n5YcG=>ZNCR(%-VIo{B)$#^i>O|u0cuIIc`R?zPj?n7aVlALkQpiqbHyMi>xPB@PT8f`NKR1x3WMB_*xgaWnHzXJl=JbtV zM4YcZ!wOQl_*0sS?DkU3cHPB_oDHVD85@KKD6ol8;0L}8>NPW%9cxCUPF`2Pkqmej zWx9tN6eZn;O4aFi%|D0An15%(Ac289ksN?Dk7mOge570D z=pm!majRQib=d%3eVGH8-=7Be?2Y zp4T7dnEDdrNNDxa>{~265Vv!3q3>VV-=!KM?&j%3gT9CdF|8q^%!$JWe3u}?I){q{ zArG*bXZ7NogL{TvC@C{1fiYtmv>%B0zt(R)&~X9xPS2D->ey*Z4}z3f%3VDG)M0CfNlg2Riuvmk=p5faooHAr<*#BFjfHFYnX3In z8mts;pqExdD1G@=;O?(TaDRLseqv{#U9_qc^c9V1?(BZ9B_*Cn`nuYTKnHaHVw=ms zG=Fx#h&)&+)4>0Q9jTP4XNTh5gy0@@5AK2%+GVRostpLGbUiy9JxuY{cmB*EFN-C> zsvLSur-_|(rU-b|+lMRQgmn+inj97B7(7HLx(fd{M9*-+p9Jj{RLGMv{2;xS- zXAj*abBwVD;odcI$g#cOHD*ozQ0j{kOa6vt{L*um%>mE$F7{IKUl9CaoCTfv0TD#G z1$+NN5yUw4Ln$P>7wf1W(3jVX2@b@S*JG-i-2N<>NzfyDfVjRSMR$^PqWGTRC>;H^ z>X$o<5OgQJUbGto--M|&$)e8uL6J{6l|1<+dIkraqbP3%4;)Y^A0v4D<&sZ|5hUqC z@n@hPH$mWq>+vk$h++#96Ee$^%9Id)mjDL?5GD*$#gpbgg~A0r2~p-p2Ehd~7Re+2 zi!B2Fi|Ni;4U+sqnLqf-HpV7Jw!tt?(v9L*rIlrwNl9+PHq|uwv#=iHQi6vQr)YW* zoCbTMXpv|VIZ>qq&Qi=_LcKN6*HCm8F6eEbsut}>@{8qh4mD+JVA7r43)$nEOIc0P zJJCdUZZQY+7wHA zZb46#9hnMjHfixYg=9u>mlOgdnDeH%(!Un20IRT=^>?ozR0(P3_h5e|i~+@v?{Kh~ zHFxkQq!Qsw@8B+qk*pXZ*ux&J4(2;K0+r@TLs1C@R61mr7J|jZ_b4$e=`^lCfFxMV zGL$C}w!|<4bnuHZ2Ia(;?;niO2v!vGg~(K22odJ-L!;HKk+UKBBI#=pP@ zQAb~Y`+12)6i+xUfo^3r_r;M51W1L!%t3hpeUp%;3kx=6kM94*@udQZij5FOvzr1c zbpR~0MR$B_%$vcH*5@K9Z-K!~2lHPr6hSevQqNIZp6f3lkA{kh@K(bV19JRl;S4^B zJx`7lWY-t)$hZ&@8Z8?s>6uJ1m|X1MrQb-NJ>(ff5t@AHnWR6zYRi)u0Mb;DrfJ?% zB8I_?W_g^K9dQ2kuviGw{T;H)7-Qh~Erk=7G*7dLbS^ArA`3fsj>b%4LD$NpfJ!;U z^-Q3kO0nnylOfG@UhF`NNjct_S&uKR&UIc&4D(7Hf7Dpm1&f)60&g2f5t_0`u}u?Q z^i4oI1QVRaSTzJ29FUZQYfeMan_~sPlJ4C5SL&}RxMW>ASeWUx*9#Y+7pSrx5lNRA z(%Q{~YCecmOa_=mrUU!#rJYprj|gZ`V2O^RBn9`-v(H>ybLj5-e-Ydz`nC2ze7snD z>@ZVe?;S@oYB3&-22Apt=!=)s#TC&vDeRD@D|FCxYgg3ngeALp+`T`DvDm*>0z_DB zFQQd)9F9jky@TO|T|LbDGz29_FfE4OL&Gy^`|u31q7%vIY-d) zk1QIemLvtw0JK@)3EpJD+Z-(8|0fp|Q|y!@%#}*|=0aH(|1lr!|MS@N2ZG~EA<_f% z&|RlF<&fo4A6RA*dr|yPq;dIAAT#7wsPpgoVIgGD$Q%|hHAd@V1NW$*hTug}eh8?b zC!5_>=t2Nh*ub*Gz*U)DqxZY}n_feiXPIJ%kn2mZBNb$F<^-97=O{8z1*C-ZMxcbh z&b4t_#^PD%F$6P6WuS!{j;>2$pyj)mztOdFQQ;1z2sA<2Ba9k+#v*(u!imKtmI!LZ zB_IT$0O@X#KJ@H|#EbGZ4tP>v^yO;Ii-b{w(w)N(JyVCj%fgV1l3)*Fd_tvi3w|-Y zb};|hoT^P52+LBD3eyLkt{6i}d92aJO zBq-Ql62oK*zpUcF2&KOvM$nd?>MTM@((B+|EyYVmLudiEH2LEqsU&DW82ujkp%~zA zmrK#rv8%?8P!jhFeOCgGh|9Ahf+JFQJ`#6s;1Po*TJ;hgJm$O<^o5#YN@pU>H$U&ZIKyi(SDK4U1qJ??sFa^`|%H#S%XJy~<3RCe@XXuyTNspMmW-d;xY&oj) zkPSD%Bf_g4%uPD1iidltO-gk^teq{V6C_@=-QIGWs;rwwav9ZwOTns_z}HQ>i1n4n zR1>DDQtEM;dD(wI1x$wsbeavN9)i2eJ(eA;j)m0Q#&|8pWjxtjKvQAXVLw;k4WT3l zLM(BAz0meWHTU@BqY3l_V)hGFw%?9ORY|}_=0!C91dpRjwoDgRr%=xJ+b?i zqcWM}qnVn-1r_?Z34owegdVDp@mY%kD`NQ0LNoj}YA3|H{rar` z1#dry16mcPUU{biAdl*<=OrdEIOCl}wbwUxnA*rnno;WA)OrULWYf^37C*__B3X@q z2@z4}Z8KIz$0g6o27p+1Hpl#y>Ui_BK&$BOmEFW?Tbs8f5c)6hZ3SeN#zzEUx*6=)-J#QT1h;*X*uG;g4Ydcl4Hz= zaHcav#h!Ix+tj(Y$iw}fncwl&x-lVle!AK5<~zKJE)p&p!w2VCt%Jsn~d*6!Q> zLUVj>ACaH&b;{UaED^1>@$U@<#bE2t^U@7u1a1=9&<|8r+~aF}bq|e~;_5bg{%sJA zC83J$udLrf3s&db8ybTCp^C?<@O+dz3q~Xsd@QDTT9fidj949_o!x7;+qVtE{hFjKxA;oBGnz2g}&ld<|#@6 zK4rv*LG$)Jr*$0(-oN%-#k#hW&Uppylk2C}oY4(v`~8F%+c3d8w#)pJf75p#_8TAn zDlT?8oIbUKXzW&0m2$k2X*IZHe(prGhdNbkRbB0a9>lM~`T&6~tB^4qv4-H!7;$Dm z$KCGxO?p1D;a!f?r=EamV@%&2H#VV(e&k5zqH=n(-_wYMQn%MjCc)Q}I<~cYJ%RGd zFfHa3a8VzYd|Zwndd!Gt+T~`|Ekf?QRjA}ujh@=#ma9PhGeZ;;Ze63}B(~9F(ET4- z?)2EDZ0WdS2W++~_J1rN_i38`PF{o|iC=nE4*n<$lpByjb?Num^Zgv4`N@~N=()9b z)&#?9jUx7Zzg80*v#Pzpt%a!H#!Ivm^=#}Xrsw5Zn(I<8wBR_fUo$cMLsIi2wNOWMNluGTh(t?MzB~afOWY~J z*^ZdBlJM7Qm@KBkfs)34b^AKdBu0%(zb+Z1xZ<}@MA9)UTZv4( zl9v1ud(IQBJj3X|C7iEk9OmW-Z)p= zkoRoyw4RDid|lv<^IctOd~Z7P5iNle@4V4^yy(j5pjP}Kas6*$fuu$6xn$i$k&K0% z)$<8*xp!$V=87?c(Hn=!=h%&3|Te_Am2nMWlbn8el$V(A85}Kx+bO~%I%VvW03vuB;I*^0hVvdGoB6J=m6rA%$+*=!R814hbzgK!;1R zs?JvN!we$Bbz6zDiwQ0VtTfH`dmJ__-WOB>+ zrk@3v1kz!?@n&uZmysTGF3F|M$aN2JHxx#PlIC`TqBMOVXPK~$#VR6co0@@&(5dnY znLxRkfG;}Bcz$Pf$U5oH3R!)5cJ*0;)qnA5TocVEn40abPD)xxWukB1v^x??5g>i~ z&0aOaSL}N2@#KEV%=)}w2N}A%>4#0NcVB2J7Jdojt`dAbHZaK(u@U~)N3QgPmtbbj zqXlpKx%Uv}(W@jjHb}8*25WM$nOoce{;S`&#X;*J0YlJNgzcZCf}dj0Z8wGqj1K|7V^II7 zHt9SHitcU^)AM(6Sx?)0wigs&G*c^)HT64@fk|{mY0Ipxf(c=1Q?hkcnenK684n7O zXz~O?yMejTDc=yI!TZzDZ%i_{IQ(vHr(fn~WWVWP>RX@%jV^I!6!nHEk&O?woDv{< z=cww>D!l@6Q~g%|vUf^m<)>j`4c$QjZQ_ z{#$rh=O4~2j?sKV#1E_hHMbwD*{$<2=|}9UY+7bv+zxJtu(}@2WE6Z{-M2lOm&8^y z7e}F=aoC+ro_{6J(uTj*6p#zkN`)}9JKYGTs}l0XoqE7j6Tz(z+0i)TU7DTM>qgx0 zcXHVp5f;-eeY3@lVuO1r?h&}u(!!n(Qst?i1XgrFthS#ZyS|IHdEGMV-&pu-|N4Vt zg7X;TvrX9AsVCTutmZQZLP}XHoUg~Hk!mnp9_kK#S}5SmSZsj;>jX#9k#LQ4Bt)o1 z)=p=tLZ80Wf0F~o4&UbByli47Yrp5MEp+I>@T{BS6bh4So)xy79rw>xz7X9Xv%G+9 z9YjKEk)Gy&nZ3!H{1=#b;BiygqXOKT9XX!i^L334>^Q8MinbVbRF+|?sYXj!9(GWf zEI0V9a*|53VjoMB%~ET{-&oA#n06FF*z?~&M*XXIroosT+4@&L)PiZ=G^?_`b~Sw% z>bgmeSNR;!<)$~fCihFgae73+lFDLAKt|hEe!zURQZEX<`Zt$80I$p{=CT0S{=hgijkCyiy#@B10nR5zFT2HQ6Xk|aj4&-_6Vsl`vZa1VeN#Kzol zI2_=Mmvtb0hw{4N9r%I?+vm=1IPhr5*fpS}l1KrU+y+HkZ*lBgrSmJA)R@$|&IxJ3r!i0}^4 z%a1)RtAA}{W8Y^}^SVLpR(m1wJL>B9Xy&5C>B|%U~vsO|nDpmb<2YIM^XH zQ_USIK9gfjmJOyq0Le?W;zhyOyCA_cRG~QouJlcNhD_hz98FBGq9vf~qPJFPbEotZ z6wdM(EQfUy3{zFHPNxVGZZ^sz%W-f!v5cdS(G;HFzlH#k$6|eC9NDC_n7sy-$A8Mp z605w(OQQf6mNseaQuSF4R53?JR;nV)j447AV8%FpwVK{K@&`#<^1_ehezoJa!Evah;c>IRvedmC zp`$3yRwgi7?fy0A)KGq0yk>+^VZVh7v0rcajED|#+5{>BK|o$#Q2eoe7UKX{`) z&6q{;#VA3R+$m$YS2suK(wvrqIV6FI-6`2qL~UL}6lec8)3JeersWKiT6O@Mw4kXA zZW8a0Q*+$EI=VU*qP4pAEx8MBi8et2cm2GB$nK|2HccfB%zvc_;ih^XX8p(iE|59x8{lD~dM@w0fCJ!moEf0Pzh%ck9 zpK(dGJ``;g#7xR=^3<^`EB>Kqye<45*O~l{lq~Bpc#|DXh3>ctJ|u4crt?OhG`$09 zH~AT3nZ4wOAiV>wmzuf(sgxIU+_2RK@S;gXN~pXn7dU{?$xOxuBpPcKzw&og{|kbx zmL$DftaI+S4|=K|cOK#t9~TP}=VhDC5@b&Smmorm9i)t7{?DI3_kaT5m0jS$H(tRQtWU&JO^jEsG`N%F84 z^+fr`K6RpTL;z^Bd}=e%ULLlrDwq9NX$v-}r~kDZe`ADSs4+K@Jo<<=CVu7((|*Zb zTlgkmBi?$SIvs<8T<3vLC%6!7)BATl({%L$N3VI+*H&$SO|8UF%Zzzt=H^4tNGOJZ!j*=6vVjYW1?mYl(H>)~?0p%?b{Hqr#vLH)?(f18y+dgsJ*T@L6 zC5#4xnH1pg_}JR}=zKX)+DPBMhSo0*Ixg)hEl`;&7SXf}mBc2~KehRhF5@LrM3+vQ z|0eXs1Qb2;+YP(M^{|_pNysOag*lGU=ddvU+i<0v`rKzf1REQJ8F2O``6(pUzO#@EqsW8<%9D3*{($Z9#&6L!=Ve)@os7B46oF!(J#~saO%^ zs`U~)ZytDmPZUpUJK_Byk*XcH?!1fHU&RoYx^7}tc1fio{J1CDQ!~Af2fk9-&)r4q zrPI&P1?#Mr&r3ebs*leuzEaiCU2qj=pZvhixH(KfsZK?WPk{4&g8vvpJ&n8Gfnr*s zmR|L?pzDSbeLo8tVnxth0IU?DB_K0VPkoAjIp|Ip_R1=HtLMos%|5+y!JB znG0IO3rTEztxtkgG~sN%x@r<7Y;SIIjml0U2ZviwWHgz;I3`sEzP-n?i ztdQ@}b^##V>N3=%a(U9=pG@Pt_bN??mh>`~^Q}>-JN|#G2g5bolTQzq?%ADui#_AD z$tyk%rZ-JJ5|U4kmyC8h&vMA)lZpN;x$tc-hy}+lQB)Lw_v^kWjmo3CodWsuUjdf! zOYW*YPbsNpWJ=A)(k6-TKE`X#@izet=?AS2V!d`Ovw^yaan3!Df1BK&>PXt(o-+!X zIa^_BNsQR0f<<)`i_)n>ru#)LmsNjHxGj(JHxMz)b*5V`j<$aag8hSx+XO^@6ab%f z4QFHI_J_i@dEc%H^9Q>+f1*sfvA2w5s2(r2*8^(`nSfnKt$lBOh7Qb1OAtSQiq*aX zPLn>5DEw!59r4KDNfVYye{v9y_k1n_bU*X&MQcMbGEM$Y32}?^6LGUvb;|N8R#rSN z-aGPz$S5)>C<24%VQG0w^>UlVB1yXmQOTrJ^gdM%L7C2P^K8q-i?j*2O_0;Du zK$m#UZ+P`vlFh3>{#p*8Y&#Xq4{f-TLQWtYuW0?y%On7A5D zs|CL}R*YYUh`n7A<)*8(Fk}lQA4H7ni6;|2^`o2i)TbO4d?jDBL1A)BrY{2^5}gxy zu7s!WC=eWzO(ykHmTTB%YZ?WxO2rsM)9uH#G5oF+=C_5*(L+cldWn1W(;BT$kifM^ z58IHcsg4 z$7ZWYpR;g>ZM>gcH(;Do&IL^SRWvOxdv?k?1MH;#On*dwr-DA z8`@jaE_TG>(QBh8ly)2#78pswGL)0}UWg+P1?5@(vD& zdmb%z(_Un8Ebu^6S zrQ1uMr+)&k{p|q)4+U={$K)j>j=2qr<=xZK^MSndTWfsxP~(p!ZzD6Xh7dr8<>ZKH zz>!5Y1$r#M5#3_QhKl&a-b@LT=4l3u*U9B*L}f31_90tn=KNPH4Yl0OfBf`>N-=$C z-{CZ{U5c=Q39?+hvB3=>xUGKOn$HH8A=FWQ8D_I<9opLIe;pUrRME>Aaxev!I(9g8 zvvu)L48vFrXePArv|?TlZK4HX)&Tnv5f-AjXudjtf3*p*ByEW^@@|ls!-*CP(&u1| zFGTAw{qaYlZl?&4qhOR;w9dlZr<*REQQI6!tj)7kIU)}3$_xHeBh+2yZ!Xiz+0AOWN^e}t-YpHIA6oRzH{q+ z;VfS1O%k7Hr4u>QC$z5h5>@jeCp4a`iA1ii+-uvmA{ixm!%@^}qCfWUkM_2Qfe=3zpiY3Ew|Ob!Wjj!HyiY=a-BIFV0nUna{@9!(|qJWx=;C7dKFTKd@XtFYaYIgBNNVOx2ld6^>5mOOOLk*i{FFjyAJzQS_L2)Ni zyTH#^X|q+SQ5=RF{U9bYUXyFr7|0OAe}XR9stD9m^1R>i#`Pf4YAh%fw2dKVo97iA z3!&Kmn(xFkAu1;`?}2bMWk%3HvG&lzaH!*7)=SvtKhNYrtxZ0%LkjE0ZV;P9)NR^^ zUGE?lcmAHeU1O<#$BFSy9%I0eRNG?YM8^?>QHtyeY-4d`(nAzKkBSM zb%*+*{$TKLBv% zS!6~2*&=AjL$l#`K(9}db5LeCjqg#mGU42SqcyO(r*w##APSgyaAz+oM~mhEH?(2r zQ%UkXKlp9tuR_@{uWR|l!=41~-y*3BwB7XKsXIuOaX9zBTYE+?v*Jq<>-%$m7#K-o zs{hUg`Ti{A{8zbF{f))~ku4Sq*LiJ`bA)EYgItaAeYtv9lygwv2E$I+f@Lv9W34t` zr}-n->Ye{vkIndti!!0_l0c-DfIsvk3~RY7z+{UDj~{hE*gxCZf3fkW&!LM0_d=`B z**EDsn>}4`7q9n+wx*@5gcx5eHDzGvppLi9Yja6ZF-SmZzE_cgIp-t9G>>U8w!G%d zTV`InXWenUtmdLwR7AkH(R0eES@h@LR7I4NQ>;Yz$4RZjIThMBOn6DKoApq)@MtM5 z-sJG{dum|W2###D@Wu}!aiJqtfD4P8Txo{y*HvCN{z$oDExT@I)|wZ??il*UDQrGJ zr4v13Po4b6{3-3AUsc7rg!T%c?XQ{Nnp^1dOn{K=9XAEuEyG%h{Q4;>I>GlthmV_d z-0SYzQ-8S{rH?)w@q=21IB8`(TcEvrED*Kgsr8ob{98np&l-6FbgTwSd4W+T?u98^ zV=0e2w%Oaq-?#fVE0v_J`UlmjPO)_^Y^TixFa0XRFF3xo>d0O|1_O(+a<|Ab>U@%{ zwwCQ}L!`NIxi3lTYs)0o2j6Ys)Kpwq6?f&?lp%C46eaBVg|3>qJ+f1gPr2xkPD3qx z*gOXFLk|-tzNc_6cv6c84ow$nxbXcm<=>#_Hi+UHL~p+>#=aRb>Vf07fxXhmn4ESqYZk8H)$q_ui2 zv^puGy_Q4wO-ELjdpAraA>$lV|&a!kXiLA8c^7u6st1BkrV+gBD0a?c>I917O zr)zK2mj4%1{_vwT@b4D1H|i=g>S{|QVaP&6u&Bcy@2nD5DABe{Bb)LX`_pOJ#gxo7 z`^igNIj^D)th8E7L8n@7Ob9eZ<%L?+?-%zzmtyAKRmDpfB$0)*`Xu_&6TA&7g$qI-dd(8gRL8L?AXX=G zM!BU0%JIQX=2}!D+X{AH5t7R;a96;-_%jA%qC?jAMLz> zT_=3;lL)`{MpNxx=#lrC5*EhxRdx+6c^~i#dB}WF>H}vDA6ec|fNm4MCz^G#K_cl7 z3ycRk*%mNuWA35-l?St zew~lg_9Zj6`+(tzf%xR202&W*=bu2>U+>yI_WBMdQ@y3%7`7vBeg!gI&k{EJcOz4lQSJ!tR8fPpx*vRpu~=4x}Fr+nHqa?jZ@X5NZUOI8651tO`|%kbO&nFY;oX zr`Y81N__}Xe@j*LGit0+K}~h>@UBlA?pE~GPb<>QSb$I26K1knQ+~GEho)7)o#CID za#@>Vnrw8Db~UqR>S?%D%h+`rsm(3w8ZsZ%S3ILDs_GoAB)AVYEc@}Ar+d!G^kd>X zH@!eP%^dBCGM-1I)lfDz2Y2_aPg`fj_ROs7Y%azgs&KAyweoa?uW>1S0!-dwgF8WH?EAvqk#Gozq7aBD)Yx{k2MeC$D-kcK8RT$nhZyVd{ zURCm%Kv~gk=Dy3>xh2z1d;qrsKWM# z!*JLS%@_OBSW@hu@dc<{FKn&&)k58JPz_=nxrR|hEgY+VVsshHb3w?)y|F+t_`>wZ z0(<&FrY~7&XudNR&{$r%aO!yPkq4n|R!6Pk1zLWy1CbWn{gWO`!|iaR+L&4}YbkTF zzL=nyNlT5ac^i>JomzUsCe@wH+_#b;9|jiq;W)apc!8Oy4eHDG5A&EQVhU zYQ;p_61BDXvbJ3(n7j$n+B@|dfJibl(O9zp-Z#uuwu3|@+Z1gAJ|}f-Xh~lTVNpQFC%NxlyhW$-{e09dm)knXwmY!W>S(~@!@w4OpBtj35tkaKK<-cQ12ei89 znLJz4iu@28jS#L=(%ZA71>MZNeX0bRIBrV?ThpA}VDW0t0#WT4dozUu$du$tnwAFQ zj>wi$_*hNS4=#ju)rEG=^Xc`4b}{nHh2toN6kXik_bNx7jrAp6(*N|1W}C&n+MK8D zar=8NyMumf>SPt^e1(l`hln9T==Sooz`*b&*+~8S(|0W0iAOaqx3|#nrBR=>Wks_E zoArcbPw`dBZg9Elj%Ls++++qnRH(|1q?3`aAilHvBmqKoa({IZXxvBvOg zOb)F-JVG`v_HIP3tix!+@7C5VRg7BO#J0))pAkD&gC(32z11?%!JgC6L4YWYDmK-f zCd*qcEG6zS0z@76un5oNN>3Erygx+gt|YqmPa_=~h}ZqGR1`x`8ic;;VgfsrI~@Bg z*s@klc=}K8(*6T>unYNKH@+ref-P)27%|J!@$_eC@-zo0PbuYqA^4D$oGPMV;gz16 zV`0O-w}E<4wx53Mz_3R+_ELS0)ftNWc}}>LrAoq@{PU+86uXFP?a?DXw^~oG3@zL2 zBfh)-l4E~HgTb!ZaA+2xnIdid#1;Gg+)*o`lFUIG=lL#;-&PG*Rws7R;$0D_Q3U!WN{!9a z;7Z^Kiz2>5Cw6rQJf4jAK)3pjV9E;iBg_;1f=49kC|y4G{v(UBA-|*nCkXnJASB5= zpUb4RajNaNtmR)j5oMd8>u@MloySy{{w}h8R)4&Hj1pL0lXCy?+S>=*5kK?1+V1gD z>p#GZ=hXhWlEf-+!$}18hEOo*8?WSZu@FU*M8;!{CuWb(6qHfpkO^6KZ;4igO+3IN zojEi*#JU9ijwQ>DY~sDjmU0JGu4W#{qTQkzvaPL|7iS(Gvb*|7F!y> zCkU?8?PS0cv(&B1yeodbL)pA5cE00$@Q!HI()hC0q|7?+aAiZr@YlVqRw*)pWhH}Y z#A$KkZt*YV{Fq~i@^;Qqbq$ew{TBJ0m|Hwg>vE)Wq61F0RA3ytd+E%J~DP6i79Hn?VfR(2b`C=l0?=B zmAr+Tjw1-8)NMWD1Wxuqa#87mO({$FKhht>fa4Q@>;E3tlC?2xJm5)K>XzN_iTnS| zLb3<`v0B6pDT0da=JDGLB9r#N`WDrU z#u(V)uLgUd$+@|2^j6s1eTAY<&}35wF_rfgbIr+q%k2108f@(N2IwCm$+qNl{kGSd zYcS_&nX>4LnC~Fz_k=HXGwAn3w?x4m5p{fx8vJn9>YSEp>K))1IC3MeaSdcRS7Rvr z;e#R-Yw$n5t~;K~_WM7`-q|aO%o5oRFzEIPjQ_mh%!)LWn)3;_G6MY(V zU>?rBY8T!cxZ7JPfBh>~o;q`vqogH{l3l4s^n#y<#ystTDVU7bG>6TljxtEGB3XuzP$xYh`g!PHlr@@u)d;6==y*?=hE;M=X{gCMPx4=S zSE}cZg{4V|^vP{0#wi?MxrGe$T#c`WPu}v`=#ZMse{(PUxsTspzAUSr7O6*tw=4_y z3Yb?S9we!iIB|+g;2&l5ioXoW*5ay4S-K2c^K}FR^zJ?vKgZ@IK01Uy(`FV|nT6BAVh($J6wv8Q22?(dejtG#OqI%YGgt zGv@)`35I9@-bWHGo>+2G$BQL6nDBCPB=q?x@g#%r_;wBi#{DJz@b(uwwY{iX;1RS0 z@p}U`b|+aDPjJDTq*J7;m%6(EEJWQM9j^#U>&TUKdb}&Xba;9uTxA2+s=~n&s zyyY)(ZyY`Dr=Yi9b->ZhhJ^AX?sDt&U+4i7DGZryT|H9p+fip$Tu#P9LgHRB1M zse_Tf&YY*XX3yn^fcHp@c~@3@gg++c_wv{h5Vl?F74Gj9Ue`LDD``4a>GjwLkDfKd zPjI!V0p*KPlS78%DofhBZ$(4ed7742MuW<2K^U=qPqde_=Q7jI$490=vU`&9t-Q6& zk6Ld(cegI>yu-n*4Q`)TP7}&mZkWDd&(j6{Ya8OuZ);oi5#V!NVgcj4H5%+c?S1au zIvw|F&s5%^rudhq(WhU$i6!2lmYQ_`0syinGtV`#X3rHm%7TjZNrV5m; zY>l$6l=g>%7k#h&<>{9OCMj}kj81>EUQR1LIfs!^^Qu~rJP<(y_~g1@ni;o`hwpvv zE&Ov5m>!h&)%63C8fD*BS`05z?fw7F-zhKIea#3Tyb$WSv)ORu(`txtU}ml z&`?0iukkb21i@S~^4=Q9OOsti&NapIe)-|SbT}(cF5tY zH(=QTj$prRN)In$&`4~`QmTukR11e!Vf&cmuwtYvfbEulc?c|f4{T9CSlLFP6}yl8 zBF3b9ICfyogQ07|1MTI#V13=Dz=+K(zGnzZ!%P{gsqHD|VkhuR!(y+7HG2@7zCL@# z*p1SjK}7AoU>M_T2%nzq!~(#ekYHS1Dk7 zG-&&HXnXH3a)_Xs!^7%Artc}gKC9VOOE-B?7=a)QU-}E}1F9elx;fGXUP*T6JjXnJvL<*Tcy zwuTW^-Eh3I14M^WiGF(mR|rQq=NkjpJCvLdS3=UjBADX2jzras>0+`Iea$S0(;;f% z4tx_1%`8XgSEi1;wuh~}siDzeOv7#6QN2s~)By}#{zcAForr~U8r%+6o`@xir=*jf z6x+>=KN}J|Gk%5%u1_` zR`qCU6>$t6U$LXWHC9>$bt^htDg}H`3p!8DaQIVNU(Q*i&Cq=YsmNNVXNGz{aZNY? zIG{`FnE*8G%*O6xIPVQ3fJq3&0mwWXkq&kvJyp7&3L0M3)1qAX5z6ITSc|Izai3*8{<$2884w@FO-b@IDw0 z+h=h6Tx+4DRfm-bX4&Y~er%b!>Ka5oK zG6V1|&c?a~)`Y>q?<(V*{;;<02uuuKrEEonAt>#|AUl944#-5jqqoXZD%K<72nWbv z_ZduMYh5Pf=edPfl@Fqn`|vqfiaql2EAzneMB+>3XG11yTHhL1qy{VB(Y;?2vCahI z&I`sJ1gPd0IW7EaDIb>EfQQY;|q9v)lU~hf&P8SD{IyCfj_B2alkd(l~hf&pF3_7^M2OL%)P7tqI zrXQg@uP9f5`$D^!rko-5Fn)l~!9u3j?SA@v-KN881#HY!QuOs_;B;}HK^A2qZ&05A zZV7@ytbQp18np8-`l*7@?kqo0wWM1+I}CBK>k1#h}Dbt1W)Dw zkpWuyri04;@-1){x%kp`6qDU(Q?9W-6TpRN&}~n?$Q7R_+Bv=opwxg0AO4D!p&LgOp7>*A7PW4kCP+`1-H5KAHe>H_b!AiR?Id$YD!tYgC z+HjXUDAZ&(IieGgi5fB$27^@CfRg66iP<_oV*>{FoFf4wx#L)ETG4O{W*=PvV9%#P z%KK&5A5f&@Y3w~gHY2>NeUu9KgOT=4`xP$zQNV8W5ynyO6xNdYs&j`?< zV>3(`pETi~{z|K;JsXr}+hOI6BW~>~nPTcDIk+thv(oml0SusfPp4pa5 z2ZYaDD4_+wtjqM30CRl1nZ4-F4& z$^B}r>)*rGQNDkK?Ld;bOj>kzoi_`&oPckVM!qh3<8{HcUVFX4_t+IG zu9)N)uNI51r8(HH_6uh_N9^4SPkxx=C3E4OoAYz8C%Ac~elH)s={FjtlooK-7xn+P zJXdluD$&Z~S*rbx#`TtDqgd8@A=iO#_!8s92j`m-+C>*I^R!Dz*x$URe@4AXY#G75 zWhA)rWvO1J$KZ|OiR@JZ(b`W&=`H!x?lE~>iRH4UeANwl%2C@i_#yj zB#Ra?_I>iO9+^{Xe}@gU^nokAIXX#x`=h5=wraJjXVPEfFKu9!W*f9oUb`MWxjR?l z|Aj$(y#28Sd)3#=`~vm;i-&XNk9`as7tSkH=QK^cZRw#krMx+%vK#5NDfqg91ZB(X z+_dxbR7-{PYc%R(g802e$~w1M8yv~~?M}|(LjC;^qa*F+Z~F_LDQj0h5z^I;dbjOk zv@~EPci@bwIefg)Q6Q^+(YP$1{5IaTz`1}~P$5qk`Sjlce_Q=htpfe0*`!W=y;Dm8 z>IIHmY!N1)lqd@7&1ij!wS>OXa4?1!xw0cb*p@6JeW{n0bBDEz05eBsUk@qXz-TY!y6YkqMKhxg%-=3Ik6G1s60Qj6hD8qh^y{2+lWBIW7*Ps&6!f+pAO^s z6h+FtzUnw;Guz%#mwne}(6>$LAa-#)xaF9p_s)1A$-419w_2)J?4o6N+b3h*j;VpS zI!bQx_IcxOR$D4Zp%?ACM?Ws-K8UFtcl|&{9`ZcBrq#X4q4%`uc2L}^&^nb~+2m6( zvD*#BVVNlr!P(%ik_%ue;kLVRuh~a{Y z%3#iquVc^yU)*f(WmwYyrm-m{rGmj5LGy^*TBfvh$@M3h_5|R$#(?*w6<;ZI-fVb1 zNFJb-pWOVy(7m{6>cEy^j{<()=iMsaXFREGQ)rF6{DK{BxGi~qy=8K|NXMXN z3y7d|j+ov=;r=K=ZGJPNg6rKiauh)CAG3ECKDd`f%#SxWSAlA^m85&6)H z1?_AS_j1Q^#0_T~FT~ICucg<8L|;gwr*(Z+7xu9=o-1bF^^9PRyLEjS8XKq&+q^4G zt-Z;_mqc+tkiVCrlh&mWUs}-)@xHC>Hb!ih+M7()c2UoEoy%b0gx%-nBO*el!lOW= zsgFT%zABuFbg0yNN@poYlCdrU@*|Dks}HfR$4_JFRVA~R`Qp6!h5ued@76IX#mu|I zUQya@!`53T3#u*!3HP#5T^FiLuI|4+^8gv`GBYS4vQ7_GW9_b4`)gda?3frabNvAY^tTc?he! zSA6S5#IP`qP_Z-OvOdLF8x}IyaYR&KvoH;kg8Q!7QAVg%k_6TnSZ+4C3{%46y ze0sbU*C4!DvCMpYJZA3@wfC=wC7NrB+`5X@$wrKUogN(AJK5F?(GrS59t2uW zi zoBQo0*SN#f`Tw#He#0#PI1jsM(evRGK@z?KCY>_wa6IORPZB2gEzWeNSSv;wJQ32+ z?U-s-K`u*<11!scnX>b`)MIq{;rD6w1W)vmNe%t;EuFCIT205e6V$a!oga$PZc`|Z zjRz)Ph*o`aL4)MbEKgqZt9uznycyU&U7%c9Xas%`;U0g~Y46K=H?mjyU+`@0WS{sN zF{@6dm!7-y?DDOF9Gn`BcCrZm_YY#{)aee{zd*d}#OJrG&?p>JQ+A3W*Rahk@R_yo z{aK9oXUL&DF;wmJOsYzI%qXbLJ8zOXwM5w#d{{BV=j?oP8&3oy){Kk>zJH_Vi0|>{ z7?^BPh3bs;7cYwV;JQ$@$rKhEO#%VI_47SxN~o~@mxn<~tL)t6TBFD|Nv)1PMf(XL z$Zah+@v=hIeUr-OPf?ns(aoO_jjdCY4T&-yOgzF-0cMryHiVv1wE#XKr2ypQ<1<&@ zv@_$%B_pYMAT>y6bY*q!m?J(Jx^hho#ONN0F_RXNYTYe#s82J&eYr;fR?L!@V}@!@ zE=*ojSCp7~83qw_6iA%F*77@un1W@Qx})>j3~l;LTTLmc0elMh6F%jDFk)HwY#`Pn zy0P4Rb?TbruHWm$*rq9ioR|n>Bd+m)P<(vmEpw(zjOhjW>h_A0fft>hzNOl3ePK#T zrEo``ld2`MIrDsvNq}9MRIZM1rr5w~%k-c)DFC?WW+v4(54@n2X{0B^huBb?dXisk zp5loj4IdU1v0Yd=v#>cFC2(gaAj{5G!AyJnP0G$UW!}x~`WI){Oe*Bh(eAgu%}y}h z2vDB1O%R?WSHCDRaq0sw@HaX!i!QEl;?QA?SS`LbX^hwib(1xX-X2Dg04jF_2b`GU z&^$!bV1i!Z4N+g}aNrG_7l2}N<3Lc!6;gJhGsQSi1cAQHd=`ksvI9~YN`+%7%1(xJ zH#{4!=^dJRqmi!ACzYGg0o4z{StXzqyiv)Z9b)W&tbYaMQ;F8otNtMy& zCe4ZqRNLNwAI%gSq z3xDm~{COvzr=^4?p8)Chx^zO)6`+zM95>UA%ER^(eQn=xT3MjbI14YPXIris}8C`|HC^3V>Qf>y%+ z-%t+D!IO}j-OMm_kRVd4+B?-;;MGPgFp(91gJaUrwM6j7t!~1o*965jxhpA~g8>FTUme;at=hEF|PPMKzSvg*L_*JF9dc~qdOjyS5{)*0|15nn305~6!@tQ80Zhqr+ih_r1{#wCXI3o?0kJOQJ8 z{f13#(N%)52tX?9GI|(Q+h~kl#1GAcZVn$2Dmppze+ObD40u{H8miS++UchPo1dS` zFmM_xP?*B@gbnmxnKc=hfd3-n_`cLoWx;dxtz%PDm+w20y9UCB8D9estv&1MngDM7 z4Kz?#cPj#^m`Mz?bi@@V-ILs0kM~$PRmZN#_iXN)OoW&~1!T>53M`De`4lHZG*~tI&hs{_bC*e%eZh0Y`Wc-;xaahH}C?q9y zt3=)X#L&AWv{=OMZ~5T{<;Qp*S1k7Bu9z1#*s&t~tjPD6plwr)nNr^#-q8VU!;zo| zUo`#sqV$g!H&tU^SGx^%KPDviv>*gfnhG3AoeEG=#R^dPHs3Rh7m>LNAAWl8fg zx~m#nR^9_QMC~nsb#Gn(38B+t;jsXbDx|Zo+eT!Do@2A8-H;0V1I|}$^=Xzr6NEQE3ZSoH%Sukz;9eFvdj+(O-t$i zjI&EQG$y-2+tjc}V5ifD0ZPek**c`7Vl9zLilhL@>R(utpA`FL2)DjEHn)$dx5LkB z+WyqJC6gW+6pfu^xU6?rZ571dniKqRDNL%8_yfc#O(|7-K+SF6&j_=~c4O`TmqnaO z(B%Z0u1p;~`D1AgK#@OJx7QbC)&^!>Tvaho;8lnEK?UaPpvy7c-xYt!e~ms_VR2@> z;zFw!DHCWzQda(vpm>o9%5Cb5-NWqlSO|-M5+^|at+R09b@3CxsIct%4*kn993iZ@ zPx3ll5zXw4;&I%6lX_JhDS{6lV#^kX#a?6`z@E^&KW7$B7)?Q>Y* z3Ga_=r+=@HetS22a9M^&D17+i{Zoh{s z%fyEY4*;O3sUS{>Y2?OZwaAxaw9-ZCrk1&$0USXUa}6jq1?nzY0;KAgZrBFId^E%gO!ON!I}9a(U%zuXL!MQ3KaMOUmfi+A zNoUrN&3`&C^%&%hdBSQ?g)MoW=K2$v*q3-AbyniW`o6e+{7unu#i{>C#4~2UdSdS=R4-z2#>~NQSV1i@ANCJ;vPA@mWvlX#%40E^Mp+>0w5#O; z#8CLfLo2n!0xR`GBNvfOpl^b_|Dn&P2i(|C^7evhV!>4I!T5hyEk81_McGy9Tb4OV z{+a(sC_qmzM%a6Gx`mmUEHGaq`!Nu-3tnj$O$~y+q6ebr`iI`mBnV_nT zR3S5P0C{ML5BuMUtH z3~(qOa*mx=HuQx;_P0boxR=Wu{SFHpKk7pY1p>SlsF}NfDtQB{guvU9!|x4kKY0ES z@Qg4$fu^MyAW)LqXh>%tEc#H^0^o(F)(k*MI@1 z4g>DFf>9)F8B7RUfriXbJ@((3DT(o1?Okp_qidHcp#D~G|63xCFT-^Bw2Lct1&Pw> z$$wD#j|lB~**cZz^<9L@zyh1^s14HSMBlFzH-pUXTjC>UK=+G)MlXO9so?1}VRwwD z$1F6w%q(~L=;l8}y;P0=GY*Q8ui3c|QwF`gQ9@4ptX(44xTr4W~2poyzn7jw}n>=`4~z?}uZCP$^z^_|2s zi&3@8X^VR)u8oVLz6bAj77>=|SFc4q`n0r(Fk`!KyOQSA24n_4vRI>5pus^Aa4y(c zrCd8nuHtW7zyNBuiYtL1HIa6Xk_KgHK)Euu_qIK#Qn8AfOF7Vj8It%>yKAdB7=uw_ zrJdHuu&}AEg->qlnzq-MnQ{%}j2XcXs}fwky7J(!jFyDt9|l>n0^D9KexYUd4AQW3 zfOX_WSVty`?hdKNJb%txsFcl?eBr*6{ZXIIZ5#;VW~9=9g0&Nu=rr#juXkx7_ecG4 z?gT4!J1+RaJNAHjI*ZTGY^aP#OXX3~H`=wMV2=pWWEutjLK9rjqc&$&X2^J}lGNv4 zm1@_%!jUw~21ms}CJYcS=FH{s%nXu@ikJyyO$l%NE4QxMmxvmrtAg3nqdC)LLLOaE z>^QL=oQnZkn8VabP8h6!F9B%bCsgItm(^WxLj$yv`uZnK$PB~yYC?K%AB8hBolXzc zZhL|eE3z40E3&!TK^{@td)%#_sKT4X@9&W0BEt01U8F_r6;K4g2?&LFtw*Y|PqK#6 z99i;r>sm14GkFXo-eEkvpEGC-CrW+ZKi(aie)dULxnV+miB@2OoOW8&aKVdp~&d9s9h%n=M9|t<uf(rEBc>c3aWoEMGs+{jt*HW7K~akch`^{<$*5oE_j4=HAkuO! zSZ93o1y9D4TJ={T*!kUA*0Ew$)NQ(~SZfCMA4vTa6}D2iAQ%RK+bmqjuG%nii8c>d ztARJ|PwBbXYmw6iSq)(%BIqha5LTOXpd4dD=Zh0QY=F|F zqh;QC>X@(lTzsPF3cT$6l<8QkLE|9)lTSOl1_<@t}mg6)P@lRvs_xs{ztU7CVg#+Zo@KOxss< z7XjwJ140Pyq{+qGiu?qNPNYRSyC$4*Pn>(l^)1>)p4f`@WEJu{|*f zY&H`anm;P`??p7>Fx*PgOcPM7m7qk5vfR7h0L>TV#NhXi(z8=FkCw@&>q;kEX7TcSiji5zb)T(-zZ&DRGrw*Yz?y{OUF9 zBww%k=if=-AHt`;filVfB6jH;#{@Mpo*zmBP6Qvw9oy@Cl;OXK3kt*BV!F03pE>^6 zvCnC$2SI~whgBYBRK;nJQ2q=7AtXEz#WuD*w;OnZv+w>Gz0L=Z>VcW{gtxZ{XzNv9 zhBWs+PCu|yQ_C)q+neLs`Ti@aMDl7)!#`285`2&GKj3NqpzD76K*gRegr_e7Js^s< zn}8_nEbCqdgkLS=O@)j58<<;Uin2^npf^?3lYqeUbvWLZ1Jev`uP0?0sENOHK8UXV zqWrZ|J1}f4eCBwhmQ5#w9k6PW)eoqGvxKQ_RY=|z>j`Ex>E^HKTEhR&}w8#{km^F`*X^5yvII&b?oc+Q$C%w5(yA0LUg6H-0egUhZzbTPyZ>S z&1Wn{7Q^W^+4dFN(=bC}18;P0tJ?7*f$V)r8FI>YqeYSne&_8Y6#_tSHd5pN=2xIa zDp^z??VDRtIyC0%GeQan=hd%4&pNS_|1u8#3+r{;$xe%x9N>K8SK2}s#b&4^rhGd0 znLi(pku~FNjBS0{ESD6>?+&isc^+1$6c-a*z?+Q~c-?4FAOl*y3TYY3V&ls?aRhJb z$$RTA>z><3jVxe!zoqE$mfh%bOfvoby4qm&t;**zO02CX4)@vo zVLXV5022dN1>YXXG06ZC)$@t^{;3FFI{#}h9;*AA)m}+ufN%jH8O@yUKJyoT1$sHu zKuU5szRIX(zx@v-(0>jp0fM3mK&igsRR2mYs89!#J3`bReZKx<4`bKnq&K%E>RyII zSlOT4gRpWm$KwP%#8HnCTUa!9+4NWwnn{ z2A1@ME2Vw)ZRR=+MJq?$-st%gB-QnYXZx@9ifA>DI zFAXhjqtAaZb%Xgjk@FH# z0hI4lfei6|iuJCd=1iFW7evs`N6l&*#zf2!N3MBlmew|ZLX|Fk06v2fQ-JY^layvg zAxJHGf$c%-0cw{FB##<1JJ#^S1UqqZZRoKrcm^r8eoK2=)9s*X%U*Xc;2p)F(U`w$ zy>w_VvT6GOHf>|cAU>B4bteGI#I;WS$ttxK0@%4wq<;L4Q8`9ZU66L06(T{ZJf$eJ zp0?o$-t?0ufw*}NadRKyhPdaGIZ~h=x7bHe6<@l0?fC-Z6XOV2Sov_5OMWEyKtFmwyqLwJLz7?{l zid3j4e~wQtiIfzFrGQS6YVDWNZ=kRsrSHK;4RY|l!~oE8TZN$2 zuoOOune<3Dgk4u3B;nOUJYRAA>yj4~kJ9YIG<+_O%%0;%YS$1AJ8Q05p8kY-o_;@{ z0hMU7$mdqP_Q$y*r1(I+<*O&4X0^Sh1~m1`_?4N6>lzNs!EXE6lc3?XR)U;Jit}PzqYJS(J36m)7B%#tn+iBJm7m;F~R37NG zved-Rk8fC+->;Fje5=UfDQM0JgY4G3&zQ=QE&tdz+ zHx}9HG_10|&#+s@J*#aq$EM(6ADDyxBF|E^>R1IYq8N$J8iIeJ69vhiKd_19PoVsa za0W7oQ<9JNawnb>^Tw?wX6b>H3BD@_B9akCB;ZldUJFPRMUv0r%;ZSI*ZtHupalM- ziej(()~fz!|1)cljNpXtT|l6|*GZmW{-aKn&q)E%m^>pfza9fP?m99O{)0gejUa>m zJ3@gljaHPuPJdmpZqT)6hvJXCFZuu~iis0>Py`sz(*dCb+ipm03O4aLkyaAQmA&Ux z?ct-@7k|o?XwI2?kUV>jUH(_zAAJtslj~D+QS(O{9_=5wevTpUH>lbTButVc!GoPO zHIo=Vdg)vH#y`yF$RGu^Z;MAT^4KfJ4Fqcg6c2x+)C(0x1B=AePj&H=qW?+sp(z=c zK{U`!TLE}(H7Nh8eC3eE{Skob8AizLR#X>3KfbDf zV8*#AQG(hs998u@K82(qi=-ZFi;RbRns@wG<-WL^Omvgxp0WSCku0#X39OohiJ}XF zco3YrpgzV*+CG*B?~Sq`p!&dq^)Y}a=z|$C`_n+}vEMWfkohOG{ivB9+{Q!CrI!ye z-jn@<(u1R66?5R952@3eVeZf3yB{KEXm7?E5Uy^Y44rjLJi8vOQay#exG1z z1LNv_Gi#lrBe`Jk#jqdj>1jS{R5lE&iuYYAowzEbt>72?`~#Mi>IeTNMG=3&O38Zr zBLe6`D634^Ks8v!!&4iC6r#sczo^3J{6AG85Tbp@%}CnZj>=-&ssCA#ar_r;>PA7u zt1dplsnfnve()5`BYAQlU9=}*%K~b! zU5tN8y1`DS%=gDeHBlLp1yBtDLNo@QR~{kIZy@HSJKFp%23_C&t2okvJ%^>whE;q> zIZF}&s7w3k=~&Q4A6IZXf` z2VMDp36r1`CIpZzepW5G41kmikEd-N{Dl+Y_ang}0#LP$>DYhgT-bL~W5qGC7CzYd zMRKmt{)gn8^l?VEomdiJcMC8l*b%a4;3m?tb&>WOsL75xkm2@Yo?ohXPmCMsgzZtQnB*VOSY?l-(eS$a zzv}{*(`o>yLJzrPzjK`TB_z8?;QR~WY|zgW`^8Yet*8DbJ|9ZMmKMmhw{c<*7?E;g z97-B~8XmS2`(KN$HPn9@=HE z_K#Z(XF*Z(?go%s;OoSoEmjEHVp=TFdb; z6@K0zM)Ko<7UV}i_0CzK3}E8VMb=a@aXFu^eW&{Tf7Hji`OjeTdcqHDVuYl-hun=@6 zOfn$rvja+`j*%OMY>rM0Y>tddp}B$ii*U6|vrm6%Ul_an?011k>2ty}v7Yd;*Dd&9 zTZ%zZ3Y=fmEcJT<$gx47o(25X!BtDc2b%!NM39q`i7YlQU&cv&vGlFc!;;6~k}%B3 zs<7Fxo&sv6PXXbHFTG4pgJyfh&Po>B=p&?*_^pbgNNtZg94sMHet!13CU4xqWM$WF z-w+Z|O@pr&b3u3w0MlEzphMZ9WH|F5Vd;Rxly*omklJbjL6~Wy{|PGgv>7F!=3k@y zR;f>@VATYef^c2N1-&Z+fs20t)?>(Kq|7?^^DR=QccEDgm+T<&vDN>Dd>&+7RsZh) zSsw?htkxZZ1H+j=miP1uQff7oLRDj1{4Z4#Kf?=4VRl1d#afQif13~~v%9Z~h9g-? z$QHRm_kXRB4@n&U$nIZu7>JACB78gWE91ev&`6a>DjZ1`gjKe2U-zB3fH7=fS1On6 zM}4^6_%aooz+vJcI~IQ4II!9O8aDeKzb$Q2!Y(a8z0JStLoYWb)3t$U2zxRwf$t@o zRz=toqz3$vLV7+qBSULbp!%mGE;ban_jki$ukT9dnMk0y%d4x~*nb2>(JHk9vfFI8 z7+#A=L3TyN*f%Ez=^c6q1$JFeL?+18Je+GvO>Z^W+@I-iDo8VYV7!-#cm(A^e3hFQ zdQr>BGwV&y>I{pQ@9zVj&WmWj{oU(B;`YyiF^%%~c|A=s|d?DnP4qwunU z?Tg=-k9AfEYw1S6@yRgwRf}NUdS$?8-?UD_4mxNiB(K{5y#nR#uZ;xKFDS^Iy}Mr} z-8Q;t7Z^5zjQ@R_05i~5mM2Io5F2Ip9CqrT@$=w2?w&%M7Ym-A^IaF45`4MtyVYbH zd~WCI#@x{7kJ}O!J2*F}^Av}+1uF9kck3oF;%&Znlx$#|varfU3qO0fFD1XqIdj;8 zjZkG!#Xd=?-J_DsP-}AbrhS_yp}>=18ZAOPPL2NCTJK{sCN5@8dE@VVKp-ej*mlHQ zQm=p7meBn2emXbi`5RvQCd(w3s2)p(O(MIE8i#c~eQ8#w zUN*Ei4E*=7n@E~ui-E1Db8KK+I!v0gLh9*&S1i{ZDP&-ODCsVzK$E)*ozB&vg^Z!c zlhr^+Hrxk=AqS{#x8EXW3cf^fR!6IXII3=JNQJ3g&Kg;@$0u~2xx9R%e{RIHB32zV zuH|k57x2oNl?9tBo^Bc65@C7>PXdHMvz`eZB*mD_ZcoOH5&>)BSC1!?Q$(7RzHO8}O_m=j|r9J}}?=`aJbZdacW|p|^oz?RMhmfSq z6pG*m6Se;P`z!l;{6YEaj<(=PsiZyxRu?QRA?|cM{`~ zNniK(eL%3Lh{IwfTN&z*2G#Z{{D!ZL{<67N^x)6v_RpK`Z;!s4d5s zlLPQ%GJRkkr)cjBng9F4L=Rc>?BHTNj`~zT`XK-I`TmZR2D*6HOD6cYj`hU1PFj?N zXf$22W-jhp>K(s4O7ze(&#noItNB(>c;bFyeEZOUf`MmS_)us}Xo{<56|c?@n*qv+ zLt8`+6|O3Nk?P$3d0Ja_yq%MEx^xr#(e|7KoEoY5DIDZusIdpGt+i?eaKRR}JKHm6 z!Ojjew#$x!LHVOoV&uHkdc1>MJXiz37DwI_syyWB)OzWITSHi?GmnDjwi~|B!l}Ac zCldm^apu)0>XuqYAdFLsE6adVQkqgDnemvl(!(F*V8rLR`F8tp&DRIJXDfQ|{vIuWXe*MeWdmL994GrC zKXSZPXE(}4O>MOk9n;$z4-i&=uTBHG(@u)Y42ug=d^OS!R>0Y(D!1tF2N9_@>Y@l$ zZZfBbUA2t&bNsQmMOy~=f?OB1)%**&r|RA*J#qEcR-+$k{_;7(GYUNdgCfH12o<@v z&x-#z7ai%`8K2-B?UqVz_AFFRRiWyuA^S9epj<9WOA%>Hy5k!*w-8?uJ3qxg@@|MX zNXF1(NBgan(}3*grL$6n7lIBPtz~+(Lu{NL-WXM8lxk>fb6OXu_`YVT7c0K^b13*J z&wTv6-&spikeh9d*R4C*>EeKE3!6k+H0x)6ID;Cl&S^XOADocg&(Sib>^o!gef$WV zQC-0i98*y2t*}6YfvtkWT;mjPGTU8241e+Ct|}Gt><(@`jwsW&>r{uMD>itRhQkDj zr7F6Cw)S)TIFXeZ;AEqLj?a_<{MQh6eM9MxJNglGRFOq|5bpqq`?L(p^hS8qe)2#3 zU4rztzVRBC%o^kI%Z6cs&RXAsTuUxIOTrm3@?}$}TtfXFELD1nS5611{{RX6rh9<4 z^6sB^>U?@hA^GX9Cn*%=rmU1^J;7?>p`~lD-KdORp~i1HBLl+c0pHZsL$59O*!p_Y zY_(|Pd3C9#jxUCe*xaH=zKBOuxEHx=D()A7ZWVyIWz;`*KEq%m!!3Fo#{hZ?FHm4Dg6(QJw5qDGbQ|Q^6Zfwi zdae7$9<7Zny>!qPDjr%#IfT@^n>@+DL#|`uWR0!g6avFd&sY9u;EPKG=suj=Gx&Mu zz0V10`qO9JqOS+|;#^s@)f~mRSDV~7K5@Z4i1`}b4#;Q`++iPiC)3L{o24-qso1$riu;4%}xhs2qqykbu!_?+DRXqCUo#9%h0ru!6M^eXfZSuLF8b;GkF&v^%^f5%GNY{X-Gd3O7ccD!%CM;)21;~o6YIpZYkc+ zx#ZpIv@M3n0RqW`VgS?+9Q;7nQw;|%a$T4iRk{gNs2r>-m=Zh9&D808Tb#CmwRpDg z3ZcP+XVNISyuN4HLssrHsTVB_yo6@wTOmA<+KWtfw;n&K$xqH zwpvOW%af*f%*K>JI#0q?)x~J;CFI$CqI5{;+#`tojBgVA+)z z$xj`%JOInsMz{A{5QApnm)r#k-d!JGnidR-qu}Dn){53`D1BAZG@umkI$D}#z+((R z&q1*00AT!*sAbsDUZz`nOaLQ(|1HdL^hU3owiyA;>%;lBXdljTM=CKc8nhj)Q<|NA>xbTO`4r9l_`#Sgynch^RwC5$|p?=SZk9M|tlsSn_rOGW3UJ2azN zoRTSpb)5G}I*3#`z`ojeQHEBgDc)yn#gkVXcvDTgtmmiNJFv;;Sy6jwrH#aGtL-1AO-`tX5@*N~2z?uB8iOd zOQ)aGdbyLc_lU5(B8rah3OTQ!&AXgJX?&vR!>p31yhP`XUS&v8oizzmMU!?zyll#@ z&)V_h5vw6DDf6?X3k=cx20f@3G-G^P~_Cwlu0Z5JWF6~ z>ryMMqU!Ff+xqU4OYgIDwKc);YRhtOp)HjWzJo=kLE#yfkfc|{rp`p+83nI|z*Y5E zQ|r5YwR#tGWI5MZxxtk_yfQbjajC6(4hHIm11Z8GzYh-YwMW%oXVIbo%MejgD6G@- zg|A$IFPp+EVR%)q60JAI2#3*;h$fc@bKZw@io@BTz$F6q+R;!3D331i_xcGICnMegF2l{=d6 z4?bz>gFk7qSNB1Q82pH(Y2(L_9FA?eCY$q$7J}Dzp0JD-W^Aog<~lrccaPf<-qX<9 zERXQfFIIF%E6mS-8P(|+k9l{xdS3p{EwVRLO2v;UmDc(#4J$vja zXD`9aKUhyc7>tn5xT$x5*xUHfN3==&vYX33M%j<|f=quyi{FKJ{XsZ%e(K_dHOZ}Z zFF6ZePDgcG5_twuUR3KiXiZ&^?YhflcrA5@!a8tPF%j* zGxry9p0dX}*0s!OF_#+HwU(}|+~8P8+Zesk&3F9HXGx>>2Id6cjcmfKOJ}aT?2Knt zSyX7P=oKN9yFDA(wHEJyO;zrx_d1Of0h}DWuo~yMr$fc1Pe4VTD zBVryvd{P0V?mU85YuVZDUI@|`0W6#iPC!fXL zSzpYYSIy_tTGUQYUp8pWIrB!}{e}3ohdSlh(qC{UGhX9f58sk`! zCZxLLaYl*@$!=v}3ySRXV!~yk+$fU`KCuRx=$A(`k@ctxD#KvEPf6(nPn5)`Stnxk#_EA!DCMDEo@a6*qf7n zY#~X#Yel`14s+}{Ci}wAJ^WY|`@EcRnF#N_-b=j#zt5ry?pNGx@m%<0wZe4c%NYF1 z|K7xSBwC753mv9XY1PNsyw1P(@#3XCwulmH@OsxJIcRX(!R|Z2y17aYZ=>m0?)7>u z{xJa-oPeNoZaGM;pwK~&@8=tjN7;-;2uh~?yJDE6OFdFrHDdoZ;tj8u$W=jXyGE8@ zotFgu?e0Qq+aWjmrJIDTXl;i{snlE*d&I1$bHN+@4MpG_U>rBIe44St(8t_1zx#{P z%}j*ADIfxv>Q{Gh(v3Tx7M%JY+bQn(!;ZwlWyAQiCN0DG+1esXAAU8A685C?T}1Jn z|Gl55eSeGwyz-IBX?J)Jpa%z_K+a{LVe;H|y`uwV<^z4_F z4f)^g2Mp^i;B>h4=UNqI%m>I;{jU8nL*Lth@~O;>y={R75wg+q?eAqz(VAu;ZcSY@ zSsf;MwIDE`k3Y+4f{^B&-Ax{izvv*fsnev;=}lv6OC>Ck z4|O-rx7qvHhL(C>|0{URN+X1Z#58IE)pAUhd5wX48-rR6Bsk)7$mDJ$?@MrkP>oMx zPUIPy058Rq_C`BZ$dm8&h)EYb&X#SsN$GeXl6EtJvQ5Vrp!kwPmzws0KK|Hokvbyr zbCYG^az#0Y$;nLl<2@#_RUbORm)noi&lQuHr5V0LtTU&)J!bC+5BD_CB@&9 zo!TBNzih&^?cNkZ`Ns6&Q}x#dwCE|O8F?QJcHcixaEi30yHz-TWi9!<`(}H39?%Ht z8dJ8dV?rb)TfS^+H3%@HFj}c$YM0MroNYclZ6AMj>Mi!Qv)s@hhgV`AG=z#Os@!rz zKafapQx$^Is!M!Bh^ewc5>xQ#xlg4=BDvKw_w#W(d>fNDPI)*k$`^I1Uw&H`)8!p` zxV^wNdlF&;< z8w8}gML@cwyE~;32?rRuL==XWlDcR7egFS=@AY|{=QwlD+Iz3P;(gaTo>Lg~<%6rq z#yf)Xhgz1FO9aOgQv{dI3Ev)etuY`Y)%561xXLS;U$gwLkfXFs7h41utCCB47lni) zmH`a@53${E6N1XoRNu2pNV;oT!b;x`?37>dx^v@MJrSS?j>@S3dzFwEgk*Ppv7l>X zh!wh6i?SD_@IHug{vNh};eFSi(s2O=&=G$ykH#G92sP6v&h7xY54FKjI9JMD=!bVn zt#_Rv>t>Sz94?Xxy_xueV{+4RhvEvAt@?bMx2-=mwQjg8s#lVKiZ8MxmqJ%@zP}PS z;{^x)t~mRqu?wjlCw!!%X?kN%pLDrKbg-KHnZ`qzC23J>gWqz#{*?-Tt;{Y z2G7+V4wSuMTKsbxdv)!hc{}^VOuqYynSjwZXB=#0b9Ss_&=ITba3j8W^>XXxOFl12hX`Ds-wgkE z1c}cPCKrf4;=E=$Ya~2ZKi`-i9{Fc=;P714vxRs%wPcTY<9>#~#s7u=f5cx&$s`}J zt-Tq2E&65U@K5MN@=UUgj;_&C=vu8~skj=3NEFiQQJ{`{&M=e?7kWS3qr8T13A4jD z-`4`vWHfAV;`lyJ!f>g2rRf(6Z#zkP(`98PC>;`bZGSG$q}S@`YASUu;8er8(aVk{ zP=8FTfL$=S($9+6CjLrePJh^$z>0&SL>U!&50+Ddt*3LqGrwIE9vD;8C- zswuOJQbN!YqH6M<%?=G-iOQRc@ENt0Q;Mmo4$gO>#~(zN)aTZ(S1T&!PjCO%&w3@_2jJ4V{rwg=p_8SA zYN)5_Pn){=o&>3FGyT8FdKbmysCWLXv-?ANo9cZ2gW)r(_Xd5yt7U|7TI#I!dX?Ub zfDw#NzGV{m=8^@7@VP}LUe)Lr93gR~blaxCQ^mM5MRvNrn2r-sP2j@-Gt8b-BIY8rIutK~&A`o@EuKwTE zItQvun!!oN60=^5^8aB>VsGEywVMu1Ox=E{=1qUz;;P@|BZ>XvIHaoWcs}1`6pg>1 zYxAs1nHtS-sqvhKzW?ZPfQR3Zd&h;)YUw<5y?(~Gi@lm!9jVh%w-W7R!_)#0t-!hf z{}ay+D4xe6Iw#G4i;*3EpQ4+VInu3bGeabD!9p5-nC3zAqW!_~wK*weqU;*EC79*# zKmK|*{Od5`XU=8{ZDj}2u>RNp7e6~25RqzMZ*lpE!TAz%@yCECeF_C2&Z2b`1B~fN zI&?8zdn5iwyQ|~C4y6{U#{b>WoFDBuFGHN2v^9;R$+|JoU{(xS9f&+_sG%}WjD!Nr zqb_nts*S120K4gagPIHfbw}Co#}%``ITq!_aBFO%z(<5`Abr-UB|P+Ct&Pg@y31I? zfU?0La0CS66%;p8;Kb?J#tSv`i{$cBBH*f+#$XPyLfZdS@TpR_zI2S$(Hu%N9 z@MY$b0T)a+JFv;}x`Qm8f{}b0Qk9J};ol+wVt^M=Iba7AIdImXqcv&tx$SNv^vLtJ@gJP$D-~4)cSE1$K2`?u z!Bc8=*~e=|XVT@+>Fb}>|K}8Cu#xM4IKQ#0TO24}se##ZVc0~{W$7y9;(BlFpDQnX z^w{)KawgpirFMGF|389&u?p;f?bDuyGmR>?y-$#`*afBa*q zhEECBR_MPb8cKOCMn(c*7OQccgs{!1loiV*h1$?KE?DOQ*m;FC0x%k|+86G-~ zRcUw=uvn#PX7H@BzkfOYJLS}~Gw1_-SzFS4eqTGd?`dCib&maP<>&;({12C3~9uzkUu^jSc~#s0{#FW5ck$cTLJC+mmqQ1(lIC1~9<*we^=%*}{NN$5o@b#;i0Q%m4* zVr=8?%YSx6LukdFk9PH>`Q8bDOR_zZ$72cyp89ueB!a_o({RePSOG9Bm)7buM=$N} zugptS>|h@qQxcYES>2C^HUNTKzdW$vM&Z52w8S>wG*dlX`KBDw4YhZIv%GftkLUQ6 zNBcnh)C9k%`k%cy=d3(hk!ZL8-GbpK>8Y@_D>z5MX7u z{vU%u)Lhkl21H}IRw&v(^abFhSIAe&z(0fF}=Pn$d97_>pLBL|-1eV*j{ zvO8W4!vRAQM-{Wn=B9F`b1z~v+#QvakG|;FU2Q6nGjw*O4MWoj0md*fEcT*ISEufA z0m#_^h#{2UqN3Cxz8>0Ct#s7cqmY*Ma9@gP9K#N&?N8$cA_-7Z0jeLU#1kW8jHAa) zXgH59eO2%hT-D@4?vK44973xcQFtmK_RaZZsM9GN%>5t6Fu={V0MIZEp;k5f($>j- zbzHYX!ow&!=cAM?a z9Y;w32+%uAKKF1(i*4Mm02~Zb0|buNDv#DDcVI5S(i$-YN91%yrr~p~4i*C@fMN;5 zWCa|qD$X&;SIGpJ0v=Es>{drA@&e17^t`amCHo3fag@uhYdg{tMHZa zMaNaetp+osH#`|&{0pswmSCMd@IxAKVSGR;naDnpDiEL6xZu<9?uRegz!KI?0)$*0 z;-&k?k6nO{o#B;7OrEPJ-q2}>NwSGyY9_eqG2m53Am+0_huwb%Mnr;(UWo)obi8lY z9&*V?!hwqh>Yc!dj~DO}MU)eQ`ksx!$rAs+5nTYqtkRE)n}xn|0(gZL{9KCrct9Fy zY~zfc`589=!J}i~Tlbup4|L4T<8y`W^dt$WOB^m>y09478hopQ`hmw<;HrAOe@YJb z?*vjCw4HSekCKn$81+9T>i}1&Si&Zl0s8?=B?i7rs1hIRyV#e4_c2?JDGJY%CR~?1 zLPw6^faQHQM$01>m;Wks#eR=MMizJ@B0w5B@u82~fnz{*60Y^<>{aY=-j|02eM*JT zI;K&J*8D;qKI_;}C*?3{>zm{#V{F9v{x1H7qS(ENG~K$LbdjjnqGKa=-u;HGDV z^sQkVx@={g_MY7O_SoYxI^ zu9{_lHaU5Gn2|Z(^KujVrjXqoAm*9_zIRMu#`1Te zT27G99e{&;ciq}5ho3-S1{8a1gL5)tMdXx$#P91as}kq9_O|lq9uo+0yl`(?CxSj? zePsI(Di~!*0d@?P^Dzi; zdITOH4+J2MG{y!U?Dgi`i5`i8;+3kWD}I- z6C-)JSa?pu+#i(ktQ=aQ<&GQEh)cQUmw)1=Q>Kbkd#LU2`e8GJt>KB|_5&P!n4An; z)z@)rl>^s7E>KULKm^s{kcDE za^WEwJ%P+L*LW;p5k!JtER|yzI)TyfAhD4E~4Z!JT z>3@M@P6aOP{vF_efD2XN0`&#kk)yi;wpQxPP(lC}`DT*c;b5-4&*iOUffooEmHZ6<`Nvfl@N%%$QZT3JhD)G&0HkDW6}`&oX&PzyA5 zdLD`Yoa5wA=#lyYanTQ{{ko4F4u*YR1vI(DNzVj2)?_c$p3UixsB|Ei8czFOfBuoG z3ujTD(ih;Tw z0k&AebZ7X`RWMVWGDy#uV?(}^5nu5(p3|k1)w&1WJ@U;o2{4+p4=M0j5gm`0S(>$h zU`910_m)(NE+Ec=EkeLhj$vn7afE+4%!jy`lo5GK)(q9l*1R8f zDpa}7EnE!;SHFincxorXxKeGk^MvLsysY)wqgOO zxIBYb%6SM#fV-v2DSAMC;=jU|zhCDWx~iM(e`R*Q(lw^m-Xm1OtvlU+aQnYT24$vj zr?ULjU&F0qxs|Yz|8H5=ANZw$v*EHWFwL`L2T3!5ngd`c|Dkuv9H3jUj8>+bp;e&z z&ElvF(JhBUBdr!!iH*O}=ay73kWS-p9K1P-By^dXR^LTFe$UY4g@Nz%_G}u-$Bmm0?01hUUv<~O z10Pcldo>^BxJk28P&&a>bsjbx0C~HQghISjxR%Jk)cyv!=+<3-n?C7QXN=ea%^Ll@ zufHl5YmA$dm1K);0h#XfDV?^xPOpH^g$XO+CM0IJyX&7h#_0?E(UQmfXr+D1u`Bc+ z95IPO^zNSU7MO5?*MD+dFzR(d@zauW>wBM7QD3&&0w|)7h=#A5ojaZoXbivsctS=- znsBG2ybmEJkgxvL-`(39azCCURvwkVGrzXd)CU4}2$@OX(mhe|XX0xhla7!G-hKwM zjDd3i?hls$y@S<{4aooi*SgRd@s4Q>=m|MeGc(h5fsTR z6-14YB*D@N5D%kaD5z&(f_8Fhc%5#vuNh%X2S|t{Ji6F|%U`F4r(+rgED()O#;1n8 zW9Fi&ZcXmzJn*kSk%_!SGGZyvBsi9>5i>;1?YWp92PhdoacPeX*a&N2x%*!MhK&QL zmez8=^>1&u>K1BP26|P3|I*-QgY{8cgyb>K2)J4$U1p^I{(K1!wmfm$uEUH}9Ao>4ahbc7)h6B)o z>I;=P03QPX#~cn3u(d{aNOa{J`_Pf-N+7>sx-^3MbFHi#iiLQ-Pc`~SL>Fpxt4;c`f4C%6pEvoj zrQDK6@T4rB?{f?~8_$u!dlkShO)F$bos=cQUD9@~^)ep6$EquSW001eSRAoFqjIzH z11h;61yj0tI4(IpvI6aLuDXhXf@ zjU3sdoxGwXz{~a!ANtO5r5?zB-m#6D4oG*#`zG)S3XCp*TX|4D1mwK`VCF6BBEd7H zo=vMWAK-3$)XyM3FFSE$_~JB5D3+h}QuoKhev22$Vf!ZyiQ0Xw-~qopVMbZ}_Ce3e z%Wj?+y?d>X_xDxF;f-TS$|0&YgExed??)$A+L6xkWk8Mzo^h784f)XZ@E+pFaLi50U@GoBbrczL*Q!7%gv2dOt zO_@Qu%Y2sGY+RX5jN{%5P)nl}iH4!5V`PW)D$y*qs}u>4=)R5@6VAPe$8|SoaZ7fi zp|C!qbF{vt0J*6|vo&!3aP_16@tpscES()GT^(tpDAN?#CAAZfZ?xkU*Bt}m^2$!% zC(#YQ_Xwx|Ab)M>%+Mc&O>s__Uc6sXL$@t|6BflKqe#Q|nX>Mir=ja6DS*?xSkHLd z-vui8=6wYoPI_=fD<0B?&jB8vGL{kl+^uS>BQ_#H9)L-8gXf5iae5x48S$XQN zhh3`Dc^cF8^x=hm^WX38?Lwt@t(y}7~?vAU$$;0(q`OFLbyOw9imd-2+Qd1M~fYzr0Kvq(2 z*v`~lc@0aWuF4IOcmNajDO{%6)`rMMsr8g1aWXf%ZdhhUW%iI&ppC{l0w6(vD4&bt zk)LdrXS6L66u*H`F(qa*N7#d5(_Me+95}cn0IEHv|16B8Jqq;m(%sY=zmu9W`;OH- z`8vvfVSkcXqhWSxTnW1-5~1F{a|14Q;uQFq)ZkNT9zL62k>E2|LcvFqs-N*zH(STj z#Mtn-$YDO?)X3Lb@JoY@gMRaVktg;co?BYSR*NJZ@cyk;#5cVF;w#&0%q8-01rXLR zpDk2@3)EiLAMWCB30sf#aGF@HC5i@Py(p`~v71X8<0}+zD)TJ}Qm(L98ouQ0;qd)v9LnGsSuS#5vEYjiB$m}5$Dqyvhu`@N^(B{W-!T6NwXG+{Z}O26>Q68)QaV+UN4H%M3W)*4ka3g>frOQ8r@^nv;tsiWfe(#OleC%lxV1dq3cP znYRyqP#1!}jO;tF%rc{vTqb<}(}ZXID*Ubr(6N!W2JF?yw;w^-8oeyvAZH%$ z28_HhM+snN@rYbWN=8Tfmgy$@W}Sw|evNuUZu{w5ir= z7!KTkg0!a4p63j4?_ynr1Q3ZdjeAL}gIC!i(BhR@G(D$&r%wHuC;#ALbwrVVTAQtQ z!`0X1=a40!0zQBO>K7caDIl5@AGULyMXrjeB_>{pY^LN6!IraMj!53+0Q774A_L^z zk;@#hIfBZePUlNPcih}~d-d_`1^@VbsBo+a$1pKPVP9A)t!hZ7U;eiwB_Lc}6=C&6 zx4ztdlrO)U&Ybl)C$28E)FQ4=6^8}}m6@hE^z)jSS$k~SesuUc8(w|etzK_&lzuZX z25l0gtH{368ua+(Ap9+@(4^*wYzWtXWj-*#Am*;&Ct(Jk*<@Gl$7)5c?k8IPx0^bD z6K($1xq*7So8~?rJwVO7zsnR*#xor^<(3?vI5oT*Q-9^8t^l8R`qm$FL;5-LoXk$p zP;{>P&)%u8pzVj7FzhkA740&^`kq`2Rl6RkPuR@!k zM1Tzm4vU$NcZHEk@YgyU(GF#vErX4+l1^D8^L<-4SKWU5Lw;TSI#*I|cyo;3)X2%z zL7SO}TJuM%2VrRtHA|rAFVtLLt0DmU!WySFQzQc*gauwI5VVGWIoC_QU}Qxi9`Sfz zPS>bl2oxyAQ&5S?%a{Ipfc`s$*kzdVUHb1|^l2go&Vj~;6L$?)5U$e~ZJes;>=u9a z&V{!H8m^?60`Cbmi7)cXvgj5AV@*`&^X_hbH0$LdI97HAX+ktRlk-qZlg+1!3AC&1 z;_^;>HA4Yb3M@|BXsWqNCt=){{6gsr>ec z0>#&vJNFz*)`e0TO(G}nHhrl-CFwK2teRxXIM$Npf}6jI@tiPz`*qrPxA3px!_=xP z6#@V>iOdCvHm6L5GYvCF(+ytc9>0NMJm>MJ(r3G}3VLpLTJs(aCUix6UXiB^!yiX5 z264FVNLXvM2QfAxl#?5-EI*|y9$;DHkc=XONgX$pLbW!|@vy%D$#c>8_t*q@hPQT7 zATIBrWK`7=0u}m2ORC}O`v$D>!nTA_za7Z_O6}GbLv9%!r78oG zS=(?=OkrDm{~e)CoB`w|;>6UFdyIF10Nfh4Wo6vvi_W1lTT+3z5QhC3_mX{4cdjY@ zHFY?pWq9>|a#6OZr!H{b{VOe!L!qKQ$P42}AngKHNzkP{$pJMtE}!6>TIb6ai_r8f zweL$b+y2^@Fw#pUnGHFVW0_vn1$uZTiOq<>tyHr3b-&kS6F^>ejXpHbYbH)P%e(z( zfEyhMa)Wg-LQn@ zi*emdpkv-fsh{!c&KpETLD7OZOCzXOzhovn2(xU>q85+4jKv-1tK)rQv4EFk9LdIr zY^T0EY5b_O@Y*cU<$RxZOZzkDms!}TlI66(nWtap6ikfsSUXUNIz&9CwP9LArrD^Y z0Axy$Wp=T8Lpk#8w}#dJj|#dOJ~B2J9*HlL{Z65=dmiZ3du6u_H?@Oc$gGpy_HmRN zj|}aoxY1`lZTm;o$M#Q~1x-#eYK>RhSTIk*UTb3cwix$Apne?`;OLmcWFixE6eF)3l=n z24X?KoSmHg$1gD<9{%H=__mFrU}v!`TV$B!!Wv-{f9&Q>*pC`-x+SR!78B81#5=tF zG-$R$ot8S~Z=TCEz?p&}DebgP=cc#@{^j*{cWli)0%8Fkkd$ke@yP&g>pkaS3q$FI z@q_$7XfHuCq~kgyEXb{pDj`Zq;!dO}8SUiej4Ni1d-}4milWn1|&z1!x`*p914{rA_($#=>mcOsdB!phN-|tRm z958hJ6v14ueM>b0iic{mF8TF@F1GX1EJO=8qLzn&=?NT(G^Uc0T2lpg6`WL-!i31U z3u6TuP3fABxFcSC!y&l18gF8WvcK>q;CXZCZFgyw_ zLBY_`Pa{II^TV7`_PcMN&vo4j+q!d|r4Ms15*M#jBpKv7GOCCq8O&qV%GaveeUX|U z7Dbo&&Xye^g#Y&XO;hH(Pg>U)!;f)f>dk{(pCa2+mVI|Z1k}5k@%tk6I;8FCvP0fo zHx^R-cBhm$uVk;*;Pzo80xcpD6v`wW$e#+)m}>Nf4$qSe$|nvmt}HIaauR;;TLZ5TioC}u8F0zLLz!a?xXFn z(lvei()Wo`vX(LDzyK1P>wF6l;K8gME46k$>)p{dC=WvR$*a(Bu&$-9pwtYQn)KW2 zq;6l)6L#nK^rSZ$H&bI$qZT*5Y_7;Xx^)CSY{9 z*|SV=h*HdrGB=u2ep~6&ClPJL{#+UBuSF2b{DxC3PsCPtO2ISS+a zOh@9aefC{L#}4E6%WU3s2H9Kmamm(Y0y|1YEBaCVFnjtW;VRXhTd!t_e|L`FRF?>? zn2&ES2K|-b$5&w*-_07h8OL;8@q@{tteTld5#(2N@w9V5?xU%%nJxeDJfC}$E5(=? zOLkz+fG#z59x+N%)K+H4Z&Z~(RL9)_Kfs;aB8B}7>f3Z2qAL1n!sK_FKHIUrMj{@j z*YT@!G`u3O14A#-K>ieiQ;TpTbl*h&6dO3weHpnQeJ&nvK=+N~&6j%(q`N_)h9`HJ zyJVwsp_UX@zC4~-1V3qy<@l3)-NrqvftnIsHds!oO3cOT>HCW~*&&`C&@g>EhW3Xg zzTyIPA9Z{i33YGU#w1V`?NGZv^c%|}`HoRVo_OSyWok`9KZnLIdG2CadyCy;86usg z)%U>t6mDGvQ!hyOp}FKmXEgT6FoU@{(9P(YGfhKqZ$wDTm_<=$ z`aYmgJ!Q;>RiY40@zuSX1KHqfNI<#|sQeHg2Anz3S!!+i2dJdX23KeqLQBn^YcXBv zUge)+`9(@Dcr5%8crvQ{0P2yqqg)n;*cLQA8g?H!^28HuBrk4WzZ79qNp&Jymlj}L zNn{U;pD;tkHx0832BQdGdCCOvZw(QPcF#VmlT=ah!^-zf-{N@ei>bsY7z|LmF;cm4 zmh%3>)f%yYy^B#lk9)Eb=1QSkK09^WlleW;^xJ-KF4rFq@e`XiwjbdTwm&DbEi7G3Fug@k{e<%}MlF$~;@Z zYSz997>Cu%^V;Q09--o>V+c$^d)0Ab52+#Vv9XkeA;o!!6}~!jezKQcb6{?~A>Kb? zS~|bm%v1=a=J)1bxXgXyf^=sMwbYzDEVC(3DH+Tg|EXiBsI(X0i{SIbEPvS?QSSns z8M9y#W9Mvfuu=c!EEeS+w|98`m>{Lz4!eFfbdYftah?6Z6fj(du%3peZ(;12-qy0z z$lfag%5(R^%(toQ7y8qwy)sX;uZEpYk@;<5J#i`!Qy_A*ly|wpZJ8?m&B8i6VN9{o zm1gA|tO^oK1NqPWp4#d{ayAM5Hh*Z+(GrywOWyYU;bS-G(5n!2(mtoAo#i{ z&OJX^9%GKBuo@E>45L;Yn+60VxH;eE;1AuMVs@sK1Ml^)dmq}=mM42tc=oZD%>P|z zr!Vy&Vhyb2jUS$=g<{Xp7aGVQ)^OD`>wLe5CF3virJwSOo|K^wo^XEDXVxePU9rcUDm{zHoV}U%K*^WE`tFE6CkQ#m`Y0o^OS~bk z`zi8OjBe3}PFPc$cK!=pr%|kjxY8#hr2GiO&7q z6GOU_%q=regyR2FLAo6ViS^rtBh3abTnt~HuG_oUsbCh98&37NVf1Stx`E#Va%6Rb4G2vj4oWw5;q0o2Nv0Gvu zhKH5BsNWBlH8{B)lvGwDQyT0iwL~|jG1;>X6Ju}+H>Q6|SyTG?5*$s}_&i`5`f?qr zQ7xwx{q2V)sLMyFTJ_sWOsBhN<~$xe*=13?(>`lz2+^zbK1AjMS# zBfZE7Q+T8H-ooCQJUeDs^J6S4bhsGxO{~rWoAf*q(gMd##f&=fktO$w4AKR?t>B3T zZgNQd_xN&}@}{?c0)Bh26V~gb#Fhts_TeEe;+&7#`PH~DQpH-4Eu`@Fx@bcMOPJZJ zmh^tKDYB1sLerbF@k8lfK2MlPpi8&5cDW$J8(gJ>P;M8Fnm(Cd(!Bnz8M&W z2@rB)4Kn^xLX0}vu++>gN4?@@n`FI?c4-EJ?Aa8uKt;PIMlX4$!i?n}gdmUFtnlNH zHJ5Ltw-yDq@LI?ioA@domhrZ*>?fRPv+hb&9K(*$#; zwU@&f5G`xyV38u&($AuX6EIoL@tIuDz<0LxD=8`Ii zH=W_W)!Td8Ry%mz59XdzIS-AV>lM-g#!d9~#;seBR&weLXW-293O{2TRUB$~zv4aR{U zVPw6S#26U&V7;Yqg_FkN4+jMs={#soJ8ewqRESe#9v#>*KM!O9^j0C#B7>!OgL5crzkPuqpuZ`7^mk{@_N|V= zVsPz)#-nD{k5v_{bn~Zr9E^r=4ar8QA}*5?VZgzB&TlcB#VVY;hU8Cs9I;FXc=;?k zxt)kl)Fq-x!J&csEL2?&`J3hu#y0;p6Ecj?$Y+Wu0&G3}-VyxrVn0;BiDe01{WowUY4oF8z zZZ}Ko>nIaGb7yq~J)t(cTx)lS;T(7LWTzX=zyh{4{2~QucYx}{dRSr2QKaNHS|Uq+ z^q5By+Q?6nZal54>?SYNn9Y1^jF~|onHtA(4w5!})x2R6y`vJNtHvrLDZ#P9^X~lP zVoSP+@H5h+Pr3yG^x2nsjs_UL;YlE>&AISdoUCwhTQfR~&+<3k8_KX`6nna2fj1rq zt=xFUAjj3^NWD~Y?wcgp)aT#Rq#X%rH*0xAS*xtk_N=tu1#8)_m5DT5`L5!2X<+I$Zpnlq~CO+prpGE^S2!%(}y%zyZO;flKsjmoY(o%BV{ zIs;~)(c@&?nj8XNR{b5h&~z4I^!m3+0K%u1Pt@XL?)|u}m281j4AW&lG5&%Vb!|6{ zeV}5J`*d|!Q|h%>@9oCpr*XE#DoR!Th)gYf#FQPn*X)7vt%XAo4W43-|gFA=cGOJ$qf$s;ubn@RK6mEj`exp+9*JvQW zRQoeWjftW3%Y${(E4(8atVZP^y8L58y`?y*rY! z7Lk^0{9)^yPI~B0u&t`_utWrgc1BG&daZ2|E^N*u-c2eG-%!M zk6Nu{hpz;*4eZa-+&wR6uQz|Ehmkb@zLqqNV3PMQhkExPybQJ7Jo^5~6>7V!U#{47 zPF8sD(Pz4ow!XPKLaHd;;%946wjU!{M9KU;hrXO*ez!{>hlJ9!H$HkrrsPWvN!(C!YfO^s+8< z7A!ke3Zve|*O_cKXa_xeBuyyTB>zrz6ijZ&?xn>Z1enC>^9<+cL2;5S*%>&PUHysb zCWLxf$IyW@mE<$zq2o8o)U5awRthexaaJ9Rk;#&^!!SJU39&~pgpv{K9r_~IU-6^4 z;Tj76`TD{rip1rb^Mzq3$&MD*Lw~bFAep{Yt^0Ol1WONk{Y%=7xl@Ib4<=^$B_916 z6Zu?gg~cy0m*@`l3#6SNp6RvA%+yd0Ii6zDO?@Z-d1a>$0DCsh`k~BOrq%Zct2^1IVyk#o%nm=m1Z0)ZuyPRr&2?N;$i#iEMY7S zU-M3N0Q*boQQY3!T#DdjyC=wB*GE2dJjTX{%XrTamCm2^8G`N1k zbBX=X{GV%p`z>z*)u@w7_Uxy!vHP{Cl`qtV#q}yO){TKO^3t~frvcL8SBav9VNLS6 z<)6=~3>AK(*e<~%vyww{uacOwraat}(rXOWx+8oLPuQhobq^yutg^n;M~%3+VmN9i zu++%)=H%N5zUjTwcf(KhrFEog9f6+wOl5y5^3^qs{pjUryhhY{lyPtPihuQ~{}83Q zs(8rC(VzP69NJBD;Wv=0EMy?`pwQPmt|V*VSNCrOaend=3$Qwjk`-3Xgt53uW?gn9 zo&0ar4Dlpw$11Nhyb3TIlv2oV55$+rmYw_zTiw&xp` zUEf+vOCCKqZ}CDNF*#0|AYJHd(InqkTHRZA0++68O4XsEy0aTmE2vly%M*9XchgK6 zORT-2@0NrRubQ+md6c~RH7b$Q7W)Kps#ajk#d%5GhTkLm*6lvA6m6Ulx9GFu{9K(4 z%d~k@U$_B6KOSnTb;k`v1sM}5K<;|!LZq!UJ9}5--^{)B*9C|OucyhB@%rb))f4%*DC%$Src`LK6} z%Kar#>8kak4lrD#z6ZeO@A@So>{wa=e468pX}et7>2+l(88+77#2BFlv004dNTNT1IEhV1Sew#heIgP3#0@R$8C2#gKmLfz~CV;)NhDT1#cO>a^$uwKE05lE%Du_jMvDcgt{D~ zSV)9Zye@i$8?8&B+(lQ3gy!=*#@rz0jb=jk->kxS18BC6>LN@@+YwDk%DcMIt)&U5 zQAH3YO-CPT4-|&QN|JR{a`=yE@Ec}PzqVZ#+++VfuPSPn?ETqu!LJV4&QjuMq}?{L z?i?RYR7u>HAZNEOL4JhZ>FW@CWbmdQ;$&BgLuHQ9FA~wWHr*N%BzbST6P5VIuJC$8 zNhnt2y)Z!)9TH?^BM2>p^U?NXhM%Gd5(R)V2}8^qtg%MSbS8T`l1ff~cK-uBYH2Lf z&mOZCfjHdMLR1ejbT)0?C`9qr#KMuIr1-sID_^*`P#}vnr>C?y8(8@`>cMEB&)SR0 zC8Sc<@?lnvoN#i#^a;+ODl~ z63AyCT!>o0SI)JwGb5~+vf54^C1K|VDuRiw`0r6>$^>3IB;u}&dPJzw#$MEcIuNS8 zwlbz&Li_F~cmnt>bqE7JC`XdDp8!E9~JAT!NAzx`Hu{&XCeEiHl|86Y1=Nk#46R zkXh0_t4Z6kB`Z}UPdqpxL9@23jBgrc_nou@iH~o)Spr`LDNYvT!Ut+YS%@?FhRMCX z(biQ*uf|QGMlEHqI;bExx{*cKXHZdz!P01_bp--ZO97a5A#T0%BmSot@OcXP`N&gNymZ>LH&1(G9e=8rnb+%%d&mcr_U{L@ zbbeIZ`jpEfF-&H@)i(LEO?sqve+1OqxwnJqdN3eI3v@Ig?*u>94{fGtWOIE1G;l}qi<;+$xD+97N;xCp ziO2T%Z^uWl1ftBCiXpH+UqyJ`ph(|@z121Kts9(ctSWujS{E0%@U;$O?s)=g47TI~ zA{7`(JqS;nav-RxL>;=GSW9@zQ2`XiCe<9w1m#TpTlcpb2%4SD^y$eoL`WkqDGp5J zUruQDaVz|Gw$j6xtZU(3vtmnKL4JU#v>hUtNvo*b zI7wuq62%*e7Lwmls!O(7-i4h~9An*uiBel0n*iLpZ7Xt#QjL0$@tYHFN_E<3026C+ zsn`~g_fm^4#$-(g+Mi+xr~`_E)p~sF&A3rf@WJ z8PZEEhn1y>VhiL819WwdIdI)?@;FU(%Yx>>go*WVheAm5i46P&Lm777=ou{hxdx?` zR4|l5-No_8DL1RzGBikC`yhd~w92A&b!s(meU6 zj(=bwNI)NnZ@W)|@WT$EGK)`!c%vS)q~K*P_kV%Cx{f&mc&s_{o(IuLUjz%+(`uSi02)_+ac{1c4 z(8nR`X8`m77&hg+XJB8%iV?#=`|P~M(KCbK=Bnn#&SZO3!|}<}0<5zcsiS!!==Fa1 zcpKj~qMr}(vww!(*-!S*$Hjq{rmcj5N7^K|-> z3SKpS_a)mojs}c=-qNS+JU7Fq@T!BlLRU%VFGXGud>aAQknx@P0O&%RVJm+n;S<#2 z3Az|c25K1oXlqYcMJH|Un6z&;a!)M)3)y58wHV87P(*iRr5tX-b?vJd-(ET+B> zQ=rf7m^psA>BBVLCy~Sf$3L`R7kil#SoJijHpZgsinVDYgU9yfv4)GUN`3Vy=z;QZ z8p1_M?MKzdcD;wtre+37vJ?G2)n;dsDI5s1#7hT|NUk%F-RpY5B>8G#2y}rFU1xQJ z;qKx#^5}f)*O}62&J;exm45_)+DB+fp`%ff8%n(!^~Zn%B2nz0`Avk)OqK@WE7;G0 z0PrsQm*ukjK7wJ4#aec=Ivlk;Ox`wADu!}?E5M# zZnjN$+Y!>6lSNlJ2J})R2(6nK5|UpJ;j5t+B`Ru8$(SZz;e*tBiF zcguU!MfhDSxJAkVu+UdR#|F2|HyN4uO)Y5?%@mDBPZYd0TwEEfS*`T^$ZBxub2*Kt z&g*ZjjqC@?)7rA@jRHFurg@c@+KOGNPhyW~!!J=lJ=y{B7aRQ)?_ABo5GK7HjPfPz zaKPnGKn-sdVcp%nloo8(f}koD-~S{g=l2Zcl&eX8>sS;!rxE4!VX_Iirpl&9sBytUP=rfAHDG*({bq-x2B^$$>aFJzFPkQ^LICEeZKGPHDecc*kohjcd#UDBNjC>;Y1-2&1f5&|Os!SCMtucf1l z8P1$Jd++Cc;yttTOAZh-*OV*R&pbXVQr@PVa*H6&*2VgOef|RXUmH;uX@0Qjh;Q(9 zc}W~AzfU%}DjaLstC1)0C1|(_?hq-JPrEO!>^U zN5bN@vRUw~NiY3N2I!SV+(=p#-EZ6kB{|N+wm@g@ENppKSaYpJ;-N&qni`0-Gn*Dh zt#^@DQ4u-@Dxga!q`(&ZH@q9eVr#R}o}wKrrwDP;g(neltW7M6Zl=Nw3_C zhMi0H=i`bceFWo8qLyxcBJ~48gg0@p)>X8$If>F|ASC0LoIYPo#~-$}X%6$-T_7a< zgADe$F7ZqHd8Ro|`bI~O^@TLiMoh^;nh(xjrpTeSKy1UmY-j86ZI2gTE4A1P@dx+s zEWIBxK0aRvJ`s35Q#Bp`4F^0HbtJOrygWc*qN`eJ#KWt^yGXWMW^WI{ceNxB!s1;R z$n8JniQ&(TUwpe{g7)45HxD~DuEWfNv($HfjpY*!sQL|cUY<(6YG#%8QIq~n!Ly4h z5o-7T2ulbHz-VH>TV71_v_fau85{^+_0tG$bx^je*=*S_GROBRh)k^yzJ(qs(*AMt z6wstyP{r8oGnj0WSwyk^sohK;unMmWXkpdBKAD_-ShFEEu*z2%Ci}is>kSLsfmrQi zFnDS!(X1plYwt&xAOJHO+bmw8# zWt>tKHlpQoEEH88zPih~jSHnng&}uYF?@BN2r!2*z{o(D?LDSeUui<57K@tl`-iKz zL2!Ts(%S}HV&$uX`U-lHcBJ+-AJBeBTUJp?D|&l95>xAU!+`jCZYaetTxRLKVUMhQ z%?%KoO|`UNCm4&xtQx)wfqxNGX;seb-c{>Ykugi^kH$z`K=emHZkzjbTljiA;#U)l zb1F(QV7Rl6eY2W63-$wWFcC#fps3{+qJQ2{pL?HybQ^rT6C;>}Nd^CownQmdJ-NSBUT@9Ujnm9yYGKZELnmuXH7Q|88obw z8l~i+wpC4~KhIOa;oST?ul40GaT+TbKEk*-pvG7Bkvao#TJSt-@kd$Zx7gK4RO2>* z?F?)wFCfvjsE*w#?dgRuCL7*FWiEtQo%7*qCmq@_!_yaOddTZag;@H(HDj@-rmeen zpmh9&_WO4+f?5Y63g=L3@iJI$B(F`?G-ufAYkI% zsY!bpsqdmnxC~GL2h6PC!pjPz)>|QEN`(K z^FK5Nyyz~EOma|fx;>+|-x+<3k2W$E$Yl+80K2iNd=y7T5}k!8HY2Dvk2-Fm--UZ< zcq~B>)ijiZGa-cS_yJYq_KMT}4^8!oAts>X3QPafafEuVi_AGTdh4Fu$}+cSROZh% zD7Eq%-qD=g*4q#iac;#Q` zugi!F>{?E9$szw?o0N1jfNfjvw=EGIC$;_fc2Ly@TW1a7(+OLp55>K#P2Z#F5X{YT z@pJef!&>pHpM2enEM+QpHga;kvs!uGFMEV<_*>ylxODLoii$rF0Ku}YwMTGeiBCbL zEYL+Qf@Z;p1aS@Ly4^AWN=?F6G+1g~HoPKx&Zf3rV~k|nSy2#ie^Jq8&n*AQaDjuN zGq5~Gf8rDk_G1bH8Sk0Q)tg1XSyx!Vjf)Ie3PJ9RTy0bf8|HIdq8g$F_@Y?WWhCWL z>&Y81kM%DpKZ;x+qz1?jq47(AV|00%Ma4C)D)6i05XxHp84tJ73y+rRp0>~$9s0C(MW|KUyC|KSaK7w5WadR6X-R!3G5 ztzk^SQa92qe-i7Uhki#^BqNQRsUO1*szkJ1a!Ke!G&{=9!B_$#;P3(Pt=9xBICe20 zGEpdMZNJV7p#TA*FLQ0)P(^o78bW? zH~=;SK%zQLkW_ee{p#JL zJ1!tW-vZHINlBk?U;OhT5c!kq15VA5ObbJ#{0@PwDrc!hwM}!K z7)V?4><^|8a(g_ng-!c*jVLB!=9?bv2~b>>_Ihe&LqiwAdZRQt@k*7Np!%Z$?Bx#$ zg!cg8^irbtNtx{(5xxVebxQ|3sB6J*q65ai$63rKW<2!-XOs@gAspriZbNh~Yeffi zEwCz$J~JP8sy}LDyB}}GfSl2BiX!YToZ;{;RtVkWSYsOMtt`6vikgBL&a+=>?Xdg# zpkgYQj&+2xmg2M%(0{Z)rDf{U#KgFiu;DRXrkLW3+e1I+?~Vf9Z8aLXUGJavET z>?NXqiq;cC4h**^HOv`z!y%VGLv-FIhIYXG-zP-u(f!{~$VF-;{Pl^TtqC!q^_5?Vk)=0%({nJRsD4Ur|uiN70K%+G7|3O*`d#`DhB-=PvQMuGGAnOnyj? zeOyD$)h98B%f?7ae-FU6PW*tC&rRvlIU$?qSe68?Wk zZT??KHE^9`8Jt^V82c)GDF#K71!ft0nVlML=*i3F3O_Kp+5Qx{$nd|2%8D?6)Nbbq zI4T#_jR2eyUR2jPmHMC?KN-X~qt_Z$`a~>${i{8MHgzr4XmxaJ^T~biD-1NN=F)u# z4@gFQxXc0FhC(hQ|Kmo*Lq|qp7}~XrZNQ}q-)?%U!t_CEqGR&F=brq=BqIqNC3<{; zvjOUVlxgDRXmO6&lrv#p{tMN?BK~Y;FDYBv+N-0AE1P-h391Q{?DNTnJ1l4{Lwl6@ z%w8?-2%97cw30OnR+Bc~rsB8%PP09AMdEU3HuHnIyA5ag4@n2YCm)g-RoyzYx1!x7 zh>K>P*VnPWTU8ep!V#ntR$)9qJ_Q1`l5x&PVk8KJ%~0ZFgV^^)=jpMF&cr)c$^qB$ z&L%8w!_l@gVO|6XBQIgHT)c;3QahP~(k>%sxBc}{0h5K|I3?XP>45+`uz{Fiki7Q$ z=V|WZo80%v?UYXN>4W;GPgEEqFwh3VsPw_H89(T)&eWe7Ege^yUn^QVNDd``VPjbc zlmT@KY*rt8Y^GMrgZi!aNM~E5t*QN#YBgd}f=zqhWdewfDgpf)&o;cOPf$?~scs2W z%{mK1H(mHpNQh=e)0#g7;~Lsiuhu=y z3cZ9oKQj^AR(f&#*lp#V+Wi#cMGWiCFMUVndZPUB9eq_o(dLt;Sj{kkL$LUZ++Uga zwCQ5|{B*cTgSV5w;E0z$5zp9saS8Ey|JVnA_{$Ha;Df#R3OR_nkl!r590o`(?CcLN zb&HIo#q`4|&>1E^ct-1Yq~&V2pgH$u){voih|7PH>*CI~!eIc{Ff&dE!b9;#^Yur^Y zo7uC9*m0a1t6h^aO2ZK;U9|}E76i$Q zXp$2?$Oun&z*up(2eofm!plF8Hn}ZZ=>LZ88~T${B|8OB(}`8A#-Uxn@LDx3`f*ua zR(Gs)c_Gx(KxG=Snv1BOm~A`G>V;L}ql%ni(662Lvu^V88E4*$60j@OeLB<@dKCN< z9`LH`&9~8@SlmN(0G|m;y^M6*S&7g!erMe|MRM`fJM4f^w0eOv7AF}x!$v}#4xH8aAdsy7NlmHW>7i^syM29? zqJ*+2FP`rD2p&Kqj}ri+Bi+nZlZQD7tKf{xN}VX;7W1i(9CU@?B;oNMcqaQvBKdpbv;Ucb!2(w7|g*z52a@4tDy#N+4@ zW81b?8-nnhv~f%RU8_3S0;ihFCHMT*f)PMg(+^t$-8+Aie3=Qcfm2?$>pejcDSH{@ zI0J$FAL_+1tKS&SEjzl9E)b!*@t0U)Kyg2=s=2v~X{HP(QS&=^j|J$_3%Sj{OH-g$ z0eR~Vy5B7e*(KUbtvZ@@y?>vGssQYMq=il=7uPn-!nZ4uA+BRcdzvaCuJiM>tWgN{i5E??Y!^5I>8$d^+LLwo0_RA_kh&Y~TI-#2t23nh!NZwE?Ev5i+c<2K zEte>LLksHX{~h6uM9nvPW2sshec}PWlbbC_qIP4U_ph9doICa+vgmWYu@pEcAqY==0sMup`uqePum9 z3bJHw3$U#%M*0FuI#NvBP5XtC?htM!I&QRjQO+SkXGBAvp7nBE3BQ@x9vuEh%d~jL zk=#uV^R%N$Gudq8xZFkM)lx(f|6wwFhTYe+yB)6`H>V*%VU4rT^ zWp;!$zw5wqu_A+E!j2V5VWKv>g4qqr1}(3TN2-+9QSEZx<0Ug30GWv&de0C{ytFSx`ArR61iw z;6nu&HBe6)_rmIi2ZJ3n_ifL@4FqaDTU7_ydM{G*Rfwjdd((Swo};i%U!+<3fX(}M zla}o3t&kM-zK7?CQB6h9R-ZvOC53e)fe&nd$cg|{RsoLdr3bH|(&W2jVGASb&~f_Do~3p#Lq5HnN1&4!>_epb zJ7nm@XQN)ry&mgqX9Vbo`&sqHhQ1HuLcFMhRLx}&Pv7Scei1q9CQu<=2Lbbj=n@T8 z?@-k5r9DIr=+KH7(n_pK0+RqzkKb8r=e3Lve=XHw9#ti$!y%eu_TkV(+0RJ5`~q9X zy5rfCkwAI%jh4}ogV-4RxxYQ4?)Z*wnsAISs=auyg&1npHf_$LJk=%y2V(lfN_yJF0^?_mLm-El{^EuSc> zacIvkK3=O@{0?biqSC-uHEB*bVpW&_7a^f-|>dO&;L3E ze|c(W_j%T$JC-fH_|THpLDE75a%9{6UVZ9Em#C!d_lCa9mT&RN3`Fi-FXC!=o&2Inf( zicwgQH-lx>i4Q$U-O!GHD^io|t#F?4Z9y#pe||uHht{6{cIRZw2>*@M#;PrQ5Uzjg zkYUUZwcq68{6;%tA^_6UV(Tcb z^I(yc6pip6zW)7Asp5R%SyijGVH@zdVM~HRFx9E`H$5?KnLoVjo7j!?>w(faigdAh zAMWfV>4-4h();xd!vPo6R2sH6m7>$5KqY6CPIoQ%NhF$O^#Zt0Y*ZiL6ivvYjUOWJ zy8Ds%hDK}G&8+H+P%fICL02aerhue15q;F0_E@gLzD1I32vjK3K;Gu6YH&3yd8kE}Fa|4=e>2(ClKct!P>cr)`VFj=H0E>pN#XFZE zT4}08Y$RPw0FTt(R!&ez?`~W>f#oKFm{rLAo6^UR?DmClI&JU^Q|Ih&=NkA++RY%= z*TsdWY9;+}H?BWyY%|3hKaFk*ptVo>nc_N#?b>3ZA9vHpJvlbR{5L^;*N+`G+xT^^|5dE}8vMV@3_O79O(e(Ltb)P5KgE_ip%B%hj zn?ZyV9uu-W*bXG@&Mc_9Mb0-OY;dMEJa>izNrCRhI?rKC=%(Og)u2SnE zEUD!@+Kc2seVRX^1tyxlhV6F}L$aa2DnYYLQ#YQG5A4g3v!zbdi*j8JVD;*+u^ zDW<-b=9r#{&i?`5H5oM*@;kKnwhZ}C8>Pf{Rq*z=VKGf!$x^CR*f<^6V^1&VvjC{^C!)@YXX^q{JTzU1pe--iz1sJqT_!9C=3W*)dVKCchVMRYx%qfNjqgRUg^^ zlsp|)-eaBX^~yP2*hNbQFDRWzT{EnERrL}W8qvG)K2DW*ckj7an;PnEXV$-QCFg4x zA{Lm%dAmju!Tp;(aAzc;jk|mw_0U zQ1CUb-WV!k`zHVAIk{#B@NDZ|u)Q3|LU;>7YATVT_R_S-vmL12T!Iv7mV?~C9On+n)CkkQibuK&uG1A{xY6# z&2A`$0^x!dj9iai)jAp@^4g5QHdX@dg7aOP)kaJm&@sgkC+Y<}v)DR3PoQK}Gs`?e zSd$v14Z#?nzYb<+jR_Z6vUZv-dHj+q=n0meCi|XP>&sP;4f4;VIUGCK3q-nNaK7SU zfY5_aL1V=P&U=qd{gtukZET&Gpp~Xm_OS!Y%8U%m_=Ez?_{2X{*zDLm^55wVZyO{h zqHWwH2Z(w3-*#HOA{HhkB)zBh8i}$s`O>B#lPJ5F3r!j+Neuz}GBcOi6~8IK~Pt9wQl(eOS7HtF|l~8R-p;{HRt`M`dSa$-1OCE%H6lFnK2cHDgIN zl%ee2R()owNy$F(Q6Cc1Z@a0ptysiQBgW zW=)w|bH1pF+#(r$39s63x@IxUwBaY>{Ut{wIJ?Thp1c1>z664znGCzHN#I{1>|No8 z`+y1d{Z<~ubwh&cSTxcU2_S>dnrO-rH_XUbk@P$%{kLK8l=D>0L2M5)Ng7^PL+Hpr zG$tEZ(%%Z#-sN;hXQWBizF$cJ-NG^Rs3{t^l4J9z$$?f`JWqMLRlgkA=51V(gIYXV z!F4IkEI5QLEwbQ=U-uMIa~(eMr`?Z(6mzYE@61zfBEnx)dkIKpwyUkN{AE56E@lQ! ztgW#J%*7L&0(g~|KcRsaYY0Q~EAgoy{#9mF*+K$ljknaeUq&@KCVi{MJXPUic-IH0 z*u2FzIsHUtfs~0Zod#b1L}lrzHgevYVaY;fpMAst#u&`K&Tf~iKMm%zc9U1lDg(rI z>UB1#%!^@H8gLVb6jgU|#pe2F=))o;uoG*-l18AF+-$pTm>>X5Q+Bp6YMM0$B2SR) z-;NA0K?Mvm#HFhU7IR#{SS{=dN_|KS zd9B&=xUZL@4FZ0++={X#tM^}`VvnqmPDHr!2mkDDjy5cY zPu!{8<5Sd}-{G8&$q&L8uH^j8eY)Rlg*W)yoQ4Qm}_?6KoJI>Oj)-Qf-ed%dd}qW+SINGwv4}l3M72 zE;Q$*azqMO!u}vJshNlIusv2vc6SHIVuiNoFcV*8ce65FY0CoPc&FmkRV zix&m?y)u@3hn*ql7*03@J&(!@DbF%%LU4f#G`5TDOL45}<2mY;E9gT&<-7k7gKoD> z&^9s?vEx$CU5QFhs!^KsduBTTm9ItJ6PKQ464Usm5yOP1MV$wqo<#}0!5f?!mA1g7 zVX*2>4gn#zw89@*`_|F5{A@4Tr(tQ!5u~6uoJ};gY^#Yx`fG2wb$Nv8MtwNJj5;{J$6RTVA1vZUG zh=a31-J7U})uw0f9yOMLd6VJAeQ_=0|E-qFo4`IOk8`*ki%)k^smnDi`b$Y{2$-8w zxOIIgQsT05jP4*S@x#?}-DGE7qZjl*k)$pF>(kuoLovr?L93d^zfVL$_m_f z{Tg@&U4dZfx9o0H2rjVoAzaR{NnR%7azy=tRnBJmU^^1F#8PR_N4X;Q%wr?eJ`K4)|R{yDRl>#yA|+1hrBWP0#wIsGOCNd zEj+ruhNVTP57sDcNf>U20p?u`Fw-Wnj356ynS?hXLN6zk5c1QVkX^&T6-S)war@9Q zZX%5;fWSWC-*cw#h0y6ofkQyNN$F9KR^+7^>)B;vD&%rjHLHnb9J?dY9`Kn))%SXv zh~dk5E95F=Z375-Yj9uxet@Wyl2H%wp|-8MMO9aAk#Rki>K}dnTsY{D%J;_qs5V4t z%!;pq9lldoxwvch1*%v$oA} z#-y3vWXVT6X3=mCNUb`7eO2aR_c9#RW_%LnR$>6;Akva_3-Pa3?NJRu&gZVnIU?M- zvUF0Ho2;R^51uL)pen4fus*h9xMP(n9N})7;d8OBJyJg2Aug%<8qwcoA@zE`0s!wuV@}~u4RNr_bE{Usi=!bJWO+Z4|4XA<5 zTzZj?aFspdqW>T|UzvET-_==m$X>}V_c^hJb%c2WUlhHk7xVUlq&&WEkZuWSOwXJb zsi3e=dUnr}gGrQOYs73Hu9xAFJ7cy;+_SJyhoi}DQzgB{=?b@L0?|ixU^qdQ9In-; z`}4WYpt1Qg4=vI13R?mC7rlftAvVX}*PyNFFi$K*5v-s+k+TH?HZC1owu_?W|uDt@~&FM5xtk{nk0_3+Tnf1*fl~5=)i4M0(#w)G9fu@gyX=*JPjVG$KQ=zJWKH;X4r#ayggo1 zbkCF=V=tYDII9-FAM{25Dk1rM&eOnzUBMn*svWCPN6QPY?JBh5uE+YnH8;1@cOld03N5qXqjO(H|113(PSZn@>!QMV;lCHPX@DmrQKk(S5A+0Q&-~%FuoMjZPt% ziPU@e>jn>WL&*Yw5-r#(z9q7l*d*5^fvN%F5d9QfB7qOW5;LTifm!r&%==thA#gbb zD{SOsq5H;RJMHTys#@zYla*7~gj}K^oXh1alwfhdaSCH}w^uVZQ*v6U?t3kF1&Im%3#nG@ zjLtQnzG_b+L;4U%_<8%17WZ#q4u#Zzu-T-DE4{(G3yx}?|RChfJcZE-sw4^;3 zjKLjm2L~wYFAb5X4wmw3a0hwudKd6taBi{BdY~;b} z_p5n=MM{<3Gxcpim(HZSR{T=_EBgLZU9B~UwA(r)#4gqZW?~5+R1CMDV?s_P_LrSH ziOCHT>43we<`LQvmTY|R<7wprr3C%+)EMF|J#SV_T~yDnhlO2TM*E{zOm@8B&d>4< ztp4iQ!KEm`nr7en-{90@X#PW3P&u0M2$J5HY$bJM8 zJ%&-pF`fE(VOU3~t|Z&A9kyhg=lFYWJ{PyiToJ1uio2ebG`K4Z~} z!A>+9M^M1mhp-KIBE3+_sPR=1&h1{f3A}Rf!q%<3#35;f+>A)@YQ4KZ*=?uE!J}^P zz`H*ool-_OchP;aX8wM5xDwbI2P2Zi9If~Lo@BCtIFoMRaKi7`m4ER|gJ0NvLMsQI z%kwQHlN?M22{Zjuw4J7RRKvr(`nQ3KrxKRFcg*fo;BKdOlzW`50$_{n0Re>zEKD(lUm*CVRQQMF|k&P!cXs$(Un;wl#s}^Y(+Ts z?iYG27L=KbB`*qTiPHlFr6)3S8^nIP%_WP13(^NhqXw%=4m>;YyijwFx|%S`xL?nv zW;5I1Y@I|DDFEYOGoh@<;e!wussWzc zn4Dz$7Lj2g{6q}g{cm67;^m3pipoSGz-^Jr>5&OW_J6*>uGx=CkmU4@P~h-MGaIzU zpJ`Hv49rg9c}P8JTbNUWdm>XW`UEcyJCPqQDX8%oV1~B<=tR$TiC^J+5P>diSJio0 zdhLg!q-sVo$>==ZQzaxMz%eO}H!x)_P4j0YmPGduWpSk}MF;yH_uRo%e&JD{ zk&rxiHm{z~i+u-CKiS}OpjIZgGNU=AI5dg4_Sjt2?tWJ8#!5^uI%<5FQ$H0_=V%B6 zNQqZ+5UBvI)^lr$!)rh_cu_D2gM^XZ!{U?Pk5i&Cf6=Y|W>U6K3QpkYo_xp7u-yvs zkH&3Nj~0R12(`ttCkvf#e`@;jv;zqvQ6JdFGJK>Rq%Si#U%NHE6h|ak`^Gjz6#Dz~ zkMBHFJ9VEEU8AD+lB1!&hulgf8fS3=V6Ph_k8#$m#P0e~?_nWAA>E+g1nNoRl5v~- zZz-Rf)oW4@ku(4z#Ia59J`D@hrI#lJJ$3v|*gm%-@hyJkm{>t3nJp=x4hWX;Vv*Rb zhd`rQ-wQ-%vHN{*Sz z%Uo0{sBH(R;IneMj_W?l96FKPpPC=+tinvZY;gY9I<~`yH~@(tCbyXRd_IOqAMol#z%aPCpaa&OAP+PGxUl@%&yW#_&DXGYr{pO)eEhYITx ziTuNl5^f%?799FobeFE%FgZd+tWp`9?#Q}3wWxr7)}p%vl-n(?Cg&R}o758qnBjX&i%eRnXeTj~}18J_ZUS z!jr>J{2@bjgH4S4s+?RV;}VczTt-t?$GJ@sYp}_Tz1*EvjXfJI^9hDzzej>pL=1(G z&MQ%ZEjPvqo{3T({OdgjAJwqldH9PD+U|ey;vc+8(jTW`;ptHvm&&NlTncxBx3?~_ zW>nP9(&_Sy6Zuf#M5I|(65PcRdew$veeX2U$WLf`0wc_yj6(QjH9WDFe{OAK~!CvBqjCo=$VM4|< zAJI#)gu%uJNG9+TMIZY95=9t0@AoggzJ`(@atC2L^eMgFF!L8`eK}!qI|y1kuny4c z#X0VF_s!5U*WnU1jP55TTVVNA4Ij2iU`Wzp-RAc)^3k%(gBMRz#H11)lK5X4&iE8m<{679Ok8LZ&*Ol`?>k$QB5VDdV(+KKb-<-@lh=PDilFEd+Y|h7i!O&v*(`I z2gx&hJb66_*h}LAhaBqXttk?m%VV?VylC}*+nWXm!vMp9wrY?*P~%Et*)-jO+E!74 znBDI2#hnnD$^%6MQkH?ato4!FI48LVD$98r_4Dc#uC+~@_mUrS-u@?wXb{I$gzj9< zsr#5y6ERUzgLY+fs=`KrkmRzkdP5X{i;`&@*H0r?hE~BIg1luA{oe*eb~d3q$b2#f z{(NRlYF`6<$d#2+@RZ1!@*>^GKFX8ePBj|k+CDa14k&}!eB za}#MV>{E|3k1OG}?D_}K2z-@4DufFZjGPF^@#s1T(9kPFCH0ZOB|7%XtwO1m+>FdUwh+8A{r{H7^razGy^X!fn4>6dXBL*Yk6Z@ZB?3e5}91&`jePuDSX0bwe-4PzX??sU@x9D+B z$hQP~DX`1g>tM4xkX6uZ>JApb57?mzX{gdO4Y4YT6I-aXi`aaIWll`lDTK$m@>69g zYOpqpTCPvbK{3D_7Cl7Kb4Wf>PI+hlMOW235kELKn{iYUU8fd)NHkKXBvTCq07wzX z3R^fs{~c6&YURS#>%y2h3Z#Iiwi9~e{`V4Z_eBuwpC}R1r+$0hJ(dt77?z16Z3(G| zd?)rIW*VK_J8AOIP9tPdr|pKn=Z54c=m8*JPqXrcOoVlIC$!^veE4a}q6W8erqm}j zkI7fhd=;KV6s9NX9qQ4l1O~rt46@a;5Sua_0Is(2BUi`PJ=x8O?ZNzJk$Y3LdQ}q+ z(SJ1{32=#karqV~8kv1Vl-k(siINiN0F!6`azq=3ddU1@Gz&Q$2q!nmf(w9eq8Ngf zuSZs509YklVX>&(2Yy~b54CPr} z_10>IuNUKh0R&CD9Xg3)f8fD`S!5CRpUF^Q89o-dhjsH<`JZ7^t?+_scwYM9zTEy65Bx&Ic*T|HTjhtRvnW86WhSzaJ6{f{Bc}PiPMZ z$soNy;Fw}Q13&~kIA~&p^#!7Yl~v0o4UY@Mi8t^n&EVpY3jcd9DYU#-+R;bFc`wSf zcKF#KBg^-lobS8n4Y5c=j?^@wmb&2$-l;B9u& zNi>=L65-Iq6HesvsRVQ7dK}pzP^Ho&a*~^xsm$gZBjtx&XyvCwuIRues*MOGf#54G zz@tcM!A;GKIcMHeKKe%&>oblgxk#Qs{?8Nk_A!-0l_Qr9KsxFEnfM#3a~3MJ$}j(*4htFc zDDOoLy=RI^qIb3$+h@Q&d;{qvp3mkQKc%PqDst-@-KO4~SC9PG0|AiH*dnihoCG}= zx)E;_$-NGgWC~uuVpcxp?V$8ryf8@z3_Mq9b>1X*tMpQ97DecrsI(|1jhGO&(hIYg zX$6j`P=;rQ9P8tZPA>8+5(`JCQd=CAvCan2$hYn?D4l^Nhc0XduI(r)WJMC-b-t1|kIk37l|WF^!qlxvogemDz3Pxo)S_ zLHttOVV_@N>`aK)sB_W`iA}&n)g^h zA4~ZGmx92R)X(F0yWH2ipo`61I2Sk@GpU)ZuewDQP&R5+3MP0!hN_`D>Vh+S5x~G| z*Y1R$egnzrk$){hMDJ+oX)nixn#ks*vj1w{CdayIvTP9WFZcT4f!FerU?_oa8YF?m zRK|@g%sYgE~Bc2JoUmqQ{E z0|-o(ju?HPsi6*Hi1oZGq`8hF={@>Y|AH5hbdj|AT-yX???MIfLUC_$k-r%BAMq6p zHA?03fk;|oZCFUo50#12J>??7qZ={st2fKWhrWcItfyyu#VPT9_V8}v9RTMBTUsQ1 zmfLVEZzrH1!Imrap)LHsu5O?zhw^aOu6bVkf|>Dsf0C(>NtgsjC1Y?hH=xU3q)HHi z4+i4KY`}kla1SXiQ%{1fQHf0P6Za?d#WZ}Fn8LsMEm5g75w_Ync5$JXHLo;N+G(Vv zH2gJx{Yp5J0hok2pG4C0K280har?Nw=G4VN=^C5nm{A?gl>6aTdx`O9o%`96Y(Uc| z4b$1Z+kfED(f@{`wNYw|Qj@5Jl7S%~S9{NG><#`&&5gZ8s9qF@+>bEvz~-wIQ^UQG z7M*I~^5lH;lYLZ}y8gNIpYQzsKNJ0Pss%jvM_^0>o5om%F5gLH=DKpKDF4#EU7N^_ zXRvMfTw!MF9oyIc93}4hzN-(-RO`VI-I3GhNHCXB;F2$;->VSoZfp_=)HeFJJNl;nco0Af1ooSL{2~HL(caF3At|=pb=RP2 ztut1Jn`VQ|JC{K4z(4KJsb2_(QLD3E1hG^&^ba%<+pj>J=kjiSbqZh#3x6&CHvT=sw&O0=UujY5;ODG%)g5U(KybqOYQWb7YWB3!ALI}AC(A7=4 zWr>V4=*km1en^vE5rN8_GK^&u6ax^`jZbE5gPd~C7x->`eL zFWLZrv7HArfV8ZOA_DNH)DFb})2!$K4X)7cAk4gA@Z1x3mu=Xhc9;{EJ((lV1Ct`u zrxk7q3o`1l3rBo9QrCrcQEn&3guMaz}Py%O)(2-@R1tE zy51Qo@Nv4Q6g6)?jV z86}L%|LJ{$g3?S@Z~}?p5#ofcq-ixMn8AeRD?j9Lja;+G@i4Yc_u*Sw#<7RYxOsNz zI#y8Ci-cIk#!fV7&9SiKW_!u*G`?A2(kh!Y^+>V${zD?CS~uwRQxgQ&3Oce4bXw6D zU*XVS*2C>7^2*b)a_u`VYlFN{jQfdfdk%P?K; z1pj;|c4F%NtA+Xk6~J;cf=-4{fO`O8azp&Rtt9A)SUDs9@rS2mXoh)Cik%JDTj;V3K!Mzsd>;^ zr)F4_R(aZye9?TF$}qD^Xbhd8+N4F5e_9)e{jEpY@*IGsfeLF;MQ9KCFhm))KcCtp zLO~bgPl7!xUq9z(qM*G?t5~W!EuSePZuUjwjw+K>7Q8@tclp6?`OSZVqy4-0i;cpX z%S@!6+V>fzO((GHZ8SSjN)%txhhxCsxiwG4Yv%VBbi!u+)fY4$ruLrQr$I#42n2n{Js|K8qZo;PZQrv57chT$z?zOHl+h9UrtA zIW2TzTRF$%kTUa}p`X5bX^JNhrF`WeH3PS&pIfkjPb%EY*1XrqYDMV64%f<_i@wGc z0OWC^xvKRPhmB!Z?udtnYFN@g#~y4lNn?+3#=SYzN5)r{;GAPX&8Zg_I`Q?!i&WRc zfYzl2D{~%TagoF9e?T~-O0y#k!g~n}3)wrDkWXYn%*_R)< z9q<4Z%CK1BMK*pdYcOIOK+L@S(f0zlp1rBFQDT`7K0;N~9E(lO^jIbBL1%m;>P8l^ zce`DULq`C`D$5J@$yoY}a2;h$s`k1YtE#{;lrZgxa&bqfpwzxhg2;U#Wj4hH>!xc4iuB@nUP%SqcY8JI?uc{rf zN{PLxy=rf2*WN3X*hP(+RWW0$tq7&I;ywEO-hc9mUjDyo1y zHRXM2K{K?i?`%l`gvz4miV`|05!l6gJ4irnh7hIN zPdk*YCMb|J;pq63WibjrZG$aN?VhW91NRBl+Qam4Ft5im<{ z1fx`UgiP;JnRq7+iAMT0i2IdyyswrQb zLL#detCMga#WUKw%!EXIfF4J(c<{)d*csTGgc!^!QAeJ96(IR`(l-%BbwACoE2-I? zY#KR6Zm|~?&5_U8G!dXGQpCKBDfxKhT*mYsW>_LFV^QVVPvN~o-W4OHDEpCHNo4_J z8ADZebLP4a{ka~FtD-D!z8s~P=wp+c(@Z1BLfo8SeO`wQ17YFfw(VHD$@(!`#2vp+ zVSuOls8?m$`7n;_-od4(>$qiZuFpyJQnPZPL49)Kwq=uY9-{C@!;H#x;AMgRj-^_2 z(JN#L#qtGkg*hdjt%~Xyc9B(Ya$TP_^(g<8UX4;fTz=m-(l3DTgf@Hj-ujDD>&x6Y z@#~NiG>rn!2hkxKaF6HnKI?Oe(gyLPG_A(W-y%a=!h!3Z#v1}i#)yiMv) zdpiSbtR`W@l!qvn5h03N6kYjh%Ffb!LabTCM-M^@jn#FqT1RI*bVp!nB+-D%MndUH z$K#QJm+%aTF0?4wtk0VGgdECH06stm0;YP<6LN&Kw1+4PP;?Ian3=TkbHbdlAjJK@ z8zWhqxP?s7D2<3(K{8_V7|ST2Gm~C}t5A5TH^(nxbxCOB>%&>RUSIby#;eyoic;7) z+V63oJ2GvyID1{}#P3MDeuww8JpM>V7;=cV#T53JzJ(_xpA?XeSZ98r1=zEX?&7lS zYZr;!bRECGeEM1hafA>p?oMcqcY88)|ifE&!t#h=lht!;|Wxrr5PRI8;p^Q2%e? z&p3J~mUD3f%}HxSkkh@VQ1B%EJG2vp^^4K!P!etKqjb3{xuquGvAd;LyFCIAyUj0t z0(`UCHy#69vi8{D___}!ZemX~7+;#=b>Dg8wXjj=2x@kpWx zXzFpx7$h8*`;x=36$Ky~L`tLBk@bKolDr&bV5mm@@+i9#l4w8FQN~+n`|+uPxv88^ zMnTu-&oSqj6CK_v^K5M-%0CD%t}EXr>|kBA+ue9Th|ZF&91=lv?^! zU^qWgKj9|!!4vTrBW1Ve7oluFrx$MiQSQ=KM&6bgGz(AnDlTPms;9u!q zJ4uA#qihxD0y*S1v&Yw$RPq>NMl5uZ8k#vW0AG<}%O7*(IY|qR_h)OVbdQt0WDN!o z5N=Bs>+j?A*DGQ)g<0+oT){~S{{wb$9Y(x=?Gq1L_SEtv$^d)#5L11@pbXami@&Ih z50qm1_LE%lPvL^+lDm}SEG0JlM(D2_G2*B3+R;85DRklFXv?4?FyJqEvhUjp)qv;~ z(d6|w4sZ2<)MdqI%1A5p-DM$Q)JsDD#BVi;;H;wlCu5BzD-30XG+eCX*#}|zeLN3pNG);1nVhA%WP}!=LHlBX8)a<2 zoQe`4P~l0ipCAm%6yeqd8F@K`6E6eJeHp*Vtjz1ijL75%Fg+%`iKgrrPY0AUa4)JP z8VFrm5HsF?3Jn0~*hNPyu#*F#-M{O7%jMg&pf*zs(0CtcGqs*#V_bjM4a@e7ObYx+ zn97G7kor6`y0lBunHb?YW~bS+KNm4Z2I;R%dlUhUWWr2D@NcZVyW1un=!T`os@61O zrtl01JVmPT&L&Go@^q|>gp=_D6`qzioK?`o_L;{9Tp(iW zQ^4`SGe4E??T=4mPT{xaX3`uN*4-cUX=h1vThN7Af$K}$0n$~1!#}+CTuhKM(uleo zyEks&Mf;~`;lErHdxpv|$udtjlU2_>umX}0S0$4v(l3risiqfBCM)+twp=x-uw@7mH;&(01+i?;?E7fAP`avqN~ z^(K03(eb$d{<5_)c0dQ%fs9=oyz|wQU-9+&j|q=I#$FYqs(s4!Y8K@6wyqO0Omn#4 zvNb#;ju{y(4QB!Viz8#SYK1t%ii<3*MF(0z<_;ld$D}B*G~}3fgz&n2j}LIib9Gqi zaHiiX0phRHzop1BCp(Wjy7Wpskm9#rur$=7s+bHiYd^hGo zT;e_`2pj+uIw2496$v(8)8>9n<4E1N)g^YI9N$y6>H4t(wW&n=uur^5Gz4H-c|d;m z$%uv8Z*4Aufgar_IyOPS!ZG#x%_dFKhS^~?6WqB?$ z_=5(iL(3{%8)+AVbCq)7TB-tFx9T$FhOnNP7 z`jr9CCVJ?jm=BlCGG{8Kg75{hQ?iJg1y|0{=({` ztJ~<)z=+)_$zps-jN-1V`oO2#`0b*~S5I-9BSD?J%tglC@Bf-}9q8ci$C6q=>FGqC z^e!2FjpRYMkS@3?-ukp&f|s{p8UR0crGc#`$au?kgwY2^jdjIF8cg**6&D0;Rv@l_e zj%iM@q_rkfU4`!sbG%x;WN%)hu9CRE_mtEv^*NxwvzFl^EA zD@&?48hjmBo^2@Mt8%nh6^hc@Vq6A`fAxHV5zjL@6i~0)qA(-#K5$tk2p6MLSodf! zF@kx=X#Lt{-&F#c-ouIaD)G5Od6$^~9x&*996G5C7tGex6A$s0^%e ztGdn_)v)y4XbDB9*llQcE?9QF2U5*>@JPeuig~z^+cmyA{FG}D{{z@tV%Tz*6mk}g z=&l;G5}~;{2@RyHd1D5g3M!*6y*HRSZ)p(5zXekWj3&uU0#fX~;zuvY<0bJhb8lzF zzI*Cf-Hl|n& zY3?4#n6NvPCliLfxGNCNx!~lwO%u1pak5iz>x&MIp^zn|Kd3d6GQggDpO`Y;Kf<_u z(Q}6J@LPrs4ms?T=scL1LC%S*4%mK~eb+?_nTrmS4%_u0k9PZ7()=D$4+9Hh6IN{n zr5q&137L7C-2~%z$7a!?@vod`tFnADH_p6}p?Ujs6O#gcaBC#Zx1MLPO4CbZi0nT+XCRAESv<$P@Qg2BiQ(p zO3YRhzKfG9Z!S>twI$l);Np9`bq=S1P7g$3!mli=>Miiy2Srsh8~bTinYClj%dn?c z%Uo^myYX~beu*~s5jtS=xfVZHJH;lqO12VHyDl=$JTO}Fr+k}ybaFU%&8%XyzUQZf zL)Y_DKo>gv>6;^558Po6AGHL_!|yIh+OKmKXkQtS9Zjege!h4tR~K?VM{k)zMsgDO zyP$xqRX6jNiGt!N#Ea^ce{ubmwV|epC&q%Kz-DYgfEbhMDT3~Hq8mM|wZDxiImkMv{c`;=O{NE< z(f-z1GWn|2S5s8_Rlz1$7WPRUapQI8S1jtXCtkML8aZe@PO@?W&AC0UyWpBs^Y zKJaWlx6HaiIx5wL=v65I?;(dhHwk*o%eqQD&*r6=%sB-*4)c?bX&^d}#E&HwK*$<) zsqit)JUC;Agb%d92X|pve%GCUAt=o)%hsY>DC|&rRH4o1>ggC3WVN6F(8nk8h-uD$ z&@;S5uprm7(A~UvYDCU0DON;n^oO^W;CcpF2Nd`v&rNrDFR<&K`Qn#PYZN zxvH0ax?R@xZz2p@K1_sL4@E}4j39%>BP{;+v`1(G$ag9{Rfmy@o9tWuWNgme-Pw+N#bC;OC=ZtIKxHUpaZYLrjCsN|4gO{e-m(9wc0~I8WMZm*Zf5P1QUZ~`uCga(FRa;RDtAgJ&aU#IKWP@@fPRm= zEi)NS^d1)5kf${RJx&3qLmTIguw`P%eATSDvnYxz(H|_mn|xoJo>)zCk>Hj6r&K@2 za%+OAcFD4OE~m9n{G~__NNj+@!;TE$&i|faG60Neo}{3(C!u_@_6j4-ru*1#wTUIR zL6lD&V)A|K3#8ZV=J@>Y+l*Lv?doFoL74h%Bm03k$S+3(DBp-DQVvf)wAp_^f5R81 z2O`q5AJbHH^=S*~!a(+7f%>mZl4<7oU^dQq88meSLA`~J!1_a zgga(eK1Xzr7PuvRy@1U8k3*F{>s-;pNdFr+*r}c(26q~hnep&&z5TF2AS=Nt$0yTa zEUY5jSTNtOmp*^8Z6(GQ={B$ARVDryiLDCG70qeQ#^-e*_EP8cb9h#@t2P`oqTMs- zG0X)$&}q^>cF7=;|yzv{0y8EzWf#d zr*LsHUA}fnWEGY1lP1b(1eSKVy%bee%H4E zts9{GVHAnpuQk(jWV?3z>)n3)KF1iY>L^mD@ASMrKG{;m6hHbUhNEtw0%7?oWQ#Nn zeWOaZE~+JfvI-)>xug3>ENyXSg{b_vz8sf7t#S!#>$$r-&R<5yeE(vScw@`y7_R~V z0mZ7g5UGduU~E(xEo@H3H2Yajk0f>SzBtI!{-xJ$P+IpYR$PQmvOv4kA+V%2%_*f# z38Fb%_e1Yj0wno%M*ULhEk=7{3F=0EBrea zCiz#9%dYf!iU?o!1P-w=@UcxaRi|kXSK@i!lC(qilbMa6n&tWCuiJl8^-a?Tz>i|< zHk$Vg$4ZyG2=pY=rN_x;rpTMzhN2$xHBR`q^}b)wJ2p6vHj1F2HY>|Dbyxd&uBjz5 zR&zAcGL>o@Uf;`-Dq?iwOWiSAKQ-l{o8KiZTsJuHV2YqGZeG)J8>#q}D)BXQTVcv0 zY$TLPlfP2vuBs4d5b@C4`9aa~7ol{)vgbcrU4QQ`=GD518YW~uu9KC}lSRxec%|Pc za%u5ncp?Q^2xL3He;{p~FSAK2JlcBF(r=Mer@Q%(i`Cr}u!ZOZKsf*;6|ClKR*I_zN@9Ik{Z-Rylhp zkf67i0jQ>`i)S2vc_1RL!j8?J;?;X$SAUX-Rh<(l&3(}pFv*S?Z~of*3Ov?egQkxS zkfM@D>3>X`O`;Bs*P zRSF5*9O()DlT$Vjfc8#Tq?faMu{LsU^z}@OvyAG2#u%VJk=_yFObau+l_Mc_3XO~c zI>Stn!qML`CA^*$EttHybifDBA7xjxOu7za7m~|Tu9yG<)Glp^^%wQSpXf$K-k%o4 zH2O8!eEf|sl=EIYJ%4()96<4Tau>2UFuuF0`sn<(IJ|Z1$fSs? zEs>p9x6XboD8vKjnA6V>dOpHPu>`Z3(~Avyp5@!JX}JE;F0*g#l6JiC@;zsJ6qcJ8 zhhQp?V|&s4Jy}9>-gJYD@}q53b%z4y=;o1qHEgtQTP@o^(@NW0S2ivE)y(fwm?RU_ zzen{&r?58GJ0fHL{t;LbaACQ^V!YrnZ)%S5i0+O$fI=4g4AxCpMbVv8 zWY@e%7@;nW(cYCy@=V1RJ$Wp{q_r4f|2RS?VgU4xNVk%-Gjdo{WBu&Nc_(H*lg3B8 zN}?Z~fQMtuf{ifuKwv!9tVjQWTn0;2J12QQ!^LoyGr zbLG&W*G87N88_`N2SKR}j)fiahfhUp_G0r0-zDz94lvdIIz=t=6sVeMA#b|JEt)Fq znmWV|`_E8r#UOMJbhcYXLU!-gTWKPIQ7nDiSX+rTJ0g?|v*|Ca2Ec`?cHaGnMZy4W zaL)@h0Hir#UPsxdi+5Wd9ULB=!UEB5GAgf>m;B4QjcG2eI>NNBU{Hoj0Y|!*>oiR` zrvZepqmG+9&$5Mq)O&x45};QYJXg3mgJj-LH0IWxz~25!mKUo&b^q-Vo64whtSkN0=7bzM=H zr4i)1-Y4tFkp9Jt89#-rnL%1?r+7o(>+8=adEM_N>(7dB0KJ?T{d#HdbxvEKZ=hjRkaM6CeC4sLfG=k}DkfKSF0fJ4wCCkEj&{ zXV^-%`rbsn;z7^n-vo^t*-Z=wdHS~ydr3#00hkm~%Qkc&(;@Ll5|ytMnMUy29qzEM z;Cr$3TgrE;vOc)G%Q=APuVp3B}e%0sk2N~8{p zj_cP`iNfcDB*}jAa?%#fqgCtD$(n_p*ZIS#>K4_o`)S)e3ahyOk`4tGju zMQsu1dhpYuJqN;bLZ70`b1Avbsno*A;*4v3dEnVQ zqQsSPvxiN$O$2OVfp$8p=YKWp+KAJQm_*hO6>ClK*>BJx(!9Y{5x>2b1P4G<^_j_( z)QfBV&MAVKI@wO%nSuGqH8#-_vqu}(k1&jweNq96^1XZFkbtj;K9-rF!O9{1jN7$* zm;|i#_2)NeqN`)5-X1}rbI(s=6M{urhhSNPSr<)fn#?voDp!cMSoS5 zB0V~sp^$H*bI;=ugTEk6C0`e&cMUqV7CEDn_wL~g;Hm1t&NDb)Hab~0!ftPb9(pu& zRJ*++0-5dR2|P$_A2KG-voCp1%ndqX)YkOcc>o0C-c&y5WW?Y=f-Ar^w!!Uc^uqCPN*(&n&XKV59ez~L80cIrJl3$#Z(}6TTcL3n(H|!Pl1{*k(>p(jt zm@5F3kVN5lp0J*;H?P!GOWptqM7t*Ajg&fA5=%;!EA@ebz5^5zT`c5N=D>W6FvpXG zK+Z1!5g>8QPwW?UXKhK;TF*ueV`>r@e;2)IAcXIIfBRDDmCb$FEb$m&cRs6iU2?i0M4%g%E*9ApsP_EA_DZwQ@m&g#%S*VS2m1yL<`TRaI*yTZRx8%h_v)~Y&tQWRw%6XXyH1G zMf-jJL}_Tnh%Ud$a`=0f1-gVsIfoV&0dREm?zH|Hfh)S^j($)6p>>v3#@PJ{PP~_o z!y?XIJ0Cy1>!x|yzu0UeOUideY6MQ)wlznGNeg@c)_-O8rOW92j(zGm zcc`D(O%y*Aio7)Kk(8n+&3%+l|y%c<`kx# ze1a^-8Zb&3<96Ms+1=niwqXF*0j=I0oOcVMH7|1=&NT3LFm$PzGQpm8>wp`-Z3fFL+qR)wM9@L?B zBOy_M%r1vQgL^zbf-f5T9leFG%Tl9$e2S-&wMQ!_km^}evrHZGBT6UE!u_=j9dNT= zv{NjIf#iC}+yN1OJHY~y`q=*7Xff72w)<5eDsZ|zM3i`9tHQ=I_&{03h#to}tT*gZ zt*7mSbIX`WW-L9liHttJ3WGCDvLU-uDFs98T?UA#a(`kydYDJ(K5@;PTNK}LP_=F> z^lgLEc>mE`oD};k%{WBZ3CAoRrO7o4DW=LEw-v->qawo8aq|uMxbD|Ps z1}~6CMaH_xZvqgeuN%HtO20^{9Q|x%hI)026pL3T|Ky&K`~@ZK%6-2Z!geSCaTX5E z3qHq^|BEN$M}~e%ER=QWW3lhM%xmY0uHn-D=5jh{p46Ze`Mf_;FYz{jeJw z;c}ljx-amxeloR1GW@S}GmEh1fXVEhY*u0t}@#N(44UDQH)S z#x|jH`9(|YtB$DJlH{%DQ0N)U1lF6yWC$~7?Rp0eM%K~KJ?2BV_h`c?knYf6r@x{| zc10>>i%1AEaqdCnld*yDriy1i=Sxzzj_%OB`Cuik29(%L2j2wzOl-gKfxuRj+`rE5 z27?ha|5KSvBws;U4{G>K``c^?Hgk%Z{mvh?KUu&a>^7cLl&I02TsRXxVf?Na_`!Nz zUV{A`SoDbyLK4?pRbPO*H_S^V3sScP>?fJm^v#QI0d_q*8yWq_-aX zL{yKipEtQPPwgPRYTxkqCJgUUEGyKl`8~o2s^c71O>fm1IJln^X-CD77muz^ZAF{- znA%FUHl=xzMs&E*K;sI_5WFm@okRfC?m{5TQ{jU?5gZ{bRx3;af%T*_Ge2<>&8!v z2|x3sZ)#l%q~7e5lV8yxmgu$j8O^B^yxgk+LSAa<;`iNm-B^G@;WYAv{_H8P;sy_t zpddizgQh2X8&hVCiGpQ!>IbL4A;-7xqqbQL0qkZ)rXOqejWoB|H8(iK3b9Ai~Tk^rEEj5H?M=IMd&^5gPi?HG+u@0 z7B^{KK9o%Me}cNGCY_4paragXX@BhYlFfmNuL~M(!c?6LaJm_MAI_4-`vc}fBN%XA z@0AuYI|4(?v}!phA>k&n_R=fifI41a1OFcCRjdaLIWiE{ZhlBllu7BrzB&I}0{}FM zz7^D5S3E#T(SY-6_D|hsMSjl(*4YYYWq+L#&h3h>TEu<5RWVBUUuQ~<;<1Kz|aBf>Vll{@9ryN9PY53h=iKWy-^3xXj_FYQUx0MVuE#Ldx9*r*bz9vS6gH zEj_5j8=)2ym3v+rPNQp+@0|<%wrbIsar_|Xc@XBmjjMt&gH8wWGW;*x4SCv+1AI1@ z+xjEV!uVT|rSp3rKP;M1;9kx7N1TRa-2iR)tovIQAhow{{$|8p%9*C3g=b6$omMsu z5*;H&HM!+tr(~m8pXqu4?LezLN6oF#VO^runG~kfTNwMZ6m}a17z*eaMZ(Yv^WPkr zo$tSr>s692_gZyyUp_UiNBQ{6BK=f>gr?Kg;^by=1sZy;O?Hh1L+!6qhn*BWde^RI z$WOoj3b4_t6!xWSG#uhd7VC|OoAdwKRXM-;k_lw}*w9XK9lGjfMlj>N8qvhBbQY@) zP+so()nmrj)knKk>Ao&lwoKxKv!PDB_VU2}kTbd_tR5n;ryGFGq$|bjR`!w80`HaK_Xextvp-4a+){e%%jkl`c`+`UTIz|F{Webi&hAG|#8%!48A(_*6%F&WEZd_ZJCC{}Go*@Yp+ z`aSUjxuQGXQN}wO1Sw!z?Yn&0#6|Se&CFUQ3d`8@i|27T5XDQ* zJ_0_WQlm=(5|+(kG)#o}qX+ixp&u28;_)X9HLa?=8s`s}9Ly*?2^LO;8d|%Ig~@K1 zuKWICIefM!j`tEhEMjwEpSkEykjElghc9oHGwIb~5te}Sn)pBON$j$g*@@ozKC}4; zm3h)TT7(W@!S-?giY=3FcBBUk{zUM?KY>m(@Wh0nNm2<%60LYxILw(8_xf|NJt1tA zc^Bn9hvO<4AIM$0AnE9tt5*}sa^?^D^&ccytIXs;m=ECz{~-tWfyWR7+bE29tA7gM zBFMep7$B>xH-I3=B>|uyA;WR-$np1tl5GS4hfVK7!0>iJta$ip)TMqO`B_1@=`g;Y z;!UUtm;->-AS-W#`jN6H{z90->vu3rl>W2^)zKmaFK^V_7b#V$P2(OCLz}!ObBf+SrdOIXY}t)x9a(F%(Yjr}u>2&aFTO6k!tlY^`zW@|!E0d3og zjS3H7_XxA*-CcU+VZ@uz=YJ>ierY=BiL$VxxqF%qXKfzn-}#Ilk0fj+!07gR@$HPZ zX40VAU_o&@cx-OFM31`>;uQQ~E4&A4OJWcx=kt|AO`1+zPhA;4`}VWTfXb_9uWPI7 zkA&{s+cy+ZeYBk#Ay3m-$?JXEi+jUXQ@fQKl19BV@M28mL8ZRW+R;VmvYLtrZR0d5 zzZF?sMAf{x2bT1l`vTGCQV_Uj^kXq*6L|5rDySt8)G-#SonpnPwnQyu{U$G1Hk|>g z^I$Xj5@4jb18kUHCFt#9Dg}SibZcJdx$F~hi7CZJUIT}8>v@?*9DuI+M*MoS(8Y8I zZRCk1`?ahSptM`s6iLm`QiXk86vqV+NIRg!*aZ3>LM42-8ew{rQKS}!RED+*ZuV!- zPpNU+KPT)zC#PmL-SEZ1NI7L|TFyd860jC1nZqndywKtUY|((B{b*TEC+u802mX%# zMH~A@Bp_`i-fcGjtxycl-Kp;ay0r+0R4h^u-T!+QMv(%FQ%9hjRI(sK2cBaN9MxF$ z!y*U#D^$n^Mkm^WT34Zcfk}CEon@?Vr2P{N_c68WH%De;#$O$sY&AQ+18AsYJ>7X- z%T@;yT}2>^UH%A2NzCa^gjV z9zv9teEH@?^1?z*Hgj=s{8s`@4@AlXaz_)$iIt$W6ihfrl%u++54nMIsN@r%aIKO7N!2LO2ht1(vCm-(nIU%Agu2{gG*Z_ z%v~VCM#O^-KzL!5RoMq%&}=1fNG5zy;w_0rIg2hf@(4XJWO# zD0pkTzy6SSbT*Vk>*kv|x8EqMc&j~|F%)|B{K^KF`jfOGqNyu5H{z(F9Y4X=(1n95rJMiLt$D53l?pjY0 zpwHhIVwzwSYh~+PTFXc%%EZnt5kk<%OyH~)mm9#320EkK^rw=Zq>7Xlu~><4+6{5c z+Jd(NBBL|X)il7;wV;$uePGy)Kc8=rUMHIib-GdyOROMyH@+D)emC#vXl)jKnL<lX)k2G~+`fm&R2 z{Q9;k9x3?3;7R<;oznzD@jcl9y1%4&X z?v)wax%ex_)hRtAZqyz~{m|X{AR_`%7i3kyeOAq^U51B+W|-BdX8{$x)u&Ar0`mc! zqT)o7EGtf(G9+XHAgz73WwQfkhw-X=WNHLVkeQSL2Gv|> z*cJl?G40>DSv8C|)hIb3>uhb$y%#-E5xC^wW$q0S8d~(g-ig^qYA&WD`8Tq9 zbgIobMPgbHsapj{CWD@J7Ab+{{+Z5xrF4atSK%+cpVx%UYag_Yy1 zO&oNi0}xUlJf~-8Pp_uUCh`tljGs65 zDKW0NZ-V_bpYv#gS-UKv2V(zyJqN9r$W;;rZI}>h`P*1!iNbVZXQNTsEro?Qw#eo# z=H=6G2lk{YyaP7cr%RXI)vbr2vgIsB<3t8fuvTM#+CED_<;BjTrs8;+L$WsLM#oD1 zrobd9md>KF`&l^Y{PGIlsv74LU%p|0J+5fo#Wmki@DDK}4&FzDaW+^0Q>dq)kOzG8 zz^Q1jxDVBjSPl&`fykdfkLkMIF_A%RMk`3S@Awk*rGI9f1xm{2+Efw2(6l@7rqP&e zl;Unwx-r+RrX6YA_o6Ac8;vhe^xci&;?`UOi^RY0&3ALvDc@6CCpxIF82?#aa#r5{-XW z8}MQ*wLUOC^)_zG>OTx<_5vKMiFK8C0RY3PL1&k<|Bq9FEptkm$z}ir3&Knyl31o1 z0C*R`rndOi3j1`_tD@n#{|Skp)FYHiq$ma4oqsQ``h1HA45!)6 z4jFr`53-1$*~=~t?!y0nby30ohRWl_Cec~L;^zN@Ydf)yBfq+v6>?bMc>I(qS9!&s zjeo%RgG_RUd;6WuaWpOcK5%?dy?6!4q*whrZmbv3=iy^k(cMJf&Ts*Xz&Ci9(ho%% z16c^(9WcxH+vz%;lPmuCU+Z;Rf#N(Qx?0@wf2mDmOZ>WLIM?7Xo47Yub6OKe39}ED z@Rab?0<=9x*$dz?x~tbpw4h(B9^E^P%|#>FrG+i1DcxggLGFC~=rCm^%3^abK6Ak`3i>U0Qx z$TVop17Sm`pn>f+CFK4Wy5u83YL@(7wpcVcKTXy-8{gZ0>FEHpsFfk$HTU^V-dVl0 ze_=)^KrXSH-Ojpn(3Em1!ZfZQ1D?-{g6Ehmyy0Mr^N_ ze6DCktoo2D)iWAE_%6ME?0c$boP?+RoFiw8H(LYVg-UmDYWn$_(!rFev3+XldXcbW zcGZF{USIm{Y$RoEP;Y{N0+5c)%#n-Tx=$3gr}{K0?B|cxe($;R5?X!IDX#;laDk0W>Vgv4g+$sJ^R@iO+YgR zM($OP`vmkJTSDF*vEmK7dIonwjUlUC60UyJIbI3ir%b;jd%`xD2n-OrB-Ux-`}J&% zEIbX`awb&U1`6g<1>srUO~}^Vt8aA{IOjjadJjYNTQ9{etf}VHe~DeU6a+kfbo&JG z+ohQU_nn9JZsCwBt=;m8$2vCX2sHlPArzo612K|kCelmFRf&F((C?A0nmy)ZSw@Z> z7msjhzjcOJr~0#i?j0RHgnk%c>AX+tA_794Ely9pp4Chu++R0=O6wG2)$iOA_}}3M ziWdKlJS_(Fq~FftChmTTbVIP>=pcISb#N)%&ks!afP)o*lU2^z98UM^^+7p!@-;vU-K3QTlM(GyH9EChpCP0kU+GARFUM z$!T;A>FMl)OzDOE4CcI74{jniYtEZ>t@`=Iroy_OpRIp;Sh{OB6*Qc(gQ&3@F$uz6 zT<{lNpG03ikfH6Rwmssu?25@02;q5HF%#P=o}%a+S($5XaF0!s3OHrXShOE;oaG2R zlk^{#=~zS4u=jEAK)Zh?G`V2HuC9e?mhGa_CB~g#hQ8y^RM2S^ zkCrI(-C>acANq1P+J?Cy@ z3?;3-t(nLjh-|a?lhP$1T^bI|Et^DZ{Rz2*eNe#Q>s^P!Guqpq^`?Mrnf0~!Nv+mf zI`_aVi)SY2j@7aGB+V1orEReTU38&RkC7)je@p74y9Y=QHmO?AzseM?v)YPZ+| z%V!XI*9`;M#EfBNh4>{-H%hj~Urmc=tG(7!4pzzb(rW(8t&xPo*+Z6RWy-$2+Apdq z1quTKn4m;}#|SEM+qreOUR2_56=>Hip9u}XWP-9*c^JbWW5~$Kmw$bb`mnk{igYyo zxgAmpqp=W9o>;rrjz=`hWs?xgxjKSjKt(ZoBB==QMPT|_05P)FBi6q-r*#jq)e--^ zQrrY*lXH;y;3na=UA@k*(8Wbd@!7jSKCa~pcPpAKi;P{2>SdG$6s(K-KdEZf$FvIZ zn&T#^6EjNkS4o4=VLU8SW^;ot*5Nop}l)>Z0k;2VTlC1PUg%ww-3 z?4K;KaGq|GZKC=*ui5;x5$I%Cf`SSa%2eL@W(c-5mf5{|5A+m;GTV3J;{c6p?B>rn zgnFmlCarVczt0ET2`7D*h8P=SAje$`Z>Ik!ECk*ubB*(3pq1-#^&0@*?e6xDD@bgp z@|x`RS<6JcX1e6bVHjA;{!DD!KmSz(8}m-6@5(CW0==%Pgj`~CSBy0tE{4p^c;gIe zH24g_VFby$c4qrjbAw>y>Y(IfILy?a4?6U+tm&F{Y#4*GNF-<4 z{>FmR;H>0jmhe2AkibXCRwh89e7(g0efD3x7eNrKd-oJj!#vPZN$3MV@Vr>;8aN}x zWlrsGr3v<_Cs)Z@*|;8N;@CeBbqr;6@d%S*?U8zrzfoAJFpm*)p`&ZYt;Dqc?yj#S zoxhrQs7u+Yb>Wz*8vk)#%a>`?aDugeGn*`$SG*AkQ3Uyoij;Lch+94a=n6aqq`-F4 zI^Z>HDxROS%HXtXAkbqSBsZ;74Drq(XQgL8J&Y zIIlo~JbzSsqS_?TbJ=KHkc;xAa7tXFVNd5TRyYU-ax02;aZJzmbjz;* z5v99PkOpaxM!K1#NJ_(Kq#LA0*9htEMm8izOosx3lyvSne1HF!&nq@J<~aAculU4u zuMOGaQXH8%_p^i;FBgBf7Q)$H_}=n(g=84GG?=Z5Sp(oab0}uX83t(uZ9VA|hBkTO zgZo_%&`nuh!R58+had;1ZGg1z*)DhP;1SQ3SfLIK8HfHEX0-mQ7QAh9U+5Lsrsir@ zse(*W9p|8dZkiY(PP*y=m=^ctUn{#Tn9{WR0G{9RbSiD!0!h5Z{X{*Kb`dZMeEVP) z($C#~M~8@{l9e!#n~|lvgTE6*)2-A43c*VvNlX{k#7LeE6I`BVU(&6dRKC5IX=96` z4(K5!~`jlmP`Fwd+Z)!%41iOC?V`yXIROCsly_U>w&4s_Sw`oLv@;BS! zN~t21yv=-|Dn1LNt>A1?sv6e!64ne~!`eG$)`PdiB~Xdbjxb0@;Gf#N)goEE{LAas z|BM&5P<;6O7W2h5h+(U@c`e{iYx5G}vzwby{FSkfG)M|y5kREg4$PcpOs9m(t<8Q! z9xL5P`OidlX^q(Eme*WgO7%;Bqz#H6!i6-sf*OHw}2GC0Tq^%kXgA zOEH3lu}dt%So2#3m#;H2{t9@0ClV%xddUOca0Fd@5wP|@j-E_EeDYL3Y_eRanCzOOcKo1rttK=d+>#p; zJVf<*mRG(37tuu)95XEyBWD3-rCU3mJ#ba>!Y4G&9d5=$>|PZq^_IsIx8min6?SJa z8i!xHguVG6Tz$T2{XU=U>52T$Es9&3@lgQqab@@g?Z`=gXMAm8AV^^awSP}m30Q(i zy3$&LjRNp<$KOyj|Eo%khTg54wn|KJ{dM`DA+PhlExKTr(&&x7(;C+y$99$uxcKNh77!)v>kOvPjaR`$_9}riyc&gNcyzN1rn;l#=`0OE?og64~Z!Jk_^&T@Mx}o%hfW*_4ha(5pgO65M7i?A2 z)Qr4Wy?H8neV_tUf$>_;v-bZk*$In@p&byxU}ZLG^X?1(^=J_K9q4vLAHTeJUO%EoqY^%!>=~;(CkUYbN=N9NjL7%lTr5 z;F`3D7({J11a1Q%X>SB9#?4@wxrJu@&5ztbZ;Y>7VPoL>?T2aqT#A|#S+j4QL-!Vc z7@Ar^eLmuz(`2=qHnneECv%F9wqn`yQm>7q(dq!`T*Z=~zTw3|&`PGI{G+v%^D@1w zC{TyxCY3^gp_LG-dWmey%fr?e8}SrZ|0HDBMd_T?^tP>TUlL^TRR-L4VR86N8aX;0 z;*IlYy7FV+sc7*T@neQi#?FO~K;Yy{fitb!;GuQ@_VuLq(OscxWq78HE5SxN=58R9 z(lPUb7NPJ{L*Piw>|gR>-x5d^THWqf_l zoq^qM^!z!9Og-RB3Kt(s`!*|UF5gk@L<@UQ+;n~u!5S`)-i?c$357JiGb-MZoqG7d z@+-kNSRoSLe#@UD0Lx!^Fdx4BBC6QzPpp7fn%xGrO9&?PTs-!=Pq_kDlnlkVuVHS{ zSS}n$gs?d+ngAWBoz`#i9j2lmG}*LW7+Y44N{*i6H_29Xd%Nd_Wt%+C`?O)wya0gb zEX0jIABaM;uirJdtWxrx6I4&328(LXQrvLj8MKOodMniD9~TT~ysS}wEJ}drr4Qpo zNcF}VW)JLoZ$SyWn`RvQsc6Y_kmUf#W1y;EWZ?0zJRG$4mG*l?>9r^r`)38mcj4B*QIawZNUV(Pc8 z7bJ|^AG*j5fj1!=I~RQClG|b4q=Y$W`~%hL=zu&`Ar`5qX;*XbdL^(w129aiha4Ue z;3uAid=i!@l%yfL!f7gyh_2TEI-j{HbmDJ`GHO(9aI%z}9reOS=sqjlH%xy)!|-7L zR`q}mchBNn7T785BA@Lk)ajoyq9*#of4zc=9NH|Jw-Ov9*8A2!coSrpWo0Th>*rrp zeEa^#4(7TY`V?F#vDJF0;uHlsG7GQ=QkTNP`U{_41W7}!Fz6hXtFx6228kE0EfEk6 zK*T~6b)aF{xm0U+B6d!2g>OG{F@+YXfLE$vGfBM|E%-G{=)u*h|kfT7XJQjzv<*`q`!doLo016h0i&sXQ&tl?aPN@&-6V%$>sohAu(T= z9ZdX159!j7Si^Fr$lIcbSX_ODue?a6qqDdCKy;$TjbJEJnesbdyo3i6BQTWTVSm=1>bZ# zN&g#m_LCY|o*68ZTf_2;cZEuY<3n0pE0BwKmgLeT&Zzw*!!-7@$L%^mP||Pm>TDrg zlN6M~5^8!(l*wa;E2Q!a$>7IGop0{KY`AReK93MbjDFaN*$Qgm zJCi`bmL|;=o)509=LirgGJ2sp^y%IzGf~s%ow-b!0 zzKsd@X-RB;kYK{5R2F;Vr=2)DO!5?W(?prhYLX5NW9gyAdKN*i57VJ|<1|p8LOUwt zwM&n|*Les3N61GYiwL=bP*Imt{?aZv8%Bk~X>_$Sk8uiqr^5fX5(BGdQgzIfMjVcn zb~0V>nqea*Yvi8Pux3cMQw%X$ic#{19~b;|Qfb>k#$*rnj5o-6gBGFz3!)?@LbX`T zjrvn24|xj_mpyY8ik%EDKN#Z9dYQd)WoAB$D{4+&<{|m{T+TbUu@BK3)li>1>uv!X z^X0JTQ;Q~_8rCoT8lz{|Ow=g*jhArudVA33(mo8Zb^oDrOp`$48D)23R_`1mGP4#2 z>El|hkTX_{JPh5;fXzdm(3lZ1!2ijZ)Wyr99T;e;WV!hfuB%?TA{rSKb+Et=IxmzN zmGL*;jawtATfrnK7Tp)TifE9!F;M_qy~m7t?v+Rr7uXeV))PvV7Bv-N&J_BL6z^^+ zmGz92?I^Aky?5fL+%|v7N%|DpZBDMFfPCwT`8{N}J0@X@t9O*-76*jJBJaQ@Zd*5} zSbTl%E^oQ{PhdL`b_Zw&hooNq@H6CVIx3t9rqrlOkz`M8CRT=ApeEg2u*OktQ+zKC zdNEzjAxBX^LL`@s=q8IAq-e;z9xpeugC0`{pZgq=2MrO+O7w>BJaR=3i8#7Zzyo1H zcm#o1tm|dJaw?f2vQAP`WxmD~V7K^f<@6%87J$}LN=BkEFrUJr!dVE#we)ux z3d1~nv6xFLJ(AJ>M+kJB=eBB#T9baeJha8NQgU(J$9jjKYqk~Q8kW5qEsD0B54!-_ zg>gn5S5!-=>i`Vc>1nh?$^hH$zmnQCfAukO=MnAv8mmZdn;3*u`}Y+G zxsr$qaF)qQLT88*o;tk*^CtsUNb8x9>6Yd5IGn&-D7JJ?<{uI0A$n}0a(kV;|Z?WjAT$c%BdxtZ(zcI&8g#vEY zCKAMZjoX(egh@cyj;V|vvA#WV}BON1ZA@yc2- z1(P6@oR4z*SfxDmGm_#Gt-gY(J?Wb~QL;4fTH(`^VYHl15X;zVQ^iNXc&_(bcpZCh zlXP1MrpYy&*|2PwLU@P|5_A`N-{KcXQ1W(Ss+m}TgZmR3%tT?!@<>3J?mz(1Jq>&I z?#A6S;*T-53w7vzm^Z~^=||2$Vq&3cUC6Yb$lnSvKDJHefkq^al_b9^)5RMn-3We& zpyNLIA@LjI3$^q>h9CHL!#p1xGm-;Pj^6ai0eHDlRzj(3$VeQuE z@3_p9rObZdl|e6j#Nz1N^B(#l5Jm!A`TvS61U;Hu>bE?9oEu(-Q+t|%l1nqcT=VdJ$^D8I|?93U&s6Nk)e3heMe_kGt8Fk-_ z#04Wdb+Suo>IQZswx0eRy$_`O(|g%`$;c4zu}B;%IN~MiZ{%^X|f_mYc>9StC#96jr{$kML*QJ4#zKSE`$RbA!ZNN0ON22hSX>BNJF6)>}T?k~e{$cuLT5FDN*^-KaNs&W*@5PrU-%#8fC*4>)BkYw2gOw+*|V z)p*=rAE|$4PjJWwFF<{2;+CkJcTiW3am7sBz^1$n3NU5Y!XZP*@TUyX)lsQ>ejM51 zT?W#{|Gt-LK>M_?h+*?h;ux)d!x?GbyY!oV`^Z_B!8jpXg1SOlqGQ z$LmM_gUi8!4N-iPv$yYidM0$43C(ebI0twqW4RE{vdTxsEXTB2zJE`Npb|a-q-ViN zMU$3Qt^Zt#8*-bAwvbyw%O9xqvFext3u!RSvniUH+CQMC) z$46pF$L5ESx1^e`0bT_OT3R{uC!vPY*3B9f(zW0$z?pV!X z(E(p4m1mdlT9RE;nu1%fT3dc-OeEC@{gmxMZ-Eqr#WjlVu(|w~7<=H#P@~~iJk}lE z3w;(+N%ZmUQpu)~)uNq|8W086`zg4Xa6~46y>TAqJ=imQb3-cHd4{)EiSw1KCyGaa$83PAFI)k-m9F5KI#l_h zz%S^4kA3tbVaEeRc$^qoj!(#>!33+$<7Bb$_5r0|&|(y&#ThQsa5Wf&r*3*1q|x<{ z`3fDfjdw_HxO&;No@7O)G)T|T$@CsSju!g5v7*z*^k91O^o`qA=`f`}Zk=mdxv#y6 zfA>^zfY0Cd$+PcQsKgqHq2PjUa;kh(;#6l_@8(}IWJLAFi%y)<{mk32{_4`q_MMH6 z853rb4#TdU)Rhmz-!cE4Ms8k6+EE3rw!j;u8;OI99vxEz+ddt>6>)I8xc~KQj38u` zpy{SVTkld!4Q(`^Uz{s8U;JQTM%$V{=Gt}K%|DG=Kfn;^B<3vxgbG+@aW*cw1AU-r z)DI=-x$+G#ebtt%Lyz*3ecRwjTxkQwe8x!WZ>pj|9R*bJgS|`FEi#?91lLOQF|OOzLt-pw7}39bA|!$%lq9&KI(iYgIuf-5IUu1$GN8uK z6TPqTA;;-2oyAG1B-vjR?=la(0srANuMRFf@L_C1PRg^PIS(2ob%10FM5*=(=8ov` z=WzyMi)2zofy6^iME5|*pe>s+iuQPDB2eV7n)ySab6?6164oFmMv}Em+9QcMZxZ#I zaROSeQs%^B2)Vb{hX|4PY=2=lbw>>9Jh~B*N=}LS_hC;k-7RKLlnDk*&N*9XfjNU? zmfQNgFcGIl+qubt9-hN{kp@v{@w#zS6HmHS2GKAP{jU8Vowx`ufun{#)_fZ^3aC9X zR}ARb?MShd^#{czCCCRXi@cqda_&1d@17eG85tU&x!dgy!fZ0}EQ-~XYJG1%H_8wa zGv6b;$--5*XMEpd@!=Om0X-Ju+qUH)Hm;Sl3r9XwsNJcwS9 z(4jETxFt>q^e%iD?@Jz-I@s3h^Ji%>?lnOY)Ljm`GVo8PWbZKJNsaFw^^abEVH5cyYBcj*hh0zHbzFbrriz=k;o;Rf3nwzlq%!?U)7vhodP8n)hXzB? zhL@eGKX8=FXP_7E9v$Ftje(6k8ky3Vk&8IfU@9Zv_oy`tPG#KU;rG}J+@=GbVs87x z@`?L`iq<$hT=o>N+XNT$tyuVgW?Cu|=lUp9oVkV{tGdwam}-$fdylYpgu_EivCe(j z!DZX>6@`|fNJd6YR{xKA%Ln^m=mX;XYK7%~-5U|nYf4zmKcU%R%jfU^-2&PuU zws(*QR4_{9K*q(BlKMPBUEZqgMAMt~R;3YgevkI;3#2*K0^^R8rxbSn%tgw2}tGdEvZ1V14 z`D)z4Jq}bd`fiS>&>}5!CO>~=>zVZR+sfhRCa`RjNEiseNo(XS zk&b(Ch^VltClAep8(S{BfW{g}7`H;FS2TDOfQ?@MuR*_g>Jp3}Lr9wB>`d{ksU)9*`Fp z9iVa^kXu}``?aPiko;M*Hf`w#n)jy$tZ)x?#`blR*v?=XU7FiMAL{l2@<78AFA!)xL)4@~cobzqMV07W)Qs%|m2%@$jzE6yI^5)Xm zRJ~2}BlN&_i~Dx>!rWrJ>4?w<#p4r65!*UrlSPqtb@F_g*4Y0J@8mDz8Rb%C;l-<# zp(H-i7CfL+9VT$82p=%|E8Fjs9qsa=FaJ|v{Ih?rW4}1Orjof%?1gE-)^mn^>X++m zi$>9)<#C!LA?Fyy;(E-1y@Em+N*AS$LXTl5@MjZC>x(Ae{jX<#SA@1Nq|Fze4?#uTXVdD`6Kw00dRztZ|e&(eg~n=oBP-BmaA0r71U0rTTF0 zQ&A3pQyS?wij+fsu%!r2Z#XVZWASvF$!2W%N(m&sG7vbCmFVVt9-AlSTlo%;eDvVm zN4=D7wa4w>l5vJ7J-3oAB=nCO34e0L74*Zf-FVEW&Ed|F3#*TweM8B*UaQ?^jgd|y zgja0eX`ofXja`GfXKptIXYxl6x|)L>TeKn-(9jQN;F!D0gt!%!IK4(9M5Z6?XYdGh zt~fAUJz_*kQPh>E-cf7v|ob+#iz!^l)l`$l6E{a#vMlL zwR}2C?)nSw0-A59=&dC(p#}v6C9H=loU@oga;RDzUTW5!F){KHPNc3F{9~oij#`@7 zx&L92FVDsb2Kgvg1k&ZwN=5lwjB8rTcEXsCa-^DyXG;*JinwBYzZ(1#aEmgyUH@|y z4vR*W)>jJFuvC4xekHIj1+rm(YMYp0`bARQ`CIBgnyfaH*BR<{kaZmCkKM1_DeYSz ziT%5eZn3l4-@^+T;kc@oXEZ9;Sw!7gP#nV>G81b__U}|bz2z|UoA%C8hIVD3W%loM z13+P|f1(5xV-7O2k1dnQrkYfTW28C#@m9fI^c^LM4*YgiWVs!;i1S=u{DTDe55!KyT3E-dx?A--?* zJr#0ZM14efgbfw^6w38Y;_Aruf7*=_S|rtP+mlB5j{!k#G^0HM1ha11-Fs%(X4XbZ z9Vz;IYSjk*EU+oAYL+NRg&QZrjep-e5ySIxd@s(5W||c=^FG`aY;aB-KrNhmA#2HX z2L9m{et_SEYbD31uRk4AJv(&w*dcbEWha}wxCG})*j3C(c5P~}_=I+v7sw$}fcqzt zbEpo(gdd3VILHxQr0J$OL>3z!Pla#7IS5g6B+i_*+m8Vyy%PWKYd~;4b~*t_OtUp^ zo|vGz)u&z3Qz}IC8>c`k=fSYOx@%GuhOZPYVGF>)aX^J-V?e*48LlXHJ8bnmrrv)z z0H+RDuL+BlH(wLwcmG56Uwzu^bYn$k$fmYoO2RfauS6YQ6_2_6=XQP|B`bZf+kekQ zWKLw7V$W+_my@nrat8jmz3$LD^L5}GjP+Xs%PS5RxPK7i;;XFttLN+aII~PP^h|`h zi2&iQ6+oODIQWRDQ7LLb0z{GjQat`S4JLV%Z1ab=st~i9#9gu`hX$F^UiWL*e}HvU z9EV-z+*unr(6;Wu@N?yDEVzJhP$6>33pYj*XQDx7pWGVNLYEd9-DfE{(7Ym$Bd{pE@L%J*` z(pn{eOzVUYH1j1AK<7i>E^+6qjJ$iL30sb*fNi!0tW}PblT#zh@wYc)4Q zF*0OX0oSE%_NOb0Yo&ZQ=j~4JcGRhGt@0Bky%pz690cd8#=n3V8W8Eu+Y3bW?|!b* z1LsX)?W4TnNAw39j&$hGcW-Ad1g4E-= zq4uO+{oFk#UjYZzO)NS{F}IFC809B4yoVC3Skod{@&<#K;CQ$SbBnFKANdQKCVe0EMA%MCo85%l>S=a2A4AL zobW?c_~EeUP#)O6d${Hup+y-(XzV4S`3mSvw$mCP*cmel|E7}>3j%YuQ!6HM_fcaz z@Ag%tm`rCWT?YZ;q0G(8dTg^(zA8Fwq0G3=<5udYQO#sl+COJsR~VBM8OOcx!MK!% zq`M76A>YU}O+lg=I z)$}WiwANBjN4}%bOJgN1!8yB?YqvgJQ21Hz%H2U62O;t<1 z-<}L}!M-IGaq@UkuZiT)!Ge-8fh)5zaD|3gw3GaCv2Naf@#?`|_2X?Fnt4)vn_-P1 z+Ef-QE#M9$9vL#re)TC`*h5Pp9qC%NBIk|83XRIw`9lM0wWJ`SO#X=yMD#+b@}j ztkJBjRvuITAGpk;rOe{}9kvvDekj3173P?Pi-h*4n0rjqFkYk8!~>tu9TqsILX6aB z^kfkBR-vRN1_F0)+wAvA-6x=G`(MS1-xPiGDywbjXy4&FY@f$ZeJ%i8qOA&XbEg6Z zzx1;OWuM(qBKsH?oodAVrU96N-CSGeAc-AdZ+nHk6p)!^rk>IEf{UbP+!}Co5>$%t zk(CqSICEAz8)RTAkkz>PbZEx(wBxw$>R}r$qW62aW>_Vk1cm5l)}u||&rXLH$2?0s z3xId5xq@EmeXZ9K6ToFM_GeW5poB{DGkpT@K2aw;eF#-0+xs!if*dA=?dwMXp8=f^ ziyDy{l9}n(TYBAt4U_VVuEP>N(r`Wt6!v6ndh0Hd{iM|8R|>1Qk|N37ZVB57dhXw+DG3d-ayifzF*+LOO4 z_4BEof?SfUt*1-=a+B>mqNNR2tYs*E^{^L(Mi+@{2?RTDj_$^Lw7AJEH%lr<1Sozt za~l&(P$KR5I=`FrncC7?W$RK+MIG=s(T>#Qdy zoo$hQb!{lxVo@c2>Q>5?V?DdKjthZ3>q&M;$kTX(r^wr#X2n@COO#DR3VpIV$*1|V z_3B1aP3fwWJCWGuxInRC)^Dpt{y9juc&a>lu5re=d#7WnnX<7975CKyUiAQ76~)nQ zjf6W7E-!X_d-F}M1hqrVtwG(z-e(YxY&Sk2o?B89q*NX1Z(ieF?De+oS!3lV- z_Ln+_UyUjzTX5j=JIJTaahkFP6?$4K!3K&UQ(=vvYDjKTgD-G%Si#q zM0j>=wU?lW(CN2QXvy^B793XE%n}n-$VhXO*0L@cFz(4j)ph!#zAB`;?taqTl$Szv z#kL8aN;m+A)IuP~Fee1)F6yqE&0Umh5yTP0OS(EJg2&o8mY$iy9%ov+!eRzE8m)<$ zvw;GH{=a^)S-H^=_)r}cNOs!pid{xUkrdPh5DgiT-4E5#3W?!1Y+DU3$xd)g{zd!V z`hc(4ZDw{zgpd_@4&ds3CEG_jWa)Hj5bjh3pFRbi$$ME7Fx7zuG;#hIhC!Wr=KS>Ke=nf@Fa+w?ms8E?t@H*fA3lqni^ z@Xk)Bbl+L0js1X$%)Oq%t`}Opbrk-h0Zue|z_}Sya z8K=%t36^0RfN!4UYbqklzU}}eIlt=IX}z(yO7Ft6cP;Atqv2tBr1#Ecb?u*~o2?C= zdO%ql;_&JmAgqhftGSV~*Iu*1zcuRaoDzY1SRdT-eL=}OwM4?wJ^fEOQS+Dfx;S3= zxZHWtz9h!pYm6LS&7#~Jw*ZZ=mYY47U+#Fp5m0ke@>{H|cDDtVgZHE9Ye9|p-B`G$ z2Wtc_Q)!hS;fq=Ld7@AOR$|5R8#h=%SWNK*D)^_86;accqO6##Ney3916V*i%qHz1 ztR=|8(FVf?VA=YexqIi{L=~x}bujXTWDj9%_bxez&;uH!n0zbR58ZbJE~b`ExfGQ; z1gt=JqHjr>^JFjRRqlM4-*a(Yo(kY~5Z~nLcZUmb#A0w!y#ALMMy#ib^8emhD~nn< zj?HHSR0%l9rAPh52^g~br`wS-2Io2ilu*^yX+dY)2XvP6RX1hZMEx<#T4`sg1=Ygw z9-C6+`dpY$pWAj(-pQMS`SW+RImI7Ee#Nkokbk`)5~-9&gzPf(_zu;)Zz0%liGP|A z-=f$o4qOb00;i3t*~;BP{mhY~s`Bj)QDLkI?G1kA!5&Np+ur^avhrV1UUr|8mHIl}j5 z;_5e-#gDztonmg5l*bcFnSbH6Q)*1;KN@6G{hJZzTkQOO4gk>h~|+`btIBb+KF{dMZNa@f`}#NLG07ZgCU=dMsa{ICdAUgrR@p|MNmx{}& z=~!Mp@`g(}I<@qplL%2w`C?ICetTDg6NWMfy^CqY8<&@5EpHv=buG8Z;Gxf#J708E z@!IX1K#ujlIsu!H`2O*ZruI1QWT(k|*O?q$)hiEV)q$pXH6`n}f1U=M>NO{HnuMMm zE{QsRMY>%_|GtP*6MegaLS(xJ9Vo0e^P@FUs;12zUjiQqiJ2Vi(nNjssBgm?yYrVOi{UzOQjq3k zfe)AKGaFi>^pLkCJ)zf@5GobgQs#~l(HN(PQ>MIE^twB=_Vf#?;UeiM%1SbDL)0#z zy4S|mRX(6|;CothySQ#A63b|Pt&?pWqpo2m&MBn0LA5xiX-lh9wjrqN>B9X@IB!gt z-XWGs<4a}gm@utFEU)vrjW1<>Ta!oxFoB=VS!PD|TK1IX246V04PU_IRz@%`h!XhU zX-f(WuK=|iW*N%6O3xn#%&osBKEZ0bE-G?_-EC2n6?SiL1y7^lb>r8T)(qb6wV~dU zcsb}9DTIM%;9H88(1oWrL_jCP2;y`m|BuQy@|=MPQ`;Hw0yXL2+D$4HdUxRpz{ZvnToO#5TB!@~p&rZ2&v9pWkU#T0-Cnjt&L#LY40?LHFHVf~2LjnLU z_2AJ?PXTb2xB5*mrLn^Y06ca759N@Ftc!J{_+OntoO@;X+rJZiQ>UR9lr2-gb)|RK zQl&THwx^1Pe;2vahEh6*?p39@9LydJ@S<5^Nel*Tp+y>S0vJ&CROtfwU=Pw*r#d9& z9q2%Ier={0;k|C7<8`01b_5qc$!In^i77-onNG7x4ffeXU(kMbZ<5(kM)H-jUNye` z>8jN|xhupnt`4yOi@fCB#;TA&XVDY|2R;wwg#Muh=R_Q;-ax1Jd+}Aps!ii+8t|i7 znJnEu%(iigEbp2S-NxrZ*7Q{agpT(qJtMkIfHNm7ZMC@q1!X_S5l z*1S8A64$q&ry_Fae$OVTguAP6jKtdW@qiT;ZfBiSO$+>Q<@Ol=O@BAM4mN;s@z3Ah zYbBiCT$6H?P6L!Vh=(>saUdUj#+X$kYcwZzxytwNI4kRx6)M2bH15t5f;UbJHRES` zHF973Ok-MXKFLb@)dn!swnU4(SxNL89a!Wkn|x(d|G&3e$njXprEC~KAWsni4qlM^ z_<5I1T{)*W&A2a|d9?WfE3;FZH=td8vdEH^Bz!#wDAZs5AH_q!$~@Y}+aF$XIaz_N zuKdxI01$NnM|`UT2Pl|@;i(*F>Jt3_zDeC-Ga(pn{3R6EQcf_&3IG0A<9=kOG?lEg zPCR|BD{ViysFXTJuV$=cL7G0nZE;-7Sfa3LG@Ig=QlV#m*#RQUwoy^r5rODr|6Y+v z9pfJN=7`ZG`X$Z|=&otX<~m*Jsq74L$Y+^%ItRQkS(!I_XJ^KQ07Pqqr3tX@A~5$d zcY&jEev>2WyoRY8SW?_bTZmYtXgK_~&bUY0H2V}XZVazGIxHa>Qc!?AY~MaBO4OXz zzYj5r{wtC?3867z%-PYGt8ql`9D||hZWe+UgWs+sd-j$TgkDS+dBZsRpWY;=;bl!8piq0yRsoPw zPB^gJspF}&z2 zK@VYPcOwZ>DxwwUTIK8HU5!}WX^jQsuxPYD5i9f!FA9HFVK6w}zGmm$i45;8?4Y15iA!44I0= zac+h!(2FTIUN5tw)^r!6*V~@LBPMzkE#%0Ip_GI<+0E>$C#H(oD`rXTO}{2KAn?}disA8SukdsB2L=B91rYWM)WOvU8XtXRdPoq1 zZNNV1I)R_aUf1G!{%cLEC5o9b0EmfafhX%_Cp)s6W%nW{T>mO(y*bq1l~UPXK7d4#3m6(^mzT7Q0sK*7fb0*b zmgrtIB^k8>eV2@c)nf|@o-OwV^YDN=xGgU=1KP#T$n$Ud0VQoG|D*1QF7dI6Xzv0} z0f>8lHOZloI?Au1+XyGaJDJ#-n_{>8abUa1U zmq~CB(lLm+*52PGqAmz6c7P2F95p!K~!H{Tb|C$K*YSEHKuNAo_QMJ`Y)E z=}|csYf@&`_r8VD819r4fbn^2HZ*@D*~7GJ-@V=ng7zs0;1@j8fMhY5zRCh7XdLU1 z@yvcQU9ofw_$?uCqs1SRV3xM#9Gz(MwKE~8&W8_N`QrDpe}G7T+W2RkN-A((k!chl z)xQnw$qIxKr@%Il2WFL5sCv+>jY{W~I)S%O1Yr1z$sfrsn^f12A3UXOmVNVH=-fyz z9x;^vTmq2QlXi1xBq|;l5_tn&IknaG4+=OUpjJamoe`kl2Cpk@_01Bd$Nz>@4SI9U zH|mWmWC~=f2N311&0rJ7MtkdAKJ7YI8%)T8MHSXk9nqUuuMKBIu$jlZ1=UVieHEuU z2Y}O0YH4d)Q49ew2RHN41LTt*;Dn_(w|=d(~_o84hq4R^&JY7;KKN=Cwt?TC|PO` z_jp_Wik-k@Ejrp&piCzD++>h-_V}8Ef7iW|vz7yzzv4x9l&31j(POxr11LjHQhytG z?UsMsa^i2$ExfH(2WG);JpqO;Xg)8R7aUWnFz#-yOW?2kde-}JXnuLf{ZER!zSr4T zf5dLc@cajtis*p~qV&|4zbb088>okEp6d-Y@Ss z-~+fpNQ^sh&XFqQoJ$4jn%Om?Zx=&cAKN3FQ!#9IbsL0r6Y@)&BW6NB1Hd%^bVHUS zhS)Df9gt+}7BS26Ks@Z`ngCujm+eTZWymbq(eP(XYZw8Y|yb%fV*2iu$QAM;p<_5ljiwBm}omHH&o+Bq-E&m z`=^V~LDWZuu`LnCb(YyX=3sAG3crBg*S6)cNQrwXCa5W7@o(PWld+q2W|drfc=^&;(m8?u zzN)O?Y*5{`G7Mk4)qFK{?^vr{9Ngc?eE=}LjE@Tj?UAZ-hBB!!ZkCg#YQmr++#Q}C zIq2b(q`{Jt>4Nmp+Qb4SlE4{t9jeil$m5Zy2%dm2t-gT*NH>}O$lQKu8cE$`GIjTH z>bmUjLh{HjBc#B1HCAkW^LG=7^@zp@%D~~ zP_!}%==epL&c-{QwhTKT+*>L3tvQJ`5WZjmAjKKT7nwl#X8H$=-1O9HbXmyt1tp*y zqg)@eYx8%qTrI*Fk6(OpNxZ@9B@Y<>yBmLfaJ%{X!u<&Cy-0_6dYQV;*V!^!pIT-< zjP-}Ae`xwSnBpUlfBm0S(E<*Qppcn+X|f$uQdyn|5MB?4)|!I?jmX@BUW6y!8;fc? z08Pt7)qUTXg*3;Osi%3!zkqj{92Yl!_V%N~M{Od5hSaXXU_5}U1AW1_2`tPfZ@@s* zhQSIW#I#K_BN_==V>4}Q(-hu$Eb|*zVc8hq~P@7^diXS=L%pss`JrUFS3dCl2U(;*M(;D3}mQ5fN zpaRb!#^ed8nw$r4ab@G+-@4`1I-jB6Yvhh*NxPp}B>erf`h>S1AQq2E;%#-jLaW!$ z`}7&Z0?D}I@(ve8a2r^!OkWLta0@#tC@-QV@&9Ge#Jfpa`RhJS^LlkOD=z`|IZ6Zu z)UN){YzRHLwi2~C-*S1g=;(27zL&T4N$_}gs_yujk|vf=F_J!kAD9XJXd&qR!Rib3 z$E?8lnjgx2Y*-(~cJD#h2S|t5!vtj?r@eR-_8Bj>kX;;0@$HCv?e4Lelb6}nzQ>Hm z%NwiPjR8E+xE3bWW%i(#ZX$WO+e8tz5B=4j2a+o$L3f`1SQF3RDlM-#|FQY^>6ReDbGWLm#~;WRAJ?=g zDgqLJc~&S#Tl~aW9yWoWe(-tn>%^)u)N9b`~z zFK;%~KD!-^>+>o(sH~Txkxc)?;VORm_WIGS|4($XzT=o!dz`)P5?fdaIvcxcmJ6{r z?ujw~L_+&bD!)pm>5E_<2XiAkf6ZuWzEJ^QyVuVvI*h(plO~;CXOCThD@WPtl>T#~m1Ud37KI4=sAVcqx^86) zydb8g|Fpg_kL;L5&|Rb7u;M1c$hRgs4bOlx@oX_J{B3)T6P_yTeuCw4cE%6Uhc~#& zzPNer0Y2d>X8f9Ow4SRrt@BW_UouHe(#-I4!FfC!}mY_vQ~Z_s%~oXcKvd)lS_>Q+4Hvd=v=Pn zT?xFMLp>$N>CrbEK^z|jUFz)KKRWTZGm$mzf_1%(W}OtDZIpu_oW#&>Fk;z2YhM0d zdHs|m`R=3Ohb9ztH>saEk*q_~-65^-u`2(i{HR+Z^5I>30c}+2$E|!?HvLlC7nyNQ z66bSm2Ar)2mF~q=dK-EAi~=vxi&hgNKgQDdMV|;!GEBPgSMVhPEu?(`hxp<4I%hnt zvJHt2NqTUi-EGs;gV-d>+c6n?TMD-Wa-y(wUwPJmOA5J8t zH2bhilKsiQKb*D5!pKhykG(x_tG|X63O(nMN6OJUDI_D4`lJ6nI1p4lnfA}6wNJYH zrRj^87d*}Sf#J{l0TLJu_Ub@M^qsRecHS!aVjG};dDfw*&kHxbG zT*;8ZP`sBYRw&N}Z|f+wkZjS+S~NZEQP@1Ep7V{L zWyHj@;M;t$^JMcC@7XS6V6 zO!x#HK5zXt;Ydp9%0VNJ}O zk3BxF+0p@_ZL-W}bgyN;;*}Lye$P{9b3+b6WSV=+*b|L&;WBJnloW*?(_Pz94{aW# ziUeC<_S@vKK?|=tdYcFP2%h98tL;tu6?so>+pZ@=xs^F6>ZGUmHj^ewsy<{7Kebu$v_cbw=^x<1 zOsFZ0sG-pfvnVx4{gji{JFnFiH2uvtxx^Ap(G$eSy$3ny!$uGUOCFDvJup@TscqG_ zEvl{>?n^cGQ`8k(@K;(6~!zmygp;P(!cCl@L)8sdvr*!vW}V z@kE$Y@Mz}!D)pF)ntI(yZ^J{WW)la7;1h>`SJOh<`a682Dn`_2Z!5qNn65;-ikDho+owplxv(O!E*ZfN=@3YVcR z?js|^$aXdJqaAhy-SMV>5!Ld-?_mFZtHa>b^-^gfwxn`&wS$~!zWe9}7#}oDflp9! zE#jHo4N^Ux$SM8Ukhsw17ygR9MG$srw;VUgjz!b{gGYdRm=zs3VU05WHG;9dMwW(z6as$1^kX9)F^!*#fC3)#D|#4ePW-@Znw+A+4hSy>$k`}?SnUqYZ@D@b4T z?9&o~N(TC;0!)4upPHlC9FJUc%r}owMfxGlZT^EL-W(=_9JdS=-}eI?H4A^J_4oUU zC5Y#HEnM|PUTTz17c#e$zCVbuEYz4QYlSCP*6U|c<(lC{&J`0N0C)trLEsYrIjV&x`gL$>=^$TYZg4LHgLmH$$ zu>@&^bHIyp@+xXr9;@}f7n_;D^s~uZSi37TtP~oe_vAYhE(NoFnO1^L5|qK^zE{ze zn@H>uVnLVno+WdCs-a7dw7O9(W$GAG+{%2A)7YF0>9RYdtB3Iu5;B-( zI7A3+cWP+_1?hrI-PcLPuwqXh5(K+Q3;25+KCH3-vy4;k=(!ZL+qbwo){-y$a%Ta1 z+%iz9F5Sf)p3i21wrQDf<~2+D5iGaW2tqK)_vFU}=OHeM{7CI>aVo?0AckY&2+rNl*u;BgMpNIHpH zglRIlnw`$=VU9D%KJA;X-`>12vp>S^`-U=?LfJBbGa$N$A|$03$8AHP?4qykn6!Q` zI1NB99<$Ag-YfP@1UqWjP01;yK)(Gj*S&BrHXR$@Vcxk9o^RlI=w&eNgK9|S15!F8>+I^I?1lj2+ z9(yXaIl)@7XrBVVVT>3?V9M^UQ0;e*Mo~p^`M&>w%h4TS4d*L)$~3{_lF!+3%ZUY27cg+`vCfBQ`s7byL(_%zZcPlz3)));p}o-~1^ zzA)_@okbJIomL%Jk)3;jmscP=J@?f}26vlpjD+?OBMmFIVGCzx=9q{f4fJvqeT# zId0$ubMGIWV7j9ndncFzbG=+{XR!?_Gq^JeC{>w^Kb zGYxx$AS2Sr*N1`0z_hp)DF1c!pG*f!UXs(TFVXq8fzPY=77XHV`2#F2DE|{ytcl{iMu!4F8D9f38KozBMHw<7)Z4O?yRfKojt=o`*)jVEiPSzPNV?JZ^;U$4> zkJrMiG-%q(d0WAByZW;EIRuL7vSuYyly8x&iT99|ZmpykgrdhkS#qu1Q&AOU<9@#G z4H!P*4y4TErf!g{4dS`BUrM1Lifz{R5}-|$*jamRrTF;sGl1U|^Lb{IA7@dL031Yb z1lJMEF5!%Z?v5c*UB|-1xO3WJ&JvTDn~a9-hAuU%9%N6CI_6d-+kFi)HF5*||4MUF zIJ5(b93T+*A=5#zm6gESP16v}kbqHB$0Sy~g{{T+IH!?58{vw)WS`ix4U;$V+Q;v2 ze;Ex%a`=?5nrymkp;Q_oixdZA(moO+PwYNqQ6tg~M=pG?RV-Ye7+=m7BjM7@FUw@A zMB%)!y2!JF-KT*LX3ldTT6_c}o3zJKT|qqgEzY35eIIq{yo zg?HWnj{K8f*^hri8N~yjtuKefSr?PdXA%)uk8YQrZEmzVL?lSF_0;&#NK zxVjGq5fY58u6p`XK`RLEs&~eMD56ry&4=`A%#-=$(x@|xD+rYNt?Qm>J?TJZp)@#2 zwBNvduf9QeRI!+{6Fbo9N|F%HQB*{xmWEvN)|K>!hGMTQ&CdZllJFgaBbv+Q>61Pc zfpAA8=lL~u>&uWdSgy9HBe%&;NG#>{iD5VBFV6sTRratprIn*ycf-9u_;qP#3G9W> z{^g%$p0+rtG+~zTLI4tqpfT{M#95$%TcbFz3kz2z607rY=kPUo;osypB-HN|7C-(y zt)HOmu#lvT%5RF?o$O)>x3(vn9NgTsrMdsq;TGg6D+-Ib`X259BoW6dux5?{5-y#x z-0t6rSLiaLd>);W_kL3^gns+~eu@SO2&R8`LEFpjo;bOY=M3l;y>)osB%5H;GFrD? z>FXIPKjY2!RzLgU;EVOmL+NGpx|Ttqr`X&<6|{@zFy{D1W6!w5_GI?a}`Zd+_5(3C@3aPHqiz2FSg!HE0bB1R$7k%zO zVL2x=Ij*KkxMh1FE+Q#-LL@(Bgc`raTYbK;->E)GdZwM?2$<0lh2?|}G!?jE16ong z673$q>M5e+02V`8fqo?g2^1+0iOqEh1bCQRZ!FvZV)p**cT(Q@(jjJ!IW%mIs7 zf1L00zBH-+!x|PXYKfus=uk{G7T4fvaM$bqejAhEXs#BsZd@V7@j-vhWe!Csiicj| zcp|ri4|smBlr8+u!K`*42Y0SQP`{zyj8&(NiKe#hH74&cItI5D19-)U4pmt0xReG%R?!T!l&(AH)PoN z{(TN(DI=GT$_J}u$vu@1-{q4p_ItmH&#=dBCIV`$}By^r(j3y==J669Wfv`AsHF;A>Q#t zFGaUf$z=#gd$vRCy-EXqIx$lA1}I->RZUY4jKTy*B=W2JH^dr!HbXP@QqxuENaNB) zXDqoS;#i(jm@L@d!97upLfYL-UcsinsgRoGhPqidr)&eo0AX+GROD&D5LRLnHfQG}3P zs{t*=xmaoZ)Bz+7^E3)YH4HksGN~eqJWUGSI4i`2waMTR-2&Zy^}}?^ym_(UwcMy} zFUvj5nhqF3Wc^$h{pbj?@2mFWC#o=rS&(C+F>&Er_DFb!rO2bd$}mdgW8=&6`h+5_ zMaC(nqY7}M8~Fi&u_Mhi?aEdUp|9Yc7t_iYlk_nxq7J3j%(5fpP{tJv8+(jwNEqHwSjD-LRUT4k`}wjYQ{q3U4XmO{cMa4i!l0BBa4}s2Baco)1t9& z4n9Di;;S2fALQhip9`>Sx^Gf*6MWFYCm|QKnjTEu7_N=ALeYTt#y=vvLtTE}TEvmf zsvf>WlcTiWUW({p zUBnpiiRQR(RbPVjVT)i8)kP-10rju|ZjKMBb7d<;U=Gr+Clo=nczIGRdmtpQ6*)<; z^+FQz+aHR3m~-CsudJGML3^FUL&B;$7i;ZmgZDO3X@}-3{7!tG1UgZ6YV9Ho3$I7( zXRsMSx#6Uwft4ftkaz07N@AwlS-Mm~wO;3gf<8jfQAHi2TUj1ndq{)ST2=Aok3x3$ zw)npVUztmZDd-;RIh^-@Gp1^v)M$4g4LeO&ox?#?tGD0q*DIS9^O$ z*+DbDtAfR=LK8LVm?Bw|RMH*BMnjshYwne0U@e>fHjyfvR{)8Dlso`0vEr>IWUFiZ z+|bB^o4=R9xsxPgcf@1+phq#1y0Xe_I2K82HSbftnL}O{S;kpAb7G|giD7|S^e}cm zlO^&EO##jh`qYpqF--thG@}G5{zkTtjz$qSxhR(_EeG~6cFxW-9~RzHoZ&hbEVDohro0em>>t9{xSKWK*m zOo2JVR3jP%PYWWa_~2=eU@*i#(z5hz5lX=sLGG~-2$Z_6q1jp7gS;E*iC?M@WQph3 z%<|2V_~gW+cpFsETb06ylq3L9x_&RzQBeH=yRh$R`-3-!%c5X~lGS~ll}N7CNp6Za zNQ{@dtp14yNvbH<9*d5&7N@(LSaVa zp0DO4ihaIwXUwHrV$xgVn!ZWe-;T`#zUpj+PI_yIMOZj>Yiau4v?Co; z!-~l_i|qMRx26}2nB_yTyO z?NK%4z^GLw=WDZxIVSoj7hKUi)Ps=S3*ML;Bu4KGyR;7b9M!n0QFdf=UGLD`&qPHPtL0IzZrArazpT4Mgs z^LBHzGX4eWyL`GtnmV-_f-jsF!8YT#_hbNw)+O+Zt;1Zn^D^P~AddHG4PA9beAciq zo8)t{h{fjvIMle;NRD;JRk8HR=r^Tf>=*ozhi<4!v8o~s^JD>3^Y7&O9AlC-gH0Mn zRJb2+$*FDY-h}h_{U60BF|li1zh0NL4|rx!#}5oYVJT^%emznk+OT;SHS~}Y9SaXc z@rbS;ry@EIa&7)`=_R&K5B1YWrOf9>RjsDvMupeo^81R?*0@PHc_B2_lEurLl(muW z;kR0$IqTa!1d2!kte;2lumDJN7qRU9eS2tWz$Fpk4?$V$!G_4Am(Wm_o2_{2+qa37 zN*hzgd>(;Ysu)3K%~FDOa|I-NXt{WE*vo8nQi6ZgcAaH`l2GgIRd@zUw6BEfU1uU5 zF<;9VfgJ|GJx*h_j1k#QzH|x)qog(q`X>%ex?g}?9P!>We{ziId?oGB7JNxmbbPJB zOF-SeZ&H&jpPK@{W#=A9xG*)3GzDD!&Y08V^IWby6)gS5ak=AnE=Nk#PCcv|r!3Nh zE+J5qW%~XZ?3f$VPiKR1IC(V^7*1t&6keYXUc%;0@WLNOXy<*J5_(SZhrWrI7ta2M*;MjVCfT z@J!A6J|$@Mz7)cAYdcrF^Ycg}r5*P@a|zD5S8eg=Id{Pv3Ul0CP|jcaapuR!4)G4| z-^Kbk!}s5Rb5T>8ct$B2(9ho`n#|}uq|aBHG)q0CQ2#I0BX{W zFPu6*^EVY>pgF>J!&a#as_1}(=0j44SK#SNalTy5tfz$iOPwISUj0+pMZsBh&Atil zTv^+LrSQlMUZYPfKn)2helM1N;$?eGk&k4)Vb4j1?0&!sx#59&T+14g-_7KXBu>U! zZHsYqSo8dEZ~c5uwon@aI-PT`0tLq3H zi1u7J%=GQ1y4di!Vx}`&<8k;FlGjOIGY*@Ig;kxna8yz=Q>v8CawJatRG8}D%$6JX zE5>GGevgCsPCHM*HMI2nz`q|5Psf21uY-U;bZfdjYt5}Lkx0jWO+s?ML^wXtmgBx> zUS9)5BaE$ibqY=nA_|!+bOuL=HEn#-%3IL`r}G13{Jx_a*gr{ z)$H&g!Rwl(s5I(!6DYvr#3pTDhk)PgO?WKATvEOSdrx%PvWXa|V&su@O{*R&QIlkP zg@Td6hn^Osdqfhn9^{E@6KE=V-0_T1viP%6$FgfJgI?~zJ^V3DXiUu6)4jP-$QN3| zLVeY|yLj-W$>fL=S1CT@&KhKb+-Q7LjT!+8`7r(wT5u$o|^+05>vN z@tMDpekeU2Ozg#L3~@Q)gmwwyHOE}ugayj@YH+@~XzJ#coxrP#)U4;O9F#ZUlMV$0 z3Hx0y{=I~Lf;nY>&T{#ldkxQ56=n}_CO@(MUkdn;U(Ml`7!?R`xO62ML&0;*@5 zbRTEfV-urwtcIHeX7~q6G|u&3Ui-ym!dXoaS>CP1H7oPt&M}_IwyX4LYzyMXJkF|a zp`UB0+DiZya(HYC0?oGMb180Um+CXob*V4^J}HJWy38a^Xj!DwTrxdJN`Uk*7W+ii zQH4vl)_O`w6=i?Skdj4>5zbXlLUcqnoh5P7B)hS5R`66sC?a+fExUzSNCmQgx=lE}h}SOVw@IOo^)1GPG_94Q#XLs;K{U(w>qh48 zXO9g!dCc>W)wko0osE@tw;U3P0cIqAn4p9hoXdoS+XnAXzmkE*&&@{Sp}%|tEe+^R zyQ$Ioar#RR5uL5}(*NPn^$BS^cVI)s0f`+@>mqObh!OTdj?0bM&MaP1mkAJw?2Vbm z=LHD0B*vu!z-_mL+Rd88ZqgMh6@Kt8>VhtH7FC`e;4%@6bI<2o0w@0H2K33YP_2pW z;X`&M+5-0Q!IC(CEyTcY+}&y8T=_{JS#wgbwb}uG zFUQ^Wi7v_Alu zhPpg`EUBzlb*^D-6#6eK1z=YD?Lh1=%3m)mhxV!)@WJz~^VhNaVT%vDx_r8#iC>Q7 zWHt5P=-QZez6)kY;g7C+QeA#E@h<92yNVoCrhYUjdV6Puv&E+<1q!z~Fcp;yFTTd{ z^b}rGDcpnSHd%2bb(oIyu0_yiWK^a`t>^{oyP)UBGE5g{mH1qTNOath6r2&J2tW3z z04ka)-)rI~Q^C;XwsUeK4hVcP+7nyZAcAy$r>2^Q_f<-SE%F1W z6ZQlwF4q1PU>eI^U9y4q$<&d(iUt~hX;EWs4`YH~K|UREUmj{k_Jwnxasy@A4_(Y> zQ9YG(fSV;{*}Q+6U%D#G6vntewf}q3^o1~?y9oRJo4Dqpoc1w)Mwbc)YZM@f@X!9Z zCZSE3t@)55LPk+=a6jjBPvolbWb@t7v#|PMYRweSK9Lh@P%iv5*gIb{6nSzs=OK_X z&@E0hj0t^ulFZrEHzuqVrmnTpc;NK3(myPQ9!e2{qkn?5Ik9bqTQDbfqr}MxAxZ1I z*>Cb)0n8o!y`R1*pog{fiuMLMP%X~Ny^Aq$;wE=sP#I2k%TUD#(y=BOvF&h(u(KaC zQKx&>1q{JObEVoA5{KA59i(*$CYpm`!JyvDuJdnkRtR`lmk%-W@F$mo|Ddd=+6{YA zj8ePOCODjfNI%oEf+mRnQ7E@h@cX}P4v7*37S8jUiv zs&bO7jogPiPnw{Wt}-%@z{|NLG?69#M%{w0T(su|On_+J<{gZk<~uNrQ2%1)w+Hgr zH&w7b)h5>p-bmY5z;NM^`0KvaQ@303+C~vzHIcB_AF}~5hcu&`HL=}f;n;j7xLJzf z6j_tDiV}B2K5>$2Pi>6d5hyOU(t10yyLbbQ2$DDu0-rHI^oRNyZoWSNpNLrUiR<9p zRvP}{STZ6Li&kCLy#9jRPwb3XKVss1`_bA&$y)bZS>UD`B}$KM4?1VO7k=r~iOaAc zNxw1nPJ_Cbx|D%)vch1wf+s_K2c$d9YEDq%K0t^S;#24_NFx_@gN7WS@(-xv{{12rwkpps>><{|+#I;? zf8bO2v(-%Krb4gyCcpcWWP`u=;AhY<{&Zgh!i1`B09BJCzue=`S`Z%M-{^I&GPJ52 zf}XM&kGgWyRQN@1F%a|LtLdW2+cmAzR#5@I?^alQL}Zt`erx;&@zcWgb%jI3apBNq zQI4b+sl{&W?_2E9T20kFNx_tHpn|AoL<9j1?;4|bWIhW70g5^gH1%9-0H8#65W=j( zaHU4`e?r9VnH8iJah(c4dBQ`0#VIWF%z;V$rA)xq)*1jYLNVDXfz^6{iDj{hHxT|9j&DxN@w8$= zb1f>UN7M@TBkFX}Rlh{b;fIpbKt0|v-b1SYoM05FU1JE8qYo%NEE}Ul*b;+Te&Q%< z$okQu9==7g@6xoUZ0xZmwF8O(KrO^Q&t~&}%?u}Z^IGc4X7g>Y5)j5ObRww#1ugAH z9yf+L1Om!MKz?YiJ(I#L-oW==@R?Z^V$x*oo+~;3Y8Cm|pjyG1j_Uf|7(V0ClwDTY zoZS0_dG+KW$0SvqQjkWSn^)QqvATxSPL@qm&pAOIWi69dWlI?5XTorLX&-E)cd&z! z;ZyJwhkE*DuMs2^&E~j317x7t=x91z(hR-%e!`k{KX{^pWS*pRmZj;dc##dnNVyxu z0U@Bq>Dwu(xuwV|*|Padkoj}x@0INuWK1A)v-?$WkgdtLwTn{4`pyc+xM@UZdPC6>q^39BX+}llDRF)24hR zpY^gT!D~^+aHRo~&6)g+;^5XKAl1d%vl!QqaNQa9{6-#ZkN7M)(<8CDS)F|!!dZ#1 z6y+~WHH3K%=q=X{iaRR3U{rhf4OVSZMI`1k^qKUPRtd_&f9HL6Q5>V=pyidynr1V| zUr>x4*_&@Iv1*lm_POTjA5A52eAO}dmQa`_!#NPPaU%HoubrV;a=QARwMvb?%X_U1 za5EhB%_%RGJ>kKs*&apsl=53n+3>fk)lqD7ioI-4B&LFIC)O{a%mouVO9ClL0Fzzy zf?(0_PUA1fdEPB?T(Qe*az- zKlz^4b`oqiV!j6wsPLt~dbK^a`3}~o+RIhbD}=cb*4{6xBq434I@B`AJXj81!2oUp zJOuM~Q_cx>6gcsLH2-S_%QKNHaY{UcIM>E<2p3DiqFH!*$y)FPnQ25+G%Vl@CRZE* zpq(4p6a`eafQtdtG`|I<_(sth*J?xx|Mt03-5qTQ9jGg?y}pSXV2+{ZY=|4+V7%g| zE2;N*<2h6THjvAv%1#c?G)c|0teQJLus^8KaKpat3X+OYMpQr@gg z{#7O%MB&*n%R5>f7a+aAD2kr&?X}$8OvXo;FC5~WpDjPx|BKar>t*W!$3U!$u@a)E zsGmWnh4l5r#Fw+XT@a2vHOVVp=D2?s#y9e6rQbTUyI9LatV|Da7rO3o`C&0VA9V$% z$oaiwpR&|H_p^H5YBth|TSrfe+z(RGO*D|iXwK5yGW#GT)VY4fYkNlWzv$hpN$n}hs{XLFUs7atQ5O{7$VN8n>uihvlV&9dws}B*Sbrhk!KyxN#_|0 ze&iWFdkZa*g53Gz&fsd~>6ywaylg|bzQGKl%;oO1h~`jwN>FVT?L<_5s>`Vrp>=9Q zoLk#?4ZtMpK&Lj0_kdOt&~ERVHYIHkvYyRX+BQpd2`%0g=dM-9-sOUQ#LAa>k$zK_ zzML~c@UvdlUaz3RbJzK~Nk~r2`jKevmd`K}G+Cw_4w^(gmW1qz-#ST#RXK?IJAJ=o zA4M8Z4&Y|4$ReX8k`m}!c|!XH)MvjHIgl{kYi6#yMPKT4e4nyVN%~Bf?K)AXSgUu z`tPnT1t6ocybz~e7dVQU5CF`R2d!dJt{7<-fCenq(=foeiK$ ze<1c1<5=IbD2_SI*J1EJNL2b#AF)=@+)351s{55R%~S6C7>dSOfZs_ZSrFS>#$Lai z#mW$Er-tR2R!b-wJRqsM-ZH=F89sCk5D!ZS!Wlsm=LQCpcnyP8tcBsY3K(PogFX8t zj?<69caS#6pgV{_72M0ZwZQNJt6Ly1NO(H^0P9NRaF9k1cqhA?aOelmxFz!5qmhFE zwsHO$vg{-h#d!FSENM}#3zRQDA4)qyC|c77OV)167ma-(rVyM>+;m41b+h@P(nu@H zoPYYot1~pC|77#ak41xZNu~bNQmJ&C19$dvYqz2dALSh!Ny*&5-*AtEcd-5n8A7Xa zSGWaBF|_ON7X_(I-ramqzv74PI^PSp95O+>eo*iO;Y30ec7`l+^)id@%3$mEBg+f{qum@a6qyP%DxQ`G!EVqm&N%O?K~#yPDU>?<)J>jbre` zyS~4&jD!1?qEzQ!Oj_%Q%N_qG1M3P?^myIsNSy1r;>XzbN=RJK@B{TGbAh8db3zXZ z#H?LGUg2lFcgyTu51$W()vPy=E*b}jxWa$UrG1o24)Mcw0N-ddc-;L*c5>fN?N$uB*?Zp!Z4#S-qawLh6ASS7u&(}l3!qpFN zi4Q8e{+z@8qpJm;#3422|4`!1w-IO0{PoHwlG?Dp(rK7shQH{1E*c7g6BG~1JV=fA z4k?goX+; zMl~7Hy|nn6X;X6}N%+O^it#A+u@OjIs;)U;jSVVl@dD_1cA@R_4J1Hb^l)a673xf4 z2k81x-8e`Dp%#kevS#lFcQ^5&)y^9;;mRJbGjZf!i}oXUGs)LmAFRWOpKDm{IXnn4 ztIS_m79*H9zicF}kfL5L$%@|fOj(qCJS~Cg3dow$z-1* z1aqiKohzN_qF$y!(0<6JPM08C@~qo1lgRqB1YxxKD7W7)Yh zGQbD?Rla)&DV%(FE7W2Vx1SUXSE7kprj9~tawx?*#j6E>#&y?G?TyD;E+&nQ!|Ew9 zlA%A&_v}`xM`>ns3*&h)Mrz?9$0=O3GA zp?+p{l&FC4D8^%Bb~+dbe7oG@!;os;^|UUx0v^_sXk`N#u8X1kGyk7fR4lPrZOfum z=;1bFK&ea_uq!m~*6voo*Iw&92x$trP#+)1$70y!lR837Cr^cjUyq*gnUf&X|H#W` zb-TeJeW0dGXo%u*yP*0TC>u9z{Mum0q<=CA&k|k?tdF?FT6h@~>x(3+wzdB+{ByAy z$4u2mOCMat_NwbK^*hhL9=H_iAIg?vG*9QCGU)b0e4QGvaqhVL&yEI_`%)guPnQ9l z_6f@5Rg3!#nOp2~ro0*hioLnl9G=QW2WkiTsm)J#2g=S@ej1H&aX-ISQF=d*a%uGVX%ct!K=vtemBH%kIIg>lL)Wl|goN4h zo=AwOxC|`891zBaJqyV#RsRa{PUFz{-f$;pIFFP2?f_HNiBG_`-dyc*!#K%xD#ir` z>6@R=Z#*4;@e+yn-N)}puWa76S0tt$W;!eL^Kg9p{%fh7*Xrlyhf3*X(`k`$5LqPD zbQ(0dk99$1)u$~TMcTlsG23Y6x67pQw~C9hwL&u$Yf02~;-YPqW!9(qgHOeI`o-VQ zS!csJpS6iPZTD)Uj@Ex)SKt#OMLNob0Z;go$ElAcd~U?`*&7Iiqj1^cC|jfeylf@! zxzKOdX*tU$Va&eD}1ioD6?&o4s9b7^6|@|MkYePm|1^>#L~LEAM}GP>D_87?$WrgZ*rsf_*|> zhN^a6_01B;*f5Pe*n{V~zGht$(J}TMcy39k27xt7^u5vs4rlD8kzBlW-$$-sfs1c) zWg1kr_8jA>8r?g*dE1K=yaNqB*^W@5FBgV+(60}N|DND>^($r>Jc2exH0Pww0b}WX z$+aVHqCG^E<8Qch+k zi2Q47>_Kwt0%WtKeD}kK8G-vLPlJMBm<^Wd>iX3BFIPzAHNy>}z?5lAJY0dL+TiRT@52Toa^px84@^gK%#BkB7d?@#yFeIH_GUz1jj+dNZ^_L3WYKAz zONu2QtP)P02hJ<7g)aKFB#yoA?Wz3Izv`FgsIjppD4%x_O$X*X=t?E??Ydjsp zB{PoSanAa>w)7%8tT9JPAFJx!B9_ccYd#&N<(G?}f6%3B;<`6{L%qr<>7Ttu8_=DZ zVOP=+k}^+jVHCRwyB1{n^?}nfQr7u(6f6zv=ND(9JNvvAsnI%d;5!;<3|>?DA!Z}F za4$OSoA#S8mbe6CTNLLZeV^xsR_T=9?THceeWbQJ4WnyIEWpp;GN&xzwX7P2F1qu^ z0x!_spGS?`%yNwUU!E6no)=?)#S|Z{G%!SWS>Snv zC9q=N@_9Q353skLPQ1Fquqv=s@T>o5yihr9;pdz3B^`<7^5TTaCzXA_0$mD93C(5}dD zdg8b?K5w{W3LBx`H>GpbrQOrPO_rKYPb|Pb^ik3a+0~M06ighmppdAHrRNV`6|dEk zGe~le6=Fa#rqIeJDrfPf%DD%wMR=>x^U;D6`x=<{#poCTb1!vf)CyPFuwCHqql5kb zdjBx*01j5JS{&N#R5o#t*vF1A9ZSqoT(SgoG0q(5ZCl>)^Wo#cKu;uv|LbLhygI5| zSJk5Z@v_>o6i>HuTtNwN-l4g>B%hW=o~@Q3zxjo2--OPQJK0bax)Y*f8Bj!l0M1{V?bzY|v^($>ju-s4@h$KUFTyLNV_iC?S)mQ4NEjeMYwdE@^z zk@x(yO8dD-V$ZE%Fau`#UGlsZur|oYZ z{d?{%SPnSfbubw93PLO^kX~A?WcqGTVuczh9%UNO^xf}HMgl#C#WwHH*~DY&%ddI5 zC%^5aYwXlXwlSd1Gf3+&7c5BPnJ2+!Ya|^mSxdjVSluI?KlBMPBUtmfM=379ECq(b zVWxHU^@}^2ycG<@iUk8+N5oQRKaZFk%+OivpAVHs7{9My94YAD|B+rgr+~H1{OAhU zKs!ZK^P*SjU^*Jx6i(?@P|FUPxDjoUtr9%6?vp{R*;|%Ty!8)=SPI>@_p>(xMi* z^)YgkF0+slZr$(;u)1v~FYH?*uqBi62zZZ8rkF5bam49G_X7Il_~xzBkO#s^k%yP7 zcU6%2XvdAVNW^~cBCernwIVMq`nf6eeG*R44xNIzBi2iT`Q5@)q@eabg7~(t6Pt9| z91*_YygT_^ru?!rg}-#iEIP*lObS%4NLn4Q<2`>*{Ew?;V%Ao zExh;fjprGzP6;De|0ji36>fl)(Pr7Vu=Lr`S2tl|xg^gHlqw-i_k3n(fLnRn>n-Yp z{xE;NPwmJUrcadJUpW%{$~{z!irw+K|7mLP+G6P`@#D=A<&Ki^dFoLu+$jo;!P7&e zimex4t?jSSUt5L^igy0-UR7QBSASaz%MTdwa-)d|7SM`663)NY=5<0H*f(0$U(q+T z{OHP@r|TAaiplv2huu*@w728l=jb4OTa%6vu?>CUuJ}~ItXtpL0+_gbMKvlk`qM=nREbsjy9(&38sUbww9_RIM%%~&WO3QVTN#AgV zTcrVi#eLVK5UA$S+yD@=`MfstBN0;tR4oCklJ5&~#wzAyVIOrRzKWn!X4MlN>s@|6 zGA0SwNR|4ltd@JJodQM%UVdcDUFKUO>!&&&`>E@m1-22l0L5!#{6Kq7LT`3(a$&O^5Q81MNSP3=gQ?i(%MJ@v#J^T{*JMlup?Z0Th9iWzn- zI{ckCz0FKBQ&HBit+c(RX-BqJq4Zk^@q1UpTZ$T`_uspe&?$1!N{+ReQZ45Y*H)Az zuG3#pP7N&nAImgtK+#o<5`AZ6PE#ZLGtal7~l3!e~?ZlZ+0u{unoa1+Rob(#zu2wMfeHWd1rU z4>=Gt7u=)i{JDekM(5TC`rg$Y7K=hir*SHd5Vw|5SB1>AMKf%yB_F^@>)(m-wV*__ zSmWe$y5I>e|3!vH!K8fluCMD#p(+jRf8WBUB0999R)X|L4*zk-3@Lb(lXf6Kz|F3= z@?(xFt%M$A)7%p5*;ER<(k^Fo)Omisj`IzlSq%Z36YW?$pqycm!|;qTln$o<(#T7M zsFv>tcp5i-Hh&mYM{DpVZGCkGznqv@yW3sepL7rA6|vdig}>-b(vz4HkSa$Prlx4{ zPn5 zwT!P6yPzOnO4OV;x;g7BB)sE4YP9)fwReR92o?np&p_sVm1P8_ECT-sU#kzEA6j0x z2c=l*`?sNYFg)B=o!0ZwKZe!_E#X#ZxrhcXOZY|+cc^~MgojOg)XS^Rh5ax`aLsOp z^c`_#_ZwQKX?(t7&|kX3)sc-)WQt&(4rrA||FTV26-z6qMX2)?{VJ3g|NMDtFR&E? z)6}b->dR5ZvP%AH-~Yqe)aCPyyZTOB-@6Nu=|JMQVa_E}qM5aSb*cC*Kum1%QWvz? zh}d=Wh;CGpya{gtH|VN)u|`D_d?eB7kLc{6Mw|cNzf73-Vy{kEcL5y$7~g~C0KoJf z%sW6UV z9c~=?;@WQH%QtfX$DD`2+GjF<%ja)7iH+J5ERcAo+tZ^rCeTC zFpjxwwdNk%Cfc}@YDeP7!I!g2pUJT|H0>ou$iF_T{K+HpqqKmaVh(fReF;XpgAPl* zJ_))}=TA$5i=-Bl^}Zypl8IYf19Y!5_82DYA%iF^TNT8G!*vmqr>peY3CabJO6BP) zd#Q)U7;pmf;;OKxVPn`m?>|b*;&(@8VZQjd`H`N}2Ueq%hr#V*XME zp6~p0q%;u`_~_?5T#SA6H@iz0dxHj2Sx{FLQexi-B<6oO(O<5RzV<;nsz-MAL-y+$ zr81J|GbF}Cr8Xq|9vW9iY#J6@hMeOlcCYPTy;n6`hUFSdVfr3;t|K44#2Q%dAB?*U z@O}1FR2>YI5|@WCJ_#e=y!EbCNrmmbu@U_v$c{TKvM*?$JC%;uubwBc^Hh7-dHZs! z++??qg8{<=IEqGh5~?d>eS3QJ*vvBs&A2+!!A_+}aRy0{$)o`A&3v?IIVA}FH3D$; zpx-hyy~qZ=7Y^4w#GEQ5&af<2smW z5>zi;G zur@-g5&Ew|CvB*WA-!?wyWaRTe*t-pgF|^K?^sUtvA%JgDI_2am1NQw<8-P_X=( z)&ERapzUSPO2UnOGEAJ6>@1i4L3&m~uz^{oSRMJexRC+(3(b8EpKi}Jv|DCu?n!PD z?C|Jn?P7Kr4XB}z50?yVE0`)&W*9nVeVVC+` zdATjUr{Uwp&3gndV4E_u>f#FC87D92mf@@Xkg-G%*P4iox@6YKG@bN;iRXxUAg1?T zd3qunvZ%(wVuyLHbZ;-+T)mc0ptu$vfv;k4FsNocPJ8?07`ua1zC{D0T#IIX-QCUm6oeziKsJitu z`4tfM%;7jY#yaWkgpeIbziJATSF;1ap|neq9cN6ex)^@KdUYngDhWVgJ3ConW>ZtWv4)WV~mi33M z-FuFB4v)iZW?3v&SFShpF6~tZqaK-@y|{S)cEIq=I*Bdr1@qQIRpCEO|4xduT<+$%|(4IvvgkNWu*XikZtZ`%PXqM!`6GmJ0 zsLh1Y*qfCKr@&}|*PfK#bf*uez1W0_t8`xmTji{9cfM0IV`#7DLbu{esafdKaEw#( z(B39~ai67Q850Os70h|Ct2XQ3HCP!ReBq|Nz>1F4V6!?mRl<3VAdss_hg1e8thcwZ zSD6%~5@GR`GUgX@Jc8_%#B+1Jl@_uR4+?sllD~W(d?(YRC+cl$>AB+q{Kr{)%d_ig z(96>gZnafxRHEEgo~^Dwa-1DW`1f?Mlf0}wJAPC$uM-Y5Okbq&@k~pzn$5CUwZR`d zdFPf`r8zJ(A}tlVVO1F_(gvPrsSS9Fp0Xp~zo5`ln2Oa{MBJl2nP_3AA5Z&o>#nPzJ`czN0-g+7J4;a4W*q>h`3w2N%Yz-;^tQ*wCK^ z*LK*fKBfY0X}tm&ms@n&jjgykE+tE$i}K}^lNH(cSt5%qqV8gCtHqmH{U_1p{(yoz z-}aTX71iolsc{*8y?E+*a?~UMP&U*!rEtE;iA;fXd+! zaKycVF&Wb07SW3L3X{V8ZY?(*&`;1Qo9s35x&T20c>f8G?g`lKOL@tc|(EJSc3Vh9~>+_kU^Yga;eEo9< z-s*MnNU?)T`iz0D{Z4C7_M(jfy>VR`cRR0_ePXe(;3Lql7%4f3romz^x>ecKhZXD< z>@=-sKgP4%w$Uxth^^H7<}+L4Vm4a#`tm(14L$nslSS=MT(#1I!0FazE+_^8#TckO zyRef;z=3xM-}Cyo=?(kgdj&AGhX61gf{r!I_DXZ#vmqk{KmjeR_Wtd}DnhCw$~%S; zV2!Zz&3Ky%-VbS?9=^aQRuyD3yJP7u5L|Z)+z;okz|VPe1Y8XvrJPat}< zD$Vp7dzM$QJ_<*FUu&1S@}lnkfpWs>P_M$o7ZUB6ND9}9vRq`-$^-Rjk-19u=B8_o zYASl<;iCB$zCp^oY2Ul$pa@Jq{lp}~dFJ4)l6|Y_W0S_W_^ZEt6+xWQ=HJ7^b$A9w ztf!Z-M>egN4xYl=vy#bQe%#tba95L#O&VpnjaYPvUBh+@QqERLd_YiFs5&ny=dG&> z<_7^GqFrC{wJOkf|GY-R4*)AiexuL8Bc#x2&vM19vx9kc6f`aDeVVA2(cOEDMROxv zF;UQ!>Lo0@vsTF)McRaS?=IW=J*wK-tE*cW1F&|waQNya8e(AXBa790SGo_5xxWO9 zgtzN6yvBxXLmdv!!1=cwrIf`pCN02AfhPREf32ug-E{fhm*B3dNTWEK*P_r(#Nj7a zoW-}eOpw0dy!htU9j*@1;m0Hpr$;Fy%Hm8j%i3KQ+|N-L>9b%5dq`Jl@iaLE_0+_k z#rJ$t{P2@9_H#!j>>sOt0jl~h!JZ-Qr&AO>KTQ@uB)&;ii+`y~0vMAkt)%7JeHO5@ zL<3`ZSj8>bNZ>>`R7Yx5WAo0FU}s3e>wjK0^Rfd+Az9Ky?qbq)uvjVnJ+iC!S^v2I zlM9A{O4i^i0e=Nk(>*X*Vp>ThW8GJC42V!A&Nwqc6dHcf8r+vA3O%OqC6I~cy1wCl3kOPU8_y@E zU9i5j<{+~al5zA$bGPUs(J3Roe8y@jlNTY8e0DFd*g80;t-Umi6Cnrw5o)n&Nqe6K zY(>o_{YtKeISoT+&*y8C*_8*F>GM1PfXmWu%&@9*14!^pW!9l0Mdl1Jew}odX?S+?>{!lzTX6yb$4J)`63N? z`#wCPS>HcW2?`F^!eOs3yESCNaf3uc+qtyC*~>|Qw0Vx>rg%{Cwh9RSgtJPVZZ&(A ze~*pf&w2Y)LVjyT#$f4s<({kM`06Sa2&coXQ%_AcqJ6R0x~?z3QArBW)CYJRFslB~;?=0;;%!=|Ija8dg*cx4T8H!wg z9d3pyTN$ZqT1jz>*)M4<)sQMBu~W32SQGyioojaVR(;z>qM{I{zUll$mB)VD8xYnwBh)h1M+EIAOd#$REYhr2Eg*&BQS+bCN;zKEb z!3u4fwKvBO3|9~OP!$)c=~-#cJWy_i$nsyyO51c!qbabEON5nCcXe*qvtuXf-pHhh zo;X#%{oH-(Kk!wt+Otm|$5(Z|A~X*Iy?O$fNzoIEc)redCI7k7T}9B>d+qf&UgbzI z^2B9tffnCv?WQsY;x2GV#5=Lla2TK$z0Jd70*jX5l z&EnM4?Pr@p1$%N&MMFlDCSmn z6@hO4Y}Mz{pbhR8T|K z)J_kSO2>=@-CS?nKT2i_b<;;?;o;~DHD?L+Ra{I={8VX+D<~wXVH8d$H^@zxVG_ zisdq)XLsdguQ~y+sjHBvUvaU>bKL6H_NpwBtii@|lThpN(Gd06 znY$%zI%B0}eu1^&{)+5hTs2&fUxjipqo=%Re%4Swo>eenW9Z&{OfhT=(43IqPq1a z`#)OH9W1kYCXfwqMObVvT)fV zu6LD%Zf35rTnJS*oItQzIG!ciSAm^qtwCG=iBH7Xcl&I5+6Jj%Em&M@mbmv2MQ9_( z?uHPqlo~_t;;$uylpG`~6h% z;@w?WS;!dO+v#7F)u8}@N>tEY6Kcn#c47y-QIQ*=W!JRb#l_YfRmbt8!HIEv7KcZA zy?{az63VQTvZ^H~0Hwunf*_~)3@i;w$X&T^8XEbo#H+kFUGJ`6OaOJ?H$ZuBD?nB8 zq|`Gu`sj%U2i(<$q{DX!HWOt@zN4Jx=eVGUGkan@qX681ACRWlww6{hss^w=XEwwD zaAvEBv6fGX5zu(+966oKlD#_*S3%j%H`x@_>mVWY8FvSQp1rCf*_K@my4XqA)02f> z`6RSq4NSki7^W(lT;4M(2fhx86wVWgF>0ix+hjgDRjjL zVMCA9dd{oya5272uV-bbXy4>MSv9o+OC&Mb->HbR+55r3>|Cg zbr$7rRLXp=-|p{Um5ZJe{pb_Hyv{~dyL_#?;q#Yje3jW6i`90snRp7$aLA_I1Z+gX zdo)BeNtX6sERk3MTg%MXOL>b7f?9&VIZJ^Vd*cR_r#0q7o9Cc&{M8rK5zb8HA2LHGW(!a^jQ0&UV{?6Tz_x&F52VsYqQ&F^+R3ZWIOlUz zJGV0`L?(P0&*vezRwow&@Wwiis>r@&m!ht3eUY6(T=OW)I@v(47pQUgB^*`x-Pq}i z_g&e3p4*pMxsz4}#f)cYo(}E)pJ_xvVXz4TD2QetNxKI}>H79;yqu_3Dx)P@g~N|# zZ=&O?XwwSV0GMLAV;9!WwSA#B@xK!BGb$?AKnVb9TTAXsP}&zk$C#PyKLv0i=bz@4 zGPdY7EITh}t6R{xH-G1$HM3g0Z9BgI74SVnmK!2Sj*8&D7B;}Vd)3Ev{EuP&6g`#XL%oEy<175Y zm=8#Wo|+UPo7RcSmHMGmvyc@-{>&C!0o5_^Ehikvm`Z03AmJQeA`DXQ_^)@N{HzuQ zZO7sKP3vt#UPG3f>A|&9pJDg=pYN+gahUipqw-GD*GBiZ*gY}0`&&e7^AdtWxaw5T zOGd&1LPk-EmJ_H%yf4*eYD+kzyC+Jv?qWmJ!Bun#6OZ}JHs1q6Cm-ToY>!*<+^THT zk_oWL#mDVPMls-vnctR+8a{kL*g7T2SXA*XOj_TOsQ-KZ8s*RTn&1(oxnZ}8=!F{| zZOPEvLKG2ovs|CvYog%oj73${;O)Jj&F}00{d<&)nmpVJ@eFyYZ)+|N|EklRe7iG$ z?agLRVHGX^mX&As%Q;f_*Wg`lNQj0vOOKqs?LPFnVgSrX49!OoUN@1#(~u-|vbfi@ zBG#lfEwz_g;bS<)icXGq84aVv&8F z2B-z&p&KTx^aB$|P=d(_p&KqkH+1%8dUWKk(Lt|CAq|^=hC+{lWa%*OMTH3erWHE; zPS3dGy!u)r5-q;o-fvkg22~MS6j>{fl7Gx}H5+dUgc5kq*)T z4!!#oGGx$y4C!+ZGNe1Sw%$~*Gv{j~g!aP>?1u=X6gi|6d*ja0;@{;80-gV7EkV%8?E z6>oQ~t(~W(dECrNrgE4v_%E-sy?@;nMAU@c!wZUTsQka6+e^~wNSnoQpQuc8`w!LZ z;XCA3ef9o<-`YQ>Z9RIzI}C3OBlVvvc2N`WZWx|vPW%%CWvc@U5Qm8#{7oqAKKB(` z?XF(hv&%}&N%$LVL8MHl1`OFS;LS`7eq12)$*7lc6zU(_5Ca@8h?l;XUB|Rswi?a|Sg78N|Rjh$R?ppPw`w;a72%Zj__>&H( z4%d}75qG=*mDg3Ej6J<;xEKy5?oBO`q69SCaI5Ge6CxVJMWtjQE!v{!K43)v7k)i_ zY6fTWpd1XX7#L%AnTdgPB!uvar%w&gk(Pgt>H;Wpt!DK<0a03$c10}fI8>f9|11Xd zKJv*rx7ez{1qcSUCLflvm4oYnP|Zt6} zy|r=xK!M;wZ?Lj}BfAenW(An^HJEfQ9ZYYyN3NO$m>XJXhI0+MAX#qS^)`ITe^Dg~oEs#m9W))8|V;RzjpqH0xaDw~NJRl_(KXcl>bLyG^|tWvJFnluh z@{ceTZ@W*}LJrH~OJY36Gzs)e@ohu*lyY=^**854{jwkao?UL^uy1O&cW?DDZjDLN z8~bB%eWEYL7nzV&8J1Q#E5Gq;!Q=Ind272iG-}+(UnNNfxjBq{8946+bMSM&8YZJk zeSas_ql7ykBkG!Aki=!HjQ13u9+6RKfgkrx-^vw#?3O&NCBUy|3;-f2%hUYwE#XR8clc$L%@m`C+q8lIcEXHujVCV)|eS!@YPc<47 zyegMeGj+@kQDB7mQuL^KH(REhN(1BJ+%9El1FDDxO>j8Z7XI;6@y{fo)XqseOIB*qg=M*b_>=c@_Vov91+o(M6FIoHB8dP7rpQwyhvMay7O4OT0`%7(5ZKrp{3 zv~Y^|>hsAM9?4W6#-+DK37Mee@&gFsG)VU!Y-Z*k_I^8ZWkfAg?FHAUPY7teB>ga$ zDV;MX$vKfLX7%G)H*YGb#x^x}qxjmzRk zb_5f=P-Q{dm4`gW&E{aJQZ~H%BECuJ*mpx6mX!!eF-ZZRU=zae+A1c-5eg0#neXf| zn8w?Ny?2szTB-al3qV4F4cTS0SN(sbBC@`RzcLF!wST9PU-zah#hu^+AhGWI(=db>Rq0gD(eFXBJwQL+D z+MkJZ>u&0HCF#Q3!Q3aG?`b_(eMUPn7wwYM{h#G}1@>dQ@0%Syt{wYl0k3!c9z}uL zst=%r;#*zyNbdJ&X--o4&);$V9(}K?(_E~GfnA1n2E?hqi)UNvK7Swp|7&ooEzy8J z&DDExG&j!81xX2EeDC#X&;3sMsp$YSM(t`^-e1XG1z7^5g(Rv@7 zZzIHAe|-%gmfeD797U@|oRF-itUP7ULd_`2KSfTxSaV@7a{pfB!?b+wDAO%_Ijfes zfFij0=d)*$aDf}c%(l|E7jfrC#c%A6EsRhLMcI`ZGvN?1F3nQO#FaBD>lZ~DoIM*d zX`0n#_juSb`;(A{OP~xQ9sK3lUej`LIx)A*J*`NNmy3g@|Xf;OUtpp z2e-QWn+Fc7ljU~5Cjy5lBF$&+!)1RFv=578FW)=pIfWYonbE8D^|Xkqsp1lGLjT&sPhy+j@S0)5>b2_}n;X5QQ4 z+Kus85iC(ju|F-yYGXZ=rrq4lA)tFY)h1xo5}+(yL0fLrk|U6TMA!s=kggx5u?r`x z94gz-9hv{&+B%vp`11bRr~V>F<(z!Wim4(lbd=cT!mJbfDVn0eF+&DRf3LWH?bx3r z0t(_&MO2%+F_aHK-+}3|hZwbl4890GdDGldlcqdn?lM81FLq>emcxjeMjMV5Gipp8 zwHmCbpuJNKG#l`teK@W~1lT$Y+I-h`q$e?`$;;kY8eRL+w*R5ouS~Kr=xv5Ny|;a% ziz$kM+6{YZPw-|-fPkv-6qC^W=fl(e-9?&lLGzY?Bu3PN%~)iqQ;nRRhj>$=s=~H} z&jhi-2JSVwJ;|#lSAr#B3QM?$!}B82h_F%;Rn-%}#GemFZN`dmRVU%I*4p`EqN7Eq z7oiF*Ge(Z=JJ?Ji%K4UuQYYY8bMv0tcCChhT0<~%H*)8&k1gk0GZBL4I`CCTMG1w= zr>&+gZeO}4NbphOg9`$mhGsS42sigC26T*=u{xrDtljN1@HP-YSj9*BI^7@9m*m+a z&`F#c+J1rR8mWQLZsvbZ(5RZssjU)JYYEs@ckJ_SpoK9MWOYPTaSR#;iIO_3F;1@Zlb^E#(IaRczGszTPWd z+Ioyfhv3EU=(Wg@fjrBzOyC=;bmBHlG1#Bp6O;H0>f?*m`)m@QW7OqKB$hqu8 zY3j}0xU6Qs8cC)1-o+275^=FDQzLl0`>c{&?>r?j+)u#t*J6-P3E-EHaMh+uo=2!tqCw8NZn3 zJwwGPTWB1jXIbKT1#G^TvFFm}8MVC1PqK2#SK)M)jh54F5QcA^Iei^U$4fK{Z~l6L z)G3aYd8_m&zDucsJymtZI6<{VOj*U*YK$klbLl3^I@ao=A4y8VFJsx!Vg^`Sz2vdi z;)8{xUb}#rcqRh5n4b}|Vqc@}d%jI#7Ag{>SB<0iIR@T|hj^wOU_PjJAL>rnDXKJx z9?qQ+`Dy#CAPvKtC8Mrl?xyCebxoRST198n9$M+EagVXeTD=gk(b6W}e^@;)+%|bu ze-cdsvMGbAf6|QyXQ9O1!|prz9qtR53MKE>%g(3Cw$X{IAS>m9rJWurHvQ&g;|r)h zTk@7~V1sXs@mSmac9H3z?`ZiCw{V9Czj^R*@C`B(&0$QP!wy6ug>K0J^r=*o4yXImT)9@UzxtdaXc z+o#Y#r6F;rqcYP(vEj@TNM(@muY2d|L>XBNMF}3SuR}&{G_IB4xH{r1&6L&@p|(oHv@8b1pOx&U8W06 z6xos!yfy~2Wy`zSl+x|qSh7(Fn&wsQ2O&lkyD{X4*{Ti9@U2Rwg=zYgZ)OK%F+e^c z*N(~7@J>ggDvx=Lo&H>{65`nO*1}H2em-QNBpJzGw(X+Z-G1DA`5i*(N~eNNlSdt3 z6GV18is+j@pS41J{&no8Q$#<&*GVchmv5ngKg8lYAF7@JM8*Z*GJ7q2u$0{l@KDK< z^7qa6?~0v1wy`O8Xf426<&8YHCIdLyj2Bq!>)35UUM-45UXMplF%r+alS9{T{=tb% zlqK(hXLZieP|k}!SfI<4gT_Oy_5gAnE} zJlQdJ^C7^_pRyv|@sbhIt$ND;kXZF_8S(>K>$PykUo3WW>uTzDE>AaU=J^(bTXfTZ zmKd%7yF*U#z5TWucCv>iydBSqm2!OVl%yq~K4ezxc7uyLy@TM$lH2&Kae6c24lGj+ zhq|oP=UDma=y!R_{FIj|(=R4pgoY8&@oN0)V|b6I3iN0)nNlnd6-}HtqW%`Bi$jzj zAc=k=iLC(-j2=+b0qLg0KI5z2AHe=`x#eRL5qGR@xrsXR%`Pgpb3a~;DrXs&!|_|E zdz={NF72R|4v!CE+{Qil$lwqXFPa%mc{sQ28XtXDlzao!Al5rp!nmu zI)nHvm(;v0Qr78YtMfo9q0WF*bn@n+>U)Jc!(uf9D8-*jE5?tim&C^ zN`x2v^_u7E$S8ZF?1{GRtfv_l@$sc(iry0XF4j_4G#|@{%{Bn#Q3#dnPJ1RdZP4n{Xiw(bP zGuoo17lCTgU8g_b|E3dy zRtAK$S00i7JPvz$1=O(%NmF4U;I}DPH2dXAHU>ThgFJ0IfVV8|)EW6@%r;0I*9jZ4 zJP_&NVv%XNk$KS1`-!6=dZ_H%y@crXSxmdcZBnfR#VC8(UtT9P&Yi<|vq#!On5`VP z?w{V-p$YctrQ?HpqIz^?l#U#_7Ya(a%cOrymtzG?aUHuyZ9;X&&wQiPDd$x`);}9)hg%d*Pg-=gW z^zRV;+W?s5F6>cePq(>>yf^YIo1MPx4X^?;gcSaI8FKQMYEGWz8_+g9&%SD;Td({5 z^AbKxUYJv>eHq)1gP(U5Lz5z@u7Eq4@Kdd}imcFx7%Zo7{RdmduuBuCh~k6UmGX%h z<>da2=VZ%P50=(H1r-ew&<&9u5-;XlbrtBTw*DSoAF63-Q=B9Feg6)=x`0AMHtdlG zsXRQN|AV%ngn9!C^7gVGxHPafH1Jbiq?9Cio>cJS55&Dp78O2L*evU9WQapc^cV?VdTLHdcw+H8VZ3yx(Q90BP- zHkr79!+{=ADqAA0N^k?u*YSD5O^tp>)=6$ayUgZ@AE+8}pffci0ZZ+Ju2_EOq*a88 zO*JY{V)2S&MMIPe+#^0%_d!yE7xv*?v{<~{dhOUHc12=}hhA)KF0&&+fH*+nx!?T0 z{}7@Cl8|#zu^YtjEoXuFP?GgKzl_@`2M4S!xhAJS*Nw@sNg$trV#_ac!HnFTN!X#S-U2&K@QB@|h03@D`=d#Qk3- zd0QofX7X95ZP9WX4alUTK9klV@jI^Iyd#CgNqlol55ak7fNzTrew9z^aX;sn&OE3V z=oUwXTB!Uiokr>X>!f}Gy?6Trlm3z+Nl8{DIRG+rR=ueV}eG&?X(Ww=R{^#%ifh4b|wBQ^R%LVv$t46(-A!*8RVj_ z^iW{g1tO&cf8AZzo|V(wg-;~g#T5*GHiXnWQctDl6jNRL<3!~UA7<^{t>#y8dDQ6***Kh{6eFf5; z&=RA@?qyb$e|!rD+Zu-BcKm(=emGa_z=O;B(3%EhA*0kgbLx`ps>9hy&t22QY-&#_ z1vx0&L?O6y}`{*NJte>>og$0;+6o5blRwf04wijqV2#@5wLCUt~U-Wa&C$V_wh4MELT zy%f05yQ#xCn|jUV^(NNuMs)@>fv zxFh7+zgkA&*z0wGu=tNvXY%L_DB}VCRSX#{{FCO3E)hVB964*wd0Q(nI=gD4w6%&~ zx-={Sr8vSi_Zk@xr3T|pE{)=Gzq3uLah{(6F!oZu!sl3MPa+>WP;6vOx=*vY9W2`2 zjHd*?v2j){u^Ew*r)f$hxcWJEgmkbgqSDyTdAdg-$_tUM3 zKyBx~rE|#7eAOemALIWdz6OT;%PfA!O{(bt&#DiJ4F8KBUI)o*PRPQiyQJColm57c z(MDDz$_p-|vWvF{ypVdQgDAm}?m3vEaw%GqPriPm$7rj*lQIy*A#;9Vd5He@!;u$l zS>(a&C{`WE-0j=7b>{xTqE%8){qXaJtD=w709au#znNr3j(mqMmQbNzf6^PpyE~K` z9kT&D0CF(6xMca5=?011VFlNEr(szqW?PAm?g8k;>7B^N zOZdEq?u3%;S`D&4qUA!fuhwtRwk8#uyTyY(LbT5fBd%&6ZxZ=hwHCWdRmWpxz4|c* zG)vo$m9RmXPSD~wR`3^|IchQj9HtV0W=D1ENU*>sh~rmw^2ry_m)IL-uF+*ZO)YY= z6WyS@7Z(Gt1Zf@)QQp-8k)PWvJ@vb)vLL%(Rrj<1RAbHa;rFIACGC4{eFC2BNy?3= zHDetk0%~6HVBM^_O!pFAAT7*>lXCoy%p_wcN3igsnU|0()cin`1PT8LnS-1v(o~I_ zl7mK-JsM>i<1QQ@Y%Rjo0Rat}r#7a=1W`29VMT9dTQ2mfEJW+Xqx2k{OrSEBry>Xh zp!O_zeWrA<+2s7y=gj`UitRD^WQd#_uAZhd5CiWhY?6#3rk1G!zqY0r(~n1FyYc$0 z{+}Z6b=X!H4Ucu<&6@v;5`5-lQ(RpCq#Wj#%qiGUBu=$2_Oq|(RuhdAGg3hYV%yn* zL6^Zu_O_s)R(w>@8Wo3pa63GCQ#1ENb&tBL5HrM}GRVAeN?9_ktV`Y8q-ap12r@f|*shWjed%daB^(@n{JuQ8{wh=92n#UgmLE$FDKf+Qb45 z0H52~#LqwZJ+E*}=F;&It@H1n^y?wEQLxVkmPQ~(z#gK<$<MA(=Ro*0C;d)y z7D|VGel{}0pzZHX5Dd%?@njB<}yyML2#|LB!A%ltpV!H(@jHQsl*Brh*@(#ya zAT088w}O4vx(>M${Bp2Y+coDv_hyk{u-ktcE4R`n0O=(X24Lt{GU5_B9Arf0t~64> zbYjcnRrlr0WErnz-OQ&Tt$mEyfd4+0!*Xud-92w$*nR>vyp~<(95E%S`TkH@iyQ{_ z1@^F!>_AebNpF3mT3f|=VtxwD=sNZI{xRAod907SPIAAEMJ z7;58ic>6z;vw-jBiOv1c1Id0Ho9HcDaq;r!mxxnma+EN{eM$adRCt;oSBz3)DT-2V zI1bX@ZYuo86M!BH=G)Z;LHFnX>4&`Q$1Iclso*k{PQS6nldN}5TtZq(wFJnM?h9^i z=L&SUV%LHw33`*}1%L+tn+xcSpI-6oo#*A4&7nnQI;YYu!>D|6hS+jGY8fzH#b#aZ z;Rm3>CR2-y-QXv34N-@;*~%rBtZ{;Fk}&(aHrEC6S~Y*sd!Wp zv%~qx8pDC89_T4YDF+njU@v0oeKQW|xw};l4xS%=ro$3!#FE z>;r-q^BRf!ke~i=*v}0D|qzs!E7F z&RwAMiSuY3tyT3CS3ddZf^k@34}AB6+u>MQ2lt#5Ug|5Kg8jd(4dx|F^TNZ~#Utc9 zn_500o3T?yl$ea^Sh4Tp3Ybd3lwqAFVWqy!jnM}Tfwr;YnI32yi|oA5SoUiy7EUy9einZbKUBSe9YVk@2EXD~&v*UV z-MP2@QEKoiG&dXC6++oZ+@b`i!jp6F@qnOGy}{~exJ|zG*r)s|16BY94Njgm+L`LY z0J~c$3m9kWSDIgB4<1DBs^6HDzfjeHM|@uJBdKx82D_0ifYqk7{YHx^q<3UOf^6W8pcv-F{j(l zip~uap4)o~diJqmn8Ih>OX5oiD$G03&z>|HIop8<(;s(q80?94^4~2lA$H~5#*Yih zzTVUtW0^-WxHQNI2>)12P3(oT47S?$(JKX5c@1e(GJj$$PEKUs$+p`%Q|{p#H^4sO z?sT|Q8?K*)3QmF#Bqtb{F^anRD&+Ag`Xo{txn9$lFAR8Z*hK_P5f zN72?eL}=@)@CE7uh~H>#w1#nE{;>&EH$cC1*#})jw^?2T^$s=|-k%lFF3gJWwlOR6(g4-WcHs=W4pftOUr zao&0jVDlUVdK|0g<{>JVMr2`5xiJrVv>_*t?Zix+3u5$izkr7y1hu^)Aohab)EW#R zUy7!0X$DwR9aG_*Pmp|ec55L$~40kFm>xa^>gRs~EA=P_X>d#)-#Cc@Q(!YDsmx z(Q{7kWaZ@RfCA57UEDbC8d>jMiwh(;Dq+eB?0OKB0e@s^qudOA7c%e}=IMO)?aDSDNKmKWX4(mJE( z=xFYBB)2kIC`c6Z!qoTha?v_1JRHnEMI19`fUY8cuJk=t$^hCgZm#nwl3}9YmF6$*RTLFQ>$9t!jS<&i;b9|ZLfriSDUG5062Yp$uPV^d0<9h5j zndE)_{khNzl5#4$$s15e!c47#e0z%xEqC6$_zfP%fsQM+pXA8-g)JEL*u*C#Z_Dco zzx_dHK=jb!fjau=wCB7s%_?Qr&MayEYL+j*9{HYET{L;6PYq;L&a}5pye>WpxFfACIA-H^G}NYpn*NS5_+-(I!0hV zZVUHXbBqQ^>kB;l4MW_}a~(!bHvwCSadZT|j{Wmq2Y}_JHT2Q;5(qDu>&`_>-{w5S z#W1PD-N{gtynJ{wu*Hh%-H{`B_(&RGdG}-`v9yh#4u|Ln+rJ_3@%!oo7M~h}`p}gu zu9kq|hAxezsODK>l8<@zv0Pmoyact_7($Bh1+Cq~#Y1VzaW{IiF`niS&*+1;OZmB{ zd?$ljQyEIZ$g-1daKfbyErvkQ#$+3zl&J;7Udc?Z>Dq#Vyx}ku1a;0Q6~pJ$3AuM_ zI3Q2R8^ALk5g(xZv@vuv%v-e$(1F4UaSa%ikhH%Sob6fCLa|r^$0-z`@$K{3-)D}^CVxu z(_xhq^PYiF_~!Di4xa<{^f^_2VgT(;G<1Ev`|uuytDm*e1lw7{GP-p?o|iRP_-y!( z(}M6#fBivYI)(Gu=;82RIG*^nmoHfOWcSYy@SsdwKL$^}8}BR-$@v;`b*p^AGnZw? zwU2kf^~jCR`3(^uv5 zvH*9f>u0aZUjPZvri4$1*%E!eMomc0(h85|Mf9{M{gwp$Ra=<}zl|2>O?SirCWWm# zA&@P3?i#u_2E)MG%|P@FWTC{J4k2-)-j_scEb%xNV?0fT8Qu>m1y@gZ-_Dq%z=mFZ zI*eqtaBg>pq_*inr^9|q%&+C=bJiSQTO-T>y(pAk;4qW3A;&4)Ev>nybz`0AX5=zENpeU7SAJG0NW z<03*{Ca=+LWKUf}DuPaZ`147&O##_q^SX_JrKc4z-T(r*r;ha3#p&&gm*H;|&l`z% zNVjP0#k<9~@9j3Of2M-(_-r^u@e>F$0ve+b$=c|4*;xXjW00)$8z#LThLj(4@xbL2Aoh0}GoF|CwsbEHNj24g1!YUKbC z`3AsvB*|+a-wGvZ)1dQXFhUp1dgNMYSkRn@H}kA?emGTmnZNuZ>LXyd4q=!|s4F7F zeZ{%Ti~OaA7~)M+lJYsUVFO)?Z*r}I&AXvZ#Xrb>&wD~{ChNZid4N}rSi76HOcYd+ z2O(JToMo4o=0T52Y^#MP>30Gjrf`t;%mxAsAD%R%LM^@ z?!S9450rlIXk$CrO=Hdi@y#CmP%!$R${v3Ijjm5=e#4wiSfV1-;AQ-Hxx&}9R-IaK z)ovGH09cgvvjF<8Ez!O*QiJPOI$OPWg!;J(xv#VYgn=@hi*hxXQWGQ_{=Hr4^fBX+ zQCurPbUtuOkJ%tSycwO5mGDDYkA97Fix}G$7gUN$)Y=VirT1+s$O4zr(Ji3QT7&0I zBG_0R{qk~q7_HCT&mU#w8OzZmgRxK-u#ZAMIne!MXSVYeh+>4oyX%mnW@|-RCCq~D zl-?Pb%xh@*==rVl|FHGm@l?NW{CEpx7TF|O$>|@~R z<{Xz*k7dHv=t~GoM-;g80DZ?KaIm5rE7)`=7D9O++&V&eIlEq=sWxiWvWjhBcE^8) zkvhJ6{^S`}6BjzcaQmnP;@LS?Rzb>pu|u3(=GdJGNxd?)Kk!7X5(w7wSsa;Kw^NSW zx-2T6)JDY%2-!a~I?^A0jUGJrIbOAvAHq|PuZ&(eeaNq~yT*^`p5RT!qYbH+}cR9biDdvcbw!|$5O z^OKBqrvxb5&!n21JBfxpxk&fK^XgMM45&_AQ*TAii2n%I`H9dH{Z# zet{MF`u}+8<0U3Ky~mb8XOzyvI!b?8kie}~S5GP<*|n8>Ph7tuwu$|G%?T;LGURNT z88CG)=RfuJLEWPBPc$%jM@_}+y^_6q;m0h_F=_VY;tMhYUWcWF2xDdhwM0508ZFO- z$2!Z6D?e{8hQ4Pyk&HUe%Bm(}&Kt(XW$|shI+U?J8UmIg)#(2`*D|YBld7yKcNoU} z@5RE9T9z0bv-dFnnaBOp6jQRAVdW=Op$P@lK~wRPh(rq1sra_G-NdQ=d7KU&lMXNV zQ}&nMrHj*#D7-vpaOol=$?Uea^+S`Udex6-c?lnHfNmn+FDe&+>~}XTM5=no1;f`^ zzs~m2>p||V8o9QuEsX!((QAfZa}9$jrq2_MpF5KL>DmdX&*Wyj%a@?B92dUr7#nT7 zH^`+Hr~s#V`w(3YW4zB~R9P;bjKUs!bp& z@E`4Y9T;MreP7$S7^d?Wq`d`ALUW=P+r-A~q$VX_^#JPZKg$0laJG%$7z;VzGUIWf z9?&SdK^hv&^L3-GfepX7h=jZqhSPld5N#F=o4}?qUL@9<&c6v$_>B4Jv$2RPfVxmO z0M!ZrQR{d~BTwj8v0mo3S9spUXo?#+Z$lY4`N)!^4oo^Hg16MsI_s`@3s0P3#A|WV zNN(oU;|dJ~O@xM%Q=FDS!9wsgQbwJ?$2Trr5TGauv%w`;2b*I_M-|;nVfr?Ad#g_$ao67-T$dWWJ+LAZfa77h(PcX^_z(ADNo?tZ-sy4Zf%{Rxbjr7o0`SCO!j zTyw2flo8SD)Dv!Cb61d+#lN{d%JUuQY|8zGb`ue?*X+z{fq}m(pF6!0VkL^_;+zz< zO#9oJ3fDC?U zWeUr@U!dr}cz^P3_0*_dPm(Zv*Hb8TkZaO?Z{i&mMut1xLS+?fu4wJZ+)10)S!*Kl z@ijY(TA+3Tmw!`u;lWQph!NHqQY}fb|35-7I5S`Me%&mK$PF71uj$b<)kl-Yu&6?` zQb9u%S(|Z&$qqA|&$>qJ`CQWUUkO=VC!KdJ^fF?Y?nVV+-$J2JVEVc=OVxAh|3Aa? z?)Ef;ZA)70Z^EgaO38@RlCCuBpwCE0=D0t7280HE4&*o(LQB%UM?X9>SQjSum3$dx zCHJx7=LvW;^DgL2-_ehq3i>10Y^LU+t?!gaS4!G^?s$K( z>k^wcaM&dV6?BUO>e4kwOF}zqTW4kaGK!LIb-D%&R)V;0jm+bmD=sRXs2IYs|V<4tqmi zY6(FI0x#FMaLIGh-(@i_2@)>W>lLAL`h~W4WtL3Rmqm7dy%(D8ed5u%z7jpF7N>5L z@Wazsgb>oc&>Vl_T5`cEJy^4lydZ^5fxQi>TnK7MEP?*6F5$0&iA@PZandwq{cEdJhAZ&jN&FOH_l`ZX= z6s|Kz*Ho}Q|56i9@~pgpPJfhRUKZ;h?JU+>Z@W^sA6lY66*q25$H0dVkfy$Ytd>S) z>lH763uN^j7v#<%h##Qh^UrcdS5K*tXn7syH*bEa-hiX{Zf-E~HfP+-E6NbK*O5Zh zT3>>rOxGw~UX@!IMMKhp)4cKLY4#v?lMP3c@0tAHnbf+OR_RU~rNzyh_rOVirk#}k zh`1f$WPEGS)A*PgUVl*K3REc6$;2_xN;dKgZy1G?_|Ap8>ij-hf+3=eW}~A!L7R_* zEs-t3$C1sCcV!lKz*d)>p-HW#$Nz%Eu+pvM_Op|1XG-`x8obkS;^TYp4GANu_2F9_ zg$bH{%PxYbA#=XwZRU*$Hq}w}_29#6n4vmnCKOGFWD?nNmsjl4K^-3KsKT6c@e+G|_-!tZ9jTy%5ktv%V;aio+(%_vp^UepZ4f_5^rb16NWL3lAWd-IANFP1!!4$cR0;WTqczc6BpTVi6G^K^RUYg3@aRx#-6p zBQ>kJ^6IW+0uQUlvrB4$iAMkvjNFn#C!R@7q6U(Fc*pZHB23iZ5>a}a*C|!ydS z=l%YTH{bF_@ycW_T82#0;V0YpTm;WB;DTC{2;r_TVZ|8XSvu;{FC9VrpwYVF0T zb(udZTNR^%?MtaGvIE@qtZf+YTn= ztRnsm*e7I_>tO^V84W1134hWm*W;^I#!YWS$y3ZJ6?Swc(_48mlfOfKw>F#%W4=YPE_?>|t)!exT4A#E`kFeiBXT$rx=+}?nu}utNv4&fdc252E(drbq zp+~wCPVRkanfTUo9-wF^c(Y%|_WOSUTcR=@Y{?%N9qt>_J&3tc~pLE+3UsOzi{4*O4KE zKSnPDIQ5gMChNk`xtz|=v_;0x*k;I>mOQVWAdZaAJw5@ct(GDnBbsLPfrV`5RrHLL z9FlLpO3Q2@KI%>f;r$2kkmqM7X!2SC5F*>}W4Q#xs&=ozg8Ix4JUhen6sT41Z12FG z$rE=mKRJG0poJ(Eepx~ULmB+%^D$2HU@isNu3u%j#7^#e&94_u0ohQBN?Z0ilBvGs z2I^p`h(tj3ay6-q+)!GPJq;>b)_4G(AIY-Cw*a;;#Oc_X!nV^N0GoA3Jz)Il6yE^i z&2A_n*RRmd*(Mkm1ZLcTaVguZ*tt8LLDA-mKVAgM%TOB%6X8Rz(zrj?$}*=b zn^aK$A>*+1de2Dy$ZvV`~ai ziH`mHG6XbW__ZgI8@1Wam-SY?D0ze<>?HD46u5&j6Y|$vwwQFtfQc3RlpISR*9QM+^4j1lbWHf4!>m zJpc$W3BQrwg+(%xH+_E~(Q=?QI4l%FJKJwh_=bISWX)x}Kwipssk$TyrlpYUyZKwa zu+#lp`N3`7j+0tPy$@6ZzN@Ed-$p86<6ozK{c)7mN{VQbIGpLbY@hUr4Hgd%L%t8R zDDH!?0v`#C0x&h;_$PXsCw{vWRd27a$<&kJ8{jR0@6?T~i`Y0DQ( z%{p!44ir3Qcr>gCuf-`XaL;<{c-zEe6`DbF)jO~WdtwsYlad#R)m+OYK%dAb z@7UEYzIi+uE*@uryWP+OSrF@GMB*eAVWK_;s+J&fFD$9&YQ;x_8p0ZrHn@aNzQZvtO{0U+c541(nvoo z$RhAuKt+d zn9+G!#!rOo73BA$;bp1=Df>|Z!U+cSs@5)ZN3#;8mIORLLzeZQhSVXiUV_1qH9$Kv z-RrdrN$&qkFm>0Tkhsh}sAJYeewD#l{K|-2$Kp>VYt^##-71}%HAmiDfn67heP=|04F6 z*9@;rM>gl)ykxHzC`G6U*U$kJFZ?Dt#Rd-7bjjY1)Jk0jX1B{dm^V(Q3$aes&bJ|p zXoU~cfJyxfpW+AT!YG1wXmlR3tbPY%p0;|F0W#}}i3p(?k;wSl9 z&Fec~%{F!btSXLW%W1!Jv%Sl~c9IN%@BC68NIuR#ld1M#!xM6elRhiYdBD*q3QY6p z$Wru|>J$gyVlmyueAWC8`r>qGw+9Q5B6K6xg+RY%5V>$SCe#^^;riPI;9_n9bhyd7 zKK!e3DG-6v)PFfF_nb7tG2+2;U%}9SwtcF@tM-B+lh(iD5HRM$bJ9t_PPn|5iAZEY zi5`jfVBVmPQl(@j6%1-85w;r5BPNZ7e7$uwZOG5By)mNLxWll z<@}4Na{E2$9Bt~d=p13#wRQ8?uV?#x5J(sGYs?x}*#o4pyax;6p*fI=B zFishs?<~CuJkh+$RPUE_<)LzBQu4~>U1`hbfy9(US(XZ;Q0tt{+dKn_!l=y-K74`+ zb@Fob$7SaAU`DqZLz5psB!1A8?PjppHyXC)iM~$WHC8AGTerM;A2<`}-E5;mo_d}3 z{42q@4 zlS+oA$DlQ6 za_e!Om`qnq`f+=8*MKYd>s_XfQe6)wbfiTv304TD-f;Z{vS;JK^Mg1 z4AB7e9G7rq8xQ#6m174y_?SccK|WS}i5$OTw?%)*ZeZ?sAU;AGd`d)I3ZDfO?9^RE z;KF`INqDxB1kX_NECdAtsVy!tg*@HjN7s5a+D<|v0?)HkyD6tO!ZZ!r5gtntz3c3| z5mpYg8a=A;rfJvCO-YT>>b4TpggYmOkZcogTYtI`!^X;>lIQ=Wr}$g5j$ zlldkd*!9z0xR`byt546E93XU1}8e^0y^GIpAyx_QSZlVc`hfU1_YP|v+>olV` zZ3M`18aa#+QlVvo6jNdnEkMQw3loDn|9Xj zX5g^m&abJlIquLHRzu(8u$=NcVXQK(d6jsX#fX+%Qc;{Q&&>#M4CIce*1M4T@-6Ln zeTnb3afeCYr*)%f!&ns{rwTLgO_DNsPm)OgM{^YhSTw$=EEVEz^&ljm%IusWPxi?0 z(D%gxi#&vz!jmMxtT{~mr)8PV$K?shVyMg4zapBc&Y>Q5Km^#Ymspka9Eu3O!^|t* zs@sX|N z$v73i5?xij*I3(Myr()m!E<4m1D4PzGIO%F)vVw3X_i4rEs~K2^j3S``&E1FmH4Of zeL2`IcPUmMn%^5t4WH?Pnwc#v-07Junu@G`JuHvBy0XVlAnly{5T5?89AKJbSgc@(Z!9IeI4$`LeRR){gW z9+o-nJcfwdHRj+xxo)I*^f$<3?3WQitf8ZLZ*ce;gnZE)I?3%P0$Z~;lSSA4qE2Z= zdvAVW2`r=Gt-+AxabUI#c0=a%MmRL1nWft9oH+prfpLh+@ZCUp2Y&!EFNp~!z z7ZtQl)Qx}sm7?Iu(aQPlTWp}SvRL}M`gUSU@{3#Pt?Bb&Za^&PNa8+;uB(QR$#cvy zmX@cfN+gZH1Yy~%G{|jF2WT#Yhwb~dC-S2-A(Sq|4<`@B@IKxR{2J2UZ))B}E?k=S z-oamvh*@hm{3L_inSsDU0om@_A2p@bQG&C*@*_E_qXEfJb^)Bm56-at2@aYE`aEmz zzYORf33Sot+AjfO+1X(rK&a^7l*t7_Ix=C|rmw9F6#$IC_*$U2R{s+s?Or{KZAH{d zqDQ{xdj0zKAUP*bYKueTN=Be}eRM>oB2TkRCRZ6A{ITQ`v+50Slmc18U0$qKb&Dae zuHhv$RYBi;W{n3zQjgIVdMfX>WdpxL{&Z?njw=sCCJXc?-5PpfxL3M(wq9QqL-6aB z_@b@4upo&`;Teyxs0n;`C~Watu<%Vh0}YoWcu&9w&Ig< zc8>kUFPqIDPYiu$)n&LkDR%=BX={F?7SkV96FLLwt?Db#&hjrD$QNyR5n&nK!RYSa#YzB21Hht>w4VduuWD=CD9WDAJ;f-%z9M?;~-j49mf+ zgaF^adWxWW_=lJO)#LFDYU$}=n!&%1IH8Yz9QK06kWq}d9p_{Nt&Z+Phv81h=f;Xn ze8k+=D=IhI=T;+Wj=NUp-MZSwCTN58e-`(WKrKgEcpKv zEZ#}}U%|KOSFb;rghsPx`_nl->Tk27w;-}KC;$A{)y?Bj&*JRM(*9B@kqe~wOy6#M zc(`oACOP&O5g1Y0!;!OD95P}xR3KA7Hvs~`uAckjY2H9XAeZ5XCaMhJ@O~_zouttt z+Oij$sGnZwp$gEG=G0pW$p@yJv>%sA)`Kauj$B$rU>r=W`eEh~r7Wn2?R*A6 zZXWJ=R}UuZgK%36{qq!K|D$Dh)h)|mtb9G7L~|&f+GR~+a4PUF zb;3ciy*MPVJO$Z_Q6s(EIyXm=b9BmIA=Lz2VbY!2a%lv07AOSFyX-44NsKfIS9uw; zN{?8cSz`jBIu8oe1nFI1j)C|j*Rs5pzgGz4aRtbwkh=JTf8J9yu`EO+^jc{BjQHPz z#;)n4|2|is0zu*+D*1M-VS^ZhByohypck^{wwEm$8_r7WnuBltxluIK0}2xwE|@Nw z&+7l&k*gP7ZC{vtH~tS8pFIm%@$_*=&{b$?YCJ#$PQ1XPrgxBAIlehJudzp0k27PFTQ^4iHd0*)x2LCB`u&pL)79`-Bym&Vfs5DBsiXD)auZ_1fn_>l}6)@&Ie43q0>R~m6HY>cAhog zk^pI#^?dulwy(I@I9tR#VYhA-eLnu$My}G%4imxig%I%|H03@76@LQA&?DsTAh)Ws zEv)}V;j^sE+!ub4yM$)4((Y(<@QpMbD+37`O&|LWW0N> z+#l~0a(spbiWHwkO{_G+yqU}ZrEVnSgeYf@QPdy+!b&&jiOFJbM&qe=094e3;sy>h z$%1@c?*(E@P+9L0SpBFbJO+=WVkgTt*$^&KKbn33smX=5J8i>=T515vZ~)%uG}+8q zhwm;-sJ8c-vLok@8jit#%#nYralEJ=AOP3j$T{7lIGUrp&2g}D`QzA>Mk!Gfhg36X z33z}CP#yT=9=9w`rJ6F*0o5_7rFTPZ}$^%ety-f}a{7c_T z&d3Xo!R-$!7%erUzk5@h1KSI52mq%2jS~3)5XLLuOV#of2s+8X4zlD#l2oZhH(p*s z2KEmg?1|)!DR6A$JWv!RaI5T)o@O^@hgo9EIHB1CF(vhvq3o2Hz05h_bpxlUvU*{8 zOZ*eGHX=BaZ_VMR&d&fdvx&A@7$%DQB(iRFr}m~dhLHE0bGsGU90f_I*4nCs!!n5-Ii|LI%(__Zrh@7z1G5m@Wgvt^wLYPwpy3gD*7d>xHAWnqWa&-v-E# znSt*fFvl1N_m@t>CAI+2cDV`0ED#}3tL`avS@{(R(GKdE57IZ~GtCy!Kn4i}92f97 zrFCus@5SR(mEpvw1xE;%nI3bB+yRx1nv_C9@`PKVMk%z@4ns+;h=19>@&fD^`I_95 z`Hm?|EL;1_%^~HLOTB%Ffc^#>#YD5<`x&NPBmSVKq<#C9O-u9IT!yDsyfzv%F25DTLJ}aBxptPu%6i?!*e?TRW zmUL<9y4oZv0etF_#ySkyXtxW)7ybft2MNy7wazazlpOL0zDr;(4TIj(He;;~@l1S>aHIP9P=BZ*c)?@is1luG z9B^x)x606@&Ph?*bWcMh`;N#Gd+qFxhHb4qN2jv&700Xkt(s0RdkWSoUILh}vZ}fn z)dvFZfiGI+(xCGwk$J`zg$hb5qbFPnCVLHool=-|8ObM#u5RvKOP;qbYn-P}XVYul zbXxDCvi;*7=mq-Frc4@AK%)0iu=$}NY0OR2x$^K=E<&&%Ci;v=rm@)S+wW2wZd_{p zTxE#(p{**YB@Rg@neZ_Mh!8iY#eJ@`b%D4&&w$au(Z)lwfO}w5uJ2v`w5SI=l~IZC zaPEh3y`rD#SSy@PYCj8sN57i6=SY_jB4>J$wEgCB#fvA-y_Fi~YFQ$`{OUNb$r$;Q z(M@rMQAO66k3JLwwfammQS7@+*?K&r znpw9}!rs23pumuYyt>xIBA`trr|`ScWU65Maw>Cdoe(XCj&#_lP+XVW=2uj<0>{O3 zmSGr{dXNqQ1ukL9-|>~3Sba87(qb1&5-p);biuQjSu4V;%CoY$xc>Dt@>j9X`5j?e zyRIf%rZ{J;xb7zw*~}~JZrlUukzN|_v~mg*dd5_AQYvp;%GEU0V1Dk16;Dt7gop$g zkW}|@1o9$;-U!H3cEzq31j3@8f>c<^5>BpFh6_w)+3??;`I#}Vvu+Y`U8gcb-^#~W zp;bEbxwvVl>Qk)O^xw9+e8Y9Hx>R>t3wN<-r3bde(r$)40NEZbLs+DTbYQ`@uO*yB zWoJmhQHMcfzNo!sgKP?0&~H*zRCYkHi8c8)mqNokLp5~3e-EO@ zdvKB@T5Wv)Jz>$jSpQ6L=D;H`IasS%&msS#d(~~b$FXkPbe)@LkVzVa7H`V0QYQJ{ zCeJxO;JHNdIkYqLn`EkbLM+IE3_27c0VcEiULIkptIq*W`Lzv~OPDIxh`(lDn*im) z@GcJiIfk)}n#>AxWXG`im&}!tMl?E9gt}->bp|T1l1P7q` z&s%wULroaOLEsvONNHad36(2LAzKB{O_T1IgHPNU@iiSY-RLVyd4{?bgXKZcvaJ>C= z52i$eFk}Ah^6YMu(?CcjrzD>~vaYQi>WsK6qu-j|amy%;&-LB+3A`$G`w?4C_b(Lf z3K0feBE)rFyP;x?cWPq=XI}O!YlE$l;tQHld*5d`J^YJKOC$?k|4Ln-zsEP^)6IkK zs3Y{RJFCn;H9-EzL1;OM%E)#)^mXe@uO|#m9E#0ERbP*>N7Ki@tk$X*&y{keQWc30 z>wJ3SsZ$KgOkA~Gj1$`GIIBcj7Ve?1`yH+g6_9?JFScOBL`9u5nNC{wj0JqJQNL*> z^3S79iPUHjkKqL!B>W_9T&WSTMnm4CTswPKLAzmQ88N+q+U^xioPf|$SB>m!u2?DF zCVT5Xlk8O%1wZwEiA3U=)N5ei#Ryht5~wB`CnO5Yo&Oj|YDTW;|Y`Jp$R{V>j6E+-O>2}hwbV`%;h>GgYOZOWk zPqT0Co8*E#%V_$+&()D22O5w71*RGvA%fpAB{mSzK|U%LlCDiDLTGMjEW1)QWxTtV z_^!~Bp7(C|xK(9paZ-3v=l9J}ghq^e3j-Gosb;Le`tF@Ok49;5UR^4^(D^9toOYV< z%e-O_dbTh`N!(@475nE$MAWXKp_!H&u@k)#*Pm5Z@*wILSkgxK%$QHDjjh@ z8$EX9uM#Oh;Cts+Ia81cEH3Kv-BaZ|4M8ErnBV(84J6P0$ecHl$RJWxc5PmH-qezL zv&W9gML$i@^g*Ql8T-Wwe(_oKPJ{9@w!PQnm^1AL*TMN$kUZ~IJ6L!LFs0=k447!H zZhO{{jMowz=FX8J6E}s4q9Cbt{Zs!mZc+C^6Duw)UPiO?bd@F=Bg{J!5k#;&qRi^; zS#57c1d$?N*{|Iv8+p&=6!G%QPg6y79mgd?T5FHt;5w;lVsoFJe_HaFr|nMt+!yq! zZ1IwUCrc-+ZP#dd6f=asyMjWjZ-0U^k(Yl@y6w=3{xZoO9UiG;>6%YRXpz~J*ilnO zOMi0RIIIoVHC(J-I9R_ot*eBl-!=5lFthn;7fKn;V1u?&>&>5+RjKg0lQ%IJ?B(v@ zt!$G$_o-S-`A-pPYzUsWXp1%U%i(M(p8;~fmoi=?r~in)zSe4~PXg5|v>%RqP=&{k z%pBLu!r5I#R#ZPAoAq=wxEy4R%;cCk4Pw!stUl79+c6(p+6cUsOdA>v2lBAi>RCxsKG}d*IQ(}G~@Tp zrph5<{!yWU+VXkW?BS2z7hrYSr0RBcDF(JQn0G!HERl-PH;emjR=>m~n5QCr$Z4*| z@JwpEcQ8g3%+B<*LL+Mw{Lw3LsJ#;XS8DU5Oq$ZqtXDcL8=$R{5q-&*^$jINJO^st zeNR}Q5QY=?IqchT^{-Ju)mok8`wX-Nd<_c+v+hUQI!T*;hbb86!tQcVS(5cvQqr7Z zAC#K0{cI!zND>hzxAV?gGi})>ozs=I+=sC^*iQ+wdm3a9lC+}JtTYkkZvd(|O12WnyZ7c~DOQXkL5D=k03G$iyLtv?P*>8z?w@utO2L}6jA?iF z+?^J-S&Z?MNu>^VIn~#V=Z#VEq+hLT&m7bZB}k)*7Q< z2Xt79x@^rGsWfol&%=t2X4*vfGBj>pLfo*=`BkJs!|hwdZFEYkRu(I;3_ z+_%9`YH56!4^8H4geQ<%Q*U4>iL2 zY(7af3c>$mW{k=7p(-`4AL_v{9vK>${^XgN=n1tb{ZMJ>YJvob6^GMn2_T`=ybu#S zdw)LkP17PMxz8rh4T0_&OpyT29PvU`tm4ppte~M{#(J{32=L{1jwyB`EYLu-WvsE z&1<`=F)r;e%Jlt(=?q=Fco|aFpPCJ36{T?DR2R(S`(<+9HWMVAEG5B=_Gdu~RERdf zC$b%$4v7R6uzveaL#wcX+k7=4#PqF6s}#Kx^jPoi15Wu%uCmghU&gd+Gkf$3>{xtW z{&-v6S)!kHw6g59*u4~jCgjh|$h{f;eIIX79IR@K`N=-33e5*Yu!00}h`vGN=-Ldq zmKyrDbDf5hPXLRlrq{k!Rl%@t9)=Kr0>PVu4j}vO{JxEacg!Lr5Z0QNjx2Mln zpd}Hm)jUR%b}moyi+AW(c|k%;o%sNN4IO;xHLk0UI_h42Lrh1DH$t~@7o@1vN#nnl zi1kT!d|^C>jT5;gLh2B&=s*4Oj8}5uJ)L*0li+1u(fD~Bw$%w;J;@*%$EbJr5kAk# z;1kxm#j66ONW8+gLXwLOyqN;`9Ask=wKO#P8~0SZ@b)Mj*{u2+Qov96_pfC812YVW7Jn*>Ql#}Z&@#;` zw9XpLDyHtTLWsy(54EGeG*G3{k=#=WA`!I-SUahdcGZg{y2pU%DK&ISODAO931A`H?m+~(m&P29(mykU17!b{^nAj#^Z?vR z68fi)s{o&gg8%D&K^a`!rsvup=5~Nt=?c;kr-7s3)T0MqKmf_p-uCvDoTfp2E8F6|qOvH5l+xIhB- z3;uWD3U4x-iQtBxhGMip1g6~HG-6piFxB+JJt9wMF3Mix`bKc(z*ZypJru^fyw+2`~J^i6PK2=)-Lf`u4 z0Hc5<4g{w#?a|5pqz+zT1(Q~0GFE?j)xI&SGXm?h!CTi&f1Dx9_&19`JAx+0gSTg_ zpR%}hDsN6P{M6E+*jN>|LUotmdJJ?(lIqE(y`kL1SB7UMyG7-QmL9X+<0?iR=8ryQ zVY%QL;GAC^p3(C`j3%SQ#37mWj~J~MNMw7NEtFJu&ZMZxT`Iy+hkAij$iS3=xpT&c zDg1b(Q=p(NZb>t*E$aJ4ib*ynJcK4vYUH|`XW8t`OW$92hNo5D;@hq@JH__e!nH!H zyB|rPl&Xj{QvSI2?>f}1dwv{iQ z`DXfENQeH%d}WAFayWvx5tK>zpjuY{8hjd|`^3n!>s!yJl(HC~QBmDDanDCz$oJ0% zGu0E05&(TK4)&^q#|&vmkP1XcR(CmLb>6(Q`Bm)vu0O+!Npb_3WEYy8z0{KNx4JnB z?qcWP`w8)(L#x<+(`gpj9K(PE^5CsE=zgcH5UqEbSBu{0XIteq)PW88Zn8s09j{>t*x6N^H};B{}lZJp@IM6 zj2v_)6PV{F@$``dIZ}b|pQ^i9a&+E^TmLFn5o9`oXINVjS zoVZkBv(0!fJ}jDOL%hs(2!qFbHE9+qW)WbBtL{>0-f~25Eoud21Vpbi2k2%E21IW+ z2Uu)Z5|M${g;-wdZ!f=S&_4tAA-rN_FQ2V@NTQUV~*+TJ9=6MAkiS z1dMID=X}-dS1}`YrNk?veqluUx^%i_0W(5EX6Ah>=tp-Gi-2TmcANy4`8q>votXe; zR=yI|(ydouL75cMx-}gK_k1METq!HpjWbddAC(vtHjTbyG-Np;- zq3q%{W|(zAjz4ibQv*W6N;c?k_t}~bS_La&bc<)<4xW7_+9@)J-zP~tMh@&cqqY!tbYn^ z^wy=M3v~%_9rS;XI5^L(kt1^56O4QR)^#=f)ov~9>NO8H)W7fYobIxepC*d7vL;#s zABR*EOTJG+yW)HcSjua45RMB?upF(EeMn|$5Dx#ZTgxjCBDbbZl9oM(QtLr_Qa+u4 z1D4=ENsthAx%T(xe~-@5t{fN>&*Xgrcv3{{WhHmwmQ@`vgE z?~xpB0ToiiQ@7?nLP)-S#S_x+B>DBf0gftO@|D6+EmQoj@*_Z4s$bkqzNM$+o{r9Q zKAmm*OXpOX)}}P=<^StF2WJNWsCsP6{~Pm(;A@=-jYH!9ykR-omF8+g_-FiJoOSj+ zanA=jbBuRx8N+-1?3InJQcD7`SaR9SZ>0^kJ5Hgmq$Y!p_4fXw*Ew3Jk(XXIgyR4J z`%9eD!F_@7c(TD5$G>Dou?P35nzSCS{;x?mZ5@ZPj*u^+ybQA6#%O0=o+%k3k8ntq zSb5I?l2{^ETde3x*^oz9p)lJ4@VkHS-6AT|K_MO!M_!cb3T_0$*%o2G$yH`IZ(1~N zPMgQqX>UZ8-o18x+oE`zm(a1}t5kuU-c69G8+h0=k!NSDuqtFlXTt$7ChcjP(4h8j zdZUcpGP-zrJ0PXk^Jw58n@xy>>F@m)5NiJ0fpX;yPa5{5A-F)oXaLyD(J~h_BbK$G zztoZH*sxSkCvaj;pM)x3$307iGed|znu<}2v0zaNf0W?9&d+)$@T zdC=((X!dyv`YV?XRk6U~&;X4Olx^AsZ47^eo}P*^SYExJ0{&vR`9KH^AkDzEU<2vg zz>)@a*?{plEGJVlgT6~cV>@cs1^Pz;4Q=DFKO94tF2BjTIQ|<2kx(WbSXuI^BL%A! z@73RyU^l!zHIIW7Y3Pr?_g?~1ZN8KUD8{C9*czKc)*~3uVGPurqamZ4d9IGW>$-VK z*!oBU;=`WM@y%g&IjG-434R7@CuITl4V)?vW@*1P6A~i_U>4=#;6q_dOJ!fuN1wb7 z-rQA?atquAV>4hlE%t1h@V0a3c(!5LDgs)JF&E2pdxeCGT0iMT=!1xL9CY9)fbZqC1)_Ff#NPBCWCU8K!>b8!?5f`G%29onA;0^6e4 zOJDD^%~#Ut5A*(IZ zD(_QpvMGaay5F_;K)?=vKr4-}S0M2xz#5mc^Ce9GY97gJ{n7rd<>B`{%Vbe;>KspR>Xx`$QX3 z-#}MlMngsvx+{OCF8^J$GK0?iun+Khdi#Z6pNz!nvKcju!Dl7kk_#?An%WHkH=kfz zJ#2%-FNAHL%dCpPK9+V%w$v}){!wnx;LQGRnM~>eIXH`=l}xM#VFu4AY8)| zXV@uzft9ZX#1g)3GTQ;%MSN(@US|arUkG5CIw&V5B)#u?bjcXv^F(s7;$$Fe?Z0VdcLn(vG_ECY^Bc(kFI-%%&Wi?n8Zb#dSDkqx%23UnZMB}y>` zG%Os{T-w0(izN3-h2!=+UipVSqg^3c*7c%upl#)1{%#%d*)z_db0;AQ|Gm;%5BoRp zGH`zN3e96iEH-Y%@v~OWif8$0KyNVMaERO+UR#9BZ@ov+no0gpr>(rCje5l3n3R`- z{0G5qowV6t!1tR>YnL5$S{&?*+n6iWM#lKP0uGLYbg)26b_J;7>yZNB<{}=Q?aoe^%Wu2^}tn4Tx>-WAXeZIfH9?$8#?{SUS^}1fy``q^$HH5+YRbJwO_5+W z`h*qa?pD2b`6om8V+uO=4pc7ms*mw+xrUe&sK(zM4;$GfUhYJ;wY?2dC;!1$#&R*P ztXb1*upJQKL1D*FdXvWOu?}S5(YuJK#0}Z;c5AxckX`>eH7GR>@o2Vgy_ywqhu(yh zuz~ONwGg*g*oE0O)yLrRk|LNY)9Qk{6${1#cP*E#naPGi343u93XeBIrqlbF(6tV$ z?l5y_n<>$bwf=H1+iQW8^iNN8J~SRs#R}T@j>H^q3G1&`oRCmr&acxvz2Z-irmRr5 z{yGP#E~Xhbo+v#O><%kzbx$erS&Yi->>W+D$puaAZ(BHylQdE3i|4SXYB{(M-5x=r zv%*U-d%$o(BX8QbMZ1iBgt4D}M6-LhLyWmK?qpw(T6l&O z0!!7$+nZ_K`~AK^m-oq&cQI5b0(NZy8+M~y$O|`N1FU;PUTG=R&iolXu20>yp_oto z#*A#O9NXW|$^BX-Prr?2nzQVAtO#KG&U)JrUS zW9Wz0SmgTYqrbW_JZwu1UdixDYZl0pc)gc_eSY7eu>NZ*?AKdk{qOkfuCA;<0tE?D z%6!TXr!6@mdXTBKQM6I55ssu;A{ix59$fcpO4kHKt|%v~A6klKH*YFr(888k8`d}u z4JKa47V&+b>?CqY2cDMZn~M(!tmBKVx8gpR@_#fm%C2caLnF5355%{qkHxMV^h$g= z8EzK3&^J0&{7ex5V^Y|=(mqAzUzE(@R2O>>nS(?iHT!qoa|T*Ia@m5V>RjjWQ$3d1 znp!)E3Z!}7+bmFWPBmJ-Ib85+r=m{|Dxgh*+VuFMyZm%oyt;bAp9RrcCqi^?(R0!B zP%a1efCgw{VbDTZk8KRno~s}H0)5QiBjrOMjci8f=NtW9w?PRWl01UX|L>E1k_zgg zBBNQb*JWA+40(%)ypq0T000KSS=}-FAO0x-pN9bW8vULt(4PgGcuoLCnhU(8sR(!4 zcv;s$vW6SH-%C5GoCEsI9a{V6!pgtf4}-&z-s}?_i84215`3&}@J;mjtDSel>bLdt$J|Nv(v(^tB9la+dbq1Jz<-Ui;WTmdq7;u*eli;pVSGto6gEN_9(HIf?|9%K0Hw)co|^Ihx7bP!_3!sFk# z7p;o5lFW9N;Cqi;9!-|_$>-6}1I3z-)?XyssPwU3VCxXOwnA*z)%BgujCE2z{?AZS zo?1nb(;M8Cv7RE!;43TNqM|Pfrl8e~mH8;gSMf-w3p{S1uHc@}hq+tUaV14Uu1!Ey zib+RLR^1Y*r~la7Dx}C_h^5m5jpcU!=v$fo+xG!Qa`k z7C&j+w^l+Ahv-U_#%F*5q;IqHzq0}&mfoIzl^u|oaH0jFNIqW$sxFacft844>&t}=X2G?7n9!DPmQacW zZvMN|1>BZFs*DVOB-n27ZyTkIEc;P6%#)`r{+~K1%W35jBW`)Y?`#6n5-#UR2HLJu zF)H?+)D6RFrVqBUwM6Y^!2vqrI*&>7 zzY|^K{F)jFF7!|Dr1wo~dWa$&cOmW5S)(@gxJg#>*)!0~pM7cNEe*RuuOQ>}&zZB& z(v{kWq*JNPD88J1#HiGcreAors{*PM0782m{wA51!%{ZCrLC#Qlt&$1Jz?J;dFBjm zuv3x~g57-}|N8By2Gl{my#V5a^PmDVV77U&3~d*gg&!{$+->Q;UY)z`tKI}U2qJ_3 z-Y@TqZ^tBQ{wRJ=$JPfPd;}iR6BS$wxLZ`w$yf`UZ*K8fjQ8*BW4#Ltr_<=AHk!$M z306uoLHawV5uULD3d|gfb2@tiLbDa*z+g3dtO95|v3O0agbqKgv z2|vE|{YoY5M${L$+98>V`TURzJOBI5%GA?=rnH-mX{CjC7~!Yu!qz!DLs4NHHzzCw zFXk4})6#?2PVL%3O!E8y=}E5$h!EwgNKoAt`y-$MNX4GB^otgzT@fF@5Q!fy+3QX2 z4T#<0&Ek@Q_kp6kkq3Ihv%jm2?LilUnXyA_zG{h;E4c!Q=^LW8%VO&1)bbW|JiEF( zGd>1%N!mn-{$j-`_Gh9hzKY51zE)Y8E2@lx4q* zV6vNQlu!Sa5bE_`PI^PDJe;bz}sQNfR zF-6&l@XE`q7MAVH80@TB=k#mv0MqDEa@(>Gyc>7;VWmnl&-ax$sx$I19p~#bw7oj# zYPT8dX1G5oX*Wx>aFQZTkFaCvV;|6@@sZY*eKOhFIUKq6vT;P++Vr*LJ_){|`$KxY zj3HfDln2d~4f?IxA|rUejx9%526vbL3TLOJ(!8(X{(toMb|1;bi>t?Dk16wQaPLN- z3E?Puk@%lgez)E2RrZ7m*TOAOl(qNd?8Vhd2~2nj-^RwZ=#2yli<13YN53_ZhMTdK z+N*RUU-`z&E#>(pHNS~ntO?P&JC@HjBuCdBu=Bp*fLyb!4k%Jj~b;ca*CLX-dWn8|G?FJXS=Fut!T^2TE%b&Ir^9r&n$ zC$tkE4W0!e`m+AY-J&^)*sHdH=R}p4D^@-q5+cSP>kC}W(@FGS$zxvx3vrBU1+NYq zdX0zscTiRC9!suG`*)BA?LW=(yzz4L=gOgsW~0DM=4qZ>8TBEC+7h%eV&+--uHwzq zA)z2}u$PN@^dxo81n$no4LmRF>3>#HVfXdD%%5T$oFsWN-sQjWaBygy*w&dqSY1=l z)YB42Y@YIbt$wV@mmB>@=KVv|1at3+=7d7A@6(3v9J|fyduXD5q+FBQkVAP>r7-Lq z3z3Y`kxAUZ&X?q6XL^;9Pf7H_@0p}{^u60V9CKZ}j^)|tm=AubZf?a5q7)-zw|0&t zHy)t8+sOrBzeq-+5BlOUC-fFuoNhX5vS|JMLvJJgiYLDJujSia#3@T)dX9*yRux0_ zBNDmX(>QU#Cvm&%qb#+=C3TB8(|%z$R~j~6BNpo{Q#d)QHouaSg!W74_Nd{!$+=&g zqb%o1R=1F5atSU8bW<;1jg6%D=zOVPDm=y>o6>##mat2}w8_~WW2{^0LwbXD9!gjrn>{>cLC55pMDop&%onINWi{uR zJnTQb+C!3S@?wg(Fp9w;)(uNz`i03y&JVS!YM}QC-DsdUl6hIJ6L{Dn&RcG|_LyL` zNg`NYUSrd=b$k~Yki&RT)B%@ zib#b z7ODpRdv|-;>&n~GCl=m^^Aj=N4%;8Lb>TlYU`y{^9f6-yST)NEnlg6o*U&1}@8~M* zQx!5b+AtU%ni)~+|5EHi@Qga&!x}}8*dF>XMCf)8<<{KPoWWx(^a3~MnvOoo)|S?= zZ+wkyV#Og0<-}OJcA2><4LX1j-KJol1(gobHl+AMcE{@0S)`WWoR&BrOQ(F@P9U-I}gX z-kM-JFLszwbvfPr+G1u?pjp|TyZzz{hF|dO zvd1B9x5-{j7^OkEqPgKhcdcwx-4m&X9|R^ov`FyJ+t$`)KB3S*PlSRml2L(V7HBEz zO>#Lb)`?=?^fz@Bs)h{c%&gz7lUq}ajaqie$6<%ed>Wp9SCE^ET%i@78)Wd`h;I2O zCjlq5W_#ORz9_y&_d#t1cBcS8?UEhjyq{G$*nPBn9)%O1OtTLD>d&523ZWX0z;zfp z$7GSy8s`#8H<68Va+6$Et38CM`H%l|rD7mPLe8x+Yev3SIYn>X>Djs3XgaZX3h`T+ zJRKrdGt|&sszouc1*}nlr`V-2kkpmknV-7UQYwUMZLY<&x6xAC!{(r(EbxU)!2U#reB1nin1ed;=JY zv@0Q*X408$b|v?mB5}yf^^;E^%q;$`4bszr93Bx(pxA6`wdzP$hf)yQ8)Z?NLZ`dT ze4DrX$R{LB2hgV5JMLg-lN|ml;=czP2@g;n@!j6Z2O@bWUXf*Ou+&j4fEc2dw*+g} za3?S(&e!t`Tm4rUbf;zKY7t2&77>sZr+i9E!%sp1TM-S|-;Z|mMSSqki8P;-a3qYn z;wX75b>Ytm8|D2b>akb)PS3X;KR4Ar9?lJqf-aTWYE_O(tPNah83nAC9XkcBXZy$d zhe>u=Yk?FMLD8Ilok6-aQAhxym2-ZAz2hOPSO-|gPYDYZnfb0)xcGPFF3#TCp>&0N z!@pR4j_IHlLn)Yc*UCo$n?^x4bgSgh9hMe z;bGu}Ab!Z4P$ID##=(CARrG@kBYVZ+Ko2YpN~)6pcVY+-h8&@8wK_<^WC;u^(T;va zD)x)^U$jZ7LYF%A^!};yL74*~4`P#oku=7~CLE~}Km|PLl0qj@iXRj5Z`~AIi#kWe z(de1u8CStaO?QDyDt3Pl|2T`# zv;$95A~9*5v-?AQaJj++QlTLcv^+JGxWyY+4frsb?dZeHD1H&`o%27q8x6qy z=S1f?jJ_DCSm386;dI`zc%V?F`4CP&@0jYJ^q&>YlP?||wm^B1@@;@bkF^hI6HPkH z#LBr^TrrSQ4T+E`{c&j_>v&kLHc(d_F8mK{u(z0|;Otarz4_a*xNc2!Nx+|hFqP1Z z%6yBvc)Ac|)(9f06BL!xd}{pQf(XUtS?oSD57*X&0*MI(R2vL}o~&uXyu1;xA>_Jiw?9HMzkvZ_7>DA z0XWWLZ<&h0&uD2n^Q9SA3o|NU&Go)^b5J|l*vNvMQ9am)CmfkXAl6=X_YY7lesEbl zK%Ezf|I4fd;xIM7GdPfCqv^njrxd$&*f6eEjvJ&*PUU~`jTYb=ZNSvVl{55L{NS>& z8zAc_l(z*^$&(%&^L1CPYSh{d|42mQ8NeY9?{>Rve8?#w zwkjB@|LTuRBIjzISOFZJdBl2ag69QlIrP(Y#rQ4eOC8e`*o}}km919k@J$ZjfcXDe zD&faD?*fSJA}0TTE|_3%je+PdVoiTKEj{v9j&HF0E6zfXW^2NlapnS}^4|*SaLm^C z!f79bc6{Q-ImnrRE8Q-EzDydC;a>zHkHct$2UN2DGjB?l%Y<~r?^x02?FcLf@Mk0h zv!J5aQ-fyy@47J-)hVz#xMJ*Zj0T7dm16>e9q*jiiBqdN^?Q~+@WhrYQ7@SsS@_5Yj zCU!o$;L~ZtpM*#`@VrO{l2UnZ)bCdGGbb$+83ZNI=!`W3hE#cnP9VWIXs#)$I+L;D zu=1?H?q1saAE<;~ojC^;=G#$IwzwHq27mp@^8o`Kj34>8%S+m2*mIg7^z@Ep9w&fwYM@+n>>(MgzM@&DQ@`&&p5hb?cgtG1~P zk9~}&&w?R+u9letlq^v6*g7;?&xD^mRI9+heA&Ia=d=?LH1)5@z8hB{$vDB13lLQ1j4W(5E>>JPFMKrT6Lo3dj%?;viuO;Hw;klA_&&#CkGP&PQSJ}Yi21ND zDL5?%sVkv8s9wLN{ooSHG_!?!<^#lh#D+bl9=0W|;b*+&KSiE$ z2EQD0wOx2*(4hfN>=>Tl#ICf}>SCn-cKI8EHjmr=H}O6<;4&TjR{zehavQa~;vb(a z+b)g9Av^N^6g}Q+m-gI$gPobRpcww@2AsvU{jEb&*kSN|i907ePPEfx{~OL8Y@0MdYL zzh>pwh;wpTs_p0{e)!Sd3>XYgahUBZ&P!=1#KC zKEkp=pVcX#!Zjummq@=T3Ihf5c9b5`DpZsKQHoSV?HuzL&;R9(cl^>7K!wpeVMn0p z2iFdmbpJ+5VQPgV$eAq9a-Mjuc6S7@*)xkGx?FfVP+R~@U7|4s z|53p#2mw||+>K&>7LX%T*Gh6B$56Onj1=?^&CDkZ^LOaK7*Bz?F_#Df)86RON)aOs3vpYYrD z9Gw4KWrT22{#~Kz{%n&S_3D3@PioA`0YD&!h9P(NQG)+yu@dA2l7F=c6c`Bwi|r+$ zUI2rHVaOjk7PJubrqeY_gQ|MwhEOPA{=WhP!|O+aRR-Zm@=gDdZALZx<{-mHD_j!` zNK`(p5o1T3N!B)(|33#VYM(lA?ReGT%mYE!D>}{y3h1Q3mni?aofSlS0KP`cQSu_c zuR=W3OJ6BqCbd2K+^*|J?;vq`W=^U8Lq?wKc_3AH#U&zQ4lDJVnx-*kG7U|Bj*T8Z zja-V`q`cP|xB!dF3H4p^$me&T_ZAe~*d%!zy zt*xqEo}$s>?d{b>O}FD4aO-A4%+mHS!Sb6h+eua9VAaegx& z=iKk4r-++2Vd*uF^xu(>Hl1{TD!#U(A|r8;X2mZ=E?QDW)?T-~cr1x=dvY;GmU7Ia z_$?yNyy1z|!OnkWi`-NGE02;8cm0-@JvK_MO$XE)u*a78HiG6-fOgrEUy|-_JOUIl z&ZI4%uEtAL_|=sxKzc?yJx!2gB`*9%^1G6X(?);5$S&ZO zE>KXM%2Ct)I1&@qCn6S@yeKL;h4NZ#_}uRs`iEuksac+nEyTf>)SBXZL{@gW3bsr-Lk>Nj9C~I+O5uKqs)!@Jl zy_K_X{DLj!BSb@SBFjPdsA$iq4EW^V|2H`f7!LDY#0GrjuK*_yH?D9&%oo9T=~RNV zSAi@ggx~+P;?x1)+G3PdoG|YQH7X#T%_RzF{fCN(-vjZNjkSz?4k=r!R=n_EvW4LV zR(t(auqlc3f-TC!rCR~1sL z#H**72bw%eG%VK&)j@q{pxt|TLQr-B69r#)?NSQ@A#c^k>;*T*&T93)n-z!n#V4bb z=*Sewi-VIYnc$JUt+>Bm>F$Fm7N)Vu&&~U=*-5db`pJVD%{k4Sk1$;$y=!9o@2IKN zRW*ig~r_#0%d{I&pv1qMpOSbudYzJ+J$5+~7_3s@wI7AEHCAZRg|46{AYs zQJWoogCK6U3lep-!Hlco@b!ObK8)??LJ`nTJ~`1m<@x3Vhr#VRK6L^hG+MVO^HO4D z`91G8!OqU1=Cdl>@GHwBLqj1x1D z8z0(@Ap2JKEn~U}%%BXa_!{m)|5&h|6uI-W={0V{m0S6>MPN8YQyNiIP@+|J@fuv7 z;~Hjs>`e#5qiYN^5#J!~ZwwD;c|bH!iE>&$sa0b~`-NzI@Eb@&YEUdeA8U-`t*D)+ zXB)jH^0IMF#K0-zCf*}N|ICv2B8j+^q|Nt({n{~e0G;*{U(J=<27e8G$gp|lIOsp* zqU8GJC1nnJ;pG?m!NdRi*92owi0aSBgXgrruSMT!8=2X^li=Qet{So$c~1~G=8n}W zA9qD4X(t25t3;i$;zu+Hr_l^{&0QV2D64dxXT`79^TX)gi{zh6`L;<-nLD#U{l)(K zA$3>%`*WXJh{cZbwqDLxb-cuXBx;-0yi0F(8xgdy>*G0a#nLb z%V1`Mw!rfWcMXfhX~u%DE0$}k%s?-c<-$Bm1?J<2%-1;kpy)%HHt2kS`JDJ(Hae*k zmS3_&VB-?*zPZajk}-OZ^qYoW;lL$J^HRc^4T0hs^E4malIckx6#qBZ@@8x0cE8hG zY?5zNiMGcBLmQvXWROjM8#Or?BdM)+={T7I%@qE1@;zchFhI=KkTtuwRlY&B-8oo= z^c*EzwaoEK-k=urJWqo5yYwc;c56yLN-Bl*R3bFb(iYvhU{r;wCTh}S1{1@Lmx-!S z*urlp1owbiA#<+4#rSBiU{e2t5BU9aG+pBeBic{r zzIt<8J6hDvKT@<@W5`)#rs0e3G_DKKHk_FN-is)SM>y&Ewi2v)jX1-`=-^Xj;J2;O zS1w?Wna12xM`TQ`XjdFg*=Ye?Qh=?)`6?mVz!V86Gm|rqtHF36T2;e==`wDE#J!?8 zLDJ6*WK2!flR1z8*>#~}SIRogCqLXS*jTP&r%_POzq#Riyj8S_1LWzV;>VT4cJf3ujU>L4!q zw&>Ms4Xq4Q7A%d5kH5j5_An&R4V>cL)$01Jd$Z&iwvwh6tWj1a%eWK1U`(FqreyEk zLsIhe&1sDrQ4)U#2E*{*t&9bfW$2EEGI`Plu=SmnbM=76@Yw#oaK4={aorUq7LXO@ zFWqV`_ei^9>9?4b4MVhmrZACE*(sX~TOy_Bw5~eIbw?UX+#&1-8(&Un%y8m=4e=+r zv}bImRYlWRD2I#|R*z(Ol+T9=h~+#lk&jDuq-aE4*o_FFYy3iv-pfpX1F_y&k`CSSlfL(rX5N8kD)x?a(na}VdkqK2OW22AdfWQ!GY#%! zN!9XRHSTyZGCE~q`NDjltbA>)?@YqDU)2}qB140LZ3FPrO$d3 zIHa)pZ!f0ULFMNPBT#oEdhN#9!MKTb-Z%N+gP5)b8DyDPcv=2EJm^7HJrg zJkB5H7w%4Dl!NwPkI-ADzi{i(H;;7lTT!{Eeaa+T+fWR?P;FLme4Flr?DJr>4!6|J zg$%$*`^G1A*i#f6{y4~-IB`Q#kU^u#`B=?}=bg%?lZ6w8Jmbf{Eoc+D1U+3ZqMKR; zU|qWxtXAWtEBeY!8vr1tUw_8|0YB@th3WvqxY zo@y9TZ=d!FEN@KW$48YdHfqj12DVY9<63OE12wM{xk&QuN&ySG?UB<>8Yio@tLN$r z1pv5?ukk_^O6sEgk41=zdvnZlk4E5WRGeZ3=q*gOCkXILj@0Z$&lvLa;T>*bF%aKr zK8xWPYL?N(YsoLlN)$e}A1y8_80bH(9yU?IP)0I2_4_&0hg7f4Mw=7(~b4 z;o2T*6Qcy(3b1m;xr`=T52M*fLN6PK7~V8TJZlobsyWsNwH*vcRB%Jl1&WZw63gdL z%(C1_RQeHi8zIHF%`iY%lVCA3bL18aS(3~IKmmwgu=`FGC#FIx7V@k6bx>h<#_k3YcW63S(x3b8|>(LpNRgzBjp z8&5ZZjnf&l_51@^uW-R|^U+seKQhQs&_q5u3>k-~k1^pt8O)^9TJ-&h;t<{o0p*zb zucKh%71LK~c`?uFba45RAi|uo;vJ2#fIMLfUFsSs`iuAnU@C9}9;d^7e!-mue6a<~KXE)Ft&=%U=1no)O;YBTPgJ=eQjo|3=kcW9!4R>6cfYo^ zolB>Jfn9~+rop3^K^I|_^c%%E^cdaAf?8I$)5_&D52c%UigPmTfVHD*@B42XcY`ec ztK;7G`rff@{&>>@_^ zZ>r*<=Dbe>o9G`DyDV=icGaFWg)&N3G#zcNZQp(u9W*DP6Ec;7lcCv@1o6rJRdTVX z1EjXUk_{)G_*Z8056u}g#9*v`8{rVCEfe`{O8XpBb4$tcsmkG|W}kk}Vs{Z7 zBa^+O*$g-1;N5an#~|J#gA(lxcFT=o{~`0M#oeMj9U2}1LFRlzbBvTQo(I5|CZE4c zMON?O_Ge!%22C7TA}XYENOHlm=PLYX4=@Ecuqm{GKx&~%0f{|DQ#?$}>1dA2B;^%k zwJ8-+J>)g>O%`0+dxDdbU9!wqLv6k-;lm`-HEQFPNJEkZt>BLO6N`;8eZWOYzLhDy znU;IE^9c1>vAYPWMKSkKI~!#h4%Cc;rbv~hfM-p81fJ6R`bnVK&s+rBjjdiv`QalK zr~K`c`N!^cLC;*U-%06({wv`S?w5_Pw3f*(?Cg-B_Z|TJNdX%jys&v%T5gqUIo?LR z=iAL)dc~*R^13(-!wWAFY5i8h*KN^-3muM9TX~)2|>mK>S!-!Q{aAdAD~b zYu>@msxX);d8|NYZh&_9I0duE;tL@v^9&?d1}FQpmiM)O*9w?n^JHt}P?LtAl=usp z5)6Zr&kN#t3JP4yYcF0aO9AvKMn+kXwBcf(bb^Ui`Iae9M{_)$a z4#=UyX)yL4{xBuf6exEky)rs0B^#t1N_T*<33|z-_453i1_2X)9oV3Os z^EMCBwuc<&SDRi+o(QqdoG1H~IF{@{KftIg43AM*EoMMrHE0zFoqaZN>kT1~lkiOk%vOr$g39)G=P``4BS8x8{hW+h?VE8p=z z^s)PVuKQJGqZxj?hGufM)du>n-{t2E#FOP{>LOLfQYhXv-wHNt$z>Amj4!}xd8q3g z6X@X(YDXHEWr{DG@wO_%HHM3xc+xs!w%4$NAH0u;^V2Mi(Eee1kKN*GbY0+jH1&Ev zv$$C>Ddk8e?Te4%4?3bgXTL4UaP8N(RJV}UsXK70(ktNgG&hS;n3}4v%v&Wl(|Sld zSZzk{1X919-^c?mzl@x5|A_Ugh*7ZC?j^_70vy*Eeam4fQbq~$+pBN+7D}%#KdDgW z&k-M%((NdeAWX+wymy$k(mH$Px`+bNZVG=`_r0ZHEM4VCh)-RvjT9fQd$HZlhUq3# z_q{q=>6Z8QxnG4c{m2rV|G6*j9r!~={6EqAm@lsPC9g;X5v{3mhJAt8+d?N~q{ zX=L#cx4}WUFXRX;s?9j}OEzazGNrh8baxaCuCvKz_;}ab#tP%O=U-~bXsw>=4Mi^{ z=6ID*rba5H*vyRA5Qdd*TvhyG$Wh^-psL}HgW!pkT#lA-38bx)nDX-3dt(#RV^HRL z*BSKVrgCA29P{;Ch8)*L4aAdslTcG8;46CN;J?V1q4!b`FEO`&&$BLd*4zf)K`bT0 zluLoD{_FCLn{|8t`+ES1{w!m=^sZ;UbJ+?C!+Zt8u&72#Jz5jsl=Kz2=7WQpktqz_I@6asQA`-db#u-MIg@YucI|ap zKmDU(*Wy_mZPW7zX>kqd1G=IPR-sEpNj zSYL5U$3qGnFbt|+Lg{yS=*)xFV-j%?Ho=mQXhiT9$SQhmV|r5s_k&t4UeTgobc{!$ zOgo^U3#gBJ@saDnLs7{~WX-i1C7lcb^+6gjT*5??Bi}aX>y2i{O13*PhYVtRhFE## z?x>NB@$diWGvy{BaZ2bGPn>DqA}N0tf--skh+d&gwX3 zr4<}9I*@;$t@?15seLDN-j>AyujX!*a6moHb4AtWoC|f0(=awE>IW_}A!1Lx>lL8L z5PssQZc*03q-sxHR~#42^!Ccd2jq4jqd3S4qx)ddD3fUMC;&u ziZdKzxM)pr5XwUytZb`h^zC07yR`}#+dBHQDQq_QVZ+xfV44zl9b59Fv=AgBJJL*H zncm%Kkw@gOOYf??{ywyhYUs3V3*y_K-7P)IKj*2Td6F{v_`@~wtFmRN4n;A%73rpr z8yw%WCz-wu&gA#Jl4^c?4}>M{;5Pmoe0AG~zKfiUgpK_N;|c3L$&@Ch*6$Ry*xb(Aw(71KTXT{y5+Il!+J_#MQos z>#8IV^58mcH2?15-A7KxIasbck^ep{M^#Iao^$=KI&V9i85(U$c-v9Ru%kc%htZpe z;wxThQFMc%1#IA}Y{{{*ID<#NCG2`Uzg&9l@6pN`~=xa^SbnWFLS+5 zl}A9mD%(Z)6(S^|-K7wLLni!foMM^DdvrCYNH%W5yyeRrUV3_)VAUoWyXu}wG8a=YAGP7mVHMgnhr zl*rUvE@VedqJ8fuHBIGKXM8UHdVJnWkZ3!Fr_eL8wj~q!J|t%ms+?Z<1z$j8;XCrU zU_z_@rERLvyFRbAxizQmpbh&dBy9EihDj}Tg45W^lCM~H>7Jid*JC+dvh^!G&ezr3 zZ4SQ2D4S(|6y?R@=RzR^>wodNR-o)k<77bHV|^xV_e@wd^uGzovu>Xx zTQY=NWf=0=?u*?Ng|%o(v%+m7GIiC>Vhk)zE!G|Hrf9yaK5V?uzR4dN$fT+dAgk#0 zO3yjVV;KUZH!OonF9!+?+ecn3Woz#)S}lr0_%eL?yMu!Ij%7e&-$zAr=NNH*QN;lP zQN`B%zPOw27jHf&w+s~XGxPf7cJ+l&K%?@HUv8`y>(Yf{1$eG?&gXjhiQ5J4CUm^G zZxON@L*D-RM^8fX+4U!I!$s{_%r%T+dX#@0xP8Lg;EBFDezxwn=pt; zm0Nwr`4a&1KZpP1W}=a{n3BN#SjNu8ImALBJs`}yE;*qixJJ+RGIwhFRsO2dcMR|G z+_T{YjpT2oWJ%%%nu>*2kO~(3%CR7JxVqH7r>8qf>UdM#hUrk^ zVZLE%T>gvyzGY1D&Ux=P35EheLo)&p#7C%3^4aJ#E)H^k)%101$mumlDokB8nK-^7 zoAFw&`cFyHd?)OpTOm_lX!6o#HianABb5BNFWnJ+${~J-Ug0qFyWpf!@-W{FY=hQ# zCyg2Byl=lr?xJ%NDLQTSbV24AvyG>rCaZ2FU=$Q~4y4+@5cfEIf-o$e#h5BpHU5Q( zoPy^r0YLFIWhl{<-M;v~nIkYj)!&w%y?gbukyzr)SX7!%6lGnb#_JW157+l}d)VG4 znedQD)pQwrWm19fE+yZ3+clCG^_4F4zOc1;vf2yORHB!UmmM!$)VkL(f@E!pJWQ4; zT<;Trn2?;0{a=v)ff=M~_^+EZZ(O}P!%l>hBKV3&=&Y9x1s~^<8}`_aE6G=jl*5~y z@go8!!AA#p)Icxyhd~y_U^0%Vqo%Hnux*~JNKD{j#bH8eS zcy0R7w$}+V?q|+_V=-5t{YCUKWnhiS$7^uzU2p%THcl_H5tpzI`(?>yHM1H1JwWhW z159r&@nuk;Kc?>V-w4XNV!M`Z7uL2B@v!KmJWL3sa8Sg*m>(4B7vSTg9nV{2`F3Hl z@2W=%C3|>3+uL_?3cJ7Dnm}|cz7zPl>H()SUfp3MB6ixFNMGe~bZxLR4)%yRzi@;3 zEAALxDf7mq8n~umDf5Z-7tnqt%fzGR>ulG?^$$!5&HEhFj` zEF)@d;A<4icYakJYeumzhF$dh1iGtTBi*U4$>1O{nE6qg(;A{TNB1;Pr@}ethoeu# z{fbGy6k^rSca=qu6oj@T?K|ewQW>)8OvGZt3eiOQ>(q`HGGv`5V~t78Syb@W7m3SU zWYgsq?-4(b(3sLfbBcvFl!p!FzyaAp+Spwp8wBu8T!BPT-O2EE7f*wHCxwDJ;IxfT z+)q`0tj<)~*~S*rB1~2|E;)Lxmum^~JLiiojt`gbKV@Qg>MedhRzOrb0LJ+F{ApqN~-eeOCN`un%OqpyAQOWTfbUAYZwO}#|?zEYG(yoteFaDPJWL}MSZU8?m) zrB5(R8-HboWuQa-PKC2X>ZN>fBMrg*%xbs(tZ1F9hNAB$zI)SOoBhvxx7$^UahAw4 zxXyKiXtZ>EU7@#7!C`<;mg%KladHEjYmzjL?OkuuI8zBfLLQC6GTkP z=%ZP~@K*BNzwe~>%U5}dl3V?HRiORjD+GE&Ot8E_j~D&Y7l!HslNImoG(K*)_eOQ< zqT`4EFvoGpy%E%Gi*pyHfd+C`e|D6oKx1c9^EO^PVmUqGNiNl9bPx_ms z^q(pX@^3pH8;Zl0MJyB4ZibF$*8#5H2RPH>$6~mNMO}Jr<@Fqn551#g?QBNX%36r? zB9p&9V~#fItb|3(8qSR}U*4+I`*yz9wEB8x=ksLKC0R$`vJATzS4QfR2?8lbgM5pr zhM$ga@!1U##O;-vUHKVFu~J@Q&Et1bKB$K_U(`IW=Xh#TeZ?vrXDVns$LOrG8v9f{ z#4tKKJ>Fs}FR`=quBL^vj@7N3xz>b)VF}9OLrk-IoZv>hM4VLuJ<>rGU8w(z+fET` zelG=AT0J?Rzw z+I>d79DCoYe9qxkvN+7^}sG~;?_tQ?mr znSrG`Tt}2xJjF35uydo2lQ>~q&P^@taP&B`jw$s! z3gQSfYFdO0eSVsebBbE%PV$S^p~ zYSGK};mA=otaw%DUAaV--~u<;?3;)7y(4~toFBh!v6~zR|Lk+{ev%`_m?PDx=&cd8 z;~2Aper36_mV=wqWbo9bjA5<*_v=b2MD)({jTZQe*Akgp2yBrZVe0n1;^fpuf?h%A z*1&B8-tU?dd?h*$l)UV++Z3OzcOD|OT4Er#%Pl%n-Yrbyub%h$M?M9N5z-Tv_sI@ zvK2Oxi-?F*Oq8258*9YaOwA3t&>pRk3AcmakjiS;o@dnW^4ll1PHwn{HaV=hk~Sb} z)hId{i>Xpi&Var6nSeU7YH!<|yJT@h)!zU0%dc0)sH1mmp~djK@UKi!;;&q3M0mNA ze&3`|5@n8c@6u~KqMP*&dW^9+aoJH*_M_j|Gj3kqkL*j08i%>n5INxdApDl_abCP? zr;?MRb|Z|BCc1&wF_m{es8&&5Lz8Smk>i)Ln2gj-F<++ACM53HnKC-fd6g*}i#C(b z<_GW>Ysa?3Q=!RM_YY$gnj%&{Ki-h5@T*2`Pyi^!$TX^&eCvP3)#G=FT(N}p2YQGP zZA^V1s9Qxyo5iS_vWj@NuvqPO>UTcAPE{iDaFK2AT$06v1R=8SdcMwwK0goYuhgaE z>;=ZCj;ziQvG)tjM9GrlSK$ViO$8|4y}p~__gb=6JXvA8E|zFa^Cjr3kVkX;T9z6U zoP41d09#u(dsYCNtr#}pw!bn8p)?I~G5E}%jpjs0L1-=g#<`2G7H;3khq3b&ftprI z;iPV{{_?rvtQjaNDaZ&=jait2#T1H(av_q4prkOC(aK6;nnlW0IJ-$QmPg{P6ag5z zdZA>$q_U1;Mf{fza-J>a@cU=6vOL}c?cu3FV57AG`6jE-K`B54Z;`w16Bom}2n67w zJ<|4?7VB+uIP}bKsc%+_Vs4YPTnN>ThH5-usBLhkfdJ5H>Bc0(CV%6t-2Jpc`Kuh< z!GXj4^I_A#=%z{1uRB$s%RDa#K?9T{juWf`oC}U~~VEtM?A1^8NqE zL-x$x5+Uk1Bzu&dk;u%EajdfU3fY@7a*7nPH)WSiR;X}fAA3jH>v!GM>;3uu{^4|- zbKlqXoR7!jd3BCNR9qz&T$1v0g{Q5NiD%$bD^o1~c7HBykWUA_&UVn90CjrZh_GWd zq(c?N;MQLX;WVywu_jCU8I>#XD@&A|@M}7*Hh>Im#_pnFmiMov*7B9!1?_t$Y0&`F zZ*(UGL!a*tKK0v!AHo#d8>@kG9{fM4JNl12x<%a%PuxD-btEHA*ZTNimjZgl=qZ=? zBhoml)|eN~<9A;a^K-~kzL9HD>Kc&x91U}%dsEDIJDgKIOuRua_MQ>BFu1>%_LJpY z;#29+(i{xC`-vR07QLGh8ZE^WjsyDfx}+_T1X52roQ0NI!+QP3T7L&|WG) zVs`uy@KUMLG6(LA)>bopmwJEqqHXnyQkeqGa2?ndWUa7IpbQy8n4omS8!hS( z=qAB&%o^ffw}MsnyWU8)IkZx;tL$y5{o$5vJ%X}ultYrq!I)sk&b;R_v0KerP-L5G zSI7g8Us(g~(i3v2$NQr1g=5ycGuKHT7C+kQD2Y56L|1#`uIQG;F~xlZm;YcjQ>I(G zuHWrVn;W%VZro6dD6v9*3Uu4{79Qf$*E{>iC(BPd=pKQ64ppxn-c;&Te^HTzotcnO z?43BQSx1_Cgk&0Tt`h70G$^c}<@}O9V)Jrku-5@FVX2PUOv*oA-){_fP`;Ea8dexo zc}g>cyO47&u3JgyVl+2-LI}fnXwRzN9rk+-H@FIRwwYD$jbnR+4KbHM5TSRLUSmAa zO-V=h_r-in+Sij`+jCFyfW87Et6{|(?U@Krr%M0EwLL4uPK)7xAaZjNfQeYtcXse) zn2fkv=)((eXhvXO$mbjM4JgvwQK;#w9%Hqv!`B07h26D~NxXt1?{Wb{Y>!u$l=; zFd2tQueW(yT8pW#4tHce8eAEvt|J&)gNYf2q&1GEHM_1WJnY;LlrybJ6>w8BMe4Ou zNC8+_puO1-kLQ+?I@~1*x@KpNV)9Tc+Jqt0l$6e}cQBvTb`^ zr?mLTdL2?~_uZUuk6*RK@}ThQNHr<(kX_3kALSb2{_m{xR zt900*9&dPyPgmAFy(-(bbx%R~Q2+LjEjEj~FgzFv0fTc*RL1@2vY7lKy0K-nl( ziQB$7ADiAYE0kYmSVWOytrGxgZse!8Q^~u2$0Iu-RrW`}+lsG1@TWyA%-*q+^3@dN zUG0FnT-RfT;8GEh+lZ&{n3HN#r0MM-HPKA@s_Hl{8a*RIVaOJlMy)u`WQues3lTjE z7%Ve?a&bL76e>ypkkPThl+JV?K>z(VU(q*zrVB%#Dl=<60D`Y}z+tYV@2@Z(NRcu5 zgwkSWsenYtU|T30o}jTFc*ldG$QOwN#CCN;fYy;Eox$h>Z6LF;pdIJRWLm3WUl)d|e87fj(OcK&^wv&3Wq*{*BvN%f$n-9EfmaDHCEodgLtQ--{`N*ENin- z5{CZVkjm-SVS;S5H5jP+|M0fk`CC^p=UWEczVJEEj#j$e9 zv*U&_AJLP*chA_=KjXy$(lDJkbwsz0=yfTy_u0JGO8DqzdL`>JZE2Z?7e$9gqDU(9 z3_ed&E&2Vl7!fnv6?;u@;fZjX!qH%WQ@Neh?1@vuI^b+O#)cI58ZUErIz$x$-5$)2 zoc&6yfFdS^C60v-HQFSKLvF&giX+;3pwX3(fJ|j>s_opgJ^R%;!fQ*=qfVx}l*xI> zZ4$o5H^-Y-MDKrZ_a_A66V^K%+Ir z?yQ~|Fk}`3{9jG%#8f0+t0@wo4s?d`oUQ>#^eDPeTaRD7w&WRJbgB~z5qmy)pu8E5 z_q>mZUd@KJG6Lmo8LzaA{1=7QX&r*ejTnty!o}<@0kB~K28k5m6{jvzK%5pykcPB8 zHNgbFFJIPiSz|*`6SH=IeT;B@!BQ9K_w)#0P-g zf+EZ%h4xTx=z`h}}a{XI>bWu7BxE&Ccy6vxlZIc|SsiTOXI7@`a(5fRuEvrTw#3 z*qN%77D%c`blB1&5H*PQ6sIjTy!OWj>twC$dU%n;jj;Cs2;I zqt8vog=azcB^YuIDy$hE59H4T(m-!osZbC!I}7B__Vjea;+k15y54q=P-lJa&_U zA59}$Ox(kQ`TZPHXzZ2?G4oZePpa`o-kKqFmPV?5h=$hE(qigzO!U5pt)~UL)h+xg zD*KAxU;b!^dpuX~FRtT1egxGr|5zs)kIiJ{J^Z+~p_5B=W^Cv4nPbwaE$|JyT_+SX zyyoYkiSyzXR&{0FFUWdlA%P3c?_hT=%Qs4{4`a8%Lbd;wC6$>RttZAYgt^cp5Sn(0 zRaYht%8q^hcqX7BgleA>6t7+Npr|_aJ`*(etsT7xi$3X+VrG3jBJh}iDw~cnfib$p zflo4f68U}fJj)d_yE~?TvWka_?lYZD8KG-47q3Y?3@`c!VgAnhrF_8%I+O&1;2WfJ zH|xca>cym+y#kiJ`pJ*a5De@=wu>W2wnc|K&=a4?k&8Hbz_ENapjNK5Oeqj*%`^{0LV9oFxP0*O5rad$ zokO6N;UNtQP_(iX9147o#7s>P)J7Aswr?M@%)I2&ubTU|A+T5V1{V-)piyv}AUD`U z(G3-;*W4CNkU5Ou(`%qrfg22xgBqt25A~|!i-7)vt*M@9Do)ueE*(h9qV0IX(~VlBE6K$MG}}9n!aa)CY?tMKXBu)YHQU$R zwr!|5Khpqlae7%a86KF&6zKsL7xQL}-QFQ70bnhIfI9P~14>!+9A)dyB(G9dacIn^ zQ*u!8{&&xzIy1|iULbNk{Eypvhf?gw7*ZT=#75-)ca&n`QZpGZMV&`-=Da?o&J>K- z$bmih&GF^0{rL|8$xB1M8W#x=y;Dc@l9SId`MQw|SotPt+2I5#JW>Uu&W#r)k ze_JJ!MGvro%|ra_e5U~v?jOQL>vIq`u~#*5*E7CtUkxq|B5FO^P5SSaZxsmYbVI6d z7g(Zd<@~uVEt453tgOLQ=iGjL1g67L6o->+RGON3qoGiTS!-I>k1vGgQbruXENkq5 zlbX9+kKlErODZ#!jtWYKS~Dr^1v*Pj3I{?cdU6Km1Lu_=#v~#Pg<3>AG&J)l4t4=^&-!%j3x~ zGkbT-K=fx3vOHHQsN*TtO5zQ>FX2P8-oFE6@}t|=Tm4|TW_0J`HjL58zUiY8d z6pm09tt0?&Wxnq6!##FG2}Zd>XteBOij?8JSQce$4mcDJ8hwkgbyKAMu`#Y{HVD}# z(8vMOgZ9Rpp;4I&&=4sR+^2S(>13C63Oa_Bc4Vg^IpWP1-KR;8jV0y}i>MFp=jHyG z78xMP3_nF1Ujp;2Cmyu5tqpe!g(BCOGG3`TlZ^-9478I)QyijJ2LXhD-K~|xA9jx- zHX}vSKq~!|iB)>{_kOe#Y54aAg`4Nk@ff7B&5=Dk{DCb{56|DZ=s(meF!7eU(C0)5 zwBI!37Ta6NVXD;AQ;{L3i`!>PO}0e@`e{7w{0DWiTfi_fW&BaaWEmg%u`j##=MO56 zbJ@lt@xqpqmHL2ALjs8`QF=*E%a5M&`~;I6u965|nm14)*Huu|O=^Ks(%AkLmqKE) zO#Efx<$yXG`QaRjD|tzBSaD3b5A!5Qz{#EdRrR^qJfOcxSIOCassTKOTKKLu+4kha ze@A;(>?~3tW+6q0c?V8C7(G*`Op>d}j(z|_3ap^$5kt;;OexTQ>>LWuM$&7GkU7Gp z#3Q=W*Qf>%c1AypLSxqMQY--ed9^OMaU6DMSY#U+&iR-u#6vMj<#lZf^!|^NI^do} z&~c)bbwNlH0;nytX&EgNV(EI>&vk8t&r^7{O`>D1FJb^|x?lZDkQ;^2wII1S6?0E> zSDMDNL`Cr@IxX9OrnUpit>9No`stYK!wBh3oqFAS7>|tg zwgx6cA0O7%>5UHdvuWvWmx0*@tQQ*rnN zJK%8VSJ?)fy((3)aGa-?b#NExW$pnzCKJL82{)qU-Yg^+^g12-a(Jr1J^XU)iHmC@ z(Hr%-%-gz_AMVUe4Vx&js01KeGz8 z{UEYHH}F05K4z{aF0=akn}R@q7L2PA8Qbvh<6PMD;llQFwNh%rOh3rP@#u;^me8%9 zXKjmw6w6<=Ta{DLq|5M28B^Kdjw1fW^~wk^f(00o*Mgl+^SQ4BcG+>LGdORPx(iO^ zWvyVzqD@IKg@&=OktNC{SIJxTT3T;x%`V=4N*L$3Qf~SsheBMe*~xlye6G;Bo@fQz zMdFGPtGA)65f~wy`e2@mCobp<{yy`96-5S+U3Tow`_CScrVqA@Rh{G$=-5)_V_L1u z%ZHUT7?V#3Wb7vAHGRFy$7x~yX~pQbNJNq5^3JxIz4=IqK(YSv*T&H6hef@ME;K_Y z`xopfdswVV(+bHUKv0ft0RB6VaXSH$Ys4&pc%gA z0}ybBiOaU(srBdMpfVkwx+oi>~52Sv*Se*R)DX6+JIrNFR%XP61;-lA^4y|%r9ZEzV3kQ-1eorgE$aVM8 ziXlQ00)M}~@slm;=7$L35miy4Jx?LcoAaA@wq6x6VBDz)CV9LqzcGOweIx26j+XJYX7MCKG zTNx-@;EjWPKq*Y(1W>fyk`lAZcD|m`#HB4lFcxMHsy_bx7mIG*y^1K(7mAFcSGz~( zhQHhD<0xrX&Xz{gG3cu0anp8H$Bd%mki&A9VA{(neJcuH&NdcUJ&L^dV|%kY;S-D) zLr;D=@4CzNn){U1DSC0n$6rk8RIokhRKQ6-Dlx8-7y1LtNjgAlX>7=F$iP#E$@tQcQi1NrXB>TI1C8 z&3u)AcFGP6AE;0Ty~q`8!}Q9uM*B#e_3P3we&`QKj-HA*Y~2SS=Y4&pgI(;dQNIX^~87gPJYaScIQ=H`;> z$UxeC=Y#uWyi4Rm$`Ew0(a@4B^bmUs9mD}PrQ8+x7Wb0*$+ToPIB7s{8?TYg{BTO( z*Wj-??gs&N8rf@7?7l)zl>|m$r1fUmZRR}KBx5M%fz@p zlwGEYIS!fwYfw=y!~35-4VWle$dk@r$aBwf_&U0fI(aC)ktbuMW8}8XnDJXAbcODx@$Hj7jXa`62Rq2ToweP`wv;0t@~EP*um zukeyBCSw>qerP+46_M~Mp^koeagb3qyk*{dJcZlFlG>_{gvXJa*v@FkAIU_l^R4=i zUB32`lq)Dx-wr-9$s>FVW&1~MiaDY+@g2Ma->(Gi9x3gl$JOJKXs?W}RCp_z6W|s5 zyWLb@7!}QFWIrvQ(S*R*epi%Z+bPn@HZY-#v14m;I}&e_?6{jB6Iz+WgEYo+2^&9! zUuRO2|7Ot~E0ygW(#hSA5UO-CX5*e{9O4Nx9Wl8Q4-;`@`K{5II?dgz@Bq9RutS#W z*wd$`&N<5&V2#3;AA%*;=FN(`f7N;2FZqWe5%}baR@qPRW|hw|9p#ueH{o$kjT?$u zWw!83d0T%bT16{urNP z_OXdmgm<5ox=le7brW&V=?YCZ9@UG;LGVM{nK%-oPd`s-_51u%@i4Y#H#K@fm(brf zbVX5{h^|r`S#V_=`nj=yLbO5i7)v#Fe_QU4(u@z?y5Mv8G*!gtHm6J^FJieweT#Wa z#}{i$3Nu?0_stu}e!PC)A~R!+lJ!CK$|79pi!Fg}_^s;jtQD%@@DzZN@7Lzq9uoLs zZsX4{>)m=x-csHq|6Z|xl#8j<>_O0-os&#-UeoORU@sZjlTBu+p3Pn1iSg$=z`1g= z$sSYU!m_9e<54#CGTTzDfhR$o*!|WIz|Z@uKTOImQ2Vr)IHxO=-3*$J7&=xe6RATT zt18u0k>qID^6gemd%D-1^6Xl)NKN4EIo^0^Y8QD|+|=IR_j^at*GP+?PNHmJZG$H2 z6h<{&cpESQAIi*u9(w$h^&=z8*d!x*`hE#WR#~44T z`wQm-+a(C_RclR5Q@IL$#j1HOfi<;MS0Exwcxvb z%zj~MYLIgI*zwk0v~aqD>k|4c!eW%tcP|IKLBlUsM$;mtPLY&PwY*z*>4!=D)w!|2 z!fJ6W7rkA+H8V+Kk;3b7Fhi)c_++HcJm%nIr4FcRRJ&~N>43>OOqNDbi8UYng{^@nq?&mxcu`UJ7Z`Z+L#cn-?v$Uc`_=V9OWEl@=Yj; z?73v>E%lfPnvdt|cvnP?P#Ie~6Eo0smOnYMI!w^1S09>+FT|{Qn>pTn-Nkyxls!%7 zH`@kX$^UMIAMWsWZUf`Q=b50mxfELRO(OJrCu`zic5OlNfx3C7n;Wmo0CtJhhB$wbjzD_dog}ja| zSDHpYc25avyZYi25pNc%_-7i|W7f7nrN~)XIWvFfHZ$rtj;s(E6EOGU{jmr&x1lK zO_LcNb8XJkC9SLSzJ9pX;QYd&65=cp>oG;1 z=YHd7g8XK8YV>_p@jOb;{zgtQnbzy>Mj!^UbkNT=T!U$%o^neM%c^Jot%NTv*O97%t3-)z52vd zyrj{j669ESYiA~=Q5f>&3dmvR2b$z9f1~UId*ou_!;?N7Is9nfC^)FNP86@Aw|O)d_sEfzc7aiQ*zvkVpinSE9Z>fV`bEBIqcS0SNiSuUq&QJ%}_uXjqR1rC4UCBFw{K_jR;9{fwH zuG&cI)rg(BK4)KkTgjrv-*7m;O-?xtb^8NqcwEB|{)eEGjLh)qGO6wCMS|)q*K*PR z@(Z)3(kD?>@M`t@o9<2YPjCMLKM}MfNk$#1gdlEXJ~#MdU7Ls$sSbxW_G=-sk`9Dmt?0gkb|x%jdTeiZ5e$N)l_3&#a27tYOLU@>m+=S&Ue)I`H}?B zjMP4y4u8lWl*`hO#GZiP9p%sn(zAtdGE$f z;tqX0b)|2lG=S#Jr`adKujnWS#Ew~Hm5)GB_oL{piLhqW7|lGH zKYk6OPM`hf)Rl*ux*wVpgp!O7K3nQX&2{I`Onws*+qA6LFAKD+7LPE#!qS zG!)4^q~i;PRux$#XW_`e%X>&bgoLr8R3)?5o!87lKu@-AGaSI98$e289l*Nw3~A@Z zRJdQ;5%L$8d<&kZ)R8N_q8FrEJf7QTVGMq2R|Yhrx+&&KG+v7j7!^|3IbJIAta}EE zQQj&oH3-F<)0gzPU$d!Qq@`EC*R=+(+$>tZL|W_^;C~qc)pE(hI}7qc!@15^Ms^4f zS}m@l2(9>9O3%Pw@|5_xR#=VvQbw6wjI>kAMYS}cGsMnm1aq38-td0bx$6T3zy3#3 z7?|Nu^%OA@W6yU6*w}$cBMk>B|MhX+EOjI%8lP*y$4xF1fX#62Lh$1~;d&kZzFUmCEhWs<{=PU=3nP?kkH`=m+x#eE#Aj!SgfdYSK~P!| zpmehBSB<`$TFg3S`PBy@g}ZE(YmOn;=f8$}MJISk2ragJ*69)=Rtr-s{b?dD6bKa` zxvTZBnO&N%o{t--Mb!=z9N%5vhT@v;xA5FA!WN8qE(|HCYL=Ck?ekTl4)vo;iPT}7 zC(2@CgviKWj`9>+!O0Bo_pHq^$C-W410kM}y6pvP&n*>^_;YtZB^fSj2o^hhb;7QB zoyqq0ho2^boRCTO-ypH8UMM?>H|1|1;ycTa;#nZ*f?koS5kcgNj1*Dfko4rWf)ER1 z6QDWi>D?>JoR5aEejgd{l1KbsUQ9;amIv$EKVACgXBtFD5i30I?Y0u&?0@g5Ef|o2 z7Hb@PKX3MSR1EUhKPL-Nw@Ks93#0{=UK!Y-?E<_j)^9vutpAN~LE>Xt)NFg@@RYc{ zWI)ZKioX!pKPRIR>#6dL_&QB+%|22+iRnK=)~%iiV)BrZ>laCc_G8)Kvr309kZRzZ z*$udEu|Ol@sOH2PiXNfbdh%gl>C|J-f7kp>KI|k*`kOh+P!$boA?5*Ll)|XsWu^ zg203n+baXgCvNH(p)yQPk)cBMx;Fyccn4Wc z5Vak~D{N;>^sn=K-tl}jfWq+H_wTzMn%wHei06;24#MRBvH9oL9{~IJh$VcA6G5Fr zRVeO%dOOy7G$WcX60Rh32(6HXvD$KycTgzG`d>mPmvFrBB)rj+z%T5-QJbU&;6|r9 zz)$f^N%h1EP8#?kz_Msaxo61 zBKny%;QKX?!KTcOn=htaeo;+H; zNt2qfP5ziTlqK>rKH2;6bJhC&NB!?<(g+*}(Cx`29YPltr914d|1H$@hgV^Bm%B*# z89X4GPGRd9;Y~Jdn7D}~af#R+uFX9Up{EyyoxYI%?&s?Pa!>*gxbZbMTa7Z{RN{4G zXm?y+GZA8!V0^DoPzxMCoc7NVB05enaB?YFYbBp2n|*k&*VC!N>c3gaQan?NH-9mX zwEDj^El|F6y`O zh^x!FQLcfe;hY)o1MH61jF{Rd0o?&Kqmj1AFh`&=&DsYM$>>tht59X_3?=szU^EmX1G{MT9x_FIXI5 zH>FOQ64U*49WnTjU~u6+zO#Wk&TSokfN>n)z+-;3>IrCEe`zk^$O5_JBn zzc;F5nfguF$t2~QDreYiY5kAZF1Uo%^{4(P(3o@Ixk|T5TPMmB3UpX=T~11qNnVTB zxLjAhZ`g%m1iL&XY3Gj`Q><6uBB=dL=ItQkM9Hh#_O5bA&&abf92Sr z#VvKKd6o$SVKdvgv-QUAPPL5?_N@W)HWl~s6q$KW~zDnSO#{}L+f z>rVp3PUPO=gD_xTa>g5W3ZVzp+A!Akklq)=PmAI%*^M$Ey>`%Qd>!uLzxUe&AYLY; zM@JknE9k05W|nFNoqsv|Q1&YKed+~SIMuqN8}T!{&8DrYiwSA2vrDAOt%6Ox=9zVOUyS@Tc1E_r%po4WWAdL$%;ln&e zLX}dAZ_#%fB~J@_%Nan{13WU;?1pF!s%dw5Da`njHIw88T*QCvnerdgzdjw=At|0& zr$=>o9Ay5JeD`rP;)mby6fZY2-#9#n3`<)y)v;7|s2T8`fB$PcP@_Yz{`5yR)+uwI zn1eo;qApT(4+0rAe{+Kzlu{$pucz+k3ZOXVF^y=iE zf2>jAo;tjGR%KX^;!3eb3&751=ZUdTQp}+QaIt>(c_jC4$`)Vk@hxoeqO8PH*}{U z(vtAyO5bp4r#0I7pjy&@ zx03-H{dXNkmE!d1HS&38k@2(YswU41%A&khCuJn&3;8^4)>&-@jhtf)kNQv@#ivGs zfu;-4I}AKZi4CaoxWzL^7v=@lWgrc=j8CvyJ`0F!moyHWz~Dv`>T71? zcrL;8P%{xl`!8%96-jM7TK)ac^8_Nl{(EmUa?~$(mWC&C@&d{w@w~A9 z9mPmL%c%Ay0_f_Wskt3l@EhQ9WyAnC?+_idDmNqELAnA&PzZ_}o^yG`ZH;sIE!YLa z%#(|>z#xGLs2zAxhvZ3P?NSNaT^oEqB(iKr-)SJs18c+_MIa<4m<{}$;FKP3b)Q<| zA&PL9u67Ji9I6+tojw#Z@)Vk)L6uRJtw;i!L;+%+p7DU2;*~}}-wq5Qrr&phqGqhT zzpm-K`=vDg^06QGselDZkH9?@1k`u{>by54o`!x_a~trtHMu_##LVyx6zsd{f@q&t zprHE=_&y~iAg6Ar)zlu;K#k!Ft5~DV=D+T!+xyG06<+@ah;-%0eZM#_vc-q1QsiPr zH4xgBo9aAHyccbQgZ{A74@#O!67(uRa(0ZgKgy8#Sq+3ypwuSW1pcf!=uW9MyJ3f}0C{0$P3z31-P0k)%6_G*+6=~HX zTHKhwHO)TYJPW!roXnmcPnzZ%!Qlx=egQ@v2u-`~Q&(OVvt5x#=sp98ij*6?7XbX! zMmJ`;W@caGQ?ALjNaiy}EiT(SK-9ycB2sP?jjtS<^!(4^)~<+w4zO$hFI~Ky&7TMw zn)ziBku(UjUD3(})q{pcMVJSv5K>b=#1FPXJn;8!g}Lzkc197Q^SjL+T9_%ceK+Nh zY@Yki9iL+<$}*bAKvk&IugeI$rcc;enY{T_AH0>0$4I%dXnkt*FZxGXRa7ko66CW}YCSvkvG5Uk0WqlZs0? ziiCO&vw@%wJB^}!V zsvMCP-aK#`!eov6?av!ieLZeEyDRsH`689?>zuP8_5o-PS$X@aDktR%XHQ!IF&wh9 zJrtH>V4!Gw+dc=c83Z|kWrhuazYT9V`BOh zz6uk8a$f|@B8|qnZKRD>+kQMM6RMv5BENn)-BS&GP}8Y$4d`P|&n=-orc`~A`qaNE z6=ApKta+w_F<$ARLJ0ls&9jCUGYt3SM=;{SXH^*hN+nmk;lT@$is(|LyeW(fp$x4D z=%=!UP~VgaE*B*a=zQQLQVwN=K3E4Sg&3H}-ya9UmI7(4y4|ViN&Pwn{`2a08N7_#x$RPqk#hR{F{g{%BDF3Q6OUgu`Pb$X4WZG{9iJ}8*4p`J-|10Zf1M{d9LfhxcwjOYih6xg*{0x$ZnP}yC+EM~JFC`Pe>DQSiADe`f zfKtKq9DJvcId@;Z#}}Ci6p>5l-Lf+=2#jmNSeAj3w+2^XbA|-W+9S+I7YE&wvb|#S z+4alV84xbPD=b~~nkc>=y7>(EvMc$};$#%VJ)7^tl46a-CU?`pOj+NfQf{#F_&ZP(aeB1iW^1MOA3i6f5S9A{sB+q zD1}L}ruYln(F~0-*^4d_*M5YWw1t{G_FgLP(`*lKPDSDg(|wGh(LAeR(r1kz_SzsA zcm3sm-DONg=%=Kx0#T}(uwV?94(evlsilkj-{Tkmf7|@Fz*e1QOKvjF#(6Le!JPjr zL!z*mNCfI{)fl=`@$KGk#(5H|U!+Zuq@7c*IS~BNVwjPNQvX|wRB*V$V zxdeUte=P$zn&ssXvAh%?gpDghkr#ODr92#odk00Wa> zK^Z36b3$;OT@y4S62c?|x-aFfODHe6g6f}$V=lFOd14p&c2gp4Vo}K7Qi)}g!D7-Y z#-0C!&}eIshc%PhW##1pFT^M#KjO`ArT}dWj4Ksi>fpj^%w$mZLYJ=as;hNaCv%TV zqme=a9xvO_JH1khE}=QKV?QBLc2?LsozR8Uq6Y=!vc_@gzda&G-ia}g=c!=#nIR@ZAt?{ZD`e_=7i1 zJ}NKJBzAM^6{H@neVxL|NMls%7={s0+kvf-;Z8U{#JR zhm5F&>hHaPU;;->)DXHv8xEcI$at6o_(p0jp?&?d|A6MKQi=);W7=FjjmzcG?);B> zQ0$hr8C?LUambVZ5l{hu^0nX#p16qs2pcX^)fuBCpuR%jqR_fV4Nqy-8n zdxA%ZncIawH(onAlHFy1<^Ws=t)16^)EQO=K76LNP18 zk^~6cx5#$bVn9MxJ`+eByUmbtt!F%abOiJpNMA%-^Ox*LgP7#Hvg90`GGI0r2xtm) zTBuZ$1DsLlzKZC$O9n8*Ke|n~iOEOfLRkMl_5At;-u;V_X6`tsr)u9Kw1M0H5e#)n zDn>(*o*OFXvdiD&M}!>|PA;Nq6K0ElVYqVug%bsC!gq)2zv?9OjC9vtTfi$voY?=Y zYK{fTd9k~7I8UE9x+S&^TrX&^zV&4;*VE^Fe$!i~PbyY;-+hwO7xB8#H4uY5S_EpXELwM}(Wza$msJ?mb(ESKb&9iB&XNzb_tb$AO@Yw1#_ic7S7S7krUl1yO{_ zPoan^2WLwxz!@(R)32Jf)`lNgrsFlng7Fgc0{+Gu9l@sT!`R0TKWj@`e)^*;izvdk46SH=%hJ{iypQ)qqK{lT^1UL=whui4u~1ncFLwst-O)M#KK%a{{^| zGc176&L*1J?^VCr*U|a3=I;kYycf3i35_3>Y~ZKp=T#iVMWjU-5}Ix~b%0ZD^iMZr zT=yAdTm3!ZRn`5-%=8;;InEhka!D;{cP3xVYq}nW;(ZbT>NrJe5depFHmA$#+5L`wviZk2bPpM9IdK@3I|Fu=vGfefhW-NfWJTHhl(dRGbs_dc20SMjxsvKXIe z^lVuUy{S5VAPt=^DNIgoc$gvsO<-`#TP!P4%bVTznCIBP>nm4lxlPfb&*Yy`hq)|c zds0D9e6Q)tF&{kfL;hTr4dxJzZ=(4st#kasC-dd&JH%2vw}MED9fRL#a%hXvk)mY@ zV}vQo@NQhJ|H5GY{0^Sg^ClMg+&g$uU#7w}4eey~caKhTbT>{?~ylSBQvTT}Bo*=){8z4k=**rf~J>0YM^Y-=Ij30vW^gJe2G zsEPQV%%@Qwm_LOhrJYnit|4{oaO^)OEpZ?cjrCe@ep{q@)1~_;NoRU~J27SOYM!6$ zpVRQVf!T+(0v4^y{^J8&y5i$Mbq|#deCWpHR6N22X^IP}?Azi!mZY=PLilXjL%65E z`6|C6(tBwyM+qA@T9@NR7`!Ccc{Vudbs3*&KZ`rG(BX#dG2bzm)g&{|>^7gVZU z@z0ipqO>8H5I)4JxOtcBty%3>e&M`TWtAseL(fOP(mpreni{dmnp+yz)wS$e{|G*Q zH9_m7_?oe^3})gkfdqEGm!nir-h9@g0bD@S{7}Bkn!y&UYFzeCv>6 z7~oS6L)b+wVU;EMc(u-p49%I1W~4mV{iriE?LgMyUqAA;3jg=ceEp|e4hzZleIE14 z>xnWY$ug6#HlBJ+d=_vBvXl5WyGwtnW8DQlL20M|pqgx}@wLs!r?_LmylWUt(Hbnv zN97f-nZ*r*Fp0G&>Edu4n@bYikMHs%8B5&A@{zTz-5xrvkU>APSYp*uEIb)5Z_4}p z&B&r`=G%=(Q7(0q>n_g&KdMW~@8wFDN4TckZ@pOJchX!lv{)-Ib=rcBqo9BiP$eU8 z5z$L}Hafum-NP~c)BDr7FB-*Jbs7w12mZp7ey)E;mTzb`9&1G}g}v9wyk^t>Y>c|b zl@0R7;L+yJ6wBlXug0QYivva&??%^?6Z1NcrAJVJ7VLj7333P|uf~sCvUzV|#NRr8 zNavXq-Bqd1UDmuh7H?1f9k||8Ru_D3fUnA{%2&#g`xR?Y-Z z^6Q&Fto2E}rgx)NN;l@7+bUA06syX_;s6f@C2L~gtWIs;wFfLu!Ofrg5bthQj*z3+ zTv7EZ5B6})Pn)gUz={bJ`dH{{tO@-wq2VX1 zEn9=L-^0n*RZW3yH&&E9y(%XaYC5bR(7ZoP6zqF=e|a@iqPZeqgEA=Z zOP^zwx(do)6A#I4%-B`1!GH5648x(kBh1$ZX_pRV#qLJs#?_@qXODM+)~a3Ocpgl5 zJv=%dZW6K5X)IbYKj1@XPbA$!j?DgWjdiHUAFJ>Fqg0(+&u8P@w7mB3nNjGOmBg#V z55}|VS_KzCtk86;k~f9zT(~%@dvpKOCix0Z4w1S+N5MzlkfDySP+D6<>#akA)7tE% z(-9f_IMvz*UEzbLQT_+w*Bzde>Xhw>ULB`H^9Nm|h&%PFQ|+jIHd2(M<`=#MJkNaG z?e6gHlgcZ>UJ1;#$3KUmh}gRRO!Q=UZQ{L8kRVhfIQhI1)>XSc^vYwV6Ts7ltWddj zQqbMv8c*^!Oo6fKU;e60#Wn8Rm3Z%Z>$tzMp$f`%_}YWd+zN>2Txzv67F~_kTQg75 z>qT)oeIi&@L2B7DjS2>7q-9>U;{~pI*B+z^QE1$Kz>;+sEojkowYBARY+bz;*_D_c z6Yg_*i@D%6*VK@Zpf5h%`GN*DYv&t=UnB(_hIfEO<3&F+EEPPy1nc5PhWn7zt3S$; zc(3-#8N2N9aFBDD$=}FjgsChLU zUcW6+#73>}a;>h!q`})yb12@_u=As<2G4h4stDCk8`75Avoxj2?#_MEdevrI-XT$Q zq;iQ<7vMYr66siQa;c z3W^dmC(sP)O3(wFs1d=-YEXJe`}Fo0^0~p;E0=Q%i9|}iu}oz|ODaktr<}Kz&$ll@ z;={+Lefdeq#B49<4(l)ckg?z)3g4YwM%{ff}#DMiVh1L6O%3v!7&trk1@9@Tx zN8}zj>Au99&M`SWYsUwq7F(=HrEVLOR>GU4oDR@6vYo)CZ5TUta4g*(;7(**fx@?Y zZ%`XrpuxEL)-AQ<4*pi7A^5$C1JwEgwnXEcUt^)s*j&@og?Y)E4<2vwy9%`PT*I!! z`aSU#i23;bZy~P_3#oTulB?{7$7|C=DV7)eZ9GeDRE_gVObYw|$JLw1 zL-qFY!%>uoBwMzm60%nqj7qkMkbU3vRrbj`qau5wQX$4wncvoOh$`pm>O$}mKia!b zf&O6j!S@UV=t?eyYymYl#xtc{P$NxwKB z0yzz!RtQ#lVm;aw5vz?JY6H+yQ{5y`o z0LgfxrqQPhcQ?0$z5ye9unlNHPNVQ>c-!EKFMm!O;@;_1nMsm4{jY(p9GiT2ntsrK z!qsk$r)0_;$vH2m{b)999qMW;%Vkm8l{I> z>jz#4dZc*yd3g-uN{Hn?IA_v@4b@nDT;pe6&j@b~1RlN7{>)UROn0uwc=@T3>vR77 zY5q)ON7yVSDVwoSn^on;$#l&bTcL6^waP?6gU}Iig^p`ChqUaLRT>Wk;$H80 zP+p(6YZ?0d9cb_8&4zcMIq1Jmj9gwk^^QNz4?)>F&$YVk@95q6z12c1e$HbyLJn&R z5L0QJay{A8|D0Nub%Z=Q(k$hmQELY8Kf)>Ot?~#U5e^qhe6F*Rl=P@0Q&&bG{!|}{ za*`6_ptoPYq1#qk1?TZozFqdVEGW9k_JLyYqL=hzyEyr|f40Am)19HJ$3w}6w!ZZg z@A7wzAGV@1UOYDVqdZ6~1%Pvg*L`?13_2$6IOXzzd1}jCMt*+danmKJg~Md0vkUzv zY5QoiQO)}YF%dS41jBnvh+FrkG4BqZofG*;AWM(CP?M%OiocJ;3+C@|^i7FE6zK%*cmp`qTjB*8Ye2bEt9BpBDbG?nB2FmcZpc8t+BI zkhSo>hg0e?Ur#WQFJ3o%NsWtKC{L9F0`UtF>$y_A@Ku1%mmih1d9J~EBFv&9s7-OVgd?7TYK*4 z>J{tv6BOpvGlDA+%Ro*IIs=^Acs~4|f#>+8cb)QgN;i#9OE+|f|MwRA`3yq#8Cw%* z9{@f& zVG~uh6$S+ECo7pL*P7|F%P+o;{3t9VC-b8`R+lHDVX~sSE*{@Y?kAM2=@{bUZD}Q1` zflR6!E;%KTi*SNV9U6R4Kw>Gj=MG7$_q!E8txdG_n_9f;{X~BvY-*Y>S4v%@3XI*@ zHI@I9d5LSk8>XJ@H?;Nk^MVs2jZfcA>ob&X+kQyhF5m2uRoQ1Rw*7j5L>u5mDKbUg z$^Usc<^F0pc}#I&?V9Ve@@A$ZiIl$WCZksfy@0rb;IQc82?HSp%y)O%NDp)VIrT_878+Ng z4P27{;Qp|7bvCdb{#=V%IqmrX{BAY{hlih1us>;Patm+zZ$Dh#zn;|Pbl*(`O+|^o zb==DIKk(MR1gNghqQZRvH+)wWdlp*B&ZW=F;xaV+BIW1B?|valaQlWKQfMNAO;8=e5h8sI*?LHk4LP#+d~2hX zb@}!Ir@wSOPC*pKZUx^wbyOYzIrOj&yyzb}qT=1dS5%ZP&MPh zskffTTi*C{G`W)Nj?Mo?Ry;PYqX%meEB_q)zmGeAdK+&!_=ejYTx{|Gksg5;riCwF zpBAJ6JBpZzzq+4q>HQ?;89*!+uW6+J=D8~lhevk@JXJRZ&~Ga8gc3j|*O<8~)qAok z+eg*@hgLv!J3H@mA*Ih_zenD4%mQ&KH8%@z9<49$I?Je5tg|ZLZbJ64ZR~z`GavMx zgS65&XMjuq{U9-SA7Dsk^v^rm?~nd)wn5cbn&uthpgiM$@n4c82}B5~+;mp9c!T5Q zeENT8Gw%;zLR~a93Qrrk;0F@yR=@jS%(a;9irncl(eswg1~AR8=@*Aqy#`c9^bZej zSPw(KFG!}kjeEMSf0OO=^yP<0_4!Oy6P_+-l8opdBMjnDsi2uGqtVWpT^ET`q@8{o{lYOaLMdwVr8+m6B@8^@m(pkl+E4FE`w0Lb$N^Pev z3RRqz{-K`Z{2$_BflgTtUpozV3Oe_{L5j;&>Ci~Ugw$IN{x7r=9_~v(J?89#{{$of z@1Eag?u_a^Zsi|jSM&b`^BcTV{GW}&MXLrx~ z{rdmlmd4Jx@&P%}{5HKQ?!Tl4c!Gcf^N%m5{DA%U2oN|!_fiK8+TI5LS7l5d2mu&? z^_gs|)JnZea@g4^>HmZkUw7;c z6=(@PzjTylS|{t*f?t(o9moz^uA?}409IONj<#W_k+fsRv|D}7saAa}?WSp>i%iG# zbRK(&OYXAuBn5uE-@MKK-MiWvA7Cf=eMNlKVO%^UAo+K`>OAM#v6SVUXo_u&!}tli zjkWFGxP89kL3nEU$IZzn_FHxoMr-yUxRc2k7|;b6M8-0jKJcAPMXYN}4*uDN!>Rev`T)}947YPme--prG6+!ziNhCbH8Gq(NszjXeh zXe~Apn#^c+Z}$x5r9$3?Bk$(}VG1kFvio$bdCXoAaoh=lQVROQJ9{!xX5!X0&+ngB zz&+?w=4|BOa`m0n#`~JbaxcFI)Ja@$Ded^($MuiPqL}g7mW^$n0UzOUda-z+<9RBHXk}6ipwNoxiqDvnXs9k(5?=t}Xlk?+Mx~eYRa}?M zE=S$0pb-X4ucgam15U;{zsTR?Y$bO-KCdbNQ)(eHu2uJ@R?KVKeo}s6-f3Q*dr-bb z`P?#tnGdUeR!6<#(d#QKO*tX=>FNG$h5?pUBpMpzjL}MQ@BAqMv?3&57kUx=x>^=~ z_t}T9f&lRTBe(pZ`P<9oX+aawHvF;=3dvXVseWb6t0VHD+?6(%+4GxC=6M>mT=Pkn zyneJBs;-8wk+R#0g6i%LI+#MnV_QnbrJ@6-LR`gtUPJ5 z#8afg57tACF|W5ZKA_1n@HL+w8o3f-J=@>!0Jt!AdCuM;Pg*^&kq>tDKfGtZ2tj)p z@MXw!VDo0`DX-kN{gm8xcl1;3FZKQ(;VymEk-B_4`(}M~El?If?;G<$SS^A>xcw$HXgKpwQt632*=rnrH=m`(wGB%=w!0-13UDLzql}GOIlut~ ztg(uhcL6g?A4U^8k67bN*GiXp0YpCYr9z3vaT8qN5&O%xI@Kf5w08S;L5_)@$VP<^ zT57KLayRr^=dk5j08~mQ67vc9Rcy}SYf2xaf^g(Ewa12I}m zEkKx^iMyKg=S-sZJWPqJ_SWy0Siz0x5AfW`%)*Pg-GUu~efg0-|5}x)%+%B(iEI(R zupBpx!!<@A~LU zVhh)I+cZNz-!JFT%+Y8WFpp`$u^GQqT3)W1WsR`|ru+DPCiKCNKIQsFJz@PAO443@ z>K?8zlcZ5LdV*4{&h_JN+PCoPBM*AxyMVUjMBls9MPg@w-Lu!!vwXY(9m>^+ze$${ zidAg4*$bt)%zHY?YPMdV4NBv!_>?JeI8A9dlO4?heh!^FIRI@_C^J<0}Akd?Gtb4`JDP7oBQ=x z%@d_os|F9SoJoPYn-kD2JbpJrF3-<$Wk;E56RN8n&pug@YD3 zL2~o+6RLj!$5Wa2)pI+q#nlAP0|(e_5pv2cXA86I2ljtB+vcJ<24}*WKLj}up*9yU zy-~An7%n>7Q_Lg$l+WZ2?(+KE7sbF%cNWF!Lgy6~72(>&-qzm5buaQ{4ULRaj1|wD z#XRMcvazsz^LcSQ=J!s!9-KbS1dlrp%`%r*EGh+EM+McB(G$PGP%bq zW-Yb0yH==WaN+W1uNnI{V>+Yyqs4qGBesLZb-afaCY&yMibGzrEsX7>zy787NAn3) zjuZid3Q*0aMzW34NE(dfzEbHT&$220)RDslmiohtmHnV_}x96qb_y!(_Ov<@ZW7!jpw1=fnak8+XmborOG3_jajBg8V*&o^0AEc#Jqih44LlJo7G`0Mv6h6Qio z9g1=sgPy#)lO|Hk0l)4?vV%T6)s>CVCz&h5w3{v9u9N=O0nRzk#iiA@{}Ipfl&rP+ zLli|saIfs{E_Uk~ga|jJ9F#2H*%|Q5F_yOQJ|(YhC~uImyz&!o%;u!|vkJ)PNRv*) zYt_^kC*-xpEW39CsGYp*-Q1vvS+hkey6^y9NJ-mBN`Me^i6&PEiCxkBdc?r0ZfBlTv zyGlC@DJzXuZAkK4nHL*cE{P}&SxE6cpLTAqWyDDxy*V&=bfS{5$ku8T`}!km>1N*^ zhxhIyZ`F&1+st%qYK+Sb|L{P&b=Z5{nEEX|4`~6cEC(M-O{|UXluLe~Q5O-`LxT@3 zzj|?z@Kp8Nr>D@GEf>ksy1#ZKaVMKRgdmRxiMcYxc2H{Tf`P!cWmAoPIzq3JSTI3COR4W-n9Z|gIm_< z$o$rZ1XVMfuah{lgdMU(+s#H&e#-ZMf@ec=Y6V72DzMwzJU82+oB;6HQ-z0 z=L%&>m-3JXZj0?Wr?DxI3lM$1>Ti&P`OWcFndD23Q9l{{&`5aZ;br`_YS#5*Iv7dw z`sd`o^=Y8Xiz)T5Vss()w5~c_8UBnk{=9LVH(${D%OJ!BvWg3`G|MuJLenixc(LE` z-9ntOaWS)fena4flmS&?u{F>x!O;{+%}Q%1bL;|Hf)xlL;c>Umdj()nTyOhkNbwl# zXKeu?iKY4tvTR>uALJ#>5W94ZvHf@I`;R`lK*s->hZM5R5m*zc6FU_h< zfWV80L5GH9&`-K4Qs_L)q%N*QiR7DWr2z~O19!O0Y9XtKVG#*)#OVZ}DYA=IjV16P z1qd`U{(4;o@+3rWFfMnf#16{z+K}OfhK=l87)b;Hi?-TyW%|I*kf8WH*Y(>0e+M+y15+(G+sx{^ zc*7Dw<#kt~fQTp2ltbrdY(L#gZjnWEllc8uwIOsEUkMADtm#`UG}J`djv|%xd|;- zyz>4jD9yoiMo_-~C7FvQQKlvSmpiTM0hJ_roqg!2N@UjdGnODtKCXL`PvAX2xN}nyK_d{H7 zpb(Aes0Fw1x-TIaLbxh^U-Y+liMUFkQ#YZjQQe>iVNd08X_>xmWO~nFT#p_}yH^7l zi_GoiBSr3+l2DUf3Zxn_4+6JUC1L07CcRj|wlX`Q?V-`Vx0b2w+mT=QZf@ll!&%uH z>%QQJ*0?bCE1ar2&8Y=jWVxlOA>+Tt2R!Isdy+mOV)^-ffjawaghwhJ;QLWY@hQn;JPA!Sk4hX13;F=4DcFc*`{DpR9+^Kd# zotQamiOs`k6Tw|)%ZEwmNSgx8X1!}e!gJ`&z^&0Lc8Om7)I0XWJwYrq2#GhtyZq`H zjQEi^>XD!?gv%!eeF8(`cF@fuG~sc~HrIJYP(9h zS)&ON&S0!$l%lEssBePQqf|(jlu0G^IgGQ;wONf>v-Kk{XdsHmbIN#q`qV@^(?dug z5L-LiIv=Y=ul3n->oDHR(CSej<`(JXU<)H$YA32b4B3$nuD_-(uv>E_(v5Itwn&sW zi;-a3A;x+UxHVGM=0RFbxCk140y64lYWFUs__kvUV+^RWAK!Vf41QGXh|cfWue`O~ z*3>Xy)c|wm38?TB?pPRAp#=+d#wp07sV;_gl3@EfpDZDwS=b|q>0--dh)$-B)^&sq z#QdIt`xey^CyKmCtwIWp=9(b>W|yk;qO{9zS44hi)EPm46tnl1!wdgtb_=iF4#>?$ z@sP`#Zy>rZlUbW1EYVDt9umt^Wme#hk#4<%>s!lQkQ@FjEZLrXuub4>7x{g-_SbWD zBZ{|T24CmxrsN}kHT%Z*kcpOo?wHDK0wh9LuZW<6vNEgtxAe7z^#B}B;q<3?Ixm}s%a|*IJosu}w&@$4)^p9+73$~m9-UyIn zPi_(+eB@K%}^G-KSY9IgS~ z5MXd#^Db!+gph;GB*iUDmQgPSd8(u#5@@BljIqjN%RbIk{1M7fS!{?`*JA}`_V7w;$8_7a=FUPeWO+jf8T4&*EQ%xcwl4XoU|hL!ko(Vij+DbA#Z zYq>lQieTr|YN@YlHr^!WZ5%6!1xc{vYy3fP>dHN0_=|1 zhKKQQ>YE@=6J!THk3j~RkCS)XONQ`Pib;tiJ?bRw?UB6>AL* z3|HMSGcZq8<D-H^NEa`%sK-9X)!1dSH5Ymx#$v0?9Bad_uWjE^dWA^eLF*ZfeFH zbf?8vBVP#-qZ42P6_r9>dQY5iWRpy?MYIh2q^MX-`kh|&-8(JgKW`^=3%Ntuv-eQ2 zu4YSwfp-4nSN;bLDZDV4zy=j^gx9fG#J~heI0D&(36BE|!(p}QHJo;rbT+N|U4_U3QtD&QKj{wOFVciMMtMCfBfp-V4~<^1acV*@1R4(DF#J zImwAiA8?dxH&Mwq^a;qRm)G$|HDjx>wCg~M_E+_~u*AIL8l|}-80{~@$w)aGNQ&Y1 znVp0ZR|$L4MB8Dk_|W19cWkED?T|xohQ2f<=?Yl1B>nP7ie9_eRViwGEjGb?XlhQ+ zM6XB(iS;A4tT4?gdZ4NlPH4P)DmFL9Eu>^N&7N!$kHv60L|;WP27F5&-JdQ3s43WT z_#K#yEHf08nCv;|3*0Gg*{r4r`zCBX;gz_I$ZcZi_t^FPGDE&0wG^%zAEB&3 zrt)}+FO56*hM#u4?VwH|1dZq4?5)K0^~;M20aHzxu~-=g+WjLA!|%#Qy#Kp z)VpJT-8|*!m4>Gv6UJm-lqY9)?sX}7fRz$u9LhTZ9AB%AlSX8#P1xv#{g3)mD&j(P}sm z##dySNzpF!;v5B>fh*v%h&N(;?_J5R;~j<_g76WoY)e?%2urVqKL3yk4|@!lCzyE{ zXTlj`zqfQg5Hkjj_bHt8K*oZjL8q+r$d=&p%2m2+M?8xL5pU4|dNa0~j z2X-8T2Cu?g7_W6axX95ZM9AOx6S-d%$KO98P8v$-5*rw?%h7u_#(-Xxa-WliIA=z^ z&v0K6{FTl_u=IfH!h{KEN>hUa1OsM`UitV0#iW3@|3*Vncj(&t? zD-(dGaOX$E@2_|Z02%J^mTqw(q-kuAgF$BARfEkie{RH-=vu_vtxd-71wJ8jz{9eD zq{3SFZ9fQ{uP|Pwo&}r^0Zwo6+(pra!2MFjYRNn`zgJ{RgW*Qt3Of@zIhUr5;ZmU( zGd)5J|m zJkw<4AGQX~uEt9yu|}ZC5*gvBuZkFHLgu%5Qs;HM-|TckU+K_X?%~}@86q^pMU1u~ z_0isgaU=C)d)6R&k!xhJ?b@hA&)|BCDsgq8&7BVbiRf-2XPQ7`h=_S$VTNTM(X|VN z4SQsc16n;6D?z_+BG0XszNj;Eb}*lIw=Tl58;JCGNFx8nZe#8uwPZD3<)h^@ls0Pp z0$KI8{5Qb-bL>6JAC|O#M@HNIlmbJ{v{f=w(MQT9*AsdoBG;sP&uvk(*^ufQIj+|v z_@Z%+6vo{=%eSkjJ0tvUZ?kcg0B(hp9;D2d5S9mj)Oa-BLX|x zBh4TB=t>6Fc>N5$!MMVu?%yDpn+vw7Aozfj-9Em{QcIX&Tp%wtcV1pwQzW)tt!5n@ zOi{}ecO`H`G*$v=ZIS%aIytM-#Zvl}5sYh95qr;admG~hK3O7nI4r}GCHQ9M7zfEx zH3G$U9ST&XX>SC+>#dNlUXt}iuVc02beLnIxlBNF=Q-4Ny8y_4@9GTCst7HQ*$*?i z`1?RgbGNWD=LeN^`HwSJy@;jjs^|YoPHAroI%$3B%<6|6DG}?^w0Ns^fp!Vn6rvxX zXM@r13^I{8ZSSE+GV8EMe9pT@Y7gaC1>&5+e%_ z-3zR8DPC0%zi%Rn8p%*zDaI!4DY=%6!6sHaJ}pJfgX^YLht`?Po}zJ;jo!N}4I6DI za&I6qg2w4PP($I_x#_R!q?LLXcF4l?;g2kr7C7PW&v1QX#McO4bcSI;F`OD>gVz9i z)X^&&l{B+{iuOaKc_%Rn01>$i3wegMW9BSHxX_V}Szz{~FlNTWUhSIvw{^ptgpZ0e zOu^;X)#H6{B1liBG}sjY}qP0)RC_^ zNM%AREzd*?;F-%EJ~Ps_TN!G|FBj`VpE|7ORG`zT>~r+HP0jeUs;-0fjujE!vtQbT zG90g0)A9_msV5trMBviuO3_cH3J9E5fy{`irV{L3W$NdSlL#?m#3|Y_$+;r|+L#ki z|4JXmSd|tl+10^mq6-XUBcTGoF2q<3KnsW2;w}81VkQ43kfdXq@%D^u^@pG|D>JuK zRL4%xmC%QBl7vIRbq-38e16W76ze_?upfmL!hwAnT1R;(pZPbwBs!UA&{G8HOGWA7 z_?hc^Aymk_P&Xq4*dv8Q8rVcWNV0e}Vxu4uo2v!b-hhCu7!sjR?(BZ2*QFX3*lN%AO?>&Xj>q-c zICP$Q{XR385j~t@C|P7#2sPQA9a5;fU1145m_OMo4IoHX^j9&~_jQR|5r{8}{1mrV+ z9-bgL8uc;^@zA6h+1rtPATc)ThV#^-sY1n^Kc^!=d1QwQ?h`6}W#z(=hxz8(6~Ba~3_`VxX*c&+VQbV|-xKByg^MgtjcA%2Uv zWwq^4EyO+MPDzDT34kpni!Bi-Qb}nY#c`x&l;?I1V9?PxGFbDtfZ-a|i2GYIq5M*| z4n;6C#2Ac-`_z!=CQ0CWuyYlA3Q7*dmNoj!Jgvijz;ng^97=%!ta-rEC}K803E$<` zd7AmLA#o86`B2k3LR-UpquZVw&Am3!@p?yuw7vZn$5Y2vt-=GNLeWV03YMvP6a6@o z%$JLtJ4G;1rUe9k0{6C6(Sa&VyS_41N~}}tJP=EgbH{T6nNG_&CWuhu#fV&t2&uI2 z3{8Kfgixiic0-h*_ShQ85gCqOxk=N`tO19WgfXf!ZNT7Gq4_}*Z6kz@B}vFil&O6U zaiGHioazUw-#rfD?l=tvNTJoWUe;u<3jghZud$;cUp_61db%BlsMI;(VdVvlKmlxC z446tJ)qc=aV>hP=MRKYcBgDOP_0Mq;pgIHQy7*gp2Hyt*3TOhfo%u|%b_?n;1PE%;!9TIc+(EHKhMp(5rw<7$P2NB#)8h1s5@Y4}<-*`^J9=Zzf@?6J=ixZ* zUY+xW^5jTYKk<6cW8}%NSKLMDyk#CIgjAoCF9O=;Bn?QRfL!S1FC363JdVM}}BH3m^;_WJ|B!g)tqz;$S?K5wo{sg7}v30(GGms3Aq7?~n?1 zIS&|+E>%vI>^$M{M_?a;MOCx+;v#ngS{`^G?`pn|5F?M~_8cP>bX?zBo<9^(|B|97 zqGp{#nX5KJ7#sFZO?JtWGTl{aLLWP>)d8i{lDaIzOVD!Hd@x8EMlqDA?oeS~zFlE5 zBi4w^gMe&F<6>`TYet<|QTlWM{*8nU0K@{pkmO!GTAtIy6 z6gpo!zj1$_A5skXLgm=8Y>4z=G4>@*bJJSXP|5(}?=cz`Xf4y?4}Hxn{Qct_E1wze zvf}U-oqFz~&oKyFpK#dXgU3;(cBh2?(8E3U9p?HZe!BiCQ>W|DtTWvM+8Qq--N52+ zQE9Wq{j_ev93;_97zM*#BlTUoBC5kR6Jhi}uF@7>havCQUoaM1d$zB-9y3CKXi_V` z1+AjTVAr;8d7d%{eDsh8t2`9<8>(n?))^4YWet<&zUjr?=-4AW_BRm(VFw_-SF13S3Lv^}E?7O**O=u<4dV~2_oiz<;Zue9}V zOFwq8&4HmcqW(HaN}eixiN;$8Ig@Z2degBNOgc0xPphM6xC0XMHA8Z-;h|mIKOM?U zUv|h(gB1D9gok0cpN)GDx6*Lc*PU)BMPBlCSGd0|mwZCi-)a4YNEC+rUUMVJiv zI#2^AnUta7nyy9IMIW1vu1;h>ThXR8c7M$>jD9_1p#(TO_rx{ zkanl63gx_)UQ)S79{DI~PrsKLJ;ov-Uq@&)Je7)s87~5W1?FzjkTF8=K$NDvwi-WJ zR+u9J(wqkRQ*VkqbtNnkz22aHAFH_E{u6Kld! zOV@yT?eCU~0=hI)7=UPb?Vf3UKepcMhR1FzzX9Xu8neAL>oCN7B`TQ*M^se{hV02w z?TMK2$cFqHxbs$fc6t zw`)96;pEY)I1W^_2;sA`mVY09em01)u82&?i_*Wn=>rIATvJ10;o)zwGVrkUD-4~# z@0hiA>;tUFl|I-}KLirgSl9na2cH=f0j>Zc;qC?jEKW$9SB#3+MNeVC>V2`p_XYxz zT5Q$s<@qIjmf3VW;QO|;kHBljMbbSPd8%$(r#?tpm1>5g7+5bt6-KhmaOyOUaU;MG z(C$6}cp~4CXPGK$8@??nCD=K9-|i_@wY`(#6Y2z>Mc$=&()S5whDITV18yCFX(s&q zfX(8#_tLj55tLIqIzp4(N+XB^`LUYVuXDYitH50Tdiz?AcUvl;bcs4Y@F~Fk0om%0 zO|-V~5~-f-R9CTYm3Ygn)2$SWZy2mlON88;J8lAK<6nwDOak_7#PP)?iW53G z1vPgJ_vhOI^rOpBSLsTBP!vVrhVfiMj+o>TZ|E}QN7Lj9^T``hwjTa&QZCW(2je;W z;#AAmLzVk|CP)*oij61oOS7=AcjSImHkM#>DGyv2$3o#COwf4iQpDI^N?}0>>j7n6 z%6kh@49{y)55WL*@3A$o44@F2mFvmoB;|tSsVbQS@i$;VnJZ~`og-N!xD<9RC8P=g zGw>1PA~og`ImgwdHUw?5C0-J6VS*#mTM~lmkfXuz!c*E;5j~g5QR_KqbedzgB1s#3 z8UnM}D{{qD6vOjDZtEW_hlW)%j3nP8ApE$n!9SA07V{$a6Ta#JD|S3e2y!;-Mu>hB zKQvq!@Fm%*rLfdAz#ao>lCFpq0X{yZrVKBR0?SRnaCdDcdJnL^gF*Tv`=xRq?}xF< zR%E)z?dyPgp9Vy@##=&HyH^1_JRLAO4}&J0W15U~#SFGY0$)jr#T#$>oJd)*Wz`Jk z*Are6KlB_V)hu^(9Rb2>`9{4{$M5MvtAUvI$uBC>e^V{jM)e#b@C+~{c}451`kRQQ zO9rY$51J9asm1x ze&RFl$dh0|0QopxMfBrMk=%uZLy!lVty>?k8DQKp)Q;4v-Ni+^w;sqIf5x;dmg%Y- zZK=i`3(YKR?Q4eTA#Jp}07t^7VJ|dlnM_ahvM90Kl(rGYXj*vkw^oj#a%wz$<`4e? zWpM#65&(iaq|*2ws!wA!ZDhWPktWyW$OOk8ZqnIxC7Oc8p#@OdPi7xPIs-7xH}_I; zw_p}PQ7nzYy#+9D039weRYCz1)O*+DkEm>zPDmW&)PHnq%Y82I!^^tl77F( zExR_kulq3kFEVmq*SC}jN28iC!8b^e=M5AHysqAJvKn=xK5bcY7uhdy4(i*tTgLNj zJ36J-C=UUT#+n{wRMsKUzCtvtW+66pyAHi!-E_@oStJNBbN66dBO~+xtVd~x)c2iR z9uct73DU0LmJ}eWnmdn?qNP=al+)D*^=x_}8iT4bvQ#AtYou{C&1sR>v8$(~6ba7@ zv6%o!|4K=j6>q>&Y$i~zfI0UHL|-Qg`MOs0ZFA-{UqcKFm05`qCOa<&TUW5oI^n;l z`y($BKxN41fWaM_4)RBL#S55JW}BO{rQx9&AZTw&^i}-OO&O``*d`+=OW{XF+Wkzh zT`#1c?cNI%OKw~CmgHVV9HYfT{}O@f=|hH~W!NLZ@g3zYCDGClF8S#06-__%L(nzS z^+3j*mMc&j5wiZ!i#>POwwFIlnj2lh?wYPX*DE;|(N7s7m2dH>4)&`{Tvr_Fc@dClWPi4$Pf8Q`5Wp0CVp&14E zcw`>)$mfL?6Sc&rpEIMv9xfIbVtuex5kL1Nu#G*udPPqomZ(PJS-)!`?hzeQYZ0kH z0gcr0E#jy5GvZsHy%w1bh#FgRp~WD=Lw2ns_4kB1`zSLnBCp;sD~vj1hWAcrw0guE z1bc1WZL{9e!RVh)aO)ji$u?{ZK?XIh&vDZYJ|I_Jw<3xppkke;XPt@W?Btc!-h&MM zSpoo@N4mtmi13F!;VI0HfrCbx`oR*B=v#HrN};8`_#<7-(J7hag4w=k552BK=PC1U z8c0|Z;9xNJS~JNwwrOwNqzV17-*ieq?$=ACO@s5~9|?-VYCB;q<7w(L7~r+dR;;{D z@p(=H@>v+-6cw^k1k8Tuk&?RdVUAr*K9d3NZ_)stoIUv45BT^g@*ydmr4)k zS7pG%rM{{Gmfl{%Gmw<6Oc53rcaa2L(e1qqpvB3&37QMAY7O{Rzi@c#a*KdKEQQZj z`zsFvtwMghq}NBgb-kT;rjkz8l>X`xl%UJ1LnXi&673$1$VBjB%&iuFO53~2Mxu`N z2>n=09S4xvZJWO+0~fpHgfy0F#9vz_20%r~lULjETm+!F;K$6W%%3}YE1_`~yCW3{ zF$e(ONtfR(xn&*T)7sUP{JGh1DC%1?P#`*R1P6SCdNDU6(8~v)Sc`RBwZB86F5pZeyYNSSLO~tHm*52bOUuH_+gwGo7c(X+Ems6 zL=qx`Q>GN4q)Cz2f7ECAOqW>xePn|N;3}_lz_i^?-Pq;^#e7bNAfZF(*ZqiDQCJ0k&Qe$)1WTT%erl-wmV&PZK zsKRJKW*X5He->1zG{J%E)12+HHzTD~5~9(At;306z{VPIyhh~pg$hI9sxNoeGP*em z+a2p5ZG%j;#|~~CW%UFDGxq7iB6#~5h{|S>%t63@0{RXr>A7(3hgN#f^c+VPP@Nki znm4lVL%>q3-OZRm>fNw9xnC_IT8v@6dd)ha=Ihj5mF6o$L%|f9Tl*a}e^8{|A5cn6 zjrTFp=I+bEe^cc%+bkHy>hOTv?vsTjmJ5G2zbJnGD+#ay&s*b9LNj!y33I|WqH$$_ z85*@T)g%3e)$2O+cl;N=V01_)4p?xc341k-IYeyk6iz1Fi1vs9!|p-gSN)sX;9%at z{TWzXZElm(d8r)c)H|hZg17>xa4#85U_iT&+ayMvwCOHS4E@-Bpw}8hH?HFK;sX=` z7!K$)2R9-(2igwgxnA`&VIX9*mb1I`+~;@@QdOhktny5&u;jSRHm60+N&@rkpvil< z@(R`$mISKH`WFAU#G5a>Qix$oQUl896sRkSCAPgSb?-|4cahzHKUdj)tE{du=xEG( zZf552@l&s#k92JW9`TaBi#|9`vcLs-~9fS2E0n|k1|8~+%ROeVT{!3 zllQzP!#7#i=Fj{+G(LB(ri)v$Q&#eegmz*D4w=H`m~_rD<=AABa%FwR(C4u+kA5;b z8QPp^|HL7!gImUvU0)V|VEs4W+W3bA0ak+26o*)%z0*AM?%wGg!(lsoE@N|>cu)1M zLmOIkG=WI>>kq?sE#do^0b}K}f(2LgrJ*yJMTz6$$LiqCBy%)>p$Svh*VJw^F?LuDrF&iH!?ABs%;LDTmOO7?B$-rO@R3Jb*V! z?W*gE@*=yfpD(lyo4@C(1^qufeS199ZTNo@l2ejX4yz;&3Xz<*9rUnL{j;DP}^3VKL0i?7aOx&-eFzegE*_SnA+StgOg58gIIiUJ5R5l{x}`hWmhQn zNmS^H-Zz&+-X0@o=OdDp-*a~` zrTA^k-XrzT2`4-@tX5?{803T|Dg|OBokQr|;ghRnUl+!F(<38_dml(ISK{}6OKli5 z<0_u}V4*1Hk@O{CzU`S*-5fZ34A_mg<_g-(xGFSw!6pk!+VQTk%>uhUHi)J0J>+~< zn}hHpxEOLg)xiGKgG}AE%av`aSV!RM@wE#s-tb3aKXgB&0!*zs`Q}fRl5ke{KZRr% z(V}}pie9v-{?E=ub6wVqPHRt>i z?FuVO$|}5k$?!-oH5=gE_VF0JR*{p)gy&SN^#4T!UG{wSYIUxYZ=Ur7ukObuocCye z?+=(Nuoo@X@ofhd=gnX38{NLYr1KDG;+V@B?C*yxo3#sNKGfU)y&q`K-ZGeu-4~MS zY~l^if!?*p^R^&r{u$Q3L>Qs3!Ov2+txOps7J+MI7bKo{1W|JgZfdN(L=gl?OsQBt z<>bUJ0U@XXw+1&i?tKz-U%Cl5>>DbT2P{so#0oDZ^X*QY6qRJTBr4&a@U(qDgxzM! z`@LnZlw9@#p?faAB^eg(6 zr&M)XXVMibD^V6kPjB&i`#*AINzIK}%pK(&)7-BcTi;cX1z&kiGuneimVb+bh;g3f ziuHWZUyXf_;c&EJK|f0H`OzM+xKsIC*N)cPFgXq89P_csn(QM}c}D85hUZQqV-Xba z4f?upqXOu2TK{`EBaY97{H5C$rEqRArZ>&vSl#~^K6>(8NamPcLus}VKB zVFg~a8Vlq(j}_!Ui9CnkRap2(A}WoVLsI+SL1u@&zPyE|Pf}f}G^~PV&`yZbmwMax z)^8KH76R2wxZ(c_V$IUyB(pfH60Y7;NmfNA>`mUw`*+YI)pRX~74g3V0{z#_SezXE zCm}O7+_nSV0qW7tfRW)vk35^iULQWUX!u10B|G~SkeBRU&u+3rc{bP)4o-AVoodL? zuWCDkeSep`78wLV$a({vcF4C~U*mrD6}$8fX9k8B@d8a1-xK7VfM*^-_0OR_vwN9J z^cY!O63=r9-mVF}_IG?NtQ+#+QP;7=HTO;%;Jhb@$nBR#SMhDwV#|Ki&i@;3j^u*J zG1Q(@;-Xqr+z!-UV+lm#$||`6DsuIBgEBiW&FaD6kzye5CGOLgfO76Xhdy61KIVdtE;2`}`^yPOXk z!`=gaq!R8A*QGlpu3bN8n5FnM(==Q&$@lJ1qNQ~18E?E+!HsD$7p#*}WhH~Ve!8_7 zB5ph9C4Z%IB$}N1kQY6*^E&uwU*jM*?Za}8Yxu{*tRRWtzHzj|#klMx1s8nKyz8aDdyp?+masxgYZbMcRWL>DINB*Ktrl1q=PKSJ;Prkt}OXd zpGRRkO-{5uF5X5N+2I!ltdYFPXtnzx=Tvey6No2mUEnB3+dPKOOHZX>9IPRLeFx-~sXG-8{1#4_nkQWl}Sq^C)Y4cB%!)=D_6}rWULO!HQX~(eB z+!K72Q%J(KFx1iTkNZfw4F8#N5-V1c4wW40~9T{AZ3}M17E=^rsJX zq&P{9V0lXNuy&1j47)?3vc4AfwRj&~v3adZ3Q*azObDjqabWjUI4Akvq7Fz#kfa@b zQlgT(D!wtt6xHzR8aoHEnQsYzY%o&#WkNB;0}SEs7%YNA8pk1pqP8q=h&FZ<^i`t1 zzLxVf;dYe(aSYq-by8wH%w1SzpL<7jO9jjh z6Z_%x6zEJ`D{%jwfuRj&>P*~E?nM#}mW>oZy z3=>0hAfkZYxXqT+@_w2|GnQSw?8{EH}lgJ$!Wh0&i3Cs`}@*g*@sho!hDQ-ff?j z8j}K0(!Z_isUD+gF5$L_NDrMbO~6saOE!Cq;w2glxSzR0eI1_0GR9QSkaW&8HtHv0IfykS7(; zbZM2T)KaM_4dx)y0EUkyg51hObvKX)r{RvG*uE%U$cBbnv&vLZkp3T6Z zpkGz`b=uNFgi!?4kQ;Ezxm{_%X)I`bK4mluc7XW@TTAU{(prlv%XbVX;cogVx`6B) z)PiDNerC9Zle^$yfXa0tf=G?=GarMnLzKslb}xVQ`Lio}tV)a^GD(Wd?XlrS?N!Uf z#R3P>MGMhQk?_x_M=bf~LJ6;m`go50tV888qTGGwjMQ$k_Udyf+(qqoZPaV2)Zjmn z%@WeM-i(iZH`+!!B9V+lKYq4m~95HvrQ;^bTWHQ#rNP{t9SsyMk2!mt6F|#GgMbgLWA1*rl5!$puu#Q>x$jIC48rR{a74i`%JTV zTaN*S8u6}5BYyn%W-(d16){*tR$}K<#wZme{XeMD) zAmk|wYC`r&3aK=Ikw$nCy?OUqe%Zf8~;GYOKd@^k`^XaJKBB!^Iu@gJ!?s+mtENh<)Q+x+^ zTwM?8es~)e)t4~H5S%EQZ@n7dB~D5guI?{&#p+7_^8`i#1(!cbw%$lpPd5Rg7qbBL zsfwN~1LS9~n$_eKQhfVnzu$kDHUuB!WYzYYrmn&V&|G5DL7mQo&4DjUihLp@mJK5K zH9pwS_^oe?6U%;FyQ0i=tIy!Ql?wwrpP2ww@*;IDiHzPi;6W|UV-XFIQ3)3ZS9ZKE zi;^{}_l*!fg_hFeC^0g2gNsiXD_T_AE^5m&nxH9-B+&kH`fgk|)fJ(M9Rt<`ZN=AldoP~VpOgCF?+Z^x?mW~w zYl_OUFDCROPLoh>?}*j`@X%n%?|lSvHf^gFXj;)Z3+6g+IRRLfE1qY8;MNzs`gDEh z)(-P1>FAK;?5i@`X1{J;8S4-zXmj&CwFLG2a^mga`QtfrRpgq=@?eXda6fOfMDJj zk)G>Y+CDqp$M|sXJ!(^QWsl2?%-Or`dObo-9g z*|)%9eAtftH7PoCgJv6hKEP?8MbGWL+LWqeVIlcO8Ki!6sAxhyTL+Y|8MpFR^dY20 z(jL5tEDn=f(voSE_&u>@d#pN;2g2LoX~Z5imcq@_-&OrA!CT8s9D76cSg&26sy5To zt`G+4kReHW&S8bqpM_kzKweF_Kcm+fLVG-H^Ka{Km5EOOMGCFf>^aXgme^x?7ZN&w z&TGU>fjabn6n6%_m+6^D`H=;H7<)rmVXL9Rs#jAAqRgdLpRcqQOE=ivkgUiH;vId# zrLmDP1<`Q;D;Y80$Gpe7!Tk~iq+->J|G z8G7L#_j=VC@y7r#1w)y^N+F#F&PTC2w2hhCtxkiOK3;IeyULAeVtBg-&5k;CZM!=8p$l#l{p{8@ zPJ|20sXVgV;oXr~|M1t~Wo9MAv9Ow(-n6Zz({Z@fse#h^P9=a1zUtKXBq|kN_Cid0 z9anDdA1h=={+N79`;?;QM~<-b{|Sne<2W>WPGsBLA{K_2yW#@Oo3d2KAUG{RA?|e% zUO0ahYNs7Y;N97~9(m%}GTawQbFY!U*(YAIj#2YeMcoxcN7J3cn)A>3WFrjKXQtHpBX> zQ;}UVxeg-Na`dZ904M>?1deFlGoT?Tb^4C5Jl0YL)tBnl#7F>Ja}d977$mU=%W3@J zV!D;v)7eiUS}4_#3bH}0Qd5@9+Lp@sj~;8KwaSsT$DNinm)wBl!6c8Vjyj3N3)cCU zi*AiME*-^gUv3YxlI=%_m%T8a>v(a^{ZdyfnDd@07~-)9bqn^dqi;oQ{O}@}kk~^` zO&JQ|MK1{KgSo5D`?ulJMc2z%C|DN49raR^PBxU%<3$cR(oA-k@_fZcRl$zpG?=M? z0gs!!dJYcq`;N$8-_+<$><_i~n!i*ii7*!MReM{qVQ~WYNR$nSWPnUXFA1^Ck|Hos zaR~HUCb|MzK(`)2&8-suP#?Vjc^Ya}Lgl5V!p|a%8M+SYWza!0eSQxU=H63wAEyf)kPW#surlZBP9WeXCJf2VIa)GZNXf~Jc@@xvY ze5lPwaA@+sZ~Bxh-FGiP)OO#kljSy-qaOw}j`6kupsbTX%;1FFW4IfT$VQ}1Km-N% zDbULY@U}UdrcCoc$3506h{mQ!WKzgK@qA~d_g#6XsEuQbemRc4WgcmKj~>SYEfG>bHl z3EX;A4lnSuli=}H!gU6EdsuuYzd=T6ooeQWP425JZ5(ir-UPsaHhua*7cZa(a_~DT zN#y`oaj;F3PH|C2K8nAG5#?XzxiC`h6>=+~x@ff67eM&-ms(mbxK}Zrf@`BVw+Y_> zI3Qp6XqQ+ZLYwPm3|>8%fp~z73>+Z{!bc#VBIZ-)c3M=R;B}Bg4s;em^t6aK)uqj#2B}t}$})J!Trxm2lev zRgkn2{5bw{eULdPuB#TD+IQ6djJL@_vG@AaJ{Rs#Yf^%1%ENq}uPUq5*VsB^7eJO@v6HsJ}Q|C)mt zk9g|3_-_=m;wy{Z)mew87VU34Qja-{GXIMo$6FgTWBoG|*=eYM6uU(QcX~8KHeB=a z@51Sl6D~MA%^QFRLcFgq{=F(^B--yNTR`wWIyvAJI>;~pBD52RwtpO`}%^`^^LKazHa8LWIN zsBpV`bxGtj;be$j|kv9JZpCy$g86$|pbj_d;~(I)WJ&*%DZKY2B%+fuFO znYh{LnaB>+^?S@Cb9bzHwr$@VphdLLnZDlRrvK^}v|Y!_NK}^f{HvD@f>=U)VXoWE zVI-*mn!^#a#Pl^;M^T=pV*g$WZ>%-@DG3%Mav*1tPvmZFH$cDPTv%RJ$dhK%nls+< ztYeFLen1`5dD+rQr_x})d?Qa6h;$SIwNnB9>^Uk^T2fWNywwF(1dzo)r-2?uZ)R5b zrev}T5^_=3-cKSF{1y^>ryokJX?wfsrNg~g&V|#f%!^@@{nWio2gWx`okqXPa%XP%$c18Vj1q&V2UMJI>c?b>gMf#H)YY^Eh5TOIUyq@Uzn>Jyf%EE`y9kay2|Wbo zpD4GMsbA42zN?JY_2~U-@EE)vE_NGnZ3AA}nDLy5I&H0>gD=T}l@Qm%z9!2FYb&A z;emRdASr-zA?redqe|Us8s$^wa}p*Cl}_r1&!(PO6N6tG1#ElsUky=~r8q-|%)||I z>Y1YrS050%kX{feDh*P6%1MF_AVz(hve&C&z<0yt{ElB#Ln-OiWR!nF$=eJr-fL1x znc(eW{0Y+`q56}So)fR$g`~cMxVNAT~!Jo=Mq;)8Y*vz&knty**TZ|5d?y*lJb&dO@N^ZD#Tqk<(Q3uQTDV z4r^t0=~0Ri{4voZm5x8S+;5YzD=eNU)TsIlR$&h==F(ME#-=U9-SMtiK<;R3&_A2O z?efb@1$S<7HU7N({aGH@$;;>1u?j97IKX6V^$VmqjiC3FZ1s=%N^BXmjYc>0i%A*{ zmCzE-XjM&eTl$`Px%a!K0GE^9IA|`J=HGDMg_qoZ*{05T4lnbVAUkah8#EIQe1L4m zU&`el|6ut<90gPYWFr6RE9#94v2>VxjXkO#4HR_Ie+cC-N zL&+WhCl-aZs=;*ULqA>KO8^co6PE0o#AGoAzq^b7O=WM6Jr1xwsu8$b1<&w|hxqnb zgXEMT{<&{@Hn%+s1hPvMt{c1Hug2$uoYn$1cZcDnea7P^-qbKG?yj0OWZ*rE#w|<| z)Wm`2*Z`oF*M(YK_3CZO3L&z}SdQA>1zn3rThWNrV^(Uo`ji2Q3qLiVrV=(MwhuKd z)nt=zKEwBTq-yha0aJ2c4G8r;i4`~R<`C=>XU>s(O1knj#RgbcaMu;Wz$#P>^xrsx z#1XId$0p8^yuA#;5vjWKEK@5lua4MOjr?&;>}AoYI*5`~lrJ#<;v1~(7Z0ccoKfa2 z&7g?^Ls;BS*96g;&P+ShZ_}O?zC%|POVb1(uJ8ttQ9t&SS%)M9NT#a#Smid%(<%)W z65F7%#nsZVN^al?&7R5no1v__loEvAf@Ivu_pV&;*dr)P}t+ZzD=Gk)qDCSM#Q zN2}35r^8C{kCPVRmJ?mF^%yJ2w_Q)3f#x^+oo+k3wlcL=0%YaE^QjB%hPlX=FBd2T<7 zr1EEx;z%VSLuJ15Q#MTK!nQHW(510EI%mPJ@~q^c@91N^j&fwuS}>cmAV` zuVy3w{WMY>vXaI9yB>D0>wq|an-$S{uYY(^Wk9NJ57tD7@~>uP`Crb&Dt3C)aLn@2 zB>rz=-bEX`k#bd5jfielX@@^lL7vlM%9&9gfBYlS?W zQV%Osfu~{*;=*ek&};VBNJz7ufLvyM-Bc0xJfHXDJ&Skkv)cOOy5`wrXpV~gEne8V zCF2JZtEMoB>2W?@>`jUL_Cwn1K?ydmlWs0QBu#^suWdfixk>!C=FDFOojMc8%mX0@ z+eI{2ohoWE`6&|a#5;<5Crqe6^Kii2rkfHxF=|^scFr(t;>kOWlz|55GiGeQCUqUI;~IDB5TQ|tS+Ud42_Yf_s>7$3t#EdOVXg>nqjT) zIllTx#!%~9?O)$sX!Nv@btxma1H) zSDke2LChJ1?4sjkwQK%Srj*$J zby}$wA_rj4?fkPso5)G)SeWbp`}9Cbs(mKRWxy@0G|YPNqom`l1k$yyHOB@BE#2Da zM%C=5Q={c(2GnS1#4FV2H=>)K%rzl+Iw2Y0oY;jK=F2Tjf!w}_e5^FoBkV8m72Rei z<@rhva{L0HGkWz21V@W8jOfWZ>nv`JJnoDRsx&QBC$t=`GaP>oH^W08mOK|3RWsf# zif$**D=DuEuiNfkIY|S~Q+-Rsw#ka$ibbG>=7H3C%}?_Q$y;#i+`}ZfS7_>MtNN=n zbDN;%US<^#eL6oI0Znn^yO@>cU=jkakW%CAuAH~tj_MD;2D_M&~UmklHa z;)ZCrMVk`idA%gL7a6{!H+A>{op=yQ1UHg^bJW|*deeEh{f^rFJ+ZI;t_Vy8m{CX85r z980ZWox6HbYRc@_yh*m>B{`(4Ppmd4=~t0=QeASVfu+Uz;^vZEU-*A1T$Pl4P@G#F zqkAmoK$e*KFxRICZ8@bPe(d`tx`O;P$*cK;iRxp0 zuI{(4ZNs#i5&g^u5@v^ubz?4dg$nmg| z#C{ci&Vn^xXTO)|B7Ew7=DuPny)Z}k&-aoelx4>i>kc|J1BNB87dWiwpi7X^k6Tr- zyW2v<$H7#mYN|h)#&ZW6)8>Q!G*1XnaVtDYuHg`9MqFd=aGjDg;ONDDFFC~ZIy9z9 zs>o0H=s5W9EKRbINyYj6IhTIx*}>c!K@!!R&ox`%1|HYM z!jzDp_;UVXQqCCz0vv%>B!|nre{XOoY9(6o>G*bL7QL`(c+%L@b zw9}dAw@MB#Z-V)Z!EcuJA6`b#2R+bT0YCDKzW@PC^O@*kX2yVLa(_cnJ~#RUwO?AO zuTtR(COHM6O6Ys+VwBBuof_|{LsC0=8Z*zm871C$XfYq7R@=dTs#U-E13YI$nExC% zOQE+m8%E{cGAOg#xVLO%!~;CxCgL(k^{V;0yz-YN;R!U--n``O!6Re!m)IL z3vNyP&Q(0=PrjS{led%L6Ie}I4sK(rS4*{FQ8VR-+d5NwT!u-A@AS`Ug3lkGZ|A;Z z9W1xOS0YKka@cR;djRO7_8(<(z-Me$dO=FMUyAY^j0d;v10HMp?zo|g+Hrf(FCk^m zTr={UE>*g7Sel{NKwMRYC7yw1B`4laGW z!TzM=BuHup-y2U^OCfCYCWJME5ov5M^(PgRL~oz1BKQ%E*z?$rhkeyBpBd zkDIP_n2!QAq>t0W!l_TU?jqhhIs3L{f7Tv9@enP{G07vGdYB_%R-$A4K!7@Ud!!}#!1NVLLx7O+QRTTiYK zl4?&8HkB2m^lcc_UsVT0qaZlDlV8e-3v>ii<+%PQR~kP!YlCxON$|E=aBL2~3)tiW zfO=Q%0Mgz~C3;pqAoA7EWBFqX{5J^OWe1(p==b z=Ifr1fxrik+fTBRWZ!!H*RtA2wZdJ;M3Br%3DrMBNPXNx{Zanlm4PdvN)IeOILv%a zRs`^K!d$#I-;lv=?G$=v3ED1%0*_COf;dhCYcn6J60|9Ue4*>aGu- z*xY}y1Q~&Uq3%P!BTV%{<`dVOhO6-7i_?e1<|Bcl?K)!FfnYSBAp1==tf)JohHzJ^ z`tH*6q?-M}eFP%Nn5uho&T@)EJBJ1mPeF*l@|kqSaAjJ?FY2kC%Rhv>8Ulye-~yzw z($kmdV;bc@@D`9F3)Gc_lxoWjX-@dFV5jfqu9w=e$j3%qK!$}QG{DAi)2*$*~G z3PShyM8I7#EI8p|AAiQb6xH7^zNFiHey(k}&#Pt0cKJi>SfkJ2)lAFNEeK_F&!@sS zhQ$r*{x?rj-OZcb_)nTMf~`*3Ee(JBG#~wA%1xd za7I&;55OO_ofqz!7V5tFeM;!&|C+Uch&|p?3d9#u*EDu@F`*#3198&>$oS8pB_Nem zfN`rLjlP(o4P+T3t)Q`JM|Z-4DM@YxfPFvBxUDnG)#>*v&!L&XmOsm^WG8^}YVrOI z8k&a`8kJMR5QZpK+^u1s%GA%_;`=n~7Y7G^XH=!Atvh_lLKvO}4wUhGeV23td7yJg zz;^mQ=BoH9OLQ|6xaq1063T=8V15p=``g|yH4rv-J(?EHC)l&@_@Z(Du_Gh!i=8%O zUS}fQKm5Gq$DrIY!Rjx^`ivbP86+hhD8}GZ1TF~^VZtWD=S<_z-iJK~fjug6ctbo= zu#DgD9gQId7J-ynFGF(mpTSGx zQx(lQr+Lyzx4gQ(RcTT`^Gq2-tXh8#o=r6ftO}sj4BO2o?DY)FtNSSlu?t8DCp5^8 z!~DTHo*P)yKm)m4vRUO_^buYFKW-Ln&a$k87PlS}0Z@9)%|N0)S1k!Ny(s-O`{`N3 zV=SDRP_ua=$GC~Qc(%YCRZPF&v-qPmYNqDKEKa=&j3X|3j5i_%tZvJcdtRIiCvoFI z^*yNDurOX!=_KU0Misz3rO+G(4+6u#Nb8>&qP&cS8TSwc7sFmE0j2gQvGr~}$$3*- zHtqn#B70hQb`QX5VTh0mj)rn$pA@XxnWuG{>n{hqBI}ApW~JK6-o!w^z*z8Unve8$ z6m}0E`{k|II4uA|uq5%7SHn9;~R*vFbkfM(4?` z@~_#RE?Q%Q*}X4UY7fg==v=98d}DmgLZ^23>nn9f?!S2uFptO

                          5sNKSOT1?0>D~JT>8GDFewcq1+ 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

                            WrER6PU?W#%&JRn^^ML1E?rlL7b;iG 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 From beac7f18f15c687ee3e80d254e761958fb1ea22d Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:33:26 +0200 Subject: [PATCH 22/66] Update md-link-config.json --- .github/config/md-link-config.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/config/md-link-config.json b/.github/config/md-link-config.json index 75da339..1a479d9 100644 --- a/.github/config/md-link-config.json +++ b/.github/config/md-link-config.json @@ -2,6 +2,9 @@ "ignorePatterns": [ { "pattern": "^https://github.com/zaphiro-technologies/" + }, + { + "pattern": "^http://pkg.go.dev/" } ] } From a2307ad9dc173beb385b79098b10db44724c42bf Mon Sep 17 00:00:00 2001 From: License Bot Date: Thu, 11 Jul 2024 13:34:18 +0000 Subject: [PATCH 23/66] Automatic application of license header --- .gitignore | 14 ++++++++++++++ Makefile | 14 ++++++++++++++ examples/go/faults/main.go | 14 ++++++++++++++ examples/go/measurements/main.go | 14 ++++++++++++++ go/c37118/v1/conf2.pb.go | 14 ++++++++++++++ go/c37118/v1/stat.pb.go | 14 ++++++++++++++ go/grid/v1/FullGrid_TP.xml | 16 ++++++++++++++++ go/grid/v1/data.pb.go | 14 ++++++++++++++ go/grid/v1/data_test.go | 14 ++++++++++++++ go/grid/v1/device_event.pb.go | 14 ++++++++++++++ go/grid/v1/event.pb.go | 14 ++++++++++++++ go/grid/v1/event_test.go | 14 ++++++++++++++ go/grid/v1/fault.pb.go | 14 ++++++++++++++ go/grid/v1/fault_test.go | 14 ++++++++++++++ go/grid/v1/grid_event.pb.go | 14 ++++++++++++++ go/grid/v1/topology.pb.go | 14 ++++++++++++++ go/grid/v1/topology_test.go | 14 ++++++++++++++ go/platform/v1/task.pb.go | 14 ++++++++++++++ go/platform/v1/task_test.go | 14 ++++++++++++++ poetry.lock | 14 ++++++++++++++ pyproject.toml | 14 ++++++++++++++ python/zaphiro/c37118/v1/conf2_pb2.py | 14 ++++++++++++++ python/zaphiro/c37118/v1/conf2_pb2.pyi | 14 ++++++++++++++ python/zaphiro/c37118/v1/stat_pb2.py | 14 ++++++++++++++ python/zaphiro/c37118/v1/stat_pb2.pyi | 14 ++++++++++++++ python/zaphiro/grid/v1/data_pb2.py | 14 ++++++++++++++ python/zaphiro/grid/v1/data_pb2.pyi | 14 ++++++++++++++ python/zaphiro/grid/v1/device_event_pb2.py | 14 ++++++++++++++ python/zaphiro/grid/v1/device_event_pb2.pyi | 14 ++++++++++++++ python/zaphiro/grid/v1/event_pb2.py | 14 ++++++++++++++ python/zaphiro/grid/v1/event_pb2.pyi | 14 ++++++++++++++ python/zaphiro/grid/v1/fault_pb2.py | 14 ++++++++++++++ python/zaphiro/grid/v1/fault_pb2.pyi | 14 ++++++++++++++ python/zaphiro/grid/v1/grid_event_pb2.py | 14 ++++++++++++++ python/zaphiro/grid/v1/grid_event_pb2.pyi | 14 ++++++++++++++ python/zaphiro/grid/v1/topology_pb2.py | 14 ++++++++++++++ python/zaphiro/grid/v1/topology_pb2.pyi | 14 ++++++++++++++ python/zaphiro/platform/v1/task_pb2.py | 14 ++++++++++++++ python/zaphiro/platform/v1/task_pb2.pyi | 14 ++++++++++++++ sonar-project.properties | 14 ++++++++++++++ zaphiro/c37118/v1/conf2.proto | 14 ++++++++++++++ zaphiro/c37118/v1/stat.proto | 14 ++++++++++++++ zaphiro/grid/v1/data.proto | 14 ++++++++++++++ zaphiro/grid/v1/device_event.proto | 14 ++++++++++++++ zaphiro/grid/v1/event.proto | 14 ++++++++++++++ zaphiro/grid/v1/fault.proto | 14 ++++++++++++++ zaphiro/grid/v1/grid_event.proto | 14 ++++++++++++++ zaphiro/grid/v1/topology.proto | 14 ++++++++++++++ zaphiro/platform/v1/task.proto | 14 ++++++++++++++ 49 files changed, 688 insertions(+) diff --git a/.gitignore b/.gitignore index 0c809d2..92aac7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,17 @@ +# Copyright 2024 Zaphiro Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # If you prefer the allow list template instead of the deny list, see community template: # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore # diff --git a/Makefile b/Makefile index 869fb48..ce6fa1b 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,17 @@ +# Copyright 2024 Zaphiro Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + all: proto-lint generate lint test docs .PHONY: lint diff --git a/examples/go/faults/main.go b/examples/go/faults/main.go index b019a53..11704a4 100644 --- a/examples/go/faults/main.go +++ b/examples/go/faults/main.go @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/examples/go/measurements/main.go b/examples/go/measurements/main.go index 5fae202..908d094 100644 --- a/examples/go/measurements/main.go +++ b/examples/go/measurements/main.go @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index 5860a6d..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 6d6d0b0..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 diff --git a/go/grid/v1/FullGrid_TP.xml b/go/grid/v1/FullGrid_TP.xml index b869c8a..8d240ea 100644 --- a/go/grid/v1/FullGrid_TP.xml +++ b/go/grid/v1/FullGrid_TP.xml @@ -1,3 +1,19 @@ + + diff --git a/zaphiro/c37118/v1/stat.proto b/zaphiro/c37118/v1/stat.proto index 62a93d9..3c38002 100644 --- a/zaphiro/c37118/v1/stat.proto +++ b/zaphiro/c37118/v1/stat.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; /* diff --git a/zaphiro/grid/v1/data.proto b/zaphiro/grid/v1/data.proto index cc0e1f7..4284171 100644 --- a/zaphiro/grid/v1/data.proto +++ b/zaphiro/grid/v1/data.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; /* diff --git a/zaphiro/grid/v1/device_event.proto b/zaphiro/grid/v1/device_event.proto index 170aa21..9f57985 100644 --- a/zaphiro/grid/v1/device_event.proto +++ b/zaphiro/grid/v1/device_event.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; /* diff --git a/zaphiro/grid/v1/event.proto b/zaphiro/grid/v1/event.proto index b33d418..df19733 100644 --- a/zaphiro/grid/v1/event.proto +++ b/zaphiro/grid/v1/event.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; /* diff --git a/zaphiro/grid/v1/fault.proto b/zaphiro/grid/v1/fault.proto index 31ea4cd..25ca4e3 100644 --- a/zaphiro/grid/v1/fault.proto +++ b/zaphiro/grid/v1/fault.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; /* diff --git a/zaphiro/grid/v1/grid_event.proto b/zaphiro/grid/v1/grid_event.proto index 9a7688d..6c88849 100644 --- a/zaphiro/grid/v1/grid_event.proto +++ b/zaphiro/grid/v1/grid_event.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; /* diff --git a/zaphiro/grid/v1/topology.proto b/zaphiro/grid/v1/topology.proto index 3e3b622..40ffe08 100644 --- a/zaphiro/grid/v1/topology.proto +++ b/zaphiro/grid/v1/topology.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; /* diff --git a/zaphiro/platform/v1/task.proto b/zaphiro/platform/v1/task.proto index b9f921b..ec7b6b2 100644 --- a/zaphiro/platform/v1/task.proto +++ b/zaphiro/platform/v1/task.proto @@ -1,3 +1,17 @@ +// Copyright 2024 Zaphiro Technologies +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + syntax = "proto3"; import "google/protobuf/any.proto"; From 3444a09e342303ec0b13ed9248210f3608bcf7b4 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:35:01 +0000 Subject: [PATCH 24/66] Buf re-generated protos --- docs/conf2.proto.md | 2 +- docs/data.proto.md | 2 +- docs/device_event.proto.md | 2 +- docs/event.proto.md | 2 +- docs/fault.proto.md | 2 +- docs/grid_event.proto.md | 2 +- docs/stat.proto.md | 2 +- docs/task.proto.md | 6 +++--- docs/topology.proto.md | 2 +- python/zaphiro/c37118/v1/conf2_pb2.py | 14 -------------- python/zaphiro/c37118/v1/conf2_pb2.pyi | 14 -------------- python/zaphiro/c37118/v1/stat_pb2.py | 14 -------------- python/zaphiro/c37118/v1/stat_pb2.pyi | 14 -------------- python/zaphiro/grid/v1/data_pb2.py | 14 -------------- python/zaphiro/grid/v1/data_pb2.pyi | 14 -------------- python/zaphiro/grid/v1/device_event_pb2.py | 14 -------------- python/zaphiro/grid/v1/device_event_pb2.pyi | 14 -------------- python/zaphiro/grid/v1/event_pb2.py | 14 -------------- python/zaphiro/grid/v1/event_pb2.pyi | 14 -------------- python/zaphiro/grid/v1/fault_pb2.py | 14 -------------- python/zaphiro/grid/v1/fault_pb2.pyi | 14 -------------- python/zaphiro/grid/v1/grid_event_pb2.py | 14 -------------- python/zaphiro/grid/v1/grid_event_pb2.pyi | 14 -------------- python/zaphiro/grid/v1/topology_pb2.py | 14 -------------- python/zaphiro/grid/v1/topology_pb2.pyi | 14 -------------- python/zaphiro/platform/v1/task_pb2.py | 14 -------------- python/zaphiro/platform/v1/task_pb2.pyi | 14 -------------- 27 files changed, 11 insertions(+), 263 deletions(-) diff --git a/docs/conf2.proto.md b/docs/conf2.proto.md index 9641083..69d80ab 100644 --- a/docs/conf2.proto.md +++ b/docs/conf2.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing PMU C37.118 Configurations. See [C37.118](https://www.typhoon-hil.com/documentation/typhoon-hil-software-manual/References/c37_118_protocol.html) protocol. diff --git a/docs/data.proto.md b/docs/data.proto.md index 76805fb..e016348 100644 --- a/docs/data.proto.md +++ b/docs/data.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support data injection in the platform. The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). diff --git a/docs/device_event.proto.md b/docs/device_event.proto.md index d68ccb7..dec3b44 100644 --- a/docs/device_event.proto.md +++ b/docs/device_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support device event detection in the platform. Device events are sub classes of Events. diff --git a/docs/event.proto.md b/docs/event.proto.md index a8f2119..fc78b53 100644 --- a/docs/event.proto.md +++ b/docs/event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support event detection in the platform. The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). diff --git a/docs/fault.proto.md b/docs/fault.proto.md index 1af0763..b2a9e20 100644 --- a/docs/fault.proto.md +++ b/docs/fault.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing faults. diff --git a/docs/grid_event.proto.md b/docs/grid_event.proto.md index f38355b..cbabcc4 100644 --- a/docs/grid_event.proto.md +++ b/docs/grid_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support grid event detection in the platform. Grid events are sub classes of Events. diff --git a/docs/stat.proto.md b/docs/stat.proto.md index ef62bd7..11139ed 100644 --- a/docs/stat.proto.md +++ b/docs/stat.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support stat data injection exchange in the platform. diff --git a/docs/task.proto.md b/docs/task.proto.md index a882ee9..390a22a 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -9,9 +9,9 @@ services. ## Imports -| Import | Description | -|---------------------------|-------------| -| google/protobuf/any.proto | | +| Import | Description | +|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | diff --git a/docs/topology.proto.md b/docs/topology.proto.md index 486ee6a..d7f4060 100644 --- a/docs/topology.proto.md +++ b/docs/topology.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support topology data exchange in the platform. diff --git a/python/zaphiro/c37118/v1/conf2_pb2.py b/python/zaphiro/c37118/v1/conf2_pb2.py index b9070ea..532a4fd 100644 --- a/python/zaphiro/c37118/v1/conf2_pb2.py +++ b/python/zaphiro/c37118/v1/conf2_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/c37118/v1/conf2.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/c37118/v1/conf2_pb2.pyi b/python/zaphiro/c37118/v1/conf2_pb2.pyi index 3d57fec..ae0b542 100644 --- a/python/zaphiro/c37118/v1/conf2_pb2.pyi +++ b/python/zaphiro/c37118/v1/conf2_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message diff --git a/python/zaphiro/c37118/v1/stat_pb2.py b/python/zaphiro/c37118/v1/stat_pb2.py index cf6d337..ae136a5 100644 --- a/python/zaphiro/c37118/v1/stat_pb2.py +++ b/python/zaphiro/c37118/v1/stat_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/c37118/v1/stat.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/c37118/v1/stat_pb2.pyi b/python/zaphiro/c37118/v1/stat_pb2.pyi index d3130bd..8c9061b 100644 --- a/python/zaphiro/c37118/v1/stat_pb2.pyi +++ b/python/zaphiro/c37118/v1/stat_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from typing import ClassVar as _ClassVar, Optional as _Optional diff --git a/python/zaphiro/grid/v1/data_pb2.py b/python/zaphiro/grid/v1/data_pb2.py index 3802bba..7ef53a7 100644 --- a/python/zaphiro/grid/v1/data_pb2.py +++ b/python/zaphiro/grid/v1/data_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/grid/v1/data.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/grid/v1/data_pb2.pyi b/python/zaphiro/grid/v1/data_pb2.pyi index d4d50be..b600543 100644 --- a/python/zaphiro/grid/v1/data_pb2.pyi +++ b/python/zaphiro/grid/v1/data_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor diff --git a/python/zaphiro/grid/v1/device_event_pb2.py b/python/zaphiro/grid/v1/device_event_pb2.py index eed333a..40cfb00 100644 --- a/python/zaphiro/grid/v1/device_event_pb2.py +++ b/python/zaphiro/grid/v1/device_event_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/grid/v1/device_event.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/grid/v1/device_event_pb2.pyi b/python/zaphiro/grid/v1/device_event_pb2.pyi index e51956c..b0a8b07 100644 --- a/python/zaphiro/grid/v1/device_event_pb2.pyi +++ b/python/zaphiro/grid/v1/device_event_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from zaphiro.grid.v1 import event_pb2 as _event_pb2 from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message diff --git a/python/zaphiro/grid/v1/event_pb2.py b/python/zaphiro/grid/v1/event_pb2.py index 2c6c34f..d206f09 100644 --- a/python/zaphiro/grid/v1/event_pb2.py +++ b/python/zaphiro/grid/v1/event_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/grid/v1/event.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/grid/v1/event_pb2.pyi b/python/zaphiro/grid/v1/event_pb2.pyi index e12d384..00b70fa 100644 --- a/python/zaphiro/grid/v1/event_pb2.pyi +++ b/python/zaphiro/grid/v1/event_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message diff --git a/python/zaphiro/grid/v1/fault_pb2.py b/python/zaphiro/grid/v1/fault_pb2.py index a54212b..16eb831 100644 --- a/python/zaphiro/grid/v1/fault_pb2.py +++ b/python/zaphiro/grid/v1/fault_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/grid/v1/fault.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/grid/v1/fault_pb2.pyi b/python/zaphiro/grid/v1/fault_pb2.pyi index 529e243..0615e7a 100644 --- a/python/zaphiro/grid/v1/fault_pb2.pyi +++ b/python/zaphiro/grid/v1/fault_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor diff --git a/python/zaphiro/grid/v1/grid_event_pb2.py b/python/zaphiro/grid/v1/grid_event_pb2.py index 1b458bf..2f47a5d 100644 --- a/python/zaphiro/grid/v1/grid_event_pb2.py +++ b/python/zaphiro/grid/v1/grid_event_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/grid/v1/grid_event.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/grid/v1/grid_event_pb2.pyi b/python/zaphiro/grid/v1/grid_event_pb2.pyi index ad0291e..92f307e 100644 --- a/python/zaphiro/grid/v1/grid_event_pb2.pyi +++ b/python/zaphiro/grid/v1/grid_event_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from zaphiro.grid.v1 import event_pb2 as _event_pb2 from zaphiro.grid.v1 import fault_pb2 as _fault_pb2 from google.protobuf import descriptor as _descriptor diff --git a/python/zaphiro/grid/v1/topology_pb2.py b/python/zaphiro/grid/v1/topology_pb2.py index f9e0435..260cbc2 100644 --- a/python/zaphiro/grid/v1/topology_pb2.py +++ b/python/zaphiro/grid/v1/topology_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/grid/v1/topology.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/grid/v1/topology_pb2.pyi b/python/zaphiro/grid/v1/topology_pb2.pyi index 25064af..d8e509e 100644 --- a/python/zaphiro/grid/v1/topology_pb2.pyi +++ b/python/zaphiro/grid/v1/topology_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message diff --git a/python/zaphiro/platform/v1/task_pb2.py b/python/zaphiro/platform/v1/task_pb2.py index 467f66e..64cad14 100644 --- a/python/zaphiro/platform/v1/task_pb2.py +++ b/python/zaphiro/platform/v1/task_pb2.py @@ -1,18 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zaphiro/platform/v1/task.proto # Protobuf Python Version: 5.26.0 diff --git a/python/zaphiro/platform/v1/task_pb2.pyi b/python/zaphiro/platform/v1/task_pb2.pyi index 632ce1f..fe15be6 100644 --- a/python/zaphiro/platform/v1/task_pb2.pyi +++ b/python/zaphiro/platform/v1/task_pb2.pyi @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from google.protobuf import any_pb2 as _any_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper From a7a5da032fdb6a184656aaa4f3f3a117da06fec8 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:36:16 +0000 Subject: [PATCH 25/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From d50cc6394599d92a7d16c115d9d6dea7a9ad2f41 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:37:01 +0000 Subject: [PATCH 26/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 9ded3cf95bf81f4bc10352ccdc387eddd6882709 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:38:03 +0000 Subject: [PATCH 27/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 284440fab9897e191566cc4a0e0a6e58d8648d4b Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:38:43 +0000 Subject: [PATCH 28/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 0390d69b50f5d9b878aadc3b137e0f5be0bb78da Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:39:38 +0000 Subject: [PATCH 29/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 2bdafe5dd0d2d6738a12100bf488e9a6c865c657 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:39:43 +0200 Subject: [PATCH 30/66] Update .licenserc.yaml --- .github/config/.licenserc.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/config/.licenserc.yaml b/.github/config/.licenserc.yaml index 2ba608f..1698245 100644 --- a/.github/config/.licenserc.yaml +++ b/.github/config/.licenserc.yaml @@ -11,7 +11,10 @@ header: - '.github' - '.docker' - '**/*.{md,MD}' + - '**/*.proto.{md,MD}' - 'examples/go/vendor' + - 'python/**' + - 'go/**' - '*.yaml' - '.snyk' - '**/*.json' From c68b86dc7dde22e82c655621d00829ccbe9ae143 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:40:16 +0000 Subject: [PATCH 31/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From c3087eecf770f8ff631a3cad584238d546aeb2f3 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:41:17 +0000 Subject: [PATCH 32/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 838a66f86ce23fd26fbd50a5b8a209b117a077b6 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:42:00 +0000 Subject: [PATCH 33/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 9c58bc07a587c691cf164e79be39e62b8fe91c12 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:42:57 +0000 Subject: [PATCH 34/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From b329b0baa236d6e2327017ce96deea97d1004b9d Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:43:38 +0000 Subject: [PATCH 35/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 17850ffc8d7ea075164d9eb6e0032d36d698d287 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:44:39 +0000 Subject: [PATCH 36/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 824bff483b1f1e8b085b2cdbc25989e7dc6050bf Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:44:45 +0200 Subject: [PATCH 37/66] remove license from docs --- docs/conf2.proto.md | 2 +- docs/data.proto.md | 2 +- docs/device_event.proto.md | 2 +- docs/event.proto.md | 2 +- docs/fault.proto.md | 2 +- docs/grid_event.proto.md | 2 +- docs/stat.proto.md | 2 +- docs/task.proto.md | 2 +- docs/topology.proto.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/conf2.proto.md b/docs/conf2.proto.md index 69d80ab..9641083 100644 --- a/docs/conf2.proto.md +++ b/docs/conf2.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages describing PMU C37.118 Configurations. See [C37.118](https://www.typhoon-hil.com/documentation/typhoon-hil-software-manual/References/c37_118_protocol.html) protocol. diff --git a/docs/data.proto.md b/docs/data.proto.md index e016348..76805fb 100644 --- a/docs/data.proto.md +++ b/docs/data.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support data injection in the platform. The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). diff --git a/docs/device_event.proto.md b/docs/device_event.proto.md index dec3b44..d68ccb7 100644 --- a/docs/device_event.proto.md +++ b/docs/device_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support device event detection in the platform. Device events are sub classes of Events. diff --git a/docs/event.proto.md b/docs/event.proto.md index fc78b53..a8f2119 100644 --- a/docs/event.proto.md +++ b/docs/event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support event detection in the platform. The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). diff --git a/docs/fault.proto.md b/docs/fault.proto.md index b2a9e20..1af0763 100644 --- a/docs/fault.proto.md +++ b/docs/fault.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages describing faults. diff --git a/docs/grid_event.proto.md b/docs/grid_event.proto.md index cbabcc4..f38355b 100644 --- a/docs/grid_event.proto.md +++ b/docs/grid_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support grid event detection in the platform. Grid events are sub classes of Events. diff --git a/docs/stat.proto.md b/docs/stat.proto.md index 11139ed..ef62bd7 100644 --- a/docs/stat.proto.md +++ b/docs/stat.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support stat data injection exchange in the platform. diff --git a/docs/task.proto.md b/docs/task.proto.md index 390a22a..6e0b689 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -11,7 +11,7 @@ services. | Import | Description | |---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | +| google/protobuf/any.proto | | diff --git a/docs/topology.proto.md b/docs/topology.proto.md index d7f4060..486ee6a 100644 --- a/docs/topology.proto.md +++ b/docs/topology.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support topology data exchange in the platform. From 3de676d14292ba4da182b5d668833816a15bba9d Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:45:37 +0000 Subject: [PATCH 38/66] Buf re-generated protos --- docs/conf2.proto.md | 2 +- docs/data.proto.md | 2 +- docs/device_event.proto.md | 2 +- docs/event.proto.md | 2 +- docs/fault.proto.md | 2 +- docs/grid_event.proto.md | 2 +- docs/stat.proto.md | 2 +- docs/task.proto.md | 2 +- docs/topology.proto.md | 2 +- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 18 files changed, 100 insertions(+), 118 deletions(-) diff --git a/docs/conf2.proto.md b/docs/conf2.proto.md index 9641083..69d80ab 100644 --- a/docs/conf2.proto.md +++ b/docs/conf2.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing PMU C37.118 Configurations. See [C37.118](https://www.typhoon-hil.com/documentation/typhoon-hil-software-manual/References/c37_118_protocol.html) protocol. diff --git a/docs/data.proto.md b/docs/data.proto.md index 76805fb..e016348 100644 --- a/docs/data.proto.md +++ b/docs/data.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support data injection in the platform. The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). diff --git a/docs/device_event.proto.md b/docs/device_event.proto.md index d68ccb7..dec3b44 100644 --- a/docs/device_event.proto.md +++ b/docs/device_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support device event detection in the platform. Device events are sub classes of Events. diff --git a/docs/event.proto.md b/docs/event.proto.md index a8f2119..fc78b53 100644 --- a/docs/event.proto.md +++ b/docs/event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support event detection in the platform. The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). diff --git a/docs/fault.proto.md b/docs/fault.proto.md index 1af0763..b2a9e20 100644 --- a/docs/fault.proto.md +++ b/docs/fault.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing faults. diff --git a/docs/grid_event.proto.md b/docs/grid_event.proto.md index f38355b..cbabcc4 100644 --- a/docs/grid_event.proto.md +++ b/docs/grid_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support grid event detection in the platform. Grid events are sub classes of Events. diff --git a/docs/stat.proto.md b/docs/stat.proto.md index ef62bd7..11139ed 100644 --- a/docs/stat.proto.md +++ b/docs/stat.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support stat data injection exchange in the platform. diff --git a/docs/task.proto.md b/docs/task.proto.md index 6e0b689..390a22a 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -11,7 +11,7 @@ services. | Import | Description | |---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | | +| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | diff --git a/docs/topology.proto.md b/docs/topology.proto.md index 486ee6a..d7f4060 100644 --- a/docs/topology.proto.md +++ b/docs/topology.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support topology data exchange in the platform. diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From b527b82d0ca0b3babaadc85cf4a535fdb1c25a10 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:46:31 +0000 Subject: [PATCH 39/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 0ec65898e36b9fef00961e8b0fc0dae03e1c91e0 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:47:01 +0200 Subject: [PATCH 40/66] Update .licenserc.yaml --- .github/config/.licenserc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/config/.licenserc.yaml b/.github/config/.licenserc.yaml index 1698245..02ed582 100644 --- a/.github/config/.licenserc.yaml +++ b/.github/config/.licenserc.yaml @@ -11,7 +11,7 @@ header: - '.github' - '.docker' - '**/*.{md,MD}' - - '**/*.proto.{md,MD}' + - 'docs/*.proto.md' - 'examples/go/vendor' - 'python/**' - 'go/**' From 509e17c888269408051bb7004340f274d32f8120 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:47:14 +0000 Subject: [PATCH 41/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From b249679d4d48a4fff41e06b812194e049c75043d Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:48:06 +0200 Subject: [PATCH 42/66] remove license from md --- docs/conf2.proto.md | 2 +- docs/data.proto.md | 2 +- docs/device_event.proto.md | 2 +- docs/event.proto.md | 2 +- docs/fault.proto.md | 2 +- docs/grid_event.proto.md | 2 +- docs/stat.proto.md | 2 +- docs/task.proto.md | 2 +- docs/topology.proto.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/conf2.proto.md b/docs/conf2.proto.md index 69d80ab..b0659bc 100644 --- a/docs/conf2.proto.md +++ b/docs/conf2.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages describing PMU C37.118 Configurations. See [C37.118](https://www.typhoon-hil.com/documentation/typhoon-hil-software-manual/References/c37_118_protocol.html) protocol. diff --git a/docs/data.proto.md b/docs/data.proto.md index e016348..534dc27 100644 --- a/docs/data.proto.md +++ b/docs/data.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support data injection in the platform. The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). diff --git a/docs/device_event.proto.md b/docs/device_event.proto.md index dec3b44..30f4303 100644 --- a/docs/device_event.proto.md +++ b/docs/device_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support device event detection in the platform. Device events are sub classes of Events. diff --git a/docs/event.proto.md b/docs/event.proto.md index fc78b53..748a431 100644 --- a/docs/event.proto.md +++ b/docs/event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support event detection in the platform. The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). diff --git a/docs/fault.proto.md b/docs/fault.proto.md index b2a9e20..75e7103 100644 --- a/docs/fault.proto.md +++ b/docs/fault.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages describing faults. diff --git a/docs/grid_event.proto.md b/docs/grid_event.proto.md index cbabcc4..0a5af6c 100644 --- a/docs/grid_event.proto.md +++ b/docs/grid_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support grid event detection in the platform. Grid events are sub classes of Events. diff --git a/docs/stat.proto.md b/docs/stat.proto.md index 11139ed..8402d65 100644 --- a/docs/stat.proto.md +++ b/docs/stat.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support stat data injection exchange in the platform. diff --git a/docs/task.proto.md b/docs/task.proto.md index 390a22a..e906248 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -11,7 +11,7 @@ services. | Import | Description | |---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | +| google/protobuf/any.proto | | diff --git a/docs/topology.proto.md b/docs/topology.proto.md index d7f4060..075eea9 100644 --- a/docs/topology.proto.md +++ b/docs/topology.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 -Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Messages to support topology data exchange in the platform. From 50fc129cfc428af2d215e627068f932839b831f8 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:48:11 +0000 Subject: [PATCH 43/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 64e39ee0a1f551bb3b22ed5542e9cf5b789b0285 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:48:52 +0000 Subject: [PATCH 44/66] Buf re-generated protos --- docs/conf2.proto.md | 2 +- docs/data.proto.md | 2 +- docs/device_event.proto.md | 2 +- docs/event.proto.md | 2 +- docs/fault.proto.md | 2 +- docs/grid_event.proto.md | 2 +- docs/stat.proto.md | 2 +- docs/task.proto.md | 2 +- docs/topology.proto.md | 2 +- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 18 files changed, 100 insertions(+), 118 deletions(-) diff --git a/docs/conf2.proto.md b/docs/conf2.proto.md index b0659bc..69d80ab 100644 --- a/docs/conf2.proto.md +++ b/docs/conf2.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing PMU C37.118 Configurations. See [C37.118](https://www.typhoon-hil.com/documentation/typhoon-hil-software-manual/References/c37_118_protocol.html) protocol. diff --git a/docs/data.proto.md b/docs/data.proto.md index 534dc27..e016348 100644 --- a/docs/data.proto.md +++ b/docs/data.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support data injection in the platform. The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). diff --git a/docs/device_event.proto.md b/docs/device_event.proto.md index 30f4303..dec3b44 100644 --- a/docs/device_event.proto.md +++ b/docs/device_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support device event detection in the platform. Device events are sub classes of Events. diff --git a/docs/event.proto.md b/docs/event.proto.md index 748a431..fc78b53 100644 --- a/docs/event.proto.md +++ b/docs/event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support event detection in the platform. The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). diff --git a/docs/fault.proto.md b/docs/fault.proto.md index 75e7103..b2a9e20 100644 --- a/docs/fault.proto.md +++ b/docs/fault.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing faults. diff --git a/docs/grid_event.proto.md b/docs/grid_event.proto.md index 0a5af6c..cbabcc4 100644 --- a/docs/grid_event.proto.md +++ b/docs/grid_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support grid event detection in the platform. Grid events are sub classes of Events. diff --git a/docs/stat.proto.md b/docs/stat.proto.md index 8402d65..11139ed 100644 --- a/docs/stat.proto.md +++ b/docs/stat.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support stat data injection exchange in the platform. diff --git a/docs/task.proto.md b/docs/task.proto.md index e906248..390a22a 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -11,7 +11,7 @@ services. | Import | Description | |---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | | +| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | diff --git a/docs/topology.proto.md b/docs/topology.proto.md index 075eea9..d7f4060 100644 --- a/docs/topology.proto.md +++ b/docs/topology.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support topology data exchange in the platform. diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 3139538e7cc93511e9c038b4905e465878794ac9 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:49:16 +0200 Subject: [PATCH 45/66] fix md --- docs/conf2.proto.md | 2 +- docs/data.proto.md | 2 +- docs/device_event.proto.md | 2 +- docs/event.proto.md | 2 +- docs/fault.proto.md | 2 +- docs/grid_event.proto.md | 2 +- docs/stat.proto.md | 2 +- docs/topology.proto.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/conf2.proto.md b/docs/conf2.proto.md index b0659bc..9641083 100644 --- a/docs/conf2.proto.md +++ b/docs/conf2.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - + Messages describing PMU C37.118 Configurations. See [C37.118](https://www.typhoon-hil.com/documentation/typhoon-hil-software-manual/References/c37_118_protocol.html) protocol. diff --git a/docs/data.proto.md b/docs/data.proto.md index 534dc27..76805fb 100644 --- a/docs/data.proto.md +++ b/docs/data.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - + Messages to support data injection in the platform. The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). diff --git a/docs/device_event.proto.md b/docs/device_event.proto.md index 30f4303..d68ccb7 100644 --- a/docs/device_event.proto.md +++ b/docs/device_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - + Messages to support device event detection in the platform. Device events are sub classes of Events. diff --git a/docs/event.proto.md b/docs/event.proto.md index 748a431..a8f2119 100644 --- a/docs/event.proto.md +++ b/docs/event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - + Messages to support event detection in the platform. The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). diff --git a/docs/fault.proto.md b/docs/fault.proto.md index 75e7103..1af0763 100644 --- a/docs/fault.proto.md +++ b/docs/fault.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - + Messages describing faults. diff --git a/docs/grid_event.proto.md b/docs/grid_event.proto.md index 0a5af6c..f38355b 100644 --- a/docs/grid_event.proto.md +++ b/docs/grid_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - + Messages to support grid event detection in the platform. Grid events are sub classes of Events. diff --git a/docs/stat.proto.md b/docs/stat.proto.md index 8402d65..ef62bd7 100644 --- a/docs/stat.proto.md +++ b/docs/stat.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - + Messages to support stat data injection exchange in the platform. diff --git a/docs/topology.proto.md b/docs/topology.proto.md index 075eea9..486ee6a 100644 --- a/docs/topology.proto.md +++ b/docs/topology.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - + Messages to support topology data exchange in the platform. From e5e2b1af4585f22ec05010fa78637465370d75f9 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:49:53 +0000 Subject: [PATCH 46/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From fc75d4688cccc46e80781f07e18409df78274489 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:50:35 +0000 Subject: [PATCH 47/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From d30edfb796b670ba07df2682a4ba590fc797442c Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:50:45 +0200 Subject: [PATCH 48/66] fix --- .github/workflows/license.yaml | 2 +- docs/task.proto.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/license.yaml b/.github/workflows/license.yaml index 7e4ff4d..de0ef10 100644 --- a/.github/workflows/license.yaml +++ b/.github/workflows/license.yaml @@ -15,4 +15,4 @@ jobs: uses: zaphiro-technologies/github-workflows/.github/workflows/license.yaml@main secrets: inherit with: - skip-fix: false + skip-fix: true diff --git a/docs/task.proto.md b/docs/task.proto.md index 390a22a..b6111a6 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -11,7 +11,7 @@ services. | Import | Description | |---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | +| google/protobuf/any.proto | | From 3eb95201c3f053203b83d823413cf2582d17696b Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:51:15 +0000 Subject: [PATCH 49/66] Buf re-generated protos --- docs/conf2.proto.md | 2 +- docs/data.proto.md | 2 +- docs/device_event.proto.md | 2 +- docs/event.proto.md | 2 +- docs/fault.proto.md | 2 +- docs/grid_event.proto.md | 2 +- docs/stat.proto.md | 2 +- docs/task.proto.md | 2 +- docs/topology.proto.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/conf2.proto.md b/docs/conf2.proto.md index 9641083..69d80ab 100644 --- a/docs/conf2.proto.md +++ b/docs/conf2.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing PMU C37.118 Configurations. See [C37.118](https://www.typhoon-hil.com/documentation/typhoon-hil-software-manual/References/c37_118_protocol.html) protocol. diff --git a/docs/data.proto.md b/docs/data.proto.md index 76805fb..e016348 100644 --- a/docs/data.proto.md +++ b/docs/data.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support data injection in the platform. The data injected may be originated from different sources (e.g. a PMU, RTU, an external service). diff --git a/docs/device_event.proto.md b/docs/device_event.proto.md index d68ccb7..dec3b44 100644 --- a/docs/device_event.proto.md +++ b/docs/device_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support device event detection in the platform. Device events are sub classes of Events. diff --git a/docs/event.proto.md b/docs/event.proto.md index a8f2119..fc78b53 100644 --- a/docs/event.proto.md +++ b/docs/event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support event detection in the platform. The event detected may be originated from different sources: devices (e.g. a PMU, RTU), services (e.g. state estimator), or an external service (e.g. SCADA). diff --git a/docs/fault.proto.md b/docs/fault.proto.md index 1af0763..b2a9e20 100644 --- a/docs/fault.proto.md +++ b/docs/fault.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages describing faults. diff --git a/docs/grid_event.proto.md b/docs/grid_event.proto.md index f38355b..cbabcc4 100644 --- a/docs/grid_event.proto.md +++ b/docs/grid_event.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support grid event detection in the platform. Grid events are sub classes of Events. diff --git a/docs/stat.proto.md b/docs/stat.proto.md index ef62bd7..11139ed 100644 --- a/docs/stat.proto.md +++ b/docs/stat.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.c37118.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support stat data injection exchange in the platform. diff --git a/docs/task.proto.md b/docs/task.proto.md index b6111a6..390a22a 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -11,7 +11,7 @@ services. | Import | Description | |---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | | +| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | diff --git a/docs/topology.proto.md b/docs/topology.proto.md index 486ee6a..d7f4060 100644 --- a/docs/topology.proto.md +++ b/docs/topology.proto.md @@ -1,6 +1,6 @@ # Package: zaphiro.grid.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support topology data exchange in the platform. From b87547ab353e700ee2dbef5bf5ed48515e9dd575 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:52:25 +0000 Subject: [PATCH 50/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 7b96b0e43c7eaa1d16ae0f54ad83ba14b3cb1b5e Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:53:07 +0000 Subject: [PATCH 51/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 2a57ccfd77442da19adb375312ccd271ffb702ee Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:54:07 +0000 Subject: [PATCH 52/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From ae6e048c93cfb090f934428854e8c15c3be249a3 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:54:42 +0000 Subject: [PATCH 53/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 24ead83551017f4cd665625ede8b2910cbd08cdf Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:55:47 +0000 Subject: [PATCH 54/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 897b0687c1c2e260f9e819124710635594b6be94 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:56:26 +0000 Subject: [PATCH 55/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 630327f0f7e407455880c5ade20eea6ff7ca9e03 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:57:25 +0000 Subject: [PATCH 56/66] Automated lint fixes [dependabot skip] --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 88fb97523322305fc12c2bcb3386dcdd5a240756 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:58:00 +0000 Subject: [PATCH 57/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 +++++++++++++++++------------------ go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++------- go/grid/v1/device_event.pb.go | 14 +++++------- go/grid/v1/event.pb.go | 16 ++++++------- go/grid/v1/fault.pb.go | 34 +++++++++++++--------------- go/grid/v1/grid_event.pb.go | 18 +++++++-------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 +++++++-------- 9 files changed, 91 insertions(+), 109 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index aa85154..a9c40b7 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,9 +388,7 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_conf2_proto_rawDescData, - ) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index 4432a95..efed2dd 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,9 +193,7 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_c37118_v1_stat_proto_rawDescData, - ) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 06f9662..7d7ff25 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,9 +487,7 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_data_proto_rawDescData, - ) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index e590792..cecd2b3 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,9 +517,7 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_device_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 74f87f2..890fdf0 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,9 +293,7 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 15f6e75..8717471 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,9 +725,7 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_fault_proto_rawDescData, - ) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index d76e7d3..1def130 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,9 +997,7 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_grid_event_proto_rawDescData, - ) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 768fc64..22511d8 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,9 +443,7 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_grid_v1_topology_proto_rawDescData, - ) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..e5d1390 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,9 +415,7 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( - file_zaphiro_platform_v1_task_proto_rawDescData, - ) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From 51d0983ad05c11f0714636f88ec0bc961817e778 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 15:58:11 +0200 Subject: [PATCH 58/66] Update golang.yaml --- .github/workflows/golang.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/golang.yaml b/.github/workflows/golang.yaml index d7971b6..cac206a 100644 --- a/.github/workflows/golang.yaml +++ b/.github/workflows/golang.yaml @@ -54,6 +54,15 @@ jobs: - name: Generating protos run: | make generate + - name: Golines + run: | + go install github.com/segmentio/golines@latest + golines . -w + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + args: --fix + version: latest - name: Commit buf changes run: | git config --global user.name 'Bot' From 2b872da8366bd9df739d35b37b10ee0a3af4cd17 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 13:59:38 +0000 Subject: [PATCH 59/66] Buf re-generated protos --- go/c37118/v1/conf2.pb.go | 42 ++++++++++++++++++----------------- go/c37118/v1/stat.pb.go | 22 +++++++++--------- go/grid/v1/data.pb.go | 14 +++++++----- go/grid/v1/device_event.pb.go | 14 +++++++----- go/grid/v1/event.pb.go | 16 +++++++------ go/grid/v1/fault.pb.go | 34 +++++++++++++++------------- go/grid/v1/grid_event.pb.go | 18 ++++++++------- go/grid/v1/topology.pb.go | 22 +++++++++--------- go/platform/v1/task.pb.go | 18 ++++++++------- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/go/c37118/v1/conf2.pb.go b/go/c37118/v1/conf2.pb.go index a9c40b7..aa85154 100644 --- a/go/c37118/v1/conf2.pb.go +++ b/go/c37118/v1/conf2.pb.go @@ -44,8 +44,8 @@ type Conf2Frame struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header - Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations + Header *Conf2Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` //Configuration frame 2 header + Configs []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"` //Set of PMU configurations DATA_RATE uint32 `protobuf:"varint,3,opt,name=DATA_RATE,json=DATARATE,proto3" json:"DATA_RATE,omitempty"` //Rate of data transmission } @@ -107,13 +107,13 @@ type Conf2Header struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number - FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame - IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number - SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp - FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality + SYNC uint32 `protobuf:"varint,1,opt,name=SYNC,proto3" json:"SYNC,omitempty"` //Sync byte followed by frame type and version number + FRAMESIZE uint32 `protobuf:"varint,2,opt,name=FRAMESIZE,proto3" json:"FRAMESIZE,omitempty"` //Number of bytes in the frame + IDCODE uint32 `protobuf:"varint,3,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Stream source ID number + SOC uint32 `protobuf:"varint,4,opt,name=SOC,proto3" json:"SOC,omitempty"` //SOC time stamp + FRACSEC uint32 `protobuf:"varint,5,opt,name=FRACSEC,proto3" json:"FRACSEC,omitempty"` //Fraction of Second and Message Time Quality TIME_BASE uint32 `protobuf:"varint,6,opt,name=TIME_BASE,json=TIMEBASE,proto3" json:"TIME_BASE,omitempty"` //Resolution of FRACSEC time stamp - NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame + NUM_PMU uint32 `protobuf:"varint,7,opt,name=NUM_PMU,json=NUMPMU,proto3" json:"NUM_PMU,omitempty"` //The number of PMUs included in the data frame } func (x *Conf2Header) Reset() { @@ -202,18 +202,18 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name - IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number - FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame - PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors - ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values - DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words - CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names - PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels - ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels + STN string `protobuf:"bytes,1,opt,name=STN,proto3" json:"STN,omitempty"` //Station name + IDCODE uint32 `protobuf:"varint,2,opt,name=IDCODE,proto3" json:"IDCODE,omitempty"` //Data source ID number + FORMAT uint32 `protobuf:"varint,3,opt,name=FORMAT,proto3" json:"FORMAT,omitempty"` //Data format within data frame + PHNMR uint32 `protobuf:"varint,4,opt,name=PHNMR,proto3" json:"PHNMR,omitempty"` //Number of phasors + ANNMR uint32 `protobuf:"varint,5,opt,name=ANNMR,proto3" json:"ANNMR,omitempty"` //Number of analog values + DGNMR uint32 `protobuf:"varint,6,opt,name=DGNMR,proto3" json:"DGNMR,omitempty"` //Number of digital status words + CHNAM string `protobuf:"bytes,7,opt,name=CHNAM,proto3" json:"CHNAM,omitempty"` //Phasor and channel names + PHUNIT []uint32 `protobuf:"varint,8,rep,packed,name=PHUNIT,proto3" json:"PHUNIT,omitempty"` //Conversion factor for phasor channels + ANUNIT []uint32 `protobuf:"varint,9,rep,packed,name=ANUNIT,proto3" json:"ANUNIT,omitempty"` //Conversion factor for analog channels DIGUNIT []uint32 `protobuf:"varint,10,rep,packed,name=DIGUNIT,proto3" json:"DIGUNIT,omitempty"` //Mask words for digital status words - FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags - CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count + FNOM uint32 `protobuf:"varint,11,opt,name=FNOM,proto3" json:"FNOM,omitempty"` //Nominal line frequency code and flags + CFGCNT uint32 `protobuf:"varint,12,opt,name=CFGCNT,proto3" json:"CFGCNT,omitempty"` //Configuration change count } func (x *Config) Reset() { @@ -388,7 +388,9 @@ var ( func file_zaphiro_c37118_v1_conf2_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_conf2_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_conf2_proto_rawDescData) + file_zaphiro_c37118_v1_conf2_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_conf2_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_conf2_proto_rawDescData } diff --git a/go/c37118/v1/stat.pb.go b/go/c37118/v1/stat.pb.go index efed2dd..4432a95 100644 --- a/go/c37118/v1/stat.pb.go +++ b/go/c37118/v1/stat.pb.go @@ -42,15 +42,15 @@ type Stat struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). - Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 - Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status - Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status - Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status - ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status - DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status - TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 - UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 + MeasuredAt int64 `protobuf:"varint,1,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` // The time of creation of the stat data (Unix msec timestamp). + Error uint32 `protobuf:"varint,2,opt,name=error,proto3" json:"error,omitempty"` // Error code uint8 + Sync bool `protobuf:"varint,3,opt,name=sync,proto3" json:"sync,omitempty"` // Synchronization status + Sorting bool `protobuf:"varint,4,opt,name=sorting,proto3" json:"sorting,omitempty"` // Sorting status + Trigger bool `protobuf:"varint,5,opt,name=trigger,proto3" json:"trigger,omitempty"` // Trigger status + ConfigChange bool `protobuf:"varint,6,opt,name=configChange,proto3" json:"configChange,omitempty"` // Configuration change status + DataModified bool `protobuf:"varint,7,opt,name=dataModified,proto3" json:"dataModified,omitempty"` // Data modification status + TimeQuality uint32 `protobuf:"varint,8,opt,name=timeQuality,proto3" json:"timeQuality,omitempty"` // Time quality uint8 + UnlockedTime uint32 `protobuf:"varint,9,opt,name=unlockedTime,proto3" json:"unlockedTime,omitempty"` // Unlocked time uint8 TriggerReason uint32 `protobuf:"varint,10,opt,name=triggerReason,proto3" json:"triggerReason,omitempty"` // Trigger reason uint8 } @@ -193,7 +193,9 @@ var ( func file_zaphiro_c37118_v1_stat_proto_rawDescGZIP() []byte { file_zaphiro_c37118_v1_stat_proto_rawDescOnce.Do(func() { - file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_c37118_v1_stat_proto_rawDescData) + file_zaphiro_c37118_v1_stat_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_c37118_v1_stat_proto_rawDescData, + ) }) return file_zaphiro_c37118_v1_stat_proto_rawDescData } diff --git a/go/grid/v1/data.pb.go b/go/grid/v1/data.pb.go index 7d7ff25..06f9662 100644 --- a/go/grid/v1/data.pb.go +++ b/go/grid/v1/data.pb.go @@ -238,9 +238,9 @@ type Data struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. - MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). - Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. + DataType DataType `protobuf:"varint,1,opt,name=dataType,proto3,enum=zaphiro.grid.v1.DataType" json:"dataType,omitempty"` //The type of data see `DataType` enum. + MeasuredAt int64 `protobuf:"varint,2,opt,name=measuredAt,proto3" json:"measuredAt,omitempty"` //The time of measurement (Unix msec timestamp). + Value *uint64 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` //The data value casted to uint64. } func (x *Data) Reset() { @@ -301,8 +301,8 @@ type DataSet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. - Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. + ProducerId string `protobuf:"bytes,1,opt,name=producerId,proto3" json:"producerId,omitempty"` //The id of the device / service that produced the data set. + Data map[string]*Data `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The map of data included in the dataset. } func (x *DataSet) Reset() { @@ -487,7 +487,9 @@ var ( func file_zaphiro_grid_v1_data_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_data_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_data_proto_rawDescData) + file_zaphiro_grid_v1_data_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_data_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_data_proto_rawDescData } diff --git a/go/grid/v1/device_event.pb.go b/go/grid/v1/device_event.pb.go index cecd2b3..e590792 100644 --- a/go/grid/v1/device_event.pb.go +++ b/go/grid/v1/device_event.pb.go @@ -42,12 +42,12 @@ type DeviceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. - SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` //The ID of the device where the event occurred. + SubstationID string `protobuf:"bytes,3,opt,name=substationID,proto3" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value *float64 `protobuf:"fixed64,4,opt,name=value,proto3,oneof" json:"value,omitempty"` //The measured / estimated value in relation to the event. ReferenceLimit *float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3,oneof" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) + Code *string `protobuf:"bytes,6,opt,name=code,proto3,oneof" json:"code,omitempty"` //The device event code (or the mapped string) } func (x *DeviceEvent) Reset() { @@ -517,7 +517,9 @@ var ( func file_zaphiro_grid_v1_device_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_device_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_device_event_proto_rawDescData) + file_zaphiro_grid_v1_device_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_device_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_device_event_proto_rawDescData } diff --git a/go/grid/v1/event.pb.go b/go/grid/v1/event.pb.go index 890fdf0..74f87f2 100644 --- a/go/grid/v1/event.pb.go +++ b/go/grid/v1/event.pb.go @@ -150,13 +150,13 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. - SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The uuid of the event. + SourceId string `protobuf:"bytes,2,opt,name=sourceId,proto3" json:"sourceId,omitempty"` //The id of the source (e.g. a PMU) that generated the event. SourceType EventSourceType `protobuf:"varint,3,opt,name=sourceType,proto3,enum=zaphiro.grid.v1.EventSourceType" json:"sourceType,omitempty"` //The type of data see `DataType` enum. - OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. - DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). - Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. - Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. + OccurredAt int64 `protobuf:"varint,4,opt,name=occurredAt,proto3" json:"occurredAt,omitempty"` //The time of occurency of the event (Unix msec timestamp) usually is the same value as timestampId. + DetectedAt *int64 `protobuf:"varint,5,opt,name=detectedAt,proto3,oneof" json:"detectedAt,omitempty"` //The time of detection of the event (Unix msec timestamp). + Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` //Event message. + Status *EventStatus `protobuf:"varint,7,opt,name=status,proto3,enum=zaphiro.grid.v1.EventStatus,oneof" json:"status,omitempty"` //The status of the event. } func (x *Event) Reset() { @@ -293,7 +293,9 @@ var ( func file_zaphiro_grid_v1_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_event_proto_rawDescData) + file_zaphiro_grid_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_event_proto_rawDescData } diff --git a/go/grid/v1/fault.pb.go b/go/grid/v1/fault.pb.go index 8717471..15f6e75 100644 --- a/go/grid/v1/fault.pb.go +++ b/go/grid/v1/fault.pb.go @@ -274,18 +274,18 @@ type Fault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. - Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. - Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. - UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). - FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. - FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. - FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. - ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. - UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. - MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. - LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The textual id of the fault. + Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` //The textual description of the fault. + Kind PhaseConnectedFaultKind `protobuf:"varint,3,opt,name=kind,proto3,enum=zaphiro.grid.v1.PhaseConnectedFaultKind" json:"kind,omitempty"` //The kind of phase fault. + Phases PhaseCode `protobuf:"varint,4,opt,name=phases,proto3,enum=zaphiro.grid.v1.PhaseCode" json:"phases,omitempty"` //The phases participating in the fault. The fault connections into these phases are further specified by the type of fault. + UpdatedAt int64 `protobuf:"varint,5,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` //The date and time at which the fault started/located/ended depending on the Fault Status (Unix msec timestamp). + FaultEventType FaultEventType `protobuf:"varint,6,opt,name=faultEventType,proto3,enum=zaphiro.grid.v1.FaultEventType" json:"faultEventType,omitempty"` //The type of the fault event. + FaultyEquipmentId *string `protobuf:"bytes,7,opt,name=faultyEquipmentId,proto3,oneof" json:"faultyEquipmentId,omitempty"` //The equipment with the fault. + FaultCurrent *float32 `protobuf:"fixed32,8,opt,name=faultCurrent,proto3,oneof" json:"faultCurrent,omitempty"` //The current associated to the fault. + ImpactedEquipmentIds []string `protobuf:"bytes,9,rep,name=impactedEquipmentIds,proto3" json:"impactedEquipmentIds,omitempty"` //The set of IDs of equipments impacted by the fault. + UsedMeasurementIds []*FaultMeasurement `protobuf:"bytes,10,rep,name=usedMeasurementIds,proto3" json:"usedMeasurementIds,omitempty"` //The set of measurements used to locate the fault. + MeasurementTimestamp *int64 `protobuf:"varint,11,opt,name=measurementTimestamp,proto3,oneof" json:"measurementTimestamp,omitempty"` // The timestamp of the measurements used to compute the fault location. + LocationProbability *float32 `protobuf:"fixed32,12,opt,name=locationProbability,proto3,oneof" json:"locationProbability,omitempty"` // The probability associated to the location. (This is relevant because multiple locations can be returned for a fault) } func (x *Fault) Reset() { @@ -409,9 +409,9 @@ type LineFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. LengthFromTerminal1 *float32 `protobuf:"fixed32,2,opt,name=lengthFromTerminal1,proto3,oneof" json:"lengthFromTerminal1,omitempty"` //The length to the place where the fault is located starting from terminal with sequence number 1 of the faulted line segment. - LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. + LengthUncertainty *float32 `protobuf:"fixed32,3,opt,name=lengthUncertainty,proto3,oneof" json:"lengthUncertainty,omitempty"` //The +/- uncertainty on the reported length. } func (x *LineFault) Reset() { @@ -472,7 +472,7 @@ type EquipmentFault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. + Fault *Fault `protobuf:"bytes,1,opt,name=fault,proto3" json:"fault,omitempty"` //The base fault message. TerminalID *string `protobuf:"bytes,2,opt,name=terminalID,proto3,oneof" json:"terminalID,omitempty"` //The terminal connecting to the bus to which the fault is applied. } @@ -725,7 +725,9 @@ var ( func file_zaphiro_grid_v1_fault_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_fault_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_fault_proto_rawDescData) + file_zaphiro_grid_v1_fault_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_fault_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_fault_proto_rawDescData } diff --git a/go/grid/v1/grid_event.pb.go b/go/grid/v1/grid_event.pb.go index 1def130..d76e7d3 100644 --- a/go/grid/v1/grid_event.pb.go +++ b/go/grid/v1/grid_event.pb.go @@ -42,12 +42,12 @@ type GridEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message - ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. - SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. - Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). - ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. - Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. + Event *Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base event message + ComponentID string `protobuf:"bytes,2,opt,name=componentID,proto3" json:"componentID,omitempty"` //The ID of the component where the event occurred. + SubstationID *string `protobuf:"bytes,3,opt,name=substationID,proto3,oneof" json:"substationID,omitempty"` //The ID of the substation where the event occurred. + Value float64 `protobuf:"fixed64,4,opt,name=value,proto3" json:"value,omitempty"` //The measured / estimated value in relation to the event (e.g. in the case of a `VoltageEvent` is the voltage, in the case of a `CurrentEvent` is the current event). + ReferenceLimit float64 `protobuf:"fixed64,5,opt,name=referenceLimit,proto3" json:"referenceLimit,omitempty"` //The reference limit or expected value. + Probability *float64 `protobuf:"fixed64,6,opt,name=probability,proto3,oneof" json:"probability,omitempty"` //The probability that the event actually occurred. } func (x *GridEvent) Reset() { @@ -129,7 +129,7 @@ type VoltageEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message + Event *GridEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` //The base grid event message PhaseCode *PhaseCode `protobuf:"varint,2,opt,name=phaseCode,proto3,enum=zaphiro.grid.v1.PhaseCode,oneof" json:"phaseCode,omitempty"` //The phase for which the event occured } @@ -997,7 +997,9 @@ var ( func file_zaphiro_grid_v1_grid_event_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_grid_event_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_grid_event_proto_rawDescData) + file_zaphiro_grid_v1_grid_event_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_grid_event_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_grid_event_proto_rawDescData } diff --git a/go/grid/v1/topology.pb.go b/go/grid/v1/topology.pb.go index 22511d8..768fc64 100644 --- a/go/grid/v1/topology.pb.go +++ b/go/grid/v1/topology.pb.go @@ -43,7 +43,7 @@ type Topology struct { unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // The time of creation of the topology data (Unix msec timestamp). - Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. + Tp []byte `protobuf:"bytes,2,opt,name=tp,proto3" json:"tp,omitempty"` // The TP profile file serialized as bytes. } func (x *Topology) Reset() { @@ -99,12 +99,12 @@ type TopologicalNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. - ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. - BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. + TerminalIds []string `protobuf:"bytes,1,rep,name=TerminalIds,proto3" json:"TerminalIds,omitempty"` //The list of Terminal ids in the TopologicalNode. + ConnectivityNodeIds []string `protobuf:"bytes,2,rep,name=ConnectivityNodeIds,proto3" json:"ConnectivityNodeIds,omitempty"` //The list of ConnectivityNode ids in the TopologicalNode. + BranchIds []string `protobuf:"bytes,3,rep,name=BranchIds,proto3" json:"BranchIds,omitempty"` //The list of Branch ids in the TopologicalNode. ConnectivityNodeContainerId string `protobuf:"bytes,4,opt,name=ConnectivityNodeContainerId,proto3" json:"ConnectivityNodeContainerId,omitempty"` //The id of the ConnectivityNodeContainer in the TopologicalNode. - BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. - BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. + BaseVoltageId string `protobuf:"bytes,5,opt,name=BaseVoltageId,proto3" json:"BaseVoltageId,omitempty"` //The id of the BaseVoltage in the TopologicalNode. + BaseVoltage float64 `protobuf:"fixed64,6,opt,name=BaseVoltage,proto3" json:"BaseVoltage,omitempty"` //The BaseVoltage in the TopologicalNode. } func (x *TopologicalNode) Reset() { @@ -188,7 +188,7 @@ type TopologicalIsland struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. + Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"` //The id of the TopologicalIsland. TopologicalNodes map[string]*TopologicalNode `protobuf:"bytes,2,rep,name=TopologicalNodes,proto3" json:"TopologicalNodes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //The list of TopologicalNode in the TopologicalIsland. TN id -> TN. } @@ -299,9 +299,9 @@ type ComputedTopology struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. + EqId string `protobuf:"bytes,1,opt,name=eqId,proto3" json:"eqId,omitempty"` //The id of the EQ file used. TopologicalIslands map[string]*TopologicalIsland `protobuf:"bytes,2,rep,name=topologicalIslands,proto3" json:"topologicalIslands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // The map of TopologicalIslands in the Topology. TI id -> TI. - BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. + BranchConnections map[string]*BranchConnection `protobuf:"bytes,3,rep,name=BranchConnections,proto3" json:"BranchConnections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // All the connections between the TopologicalNodes in the TopologicalIsland. TN id -> TN connection. } func (x *ComputedTopology) Reset() { @@ -443,7 +443,9 @@ var ( func file_zaphiro_grid_v1_topology_proto_rawDescGZIP() []byte { file_zaphiro_grid_v1_topology_proto_rawDescOnce.Do(func() { - file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_grid_v1_topology_proto_rawDescData) + file_zaphiro_grid_v1_topology_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_grid_v1_topology_proto_rawDescData, + ) }) return file_zaphiro_grid_v1_topology_proto_rawDescData } diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index e5d1390..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -159,7 +159,7 @@ type Parameter struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` //The parameter name Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` //The parameter value } @@ -214,9 +214,9 @@ type Task struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) - Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` + TaskType TaskType `protobuf:"varint,1,opt,name=taskType,proto3,enum=zaphiro.platform.v1.TaskType" json:"taskType,omitempty"` //Type of the task + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Task creation time (Unix msec timestamp) + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Task) Reset() { @@ -278,9 +278,9 @@ type Notification struct { unknownFields protoimpl.UnknownFields NotificationType NotificationType `protobuf:"varint,1,opt,name=notificationType,proto3,enum=zaphiro.platform.v1.NotificationType" json:"notificationType,omitempty"` //Notification type - CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). - Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` //Notification creation time (Unix msec timestamp) + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //Notification message, it can be a string or a integer (which maps to a enum value). + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *Notification) Reset() { @@ -415,7 +415,9 @@ var ( func file_zaphiro_platform_v1_task_proto_rawDescGZIP() []byte { file_zaphiro_platform_v1_task_proto_rawDescOnce.Do(func() { - file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_zaphiro_platform_v1_task_proto_rawDescData) + file_zaphiro_platform_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP( + file_zaphiro_platform_v1_task_proto_rawDescData, + ) }) return file_zaphiro_platform_v1_task_proto_rawDescData } From cdfa2a2779a158c89a2a4ef16a8115c3d23a583a Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 16:09:24 +0200 Subject: [PATCH 60/66] remove license were not needed / appropriate --- .github/config/.licenserc.yaml | 5 +++++ .gitignore | 14 -------------- go/grid/v1/FullGrid_TP.xml | 16 ---------------- poetry.lock | 14 -------------- pyproject.toml | 18 ++---------------- sonar-project.properties | 14 -------------- 6 files changed, 7 insertions(+), 74 deletions(-) diff --git a/.github/config/.licenserc.yaml b/.github/config/.licenserc.yaml index 02ed582..d03a35f 100644 --- a/.github/config/.licenserc.yaml +++ b/.github/config/.licenserc.yaml @@ -22,6 +22,11 @@ header: - 'NOTICE' - 'go.mod' - 'go.sum' + - 'sonar-project.properties' + - '*.toml' + - '*.lock' + - '*.xml' + - '.gitignore' comment: on-failure diff --git a/.gitignore b/.gitignore index 92aac7b..0c809d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - # If you prefer the allow list template instead of the deny list, see community template: # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore # diff --git a/go/grid/v1/FullGrid_TP.xml b/go/grid/v1/FullGrid_TP.xml index 8d240ea..b869c8a 100644 --- a/go/grid/v1/FullGrid_TP.xml +++ b/go/grid/v1/FullGrid_TP.xml @@ -1,19 +1,3 @@ - - "] readme = "README.md" diff --git a/sonar-project.properties b/sonar-project.properties index 54f1eda..20caf94 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,17 +1,3 @@ -# Copyright 2024 Zaphiro Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - sonar.projectKey=zaphiro-technologies_protobuf sonar.organization=zaphiro-technologies sonar.sources=. From 4173087cc4b9633f783bd874bde7067b82c732d6 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 16:11:42 +0200 Subject: [PATCH 61/66] Update task.proto --- zaphiro/platform/v1/task.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zaphiro/platform/v1/task.proto b/zaphiro/platform/v1/task.proto index ec7b6b2..e1b9416 100644 --- a/zaphiro/platform/v1/task.proto +++ b/zaphiro/platform/v1/task.proto @@ -14,13 +14,13 @@ syntax = "proto3"; -import "google/protobuf/any.proto"; - /* Messages to support coordination among processes/services in the platform. At the time being this is a proof of concept. Different changes may occurs when we actually start to use the event driven approach to coordinate -services. */ +services. */ + +import "google/protobuf/any.proto"; package zaphiro.platform.v1; option go_package = "./platform/v1"; From a7a391d84c822e5b008a8c38a1593d5a47a58bbb Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 14:12:58 +0000 Subject: [PATCH 62/66] Buf re-generated protos --- docs/task.proto.md | 12 ++++-------- go/platform/v1/task.pb.go | 6 ------ 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/docs/task.proto.md b/docs/task.proto.md index 390a22a..57655f8 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -1,17 +1,13 @@ # Package: zaphiro.platform.v1 - -Messages to support coordination among processes/services in the platform. -At the time being this is a proof of concept. Different changes may occurs -when we actually start to use the event driven approach to coordinate -services. + ## Imports -| Import | Description | -|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | +| Import | Description | +|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support coordination among processes/services in the platform. At the time being this is a proof of concept. Different changes may occurs when we actually start to use the event driven approach to coordinate services. | diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index d02c69f..9fa913e 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -18,12 +18,6 @@ // protoc (unknown) // source: zaphiro/platform/v1/task.proto -// -//Messages to support coordination among processes/services in the platform. -//At the time being this is a proof of concept. Different changes may occurs -//when we actually start to use the event driven approach to coordinate -//services. - package v1 import ( From ee736c25ba8002152301f54448ddb6fed049b073 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 17:43:31 +0200 Subject: [PATCH 63/66] fix formatting of task proto docs --- docs/task.proto.md | 12 ++++++++---- zaphiro/platform/v1/task.proto | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/task.proto.md b/docs/task.proto.md index 57655f8..4caaa59 100644 --- a/docs/task.proto.md +++ b/docs/task.proto.md @@ -1,13 +1,17 @@ # Package: zaphiro.platform.v1 - +Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +Messages to support coordination among processes/services in the platform. +At the time being this is a proof of concept. Different changes may occurs +when we actually start to use the event driven approach to coordinate +services. ## Imports -| Import | Description | -|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| google/protobuf/any.proto | Copyright 2024 Zaphiro Technologies Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Messages to support coordination among processes/services in the platform. At the time being this is a proof of concept. Different changes may occurs when we actually start to use the event driven approach to coordinate services. | +| Import | Description | +|---------------------------|----------------------------------------------| +| google/protobuf/any.proto | To support messages with fields of any type | diff --git a/zaphiro/platform/v1/task.proto b/zaphiro/platform/v1/task.proto index e1b9416..798efe0 100644 --- a/zaphiro/platform/v1/task.proto +++ b/zaphiro/platform/v1/task.proto @@ -20,11 +20,11 @@ At the time being this is a proof of concept. Different changes may occurs when we actually start to use the event driven approach to coordinate services. */ -import "google/protobuf/any.proto"; - package zaphiro.platform.v1; option go_package = "./platform/v1"; +import "google/protobuf/any.proto"; //To support messages with fields of any type + //The different type of tasks run by the real time processing. enum TaskType { From e29b0a484e5b98f36d151fd2767072ce4c4c8d95 Mon Sep 17 00:00:00 2001 From: chicco785 Date: Thu, 11 Jul 2024 15:44:24 +0000 Subject: [PATCH 64/66] docs(release_notes): update RELEASE_NOTES.md [dependabot skip] --- RELEASE_NOTES.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 493aec5..d2e8aa5 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,7 +2,9 @@ ## 0.0.8-dev - 2024-07-11 -- no changes +### Documentation + +- Update documentation for open source release (PR #66 by @chicco785) ## 0.0.7 - 2024-06-24 From 7f1927a77846de0d2186f0e858345920b9d88913 Mon Sep 17 00:00:00 2001 From: Bot Date: Thu, 11 Jul 2024 15:45:29 +0000 Subject: [PATCH 65/66] Buf re-generated protos --- go/platform/v1/task.pb.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/go/platform/v1/task.pb.go b/go/platform/v1/task.pb.go index 9fa913e..d02c69f 100644 --- a/go/platform/v1/task.pb.go +++ b/go/platform/v1/task.pb.go @@ -18,6 +18,12 @@ // protoc (unknown) // source: zaphiro/platform/v1/task.proto +// +//Messages to support coordination among processes/services in the platform. +//At the time being this is a proof of concept. Different changes may occurs +//when we actually start to use the event driven approach to coordinate +//services. + package v1 import ( From b7f9cf7d6999dbfc8e77cf2132a0f0b5dac831f4 Mon Sep 17 00:00:00 2001 From: "Federico M. Facca" Date: Thu, 11 Jul 2024 17:47:03 +0200 Subject: [PATCH 66/66]

                        3(+I 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

                      ?zc^D!kAPi62M8j6+A~o@bpgR_GiPx=yl(D54;BjK@sY$wydu zd$Mes8)8swt0I8k_?rm_9okO7>tgsw7Cd0#?J_6PP?VZn4-Tjq{In^wRDUJn6$M5` z#`|kpU6097NX;hZ%LIPDSegWVql6IdC zg_xIRj|V?v?@{+mNz{k?5bjacqT*&?rU`y>*zu@`jT8YatBcS8{xeTP@#Ls&aZZ}g z@E2`H8O!xM5Fk+h!0cks*q6`T#0uDfui3zWtF3w+|3w5Ee5Ur*V1mW7g z){%W&r4JtO&2rl_y2s~7vUGg<3A}s(JWvYtkQI|WLaJ+FU{A%$99Z-l>wJZnX0fNN zhT%2ltRk0XBHfKA2Y|L6OgxaF0u=H{iA8QUqP=Rl6r8j%kTF2u2}_(Z{zISAqkI{c zvEm0yUEOnWA)=m*%fv*{6srXhq)xEt@z{X=LZ#i3=G+6%s4tl5{Ldm9WvO0^#E7jw zf9mx2T&Y`XK6l$<$5#V_v_HKVtymOqt~nr?p-QwR#q%ASfl@u~R|9x0)YN*%O@7Z< z#82P(n0cDiULbKDwWwu8s#KC>rVj3)HL{YN=;o?Rp_4gl4!t|4G0;6}>|kxs9EetN z8@b8@OINcUFNPJ?8V0*$g#lYg1|Aroh)F{ySI5A?)Ed?-N)1T!9Nyvs8qbQn$L-kg zoLVVp12aDIeW^ypXkXp>v8?!(t(R4a;@TT$)k)pG^h4btDAoKH8Wb635>%w6poR?t z(==SjUg`7@?3yYwUj7=$L81P-nVO&xKo-;)OF`g&(FwNmDhF%U(o|KvG~V|o zMSD@auPJ5LpN-KHAvNTS*Y6EZ;gTVg9sz#;Q{vB9G1 zRDTlx7?xi1EnhaM-S`eo0x2zpN{k{|!Qxyw)Bai^=tQ5k<5+aEnE1gKyd^*L;D-+v zn7}#1XSUoVu098=qyiVeMEi^*oROxjbz|<`5rqI#tzg@@h5C})4k00=W}~)Hk5xBJ z>-c-zekD&X2%&rAe4S`D-{KC>(4ZSKj>C_Oi(YgOOvZ4OFQQ-8^@lj8zVD~PoA`mH zipk{erVCnwaT+P3>4V{hI|Ss3u!mIp(wlh+@15jLzF_CGz;LLYITh}S(;ZG;+XYvV z`bjt&fex%*l;P!kTt5x4pmG;{p|t>Pb|!gLTH;{CzqaX&cp6#za0ItD+4|8TaoBx zBG&sEyGkaVw4z8ad9PwG?7A6-U$ChnGcrZo1(5RI&r7T?dc+9AtW`a%{-al52NEoh zU2-EA><{ZRC&n?HyJI}N+sqS5I9M*FXgWs2(d@H`BEAb1(8)J?p#K#7;s~9Fnrv1TtBMe z1gI*4V~#XEeeCVE&$9NkFeo+yD!OY44a>g>1V8MbWaRyd7fwSQPcA_FCd1B(oovLm zz_@HFJy`Xu2yzF{#>!G9);*vNgYRKdv_=43Fz%=Jg+2<)mRyD;iF)6QM3Gr>gCpel z+gu$Y3EW3D^r{_|)U2-53)OHcVWXx$V3OnCNwW#wlaN$%_Yy{!0y~9gf#U6a19#CWw3~o^@WfUp z`)dnDfGhBmy7`~QVU?{QS5#>}$Ko+FzVLhu14x|8n|yLYUfSF#MgtUl7xp2#Ijigd z!SA~8ma!|fbR4X6-UHQEES;QF56&$Jhm}0~iVAo4eSTb7dRmE=NBjD2(rMc%DRf@$ z^69w*0|M!YI34nl6{g>Md5%BNH|OhN91{77y#u-i25DJ`xBhsSa(coV7+`WVJaQP| zev@$ghR;HL1&c6I8$v`3U-~1oNUwvu}&q8cku=3#|oPcRO>EX5AGq z@zsvcG71&g81Jnc?fF0ZnwwcJTv7HHtKh;YNu*6j{p7wJQbaaSq}5?_>!dE-g?J71#&5P>N*<1OdFFl=c9>UyOdU+ zE-q0Qw)lG&^GU;9KL5uEx}+{6T@(@Z7M)L=!+EnaqY3fMsU+)waE0Pv{S1ysP5bS8 zxXoF@*Sj8asgPs5Rj3UMa7;1Y+XPK3M(8qZydS^Kp8R65t3HD>w>sUhi?lhJx!=Q= zv5G6iRDl-Hut}v=k_NTG=SXL*%ge=Y4|sJa$k)l?xPYrpR?XW#;o518&gyBI`?Tgq zTFV8eg%B?Qxegm~A1sNMRJjUx$npib+mZ*O31i}{CgFqzv&o9=MUr^ z!5Z&-^AVHl} z9I&q!Va`8fI5tci=H+EhU(H{mjZkGk>&je7jNfI6VyWR0P^c{r#2nATlp9Cxb^8bk z$eZ!bku~0d^;k)8h)?f2viN5xUz(rlgp+iQi%<#N<1pyARdz9S&(ik#RRd|?>ug|h z*51R=vy!_=lK6aFgjBa>AMn-H$$HK9X&pe8Sqj6#co>rHP=+Rv)o3P-`Cp6UWf|Cd z8YmS95zfW~eEi58HUwph;^w}~2$aXL2=nsSgcbUc>)!LD>CTD*zxj!VX3>M1h zd&r8&^i|_b?aXvhX7!{~eM$M$5NNfRWJYs|A*PfBblTzgXdD5JlWJ6gV!;~58Ou5! zJ`Js_ocj1uL+ZD*BV{!eC4peBVXYQgj#q*I_-7z>eMCi&P$6P?Z>j|a&o9EjcO30& zrtmNjIoAsx6`%4kg}&bA$BB6@n0{xDat;Sv)gR~v(|dsmnIhnSa%zDO88c5Q!pt>e zzQsjHpBErFZU!%sg11NJiu=j}-bpUP%qy(>!R)foQvwA)~ERN^|T{kLQb_(uH;f)+;G2y z;8nUDjid%Yx_SvBslN;9KVuVBh?7&{g5bviYn+;OFmEXR`>bmhK@eD!Q{KZneDHwf zFLzCdb#L3;Po29!xI0|e5ikhbPA+WRjVYYXqKSv$g3h4-91!xQKr}Q<Tl=#&`mOnEN!_XyfEw4kfgqM-%>)gsbLW zJWwQWIcyKBYu$!K`#*kw_5K2YbZiUonJI>+run}}CZ5>7Y@p?Z>luVSuMyLR7C&<| zc&+m!s-kaNUhb@%Bj(g~gV%-zT^J|}3XO6RLJ1T;3fr ztGW+s*0KkdnZ2(Et`S+hL=A!w6ICEyI!DBY%o}A4?+)0TD-0tY@RaIyk_#Z~|g7yPS zd&&}qGCM(%ve1=5bx`NIBxPid&@zdg76vT7 z@;M2$Nr+?7j)joAENL_RjsT`FkqSyHKslqA$B+TQ5Iil`{S^O-!HF4H2~EbBy8h(= zDC#7F!NsZh47og!pB&1bOB(unHRa`u+`$W$3d8Of^Vw(OIDI8-?}_^cZK7n;nwcmg zSgYzL%apfimZe*`AFC*>l&a8H^S|5$0;Zv(fS%VBuhzpNUKmgO$Y=JqYo#wE`0757 zk-X4JNaAo#QV=HC~Y@WdfVy-rx%ED zX|6TR1rGIZ-haGwb^Enr#0dW9Q|ZZZ7|Mh7)W6uYTpZ{{f_RPII6+6?Jn8kNG8u#L zOJCR2$&CJY#0qy_qH->VNawXu{xuy?f>fmGhq0PULg$l;7od#jZBTMr?=9;AvfO~? zogiqs=A>HOF`qms4;E}fr`KfYGh?-mFuJ=w0%Q@s0;AP0wp$p+~@!WJm8g1`wxI-uRW*FP+a28wASZ@pkj2=nE_1F7{tFq!N?D!GUom>t+ zVCTfQjX%S@Q7SpTk(w`XE$K4Bm8YbA8x^q&;|dEJQ6l34$h!Vic%Dvaf>1i@xIq5o z!Tyis3lhXBoiw=n71_|hA32ntQMwRRr%wmO5m^cq_SRi5!yncw^!LnXmTrO-P5ENYpDW-d}Dq+J4Ow2D+9+TZ$d^`eQP#V9YlR3 ziJs8sNWX7$O+X7#eZ7R|&;y`S+keckko9V-Z6OMv%OTHJX9s($@n`f~U4ao=>hb zhNg&|2eWM<+3o)T;E3IkKuEn3pW1-3*Njs>k%o^&Q>_S&Y##up{}o-o=Ek^E-4zl6 zq%?w5ML=6UEuC8bkU@}2w(kG1i+^B9q^zS=DrcZDTxPwDH(7u4b2WdXrTpa4eQXcw z{IH6wRHbDptae5xZ1wvWAlLV-*=sK@W=A3rh>!e1?>p6nvlMz!(WiEOr6=Rs+=5>p ziCkS#o(ExL*Jpp4FjJ!up4f)3}tAnXrPs zgZ`}+n(#1avDw#@!5YLv7k@6ug59rM$`9IK!4wAHtv9Zyr$exGOmlIbp|7SpE)PYV zenZt2u|nc!{)1Rb!c!S6!o5RL`Snw4e9oz&nQa#vm1QJk8wgyvHjOE<=AN1zxLZ(D zuyDHaVV-Y4Q`Gv3$rgUlYD(+pyOb86j=Zou+0N_V3pw+#^4E68auT+sj2n8NsVCvW z$-ll%zn9rv3{V0_4rS?)-}aDMf>$7{ddKu3>z4LUuXD1hMS1j5@CHk4I>f18$C{vh4+nxmQMR_R%tz*cY2k7&x|a(M#Z4fl$qonV??1P>o+ z4kuym&4S&j(-`ldW6A@Gy`yYBHSV{c1AX+XoS?L)j^1Y+0ovM3k`{}AY)vN^Y5Ka> z8#MVV(;h0isntSFArm~-#m8+iiAt8zQ5aFm29|Zvy?f=)4#6(5wZfn^R<_52y=NR2 z&DF=<%rZKzg^4cXDODQLM3lOE8u}+B0_|k!3U{F-EjcI^%`e9iEY4D)hY`j2>Yw)Q zr%fJo>}R_LMMDt?G7sNJv67d&2g~|aAFSJ8>TV8$_o4>cgv8h*TT{wVuoP#Bn|j&nL^h4ww09w~ z`uT1UoLx;*Wb~W&3pT5!NuxIzc78iH1a0H867!U3 zrOD9|{V=wK240M33dS|usr!bXPn3(muu64k(P7pkcA7$O z9nK$sY3GckU#MunE6QG7R9wUD(O~wYZznP8XL0u)XHKUm|CnVA#ZeSvx~JI9BMBwr%D_ zFNW#kQj)dz>@r+tS5bJ|P%k#F*Y7WI!?5oUT}MDNcKl?7pwb0kc#9~qT6d%C<~6--2E!YyzU3+zjr0{Z8OscB?;oc zM8c?IXXxCI!T_|UqH}iWWs7%H2!MnmKD4?89z^&M zzV9JM68;hTdtGROE_ZtbcBwSKfqn8L??_*f;s|!a!_^_B`a=slgmTJbCi@e1H@Hn5 zv?*7AYf?K{m`JgQ(bKKFrZTqxmg7huCiDW1^G zKcy`7(f;cfQ%L)~z8h(qU7&bkYyTHky`IVA#WWivY88YRE+l09-)CKEFGvPL5x^(z z4$fz}T?@z|Q8(LVpv)elJXU%xexNu~PW*4>RM^fkW+`kvg}8998hxGVS!8G}*}B88 zTe`>$M!$HRqgs_18I?m?6yxMys28>PZ;-hB&@=+(BO31L5XJ+j7K9Jq+Z~*R>1JP{*)E4Q%l-{2!`AGk!Mo(_RVyAErXr}Gzz)G%z-te z46$I7xSnHk8>i&qA2Yg78ToR6lWYBNGLUCw94Aw5&T>NWL}VamG*~mTqcr!xU}*1< zS|BEs4ZGq57w3!1`h)WV9)}ntSHXfnfp!%oTc{nfl-B0Sq~ z>G=8brWDXH(n;)3BhEgS*{B7U#U&tynv(b#MMQ@=YDd2kW&gGTk$ukz*kp=X%2vLU zNq6km6*jZWg_nsCt>f+j{gR-#a8eX7H9c#nb+!_P#+W@a547uIg~y9a-kd){R39*X zWLB#yPy6JhBkaE%EhQ@*4H9?ZyLQ$5G#Yb*K7B$2j&6hPjsm$We998G_|IyyI>*`5 z@8yrUvrg*m#%n6RckGTxGcmbC;RbQBX7wNRGWt$sa*>`!qd&qy1P@5GE}EFZur6`5 zr<|gb54y`dj6xaK6kH%~h8ASAS9#lzPK&HX9ceNIPyT{ z0N3;jP0m!Bl|rHMI_UJ*`P7B7T$OK;y4wGl;IMn;Qqi#LG%%zn_|B=gqW?Au8U^gR zen1yha^`62mSB0D`*%G1`?WoV8l`0DsY^#8iyMk=nRX^@C<+pkCN_e6+ogkpNSYqz zZ6So815np}h0Q~)2Mq$NS;i9DNUk@Otx{Cx>%vK7!PogL987%7tL2sMYKR~c3>U7x zR*-wUV%EUhP_m`S10x;5G8EWOpLPQu5^1J=D40`({iVk`0^Q6zl-k-9(XjS@A;W}= zB0rOSdPk{Jf(u0bigNZ|UcKaOS=c*VJ}oTr^?-|!#caE`Kv0b~9HEsap+aG{aOxTB zI#{e=HzcbLn7e#2$W$g?RgA!le=ykQAZ0E7lZirC^GEUN@ofFl6n&guu***^WYFxR z_d#=x@cx6XToGeBpd&wIL$_Myt9XjjoXG7pv2}dEX!Q+KE_K*Fg2o8rc1m3MH_wXZ zvQ?Q(g|9NJJ>Nv7lk{Ao^}~)!>n~y&WG9bJNxaeTeQ1y`BCM4<)SQ~Ps573JiFfmims&`LS zX=iCXmgtrSzq?)JF5a4)XQQ3knD>!_-e1-!)Xne-jqiH6ONrDyXZ zsG05>#dLzMxrNk~oU<@}Mbs2*f$zb*3#tCP?V?$vdNE&oCqnd2br2x|mh>RpZtZ)a z%~P0xB;?-==PVxgm@;`2doaG+crYJ4Hks~r4#LrGAgVko`P{q9wadSY}i{Z;5HZ4zCr&J)~Niu-!hv_PCzZPap((a28M3{JquCSOxr6hT@kt z-nz~KadRLLE2u{XkmiS9PX$1a)DDi212~0w)HC*}QnDyYnmo~tWDiCkcJ?klHe=8> zn+uauo0r6otaETQmsQPP4h}ekIXwQvYb>(k-|Ks9Q-MmlSu|-Sx3)U+5i61ua5ubD z+hF`!tH?!0qw={RRU-nb2gMK0OqHTi=fdH9yD=w>iMWsC!jW)l2Azs~6D)`(;-G>X zV}?nhEfp9wHrGys$0u&sZ$~dE-0!ah%Gyq#P2(A1yly3ni`Rz-=@X<@P`-3p9R}`# z^>3lx#DN#&qR79Q9>}oZEq+uBX-!XJEoP zl@(@GQ_+ezEO@|CFO}fNI>n@$sNW$QDtP86Wq)1lQNoFRhd?=y7FLf8vl?me{2ZQO zAq%qUzW@U&^!gOBtuIr*(e)crxxkMy-ZuO@Jo!<*U|&vp4h4zX!rRhLJ&-SGgDpFJ z$XU7$HIsgvO~{>&*Cw(KupygYu6ri0l+!!ot`#o6CCrAZ0L6}KefA4aSO#PHM5;zu zc*5Z4IJ$;sZ!U{i&WFDVI__UaB5*r$lp|T*%vy(!=*jtikjim%HDn;VvG)qkJV?VQIrB6gspYB=d4K%cqpp5WWg# zB*0$5?Mz{7Nz`_+g}B>dO>+bbhqc`{##6T}3^dIY=71cUtHQ@+Oii<|gzClO=MY96 zwMsmf8*M*{#HCx5>DSGp?iWM`gGo_fE8lCaJhE97!zTA!LBp~mN;TFpHI{-p&F62x zmR9!Z6*~QzS1<-q?O;xwNrfVePxBTMb3>q3Dvxs~i#fUA*likO1S^EYN zjugT{6c6^G_0)Y-F%OnwvQnGv_$%lz#mVCwDtEgLLM3KR6mr4YU|QlCRr(@#O!&ML zr}v)t4$6umRn$KHFHY721j**z^^n8yis5*6rcxAhShJq&!b)-HaY!o^gv+hU~c z&+OI8X=~;!UxN+5~w-9QlkCCaF;mUl>4hkZG*WW?$*#&K7LG z79HFdz6`BJRiI}nwtjDMmoE<8kvqdJ^M8vo-gfCP^{)2ZZa*1A9QPdc<9ER5#6;v3 zMym;Q`v8wGvWen==6HSu(dCG!ECS^N;^gg}8WD#)3q}ce91fdX$E(S4Qpi!~$sNqc zC{C1%2>Lu7`X3-qNx+{EE&h058qxMZP?w$Ax4={gmzu7JdHVvBoUqRHKd3S+XaO%! zBv5FvaVIq%87p~a^7ajv{fCX5yU+*q&LL+$T#)<%OlPyu+Hft^qz!=>%H_gcncZnz zbFze~q+H&FCndRK#NJZKa+n-13EtzvlQpmyFWeKD0Sng|vN&Tx&OlBT$%v|!0I)23 zCHYaU`~k_;5bn@^Y$3f`WZ`}ISJlIFZBaSl+|fE|dQ`nWI(v4sf~oW%Ov1CcDIMIV zEo*>6MB#Dx2>=7rc9Qg}Gqe7oOTY`qo;z5zAYW;fc)qY5wGz;Y5g3I0Ll*W0a`Fje zC^3lDbV1WVdwf<1&7k{aRQt=K4O!~Ra}8}17I$xE4WsfnNS2^1sSHjJBt@lvOSrzl zr~xzYD!F334wK78>dUs91;2zxt*QsP-)3~*K)7Z}=v#6FF(R_<6= zrVcv+9e1LAx#`7JOH$wcfL$;o`1Td5?XkH^JcQELSSip@i(uf z-Z&*nETYTQ04AiKmAM=tiI@g^L0=HfbRM|f8PDOd%D7iii7hWjg}9yW2(WJmG0`Ru zaMfHkTK>0YUAm_LR$cuCtaOHfS6UPVJg|>wEQ8gTh-JZcr>jL0*xc}->Gnq$s(c6C z(5*BL6jKBF?LD_h5q#q!Q*geby8=rn)~307#`nA2Fs1h(oK+=6$Y+Nb`Yj)p#DLsz zHI)70AVGNWV{1(iB5_tz!7EvRcddx_MiRXC2CxdZYeWA19U7S!8PVrgu)x$bC_+>^ z1cbFR)Ex;XnfNLv{B047cZU%)hurv4yzr;rK%?-$-IuLa_NB!l>D?6%1xz6Yf-7GQ zsCIg!Vk_ukFij=9?p4V?;9sB-Hk(qNZuGBy_C21D0TZiLn07IlapPmetw-9-I20xQ zPKo>5^CB_f7)vM4_IaDW->O*3<(;I3QFBNUSa+2qnUIsaVecIgls3^ON|$OKJ0<+n z&a`wyUa?(F=7khG7;n}d?1tX!L(U)8Ymi+cP1nBY)(5Lxw_1fKe_`Yn-NXB`-KuD1 zTi@-9Pe`@xtuN1Q=pc`WnO0w6d`T8H;;egc=&o2%Rvc~k#uSZ3;=Z}TT=DA_z??S^ zX5ST{VbLxiqw7qv@I6Z)hxS-S1WYEr?T!wKw~OA85Qn$5X&xB*>^}njgZVMF*G3RE0oU2XbtA$J23|Mv9{QF}aY^S-jHn+AG;1s#U&7fxL=RSPZ6Dvy*5_{J_#mq0#HVik3 zr9$#Y&+OVxt`>|Q#CXq7u&a)(&zQxYx&`Jvt|>50uG2Fa76lZWz54QN9MGp(Rs1b+ zW@A^<;Hp0V_#ALZ`3K}S)Jq?xb-(FsA-h}& z@Dku4+VEr08_cetux&z{xC_%`E;M7T01^o379BR6gZQmAjo}fo|=0AyaNZt6o#yTbJ+}f=tC=$0E9B;4ccW z&avZ&6?-%AclozfI+v6VqjJbQpzaNKgV{=A+wY|lWHYPEM?wvH0?-{f)vglrT@6_| ztYs55$pR=-D&nGeMS?EfhvvR6rKZN1F~`AH`djwR5c1w~CllyMrL}{AK^dV=CAI7S zPwL!1a=%df8S1K4477zR3f#V5pYlY%RM~G0$^htzF|`ni{RmPN7YzPTH@XzJ)4)TX z%$gW94j_F(z~UC>PvYJM!BiOT$n+(gb1F2Cr6Mv-QpqQvPk;vqZ!(WA__x2h8Kosw zBCMS4so>fU8k`XESrSrMm2 zb8ga5GfF|ah$i=SltgJof)7=(U#jLZ zy@nV!L=9elXHUKH#TldfcCwBIN~M2)5|KL7t1T*%w83ETzuCumP9i$aBPgj0j5x4w zfp~anigPiIw*bup0_%n?8LO_X3salon?UFC@nin#i z2xTbx@DBoB+8moBI)+I`k45njk{fZQZ8e+T?32`el!2{)f(H5IbC)pw!Fq;)Jdt>< z{+8Y8wYTnu6t!M5jFg>2A}r zhslgGioo4(VPrBoEX_L#y4w)gox}ri#H4sjC>q%LnF|=*=-AQzNjW;xKQoNonIpHk zE#KeGCRKQhKINvZwBfzM?Z4lkPStlLfons@=tVN;LDuXikj$6h@pq55W?W(`9%7>! z59R8qu3g+nSfNsV!mI{YT%wVwqEQtJ>$DA*Y6Mh9OMd?~O-;Tlxi6*|=W2!7j?${+9^(r+Jy~D*D2)#tz82&!ENhH{fr@q!p4%zwIBr%stOxQ9r42j!r z8-%-?<~csXZ9c9CMKzDZL0Q%0t!3yvhd?+mUi#YJn~U*IyGlWCXj1O_Lh9+BN?N5i z7OD>>xszW36r~yKm^GZ9((Bhzju$c+ZN)!Q$nnpb2;Ih?4YnnlFRbVwOkCO2t1u}d zdr-0!POx_#>)M2*G?VH#u#%0G9i8(Qqo4TNQEw<< zqwL>L(mDls>BTo4K>Ao2Fb=2QeC8h|@0JSCbiS19D;mJqbxZvWI7BKAEb_gDvd0^T z^dg2lD3t%7K!iq&k1}qza1X9Am*K@=yqt3EchPP5qL=jZFg1Z8=l&pB!ICk5cp+Xj6fe=0H;6(n!?__nzXCK59&5>S zp7T#a$-nn(me$brS)?t>P8GO2o!0R@wCyld7MnuCb<@xlibuxNYd7S5e+DyNVp$-| zT`-I{npp%rou5GAvcXq?C%Wu}v4Fjz=d6;pk}o@W-Ohda;x z*u2DEPHAek6LxK`7dmOc z1M(LEPGH2c(72fjV;Ns0L@Xi3svz91s8SD7R!;4)%^C`DwhvadftH#5bNwUey5Y2J zA6=2!qX52c7y$zf&8Yl|$*@m!3l7@(+W`%iZ`Uz-WX0GDYPnhVzc*L0+9Ka;oO<&Z z--6tbFGIZVQ8sX0j_)kRrGc2)pnHgd9qb^v+MVotJB>c=jIyx!R+WU?ePAD#DW>S}jD%?K*JPF}=|1wudrh{VIXb^Ka25jCGpq>jCLB68z(a zrmaM@nMURl$;AW(#GUE<-P=YdM#9VZ>*!ILGC4B=-ZydxRmK6)BLVZvGTgAL=pwoe$GKY-Jw0MlN<@zVur`PAboJ0iv==m> z^s=T5q%W$ZX6<0xy6|~cA@5E;GFlmNI2J3FAj3cjk9}XAhhnUa{&nc4!6UYuWJ7L^ zGePyQ?9A0cMRVQvR?3LHmfj}RwZo#*o@-CpNSr75F1w>tWAbMh3tL8Y)lpF*mH)7r z@7MrE`G}q2^9aE{6Niv$qQJcpC!cA>U8y8O(M>;)mVkTYDI}StJzBck`7d!7x5<%X zbxQzJo}3|_%pIX==6%4{(S&PmJ6F$L$gDN=+Z9xg$XHf%VFy^n7n*)HCU3=%%B6SE zB6d#TqF5sL`vv3%Za!U>x>Wh*<8RO;S9BUBfpyeJKHKVVXKKLiUn28qoyD6({FR8> zd|rEv9j6pC8o^D~UciayZLZQ08rduDOmcatvi4qTFo|i;Zb_oZjC<7)7Wabt;86j( zxWbBN)g}iP4X_c{6j-7wV)EiYe^>S0YBiLcYaAYfE4?N-w+aS2&WR5s9KjL#lR7YN zmDtFfPlvyJ0J=h%Ehfo7-{!nxPX7v4A<=r=%;?5XRsslMDM@LH7 zT-a3rVy4PaFg+eiY^Qehe#wF#WcD$WOIFAJ-&A~j*{fKQ8Xs-$^?%yKg`<;11>cr^ z>-7bCr8zoBqAhAm@78z9y#<7hIdlA=j? zVxP%Ak%EXfEc*S}?f#5!?mqLDucfFz+~qfCz#TfUural3Bd|B{i7B7uGgB&|*{8Mn z6W}D^YCCx)&#=U`gtP}{8^|OUKal!)mFQQ!Xuf6pHv_^s{9dJ#*6C7m$i#XkP7{=g zpRkM9xCn(i3kMXy{F&aSBtcTPPzCQqkp@*(&04{7?&@JCOIN@i$Oq`FLw z+`$9(Bb%n1HN|>+7y;I_+S$nK!8b$7rb`F3QdC%`pEI{FkbzH28mitUrFvbv(t203 z=E8a?%sT)Q_NR&@_|=jw>u`i=P3o1)RO^9E;3&%~Uu5jg_{6^+93yn#2CScXkA)2S zH<@1|azxwoG!}-hZA{PK&qDFAtL>n%`WXZb%a?zH^wlzBVmeY! znMAu`RWpdgd!k;1J+RbX0E+OT!r?xh(+z89=hOXRWfx#@`~Ni#VyO9K@=rp}Hur%h z+Mhwg#7Gvnn|3ky0MH;YWreh!)?&QMO!Req(XsqVw}OA5G*nglyNCBWEck=sV$jrX zu%Hu?p`VB%SG33T++GMP7J3gb>)H+3HUa3h?fiYuolGRvbZD|%WTHBbG7YPuQo&#RarxBscm5v2?b2qAi>r@dz z1ffR9LC1=M`@C}up(!huosqsdWUc$6L$I{-OF-zgg5TQaIZVBmV+dq%Ps{8ce`w`> z55vQL^K&XQ+o0=N-Mv{-##b^;+njKbB9N0fy(K$&n($UPQA3Siibp}&HuDdcjteM40bX7(i3vt64rhcfM_i9WoX=>Rx-iBR2 z|LnjB96}E=#q3?|kG%4xl5BX^g#UvRr-Y#Y+XjqShZW~nXv+144b*hUwzCm)=%^tz zOvqOwXAk}-` zu%-$N0^24yl|08}27rDO1zq_JX2b$x#)|UJvJp-InKm_-PbgbYg6afY)1E0lw23gF zP4|c_$1LQcMS9g~f{wEXX8dCwd<+XYDX%J?=xHeK8`?m}$8@-4 zt{E`Z*T(CjOIL=v zp(wN(D*x1BEUUgnmn(o8c zn5IKay>|gjgyp+)sp_*T22CfMDX-dUg?tXWCb+U(c9fBu6Nl5Ey_@GDdvOdLB${@Q zw3AwLi#BNEgW;B2A5~AC@1PKwDx^7a#&%u_PNK-+aq_qsCpLdCAr}(*06*(>pSEp2 zG;WR&PCuEpC0SLyn1%W-vlP`0w4vi9dVp0he#2K-cTkngeXzlsED{l81?k+S0@a1C zZgN5EG^)uz<@Y#A4xfx+N1kzm+-ZH(Sj=P^^dlNf*JhuBwP@fdUG`=KAt`m!*!WJS z#xE7|Dtc+4C9;`GZLG_SC=E71IH&gB_<;>w5EpkKUcqYyVn2X0`(Sx)E1^C}U+6`&J(egH7K zO7*I{iATGG^gk#4pY~7)Qv=2B8O0I4TxdoU{g_H&DOEMJ;{i9rq*+>}oiSM&H@ciW; z&@S40VlFd*L_t0WrPu6y=FRM!ibfV`E}?BY16pEf{R50R&qKJady zLOD5v^MPUOVAB{Skc03^uM0Woxf8%;{-iWb?6Z8idOd|tiwJr`av!b!E@=FNIB1Pc z{GlXr-QBMppG<^KTz#7n6^_wBf9q(%w@lH-dEtq!!d1w$Wun=ze3`olHCsx?E?Z+P zyeufOd>Y*-xH^|cz9x2!pt9Bo=Rl3GYxA?NO`#uGa+v)s@-K6-g^du00H*<~hk780 zS*ZT1s#OQ@Y4|e8%o?4I%7qb+NYdVi*?q_Itt4T@VDLFGU-XsWadivVNvYL(vxHP~f-Red?y~$1QrEh9X ziddcbqHLrcFICg4-OJx)Dgqmc!V6H>eV9v|^)h#EGn3d^0&k#CsJ}N`=b+{*j z;-5zoUdYY*{;3{Txc#a!gP@n9red3bbG3^Nn{NYS4E-GX(x|;;y;bWLdM7@?DvFNe z_w}ig070d`Q0|l*-w=Jqx-q;bx1n=AB`9ua zF!CJGvpZU9Fgd^rq#HVTmi<8rPSnj)0-Dq4p*V&($0ojjWPihtxCTnr@)NiWp4g)q)<bAS6np9RIbq--!Kclc3ZQhBqWk z5nXzZX?)ED~3Bl~}+Qv{QRY)MoTUE~MNe2^w zRHkdT-H3vaO>H%)hM#N*XP|@H!=$x42Fy7F{;}>7sP1w(E{IDRD=AI z6@Hq{5BtFCD+)VD8@T=%+)J)+E!fIil`mg z=@cR^6?8nZd~yz3m)~X#sc?2({Zss3BCWW!wXV|M`g8wntItU_Z4c!$)Lv%I`fq77 zZ?yao&aC}gX<(RquTtU;fh@aOap4a|WqUP?b-upe_j2l=)^vUaD@7M`l6rB4)bH1J zvxIhSje*+LNUQ?CJ)9GX8(KJ}`p%~yXobs7P$r!k=0zcxz^^4;tTJp|^TM+yPG_P! zs>OP2pP-{@F3*Mw^Br7jkcaOFP5fqWv0)+s)Y`&zsU9}G59Uah=Ene;EjBfvq7SO} zeBnGQABQ;Op*lp>fZw!7TZ<&xY8rAp-3Ys%ADkkxMt=FBlly+UF-EQBPNNX6^QBy> zYXkypbUyrneG3MfEAWuao~MjxdoLDP+uy-d^_ePn^z=*IXM9ew?R$bsszb-*%PaWL z`t@>@BAZGq&w{(}Eb)IfS-1vnICZbhqj*^)GMKRkm~GR&E$I=3x962~Lno)*cV%uC zG|#H4KEb1;wm@Pmox(}YoMWLYq&Bk>2a+s|N^Z0j!h)IT7<$eT{5e&i|(DLs8U7B`co9~7kThv;4@ z&_5^m`8Pm>R9LG)<6@{rFbn*~I8*7L`^b5ftmxvDac&#OznNPZd%QV@TiP zLMssy@V^97VhG8t@6NDe5p1!GeTirkx8p}q->r4Oq6LdLTaq5yC1y)E{t{<){{VqZ z`(Q@M%Yb8GyyUGAY{_mWC#USTdbPr8v;gQRyVrBZ{r=;?BOqU7wJ0lAFkcQsb_Uq$ zHW11|XOj|tlQB?kzwnwVB5n!8G9ukYAz`tj)-#4)*H@59Y`wzqIZ<|*rS+>HYi$gW zJ7au9=N4!w=n+g7cGAG7I1Yp z=BldVY1zk%WEhn2OK&`J>*>O?TEbFp3|Q55Y7zio#yq;FXLBG60QAl=&r4d`K#kntkJ#kLN{PQ&Dp@Q-B|dL>%!!{*c3> zU7X?hAc}3h+Arp5A7#6$CoZ<08@0Q;JvW01yV^1~g2{+GectC;r}K1)Y;1>8JqUPZ zN!ZOr;JkBWwMXYu01kfTT~mr2R+44Y1g$QA%6QWTYTH@(6d+b%v-tQK6c>@PPBNK0 zU?oMr(3n`Eoy|o){1lBcd2yfUUJQmd?&v~ni7mntLH$ke+7m($M7Ouw8tRnOAE96U zO~DUuHu+>YK=n{{&5!Hdm06j})Hr zC*M=Zzy_{ldd|h^ScB1QC8d(k-h$4YoyWJ6Zh2X5%qO0^F_LiP;h-s=s)H~Kw?yWJ zH+32qzaBpdT*&Cwj(@|4e3B%syp6Zxp1WfE{YJXZ%Xj3c>r39Q?y!v0H@4n(dFYtL z3;Rc5YXnS`vI&+S_ccEfi_p0O6hEP}(__ecEW<%GS8hIxSHvDLOMdm*3dG58!lTZU zbp0FWmR1z_8b3>2(2rn@YKkh#+IF%f2lfZ=Q+QcJ$M7TIx)~1RAc)9Pv9E9X<3$!E zoM1kJgu#_va~D&U19Np51C>cT@Tmez3jjtZa9Q8&YGg$YG!EZkX9syCPzSHP5? ziRX#VN#Hj1C$$WT%sGXS7@;aW*sBSNFw;A?8Y>jj?1ZcJvsu4|YR06#@@NV&JRek~ zZ8*h^t%ecAx3Et0>e5N9M%Kx-rm1=pgA07eLO5C?X#4=sBnRo?FUZeh50xK8#v8EF zB9BCl>>2kseY&xKcwhQ6o8MRg8KM2$l*$?kNhXuWV*+bZL7d%W%UF_^qLC$cyGD4~ zNN_1wKc_n(e9>@g*3{0R=(X#Q!ofHL!7&(-Yx5=nzlq~i4V!3#wEiw6Kw`o=QTEey zC34%Q49GVC^WsZ}n1asy$t^ZX0sj)AgmLLg9D;S_m2CK2l&Gd<%2%#42axyI>6G1k@LZ#1e^`7*O>7G`^ z+?f)k35qd^ci1JcvIf$$fs$9~`WU22_V>EitdAv7K4{pVq0{Sfz&qWI+Z;$PVN%#+ z8dTTew5!C%#H^L?07h&Is_oJ?6_7`FLxw;pVG!CsH0UL-RPxp({f*iApQOHdRo|A< zO!3<8T*zAE5V6I)(AEZwTYm1S3iF8=%{)2@U{cXrfh z10pxc*zY!MDG=TqA$Quuf^wGVe%dy8rEt<0whLCboH3lu@R0sh~-lNYdnzoU2A4$7>Vwe4%uVQA~Y@ z`3kj8|GUZ=sgR9V6t=Qnti<>jg5(w;R7b_kqlJ6w9&D#R<6ijGl3}z`BfAyhuQbyE z@uPK-h?Ek%`X%`@Qozk?e^u;%=i36P;90h5fOUJcy>z{g`Q8#<9J}4viC9K#W$2Fc zaBi|Nh_Dh8-dz14L$d9nWD zbte=mBEt+eXP`mY(3wiZ^07n=hOAXszoe`HJH9us`k<=zs|f5J=E^ z?yy(0|2cs2;LRk-x#at!Mq0@>3vAm)UZk$7AOET-8N+qu%51sIa4MEOCaEORyec*{ z;Em-fJSf{B@dwrR{z;9ax&1)#AA&0VvEb*fATTc$y-67*%haV8PCXocPlL8;+i2z<`8t67>+ z0zT|2w7d}a#2F{Tz{=CV*d7(i$>a$F#+;_1*|kb^dXImT6pIAqZ3L_p;n+AC7t$7M z96$;8edm;pe`B_;rj+n3DvmfX!F)4sc%5;!&3!op=h7U&+3zo0RUkh~4JlW&r2iMW9zi^2P@XB?>d$mKJpz(?N)MT{DLq`Vr&-Uu zsR)warQFP;W-0mdLlk@hNVKnv3A>|2;IE9-U=SniCr!99I(1enRM)=U{7~KV%P`on zK^7kaB_|#X%N>R6r`vU|wcw8&tRNx92v>DXvYrD6)^QHIA4Www%@yKsE0I7lQyuWq zGMljq7zqECx2nWfJcfGMGAEkEx38S-DwqvpF|1y*pQ9i?T;Gh2Ge8O0PK!1aFx}2? zdREZpXP;M>%1MkMeD;?$qJern{^Dv0egZNeUS^ZCBz?) zd4aRDo%<|0CQAz6)b1@hoFC={edz{`awU^QLcHG^iyJxxemU8}ZU^_;X2<0#?yJWN zffOFPfOPRN^?2th-HV-DAbQy~1k_e%1!VBJZVn;%wu_4B)#}-w>@D#Q2Wp4RI|Y@5 zP2)^Jr#Mrm5?^6^rwt4Hit)5%G0ayZhoeWEa9t|F#?aAMM zh;>n7OCh#tmffEa6qtMX_EyTGh`ja<7l^km{`qsH|MUjx3^P6G#I=F#LyJiLUU^va z*$++YoeyG47L;>ptlN8%#sd$YpZATzMXBM}{2pd#DDg<6|Iq04eBd~RIfTO0YZ-=` zD3PETCUdcIW?*i4?=r@akmW{BX8ZVN9@JuhqfRGt1t3avY?KoxspMyS&>#-nYqBE} zIj02*>+zEr32t^`Pf0-vfyPOsuatoQPuMuB!xO6ft~++!%Q2q}ad&W07YcsiNFb zuKb>=n~*`iD#3c3RrKQ0**bTh{839U=p5*CKqoM9r~H<+`>by#zzp|JHA?NQ!m)<<(_}NDAWikZe=jO-I z-H%L=io5e5DPYVia%gim%C&M;q`@+0vdV&eiS}l=Y08F$b z8~)rMfe+Gy%nZ73X2E_^HZ?|d6qkXNX~L;(Rj9Gt{IW8qfoDRKr5zX)r|lFH>_M|< zU^~H@U?1N_rI$=g|7!=*Gyw%9p_j@D6eA4!ZbOV?AgIAiCCx_r+^=Kf)F&#G1H-Mt zVuNJlR`8vB##Uo`Zu8@6{2nx@PV2`L9rRu5UG@0DcdC#yOQ2Q!PT{oc7dUKpB7H{HXQ8<_0K*!7LlYtJRjETYO4I`-~5$~6>p@? z6K)%sqtLD|G!-OBd2m^4X5L%6^WC;;vb^R}9X;I$hUcM+c7|mK>MGkXN%|Vx=M-00 z*%ye#_kF*|A8hIF+0Cp+Yd7qS<@F>P!h5wDHDZOH5>>V0K}F5d{nfEfW1uaV~Px(n)fn)+sj8JYZ%mbvzsAs)2f2$ zAt+H(nSa^h|+f?Lh6NO5=l zAd7MQ<)H@%{e9=?xjk^FnM4m>fAcnuVGfgWX})`aBe-{bD^UL@%LOF31j?>B)Gj5S3d=j4!)uj8-D52)vjEC58W?&(T(~oF*2qHi zE|5o#(0~bCCFvT=n4fb>D}iI!OQA(d9^o-uS})tMoc>i^9x2TAj|LlNbo8XS4xcz{ z0wj!tSfn9qQ?PQ}f$aEOF05*ZtC=-sZ~*(}VO1pHJ<);ED|bTjL{uvu&7e zU^8jF8l5bUt&_%Q*x#nsSCmkv)m36HmHGbojQ@(7+WUN_ zJbc$=CRlbw;q|5|S$cW#W2?CS7&bqzH=k zyxRMb2^{1;K@QROM< zrD+obok6Mx7W~Gv%fW;lB&J!cb?)FPh`;hfz=h$Zj&+Ztf}g#7*ttO3ivh-uEneqk zp0kivqjX6IBPo&!gLvQcxU=pdQnGi-w{Lqjbt1nGUH7*SW%C=PVRX3GWksteZpX zh!lOAjXxBsWg0KbAT7_}|Iun3IPrUXgiQ;`iWIo@R`RdTH5f!21n>N%&A^C|-p;s# z;G0os<|R3wmp*tMxTlFsuL=|W9{Tqi{X`*LQl45S8w6=7OSWa(xiprJ?TVdQ12Qhi zHS=RNKu@Ko+N(G$0_MZsEW9FsP9P2bKsPLE1w5m{3G+W8`TY(Q;NTH!?P_*#yZa$~3cQK2S*-j*?Uh-_fMQr!qbn-|sfLsC?bRh{wwuBp zL))mOwaASgI+!{XyV=p{&j)HXTir-+Fgj?u)WJ7oEVbuqJJe6MRH4DZ`Os2S?Ya$S zkPlN(D3v}xLV-;uM+TxY6m$i!efab1%o{ka63&$FHIUlOhHMvqI?Cz>Mt)^F#@__Z zLx7{@nnoKX?G=sen`BCwYB1~MP_4fZEo|usyT7*O$2NC=UL0pv)2p(n; z@g%yFo&@U!v4qsl?Rd2$^r4&FmT8ba=(lE%zZQb+*Yr&-htIw&j(771zf?Epn3>pt zLI{Veio0LP{#!W_MIAvX)86>aHc+>uC`oMp#V~_ za_Y3BF@0}PyfT};i+C`J<(De4gq7hICY^VN|_^OZ}>re+1z zeejpRsGgva3*}XfEFkCCI_<*TYFg}*07xTBbFVhbL%xq4`sAmmq#U@1+|Z|Ab|SyE z6L3>%9q?O#S(w{^LY?BJXX6}ecW;qXPbT)=GavR(aRbqXppGL3LgSu*<+s#O93AWU zg$+fYnI-c%qOk-yUy!X>8uz9q(Cs9+);1?pL%3vD4C;s@RS~ic!^qxto zN*{8t4{Iv>56|22EqN?h~fV>*GHp2vdCq3c59S{!5v z!RZFO1Tg!BJb&>L!W=~HA5$9kf~? z3OqvZ920iTY3g=7lykSlh^Wqm+`p#a(o3%NK z3;%Gc%R94Vv5~hbKMw(GuQ$t5d%9=0m_cRu{DAWfy-ES0WK{E%Q6=^@OfK@lLL2qF z_u}(#noRB?2xLJuACeiy3$*Hk6`zN49rntQbh77a_w(6`nfF%_q)-_c9)3F7=;q7x4jWU{c>dalg3Zp$kNkt zjAZac-}TFBd*PJ7^r8%@J>rxo@%SZE8VlAJd2D|}3SG;|mWBl9nb^a#{f=Ax^0L>+{aHoWRggkjU8F+gj$cF@7lV@r0Zgqif#V_1o9Kr*$pzxyjE{^i z$x=Z-<~`J{FsWjca$4|!$wRU0Vrc0GJLOb4PqFqaB&~HF{$70nA8tWci<{|mc9t_! zH=v00=)jb1ZeIBo+5gK0WZiFWnJMk zRw;Wxzdpy)U9l=fd#@Ue@(z(4E|-Qm-GtZZqCPv*ZQ zU+fe&?FM(RU)ZreHZsg7z)fJi{K$odugAufU#bC*FV4up)GBFoB{IHC#Au+T)Oa)i zxZ6C+F6G9Le3{b(>}#d(b1k1ohtu+o!9^nX!3b~`pz!`+U~7H$oK_z(B;N(iN4 zcGA>-%W_m1-A+W)K}nX{IJBbv7XYHPu2z%wn?0PdYLQ<%p{8Jy+!UNqz;WS1F6kOq z!uiZW?PIGk%TI;KwRXkxH=&Xv#v2*sW;?~tYZCTLi`GV~H&pKt>FWT}RfQs$X6k_-*H34m~yI!9PIHnwVN z47lO=OdckJ1Z-TIkp@W4<!Mi7Oq+EDe!nR^+f9VPF+8|L@R~X-`i1905@^ZX1 zzd-7PVj^lG4CELt2Sy-0S2lsZ5o!++5gUf&)`Tka5HWQr?&99T$@6)-dFTrb{_6EFQdU|_$4*gwZ18!*N}r+**8~)j zWN`9n0+HoDMBss-M4=b`CT zOS8cEkCbn}b4(LXMLqDYG+Dq4In`FUF5eOp1Yf=CzoXK8`nX26A}fwHGSoLF55-xpED|zANkHj+^~|gp<^iBvuS%3bz(h1#ZJe>;>W~ay!W3nzS^Do zVCpJbgNMsSbglIl@f~R$={6?xo8)`Ik3urc3y`YmX|7x#TVD5^IV*B$Z#64}+4y0y=Hb^X9Pisr$K|jC1vgBZ;5iyLYIB7D=LmJxfB5Zo$7lUH8H$8l%W!;z z(9r|lT9H%rPd>tFMrzM)1s=kO?qz@ zu=E#$uI6;?&iCWf`~6FY;H(z4{iE}N#u;FQJ+L4ad|d7l3jxJrE8Vncx*o-7W-`qK ztXsj#^3GY9st*INH2l=oy>v%ZQ{+<+ zQM{ttI?N7DgY|Lay7$)=LcC*!Y`<6i{2d#R);&1V-ot%ZwY2+5J7QmA2aTXa{bIN2 zomb}a_i7!RP}&<(WeupXQ$!QiLHIf$Y2tAcjwFS=3-> z>B35w?FFODcj!IE5;FCfzc4xE+7nQiw2&4;zVm29Q)iT9^6-~)?~{% zh^2PnLagF~nPe+?;zqhoGWAe{;jgNUJ<4>}_3|p%^BxUgR_zZ7!Ux_^S?}OTMe9#m zc0U5}vXE!-IWrIgv$M#fVI6pqrVed~GE_Lc2m^ZpDEkG^zAxdiqu`_307zi3&$jNbH@4k{OYz_u{H;PIoSU?YtQZp5x#; zdwyrGk%~Vl(;s2TMa!^b(>v*!FwYzvzTwIsIp+)bqXFNJNp!lbs*tSpvPvp#9`R5$ zBR}xPU@rYyk`a{9)TZTF(!*t2scI~cpS8~!8faXt^*RBDwDUNYmv(1Rq9_ZFqtLW6 z5>I<-)3}63rk18=0-mAIe@pwrlKo^KUf&sQP!UO$ZJ|7RY2lxkpM9t&BaDqmeix&C z11Qczr5IH_`F0%#>N{-;B1rvTSOX5%=baZ-R&YhAa$F2}KAZwj9m})=!8z!4@YTI> zJ|ei7wD9y`WTlNuZEWCzCe%QumdR7DPAqVVWABTd!Epb^!i{n@hczPH#V-=pdHHwZ z83WMuBgc&G-6c-wehP@qW3aENkzlWMHO8ktKSF=r0)*WB3{s&QvoCqjVpSG9?y^Uk zm0LZC?A^JU#{@W&w}79(Ex0``J&5ROuJj7$B`;oG!G!<>1U$iE%D0F5f!$c91;6jtR_$)pHweiMJ@l?;+++a8ReWiPi*f9!P(sxPs zXv;6{O$R`Bnq^0b@yGPs@@cW1hidt4(baWLbhYoyzN+>8K*!f1HtFqF&%t)JQqHL| zwkKe3n&>(}(_~tB=nVx5W-eudmPgj}5CXouPv2g$cwI61wB8SK$@w(`9-07%523gq zNGCw;FF+9phOD=8zT;yNU~(oF)ar2zb*-Zw_v4G)uRw7$0&AvP#wl;+rO1yt2W0HW z^P)JJ7h`7$6nD5B9B~f1PtSbMd@m|*+GXAw2~HX$k=Xok9>Z2B%)=Z+5`2ERz^Wwj zOA})Ny=!4@lXRE94I+;qOV{~f^m0v5S^v|LJ z=te|gBHxThE+-&5`m<2Rn3@bK5ODuz?eygfv1kyZsW?`U<4<(ECE$fP) zvSGyFmpBb%y$)}WZ>C*GLE$1ZnGTpmGUu&T)&Oz_fmfFGrr~Q7+rA_G$O3r$k97#Y)0bkf*x?uJx^=i{BLBW$^cG)A0$bXaERPPhUsni zbD|u7qnMb8D3YHUqu)v%3|P8z!tjE;Wv@654?E4K__d0%*p5w!b%o%j?iDi04w$(@ zMxQjDDGC=Ex4N}9yek$gv!XoGONDba1{Hz!-;!cM|C!shOXEDFxw*lx`g5+S5woj>HlwMQsjohl0v%U0DX*Jv|L8z`B_V;U6q6@fNAX81gHrEe_znLJNJbJ9zv!H);KV_^A z&E#^T;=Irl`B7N9OXEJI#9)>hdg;x`q0VQc<>RYya;b}zoy`>%J+^-T^ROVU_0A0_ zqTKkDH>5;kCN^9=NIH_r+@KJhKfh~hE%UwEfy%`ovy}?9NB<}eVsSI@&H+0n9^)PCrlLi*KjqFHSQI}8 zN$JwhayjxUJ|j}#8fpfV9lmv*02B19IL9%{YzUden;q5*wI00U^^8iJO00u#l=sDK z>nN-L>->}2CrtL(Ol0hm#8G>lCy>{oSXNTUAH^T-3>Pp%kL`+OKI>W91um3f3nDk% z4WnQ^x`%%*bkQ6!d~O@C_U`|4WKn!2cJCSGJm+`R7}FS7Z@}$ic>^v2s{lzrw!icB z(Tj;XK=8^lU`e2jJLGcR&!G9Vz zksEb}UKaFsWL=vkjE<2TLPXwLjncYg^m)Qw8|@}8*GDYmWi2N8XP$KBn1MuobTl|; z20=$ue&fNcH%1~@;q&at%K|*8T7Zt}s8|5#l~r!d`g0f~sWP+ud>OWftR+FHzMgsv zQKR<-*i4Q>Zs3}k-z1zxaZTLSP1QW0xFAn5gcK*abTQfTBzaKYI{Ck>xIza7GdKhI zk48SFH$dM_^9H1oX^lV{&2S>XQf;bUcp{We^*SuMh5tIB~Wc;tls;d$h_n*xXO9tYl-(M8|FFbu(L)N3dTeWVge@ zL6}TkipF41MbFod>0k`%YIWlK0mpe9vZ`K)$O+HA(UI?26Uv4qS@TyR2x=UaQ8|>Q zuGt3Xx1uEPt5>42E-oH&r9YU?YEi82XguG7hr&mlr~i9b7EWWI*1c@h(rE~RyG2?y z$Y?o>eB`}RbtYqWxbu2cXIqbUkQM*aF8i__95+Cer571#7UL8wB;R<^zyrZ5hV9Nj z$w04!yTxF6D?mA>$h_RgDbH!7t7}C~j8VARLSD!g$=$E=68b=27i`geg>3vkuTbX9|Ww z!Tk%}Vv8p>8**`18gV`;S`a50c7M(s0N;H~&=IhKw)d79tfP|m-xe^g#19J+3|Pmw z4wjepHNevZ-r_8uS@9^6tsbeR)MJIc0`#S+N zWtBoIts7?oVpF`(=zdQ<>M`8ILJunPGC1_2hZ-6NVa97$MN9U{cnQ*9`)xd|tGAFF z;I{y3^Cvc*Lg~#j_h`%LzubXFI+f$X13@JJmgDEG1{)k!GeI<`&}FQ-AmP~=d6EZj zZ&zBCA8AI&&!Af6UYGq;qO`0E&$LA|xIJrZV!oH+)01y0^ z1JGY*jc=rnW?PI9A{EI>Hxw@9g96c~?~+OaZ43ErK4&H$SXa~(`2`Y;-)CY`$n|0* zY~ZxSuDZO`bk-!Cou^7bJ7cmV- z)$X7?iEQhV?>Rsjq(p-6GewnkEiF8StYTEHk6E|cgGi*;GHucI_q&1E9sMm&`;~yj zT~zX}IpVoF9!(0T2}ZKJjx#>9(_vv$y%oY81qRwZlr-#}?#hB^ON)-_P>vru>XD_6 zH6)b5;i)Ic#Br2*y9r&Yi=&*6wO7EjO8Xh^;3QrK0ZPAjxCc>y&$+&{p@EM-E0>^T zC(cFTJWu!a#3;=1(BfN|^T!Pg?%u;Cp3}gs^nHM!XT%_wVL(_~&ta3i4nzRfDnh0y zcT!38b3b)zvhR8PM2+~A934&Ez&pkJ@JZ01m^KUQN4Fj+jUxWT7*f_L!9%qKxHT5V ztkJkx$ogpJ)|Gu}5Nz8oMavo`Fm6x=^H61J?lIX&HIoSCv#?w5u=G!wl(@a~h&(2P ziy(=a9osN`6srT@)I|LiW$neVF6VVGp%;n%<0#;}YS5~;pae6ercucM}HrZ zRJ1n%MNfr+&6R{-V%vk|vdy6jzI5bmUfq2Cq*dkMj+byyHUdp%F{=*jmGtc$` zoPqkrn$%Ri4?Ml5+HKFGNq}fDbdg$ia&|lhY6`!(M+Icgqc=0Av6#r2z(QeZ?gb5i ztF_jwr4d;_mhoc{AVybV?z##gmZeFi**1(5ryFBK(5^w+&#uU;tW{$Npwwx%# z8~8_1Fu~<_p(f(s?GjIKS_WduEHisZzGuyTq{AHTM-PXw9&{9oS?5@8=9zBiAN6)9 zf;NdI))CARXo?tDB1UC?{KL)LFUX%P-?v*Jd)-n_9Xk}{qDOd?m9|I`sqd55 zF8xN-ezY$m^XuZ!4v*a~D#e};`2X8qwRJPJnynEGF61D1%5z2=CFY>utZglm4NP2X zyos8jT?u#1I5hjcNR2tEBrlS__?&uP z79~1gz?z8oOCBq_@J-+>w9OkdVo?2DU6UZJtb#K$Fp3Vam{G(yltLtqA6h&ZnLqGV z(w+JkvHhlEf5MQ9vAL1KZaMcd_vovJ=L?Z7N>cTp#R~7OGF_DRC70IJQ=5sp5Cz6| zDgzv`SXWtHo1{QbWyq5#g$qZNH&XQWKDG>LUJxmLmDI3VWn^PRNPUiqcu71bsPw5+ z&NR4eK<=B`Z}<-;93D_dl@4@yy`9F=`DBRRAptHUh1o)TSuS@MMN`GYwpIJNoKZ*R zQ@agdD1@H@H1QgFf#7yAM_LFB`!!=CJ}=;NN!IpCqF_B9| zSlK`N>uSMOZsqCRoUG7Bsw~saNO9}vAGYtu5H3y6m;c%|*q_~*9Yc+w?VI7u)$=_I zY4^!)GPiAI`}51pH8+uR<&}aRJX5vdV{x-brcL@L3qec`Wg7ea=-p&G zr44fo*ofbT=M2gUk0U3N&l&wptgFxVaD;JFC0bj*sq7NQT z65RX!vLE;(@|!%3BhPEQlmm?{Ts#&AcfnR~Vr(s%+6kVJQBy?@bE73_j^%j@?*qV# zjGg`LYX!D=KU8hAkf2jC@iX}{M0uAi>?eG$J$;u53k_83P{D$TS=rE&!ci=zq#}wLJY@D)Z1@mYIUul+tCzsra2afI z;hOk8<;8#*GH{9w;}j@o8zEgE`1X^=c#R zcge?iRbqApT)j*w-l)K&(R>fD-Qv{rl}~W|LxK_*=TO?K#gu$%y8|_JlmZmLk9n(8 zp#n}QFM7x(@A%xF`2}5)Jcivhn?UA)ZI^J7>D-xGI`8Hk6I1Mfys9;`K*?l$K^f_n zZm;!DMNynE7VWH?Jaz;~MuANiZQ_@788wDNTA&HB?X7Y85TtJRmD;z;8FC-dh`#3| z!*o0l+p^Y?yW!));*zmFS-!y~UbMV4Hpv%ylP(ZT6H2R@ z9LR_|FS1D~e9SDd^@e|#-UZki_M&ika_w>+w*cz> zFI%CDmA^i+$MUMWY-u?lv_qCOz5TFozB+<_2S?t2ASx&+hGqP8!#l(T z22>pm)HUsINIE*Rq!yv1L+)%zaFMTyl&#_0N*9^mQB(?}M~b157oO3*%6uyE{Omfl z5^>VTwfdE_9#)5w9ta7cZKEhylZ@AZm-`j4K;<$6l-2rX^xzw{*U54A+15eLt@;43w;YV!BjWqx9yg@#A zIGPv-aoVXfU3&KF3NDA4cUp(hDJ@Mghsrb8hsHkK4*JK68OupXi5z7{CJ#NSgs6B1 zAe--GsV(L-m;i?xH9SkS#NwatvabwzCNoED4_Hbj0t+DpNVwvZp+e&Mri%_duwJ%m zn@Qe3ymC}|oAJ_sI&Pd>Yp9=rLTw0jH{_$}KD$shX2D+vGO_#=>vi@t*m?%Z%&7e@ z>E?7KYU=Toz|*TV**S4-x8%NIvIK-_KId?0E*%leUtT-1pNEiC*WYq%P!YlLykUjV zmpTVJdVFJ0y z!BP5g)4yAc01h+Ccmf>VX4tV)s^zA3Z)VS;6JU9_&*e54QlqUJIvt!}_fY=?Ry-mr zb$;{RjvW{gnmpZf@D6)zxXg0F|IqS~eFNj{(W`8QRbbW!^W(2=OnxYnFG8SsNHb=v zDv<1xaaI}=v~~;U_T^eIJg?pB9s@bOhm|qtyK(s530G;hvJQip1y?C>TZbFYfK3*x zWCN&uii4|z9KItRLoXi3K)FnZQjR)HU)!lQ86m?R8!(atHIyKRl__mx(lZ1Uk?%{^ zuom=QJeukyADwtCHA?FM@*pU*&`T_zl0!~iBRFO!f#;YqZb@goVjRd@7e5SUc!N#d zuNR5o1Wk+vsD%L*s4|6`vXbHCSlc^_4abICrsz9BpqNf?4qu+1Ea>JoM$|(PI>UUp z9dQNhimGE0LvO02L?;ar|3jO1cdjpqz0-o9+>FT#{_wo9#qs8UU&?Ztl0<^0W6a=6 zi9ffJBrMJtU$^D+o%PVlQ;*U>w|tZm@WlItwLTa3$1;Wt+80bel&@QPjO)@-eD<|J z;!a7Kh-h_n81HZYjk7-5G$`n6W9m{Y0lxS*-C>L)Eh*bVfsa2@R1Vk$Y6CX39^?PO zlOF%g00s(my-1p8pM-;mFYNBIu+Mpg#Bnhg#8kWV{c8#!xj|F}v(*=eIrV zJ%-1>7w|e={{bn2YnM4h1t2>Oy$d(We+CadUVmiXJ@%EToL*9peH7nvAeSD~O)p$^ z#^#RNZ=qOa8PESFXvUQ|^bDhR8XtQJ!-L=i)~OB-Ic5oikm3Jc$g@-T3#HG@_pKGY z*>$ktq2Jc!qk(?Gn>v^TFMP!6uwB=|;o~Z&cW~ zg>6@ze8MXhNqiVIY5Ved=j-R4Ev{|1^OrHHQ&Zq%AFu^9iAP&h# z?&yMX7#IP8xqaJwXxa8p;h{|qQhIXLHi)_im_o+osomwlDrlAbsmgLZ4NgSrD|ggxpH-a58&r!zJx<`cOx0x<-zQ<&(wH zH*Aau3=%O%IilKzZp&jrzQZ`sCUG`>K`hW&ajJ)IC@iNSxS2d;S)mb-^d$dA^I z9~?=Z05BOS6XPPUjEeuXI`VuO`p<{fT_8j{5LlvT?G3}0w^u154n(^nrOX6P?{lJa zMlw0<5k55EI9dJ?($^a-I$d?BwfBl4TP2`qp0ZSD_lkalGqo*X*HH5VRGMUPN?~ zHnL79Aoawjaw#j2qN@Bsap2RM_T-t@np6FsKY^4#MW*+{TQ^8Njm4Hu#$By%GP6|U zK(eXIuR5vcp{xT58y%py5fW#Y>r9{!7sz=olwQ=W%qKQVepL)@&r4RkqH+wl*Cs<> z?g<$$Db(rPaBCQA@na@T_f{&j`!)BlJ;Fc$;cE812DVr&1BXW5v>xDjEM9{>PsJne z1YPuvfd{lfJ!ig=Wm)Q`@tr9*dyT zVVZ>$i>_mj{>JG^EPm`m0~cpOKqIAsVdudXv(mW*;1>44yF)>?8BXOc{_Cp^7>bC9MdawF!-_ zK)wowQ0JQs);CN;zs3l#Q*0N-J{{1YVWzGjBT-UDbeNbWsqB%ZObF{g%N@y`yQx6J zw0KoR#T4AH3}HJe)?RCbI2$)FQ3qjx3)7twF}@p_ zCva0vE=G}ld1zV~PHPI{KSBq$*+PEC@`4+I_e^LP$R%C5TLfMJQ@#CYj-9?q_T?Z$ z1RFC258IeC!{D>&{r0ZU$Yz@$^pZ=Ra~jOA(dpi}ilSeqt_jfb#_F|SHx#9Mk8ohM zAY?(@RAQV-uAY8=gL))6DSoFU1qqD6u5|KMZ;cs}EBM9E0u(NmJW1y;FZvhC7oW>{ zxasJF*Sud8Z(0C@n{hhZv$)K>W>n8nW* zWVW6b2qb9efp z=3L_zb}j?f|Hc*D!V6%w5=9^9(vCCT!Bq%8Np0Q?(t>F5-&@ zo*I|fJpsiDd5X&s^cM!z9fp{!S691QlO7Ep-i3POO%=2d{ob|foHml<*|@$W6Ly>L z)l?>a@pQUDV@>4U!Fb5ypuqhY*@uC3*QOIX$^sQ&hi33tX7ijrF~@!d_;DQXGsIeh zY8yskGKEYzhJ2V)@W`RWgX!OlIsY-aw*z8(xJXS5qG?If055;X0RVr>BvbiAw*wZ$ZzUN)7$}Wu6k>O_WHU!h2?Dg*@4k z8oc7)m~I7WJSVuO`pp>R{Ar)YVNfI3YhWi{_iCV()IuLRhiwJb(~fFevT8vnRj(sO z8Y{>Dz{Uff$sv1!7^@p;G>}M!4hER>$CD5F2T}{s_=3xpN}uET&^md|aozP)I{eZ# z^n`zSGmcxu150y8IHq;^LhtaoQBd~;bN|AJ9CX~FtQdg)OD(4$@m4HzJ_S8Hg8dfC zH+AICyb)`eS{rnnY~T9BPmsqlbM9(maiC~Q&v3S1iz%*)1GKz)z~^#Y;os!VI8D*x+jkRp=dx1$mBit6AGCS0d@06 z9i|~Q^Lx8xvk;CU{|a^L*AE030)Zu|v!sgsqXp))J)2+WDY*OPQ%$9H+-u_(C)EPn zr3At*r0FkEuZDu-FedxxXNa4K$-Zt}guji+N6Ye&^i&cm40*aA38RZ}55jo;_SY9) z-mEaJX{Fb+QfSbY`Os9Z2}ZR`9pz!rt_>G`qd!6WxHN=@sABPC`<}h5qM7pHNMv3b zT(@bUwL%(|nfm7@J1>cDm2F2-huUD6aP*_yf+TrS(K_&geF5VTLDu9H)cP!qk`yE> z&@NbC6)W)@g3B8e8c5ppflqM9;}U^`|DWYuoaB_qzFRUf1rfxEO-0O6(4ZSrjvt)3 zZBIlxR?5~t{xrFY+E^7LTz{ePbd+rYMT829eam4@(-#>)M;s72osRqNEY&F{|H>;Y zV!<*#&-n!!2kAUsxzvn9locPQy!+qYssyIywjMx9;b`no zw#!1H(--o9hcN0yS>5FIML1#SjohQxBzAqe>T4eHO)&kMa2{3!7Xo%eHkD*c`N%p; zAirqJfL463Q%-bs#^6c^CI$8?+3fhv*p*sz(QJD9x#r}6#sBS06JP zE}j1Kk?1u&2CP2`Fw`fb6IBwMrR|ULHdXU9A>4)nAzUo}QL2n(s~qmCXg`v2HTesm zBUrw=ST`OrpA@=&8*&u)?6E2_qcNE9ec^%C#MSK9FWa-B&W~@I z0{u_%f_OfrpW@ug#s@Xr_Q}w`g1B!j@7|~mGMHfL1c!%X|)- za$()Bu>8MW*Y}>vqI_ZxWN)$TkM%|w^*JlKbmBy>h++i%O@HMn!|E#YkqR-os@6*< ztwZ^QXb(UZnsFc=`P%j=U1(CB%C!CqOQR6Ca5^f&yG_|6eHX14 zrkA2ha+r=)w*6a(@GzE|iN}hf_xTdREr-a8uF_e=!*j|)2Kv^>-{*m8DHTe&wI5JK z&1X0L-45{_#}3Ecj+(RX<;N&c*?~QdtO8x*uyAtmhyddsh~cXr1njDRp4qr@&tk$N z^5Cc5Lr_9d=5nk;oiH%X7Lwha{*>(ghYx+6Q`XnVDnopw#RCx9e=_haX>#6}1}I<1 zDD1I=!hS~kF(Y@RSLEuB6`%#&ZSLDwn9*?-#26$}CbL)#EIfYv{Xg1#?j}@HIy$Js z0^ex}8#KtjJ90w5BcPEcMHDIk6+JNe?S)J-_g>ob)Q41MmnDV_wcNm4FEwnbGDxr| zX^%|#@>ROwj?nr=OEj5pnQC1{s;G_2GvW8ajdkoH2VFTeDkkaY%JZJpaAqByqIoyR5ZXBl&rj zpq&3B2qcy*{1qP25e)aOWsOxF&aez4_lyU&zY7ITQ(HSW77i2f9`1sknY4PU;3q*W zHhC?q9nP?9yOEF#l4m5}BO+ssWF9DwF5~Z>eGmQgmICotRd+VDQR<_1${hs=mHS|i z>GSdT9E0jI|1nE(ERFGdK4i)&oh~`UwPYhL+-l66{i&N9a?I?PBm6WtgZi5DLuq1# zGNvLIl_C)Qa6#2Q)`4v<%&w26U!Oagedi^IY_{O*gk$PlBN0mCMOYZYs0Oi<(Cdb> zHvxUcjBfkWBT_~5vt#bObg=~?;74*mCH(vZm$J}Ajl z$oqwG+^*;S1TD+H+(%`1eFb0ocAAm(y^U0$WPBP5_qTaIw4L9;!41}9{!!ve3T?lN z41Y4?)!^vPek(QrRsRT31zq>%pgvE?O7btZ-Y~Zoab5jsX_I*6;SH4r70|{j_vz zDJ9Ru*FC?#73e$R$S6~;jQP>r?XtuWUpK7=&Rl(uYzqJTx8X0(}xy<5=vlhqS# zm*>f(C{@!aejJtHBRO}qYd?@TDY<`6giY;)$!UU$E=m`&RMR#=Ec@L`y(Qr$OBCMp zE%*Hz5azI*s?fO6o8+qRMMScb6*KNm#a#>WO9{E-HTu%lE5vGjR@<(YAG>H|_-&4| zLr5B1{tiI0d1D2;8(NhhG=6usyYHDiCo;Gt6OVk@;yYrG*oyPuiquR9P=jI5Tc|*B!+=mQyJ2xHKgj zi5mDB@W6G~OHT}!8McA;8NTycDvT%>?3e`GW0bKEcP~`wo!MSf*GwSB!I%8b2|q~0 zw$u2uV_FrjCD-gA9>7o1l?)#e=bDss)8Fj3ckFW8ZGEn!Qv*Al2mY&`^8t9mV(Y4; zvkEjh-Y1R9f~g>N(fjSjz2w4vfmjo)#xdS_EitApAPIKAgOuUe#v-=3O7?W#faRQ6 z-`YAy=rW-tX@ZV*FSYn+Umz)vE4?CtGr!IgvX4;kJM z-jt8*623DuErqxm6Adb<+`rt*^q-O8#fPK>$0lFJg61EloQM18t=Z2S~)q?oe zx~~uczYVw?UmiUMd7r?F6D3xmMkg=Qo(Pc=aD{&0tU{<^KpELSd6b2u^w-ut=rB$H z?)hnQ?4AXHoeWvJtdP;Uc^+7#>|Y*gP#q^!zK^HRIV6rOE2G|xi+x=ijT!qltBnT{ zEc0|Yxk7ErU-5)b`9V*&-I1~+6(wqsm;>tyMahJtFn0+ zgE%cb;PSWrRPVP&5UzeT#_!}ZDPbu|aOM|VHL=tM1EN-;v{-5rsfg@#(zJz{H@u58 zuWm7si*X61Qqg*vB4O!z6-C7N2@(2;fcvL>8PCO*+)YPvLIHMhcQ6W7(xM&r3{9Ar zMpMSBDmu6~>1>;g^IF3l`RSP`zsQ5Fm?ai$Q?fo_ze_7-Ya8ziUssJxKA+> z^+zgK5PVL8i5Vj%h=)p6;T9l0DX4Zuz!>uCxdG^3q;Xk1FS73w~s^l&EQNCK`gPLm96p4 zr7L1X)n}+To50D2kp|i5AVUscJV&j`CB}+^q_(kZ-*@NB@o#iZKZ! zNOmD78OqFF>&31j()%YRR9KV^wSlQpNLjj!YT^SjmFh?RU(DsAF>Kpfx4j2h}*kPpN^e z=V+ZxB3esuY%yP1CQmr2PvbTimYC@u7lv#}Cpp9$nV8pMhsIjlZ_d`1p0fP@BnqQu ztmUTvEyvkva2~ZaZxY|@sl&AEoVk#VV85@4Q>R#%$i`1R5q7Gz;+L?F-hc!Xxns;C z5Pob1%xnd=+B*RG?XpC%%QIVw;EFmFgS4hA3+ADZCr_NO2 zK`;$x6F&B_zIkmrkZ8p}s?4wcG4-rho0(NG7vI;FW2+DNa{QMae|zRiD5lwwnn-Jg zt!XjT=0}%*7dbQK<&%KxSuBbyT_Z-t>6CYA-tB`!lhwR+Litlhg6zL>FRY3^&=+S3 zQWVk^_j++;7sQrI6VR0P_u^K`9;EMc7%T)6f_L_`=j2K^)rgn>$mLr-f`DUQkt^bl z?y^(~PVa<2m5`G~iI}xQh7zAc`L1Nbl^A5{c%9TkX(4w8p0&TlG{kTiDMTg2- z&e{R-dKG7)rV;YI{lp1|oWwx$-P&bJVChnyr=$r8uZZZfZZiL*xy9;^% zI6u}F95xoYxyJ^HY)A}v zw7g8IXIh2%Ez%PeVcrbj8%Ualw7MUU*|^1|>Mu|N1wotw34AXTRvULh`qbq$658=s zvh1&}Mrv3geqpXYWz+!k?_~ihRs*dQdiE!9$8d-Gf0ZvB!A6k8@`)G-)z{VryuIR4 zzJg%E-xHOXal!UF3vqRX-C;vU)e9-$L`Bn%ilKeGKitpK8sUm~=y{vhcd^y+LUiB& z_|~iA;AYVWR!2ub#WJUa?7kE zM1(!+&8I%?fNQXgI))Sa({pLS~HWF5dZZ9A5jYDF?D z*}2-Bj?Zw;M-60{0c>71;~DKEQ39+Q5Pt>+t&{JQZt>BD&qhdz{)rBej`zz99piZR zVbvU~tGqKP$%n}0F>{Ufat;nOtqk&WRv>PUh?&}<|PC_h?uGIDS5fkwNjIVaEIu&=p0$zhm$u2m2uJ{MQ&|Z=O zbUj>pux+z#<6kPAUcN?9>2`Y6xz+L@x{l{EtW;8?xp9xm5${;0nEyUEUNC32K7s(D z<^Rv_jNAaow??IuS%EE_`}P9CG?$b)wHQUX(aV6kMi}f?9QcnV!}MZu~~*a0PutbRJ|AXyW4XA9BtR z7r#B|6!;kkMe5ReY3&QA@FzAuYY3T`HjvxTM%(;A|LMe(eqI%4QX9Xs0GGvUn7Al0 zj0{jmSi{ZCD-3lAvV1hqBXPlAD zp;YBb>-#h0@{;l!HIeH<5rypMRmTK4pW0~Snlzj=WTE~C4@afCVui^}FV*u6DJzDa zO2;G`M?*ELq0(Pc6m87j@i>QRb}oBJX5+gumv4wBCvO;F4HH2=!nwSevH8 z7_^j;<+RlNbiV)NgFLG4c=4O^mg1H8QQ%6r&IUMABhYL95#i2A&RRuP1RO~^;Z*fLM`@w6xWCl>OrJKod;bKlrmmaC2qA^#iC8@FJ+Ki7*x zqN(1r5nUh6l|`L}HAtE=4V+ePyL~MU4@ypolHXpA1IAR*T8|-?LdibgqNF>xgSca( zPb+$>>GwM+FBH0 zOC1$E397Ytw(AVE;?qRmtPYlAnhkQ zl+NeG*ASseo1z!9FE<~3Vn(xnrdRAa-+Ufc68RU8d~fpRJo>@yFL>u|!34zTItd!V z;{LIa-aUnVdNtf5Y0mO$6KFO?hK@v=stPY0s{T?mwH8&`Mp@C6^yuSh6+2NDF}3I8 zQNDfs>)kPE0)IgKB@5ACeOB zu9wrR@_TB)2y2icTK9|G5=w;SqYsiTKk{NUA(41MxnR9&AN2ryjN6W%p~k! zKrN_bar7H?tm0a3T@PtRP1N(V3C1%_mJ5Ka#5e`TL%|zG`QC{*e)rH-N1<@Lx&# zmQGulcE6NR;-j**KqhoQ$iYEl35&xDR{Dg zHaALe`5gt?MWGv1ysNL+xAi?TL!I4I;_;HOucOa4%iDSDr^F+Xs-qQeO)f&yO*o94 z|1%65Esqz57O-LkZM}Wiu4d?Fq)x1MF+h915FQMVO%+R|(O7o(bzcQJr85wivdICl zf28$uy;l2Kzx#xSB{nOBOolk!$U_5%PW6&yM)AdX2GNqkHxY`F)$rbesD{up5G_s8 z;f^NhcH?5E2SMdb0g{kyD=%WbRE)Y}prFJI~S<(qJ!QpK7Os!WPZ-=R)cD0Ge zGRDZ)4QcWrz|U>1gzGZuRnKOX1#&C5aA7F&rOyynp!*uXOoPciT$#m3$L zp$B0MezLv6={i`Ur+Pr*eB+pHui&&et0>t*L*>et90~_ex9IX%BjB%w&hID^lIm8t zxH0@^910Q{Dg{}suH&Sh2DBOQja8mQQJ*I(ajd$e4I?C47**pLiBV9Gw}jpN&P`fO zeWbDv*{7ZW4zs_StW|T;?sQqhFa58N>f20$Ew_o1eebohom5%@e;KIMfF!n)1jGwj z)nPFMcyBJXRXVV(o-h@G>p&&O<&s+7r`}pUYRvF4)?{Jb=#zY%UY*@5$OMg8dK>+n zG59o90BC@f>)5qbir#_BTaDU=s9sGADkT95Q|O_f>NWnf{~KeK>DaL-*eZw3`IYr< z>3!wkgdRa)Xc?1Cqps70+odw6b8s2E)%n2J&udox(zyD9>+?2WcSTr>|NYDivWyVH zbc0{ESr(dj3^O96w7A@Jsea`_S9C6qh#+vv09^5${YB5?+bwlklu+pdTICCO9@h&H(nuYGY2O`P@Jgp&1) zZ!we4ffZ8p!8(Vi>^}bQYWwN@7qr8T`|d`7k);5XAOfry({qb>g__zmrEAnC2EDEW zAJSypbLdBmp9y}+jsZyrnlnqr7<2Kxyld; zP%ReH98E-?-M&&H(CtsRG}d}ySQ6p*V7*FV1)h6T$JoVRujgjRCjBPaD_DWGUG$F25zF{rag5MJPHBIdk21%Y~)MkOWNb4Y_xdpb&h7* zo2BxY-lT+4gF$Ge)=rWi`);=EWUtR`qOWx)*GrdA1?F054-{Lg%e&t1NaLimalB*M zmdw6VF8mmfU0z?m3KemORs^Om7`=m^GjL(Rv^50=HxaYBK}S`y30?Pc`bTO^6nd<2 z8ac}2wwUz52nYZ<<$v$lu70{OsO6=iSMmHxmnV_HKGA)dhYP0=*LX>cukM=ZD2XW7 zByK&YdhTo$E9b%oP)r?)K<&j>&tC*~1-3b!ai717hQa|nG<_{T5PnM~$}FP3G4ZK5 z>*f&|AkFO4;V0|Ba;23dG&7Pq=@$}5XyuL?_Gaqy_UI|-j{o*Z|PGNzD~jZ(_PJV zLVo5$S1}`lw6P^I@qu-YNlo3cuf*Bf6+eBBR)n~7uA>{K1JN-aoubG`={tUzX!HN_qa+Jt81!PFrnxZsyRv%~hF^lpvYH`4K-|PJIMWgfHhR z_ScdgD&lHwenCNTOv;6Swi@lVnkT^7vP2QiSNgc{3oWq$ZBN@6S3scX5s$)aJm)(a zS)h!&5v(yq%nDkX&=T|$-skRg@ymkNPXy*Geiv}BNF2*_^<{j^VVRO)*NPB_U zK?@lH;!4m~4uaq)g)$$|JjLbAcYUE>F}*w$YD2xmpI!w=w?o;+gIURHXz&+}ex!#2e!- zq1rT++YX#4_ocRhL2>4Se@__*S z+?ilOJ-@ofT$o<{y!*G(Wsmg zn`5pmLQi3+wbTvF-0sbebk{Z(9aJt{hI{aMC&QN#E?b*{(&R@Jm(=ZjBbKC=@vjs?-=o+|nU*k@^Dj+WQI zxP6gAg-}<`j3W zCmsyEn?I&E0c}zyA4tHH1$$C!eq$@9U+_CTka3e z?haU00rzNu7vB!n&4XHy=c|MP7ooK;U{ES#Be2bem}mg|;iiz#Xw`oqSpvr*8C&E* zF~r#%gOhIfl?;b9%HJsHidK3B!rpDcJdq`dk5*c5qTy{@ycn*T^!2_Iq~Ce_@kjdAwMtqCUE&{KTzdGo#Gc#Q_)`aI} z+Q7J$m4w2=A;7YIi~jkRcSq{st=&P=2tKM>3^+@JfqMblrQ&Kh_8@p)j3oVs;u2WjS|* zqaXK28xT(t+|(Igfjx?~ZnBlGX%&YU`;~~{&BGyobM(6}#(u2z31X|I+t|LX`K77X zwIpcA9j5mveQ@fTsmcpR5qHewk{nGJd%7*Z)EH)~OFVhfi|c^N@VLK`26-}xWu2}z zw+4v?VeM`^*1!ZWEOC!WJ;v2<@LWOcy$N_!#S<@jW)hMKge)XL*iTr)YS?!KmXeEN*`ML*yOVsKXJ_~Q-1y9xALXuH0?9K;&n@BFP!pl z-m}HSUrX<{{^82sUcVr#M#bg5@XGKbtAE&kM!Rp94d}Wewbkhx$DR4j#czDDBlngn z>+k$zbH_R1_piP4%K24?O@4pK?H?W(HTR7k;_~_L4B0pEYH20!uq4EnJxP9)I8IumJ`r}Z>nYOGd*0~r zvD#y@o*2?(MYnd{&)t#IZPnC@18=y0Z~5zTPajyh)v&tl@O#k>7fzWtF=xW-{YKVp zU#lRi^SYJY%JvqW^6<#z;aBeM^zEFdyJz(It84D=i(6gu`)lWaQm*d0YSVYV^47J5 z>w7E?S3a>}`oI=FB6Vv#vGn4SftS@t@9|fiZw{|J<#4Npn@3KldHCJCTQ`06?%l^O zUHjJAR}HBC)j4ZYn~r&Jnp>fM`wttp%CB*0+S^IVmG`yH*wJQlt(#V^?sWH0;}5sJ z_{A0z25)?$%i)!O{TeFQZ~biOU!`>g3E*4(_P;Q7rt?fh_l$;#rGF)hjs>zUjMBpUrt;ZJ+mw+toSkn)|=2(7oZ& zhHGCOw)Br@7G=M*V$!3_GG;`Vo!kB5l*XT)b^BQ}w_P#n=-U04&+j#E+Jp)lpDD_| z|Dn&$dh+<#mbHeZ)!wt_qDHa)+o!!+YyU&zz8O6Jxr+|G`rH1j=l6a(@w{d8embrF zmK&>dIc-qa)OT}FG2s4W&&qD`R9eqbgGMh%+xhg|Cu1A7WV~7bj@ma59k#9R ztM7E)abVotE6R_#Ys2@?ZXWjRh)pG5t@!=sMUAig_4C51bBb4f`tw(%!@K@4`lAPm zA9}d*b*a;?{{H-}kJP#ToYT8(xo<#T`QL6>y!OmH`ow;`=!F@j4|e;Y|BS=YT4Rzj z8(u%*jX8Hc{_2_To#UE+J#}M+lBM--e)2!l&*-;j$Lmuf**RUOwP>{di9sLi-M#Oo zIy)QQ*!Hn?6^k!;^zj#dzVwYAxzPoiAN+9my0`9sZ}7ZTo5ruXYR>rsu2?waj?b4r z(!9gIiKn+dGNS3yruW`-&6%4fIP0HVSN&Lp>C1}T);}JZe)cpj=e{sC`Q@2lB*m&NC8LwQiG<)I16P@NS`MBVhNFMi@porH*@j$kH%fKvSPQN?=5N2@}ir@9@#Z_ z>x(_+k3V+y@m|HRE}LDsS(n;Bztp1AY12A%9yRpBVejrse`wKxzaupU?hF^dcJ$iO zvGJ3ayjZ)aTypuJh7Io3v&sWY_Li)EqAFHHPvg* zs{PCFGisGi8PcW2uB2OMjDKv=Gtd6_e8l*_MX?|k^aZG-S+(*jUU`ux@F5tPhaxhiR_e#7oSqN z`uS?NyjIv~`QMi~TMO!T`(xq!-3?EC@cQ-3uCMsqwNnQ6ym!sVmmh3?UDN5mJoV-6 zCz?&%v9$A_v$sCk>hn3dO^07s@80OPxxf5gA>*``m4>>Vmc3Y-^jpR6Zryk2!?{1q z|2(Z+-*b<*+A+G<$PuR<{HbjECt1DgfBn^4&EI`}_2A^Yx9|I|TmPXK_1QB1#vX?s zXaE8u#t? zuX;SY=$gAzTKt{;_!V77H~Dns)J|J=cC1`F=XK}ko= z)VGgRUbdmulglP{(IXKIz^FTVTGf~w=XZiqhIa&EuV3y$s_`@|)gJ@d9a z{^Doj>fHLo{7yqQlzh7Kv}?1j%w0XO|Hg7_C#AmB?xCe0mE6__|0U|QrFU2V@}Yf4 zZtXCy#)b!1kH2fh#fOS3Ja=jOP0x3F>Dr}x_l|GZzWJ>$WPMwC>TBUIhIRPm=0Bgk zZ{<(zlZGZWTY2W6i@zRo?yD{DQ=`@2&U?D?j@>sc-JX2@qL<#f|IT`MHazR9CC`s8y#B}y-;B@Q`RMpI zeYUc%Pu=}-i|)+r`D+$8Q8GflvU4cTes<^#%tm(QzInO*i{^}Zvs7k%7m_wSc{JpH8y+x746rhe6B7@G=3N!O>NoM%D<8YaeeZ>`=Dl!7s^jHL`VJ_2 z{LMeAyfN^pUgsXlY`tvYdxP6fyyeguCvC(Bn?Jhp!@KXf;IdQSzC7oh8fzQ1DEGj? zq4U2;JzW2Ztk3dW-*7{}TMs_ata8H+7pG5|RdV60Q>u0wHlah!*cS_?MJv5}&D=6) z*6@vP!+Oa{{kv@bdH1lhJ3o5%)T`^{Rqot;b^kW4Z*0G7%wHoL|C&CxpyA5Q0dKT= zz1O>s4$qli^_4ZlZ(DlHuHKvO7}xEzo%l7H5$|jrcHhOja!Z`KQ?6e1R^XsqJ^K6grFC4Xg{rX6yCfD>h{rVq9o;UEtKWDf7@Xtl#WR$G_~2j44Ze28fWaB} zf86Wo)XPVG_d)MZyOl5Z^RyM$w)pt7ANEW*fLD;`uKMYt9_{l-?!EB9{n=NfFL`BX zxn*CEpWAHPu^0C?zqj{?_s{t)Y5bj2@+b6I)xP=_cpu`1#_guwJN1>N+nb#^889_j`;V`_yaG&OPnAlG$%O+Tz;__k8!$m?rbDi!ONf+(v)p?kO2E z;k=^Q`X#$RXw>bmx>*&9%4Y6*y59A#Wz9af-PfbrKK5muJKkwMXT!o;H*S0UMB^#N zFIQe$w@&p7rgy7zVBnbNhfOX&ed?fZQhP4@uw4D9`!C;7b=o`c zRPFxTvc=Qt)yo<(CerH9PPY!N^UQ%?&%eF-yp@Y?dv?v+5C613wePX4U&i!Ye{28w zoBBQUWX=7HYD{T<`P-|P)!KT|<|DtqGG#|m?(GvFh^_2>`%gVL{Qg>%0n-*QzVb-4 zPti{=4XeB5@VJScUTYSeyg0VLQ}yZX(|X+8bw^>_eB7yRg%> zyCc2ouIQHE@WJ#IV_r^M-SoVT3m2z-a^sr|)5kA+v||1tvBvm zJ$P|JPUe`LBh#jYcN{%)@76i1Qg&@!cuMuu5xJvr$FW7-wVxk<{_+!5cCYGNqte6_I-NfF;k+5$4_$ED#tOeK_%Zvz%TK>y z><9PHaq>2-_@>Q{@t?i^^v#XF&zMzK=f3ayem6d8+PDvXdEu(NI&3B7kPk7++ z$w?h1*J)XFjeF(sbuI4uZcN)xE*;b2oSu(FOD=I9d++7fnqB$ZkCQJfdu&6y$3`A{ zqwUWrueEz`-MOvO-}~sa$}PA4UFTry-`@D`>g7vX9Voc9Z1SNRJ z`^Emlr;oa7&ske4G+*W_=NfK*_^L0?L!{awRR&7_+lwS^Zz2mE^i;IUvzC3WJ)3nVg{mjn6_%-E7fCrGp5gZfA@h= zJ#U|PW&bG|?W?}~PWh&ne>voX^H%n9XHCCm%~jd!_g2Wx>h#Q^_inxR?dp5?J@WVd zzow*ToYv*qV*_43zWt+v#kV9qcHV~Co0`XBNhxDmw{3pMuHRlx?>ls7O4r734u7lS zPv6{?)$~BiYMme3((C%NO&1rO_RfHp7fgRAFaOoetHd;FgRp7j4bGGi%$?YExIX>H5Sgk7j>#X#MbA2RCkd;rNaBRZGgbdBHhHYFsj? zLt*#Rj;=o3`I0kn%yC)qiyhzDzU<4seIIIe)7^VhAFX^(+S0er{q4nh9dZv1`n>Pz zsb_WDJA2QlE$f?K5&d=SPfy-7=E=zEZ@xPB^jjO_4VV{c75W~C&wPo?|yl`+Xi$xbKr)3 zQ@=RUZ^2oeoBZ)fn-(9vGxzyRxAp#g{F%?R{qCasQr~ZU#a#n0T60bB{as?Km-QVs z{lVRtm)7e&Xwh50?pj&BTBq>Lu`T>TMb ztPsB;@Socr?{I4SJs14&**E(x{AJUo4NuiCz3S9cSKR)~*`pe-bzl1Gw7mA6?z{A_ z6`#~N>$FR$lt~(`WU0=Zm7# zz6uX&*LmO6dRLy2^al*x3jt3J?q9ib>Z+$UDsFYJL$f=8t*KZ((mTVr|y~h=hO)!=AS>{t)zV| zuYdTN)_0Zd7#=>e>oud&JMP}GaaMyld`Am95r~`?gm|A zUGB>maMlwOU){a!n>O{5roY%}arE(yNA|UOc<;aq{wf%F{q(g33tsu<>d*f3e$Ae3 z_ulnZqaS}6)xObnPiEG?c;TBht{ONvXLs92h8)}8_v(%#A8pxq)2UDW5}RLP%h9tN z<}GQ`{_b}^={;oA_Z?pvw*Te9tyaEuu=LNbufAyU z{`K1zzr6OoPsJw?N!`y zMZc8pM@M|$_s5ap^|!kZ-d%O$jQzQ1{x)uC`}LJCKh%Egv(-<#WM$>C)0&JwH14h8 z9k*W}sWSQP`4x(9m~;Nf`-e16n*PiBiVa53`>T12A;(THth6Q{w@N1tZ#t++-oDo1 z*X8R@XEvFW zf61!M-#dTN@4bVU49a-9^5FETrL{_jJ$lAPCpJExJ0WRrxv78eyX!ywlMW6!G;r#J zwU_sOIdpaQu9w?&-#+rS^uZ@aX3hVr&x3D$ol$4o!o@Guy#3%~wfdJ1f1uyG!`Cl( zq)o3_a?eAVUEX`9xU%sI9&H@m^9rLE5SaB%B)H?L{1wq5_8&wf6**+rYCw0WUN zjly$UjfxK2nSND|$3q=&-T%w>g&F(mZ&=c5$IOr4ueu>Aqk8^j?e8kR!o9m<+Gih~ zS@l?#(VeQjecp;I&foGx?MJRV(kiX)jnVBBUjCxw%{_zKeA%_fj~|Tg^XAvLpF8Ta zu`9wK?^;m&_s&W0-_oz)d4=yRm^P(R=UPK!HP;;8+~B*uZTsK<=<1|zFDctIzQV{> znHN4)b^VVs%HQ(#-kiESuPu6IQiTgIX?NKfzgD_s;&+=@WEb7;)^B;DR=?3(a*n+? zJo~ddHa8#s-J-JVdkp`fRoT$bJKgljZF4?5e&xvDqPI;6H&`)!@$wptuXtp^pGS|m zqtnKI@#XY}vz*A;7Y=>k)`C+`+4@A)_QQ5RR5T{q`PG~|+s!;sXT}-Rlb>lb>Cdj+ zXWg~n>D)e{=ikZhb;WCCW0&tO`SzaYLhoF#s8_@HA8eC7;Nx25u7CYMSG4T>Nc}T= zovMH95krT+(F3=mppJ^<39@5w%5lyZ64k;e*AipIC6!uMOwj-R0J`^@_W%`s3IslR6b2y?)ZUbzg}dd1KI& zPT{`qAKkJ2!5`NydVRrTsacgXo@#jc<=b|@@M-n)?*BID`4(M2?;6Xz`m5??HLHHP zb$icOzT21fX}joUjUJ!cq1QPN)Y{)>>+!-qpIke7dEMk5p_fnmvTy8&-bMFTo4s{m zX^T6HhF{kHp3C}df29A~OU}EyQOD`$wK{KcN}J3-|sw-^;^Ul}zJl^@I{ztFwj%&=vrZ(7IYh;ZMDc?0MYI14kOFtaC;(_+M1jJoe% zaO0sCpSL_^#;&8am%jMcOWEDq{PgB`*=7Hq1jmUuPRf;8jU!I7lb-HWi?ob5Vb?iU z=0wVnX`bXVr}TuxBLLxFav9U1GW^%bS&_0Ok+O{dhJg`woDeuVPAA7nb)0gJQ{8dW zrI;kgso^*oj#I%wVNROkWIIld-1cwos&b|*3Z&lujZclZ#eN*6M?JRJ5 zuLDlI^3J|b@%>4v6U}Js^sWi$)h@gu?DQTBRh$s=(<(w< zD3VbJY82xElZ?!DO){OsO(A&mOs8Z`j?=qoc_(XHu2Zr$*Xf;G#p&HP)0uXxvQt$q3sI7{ZXaHiEwbq>GX4D4u9g#V>)A&x{ssGJDurt}1ACpkH} zED}NWlsb_Us3z2v6AB3mYAPJ&2g+U*S;q`Yk<5>97${CC74?%`jyC#&!lhLJzff7} zv12E|FNBX1^aIBM^9b0B{3z>x_qSya-O}NOC@V`e2(c{as$bNSszSw5enUJaPLv&^ zz;xzF804kfBD*Lnn597%H&Q@MSOfVsVC0a10Z;<@legv1G|Rx)sX;nB_Td_sZy!P!x3buD zVt!(pGB+YJLNL#!6Z8L@jgfr^ZYprr~SLQ#>Yvpb+0eY0dXRvN+lO{Qh|hH(TrO(B>V8gmJ`h>>g+OwNTE zGBcF2CB%fG3AV)~IWUpr6qJ+BLdp}36i0d^A{gOHAxvP+ zq*WUdRyi{LlzAw)l#1@+vr_NIF@io!`!Y?NhG<*_rde0PH0vkL3{V!ooK(dBoStk+ z+7k~0=~X0!{~RibYl6^j|J@Ue#i8b^y-tg7_jQB8>Cl2ftYs=RP*h@)#F= z4Gw7=;GsNr{zDw$2?mVQp5(_VOVrPR-+WH1AWnsI3{Ox>pJg*nIVm9HgguXkajEMPpJ!bIr!M469Lkex;)G)(Lg194 zv5B*63S)WpG;rbX`h4mbIC)|lM({~P0r^eY#^SN%VsA#`EZ53U+NuW5IOoX3r;e1v z@^K~wXpL-?xv9Y+p2a7hY6ec6MkbHCG7y*W7A8(PXPP+S%>!^-N90MvdGf^k_(KL? z>cz-LeC#lJWpy!e+Hh0=-qpk@gR{=(d4B+2YT_b;sdviR+Q6k=qDss7tp-k>6HJ_P z+d3uu2?J;RZ4(#yfk<5PkJB9h8I>>s=9w8_Vp_H@bd!YCpqEjVgRn{a!_Z0dlYM;3 zLOGIP&mbG?7aV&S=TpwaiH|-uPAtnucp+c(LJJi-q*;jN!#u{to(4`>W5ZwI1_vPV zH{uIV7?N??(Qm%3aq3s!^=X+WJn(JxAS@jpgwsc2co-Mk zpe$_}C!~I;Gy7-;;*b_Jrhc?JdHl2TJf578d2myfP4k=jCLzK&pHvek{|XUbUu$FH z*!DrYv5&X35DNaQvr;-O;nbzBu_t+Q%(3{%Mjok8Q@6AO{M7S1>r0SPE0F@WF@0w=xUd(29Hk*;p}FwsP=XkJiY^aw}jUmsv8}fj8|Bv{A~#!vxZb z|3rO#Qw$%G*|bH*E15X)yBU1Oix6iUMT_7_D<$SHo3=G%&UzbuzLYd{8V-w~Iq z3F}Ni@%U80WWwrL0TD|}$MWJx*mw>qhH*Z00vk_-AYR<$)2|5h;1J5nV|7s+wYk_T zoTRk~g{}Xfst^>1_Rlo3k#B0CUNSMkBaFIN#iW99;U897jcY%|JO@Jan>^EleiHDj zEK@Hkr|L_5tU*e7uz^i`Pfo%);UrI~myr6Zlx27d+;NQ^Le*@W5_l@w4vq*=Ph9%? z@`wC#VL?x3b~@xOvf=p1#%V9JUS+)tTx1H=krVQD$I%pRj>8D9`^5YwvXaH!gqHTK zW^5}uCTqD;UuX;D&4)_!TW}0q;%M-MlMh_di*q7GICVeOz=h{Xg-bidz)c*12kMCP zdRrFWm}GbA?H>^?G$7(P`PYXaj8ldjL~NXEEE`8v+ck3s>z|}WbqS8hWB3T%_`k>o z0mz5&u0~(Ndm6h*yjXE0j>$9e`S63^!atU0HXZ!_T=*B22oCL;hS7}nH@!N{;7aQZ5#2o(y2dILqx@B>lNGTkDgmyY>S@yGrpXTSa3B z#$jxnWAT(KiGHPnum_+k?< z5q{v|gwpKJ7SHVj&Ndr1{zLv1jh|58Y9ZDUP72LFjFqRF>C=dl9T+<}SbAldxX2KM zXGaA`bV0dvffE7#q))*Rp*o`Z8#!54WmBi3FIqQorO$zo#z%Mc-stuw|&&a7mg7BI^*DJUBj1s;D$ZgDWo1mPjV zS#E16$GFzD+Cg>C@@SK=P@-&{b1@KKWW&UZaiIqTe$!T*D_R_zFZd|crio_b=@<(b z7vD(k9%h{7aX!g!wKFbyAg*hZxwBY9BwoEE;!72r_B;Zwf6kDp?ENp0xMd^PMtKJ>%ffX%+B;B+W(39^SyFY zjBQ1JQHc}3X0nq<9L9682wjf)k4+mW=uF2N(pj!)Yr>PV)u@r=;nSgr zFLmbz>M_Na4eKc%2a*t<4?p=$*~W}fe2JTOAvOenIFus^^B*q`CuUr5#6l|PARziU zNus;Z8o0sq-~t9a%w;6dN`yfj>55SH2C1` z)hYWO!YOm5fIM|goba3+^%;@Jv>kz)wx<20${>2dImnZ7SV-ci5(FQIEhm5@c4Ioz zv z5#>pF@{B)-9gI&3j;TA^Di!@9VPZFY5SQ)uc|-^oy^?*O%rV+mW`*SDO}{|ItlrdKR@L9WrfOlc0d;;aKWz;^W$UJ-^2Q`cO)pYjw69_2cxzv zm-^VUn!CPVr5X868}#{`{+4`UTB&#Hm1^)MZfs8b)T&iWXc@<}G~fdPePb#=<;ciT zz0|fU8{uiD?nEAAf3dS^FM@*#=C{;4z8NQe&tff0;zemb+~6o5AKy7$WgvY8ql?%X z-bI+`o}^F z3bAmXWuuOL`xHr>Y3{S}n-9PEO5`yf|iIjPt30jUIlBz998* z3?CgkR5mHgw0+8!?5ys6NK1y23Uo9_N_%P13lBMOIJ#o}ee0{OD^6C!R;#b5& z5V-R6{e&4-hH8j-<)Sb@9xTfhxYRFbeHnb(8hLpFH}xpx60f`&H)-?sEma1}KViZI zudEtot|GKX9*G-U(f0<`)w0Nw(px!m;M{)Pw?nGw+rdHtarjig;KXmr8)e`em2hOUj}@O(9GzP-57QG5he^WJ4$4Q$GHro*nP%)JpPo*U*h+c!7FzLP za3C(93>d)1In$*q^sBecTw3t6(P1Iz8rYl}5TN@d*pQKJc%2kn{o(4-z5^;e4~yh zC)QzJz9=5y35nXcAtNSG+PXG@Z}Jm+kq8?T_DT%)CL%~^r6FPQxW5q8&&n)3%9r=_ z6TeEz>Bge0%uvCTk@#s`%<8sUsqAJM{e`w>MrK9WQFe6X%s~0jC|px9SiaEGvlRpKD}jC`dWQ;?qyo@B9Z?QWrqTSEc5fB3ZTBaGRHeANz^ z_#t@ugyQQSb4v8awgH9my-Q)(@5jX?p%Xqpv3#Tq;i`PqZVIsau=QDd+6~p?)emtH zWRJkgSs~)fCH@>KaEZixJ~>&O-38J~+!}&Vb{8|wzqOi3Cw0c+4J~y+1@L&mvk97m zCmVG^KkLaZm7kmfR<PE^@GU2P%NZ^C@3X7*)QV!M^HZ8_YuIJ@b&I;=C z9zNbEkUF*We1#=s`UBe;GLN*v58pNob7!)DwP~$QKaHuaG!5oUBsnF6V>r`dgQPHz zl>9Va5TTCD=Qq1Dn-+RhFXgcGsj0q=MM>>?y?h8Q4b9?X-G(Td4ql(oa}edF^%qJj zCsiP)a9%$se6hDpI^9mya~txMyfE_o6CK%?_RDkRjTfe+j7WOC{>dpKv6qh}Am@5a zi~i8w>M!)Do1p!$E+eYot1N=Ln^07{|_`)waCB!)cnFyn-a5cgiSAM>)X&Q^> zxcmfu;UupODF2YxzNNmyDe^`B>JL|+-_!7u3|Yt8ej`#~`)cNK*-RNot8E!?&zLmJ zV%N;Td_LJKx~~hSv6i0Srg=)f$O`&Y9h!M8#xpevf(`$?nf3hbbgsJ|kE`i-=51Js{ia zB8aF*WO?-3EBa}xtmVhqUy$Cg_sT=X2_zzAwrn(bxhmFIyh7DOBu-TvQLz-OF+dF0>IDVBkf zX_X)7rf-E+gA7$OLf4M%hmH!dnJvsFi%H2WFr-W(EPXk1v6*Q;Ra248S*Og*#9p@Hh*2zEs`A+r?MhER?md_~ zlZAopuUPi-<;z=hJfzyJHJ&4~9FrGVPiWW414O|!{=IO^6MF?2W@+Y5aW{t); zWyPMOe?zG>PwrwcPjNZd)VN8@0?*6WChO_NJphYu?8>C%s~sHaOi3?g2ka>Mn4ypX z^EHhKPQd+kppFj9$bdjA;S3hf3Gr>x@h%mE$0Hykd7{O#Xvvql4M)AS)NNpGB^lhJ zF}6(fcinweUZO9462|ft{jl&vJ)6sj`c8n=-E_Aihm@mD(3d;VFR3kc5GK9Ii3LBu zt)83&+p-DEak9OBO42;wF|9{tVKUPC4V*Y42M_TOY`TKFwv;K2f|&^H-uGm0BiF27Rrp=kMuq1!AAx28XnXh|PY7OS|;eHeeY`Pv$S>*wK z$klx6R2lwn^K~EGx4yaGA^4;>`=4G~_t9K0ZTHa$@XJ&AnAUvN(&s1Yi9L0J__yO?4ypI&A@f^YUDU7$+Z@Dl;a&-jZ}Ak*q^I+%I# zp|Wj#lRl>fPqKsh_GVK2hdffD5r-k4zi(gVul~Y(BOl3yo;pe8nQ!X%^dj{l;v0Vw zlt5Yx!cs&qd^0fJL}L0uB0I-o!yrB7$qlI${j`vZ9LB!FfceJ$@RODkmpC%0Wjw>H&^3(e8+aqO$yU^U8d|FB{jZBlT^y+Wqr}Zht2kh_X+xoTi zst-$3{+dptR|%*K%fPx$2$&`&)+(Yf^R#}nm-6LNI^wH-h#+|MTAZXMUo4h z%YRUqr|6omnrXL7Am7)pf%w|rXg}zcXEr~W=Ho=NTz)am{tZ(fl1f_goxB2S({Ux(}g$k6NX*GqOY1s0d+{#tCGZ55| zpsrGZMtl&!>RQm!2b1KAj`Aho78+1)-*iXVmfY zlTu~ELVT&OP_mqlGcESU9*N~I`eEC{rdeJ_hDzy|$6YADd`__$EI-)Gv!Be5ib6>o zrIhzvw9D@lQ&X$*<3k()i_}!O3~OhmUO*-k10J=T+x8=jDf!WMbo` zlgq{N$1apC=qZnCimeP7hH33jbOa?m?L|0)j~`7)1JBSaKOIkqul>EB*8a;+E57!J z#Ml06pBTU|PrN|N*L;~EgQeMXu9?Zu}qi4YiP{a5DYDFlMO`4Utjy=gmRn9sD;&!*L0Iz9#P zJ^LuW=99mfZ`LC{%ctckR@5C8(%b$KQOT#}%Rbos-Z+yc4)=!n&Byd_q7l<-PsWs9 z)^a_2dTDKMNlE!8pXKxXoPkuf{wXojMt|IB)wG$Ppi5K!RFtz3eiNVhGm^)WZ6NKp zCoNCs{lqu&3%;$NdiCZ$%pFX*1Wl0t^h-I5A;K ze&hsWd;KA4xYtPnuRNK+YFg~a%M1v_RegrW>u(G|dT}HSM?#0Rk=N6oJeOXZgy>MNHFbpG1GxO$^dgf81da15pX%>P`%C z-yV8Dn`z~zZoxGDp;}nyla?RuRY-wWp2nek&webgT6UHo*nEIw+-KU_-$mTxr`6}_ z*I17Q0`h6MWj+=IJdhy@%|G(^^yJP;AnAwCi z*8f`g&ON!=3CQlH! zT`RmTKDx+&Y`jEc@$I3R;?t+O9%2cU&7(JI8Hr-+_8mSNz!!;dPy~EKk67UJ0k7Cm zAm-EYGkDn^fob+vHF)U?_-2#SSSLQ82$sHld6>rTI2#l3ERy*mFTN2}Uz%DB=ouHr zDirhbWjp-FOJ%;*>G9STl2=wm1P+!qALlAw+O%ycjQP~v3G1mh(6x@$QnY!`%1lC1r61F(O-}1w|&Ex&bszSOSA zPYMW>hh_+LOtig&P&t>i^iAq&1u)IJ%s{7xW3a#t0yzf@cF|tjBR=jQRKTQP2K$Jd zJ^U|O>yYt2n zmd7;#zdd{=Oq%>^)sihAG$!6bR5J(tE7i;qJ$mDmHZ9H_$FEwRgJFvKQh&U-Y5Hlr zsp$>6%xC%bev3`Z7>7X&S5u_1nZ8r_vFOGK1^6buh*GU$`dm`#jzCPkElCNv} zw8BUsyBMXZXf|D#rj5_;hSO6h%JT3EymNNt=bPb6(ypdoX4)^Gdvsy3m-J6soaC#$ zP8VA8H~E6$(}$dV!%yXli5;2GG|!am`;n?|NY;wvM;T3bFLAyTO_2TIdG&>rpBJ~W z{8&q@CqJ!mUmi_c{mF~LFOTgD9h8CL-OBl{t2C;wFTbfD;JSh@?YRctLNxC-+C41t zXZh++c-awg@@IWqUvFSZNrAp+;rp-N9as81!41eS4q)YFU(LXLTORlR{B*HLZ}aI; z%(wmtcM%*bKj)mxSAChM?*`bk&DZ**Br(BP{q&N6Cm+Wvv@xc&tHEW%6znu09pb}) zZ;LOLYtobf)g4NUl#`txs;a%eFE1)PFDo}YZ0XVa3P+}?4}RPP!s7-dqU4Ri4Tl`) zbP*T+nA=rI&+zkgybyjuAIc8rp$qWs5dmNI58;O`43c>K$QJhnnfCO9hF(7JTH+;O zriFi2cD1TGP|>7o)F74WCsm8?g11kZullP6e17P_KcY0$S;`lSIp&?%#W3k-t2jVqd>O&ViXL4X~Qq%B2Iqx{tBX!Z{;Bg z@wNY^F2!E{Gv%IPmZWX_j!!eC`9>ZmX43Tcp5bCxBR(HV;b;2?rYQsK2fsVevu89^ z#6p$cx2?)s>_m}g@iB3SKPx|@kLPQYcYX*H7<`kT)`vvp!`cs7lD7JjJMlGNcWqc6 zZ79x+9*}AJ8_ypZtUP`DcGLMGV75PqB2Ip+k3}sPVFsmX&G+lyrisgk=_MidKAJZ2 z;%D+=lCSc{kkax+KI}1Lp(yY17=6R6Sn^YUNXF=__~O6lVd%-sH~mvMia67TUi`w( z4>>X9QD1>!(M?LGg`a-Ne8JLtxWHkc+&=%P3`iEI0xkvdcaLluvu8%VG~SitYm!1w z`!on8OIbvcqVdH*{%RlJzM6I%7kPfZSc0D>wbIkS^#+OBgYBhHQIR09d_K72hbel?mVS9EFVnU@NI+cr zFZr>@4A3uMp06^}wXsKySJ3o*J=4Ct`qTDHOTKn_7A)oltADQ(F@l~H#Y!>1Hdhk_xt3O)^>8UR|FE$@ZOV<`oNx{zz2)(Bt za>>uwQ;K2QIyfyB#o&P15rMK zG6hb&;N2x_uTuG?OP_!6{wVLoauf)M%oYJ;pq%1Uc;`Qio`(trc*psLIg5({1@&Y0 z2&B$+FNSmm$0dr{slzXW>ZY>Q+17JRkW>b?DZJl~Z2;vEkU`qJS03w@TVVD#-*me= z)Y!a~2e-uDT}Za9Z5zl7DN+0uejEv|>emX@wlDVCJ#xJ1M>$M=Xt#m1wVAvO5zs+w zhgNLYR>Y%TSlZP{s-d$?!Ym#vP4>c1VWyigFzIKKF|$U$z&Z-Zg0?QCLd%BF&WQn0 zf$5yRT!YG0>xk>HTvFif5dwQ=-|kK*yMp-%98VVQy@?gjS6&$PVIl$coKsU$!B2Yu z-J8?K$1*7gwrXs5E&QnqUd1h+nSmbE?@m~6=G{uOpQ`|o+xm=*dS1n1e?|`{1jlO+ zQO7Ak5tPrsTtp?Hfji+FxJQJ44X3GXghTLka~iN+?L*k8Eo2k}fhKuok1 zS$r74-p-KJfoZX&W*lg3=lN z;Va^P!b|HX>NxlpKWNEWiEm%*UIhJHY;FM{rCi>)Wm+m>USDb~VeQb>se_+Isa1=p z#548pA__T7e^shojjbC>jU|Kxq6PTti(G(_zu@V7fno|?u>X#+AC~6gA3j<-`Wgbs zJp1?U+ouoavr)oWrqPo#sDIeZ?-%{CmAtht$<4vGhFF4pOxsWgHN4GuWUQs-8DEM4 zMM6ODm_kqy{K3TJP`OY_D3u%cER&2e=t}V0xjm!vxBdlU{EfUZRl`A+8i8q3H~J$j zNC(P?8*5pF`Rz*`z}i$U3nAb0`Mgk^UmAN#T@lOLi*tOLR1o%^VX|#;kem>dvd6sW% zkD~DpHV91n@LQi=C+QIdWc2p*JebV1_$EPIeK9Ex!SZZ7j}aQ|I#1~N4smGD`hS(H z|CiLB+CX(7kp`A&+POELlGfA@DgsmUIR30t_svpQem%=F zLF&ucn06Mys65vfS60$L0(}@$8VIxNJ~kqH4tf*8t&AT#%ED}nCqjf#FZd|_)a^)1 zINe)kCQ7I4ChIW)lOEN`r$uJS^=R!HGZ`Zktx7y&190>AdDYG;3s3^GP_-CA0a_{>BS>JTJ}|K_ za-x8d7t6tPG*31?F(oC8w&r7lFLPeFCYJ>WzI@3n0sj=HYi;yzvRkG6IA^$iNWFn2 zE>9?ev`9qp07!n;2DWcxK?Qh%fp}UUV?r_c(=zCj(syEcMWfof#E;h(g1!6*D`6g< zIiQTkOOt!b)&^*N(gHav_h{L=*(^;Nl*b8Is^V15&Eq*E@sjyn-aB#<7-dqgKm>t! z0yFK@!h~N|US732wQAB<0X&bKFqzLs(ke!pbS&tAv~L&sUlN92r4>9kE1X=vVmW%M zl`jL+Nyce=3*!$TSFD(s&g(_wC;6!EBbQ7(7`OpIo<1xRP7ZhXeAl*V zphzH|>T7!gO_K*&Unqk2u~}6XuO~PahkN2rVYaPCF$a!<#^R-kP4EdkYXhprzMlLD z!G1{Rku zF|{M3hvjFjOFV50a?1-TEra^Xo{vBj zre$ytl@=;~Aoa_}D?#y;-+!Q|7*=#M?JdhG9PN^&mAP@K0Dmql>ceo2NG}p4z|0lo z1loVLX&ktE?alKwHI>kM{eh`q%Hr82Fji1syQht)&{}>F*pu1Tn;Uha7Efsfg&?7| zeGbpyER5w=3s=M3T1OCT7v{VCKp@PvRo6I{#cLeOmp|f>7kv!3KEhnIaP@8R9H+a} zL&Xd5!~U`CAP38c#T+NbkATcsF8%;fnDwimPujM{d4wHjSo;`xgf5@H^gqNc-c`wU@dto`QRcUE-_Cm57?OCV&XaHx zTZFXs>7n;tS60ShE#?nAzdY3RMbT z*dw0!ZNTD&A68R(jWI!Dvo~(Bh=cugR0w&oZZY%6Y>ASgF8xg*VRk3L(D!xvy)@h6R{i zmGdY-rT2EstnTQaP%rc+>%Z8rk8f|j(F%3jgY4w@gc9v78%4Uo5R~hL1=*{Q#*(N4 z(Mfy;#=u*NTwV)|zEBmCF;Gw1F?g?pF!~?$fE6$!ERYys+J|S!J^{N#`k%M=C^wdZ zv_dWP#IyU%@K14J!u)l8l%fhhgNNeq4;^}d7C8F!L4&_;p8N6IiT&}+v?nRWhA&IyH!1czxd5k~lC zV0q0Y=6{e@$5a>gE=DTm$p?=zYsRD`-!3=MMWRlLiVaUtKT+eax z#b}hz#bX0;_?Y@-ltJ#C`1%sWlSX5Ev`5ne1?2;+^wt9NX(_FqiCZ618z?^(Sg|74 zZ6Qv`h1S?U>NrD?n`nClkk0xGTPp)~3*I9pjCkG|69EXmUul}3)Q!^Dk&ua3FzVDH ztuHeY2mzQDYGD2zyjB45OgoCh^ZFbzL-1@$i;7io=LzuO{WceA^7GG~V~&G=iFiPX zgPlLUK0!ij>LX@byjLzQk7{LL8OEkyt$s?Fp)GQpC{l6!x?31!sUx}gsHe0+n41=p zT=FwEV6h?_>w|OAp5Y=#|Kjyf57Kh|x@0e||7Vw1E}0_)bW;F6nPqe?q%PdsC1M3ZAkicM{sHbqDo)DNSi9mva(pPk3E(xYHNeCtDi#gG*Lv+GxaC_@kr z$rv7i1^Z_UGkSoXTqTLCbCzrIjIAsvfnU_aGxZA*C`FtsQCzr_%A~F?GbQ+VMn2+5 zIkY`<`A(Sx#Dji-qy$^%EyMYs&5whzUU~1IOv%f)fvQ4U9m`1O6YXsM6n&_RN0x-f|Ioh2NC%!!A0i)N!FLi|q-kfft~au1 zUD|OA*%By=v7Z8>O3OAaAzUJrWb52t|L4W^#jfL`3ykld0h6vMk(OhGFP~kR$I}Wk z!%y{4|DjBz<$%v%PXh>}{UsQgshb&(5FMx~-%dLNpJznQfcYt(-_9M7$F+rI{U0F!MEK|ag?9xh?zVup6b#;fFbnYD z#zG-(ZqR3F5B>zB7yNVJ;QBr8Tr_@X!Yso6xmMz)1{Q4ba-L9PuH(!q7Hi5-en@XR zctBl2ap~CvI~hQg-?hZ6VY*oJj%M}ubiMUl!g3KxdZov$5LI_Byv}jXIp-V+d7NO{5|u>Tf+ zmTRn7Mia(WKVHo&^W>E)tN4JlbU%T!1TDpUd244>mb}{;_3!k^Ywx-@MLXL43M_*? ziznWq@OPu+BA~_d$hoqPBc}>{<=SwFa;s*4bnGkpNc)-a3o3lTf%iLz_t_bvFVU4eUI2S z*p`6HK8ci{f4)J^@HXgI06(aV;q;4#5ep^vXFEGiQvakmC<>mDzo zER-L=qZ}&k*;8$TUW_pIVJ&;MEN&TX>5YHHS3iU_64XHnS6z`-@dc284=fE9PF}%4 zI32SA-WJdREwFH*JnUR6p^!>EPYCHq;oBaWjtgb={}duz`)ZL2_SP}f^5IFnoJ&Aj zQd&M~5C{jCUL6w7{TBW{(-{245NDvATu;e;9KDhwzo={ZH}*mDo^U|W-mR`5ItNE2V{CF(>Gk2z6cNPPM@uUYAXr3DDp<3vBediUppFb^(y zgk#>GxpYys=S=Lm0$siE36Axg41il=vHEsB#u3U%8|lHVZDo8z*qg(}9A}*)h6OBc zH(keK8IJ<^F6t=7nGa+H^3KPzXwl>gL-Ii=`NVBvvXhkE-?(jf9Vj?7iachnv(9ne za-DT9pejG~<9|^kWeE@;l*ibUQ_+xd34xn+2E>HdsN)FS%oAC`0xdy=d<=YMlJiKC z^AI)Cvg%3-P^k?kh^Zsv0 z1jbPvn=tBOL)i|7)^2v548G7U2JU{nNFwk-d5oRUYv@Gr4{9J#9`>Qln>TNa|5LYd z9W!BnI*^_D9X&p9ujtmQGlq0bund7P@~5$1j3~e|kyAiUCiOqWFmO{}gd?bph#%J<8Xc@Zw=Q&Aw{A`R!b1F7itzX3l-(_HAAiD6 z5w-V}dMAH>-@+ITFv9)*#D~joxFmXz@k77dSRJP;7$A_3UyqPQ#SysgKL8q22g(Iy za?Ek?4}oyMzG4JP2=I3ury2jTnJ3^Q3;)=R*>9VMgqW?bz}(h5jFtZyK=@d_VyqM+ zr|sWlJ_*(mAWT3WDN-5`b`$7_`34QzdcpG16E2>|Jb?bjP$ zeEUF1ouVWRM;sq9P?`Gj{f$aR#Z9ejhs(;!=z)ADJtRNdix_sc0C(|C___dm+rQvj z9*KOG{0lzeG55qK5`_*2f4l?ybHB~hML3HUU4@cf2$ z;do%}WBtV12dD7y?=VDghIITynZ;iR{wK4~#(#lZJG&?|Xa{RI%6~XuAKL9?{3rbj zJZMk)vz3$buuML|a%rEF@gD~JpA0?=_$RYJ%RL!<{=e`q_!syRlzTEh5ZlRvG7&t7 z1A2`BpAzIn@dVpr6!1d8_-qW=vjgBRaq-X&^oQV{G?EffjD+HUk&}A4z~B?Kr<;IJ zKcXES=XA)}%jxCzLOkkN{xQRcIKlpH-M_$X{U+ic1wPBNerx&L@`)d8ztezU0$3DJ z&~C#39|qVEJd*-;roIJ$S^mLx6a}0iib8C8v`k&6ZYX@EdnL=Z@{o^@6dZXMD zz@m79b|W62L_XV$oQZItN`I9IKVbAtgdhGFK7U{)TMMf;oi27Ym#a}Ko?*Zoekvs=GQ zUDpYftC@%Y;>eae4Sb@^#xp-quC=k{Z}BPr$?&7-PbL8=hG!%E&Ei`*UGN_=(}!;Z zpF+T>S7JX*Te^7G1^5u3a6YSE^7(88yaQl-`UUW5H}XCie;05*LH96Y zPKN<^2%gC7c)ukN3Lo^70`Q@2_>=_dm+;;v!CwddK{!`7;qsyMa7HK-8`=C1dvk*G zx-9Sr;#>QyIuXyu!l$9!VW8o2AW*-%P%e4#3EGGHo(w(=d`<@M_b+hj<(`E9Ho%7g zUVG0{&n!g1!P+OG2q9L z$>%^qJ)R8Ce!vB;dQCEN5*n<>Nrz4@59KTYZWNCj@PGP=3mD~R|7rE5 z9jGs#pg$J^PTWL0^fvHBJ1jB$UC>ZYYF7&ngV_&542Kv3!5C`FO_XO9;Dx~96ZB8Z zKM{YJDK`;b2smMUg6+%VyMPDnSpxhL!1zp>+1O+WJK@r1z;S z!4Kr8*2EV4zY79^8&dyVc_*y9$-4m0d}B}B9@TSV$cgupf5S(kfZ4$bJ29lSd?>RG zwqCdf4f;RvYZ@dM-&rP3xE*Jsgb{#X`Pla50v24SZ!`8JpJ2V%{>sAn&5g(QjU?c| zx{~1W-}oVZ2y4y3?8FK2Xl3V#HXV4B7KI~uM`v9lR4ju*4jW<_Sp-z=}a8hF}l^G7=c z?dc+&Xy*v*76qJ7u)WYeg@Ey4|7Q6dg*{!s_yqlv{%|sQ?|*@_y;DBQ6KogcPZ*zI z|3E&(=W{q9Pt?F^mtecI{+Y-hXu=~AUI0FY$m3HS=r=n23*1eBvwhiq6;azAdUiXI zU^iQjn1x4rJAF~-Q6~v>*3P|wKLTk!OXm6ZXM5QO7@ujuc{t=D&qO=095`Ofv3Eu?uAfm|T!L`~qk(o~9a0|F?@2Er z@G6+W|9>q1B*QN^zK_e95MRU!UIlE*yII>JrMn{gkZ~Yle|8trVa(?KI_+nMczrdH z2H`Q7Y_IDN+Sm(dyenxlaQTnNXZDSuuJRi^tbNmz`SPtvbKQk6rA(&l-oJq4C>wO<9H*<7fvzbN{ zKD`6$_&F@vLZB=}@o$3slj51jwZPMhIMU+N`6-A}!Tf1?<{X;MLkc@NPp8buD|50;heUpgmxcY4-jD-T z8s@2u@-%10P!qArciJI0xzLHp%{ub5a{$M2@$#ID7h+uEO5L%) z)KH(<2vHFtpgV!g64CgV(`-KKIPnK3d=j1lPtXpWbog z?5!tGz`8qUICA8jP5Wg59{V?UU^&{_#72@-BQfXNr;QJqO z_fVO~@<^-8Wbde1u+_av8JBl`kqw@(+*CN5(s%hUPbSEK< zr}MNf=6xZS$MeDSGWiSk_zimvoJ3or*gL*_l|_Fw;oq&SFRRE*(!Li{DnD+~!PrY> zgpl$2B`OCYSplWEwr{53|4_ouXD?S9j|mtLWN9kh8uRRWf-l9Uap147n87^OV^qQN znZQ$;W6b0;&s$?bA<|0Y!8h5nALHvZHXtd1d9-z}^yK7T-QxlWG1+4fMEQt$(O`L~ z7vWDkO2EZ8d+$wWVqqFa>_(mq44M=W(2#kJY#zU(E&ueqwaS9wi%q2PXV14f%c>w0u6;= z37q5ja~Xon4jpbR;TtI^yDZp(uM`0oa*88CIq3{;#Koh?arMAX(s5$)i4Uw8Ab#-2TlL}-SAcPJNV)!KAUpC=z!-JsgYyK;F2w5itJ#3G@Zx(bj0Ri`_$} z{p`cBi#YZ11cPf5ad{*XO8sD7J%cBOXiKW-^05At09?9YqwJPx5-6_yqc1($x_He%yn}IUar^1lu3H znE%8h#4G$40`T)N{MjBIYWW@(>1akii6N*vCloH*i?$ij-P*vfAM+uB+DPj_{YGqY=2ELtj{pdwi}G3y(9f1Cra#jkEvVh zgVxMFNQ97#CtqUrL#+};lI6L07@~NrZ!%3fPd`~O+8Wcm`b1)&pfVcrTk{GuYCc_l zOVbMK2jAgBP+bQi*>MHqlKHVMywn)N9>qU=*RVAulV_lAp%3*_9X+0wV@T&3beg;_s$*7oza7<7Yty- zmKg9LK#U|F0vmHi2pADC14cxCB_n|z*nor(Say=mkt)+6&#{aXInHAo+o`O)l(x>N zwrM=J6NflXt0rF^+SFg=)NyJ0ODx+-EZZ1;|NmNhowLur_s+~kq`zO#W^L< zGgu$@Fa9~Q@N!ICW{r(O>YQE?7=V7uj_?};rZG0w!+I0?fFzE59QG=`TBhtZW zl}n&HLj2(#L&xF2u5&GMDdl;cgJbvl>+#!;*EyHq9|(i|))4nw#q;y%VN_qoKO#c= z%@eQxQ8qtEhv)d8;q^BH4Ae`WxAiA)W7v|u?QJRXw{6+7#h3Z>tYM6B`S=6IPc3mM zM4+G73e-BGZZFSyrIuHcRJi#nIL9Ye*XpY3)z#J2q3YV|_pZ}x$6}X1k8|DlWDkTl zh@3XO+%^`}QklELgM@8kGi6Oj!c~k2v!uW3^kN`(^>UyXMb2MC&`zV>97hP#N%EDX z`nyT>D@oTWKWnA#qFpsK4gG@Z(?r`wc{>NCyQoZF&&J5U(DrkPiC^5_wmwj1CH{&hB9*> z6qnnKC7i=WYmhduock0X%?jLV(>NrU{HzBtn8_+h``ZUbLLF9PN~-%IECf~%5MMZliL zkeMb9&hhXQkRi`R`Y+LGGz6aC+d^X1=q>s_1AN7vxnX;&FI0})y3pMDP)_a^5c4L7k)LI zU)A8SkpS4=jSN3m;_qYm%P-HPBUyKG9)}Nws88Utvs@dw288$FikpGB8`xrjlY5R_ z?1oFQ7wv2Xij zIyeO`9jA+#ESUbdq-!TWUtM<~SJ}Jztsy(tpf1KMm{(Io{W7)f=WxL0kCm0AU3I(hoa$CdWX1Jon{qL)-5|`&?8}KHtw!TOH@)yd*1c9jJbP9B^`|oInZm zGq4)U=W8w=1*oN6wX|nmdK)Tc-7GKk13}Q$k_)KvnEz;y7=`!#oPYO^{dyA_%b}8b zoaJvQmzA*4zG~uN^1)=dD*wV4*oQKlZQ)`LdPep&WZ<=(MZ%f5FFCm`)cDepFD?7h z`Cq!=OP7A>61K6}H%~*yGFpY`fm#P(h(jER4{FcmEIlb`Lo#g{YF zx7Z6pIOp|%pmSbl$4he0)6Qvf|H>T|?FF_!A3tEwf9-}O)iN|nzNeYUk1mu}5cvX( z^?xHtC;1{$x+EE1l5CP;L;ZgIBpG0i2+&5*TEXZfv(E`7NgPUD3Isl&ZFGfq2cUA$ zMK50+bj7ok9-l-C`)3rQey=Zsmzr2^^N+X$xQ2GKPWtR>Au^#SbRQr96540};eI#| zyv2<&>UW5FP`78u7^OTv4W8xdoPo@(va=s^z7vnm3TjRarlfR%>b1rC5OhV^@)1Qy&8?jS3Qy$g_d~!{l&=C;lZ# z0a+l=Wrm>gZk`C_y`%-?S*c){%80T)Bu`!!ohKfw@C|ZNND6rd3FLv}DRDUpfIL?i zLG%ccGBrh|x};bVD;9)2LAyv}Wf}hXFM;a=>??ggET3mG&HM(VAG@E@9X?rOvBgk( zFIRPW3dgXnyk)ed#3SwMpGs0PX(-vti*s^?E?MOSQb&+y0Fgn*Iw7e_>jM_@m>I@I zZiX@sJ4(7z66J{cL5Zv*vvTIt(_&mWmRTSV`xDRF%2#Ex0U((};zP91!qefNI`=Wf zG<<>C7ii2EWQ-}b*%lcNNcov2Y4@n>(jEzGT6wJxj~9?{gm;EC)-%oDo_uH%cklu{`3tD!YLwzMUFh& zYg~2JRr9aH3CLCWeeo5TO;>eY)pcbTAzkaGF5DVnZSoJm=PZ)@SR8ko`tVoBm(7wi z_#?+`or!I)vgp}_oQRip<=nPs_#vQHXF-1BP93Ea66?wQM2v%mzV+AQXuH_&ish#Q zLP$x!NS)cXn2l_r<1`rB+275^|7n@s$d+9j7Y*6}Md z+$^rgi)PXa;qi5e!{q6*jI$Rga)!VjqQVE0unoXJD@q!2vS&|8hC9}m<&FdzrstgU zb<6Uy?oa&40!=|(X!2q{e8;O*ONyuPl*b>VS+@)nd~9h{V5A877^^MAk0I)2{d@k} zGb_Z&o?c(_dl@ckj7@>_mvfKb@LyI9|1co^Oy>ZxJtx+Len#{Ohc6=x)IFx{iF)2ECvA^i&2mV9SuB5L`kMu*e=%2u~Ekvt6HL>a`g3gd39`gAC zl#*wnnWlv2ZD6V;D-}cv9iEvs9Uw-P2;6tA638d14;AzNs_QrU{+nfIe-p)Ve zr9~?g)M{aWnjonsmCxLYYQ>buz6uA-ut{0&2vFYu0S1v}A_I))KnmeveO0gRmM+`q zg<5}3fn5i6y$*4wyuFhH;O+v)nP>ie|YbEBAKWR!lo-h>#N*VNh}BgMs`qSb5%TUH8EmAE4(lkeIb1Ay+*Ux8I3u7pYl zlCK!cP70?a9V;pYUh0pO3@IwCqy!l)l>FjNLR)=E(Q8@4z{7tkyICG<~M zanBXICdO#)I+2yCBvD+5Y)3vXQ<9jZ?2L35U?f7KeZ_bIl84ZHIxlG-N8RGuV!Z3I zELm0?!anmjjxAI0p$6_FV5US*YMHh0bIzy3O#6ho7^d;vi$VB|?>`^KdugYm_w|f# z(!amPO(fq#w9O>7@qISq8^iYzSjNcr>i0*u@u4{1l#aNhX0!Wvgd5)={8HkBezTG7H@+8MI(ybZA0yxQ-qS{3 z7SUe>-b&xDh;IV;7<8wI4*IR$xE{8v6(9W-wqq*7O<&A+3Vf~X8;t6Cp^d(=h|c!6 zvXAwI_OVXR5JtY&YW6k$uJAM8+l=3zHa^x9>TBnh>4@)igquFTzd8b293sD~G6cR5 zH@*yfL*QZLc%z(rQvhRf0`FOK?%j+S2fy^^WYhOzH2(NrY}hX2vp!-O-*aXCq#15} zY+vZtGZAil)}QA8cH@-&7V0BkEBmO=Y~;LY=jV7FwBtMJ^~LrXZtXC;jZO#CKEp#k z(u_V^z0|?=u3dXMuB^RW*Vz6+$S|J3d&^eu^PoG>X4A)dV*5he^bLXU2=p z`9`0czUR>n2O1;WJA!r$dOU3JU{ueM2seG^SL@Gq?HG&NF$J9UGV;4rrf(wRV|#5J zaQ+$JQP4v_kT1lI&-9tU$mdX};l^j<#prAo`55UJ(&ak&g5d?d05&b~f3;0DzR}Q| z;DifQ(|0_w=TxN6_)_>koHq&hti9p5Pa}PMBHZ*1`FgBBwzT1+eQX;e$HB=qe58}d z{BpVtAMM)$KE^Zne$;ftM|&J1gPe!cU|heeBaR@Zhz!;aem`RZIOA#P%OX3B&w(EL zZ+(Qb-b)aD@Q3F#NkK@d#494-YY-)*NXI1BkyjD>lCexqz^q>L3+1@pF@$y)AIDor zZ^t(ZKKj`F%=N(mXAI}%3v<*r7V%Ab{bsM(x5uw*MnCHL%nsu_5z$WpZ)IOAzOY@U zFRq9FY{f^r=|4u!2W!9KrtgU7vv$P#NVoo_48Li`yqf8`Vl~NlOU;G@UX?G8XX;;% z@S1I_ zJ!7i;?6>ZF4%frTvJkg=C!%`k_s|aG8w7m_Iv9EUJ_39UaEch7m+c3g{%7RzmV6=3 zc3g^R!6g|$#F~$S7vq5YFxJV)dbb32JP-Zt?91BN*B{wKzlZjjJ|1Tr>SW}45`Uk_ z_)siur4F{&bXmU{AFnG|8TnplQ*RygA?RXcdq;tf0ZtJ^KQ|)2lWp`(27L4v`5bj2 zvR$;(?we%Q1fv+efgCY8g2&4z_iObY4d|3-pd9;%=aFpFgNQ*mw(3D%)oKnaK;m_$Yn;Q+ z;#_mh<(FUX7(g13pfFH<_SxUw0LI$Hy{HcVxDbYU4OesLq}S$oFJ&BIEKL^Fk?)pp z@4fdXn>6rY9q>>mulZjt*Z1uzzh3KC%xHQqh&D@*CP{KT@lpcCENQ+cB$A142mpJh zl6S2yDyY5?_xc#j|IK<+DYs-=fs`42z%e0VjMx}{LJ|p~J4x04BSc!>HWILXLQI(m zq-F?8-pfd5UG5Ss6g0>kxgQ-j#+3n<07gWqy-N-T^Ci zi<6Y_h}a-hn4uN}Bku~KBFURfqjMHEp}{ip=03xS($URa&yg|MrG>;xHsC&-e*y!C z=LPyKM$m?m4Q6Id0cnS$yoNIG8K5VaR3-T?OTXJ=mh*UK>q`na#WY|(hUkI_Q07{E zPe7QHTFUZek_rV+a{DpO0*0z)szoW{9)O&~#l4W+!6uMQnKYgWB5!ehTX{LAZSK}& zR_cua@?I%rMUpCr?h3jRF#QnjFT8CH)WFz}-tCvg7<^^Dhd@b^OwuVy4@jyB_1ZeW z7*{cH52>;|O)A$X6+|Q)toU~rB`$e zFog+zKv1vkcgU8Z=m_F8;%7D1kxOsV57&@MLSS4n?P-#wOsUuQA0&_)G4;6@cAzS+ z*}wwU!|6d2+1K4@8D7Pd5bDi9$-F`;PjCy386KZOs(QllOBJcOKXWYSgHsl$*ZPe# zuJe4}=6uN=a%V0pjUCvCUmcJLPMy(y8rM)+m78}v4rQz!dSHTrgNbw+tboDVA>`*N z=UcC++CN|r$b$b6Aj1A#Nq~V3tTIWYujPDpSWv1btyHyJsgeWM_ z`>9_t&@xag0xX40FlyUWq8G>?vQWb3bBHIef&NPGk}1ZdcZtiR7m|!FX zGAN8fyitq5am4#xzgGK+8Xox83sdA#I80@L(m$88T*5)7;t2MsBc_40IvgV7GgX?T z(-Ve#+Cv3}CDbq7NhD)3%_NhALm-=EA~zXRqZ0T9}s z4<-8F&Obe49r*%8=5@zUTQIV*2-LqqASOz5f=dd&ki$lgVud{{k#X(_374{a?G=%} zObbKP$4GKaG&ln&p8Ioz)DavtbO?&-l(Zs{_Bul|0+Jjdgv7~(Z6ZFD_>EX>N*cO7 zDGEY=Qr01kBJ!OLeyJq|tj^aali$`p79n8Ba!E;Q;$K2wMFu?fKPjpw5zQG1lyC$n zz-QvPo*;mJQvN3eolcVHa7|3Ml0!*yAD%YE?>E9snP2OLN0LmzR5Pa;l$8Q^8CQBr zDki0ZDeR3jQ$1fO1Cn$X7Mu)ik~G;+1uRPtG7a;P;W!!wm7`b1L*7w_fHSH`tuR|0 zHS(n@$2CC{oh^$j=w)rWEIhS#Hu zKg!V1*AXZMj7f%6QktR=(Ts_nhxIEcX(nl!@Y{&V%A|%^|~T~fn>GQt0JLPS~L z3gJZ}<3RiyI9Z5N<{{yx+|p(Ps7S^jx2v2%om3r&jCOfpS)eu|R{yie5K?q3dEVcRHK@(T}~751haV6;&i z$R!B@-$s=yukjiEJk2EUEI=||)H^JY;P*<&Sact2e}qp&*L6(pq`z-Or|^1r-Cs{K z{8WTJ(MnPv?jIHj!yomDH&J4V9z(pL}_Qpkm z)8A=a;@^iOS;~lKiFO2N4$r>2It}z+vS=oA-$*|Ixok=uq>s~)~o`!y_&v28Q4CH7B$HDWo32_8= zpM)OTW_Fs~(6`I?&r>`Xbpm|H5l10+3iD+Q@D{{6{A6-tkPG>CeW$Faf#;9Ha+8~e z9pQM0#})gbA9XRZy(V|m+i&BYejtzGY+s0*9P6`obN(5h>3`A7k%#3bx5v}T$NRNY zz}EwIh#Wt(a}Y2ie-FXrsE;<8U8f`bOoW@<5c(^W<8|&K=wUns{SIv1|h@9_GAIh`$Q%;0XrOcXbb&yJi<>!xXINc`};i~ zbEjNbUsi_28us=|6^6 za?~Hvk4AVb$9{MNi9T%dt81^%{ReEUI6p9&o%D-CDI@!N3-BSpjL!p~_T{vRyeQa;oFQ&)j*uL<&lcWNIgjBN}SJYColjGWf$T~P5IDSHW zB*HnaitCf))HdZQH&y!9i*A&NB2bP#vruD&KCmlNIqWHMQs|kaW+(fBr8cg|B77pk zO>PwHcqsQ`gs;aua)DmzFU~c9AgBxVstwXiN2V0zNhBwuOUKsp0yC{7(*oy004P`Z z)0ePQlP*oK5ZD(?`&{Lk&Z7dk`7NYFO}wAwKw#wW)o?wbpBOm~67NsL&7a(V4uOY} z_Yo7wg*eB{7|K#a?n~IIBD27G4c798KFK%YcB zg5Ntih2uNtOaqbo3kJfBY;W8T#2uoAOh=xe2PLgaYV|cDKa55AuE;MYcLa7#L6g}z zg7F#Jx!;dhv(w~K=o^9@BiErlQGapWa42Ksdc*b<<0T_nmozy-n4b=3&{RMqa1+nH zqw5b^U_42t5DnCz&IL@_8$7WoVFqK{J zVaama2xN#-na`|7;S`&%Q&7@WQm5H~Wb`xzr+w5ORw=mt6E& zVTdCj$snPD49Tu6sV0NG)V~W@UOPcvQ!CXg^@xJ1b680nU>P`)u$1Swa+ia$rE^*D zUyvD4SmcfmGse z`bs%3;PHVpT*`B>Q=tLk5=!lLBsrSscmftAxE$i|!&;@lDO+eF#~~&gYe;Tqk}~1Q z$EBMLs3xQ()Xysf2$`IjoWkBKNxs2<_jgzdljN_H`W*y_RyGQU`yZ zU@?EC09Ra=!XryDuomO53xY~3=ro3JEHh9xxR!FvC zCl3=TKuMk#Xd_WNy+|@(KCt~)7*gaZ!BHmS07qz$$RQ(uCYE=6GPwhaE2L;31xi{qHebcglB1MTWB9aAVuZy_ju;t1=nza#r& z#ZEHADI3;<{JxV=Ea8&`633D{#(uquJQ>5KPQ->oB<$q4^m>y)?k9Is&h?FfIeCna zHipMFpc2%9nx>k8F1?W|N0Kq;vHXn$;;=ypW1g;g<}u6Ee!TkI6r87wP3zrrXSq7n z%uiW=>Ukv-6GMWBeV^FK097l;;NkPv8E#H)55#S7WD-8;tUoaZ`r0|Edl{?FniDNP($wh$H6Y6K; zo#_BFP{)8kmJAV)XpW+$0f>U@q&tTB_qTCLSQzZwK1Wq5wW>&GE}I>H^!hr)8xbHtygu`I!P z@JZn8X~XN$dDRf`lPEvI2!7L(L5^da(axW3sPR4x>vt$4?KE&+?+S6#!|UEhz{AM* z&3GQi;m649_0zz^dR~Zd(?dR!TMs>_BR;4TTd9lonoh$_kAppv;9)!hJ;#9$0cNB< zr+}XZ%(w;b;hhZXWx44&1$rGkjP%Eg5l;KU@-q=`dZtmIgAPWyE(yE=m{HmRxey-& z&c1Yr94Dq{64#ygfX4VD>|P&TZ{>C9A(SzWq8$^!sfTeaXjcaP4zva$>z|5n_Cr`s zKZLm1lb{`2po5X`?PL+oalpF!5jlRShjm)Lre`pc<8_`;?`(SN(0Mar9)6q@gg94f zlKR|pdCXQcjFG7RvB>Ttkv}*u*v7bBslP75dN_V2BYY&%OGBu~_{~3KuqX7}9^ejq zjMKR8JPF+D=XD~xPDUE9@0y;|Ue4$oXQAFL5l%a{Af|{3u8W(V{l2|sC;Nvw4L=&; z98Y1n>7id8axXI7;bia99=_LUMcpChBLD?K_T zb{&^gU8e9{Q||3J-rEESbB>t-lZT4vA3E6d1Bgul>fv6nC=tedhpE%E zv3Lm^gJ9G3ens=+4)wj!(~7L-yqG6VX`X5}TEYeu^R3~zKyaN&%b1FxWb%xXne~!0 z5vu19BK568^dV*LB=t?$KuT58x}<%Y-sS076{;ItzMfFu5Q`+Rcc8CGoxoE<&_oCx z&m^B>S`|>weXjO!l4JrQ)qiB9;A)dBz=~zE79RrL^Vc#pLnzJtp*7*-`BGlbBuj!E zkBL?ixde=&)C^NLSs9=7aFo?T+=U3?Qfax6=fA$!Js(%AQSnaPxfB*fPczJ1-LlZefpRH_GDU=EeMawWDHP~9A zsC1n6UQs}18XrD?VWpNY@z&)zD?rd8i{B_#ROYrdS>&Sqe19|^;_+eoPzPB) zmvIFAgc*5$7>+ZJ6Z)Iy8`K-(+y{sFNQ93?xamEL^T<$+-w6xxE&lw&>g9esEFXkk z`qj!!Z(QI0sQ#%4KM~2Mm|4fdg!=T-(O3%Tp`TQbCH#8Zf;5zhqiCBTRok8i(&`0I#230dB&;HqYGl@%bv-Lj52RDRHE>kk-=rWr`KF~juc+Q9c$7tdhA$ED`33MpVMoV0?q<@E(U=8 z8yx$!NIH8Fi;}9Oi-hv{BDQUjrKw6I)gF~J?_6;5z5>s$5S)zup)?tC$rDLsYf@Q} zR94DiGfVI*0Z9$2`H%0l^XDWTD#SlW2C{jaB6aC^EDjmOYOH4sq7RwoK?YF&nK5Kg z4>gB8CN{B*Lw3T5L}a9{R|-=Yz~B$P9=l74?_^d@B*Tw4j|lZH(UNRP1=}F0e|13Y z4xgcMQkvGJniQ>q{uFm#ka07FY?)@f^#Y7Ri1^GvRm(h8d*f-VyOI8Trl(LBsd8ZO?7{eVEN6BT6HP{H8AtV}J+ zi)zFPTf!2;X-=pVU_ou&MxlCh3MsCO(eWn(NkW!+029awm?pJM048Y;WjT}s(>bKa zkQV1|)qn*cH>!c`Vgt9P`nr_ zpxZ$y#Xe*RIO87dAGojLm}BIAbbqu@nT&8=w;qJ%e#E2T=l(8~=URFbq6IU8JPf-u z%X5#~q)#fIvB;HRdW@g-gwHLE`GPUenE71Ju~GI_k55N=>Txfgd@d?Czj5Ei;X`Za zr!2y`4-3nA-8sackML6wZuLyVzoFde2=9m7AZ%dd^XzG)=O}Ov4o2>a8A5$l&y?Sv z8XwO)Lb;I$XZwesi;>Ugvb_#4BhPP6MEq9I5!??8?RD7iPC@1f;tP0wcFMPpb@RT+ znE344_2p!`wb3FnUgMhtxRPpBg~Pu-L;4NrhM}3tab0d&zv< zt@PT!0FogLk^t0frBqfCa+ulcjVO7nq-K%Q7 zsZumUQMWJZGd;PK?2(&}H{BwSgufHwLstR%`wCKUU(S%EIoOCn^)inQO?8=md$ymr zBc}#uFI0e9>xnRLFON}LvWT2xJQVN5(M-F!+@4yr`q7lpD* zQ<9VYlCBR@0g+JYHba6u71$xIejsqrh7b`JOXh_oKvFB9g4_#ooiE&99rkR8#S$U~ zZ>}K#4x2GPKkR&=&ktivYtWq6Z21gj6mLmUx)kK zloJbK*pG(PFIdB#ZsT^CN)gCUR+AGValFSsIK@j1l1GOt-v20FZz2;zDoqoRZE6Z> zNC8q2JasvcdWwCTCgrD&C4~A||7}Xv^bSMrF!l#Q5fK&{pkoRYU1#n{oC2RS;2Aur z=v5Vf=`M0g-BX}|ypaN#hKjEyEIpvM2%jB+l}4!p`LXAp<_qqD9C|h{<$Cf1h+!BE z5d1WtU@6ivJrg>ULAy2tcvk?Mtnx6`FzCk&F}DA1CFiNN+MLS*;gJINn1sydK~|IF zED0O)CuKJ#;vE^s<|hs>^(9rdIOm=MIS7Hlq`IJ}8O+M0y!Vyt%B7rl8%v~7l1gDz zFD+sL0g$q2^i9$n4-jS%pIEM2kpeWF6rRC@LRp0StO^gn3C(uoz9Qf#CeMu|sDywF zQvm9k5gS^{1LnLF?R}lX4|!2B)Tv$q?bzU9$wt^Z1`kvcd1QsXH$w6}09agjj#I(g z0CHsvMY$AMWCRN{1=4&+K}@-Y(LbRcJKv_= zJWj{QWuAYB{Aq-5iEtiILw@!{c%25Qgw$#7ELSvfG6?f6k*5Op1C=?3NRF@f^!1*T zbu(B$5GD&(!@G#&A>=UPpaJ@xkzhwx=0q1jY#72|DjAZa1RRsWT(#&^npn+J-L$Sy zkf~@ICA7zq8lXyTACsqejMBsbdZNyRG_oucJ`tm6eLs>uUQ(Q|Nrn?)LcMz%ObC&A zgh^e*=$CsDi;(4D7T8RmYp5jK1mQYj6k7u;wHzAAA!ksR9$_G~G>5zj$(n5`O2-N? zhsLrTECABbScD8wAz~7E6xC2b%Ba-Lm+JY$wj65-lysMnoZSKP16pb3vYdlJK3pQi zbkZ+&NFqxfq!Ako&B~C}n^p7D)S%#gt8U`>x|_-7H-_@w&BX-ZWrTN>Nx-IAjc=%& za~Zs{po1rWJemA3mCVR(H~(BuOQ8lA4?Ckuf1M zNfoO5TrvKtB!j#lBNz68!!)6biHa+?qpr+PUxwIS%wt|Y@_AKFM_De6#6Jt!|a z(Rw}U@q-{!jmTJZNCghn9LbZ4Ws+4hyb6x>6n)=pcbD1hT4|(=>Yf+^^Hsl2_O%`t2@=#*SsRZn_i?H`9K?W$u z1V~bGqQXFIV35G$$CbY1n!o@jG)RhSIc>fA1On1`) zYkErHQ$j!01)(XSAcf12f^teIr>5x7Q?3dP)0TpgIns5M`BW*wqorBkzUAP(UL@Kk z`SZJeNy)@n(^^j;HLbAkHDAnjCrK))uht{5Td8Dm0`_Zmv1W1&=-pD#Dw$U%8tVJJ zHOki+8RAkW)F7EIp2m#U_kd|B;F|*+YocNepO?z4kr9z-rZnes!;zblC3nh}pP$;e zuLlCkQWbudANDd$nRZNxJU7yjl8hjDPbv;AxJ-RM`FSjQXDkTZ+NDJ$tZGVFRuw{v4XQd!onIxquO~)C|#TLN+*2IGcnnwcs%d14Zc2GJXy|`D_>Rf zO5y@Jag5-Z@^KhdlN2d)b#gT&2E6QZ+L@9b2h%TfC~T}yj>gt}h8mqfWfU6CXM$*_pIJg=x8pVH3o`kNcNlv zxuNx>gyOt6EG?rLb75&2P5oL?RODEjqA1i*LfhNRapJrPGIoH4&C7q~I)gP22US!G zbO1~aBay+Q0&Bw3AcU$w_N6x0xUbn6a4Q(j?xw<=z@uOh`fV{6Qh+od zUY<5iM@K532vxp@jH(?TbX43j}8ZQ!Ol6;E~MB(V%Gm zh?j+Zp=5q485Q!iN{K^YC;UPd}y5 zO8gMcU9M-OR+=Ok{_@}y;yK#gIWY&+Vh3EI0fW*q#MAzSw0aJ0l4g^}$Lnx`3y{+4 zgh)#2166~7r6ge}+V%(=qD)9k3g}Qy^8jyozcnHj3k9zmWqE0dZvBDM61`wg?#ha} zaaXPd{DI>y3Sj?rBjJQjXCi&oN&p*G?-D&-psk_0O(-i)4VXQLZGJomZ@v_&WMDZ7 zPN+3Wn-g}U3&`~Q4+c0v7vKXWILontqCe6rN^s5sx`YZ+59h-vXBy0*`2Jqeta{OX z0k_^W+FGJCA*_40U=^igG(QVMf(6gz6jwHn7>m#CX;tlTX);REkV_Fxvn?UHs2B+DUv{~=r#f}&(&j%@UeK1HdN0PxKC-8d^ME@>+TI$%gDs>~um@?v7#Bi$q9AjxpPP`V(4GDsCP z4~3c(<|_dLxg3%anR9AO9N2sd3TV1J(>l@|g8iNbwk#D3Qh+UN5vsn|GVEc^bkRo2 zruvo61NqdbXQVJ>p=uIx%aha*M@V&w@8Qx(PwX||=^Xg<&uh`s1WtkH=}*5;Df>$c2xNWHJ({gCn9`i=RxOmxD|| z)uvjwAA47sM==)?9k7B>t}5gM*UFF+Woc1PEk(#NwDGzw!z#isP_Q*Y%Hhdrx!9FZ zK3nrtiIOAUg&xl$ln1u9!81EDz>}dY9UG`38mZFK6a^B3QoDC(MRAW>MX55d-ySP? z=LG3BttQs2L~-ac9d(|(v4jQ9V|nJ8Br7o{ML!WLFtV08MHq?crkz)|W--=(usIL6 zTbry8XOw@!OnE%w1XD!eq&}$}S~3~JxrdNy3})ulu~sF5gQi*4~-KG;h)i^6*F z*j8Go%L=dw;@lf=qADTmTF#LWCr1hAj|9#X+Lbyl#0tU?<6&6=2Obn+flscr9g`IB z*zk@*PN3lQKgqneS&%h~`JOfCAq{|61aMJT$TK9bSPL8Y^QjE@HWSDehw$ox{{DbY z*lBIqWI=y6fKBHJ*o=oTud#hpMVnJIqEynFIFLBu3cIdCB0D}J>S$;pk`NQKRz!KQ zu*~US3yXt=6SSYf3NpVRsmS3^K zzFRM;i|29}{D4Ul`WOdMrZDKNB&TN{K2-x$(1{2Si5lA3R+00?_?o{nu_DKXgh-{7 z6<1yhR)MkzFQMYFR7f&K6oh+`{* zBK?LI%Q#iVp=D_raY2=7V+r6a;IN0*Jc*pHDCTp1;xr`@4MNl(khQjwsp^V-mPbj> zd0zC-d(&OKUxgdwrTatu5xzdcM}a%Yn*5#!pN#nX@jQ8W|7kM9Pek|&5q>(t>;89q ztp4M8Z}|x9VdVFc`TIFTfEoF`Ie$NgWf@{W-d8eT9XVZo-}(8kpFMj9zC4Y%|L5_2 z-M`UtM_K3{{9Ap_eFXUPcpv%*@Ik;|6PGr*@%M%(y) z^$D~qEKmIV*be2ae+2jxVB@c&UECB-AWl=B_xS+xk)#vAhj1S%)VDvvc@639h%Ev% z_>dXEydWnopr-*G4taC56bGZ(&)k-i2)rR(;mlVcxf$U=^e`un!2&2fCE4g=jLFg% zh3f?m{Sn_U63xQWG?_isE{YM&@L`f7gj;M6OPvSvHz;`tTn(Vq!N6aA5uAFpyqFup zo(!+&mr4K^Rv*la1Nwt5DBvtPSg=FVC zmNGu~n1@=mH-`auEK^#EGXWN~xT>EQ^uj@tLCLq;QfgRM!UPd7w|Y)7G*LOjG%8he z^!7C$6*C4y*77Z@%upM+`aqz|B??GLgUROpXNpFz&-nxhQP>coD38#gvTTHw3l+1I zrYWrd=DL*3A&- z^A{n`?`@2tZpH?_V@4)Ty&kvZrAj`3b<@`=NFZk{uF%CsX zO=saDJHXKI1;&MaI#yzM3c!`L7$((Bdn{E9%o5lp=_w%#GA(J6YQ|o)vW9%D0GJG0 zV8T*NC6{xmohGMG3)M1V2hTKsLm3hTU>6~KP>?(+?pcL*;Dg1PG7>6aa2_s$Y7DIF zD;A{^C=9gmqGG{B#h{2+LK`xxA?XW1S5O0x8q}@90|3;UDtm5v_;i8uzpg=+5QG>y zT?5Bc^YPmMYM-$5=Qd+^lEYqHGSE3pJ)Grzhp*&#n0F#G&%vf-zJ4yI28Z+jPUY(@ zxxH{?6YQWF?g{9Pd_A9+gmCc`FJ8e2Y*twHgml`bYB}HbBSr!5ccxiR%X;wkT!-c0pAjGv*xd1e=MlsuuI4o`8Do8ZjuDr&=e{s)L@E zm*%?Qou*QkbMsi=`o2yTtxeLLu^A|r;{o-EpI=7FNc11C2}mVMMGK0$T);UqxE#e(?O6IS zfARySXX;zFtcli6zDX90F)bXQrl;DHXr)EIp#XCz&7lHlMQbJ7*Qli&q+#eA?cNyM z3|iVut2NW0uZa&EtY%s>AIDO}$Nj)hhPIXAtc=cp1*=ZdEEQ9*jVo1UX{ghMLy~m(*f9^oXbT$3UC8r_;8x2`R%qhB?9U2xE>JcXrrCIA zQqp4km8dX^^fC@ln<$^yAA z*S_s5prX~a;zDx-IpB;zaAmVxB|kGElN)Y{W~#uYH3f2XB*0NBsJ~3)mX(>y#|gJA z3q%v5t{}LAnbe3mDa#gO0+|_}>=LyqN5fP3uuiO(UCwhA%mrajnHg5ef6fq~0EIb2 zUW7^k0&*oRN1|C?6}AgeJe9LVfQxXVLW@=_&@vRoA&UvXg*MS$lr&n%l2+$Gv8c?ee)z&P-!8{=iXY$X8HNI7spnonO14418sx8G_O+t zrIq`vG1;PCZAYm`mL$!-Dr*<)HAtUrL2tFx!JP6SqtTK7nmyX6PB!s0Q{LaigBum4 z(5N+0mbIpY4qM#Bb76Z5nxi4-;dWEP;^*SJ7Ei`DFK*0Asl+^4LGiT*6kj_iQC(T3 zkv03U5qS)K*i5ko`TVuWeEuUqqdbaF05yimgjPZd1~}00L7<%Yc%jEel9&Qv%<&DQRyRw4EsGaRtb(oD9(b zF0lo4zG2*2W}^dR&f=hKb=-!$3_ledmj#Y$D$6%O z`l`9NLbE__QKeLUce!0uuXTa1Z-sOBLx%MOhadBBE1YNRyF2sx%>toL2&BS^9-E0Tr z55-1htxU>^;jtuxc-c;1#+jD%R-2rR;(}Nyn5!*x7Mx-A_~q4d?Nm|_U7-`7l_+x( zbFIV!VlmcTD{*=5YF=P?QC%A-e5kR+l6tIjhQh{@!e)e3WQa3WA#ItB0oRQk^t1@6 z(p+1H5iiu1A@%#-_6$x{%*+5SGcz;>W?;aWPG)9M85gKs6C(e&0DA;@jGcllw!!sI58#d0Yq288(=b#Tj!>bX}mP)dg)Rx57tSzm}S*Px9 zsj48>a@K;@4tjsPf@b;w{NzA0wI$_%Y)V@e#l!<7=$<)^%OYG@mDT}kq@)Rj)^ygb zwn~`++x>#jq$?*>=FD1~J8PQES!GTa&$}lC zxM4KEhV&Nj0-S2ik(JT`YuZAaC&^fv8>^hmW`(Mhpe?xtnNXKJ3jdulaTcs;>+Jb$ zbF(OItspLsXGdJ_wRpBPf1{Vok9zxB>c@{R&Qk7wpXcn^mh#Y@*FV&{{h1R3ur>90oVBBSzFdFO zTK|N|!@f4<&(2c*p;^kk8Ev!HGpH@QFDRs*9U`fv{f;Fwl(V?-f2;8^OaG>otWwYC z2L?-1n4F~?<9kN=qI`AQq+AGveCzUp+RDD7v<&G{gtP)GbIgoc|L|FYC*mb(X3@Eo zR+7cxFG0>ts6Cgdd(})8>$3J0c39F$-*u?^oY{+Ca5-mHsz4h1YW0Nm?5ky4_NtD% z(;9=S~!efEqyma*GMOez?`QK88gIL0~jk=;%4AO zW3NWBY8;w@(HG6mNDc&6eIOZnu2<3KH1j0S*vw#*GUIw2zpW(7BgWwMvKbiPhZj}n zqA{6?u^Lo86Jwfp8(Q5vlg5w{esoa_TA=DjGNvs`15&{_8cSy#ELG2qG4AVntBUc0U^Z7q>+3>K zr2qqHL(&}&v(}7N2pwp%NQnb7uXQFymZ3TgGccyYktv@Hvo=+W!ntTvRe{Dz`(>|I zva#~PHm#NuoKR!;92sX=ann-Oy&rF@F=A|Ab;Q`d)k*QL0=(M$du^+Z7~5A}W~{ug z;SX^xX%3kuq3TNaTo~my)_>PAi$}Q~>bySgWPlqyMUS~3D+pJz{Vvr^^ zQQH#iH>M(n8MU;LiBy!)E+;BG^MT4NC~KM->!co2+=-0UP8ro4bE5BDr-#hDfn{<|C=<-xRlSu zhIunjjjdFNd4zLqUNAs+G=Z^&qc$`58KR1 z!;B+p4jNvVc}&hh!=Ih2hOu+j@aVZ}$R0aa4ad(}!*89dhUs(G@WMH3__K4>Fm}!w z9z9nL7!2pw3JivG)By2WHH@C~DmUXwJInf}tKQ5SW?tXsqTz+=gowJ5V&s9VA*tu#re$Es&QpnLWo=Km)(< zHglM2ucb!ntXfp8YQ6EPjB77wC%_1N^Yy9Czl>e{LFP zG;mIZqc~p7K5}PL#qsb;HR#o>*+$e%wd;#|en&coRlS`q)v)YbG<;Fc)LyZMdUEcq zcr%)J_!V0qzUknaidFOqM6}!5bw-KqYsosVCGA|qbuQBUm5!46CB(O--gzyx&PAek zq)Udxh&Qa#aV=RV7vZ#)v~v;Hxd^^C6gRRxu7;Iu=ly!>9F~{O4^|a**g@Wy`71qkmyjv zbuJ>?!_Ewo%gUXJ;Blx<+mdzO7D}`Vt`%`+T00S&kexMO25V;`bXaG-pHZSSk+gFW z*SUzEfppY-y>ro#h%$F1qH9P;BGN4#IXM%DbtIB@F5)^D(QfI;FzuF(M7(!9ak5|9 zI}y>=mr}2#M4JVfMZ`|1Ixx&m+B*=@5tdu(a%j%LTtq6qnhp#*;0@?NWVmyY6`hOl zZApd>46|2aIuP*=)2f)xGFl480_s#GD@136%r?_+KNMx(HRJdD8CGxp)eRiQ&j^P1 z)V!b#(^a1SFTA1$HfzbTV_NVpuF%{r9@>n!(#vi31p9h0zkSDm*Q6zw+n=apg4-{X zT&2ayYM&4K{BoZU`}}sFf6(U>-cIYr&Ay?VeY-CALj(2;r~MSleO~_9F>T>p9$)3< z?3WjPvy;0v|DJ%Gm;Z`z9y|7kNFRw*@#yg_- z0ufJ+9eY_EOFg8JM}m@*n?1T_lLGbwWA-f*KFh+u_r@4L?(P1#qRHi(l(5}9{Nr1+ zV7o8>_G|I1bNdF`r5=A^^I2)1 zJ+#B`i!s=@G?G~#PEP0aQ3{`)9-%w zyUFrz5m^4Rnvw9D9mDotx?A3cdxN6H1@gx=f%#7Sv12--PI*VK_xyWm)yCvo@Ee-> zohg;X&#*!&Nq)+=>p7o)+smcqu+dBmx4RJ6`SQL*2gvI^uG;W?<)*^}B>60Pd4)1; z_5)lBL3*}ZN5c8XwH)S%|9?=?Yb49UdUuyHN=h ztMJ${Asjn)|6Nyp{JARP{hULCzM}_!Ks)OF-m(A2*Y~*3?KkfZ>++K5XiSpfMh*X8 zUdnVB#{K(Subl3Ff0A6eX`2k_UO&$7SGOc94i5+=^?E-xstgd3@cw~K1B>6k@$ma6 zHi+f#uPOam-@s#jeK_g${=0X6K^VUGFjH-?$(4 z{_FMpK1;si^&Iqm9A2WpF$9W?cs<|n7fTQIGp&A^D>xmGB?DpAsDw z$+NzlJ3Rl7dU+ik9Je1^!lD(v{K_5LfbM&iEPrO}M1ovOKD$-z+Uoh1`+7e6&$f>A zgXPN}-@I&{EKK)(K`s1Gr&Zvy-mmsksayNiux`IztXl9{8R|>@dN_f=Bf>@mYFHl7 z*|cZ99Y>Gpk?!UsPd+ z9zeg4^&4l^aYyeS6pjachd*$I((M)A=X$lG=XzECIX@wu>(z!n*L(PfsbJ(AYS>@+ zZ(7ML#j!OiIykUt2^P{#C};oA z6ugqQnQG_vQ_d~mXLQdg_+_H4opUX)_ULGDFO{_~(vn8cHtIO1Ms*@=_BaX|(k@T& ztG=b+M{&-tgE&WD3E)JiRLegQgoghEG4<6p^StqVWW4p*v3G9%#H#T>dHItc`oxDm z^r2@bCXjyU!ttexi?C+hx^?3_cC2LBv17*-D}M>V_!k)N{sNCF62?DF$viw;A1^d0 zG)@HwJAU~X)F7x1s@b^lZf4`C-vTvVIF72~k8eqpeRoJIq$L~U%VRYp{P)Y@&hei@sD7~T&@<0G^NR?V zj^7%E@qZG9@t4ZshsVEN4(}QNW*+|gn@1-n8{;c1d}Qjb4}NSa8Q+)ol>W!FMK6Z` z$@ptG-6h|synmbUFd4x?X301YHTYK*qLgJHnX=%< zhb4R@;vg3Tw2Z5YJXNLlYq_N3ChYT-8hL7o(LU*xC4!Bz0?fO>cWnGWM0|Ik||j&mNa85%!&hNI*CuIqKz zfAra(d%k!4Elcp)c3<+fmp)K^d!u(x?JYIu{$+BiF4=)MR4WHQT3vgfUY$KW(fn!>;FD)v#~-#BjvhkxUB ze1$Lk8*kwDRQNaUlJehpnw0;>v!whtUNQm(jhBpoLE|MOV9FLvUCt8B!ZB83BXFOGdz;@z4mu<0T_t(0IuRJT^66ctQ;tFM9(=v9dQ3heLbl zjU*i}dm~A(8wk7s7)nELR1zo+y-`h|wCoWmEqi3V6UE( zdhwJ65*o?VZ+Or3U%TlqZ`pYN8~@vquYcy&U;Nzulf6It*<1g=u0QaBnD`tcpVF!j}2 zUp{!%_B)q<3v>x7)9rusN5g_8L$~RQ@wIWE+ZBN~NF%{yKMvqjfNqgsm-F?iDoNK} z@we|Us6v zd0h(@_TefLk{XD05Ep=0XlMyl3aVapaRG&8&Mqi<##>)5BnZ7cUB+K3qsc>CAAQvA z*t_+y?QY-h-R{w?dv|V+SOl$kB6I7@R($te{?JRG`TW2B=AmD>;Gh56cfR`Dc4Q$h z;m~|5W6l$%P+ys|DA~S$&(_BucI(z&v+X_mw!3!~B?ZJf=oUJ+E2&g_YTfhZ*L(ZU zTd;7Ezx-SS6y}WHLI^3TC;ZD8}7Js^uf12 z{Mh5W_dK!p$$k4Hdt&t3%};LM`{cDdc5Hp`h-no1G<4<4vG)Rx^e*DR6TaUp| z$KIzN-}lI4+pm3S=kA-`o_)LaZr}Rw4?ctx&fKx}kw>>be6zd!NxkMB${Ade-~H4+ zw|j?sZ2M!o_rAwH^0@Q*p4_)}@4ogrsH$0<5ca3Y*_2ob5dh*VZ zVU}|pv~@}N)1OKupF`5thXu4yxBdv`@(cHh_Ti_1+ORABev{Ot<)eIeFs_t9VDjqtZ~66f)iK0nutbKPt^ zS6%-%$#*($=x19S|4;N2$3NTne`;Xg+1&nz)W+5Skc@rxZEYHoL+}2L1&8<5tHWRZ zbkA46*#Ff%Tleki-TBDAT~BRW{m|~mu6^&;J-Z&+yZf4b+aKEX`0ht{?|fwYlh^Lq zyL;d6ZBOmEcKiOVkL`IBl%2b;-LdtlNB2G1_t@@-Uy*$8;KSRW-u~#7y?qaF-xF%s zxqJ7{N4H=5)KiZ<-23#J)ifN>G<~MD6dh1;q@45F$97ESXzUH07yY7DT&iC#e ze(!tMjO^Td)vh<~-FE$r+poImx;ut$i8b!sx^3Gd`yPAZ+O3a0v1jO}HP`IiP0eeD zRP~!5*z@@HTb>+wbmY#5wm)?DWB1%~+rFJQKK8^DL-#+v@v8UUvG=;C-uu+Mc09Oi z!@HYQ&*-k+r%}V|8)^QHH{QAa_J^Lj=e`FYzJK@r(R=rAyZ-w(KXUi&JJ&yT-@6`s zba?;TJKwwi-FLqCw%d36I>ZaupFO(u@tv!8@7u%b0<2}3fJv6-M@w=aR*N(UB9DV5FksbSX+^}osEq&XbdgRfEd#{lU zy|(?9?fbVI5naCro438U?0m>bJ0IHd=+>Q2-m(%q{9CShle^~8mA>etUo_^@bTQGnNZ1vvlPd~!_>@7EKTeof7P3yPbxOVMB z>vpW$dc#d?w{0J~Va<&<3~k%7W8Fh**REN2)0&4K4rIBxy=Cpt+Uu?vy78JdYaST7 z;pVm1-F)5pw+1|L-Xl96+5Ye?`}RJyz3v8_0)Uk zFTUWyi!Xl7ip#E$CrK(@J?AZ5e!*)malCnT**#QKt@ZTIUvwTqWAT!u%eRT@c?*{G zzxJ|KtFK*q{rdGc|2%26dG+4jzWECpOO~F0{ssM?6uxS;I&UEamtJr||HZHUW6~;> zYPGAo2TBnZF8Xuf>#8Bln^*5cO^wDkNfS~xjKm4gqD2k;y+;aHyCgthK3A4XwbtED zT?-a2Ub6iBm9pAYsw$3JQ2lknC$w%h8f{s8r>9lBdKN50SdQ@aLblt7p6#SnVcWc( zh374S1D2nE{tqjkw1l?M_{{W)fwlVl1q&AZxYq}Z$pV%0dOlE+Rq_#$g`hT##M;lP zK51}O*y_EXAg#N*j^1c2UQA=oKmSvr5AI^i=+gxY8}i&0-3*8J^??Kzo+2M>z<*dbAtDJw0y{8eAZq0aCqQ|9;WOhQO&b z55zH*rGcykqj3I$$Aqt|1|gzw+2X~S%CZ7>20T{p{ZZuu)53)q;7gWWaM8uTEc##s z86eH@n?j=(M0#EwuKjJ&bTGriOO`IX=rx!87tyDFp*&{9g0Fg6G)^4|-+WDI+8uDh zBFvFx-Q3_*>V535MVttY#^Up3!z%jdeHlp?>n0X1fw|FT6X61z!K1iBWOUVVCo6Fv*H2CAZ#h3`^Ux08xXsizduCK9pdH;nMeV8v!HaI{=LQdc>guLG^a|WCNE+JJgML`J=)9$zt+&WVkfR<%s9cPh`Jl*h zuCePN3m@(fJ}hGOK2!_8Vv+bEp~*nwI6zU~{0Y)9&@e`+4-Gl5@gdPy%ngpYpA#A& z8KRtW3l{#W=%X-}H8>TrOMXZ6am>pAXQLbcfwWrBd~`0SFo)ZcFN-Xi%!$R(j5+g{ zq;V#2-XpLF{!aMd7L0FrhLtRm=M}41YZf-(lVumb=8{V;z1%K7a4z()LzXPPNoX=< zppqRpulF9(&Xe`0%d_n(bgb(u)JtT7rzCI~5_IeGq$|^Sh&yqRPSpFkQo7W>vTZTj41^q{aR^`a(?OU*T*#-R`J^oe z?XN^1h8l-0{E4Mwc^4ny)kCr$37Eq|tDxfZ`ui^)yz?5Nzu3d6-FDH4DlnM1*vf@hod@h7S$i)cp9~FDEn{Kn@*$zgbdin(Ywzn-Uj-9b zdY9w%b}tJLa<<9>aJTTWGdWB#8DP`*3m-^a@Im16r0;6T*uaX#L)X&te^~X&B$R0m z_Cr>Or^29~ACo%7YSx3$-90I^VDLfq2x(#%P38)^XwffwJ~VGXX`k9hkvF0!MoXTpid(V79XdFab+Q5ln^QS7y=CbQBXBvzDr_f}Oi!t0=e1kL& zZq_3DdV0RCd|C(eQA0N`HlmN{W^n_Caa}I$s^{rN&bJ0>Y_Ff@T%-Dhrp`kxP+0H1 zOk`E1uV~&XrD4t1_Ht(4NSf6uUYHBq`YLF5W6MwrpO#f91fy zz~xsA{+Q}xOY-pJq(xyynv6Bhoz$6@+9BHbfQu%N}qb=mGO({)K zaW#@(D)@3M=R%{>kBTgGvq#V;Ji7imX}S=L_qa{^l+tK2I!Nd6=RJ*MTL)m@{4WZP zdqMgAAz0#YmaMPRmGtFL*QG+B-cJ@ti3Ba;RwTuK^bx_cI2Z-x~Xd!$uD^V zPxtozGvVV=N`|zoZ0}cDop7AN@c++vJ~oUV;B@*0(Wf9-ThlC zi-Mw`PUNz}Ed0Oi`A`E4<|@0=W-pP3 zVSwSO!yY5Qwm`fTa8;{4q^Sw)N9nqT@CmQ>F+8?RW#M^tnT87kK92f%*kfFweApgv zA1|SCgXhEHg40sw@J7<$A87LS_4d9g*XQfTF5>~x=oIt?r!YeO9ZDKh|G-2 z$cU&|BxM11VQBW@6b<-*!R{J^4aN*z-GJG8pn3tbd1%%#;BJapJUwPBz+hmEdp_Ua z@7@<7QJ%w`@tos76i3SU?(g08cYpV{-uoVvSt+fBO64aV7E1Gg>HO(QeUz4DER}yT z)<g#eKxybL{{soU;7$uwxD~4IZZgf z&x#u`{0T-(wR(?WOoX&B*>116`|j5*3pT4ENt>4m^2%3#k>$fbA*0VU<-6|MxB3Eq z05Roqt#%mdgC?bEN(VXewSpP;YibUtrsc)YJYKmNC{@F%g#LQ|Ee*cgVjX-NQ8NP z($ zi4imy%a0pa!uWM5+y;$G#n)-6(b;?J(6U^uHpCwojWD)*0 z%O@P^C)QgmeO}gv)hG5=I%P1BqP}Ptu--3l7;Q3Z{3Q2Qy{vWFM_Vdi&gzR;nVr2d z4GZ&fHNtFuZ0YC!w!wVLj9KyLiI7jyPJBea-B?x#Q77r*K?d{k^fNyYjA7U)$RiH* zC6yvg7FjFjkPk`A7#B||qKjbhF zZ3T@J{e;&?ZIRe!WSoK$&u3G(7%ct7ZX=BjU-}bUbrG^3w$4`g) zoZ>zI?|XeJDP2SU>{r^xN{vcnApVSMSJP%o}0Wj4O%Z4MJn0F-L>%2z)im{EoZ zoF4L9@{O7{HX9#I`wKmvI^lKzn0drtCIpc>CInvbq?h$^2wzO*Q^{r*v`FXrXh zb5_2(jcmlIk19bK$ z4MtUA6k6*a5A_KYfB$k)R%WK!DE*RPpjl-^Yw}9J=rC_k%$$6mwz8T@8jNYjrQ0yFIE`;|iI1!5KtF>1N=G{{l?f1GYAJ6!y z`PbhD6FkBUGg=`0K5Hsp?Dm_dU@E76y~SY4AvDh0|L`T_wJ&F0rtJSSY{J+6RxInCF_-hQV7KA#-7z1J z;_ts+nB(W-%k=rbZdjUzSF(WOFvl#sjh7k6|GzMA`{9>q_rDyBHdwKnSsP)z0IwL# zY1FwvF87#VCd?;{ZQEcHj>hh!ZWNz1n0SFPS!06zP@flvNg_hOG~}abkX*&$S6IG? zc<;|w#eSgT(vnDHqoD*Ba5?+f{+JM(RV8DH}5h_C%a%cs(?ND7NR{gY5uEhvv_ z{eI79WDv%Z`;gUVc%ignj(6SlanI+-q<@mazhL=<04fszTkqEeGi%@4H2>lMZe>-} z+f=?kva-M=Wu(&J8u%;Ar?FVuLRl`=CU4SaWXmyvkLZ;KGYmu@Ozo&|2B&2?%vEE# ze2>E@9qOa`djrg7O|pmIX@dz>uGA>h`GtZBPa0KK7`W>dk2_4m)o7*IRrU-9@`VFA z>QQ3Gf>}>oKI!k%A)ifcP8N2h`d-2KSqHt7xv%xInjQVrz2f^qK4rBTrnPS|n6+y2 zOJ~aO_k0Xit#}pRC76b<`rNBk`TndvZ&}$tn8DN||NTv2KVW68RT}l*58qOswKMx+ z!Gu#EmX^od&&7Pwpfw-N-LHiD)MurI)K7Uno5+BJnHOW(&|kIkJGa5~=zkH+aKL1S zpvZqPnDkEeEm)-TuDeR%y<3`1?@O_CL@??VNGKIKydl8Uo~;>3?rnlmU07;bZsm7a zeGJ$};mYm11hdMlK21sKT*#-DL~uu>TUj@lH4P0yY50d86D-4k_veX_&vH6$i*3s% z+Hiu_eu%>?A2R@0jeL2`r*1o%tKVQSt4PZfug~1vcUako0Fh*&@Q)|;(JB9ZXMhPW z@%K+&CSQapkKqrzey{RbA;Z0`x*wW`X+rq@SZpH@fl&StgT)rT){h04Wdl{3yq^hW zLqpc~zl!zI6)kq~Q2KSjtZP=#%Km07>s1+%e=6p~En-XzgniobS=G#@7)7!8QY;(r zB>C_sp3gfS#`32jA3%qY@6SVh;+!;Mp5<9P@DlQb0T%oajI4W2j|q$UcrYeI?aa)P z01Lwtn<>0TFzbmc)*`{92BUJVR;vwu>iL99!Pv%9tDUy`)Coh3I$1d@7`C}BaP8oG z#j9TZs9;B4%~m$Oo8}E~)Nf>Ep+~T3lS}C@5zNOQFrCkTndi$oskYu5%1&e9t3p0t z)<@O(^)a6^+6vC)p3Pv6e*OK%P?km<6~Nv%1ruCPzUi;Ql4Js#^ycsXwS4L9w+SXx zP5r*z^0Dbj6cm2nWia)ME<0lK|7@y0JyA>F7hsMqn}FF5ILxwyKQkY^y(|wt6w7*F z4A=i+l24V{q=cSE@mP&u@`JB>3f3U3ocuRer{jY9;Q8#`1%oNOUBe$gv1+&C8F33#muYAM~ z3Y#?t_F=m4*f&}})vci!@(XXxV1fgNw2xU?4N6({o1Ojq>3jn4J09|RIqGBKoH3Z~ zH!~h9yLQE3UY7|Oq9T{AJ`*1{el7mTLq4rb0VNrp6wLR{K|#i~=WbX&^)LR?^zg62 zlEh#$6rTG1o!jzhn!ijibx*@*6ygbA9r9`X&Lv8vXD4OJ&5!)wY%t{#MhvONZ+BSO zSLKa=r@45dv}#=`zusVm0*F#8t5W$K!9pfM^t(5db;K%vE_ceyimo&;%lEEO z7IKmN1Xig$Wci$ejEcbX#i{yybcMoYD;tI?BBj#DvV38<^y_hlsS8??TK&~ME1UXe zR%z()gRx*jp3SUiw@~;JE34U}CsvyMdS2h80rG!MfLTr}S}Z;*m;jTZ%zo1?Wxb03 zEKD=R@U#FGIsM00AH(oL2vybZ7t9p_rET(l+}e-?2;bm<; z=$f2;wZh$G5~`vQ1lMy0qm(0GUCO^oFl98BXiTyECWF}u&N}&)SXK}PDrw~%A)n7A z3Krcy<1iQ1j7?Mg-v-#E+cPsufx$*`1V*wAW!=k4OJr0Su&m66U|p&IkOi<)alTYHS75d6d7he8%FWU_$kC3v>3eX00P8oG6G62)tP^^^fBRM_&E< zH-Gj$pZAW9_)=#c#ovE97;J&xX4VFi&L(F49-qLhlcMKl1`{!8;_~_S1QxrOJ}H=S z9FPDF$f@wff{D;%d1#k48}Xj?d@}Y8Di-*U0*t!dh++-?bHT#Thz;ucfaeo`fJ;&( zc>ajzqie#o@y^oE#j=80cPf=%bC^{nO49QB&5$qDFT~`2JLdB&nyTWzo#eBUTA9C> z`v> zF)(AL;B;>8F~O*D`uDiy1EPtgbNbaipPE*m1uE>uvJ6yfoL{jUVNMnT6|WmiEs!z% z4nuv`die8nmT%IVFMgSPe*>6x^Gm17T8;Gl8NrOM)Lkw9QswJBAKlZiY&jLb$?~}n zup#s3Tc+xZ{Wh3}<;>ma{{54DK4hr#pH5&}pZ5FSX;_$oe{L|xvPedl{b02D57I4-BS~nlu;ke-_HxaH&n` z`HWz*1;M-k|<5X&l4gM8~UN_r^CLT^B4@0P>30knQMEj%q$7 zmd11tOwGMKV^fqyuG31n@*-(b2|lbqfmw*I_e0K|yJOZdI= z)&`?FnFg61)v=0{04`q zupE8bviO>R8er<5M2LRhZ!nN6yz^5Jf52dLFM{azkHoSXtr^M-cm14TxBaGJhBE&A z{B%CUe7^Ln0VeD_J1LhxndK8|=n^CPw+5S-W$O3udp?nb|LEsSSy`JZ;Ip%T>Sb+$ zwUT6qq;I0bQdl*3mow#xVA;=mU9)^~1m2%{%g3Zq6@?|KYp-{hXvn5lSbeLNjTqG^ zDwTIwK5NAKqosY)Vb+Lsm?}vi`oT~(PO$Lx;YocN z_+tjM`U2?}3O_5D&6=tc{z|1^^0HYusr|oYFvpa4C!hbFP&V*lD##Z;?Pb-7PY1~V zW6S5Lvf{PzG(Jt&*#%7aSrTy zENjRzlcVyCV7ImVbyM|8>C!;H*~%JC(mSWg_gg-jHp9N)-);GcL(+ya%-Ne{te`NW@ivcMXg8`VnS>uscjbXqa z1U@2|+EeAuWAd-HdtbFYBQe%GC+XF*Q@Dv;<@4C@x`sem3_@J)f3b{LMZi z7^s^5eR;^IF6&4B*{{3}Cj5R)tj{Yn)%ty*K5+sR0#ic1)AJebL@*-g@3VZWS;#^h z;lKWHC_8~1x$A$jvW@~@u7$#{dVSux@b?y&9~UZqGSoLcwijbr#~^(!6h9qd8mqd* z4F0~soDOJL^HKWKm``A{FiWMsiZJVk;W3vURl;iW`K7+1U;-Jh6Tjn40|6E@X|2D; zV45DI3}~ZR{4BvVNd^)H7mJ@`Fw_rq%%u6;{QZK_0O$n-F>@B+ykKa4wYy&X#^WN@fU6>{Z`w`DjCyy(@OF`>4Ta zWD534FUxeBv1>})pBT(}MznUzZ%M2T&nK<*6|Z`eV8Rp#u^;38Y{72(y$me8ev%#}X**3Xr|DXfZYSx@Bps#c*(4n& zX+22~lXN#p_tSJUP0yw2N}6t@>BDJyAxWQ3)1@?hG)>==q)(62bvNoLy3bY=_KqxbRu6#wr}XO_sn zI^b+kg8$UJLmhSQ>nGEhjpbx!*r(10`GIxRE`8Ynw$1+mumP}L z`nXGahkgup=`a5WBd+=nY@cT%+8UAW(eFO6uKK&dGxdiydjrNo-F5Qp*Lg<&FVeS% zD0lr7|4;L5C!M)KxeJH%nQ^W>McM0&Yee4T{0BD|>CXXWZt{PJx(3wQr=R`%`Tqd_ zdETe4{(by^C*z^-9qv2eXnm7@ZG#u`?~!k>!~bS7+oF$>FjEk%)`TBI=gu|B+Fqx zon7xV)7iDwjbygjruzO4$)#rM5lu}^E=Ryun@H9rjf%%0V-mg{umVym0X_I60VyG3j3 zV`?7NcWJl9U4Jx4XEy}vw`pT-e4r*tc3WiGsx#h!k~?E+*&forZDC_jrw7CFHpLpi z4(d1g!+g*7dmyK;`g+?>GSmk7`aQDLh2l|XSeiXxK4yn)YHrkdu%|z*-VSJL@rN%@ z@>IRrY(1qv4Pm#(V8*~M)o+5e)^)JKN|?Q1e}tSz>Kz`88Skcs&=n%q^k=JgikkJ{ z($*CXMsqZxFMKbQ!E7@GzTwJUn`GmF-Z$IV8O#_G7_@{9$b~+1XwALfbr7^u)6DHSsnwc@Pu>50?)x$h)c z+W{|I_DAHnG&}{&|D2{okMXv;wAK{CHH4CZdb*+6>elJ*8jE(ef8sv!)> zVUin;pqE^)+W^9H1hO+|k>@;L3*-J^v}}JLw!fQ6uH9vta{bPjoKLp~J?;lkNN%&$ zQj7LiUy-F|?$aFWlGZm`gM&18u~!GOc>_e|M%JG$Um7MSJx_A_h*_Fr*7&<-@OF2n zN6!!Yt&+w9oK_g!<_P5EHV?s_S^=`&XN`qCSL^EG4gRV{R%>o(IrS|t;CssXwBv!# z+@`sQdeC+5O1FJ8&Aq2p=l+WfKTV#hS6#-~6;Gf}!>3_vzYWdi^wnW{NX=<(*?NAq z*F04J)o#Dn>m<3o_U;}vFkbq+w0RNyw_$I&Mz2dx^u=ZHZ~Y&N0p>vGb!xVH&ckTb z!y#oidISER6QSiU3o8yXYdEylFSdqI+WE0C-=Y=T75~b?OZj`2@q!1# z(q%@W`C^^suC%-KoYhJzZAhG%^1pP5@iwjx=;4@^pQ~@f5154u5b4U2;Dajul((ZDi|+)Hu|~P7UeTWo_5+@=7?{< z?IgL~p4#2*!O@wQrZ71`@aA9(wA-l<`3rxtQo28=4=FopcMqYiMjgEM$3yx#XzkE? z*J|jB|K<=i^qIf(8P58Y&AVo~uGSl4KyAPd6dgYev@236zB37=b6t?%b>k$% zQHv3Q8Sqb^881BjDziW8L3IZ|l1F!H_tN}%*zsPPzuZD`Nb^?*Z8%pRL95hRSky4dLlq1=kCYzsOluclqt4_c zd2z-;nnwpiwC1n2n{+*Y!)xiZ4r(Q zbm`sba?vxg2uPh0Gv)lHF`^{Ri;E9IfxeHOA?U)mXI zv{Z)HmOuB@7{x`cZ*HY|;?7@v07@X~rUugDH z{YjzjQX6tk^3B%4Sa{K_sJrzpS*U|`0I+w16hgVfP_$NQ0j*J0bJ+rC$M_^DBa#Fr z=Squ@gj02EuuB0kGq5YU!=-i5A01M4M~fwo>bS~fb+`ue&NDm>^sgZBbopc(aXi)lj7fnMFX|J&1{5nr?RhsP$P^oRgkt&+^`@jU3)2HY)*E7^P=7X^e+DT)e3%~|C6J4rr zx0pD=sO-RWynMIW8x2c&)LAV`R`GyEvg&nqO^`yu{k1hwa{ua8dRAu?YKWBpO*nbO z8qZP=K7r1V?`Z7mnM|vE*A!;DWUZrtjX`94czJV)T3F2Ry7qP1efhl>WzU^ z#r$%wg?wS9VvVY2)G1ONA1F1Hp#cr@VP+~rHNKYSx5Nz6yi~etNgnxzMaUe)yK z9;m?e(_>+f=^wVrd2F@oqEEkIX*rU+b{U>Ld5TViEPH%MSme!gFsUfsAaeTN|F@sO^za2Cpf6jQBt=h5z6D(!jEAGM^pp8#sf&I`a?0r%)9`81QgrTPyrX@pU>)@_$$dR7VWSnW z2gT0|2S)eM-J$s?3Vb=d(;RO6;k@-@cH&wok zYXn;i`WVXED?m28s=w8szmcm$Q?2RQQ3gbTQ(~fCf zYf0fLw>%1?w$CRz9BMN2V5*n;B^8XTt7+sz$)TRcAqpE;%w5Tw!u7fqep-0++BJDT z)h}5Qh5n$|!1ga(Zw`B#8-7LMDqKS=LOm^9!zU{KVxnI4$`In(?mi?hLZQ_ij?n}Q zjJ|_@h&&P>EEPIC<^?F=j_nIy$O-BHg&njr`gM1p-*7$tx{wanBd_;#KU|*)*H1+F z8~phT;dz7(!6@*!KT%V*vk%7^Ro;hG!`<-+xaa6R&t zP%d1Lyfu^$*W+*V^pVf@>vQ3H{Bt~wT&^Fq(H{!(wMj0VH9pTeMje%Wd)Tf=+GXb( zPx^JE=U3zkTnAMHKGcAOG#`E)+)zcNkpeizMQ`%_AfKcs&~C#lOI>AJ>MGl^uwjBH zEnJoSx&B~1tjl-!)%60cGcCJ#)p}F<^r?+MyUY7o*s*bGy)DU-DGYmBSk#YvJHMiJ zvFr2=ouHEQ+~p+7@lIR%3swf26zfo?A@vViTg%WTs|>j-x~+FsH_8S15L<%>fBZGp z?h_yO>$AM*Q1kgLFE`Zn`H%SZg^&96#ozPm(LeC(OX2$9AA0)Pm;5TamTD&c?$>jc ze*R6b^>McE_Gj7-|7C-%FOCtMOOn-O9nA z5BgGu8Q1konio9v^3#h?TY1!PTX$$VCjZgO6c#DKZ9p{F)=)}n0k5|AquU^S!Fp}? z_e`HaKD5DSqtm7$_(#1#z9(M&b{oe_ukq^(ul4KmuM6KKp<8_4!ZxH7%?gAKu8n)$$)Ng=@{P&`HoI&zgK8 z|9B+ppn$h~MChe(_D~*C_2+7HZJo8c42a^9a z>J8GbHNWONxW;-~UXj1GfESFI6Z)MoI{0O{nm=H8^!~*9P0-J-(zk}=4*10AHN3XE z_3cjUNYLk>zdx?`a}NIkFZX=7K6@dg!}X2etlXmJg4- z>!{Ut^b7p@;P3j?h6^7Wus_!VOqz4qwUcUrqg9`)<9;o5(Xryu;H@cglGz2?{BPlV@nziw>%_4$Th zkGA~!+{gS1UpVNqlwL}m4vx-7dcZ11yD%ci6aS=UCw1{n6Tp16< zWYgm6&N=e{7uR~0D=j)(BlG1}zjLS|U&gnI8(RZ39fF#(CL~JGmu*d-|= zt|-;ZZrmC=1IC6BANqc=-=m{KI10LuW;a_3dlvhH_I0h@;%;jsV-`res~eCh%0LY$ zUUt6@O$-h#pk1U*mLm1gXYhGlsDp^{Z4})W1$81wtO2H=-j#Z2H&+Z}BBTz13{j?W z1`P+vt+9JoMSixL?8Zw0F|jA2wTP>36m+HYjvso+(l#U@5-$^LEf>m= zoh=R^0hhE?CZC-Ho8>{{yo}8vj(w~@Xan!rV1yawH`ryx_RvV3QUni|uo#PkR~58m zb_lZo$!Y7$w|)-NvDl0>-|7b9mv}=pWD4*;$v`a1l`ajj$lTtLBOE@~k&{SFX4qGx ziJC{}75lX&8X75+%As)0v1?OB9s6x{V}y+75F4N`qLi~Q;}S56Gd!|9EMdbK9{-}E2inbI zBXy3w+gnx~n<*Id@MD0(USEL$`orFVz|{{JEJJpC*69ZegwD$oXLSXFK~URTl3xQ>>`X8qT`wH^j!pqv}oVwh=O&ow9T2 zMvq81U1iDPKr9|(N6{i1+r+H8wyY$-tQ6F%)dUg-jU{}}+?Z8Gf81>1M#OA_YzSFW z0LTE>(9((;ZNqt(IN4S*w(RE03OBUr-9Y&5Dgv*Sa+R2cILWFkKa))gQ~UC?Jm?6{ zH*8XjC)l(zJI+NlO>|xk>WR!{)k_wr3HZEj_ApXl0hA&)+8K!I^+wA}bi-&xyhZje zny@A=+=whMu{DT#y3Mm{0%XEfsIc3*u`F**vB6&i1AQKEoBvh3&L8d7ueXS}*bF+P z9eL&+i{0cYXt{Sh5J9#^&X(B{y?kVQxT(^0V{THC_pwDs?XT!y4 z5_YAvQ%4b!WW=0VXQd!3&G0O)c9%tELikzMClYoQW~``W5sYmsT5LjLSNJ&(o^Zz? zA{{M^Vi+<*@V2i<{26jSMd$4X&PMzT8^9*lta6I4ZEBMg_&FRptJHoRRnJuR3H~Q5y-VbIrEqpkz##8KRVF*R)Q2Z?$=o z8#?0yybkS4125hnpi945AcUH2T${uY*rY%Y>s{S2WRyB22b|5PTUvqQ0bZd*7_(FF z_zg`+NLgD_2H;u{zp<3zUVCS>+ARxXXa^FA_@$-L7PaZdh|M)zY97RuOX$yx{G#;4 z%|p0fM@$_qQG(ua*Fg#;@s#r@-$_X|Nlkayo1BpxnHS*gYRPfGkT-8Ly%yqy(Xa+pH+rIw*Wu4K9s^$C-R zNL;^Z>AW18+7((lcT>tM3Udk0*cu?`xZAnHBGG(c8ZchAE0kpNv{81{E91{i;ndV# zaM11HPm+tJ#HJkufq1Izaa%S=!@cpSiNlT(uCrds?uP2Asixd*-4r3=cq&PlYwaW@ z@k7ZTMoF_$66qB>H5{J)T|i}(kIC+g4cXm!<4Yy&$uI|rM&84vFrYpbhdH%N7FUAev=cp1Y+sgxBUPR5!} zO4__A6@oj6-c-O+zu~rwD1vIWucIU*$&|>F^h*oCl%(F8^f%Zl#$l+LW}r@1gs*d9 z++40DSg`h3&;!h>;TDv~Tz1$pAdXfd0EBwP_Q4WDq1E5jI`3k=J}nkjvZx00&eMLY zfxbYmz;hoNz#S^7;gt2Oy+0Sc?9I`6ZR{waIYMB&t(M*N?VU9EZH=&VyaOaCcR0QGU_C5Gc>Zx^jY zqeQop`fK$$KVYRubW=hc(_tPq!KyBykt1r*Fpbt6;|HeTaI&E^+6$T_cxiXL#@BWj z^;HFXOIpM=YM@7uc)7snZg z-<^Ob$`mpB3zj_NK(*Hf7G~yP6Sob*oH-id54Jna+l3z5c&Xj&v^3sQsnH)(M02U9 zn+QDGI2;Dpb5PR*1=ue1B!v{hUEPRxmmZCG zYnzNMNEgwc=Zklj9*uX(2e-BQgoDVbrPxcdi6Yt~+oI|iGRe;VkiC1iapskd@plp7 z#k}c`J@}Fz*D*73G3)N476H^W?tq%BSMAQX)*)S@#D>4%uR6JgHo|_u1KQRM%3#M_ zko22yTiOzLL{)0T38>k^97{OmO2IIs-8OPiL5sAsj@8x;z8@7Q69JF^@ zBd8c04EO1Qcs4jNIZe%MJZ;IED2-*#ZEU_9+Z5!Q1@aFJ`3nchW{|tp9qqz1nHS399mKStK9krAE|+jpOTf?rV77nDV7`;9 zgg6P(lpu~9F{N{Ku8Et7xg6tMk{MGv27_7bw)emqM!D7&Yq~w!Gjm0BYKnPU0x3k% zFbs{dEo`Vcf;VB(Ax&Y4#wW4zOqGBlP}a@eZnDueJP0@RiaQY{S}u11FK7UPgSewx zk{$6&tKyTuLb97tCGo#DCkJ%Zpw62ue6fwAWP{6fiUljCZlU~h0P&EGDobfaJSpLchuXL z{)gY$EF-Oes8dT99kE-?R;ct-G*D>VG=&lpwjminPl;0YI@)qYEjLb{y#M5VfaIb!+iSg@c)&Jt zu*zV{rg=#8ZJWL!Luf@?PvP0z$#qteugSF$@&p-$5`%d}pUX?vQ3%aIFPqp9-c!Go zmY0?#Ae=tz)=9K1F(&zXrc`zh2BuD0-h!?72DnbBSDUI$ERgq<=S|8cAyiwq^(Nr> zjkb9>${5oD|K&l;wt~VQfMWcc%rC=leL*K>!VH)}q>^&5lQ`W`#!!ki7#~;MIV~GC zpVI*q`rFuRX(^@U3%%_S&epA)oM~Bt;ZnQ7frxO6>`uxX>GORWZ3+QS3Oi!V&}Q28N30i$hv6A8nF_g!yskR`i4nU-Nf1O`we zz~o>Tr#i9jw2VQ88Y!1Q^_pd)hNY+swSO2WgRQd@nF(0MY(~s!Hq9b4QYl9Rb(oYP zFI$MSyq@c8@siQ@a3{JybHDgwoK@N zO&O9(W%d$};Ycjha)>EtV&NZn?!=_Z>@N#ZgR=AuhK$#+42v5>z4!>IVHC_iCg4P* zsAG@4b8`DYyp<)kta(n$GSu9TD`U}V&9V#Apl-k0yW~+! zZWRguwIXoDBixnAYIiStAb{m0YkmXoPPuH=i({$3_s12mIwbE{Tb(ot@dS+1c#Cx! zZ&7Q?GR=%&%4PJ6Ro^jH)~PJ>5hi7`>|_E#8kv<>9?_;apn9f^e%s&Q6-!0z(qEZC zLuIfH|K>^8fCi(B(&!-C)h@+Ea(1pjO@JNk*=K+1Sx_xM#g4StvTVR}w*4RMSP;&N z(RG}XA`Ll0Y)OGLNUW)iEaBD;6P869wtd==I&f%~n)a3Qa&)QV1&pa-ug3(+(qSLn&dznhYaPG^=yO z6hx`qLW7PdS*N03k62(W##;>PGT5v4#h|^|@FBKNQm+R!lp)-zn33m2>x1e-EN1`ZK&lULPr$Wy7yo-Vn^Xxw$E3^$s_&1j`4;GVFG@af!f= z-HzCJ)e%}lUb6wq2K8Gr49!L?i>_S6g5Q%uugKocRcwwpn+^1Yftibqdh;4)@HN;g z&{JWCmZV6@l>jrJ+%8XU&qv=OQW`v%&<+CI>=ucc6z*_$ zyDEWsh(YHH##T?a@5WETrXx-#fQQFbkf07Ce=stYOwvi_-R9*-;_cR>TOybMjkgAE za%=|<)7VeTEAdw1tKPY^p-2vz!U_qywNZ$~lQKrx=$u8)%Vy{)qQktk3{gS}iex8f zK@3yq)5NkmSZ(Z-0wo-zHaaTCP?A&3~S4?3=#l|vwB3GBE{ zr(lj(rlX4p2^}oaTxb-bGE^V)YTGh(zK(vN{#u-9m9C@i+6E;mL)GxsP&-&^_=!0_ zO5SdBiO8IaDHf$Di3FAG%1bNvD}(kI+O0$73J6fUg`OJtc~MHs2)bDBwpiQ%n-P@U zy#M$Ei|cF_X0<4O!7W69dFor|%A2uaQJ;2gSurGopJ@<1oN?$i-1> z8LP6aLz}o2_UM_J$4<27!!QE?79V5)SnoEMQPdC65i#eYScK%n_TPRF{pGOnqUq&+ z>op(|w|ZMB+aZIg>)@f)z1SNL8Rn+^emiX!5~F(|;5MAgw~Oml2iYxRk?A*!jmnlF z3=2wf%h6DCg&W!9`IL8t!5i0>2qmV6UMYWa`50#Vu)g@TEy(q*o!Kc*&{ry>YmWRR zPx)AMUx2gATc!dJOJz1jF8dxxSY}3CL9fv$Ob@d-W0@VOt)?S27>D8-;g&N)@m35Z zKu^Ki!maTV+s?_(Gu9A>dRRlp>cj4d#Vz&~n(irc5=u1-4jBh_IDQ!-faRs3ncnL= z)T_Xw!h!H8RFa_Y_*BY5ENfx9v1qq$Eiww^%8E|XmTi}r-)dtj*>Md-Wm@%K=w(fW zts!`#=nl|!bK@+OdNyPzmsb>-&?yLIfOaiz!0kmjx^VKKuWN4@Hl*|@wtbzrxq+I$ zqmxdoXjZr4#FrImp$`gzNJpU<+-PZYd381LNsTq!iu%H>#!AE5?d4EbR-|gU=diVg zo}z_=>sD4SgLi#hvisO$_nk2E3YvmAxGS7?bU3J?8e6!%q+{p^%T}KyCBZ6DXM(~R zUbsccc`7I)(b{BUxxHxH50eTFM^%@5R`-};oJlL{fcHMFT(~3payekzuiMeA3VJnK0fvy&QTHUWQ!IDV2hy7|9QID;7+Px>K@Ddr!Pq^Vo zeLEej+N84E>qYCbf|b7?(>b zE)tCxLLQ0Uw4(SO+oL%SmR4l=o+V~XWS0J%nVJh9y81w$gL-fGQ+ZAYOCJ1>$L;3g zl`F9HN@n8@(@HRi75}Ti*Lr>&i1|eW06*gJ8gCo#1B*Vbz^gflHj*!~0$WC@z+z-B zkiFqPt(Xeq8n^XX=)}mV*ajO20uvVcIp~eF^P9PL%gf?X70s<%p5O|FMCK+QGu>;4 z8(jiF7GIR_J*}9*xxrf)z}wc%%lOJo*`=Pwb*y$|TVnUYa-*M!6^}|*(2cw9M@lR5 zMYaY$7veWK53HY9o56GkhnS`eQrp)nf&YrfL(iHd*=yu!_ZDsZj8XSmC+Y)vu+!yI z2j{lu(406Gwo>5b0ELt_^Ay#Jv)~oup~Rxt7+GPRfi<(_Djr)fyO43IZfTX8_Xh&q z(ym#YG6Iu|ANMkaq%!2iEmAZQ8b<$qAM=|wNxNh8IFsg`F~X$@Fz`Nv@-1WZs3@#pjs8o3g!M9%qG)(d zDv)Qec}o>%GmanQQP3M=xPrJ0Qc3tZIkhfqh4=AHLVL~~e7uiayi;YRXDA9PxD4K4 zbyp60&2jKiR@~$@^S8na5_UOTte2fs{79A=weSt!hqnmLWcLSC_t1|Y!8$7=tz!0^ z*)^&MD%&@^v!b9}YvA{uM;l4BF1VQK$#@YUoA{N`Mk;!>387h*rQcf?)~w;sIli~$ z5fNy~cF&Rx+Q5!d1Po1(HKOBM+C*2XATRgPWZ6bWyW(}WX@WWrha5>Xv$|pt%25A- z8OwIOi~gW_AHT|e1ocNYubDhro9OO-??=8+)95pE%35EMYXRPl<_Qf5KSYPrDnkQr z&?IY^4MrM!3sapGxW!77dqsA2%&$mpMRq7_hGVe8t!(zD@nnmA4)KiBu41<=KpYK} zwWAyt^lBOShPHy5zq-QfUgD0>ie5j%eiigG%_DZm{@F3x;wxsn8q(<-M>K=^S}{9R zMlE$__vE+u=BmA$pu&;pF%c?>ZTh(yVw=#$2)n0Y5%S74XxzO<5&u_ZCsfRKH5G;X zz23Nkl;#Cd;85>d;H(^NMQ5<+-26r6SP>kvb|U-i*4KrD{r<#pw|$l0;i{+2<}O%^ z@n;kp$pW@#yPm*aL6Z^US7F<2B`gc=xT*M2kb4iB_p454IcTVrWAYa*KExl@f0a!; zwi6z{fr;4{pC^wSplf(uE5_FYkA>%~Ntm&J+w+i*NGxTM9_J-cy>HmJY!nPKYpZAX z;@R43gSG3j%#7er&k#>NJX}6-D2{m#eXyuYxIgc@4F@8-Y;|EH9eC~yWI(X-1l_<) zVdsHu#6q9f-z5&Y_Q4KWAO5fQr3)K2~ zU!>cx(T+vv{4khKmCWR&teeV`_0kQ%kh_3bcRKnh*1_5z!gysGYrV)p5rb zh>+jgTPx0KLr+>^#YJnb0`tG(WNb1$yT7XUML=1-9nIqnDY~q2=>wgHu`aDIIce1_ zYSUr0Mpow8+GgY|AlYx%MJkH@)&|73Vz6`1=8 zGp+*L^;2QO^P`#FURm3m+;8$?Ezd+Bh<=P(i%7k+;_;=X&5H+^{2tdKEL}z)w9)Gv zhJ68*&3Y%Zl>*HVhRCd826tY8mZ9z0T3<2h5!VO?ezsmvk;$Wd!;AWp!3T{~l4Wrn zsh-oBonm{HmhCkll-+OcEb0&A>bDLSjV*(Jy{#eYmP4s;;(_$j=D~F*LPY_td6C60 zMwayfKSo)!#JWNBfU9Hu{r1g8Uq@~SU0zuOPIML*tcBL3>%uOa#-RT}UAN@%`FHs8 zl-;yCT*vAap#)vXXofy050k@wE$M{XZDDqS{7fu%Ir@WqlpZTOx9|z^dDen&XOqXl z@6FGEERdS$P6^$gJ{9hDFw=B#+9Glt^nZA`{1QSHa7>5YmP9f4*g;`kh__7cyX{U^ zmYo{dH3&j*u6TFUCv9BTnAMZnr~9qLtK`-`UX3^0OMZbLj4^x^(7^HF4AcGnF|fw{ z1KGVIDL62Q?<q}pbD_5O z&0VeeW$nCEZg<+MhC^_Q*QHe}=M<$U?B7LA6-iXRDi76F(H$GndB78qtj^C3lWLIE zwhXFLkD~5R;`DKAl+IVzc(;oY6Pi#}M%KNqlF=xecd^w>H>>ipG8oGGfV$Hvh>m-Z zNw{K-cGRVU$rGnFHBTH<7#I$-$1s1oYO;bULvC66;;aXHk zoV-8UhSf)Sff$ZR#XiwM#WV0AmzIv*V z3I2|dz-*m7q0z>Eh$>f)1ta*x$umjS-qIG>Q#GjRTIESqZn&LR!9a6PeC#;KOhY-2i+2v?#^Z0b)gs|g8Y1l!%5g#xcl9go%3(i)ISx3-c`6h zCa3isj6xz*VfJTLHl+Jtc9Lp)XhdWl7;zU_re~N4bfYe1?DeO3_KB* zI_{sd!)n#o7b(ouu%jbzv9O;WE@s>%>YSGFsWUdHjn|P}S_4=h9$dWXOx9p9X%vo> z85WH6gvW`DlUvZp%uXZaXh#O-9SlaHSN8a2mMcBLR)pW$32Np?ZxXl{CV2vW;P#;6 zTw+{yD#;UQxN_O^#%!@p&t|q0(+Jm*r%_9j?dct?N%=a`D#1|Z)VD}g)wIk)*@!N3 z+<0^zl06AktIE{MC>L9lLK$pKZDg%NDh>0^^Ri9v4hpHxzJVQ!s(RntHwr2d_?`_9 zskBgK%XXpolkiHTs@sCLrzeFyDek(wwsh%SOfWpm%4#$*H?}TM5`=9h3594wZJ`1i zoFcN~y}Aaru2o{QfL^5edF*lRzh#-hykn>pzbS%6&SMNWRul;{n(VE8R4_>hRczk& z@Mxd|%)X1gU8u@pG#Bl~eb99XWS)n}^}ef?HpOEvvF7B@-PB7Ts9MffmsJ`Mnn|ph z4Ng;Cl@c&}^7%P?Zcv_v%B5NPV*+q?BAX(Zlu!^nK4JT4I6tH zgua+K8L;U4WVK4zsp#@Vhz~&^DS#sXcHcHwK$ZluQP&iqVdmK40-nVMn9~p-R+K~& z94u2NYn{aw37ct9|yQu?>xeg)Z|HgkYF1 z`Z9K%FBlS{#Cj)M6;(yS_ZB_O9V-w>Dx2?YWpz--jO=xLqo|hIeZj4hRvDspB*+-d z5^Gm3Ud%LNJq6c&?Qfn^Xf1N0k+wLdI*3aKO5B7$Xzw{?I?+n=#N>%=OP0+lnwxmM zn{T+_wSMHiaC5PG1#*gZq$PqO35hwmyF5kH7{U8xcW9Mx_Ac0%RYf@mF)>6#jL{NS zmf5;m3+e&;*O@(^IT~dT{vviF^MeQ#KSGsaO5nVB>#)n|sEIuGxq?6Vfls~Dj)K2S~Zt&7lyFxn1KS89rZD}-!et6DVmEI?SJ3i{?@<)mizT_E(d=0RFF89SqJD4Z;Xj-#<#vYp;D#cdg zkW!tGOXIXaZ(3WjBQ?0;;4?|h-6Ni&pO$Y+?#w}2d&GU6{tD_W)g}f(3r<01o}@L_ zE+<49d$z-)7R@qTu&uOq#ooIYWK_*0Ua-HCni*p(dVAwzZK)x*H0Q(=XjiWrh|!|~ zyLJzPA@8IX^ubmWH8-ur&c58s|etIy0p#&;&O z1DO@XIS1Vl`Zx+}!L-)2w~|`05#1S6(>mM)3$|6ZhF!ed%KGVclLELLnGy!wi-|}h zWx?0*w#}N94bhXFmyF2W1&iA8kk$yJu13k3)`EFwR-EQtr?G>zSBq-2I89nZ%qX;K z%#1nGJ_ja4bwX#hPuP4EYb8ds-;(Sj%0js-gu4hVp&lV6Ssi}xSj=gXa#~{Ti9*r* z(K>6|GO8p-#2#3(0I2R^o;AJ9Lo&~Tmo>Be6r)7+CN){SxP$r@wB(st(wm%MypYu3 zG|fXX2>5?e!?t3V_m=FjW>UkCUnisRBrYT4#l%vw?n%|tlrNIzj|t$}Uj zqi6JZaG4qvVggHS)m8nnbC|Ip({1&mK4~`{RDg*|&lHdhRtFpe{99!+89_MbNM>d#ErEo1yrLYfK57=eFR)fw&I2O`FovN8Nv94DQ z;|f_7Q|$Znl*=(xTp+drCc98w1~9KU{NN~73%R5yiFS3OVbdj>QC-A@(_lz3T9YIJ z6St&z<_1;J9g=gKNOixjya*AXT zm(05vFTtob4i+sv#tv_8_!%!o>(-qc6tSN%B`zLwCN%~8V0>shyat^*PfUzVaj;1U zq;~8{BIJuf%m6x^1%NNN8hph;dxNco%mzf_X}hgn zSdJcEo3i^DgTh}ZxPHvBhQp&jN!2_3uE_|FxKeIntx?V`LL*Q0Wnw<6FL<+g4T`^G zvgVpbtBDB%2g{5`=uTY!=DE1z7D-9#Faoqlf>X?`ctLP!Gb^@Tm&cM8QxjE)1JWeLCJ|Ux>?hAge6!@>aCvzXd8Wvxdi1xP)y^JHZEmWCZIVXVnJo6#fVf=ABp%Ka z*F_z)^kSZb+xU5pXT^K4R!Ry{p~UN~ACxT1#_W6A@JDVm&2 z0Ih6kUBSSzjljgX44wzq>!P`ZhAVe@%VK=4 zzijm`wsz}{seW1nfI4xd$6#H}``PM_4<0!I=IxLws;iEwN?Qvyt~h2NBZSlFEzPDV z64J=lm~pbW7g_X4P>ns;Xam%_`!s$BX_CUAry^f!nn6EceM*YL<2L0fwGg2=w1PUm zp}5BT)rcM<4$*W$i`GFykGnC*zJn&23C~?bjdhK7&b|*LzYXt^;b|}fuxoS_b}l zd}7MXn_HHqhnL?DOQv(Ic?+Vs!8R8Swvb%zVZVbsBG*Kk8_?*ftSKekpf*-)Wha)Go^J7JKzR%i?DiBqxBRH4CFPoP1y7kTg+utE zW<9)OGi9+EJKewlEvmC9wS@1y#-uBOS#m;kk54%Z z=U{EVbIwO(->qWw{=xuJj#+RP1f(iUT)t|7o^;M!gIx|Mm?=FM4Law6S&|k|gr}26 zlku%jix4SKG3K?Wa4{e@Cf|*D%>ZMP#kQMH`Yd#&b5YedmMDtVrrOBHM1(NfQQPg) zIUNER;(7?3T;;_(*~VD9fgLE{aabD1=$m6l+xF>3uz$=y&BC#lK_ak+Y%HBT)iF%|j>8AwErk~0Z(jH1P zmXo=DENK3sIm{Ne(0!5QCMGKD=$4v8pio?o$P0ZwdB1xZWed)kJnzC8bhu1UW7Nu? z68VNIn=-4|H86*}5((clcB-l(uDa}OSJ~6|-_Kr2Ip)qJbN(V8q@Z+r8p`&lLfOfj ztShrmrCw08PFi&~-~iGHV12{o-QK!0ZpIrTje9V^eUjLZWaDrVEHatv_NZIIRNDwY zH;R!+`(o8xG?`7XPxTphF70MR*tR6IFqjJjCQQzkFkXjU}#1 zA_z<&Hg74jkIpP5)|19YrjvAII(abGW|v3Y!OF54_r)599*CGTqm8XKJC1f%inf#n zW6Yo8UiTOxY{aa;*zUAp%GzhUsGaO0(j%S|6l})ti~_zPx4pk+A)}ltc-dGBBBY06 zAX8IzX3Bb;)5ZhNS`PQn?ZsqJY@9gOu*Bv(+z3x;%Z(>Ik8tMrQWF7hbntoYv2alv zL98*Krbq*{yQF0WY9g#=lXYQ9VriN>?E6*c(4#U3DBVESoql?u7v2OaNkXqs>4uB; z@iDb)GC=|)2;45~NVc37-PBX*d2}P#bEx5blTG8D3e9CARi39aXiy4ki=OReI&-$E zGdr9KVsXJqV|IB&Rqo{oiycKS^LiK|q0c@%=C$7JJ)G<7tl?H~35wu|AB>Shobga5 zt4u`JyVp%Do(5aX6=X!4mPRJpLT3D6DF0bmlE@Ysil&$CTbz?IHreJmhqf*efEST} zWcK9hP$n8P=(gI~_O3C;kQ8pDZ`A!MzDm7FK}lI2?C~Kph_wx#wrr(8XX{tsbZ)D6 z8TOQ^wdmO`e@8E?K>B3#mFt7GljJ7H8X&X!jfseViePdT>Tu8VrCs~^Y(goLS3PFL%)?6h%!4U*I>2fiId@!3aZaGTIGXI%=k zVU{LB&)ng3!`4t_Zct7Dzz>qS$^LiDI2uAj<~(qCdzi`YR`W8)nr?FF%|zSbiTjS< zzo>xeRPxf&GEWsQmnFjrXHpcIg=&ZQ%G@Kf1>f8|05%ZxZ1q96a^9{NMP}w4Ras`{ z(Ff?sbF$cN4WdV4v`K)uxn#-hL)56J*!LfQ&tD|UMdI!Vn2!dXTWRt6(W&S3Ui{k? z$dEtmkGLn9$J(=3n7XN!@|^r02!l<<`pTicm|nRpt+NUG#plmiia%NZq-No*LTb3wP|)@8pircuk;FI`p;i+YdXo@mY%sa{fsBG{-`&ojQ8ZG4(wS3 zao%Hp`T~F*s0`_gdbJN`VQl|+s4u49ep`Csw)CrROD9Jh5X(P!`*Te)Kk!vQc&dN= z0baUe(Vj`#P6pkIUwr+O=jNG6=Hpw3%$RK^^I`8@j6H&Hk1sm?r1LR~7)+=v?VCVj ze~aF|Y`$wDoz7!Kij6(e>##SvW$CSGff7-imvL(bs#~}7@=8wFk>wXjpyGE&n5?SL zwG$3=v**Rihssx2gL)o|Ge7=(ldZpQK*av;W&PuIUOJ@|H-ygzP8m2}GB36i5-60h z{A^Y}9vU@#X6qvpyc_d-+NKcVTeb`i6`yZ$;zqcdkWQ0rDZ}sHJ!Ha4^PU=78|fW$KB27EI8jSK|dZ94c^50 zZFv)0o3g28d(PLT6lNuodEX5i?L6p@gQiOo;->E;^LFr2!wYG?6~TwoV!AZHr|2%m zH%E+E!IamQRjUB`1pkO}O+Onu?eT%V*q1TJ#C{XfNCM>h*zR-xP~H?CFjGwAo^+&m*mF&C}m$yP5R}6OuE7 zjZ`||O@2iV*=iPESLx}8udFWnz6R0zbS!lqC2jTLLiLlAF8?NB zR2$z^Sk?Mtm_{Sfivs55cE?uPCu9LXWBpC`(vnYUy@Du%Wif2C$)1kh85Mz3#^RRlbpY4dX^klm%<#jMK%Mj9(37_~tzjSLq$}7@- zi@wojekX@H!}#6C4=Pvo{POBqJ=gfoOt}TpdE^dD9><@yj*DK*g4zn7ZlFK5<1xnY zBoECM&}yE%|NavXX#Hc*x3c}V^asyD7GI6{4(5jJ1#Q92!n(qzZDderOS>`Q7d+?x zvVlpvA7L?^ey}u-gpiK)|LfcM^?PqipABj8Z*jCXN{QPe;9kxJS>3#phxzjKm91sT zU;1Z$18jWL??~(QR@wMSD@H(n8;j=4ol1*}r=JUljK?f*{DoN1;(s#vVdr5(ZI+IE zYUe{Ni@gCBD4ExbABNhZYYP+o&c5f&YVmEV=v(Yin;hJ=#dqmH^aE|jy|~B=+tAz_1p7!nMFL{fcu8T9c}0Moh9s%te7*QC zpOBb-@b$N*AGmG)lFz^OdHwe1!C*3cb82<*oFCAZ{xlfihvl`B_I<->pJeum@v|)Q zj6Tg#DEoA2kiX`HFoc>HLiPs)q@X7fNb(@MFwEf~{BW2uixN(=~SRlIv zcL@yG)NQ`RScGQZp);oUM8G{qgK3{Gpt;DMvcmrkQ=BXy%5Md@t^YK(Cb1oa^MY?A zJKr7*?btxNkj0uk_)II(>W@lSw}YMOf>tL2*4U5~@`cP`w-CdCu|x}=tU6<}fH++? zsT=`ZwG##VRhl@ko|r?dd5 z1Iyc#6g9#-ZWl0}*{3ulrGWQ}0sPI~Y|TP~8o)xuIOO$;5U;~edb;^;m5TA;n3a8= zEChQx+nT#DZBXl#Pz$o4rE3P23V`==823*w7UMRYZuZSi3xWMi0B$mC+bMbwhuNq@ zZ}Ant6s=@|?ddoBV`O+xlorGYrYvnWt0Foa=zf1D%1vuVvfITsl>uaH<1JDVxFCWT zc499ChAcyn*t?o8*vdQ0OW`@}$%@PXT8whBrwh?Elb1uUJzMb6uW9l%S&SuCit3;P zigf+)2r{9$fRe6=@?tPdEeCzf0>c8FF*{xPWj9l4w3}@g@HD`-C{F=~9IeFko)ih+ zf}a3(8@6d!lfADygtAEs*1q<(v`G8+QYJ+_2yBbc>5nBR1Crs38n4#l{^CiI-G*&3 zo&dr(-xu0l#7hwLw9dNKtA5Q$b*py4tlDY7ZexYlcWX^qcsNwk zd+S>_SukEixP&|#kgzdF=N-OhH(6*8^-wk+WXt!dybkS3MI+WuXlE!4Grp&5L8=~G z##GLHB?~%*`w+%hu&|N^8D~Md+Qx_l-@AIrkIWmAZ8NL>xct&mUt5zX_BYrh3phZC z^3v%I`@%C__b6ejX<;f?Hn?MH?I)ZgRkZ0m!3gF(B^#L1G6LKK*CFz0>2Ei9zP8)fl8-Y{J8iE?5 zy%3&Bw2*H_kmay9+=hwrB6@q+Io8Z!Zu)G!y{l-U*^?PG)rxFM*OTo`se~4@JEh&( znwv7`jDj|o*0L-@(C}7(mg%&Gr+Jx<2GR;^k`tKO@ydmZ;08_$2i9o|5sWDn5+$Ml z09k{<41_-Xc$urM`WPcWUVFn5#+fV@S|eHD1QpIl^m}LJRLW^yd*)lw)ryRl%}rj><@4fzEC8D>5RY9x zyNvdw%Ec`m5H=+kf`Y-uNy#Mz(ox~ug5w;e1A<8abKPb!Gf{pVa$+p~W;tXt?6zXgp@9EhrAm2TS#SAiV*CrH*AOO)Hv~ z86eu0p$^pb-j3Ii#gHT6wqg`H0?b!n;s#>b}3(8)sf6-~3@7$_$a#(acCET?Z_YTl}4 zmi&TsSW^qO^_9kjZQ*GGfNjYU(%xYig~1VAS!zDX0%hd^&BeDetbvzLJ@$Wd_8st5 z7Fpl-3MwK>5_(auh)NJbM-)q_ic%s)QA84wONgYAn^06V>e|7Iy7t&zd)KwBv0xW< zU3-gdbzR%)+Fkwrr_594PUiA{{@!$17SmG2*ZQXAEN{! zNdgj)Rz^y|tMEQ@buth7Sj2S-V`v_!Z0hV3eJffro$k}c>OkhMMmq$h8k<6)WsU5m z0}rZR9$RC`ECT@#JE9_yhcg^{(8`IB95VFc3fh69CJc|Kn`lEvO2-tNck;yD8D6+V z9agLKI^j$NP+^`I#==$^7sx%-&d?vwxr70T<2gbJFcy&7h5i^Nh-My1D? zTOyC{eO16PO}3;tSky#bL_ZTYoQF~3QnYABocWbjC+1S7`O*HYl!UU0yvlNj?8`_S z!xIMZ=O*&7*I=2D*jm9AK$+Ln^CVv*PB%z>Sg}le>>R=x;)3+F1SX{jcABxOTF?(M z5>d*g!Z$#)N+O>2k##Z5yivtq`2-8X{Gg60V^>;)qDW7{t!30ku{X?rv;@Kq-DSWWN@OXm6=_q6JXWs|O&XT41{TdBL;Z=ny7EY?t3WKmB#K3) zmmKpL3hW;G)&lfuAxg?Ib14FpVlxVf_F}b*)*X_*Tj0Li%|!4`N%a zgy)CUm%w#}Ib_EbaXw7|lNb0==0Mm4-%RF}q|*%%e-zfVKC1*HrItdcRvx@Zl!q)Z zbJ46u!Zo4pfCJF&Lx?(>t`{w1NLC4yL$IbQq>hC+L=ks+G(DARRVpZwnN9}`HWDd{ z^$K)5xo{{W4P!!A1Inms#?gg#Bq&tlM$yCljhcpm$QcLZ;(QBAcn)DvMnEX;gyGH5 zJo1(4gc57XbnH?M0fW>t3IJhEN%|vVsbt#`-oj3qvGNiy=m!^DBKl@BkDo7t6K7h9 zXeqp=tUVd`7}k{Yk7Bph%Q=|L1A8agZMK={M4m`uDl%dNgwz7AEE-at#%z#;D2|0Z zy_`6WG!!<5<&n&%QqaWJ^hzbL%Nqfdn7=ZO@Fc4Q0W3Hf1D%JZU5tV(mo#>y$5*}z z2e2O7qFm)+r>T!hwVFJ3OhqpSg16wdZn|h1cF$d1>A zq4bXuaUK;JHH7OdEeZoclhhw}%LFPy9tk5v7RGghak0t(`ebA*YjFt@SZfK*2B{S^ z&6GtFBEFUgTO&&|t@6m2_5m6b)r!`B80j5JtPW(B#=23`Wmrgw|HK4+v>f~QbXtp` zganc4!=okCr|Bc8WpTY2jW}9|7Z5u)&>+GY3tDEagCxeFL~W;$lBrPB}Xbc2Xpwml1J(nG#hcz{hBIlvr8H&*PLYlW@3cs+UeUckqu` z9l@1h1zn(I?@Tdj2XQTOK*uC2%JGT!kRo;1s3Wb5g&QX|<0YHcJ3(y0?BFGTs;Ia*oA`;sh;3ibQB4VNt)bm-0W^rX^9lr{b3~O;@I))S}f*ed2I95lRFBhjzCYg_( z1PomCfP9kr$+v)5F23!!nrpH9hP42eYx9}6g0&*ShD;)wCw43UAjJIo8c0e~u?(u^># z2#e~=<S-L~47Vl*ulU1w(klG?ag<|q{bl8w_IB8}Gh^r|;4G&R1Bp?n`3^Q=% zFM%8e5o3P@w9UfoAho|g{3{@*NaOtqGCuVzzoGlLsEWzx!UPqrq&CW`5YuDAqRSA zjf=?POiDb3sDW9LZziS;CGuID6yJ?HYy_iGD>zL`(1{6^*s(;jSTvf_Rdo%l9&us` zZ1*y|`3!b~h0z?DaIQ%9ACL(v60s?yQz35D)>=~{*)#JYsm`4^CjywvFQE$n^k}Hj zR8Uk0MGgUf=r@H!A`&!q4)KMaWIkJ|@G@bbhoTnutG;P5c<~gCT59xr}P1BbWe!*2HlWX^RWAR)~}c zJK7eJJsEZ*fEr;FEm99sbU^h862M$0z)je85YQ#%1GsGnA`iin9dG990Y zKIn7 zCA$`i>{_G7Wz|9v*NQZc*g!3Uv^%K`?iRYr&CVB|!m`Gq5;RT*STMGr2rbz~=%^Oy z9#XMdRI7qOYZ4WSw4VYp09gWYfiP|nO*H4bQ5+NemQ$e6ALDkR)<-;;opJqZx25g{G)m7jwBe+|njHOeo zIpHw%AbwMUdn@Mz6U1m>X(kAuYH`@+5;cZo#yN801}@pSIZ{PBrR8#qy5RG&yL&H^kl znq6KN0P6#VP-T15f2qq<%uLFq=e2&N5PqeVROvMS~g6k93EjmEx#mx!AM z23S?alLcU#fqP}eSaz@!&;!4<%OL5NRck~W*9$U8LVB#Kt3dxq9}#}Y@4_(cQdu4B z=*%}W;FHM$vNAv>*G!ch?p7d!rRU?w?8{CYX^&{7DhPU`^|0MECq00SXDdSm z65GaFr7`dpU@F7J8q=E)u7|xEQ+(J9UocZMY9LQM*RBM0TtR&R{eLQ$vAhDD;$(c@C_@W|Ql?l3cmxfI5z3DytrVvgLLe zU?Uo~oa&$#OcvRBB^woM2v(WUP`sY-HFfO}V>c>Jft0bxXmp$csFd<|Sv4jRe%}fk zFAI|e8nMPQ9J5&PVl88CEoDr*mg^_G49*{%`_N$m{-8WeL)=)k5Tga;AvR)imNe+l&wrW&h^$&kt*<_G$X(pvCu)d*-UBf65h zjUW#}1K}G@QUX1wpiTk?gXmu$=Vbxw@(2{hEE#tb_#f}^sQOb7IMM=@3wRlUs$%l&qLzWs!HK|8 zao(DGHDI%lH^f#J*5lo(`;FVHPE#Ju8I(tz=8DU-D+&w466jj&Dy)ywdcXu4WKS_T zm|u~+Zo(r`FZxeYPa@9{m5&S#L@(55DI>8MK8BenOmxGVlNdtn>FM8)>=r0Ulh}te z6#^t`viG4dH3&pKgl{7iqL6up%0;RV1vNFvI$0JBxEjw@o9ZSS5s_GEyy&KEm2Dun z={#!Gs67%|i21>Qg2F&KVMU1_LI)zF?HEVXtYwixOrM6IMGCnlPXAa<<8HDFAsoZp zW);px$R0n*8)65o=(Qst!bUZ{g8G3E)yZzaM=k+Xx^NX`W?iz|L8S3v!RYaT5*Ux* zq{4C-*qMm zTOeYJD}ve>Y*`eljgEh4Rp4FgX0ms%AR{R}P}7{PIB`wnbyz4GkYEpLvbZUhEYwta z7F-im%7G`j$PEOa87cVTV!A$}@;)^+t6xNfPZI2x*uw(+8 zZz44XoNj)gkfi9iia>>U(b^QsB^nfxTcrrgHWR`wZnN{kMHB~!;u6l$jigDE!y;mR zvKudLT>d9SCip7!aiEYc_>g2D<{#)r%ZJUD9+p{NJxp=|B)TEuAbKfcz;!3Z)v0z>K-c_g}tcppo<2kgx2Odcn>dI@F)VICSRj1(+X zlWU?|-Qp!p(9B>en9J8sCO|QknhVjtrp?^a*AFr;3H0^a0sJ9C@Nk z%-F+lr?5@%Gvrl4uMF8JXNc+@v_@>($M(iKBk2OVi7;)_5ioeNTi{QKi1A@zM2=T* zjdciU-nbCpf&eDAP-@NkOa`JKBzl}b#DbWy81^8xIpy;rYp8%=nE&i_Jy{x%AOHfl zDVzfWrdLY1&~B5&dD_}hhr9R>P>4NHheUnwK*2bzV`m9_DvqPjhd}hH!UYQT&<40V z3`77h*kfY37)HD4bwUw@i$uIZm*@$exE&%mH&yf&3PI;1qO({^Xhe}h@hNnRirB;w zp<<$+dTN7Xk{^NJc?JvOzhj<-ZgJ@u(aKHrm`@X(73y2bZh_!Oh9Zbc6hDue=6VTT z@@5wRz-1^T8V4B>yQv5b#boSgvNhsmRe-Y$4LP{d2)M*lxex~j7Fi``I;1G2PF+pJ zKLA95m>Qg4u|k;0mB27{L0w(VXiY7eJ`&htVzW|RypRQK7x)MQ4-u(M9IdHEf+!-M z3+cORT5TG?K@5@cFLVoJ+nJOiz>J-Vfu+y-I*4)U1`^?Dm|V6bxIYpp3}x+Z{HMt= zi1*VWGbF%im!%KHlS;KbL7Ay6D-;AL!4o&Zoxk(db|PmlVEt# zn&iC*C2lQDV-#GhSyBn1G4 z?Fv6Oqo6%t#-|cG>Qe7hrdX2$bSKG~7$3N4Mesrwm&(&#AVd}XlieZX+l84V*VT(B z7%twB!xBj;J3k_qNw@_rBzL?xNN{z9+7)BLJX&3Hpd&j#_b5G4FIjNV)kN@@mhiR( z?T9PI9KS4vc4wYIZfPwhRT1q5X9yXTgh827KuC@V5t4$srd<~8y9c5@R0Zrk;iXx1 zr4RO{7xt}$EvR=y>IUr!O$wVsT^0J7a)AhS2{(r9t%|CM;}Waa|LF(1ZOp zV$|5Mx`b|Z2O))y2w0BU7KL^Z1Q@ie-UpP@ebS&uB>X74+&r0`&OkGwwJ<9ect5Z&j0yvfT zN^|t~I_7~?Nm7dC4{_Es5VFnG|4lw z6tf678V-j{Bk4R+imS`$XBeF&r6S9R0b1Qf2LpM*)omiR65Xi}B!1yCVxW%DT8zk2 zkrLgPKs_(PlLjyd@DpPA1GB?n=$3DyL&t-vYFA`=9lFb+H7qF~Id0^L8Mr94xNa5J zEvEd;D67YC>{5x7Npu&3m`bKbDbi9EBkfX-Od$J)p`DQt&$+5VOnuyqXkZofEE-tF zuHdj|@^TTUw*pm@!6+2mG)r4BHmyrX0PO%#cZ?pyTp6Y6qd>SX0<&rJUnBRb?1i#1f!&ew&M8Qc!E0SUE5XzUe-Vlu8JYfyAWw&!Rqu9#LInNJ?dcgch6U zi1pGaij4qH(m2jkHY`Vq)2rx1Wg1DuDk8wbdRuY(I+G($}Uz5y322eTjtNwhQ*sXbxF zK|#D$q?i~Etq$2qQ4ED3;ux5gfg)0o>;c^(Qc7MTdaT$gmdb<@jo?}=9<-g6DTif- zH!bEwRR;PTzL-Ug%!9QkqTz7cw%L#H%!-I3l`%)S!LP%_+1U$eQ9=V1EG`QPqKTGGtP~Rt5hFiz_(>qZ(os+ygy0 z#*XuNOiV995P`&kgtf(CtB>-A#j*Ezdr(Ocm_2Z55}jlxE1 zD0;m_E^5$lBHBhE>xZ>t5A;TgMFoJl2JuK?F=Va^YTg>W2=;oqg|#Vyix>z6MMfH_ zuL5*wrG7K91@;OJLvR)2 z`jx8~0h_u3NgaSi69Rx-5yvR8DTi>jFsM#|3WRHV66v(=-4T5NDtjiXrd$1rY z;soD7MvlS}qY^#DmjL4DcpS<{gVczL9(q&}FNT?x*czQ+(g--6CL|UPVH$}BBSDfx zabSgDm4H?gR@xrqS_tH9vSP4Zg^OpW$wC6_Yw#d!5A2CRWeH+`v?oB2F^SXIQY|}; zl$kQzIt&t-^A+1SJ*1qgq3cFeWKdoa`}?E)9a7u!A`e2%-@3 z-S(K4$zZiBBUR~UbPrr=z)J*>ycXj+lRi~RGf1p}-4oCUa8SzK?;awc*T;qYWDn@^ z)UHOuDq=Ju{*7hjnGvB)9L3NcvemO5d_!E1d-AjJxoB9JVOT~0>mh=ED2rfwH`XP4 z1acw^b;|HeBUN-g97Y+FKS$;pr!@m($`B3%!x!zeY?no3OGTw~%pgcZGKSE7KJ#uY z4ljKlfjt)*v4Nf}t|J>um0a z+vlv#ur$_#8)a#O#vjZeE7Z1x9~os-(r1)$*`JsSiUU_hAUz{&BT~%X4b~k&Rj_5O zfQpS>H@7YbGD2J;LI^ ziy+0e9|3GVmcZD^`+Oaxp$4rMhD0*7S ziZzS~^>O?aEpDQ`rI8!y$(|SqsF!^fE0ASaC4O$-QW5A=vL_X)`(k!keU+N?xE+WY ztN`HbL1eZ(Dn#vzvx2;~bM?8R5z-FMnHqAMGnAPJke~5JrC^OoHzIlUnnX{Pi*&O> z;^Ym@{WK@3u-mXa&59-gg!w6CWQj+7ZS^D zvp&~1giI9{^E;ntCwOXD0QD(R?N3C;AW4GoN|=5i>8f#_%3UV+o-qL*PoHGS)m@S7 z$=49+Y>i!x#=MbCoNWs4NwR!(8Ywkn4HBKNDk)n{d5nlJ!=uEpK#89964p;bDaXx= z%{|eRWO`zefm|;h@1EtTsJW3y;fILE?{oIVqh<6+S6CgV2IQNb^XLR)Ei@ue6a7&C zaahk<5~v1bh}Uvl`y|;XG{x&YGgNrH0`m;D7BdB1C%_E2Op^FjbrYNl*5f2SMVyAj zhX-qB*VQ$O8xHe{i3mgX&0`>mo+3R5COso3TlE8j9<47Q_kqyCe1qE$4dByAMdJI0 zJt0yARU@H5)J{AV6Pv^mJtg)fv|)>ojP{MR90-mqE~A}s(Wo9H0b{>&w2q{*rnMDE zlT{w1CE#|l#aiIye6J0#Pl@wd%*iOXgLIhhC3|X|4htEQ$B;}ATt1H^g!tuN(1V1* znIZTo%vp5Rk2{3&sBt=2PA-R)gBL&Qu!yw73n-GG^1T2> zuyTsG5qn?m5~syYfpSZ*RKt>%i{^tlAd86;LSsuph^UP?1`#y}XMa!=Z|noyS`Ceh5ueBrCCLy6v0m~Xiim@8urwEp zKM?0=+Rdb3u|s2T*c6jKZm)?$6-|L*I3zUsz~y%62|n-&N-T&(f3r&*-3?{BX(W9$ zG%@ujdqH>u3j`kre-0y1GW;Q8#wE@G_Fhwurc@Z?+qb->MULtP`9WWiAThC;@xT}z z_R2_cld$y2Kx#gK*A%AAH`e}Trm4NuB0LYhpw)rD?0UJyDLc#$iSUvm@p?F9G~nRi1`ZC0nkZc#bgoF6nG2;ne3d{W z7fUUx#ljeoToS!l;3i@+!3H9PVSv;tNbP`RljLL=4@jhu52|NC_nHb@0S5}|#!(e_ z2%gem9l22E%Fq>+A*@&EiVT8;#uh6vSEJhdFuJ`DySqLldr?G86Q8Sr;fao*WUnBG zJ1$e9yXX~`lx>)ixk~oZto@VI&_O`Jq?b{s0~RVKZ2==6vKeX$37#Pxg=yGD@8SN$&EWqp7ZrkuJ9lM?5eESd|Gh5CqK zegWSN64P@(HQY1VOT`>pKH(4ZctzuaPViym=ypDg8X5l}a}|m^p-dxl~IPwnjMi8A`V~i>`H62KDH2%?9CzvacBzpih6x{b__Gb?1X6$V_(AQgF8<9 z7M)AI92oRkiJIjJK8N&+A$BSYV9co*3EZSjlIRUHQeb=G{1S8PSivo>}u5*-jsMES?bCJx8m7^1v`C7F`%b1cK6PQQq?dF! zvJWHWGbuPN19zkO5}a_s7hXBHZt0>o$$Hj1ex4C47KIUbVkcebg|oj*#r+`2#BgcY zU*s+&KV53IMtC4YBIONwEfQFY(M2>_9#5f0r9|b9XinkKDs%Y6~@>b(pKbElF)sF*7&s0-5Aw`wQu}c53FFH zav@G=xwajiZ`vB=*bas(b^+#Zg3CG+dq?kf(1j%IQ#L4L4#Y7ssg5<8X|-?_$)4+D zR$)-!s4$nB^%IG4>I4aVA$lD^4EZ3YAYwVWm&)sI2&urGRP_QJ>(D zKwJzCDV#@|?#WD)W}}7r6sFkIIRq(&3f~OAZDODd&u5ZQVxk@f{5WpA$EVSOA{A%u zeFBhZqz&S5(!gc7yXb4I0LqnKG&o{-&|*wy3!y6c`RYt)n(xCKPEJJY(w}^a7fPbw zWS`(DF;OsNpQj8;kx!9RM$Ggfl=W$Bvd^^4G$To~3LZwz_u<0{TZbZFqGt1jm<>9& z^iyD3$6yws8+6pfZm;UC+eDwhK^s_ml{KJ2>wuDA8ai#VK9N$`lnFnH(iS;v!cP)S zV}GiY7ismCx5(E-AM+{u0Ml;BRbN=?IVzpH0@|PemB~#tHLIhFCA~Y#)Ys3J?7k<=LkM)$VwL^#-Tx$ z+evLcDm|kLFHPblHs;uji|z8+$+DRd#pc4CoX(jSc^{vmhV|*lp<0a`l$_ePPdvN? zDxyhM4=Cn_(LfUH0NOXy`Ka<4(VXxJCPlp5hMQyUoQarD{Qf9rq^^pJ-gDQ9(&S!Hq~5Y0$S|^;09+^c|m|)6#XGQ6r7Tnvyg^_dtX6 z2`3RtBT><%j}%z}BCLJrry8;EPa_4;JnYyfJBy2kXkc7SpBzV_RtXci+E=D)b zkv1#Ri<>GZAuf%GjFRFfu|{!=u0db95O7Q?hL-5$&cJ+)&;V*PV!es{iOrDgo1G(X zT4qL5BT_&o`oe+=M>QU=<{aRB7@D)ZFPUrMBXC)4`5RnA&TqC15Z>_W(2-OU*Fidb zfEizm*U#X~Q^8&-6vfIMmwYN>&SD@Xbmj$PkW-O$5c}-wE8jRmF6*0NAF-zCc+Q}o z)*YRQqG|Po@rn*gaN3yOog$V7ZI93VzUFySS$;L+O~!5ZdR<$rBnX&Irs4gj4xPh5 z!z{I~uR0S+`3_wmcsmpCa|pd;4URZCzKK>Ba_>M}Gv7?kD-KLG9I|ix{t2E0;6PJ~ zpb&hdOz`v>DqBQzA({Gz8RamCa6*dsvo5}=Kp$KnMTpi#X(sy1H0=NXIt?g zt`Jhs0Syx-6Orjq)Xm1;AmUERexw=cl?V>HLP8UAe)EOqehxX2>XYD)W(`eaG#brh z)F*rd12&An=1_ptI3J!B5@&FF&EddBYF0nu;c?s+HBZq|uvg?`;BN{USO_W8J1xq= z!jB?uc|MLB>G?Qzbo3*p&-9jN6IoX&$i=*G9e$K8GGh*|Cg?r^B&R+yfq1ZE;YOT# z8ZgcXLlpfdOk3nymEaa|KVz=R^sr}Lf6s_i=0H;b)F>ayvSNo~fVT?VjAQ<6CKZ=%bb660y z27DOG580@}Sw+SIMjJ7u(PBq~gn~h`fZ*<}93z0VTuV{mUwFb^LsO2$Mu#Y=Pdnl@ zAUT;6-3c^Tm#}I~4uE7craCDCy+O%D1#`R;K=&EaO!u`yNQBc0?ha=t*-t`u8q?D` z{b0~8y=n}|2*rnzHJ?V*Y$U=wF7qp7Ad4Hpp6#pn$OnUR#o3Z|(QtqLh#Y4|=BM8B z9Ap5=G{oy>U1}&y_S1)ZC)YLMsE})m6QNO&1tZZ<4>6E}KB_>r`to5EKAq?<&GI*O z)`+KvL}`4@w!gt(Miw7P!~J=Vgnwn{2kB4B6n0Y(vKy6b4PHwcF*1ktO36BKZKy>{ z@H*H%pS}FmIw$2spqp*|0|rS?kw8&T*Ro*E=8I(iz@`+j4jHqO=`&1`tfyc+^lR** z+Gp#lY9q=1LB6$Y8-7M-QjUqNj0cJS0ef`9A`-5tA)X{HKqf7l*&xmry?uo7GS@O$ zoCEDv*j8*NxnlHUkQp!U+t9EsYlN2L90r6OvM>89skY%)GtbeB_R~z9VWABh*Q*o# zg`1Mm3Zcbeqa|#{38~#8JeDB!D|bA?Ed#2vWL9o6q*&q?5tjmAv^PPzLa~vreBnO) z8qrG3jo-kiuDuH6H|3xZPjHtWvk`Ebh^-*(75HCJL2sNJ>qMfz%^0Ftm=fEWLu-&^ zB9u4%Ot+HT1+2kROxeB>LT8ZypE27--$+YM%M41hKbjo^2xgCep2v@!!w|uhQfmlz zT*ZsBuZ4i7wTP8Ta22FaB=wiiF80BpDRJB+b3kJNa{9%wvgCFVO*mW13a160 zc+x&4_}WaWbj|EmWd~GEW4FU4i5i+C(6qrFZc6rVV%B&MM}#K5c_+JFKiAXMJsj$q zb9(li3Ao3HxJMe8n82JTt#&Q8+O(;3^8`JQRWN2qbS+*^_rJouYk#IwG5ngbKgT&j zCb6Begjmv#MaB|mLtDD6S+Q9Ea5%6akSR2uL2MRB5zz&+W(goAQQev+wS7r!J4C8g z)HUEf5bmB=7S%OW4qG)0^e~KNFkTWmVcQY7f;lJap1CoyCPFPLl!o{Dq8In5Yaa0u zyM%(9aQ=yll6G~tCg@tQ1tsDomcSvgec&jpKx96AHVCwd>KoffE<-hxEym*;HOq&o zC^EFN4)8`UL2NX*f_2p&-(wuLs0a}*;S>}mw|89Xq2nBvXVVSHAcpqi42EMfNynwf z8W)=OdDV^V4Tc=#?%JM)Z}zdN5Q(?ko+Nh<7h!l4Nn|v-@Dd8}N7^R=EFOxO-G5>t zIDRljyx&0mXUU98q3UKkwX(lQ8BQ>M5&iJmDcH`k=p~2k#eU`R5D6>VURhCaWBK4J zka(b}qW`h|W~)Dm?Nw(o;&DiMyuD)UV~99%qTB6Twyli)-Qo!u)4sLk1GZqk#|FU+ zLD`|wCl+pq!yH!#c-=l&SKeoVh9(LK=qH}~!IGfx-C{dI1AP2$uR&{w1utt@O~x5m zA^DAVxf~<-Bl3#gwlES)j6Sn3Q=tE_O?z0Ajvp4g%A#pB3Ffb0egN+|ZL-E6=lNK_ zKH8T&^T7(ts7P2%TyMoPBGwqH_tR)+!Y8V{7pHkw#TVpH^-GxLJfRKD^FiXESt zKRhMAH|P;5?xt+cz>UY}Gd*re>335YX|TtgN|v+{*}!%*Y9b|9$%`TqB#(P>(~@EQ z2e7o$Q#M$QkggglvV5Ha+kw!pMV zY;?3%4U#utlcBs7=tpcTsqG=;Oj$LuSW~8*ez35kyvN-SMaDvn)&ON#oh1&YHR#TA zthbin6pTe3jJVoGFXe`V!Dw-kFqs!g7FDS5)p*iEA}$a?g|XPemnC1K23VA#!a!0n zmSPMbv173D-G@6Ia61y3pqi6E?8rPO!XL5&*?07A{}E%c|NT`)jm%kP>}akM8M8aW zfV*p^MSD%WT>s>Gq4b4fuaCuIW8P;&qlZ;GxufkG;`lkeU?`@J9c7POWKt5<%y$$G zgI7+SF^klGhN&ixWWrTNZEI?OMPFjX76_mrJz;j4-&lQNyfZmTOGZ}OPqzUgrQ1L+ zC-1oAdf721t4+a0sD|?Nytz}yg;Gjv0WjU!-g5LMvW&68k+p{n@F2|i9?Rkgi2*Wb zBfz2^Tp^(A_aQe$oygj=x*8#N&MmkabwC@gW7hZ|L3oim=47ax4iCuqRILO$#p}e6 zYsQP2;5w0!D@od}&;ib1(5R_zp&2_OnX)*0V4I2bIntlmDIskfOE7{CuxQIzVnW)= z7+e@Y7JV81ofsgL?ucJpL`#b3h(^;+Y`x>0v(Q{6RvL@-*_;ICkPYV0v2CSa zt6I#>wv%l95Uzv{z(o*c=<2ToDw~#K?a)-pp`zv*o$**D%VrkzDVrB5DX@gLQ+Reb zwxl49PiDkO6?3`8W;{|U=6TbO2kPh`V~2`Zq<{|Ieu;#QjgY6ya0x~yTBo6W3RwzX zt(MVwlv~3K5(8trZ8jc}ZshcU;A~{WAeI6$7#LEW`bo3mzPVOpJEtaOVx9n5Jgybt zC=q})^k^D#5{TPuplmB4UYuTLm|{mTUhsj@9qQUL>|+}kD2$bO9RXP=YtxubVpObY z?au+v$$_>?$g5yFAWO0kGr@l`T@5m}A9E!nI8n8heX4+xL;BB{wqna{+er!&1Kk@Z zIHFi%F>P5GAlerm{wi>rJcygCS2M3Us4 zdB$RM#d|yK9PRGp&NjIkaWk3$cwu(62vr;Bf8jzwY6hw&hG|etr5yFBBMmti=442~ zD1yn2R|_jx@$_0PHq=GWcaYc+^ zjL`=xt9Y@U0!L|7>kIaw){_xH$Y8-Pn*T*CjbVE+V$LG>cI(mG6d|=|Og#{~wHxE- zQTz2Q@ma?a>z&%rnJF75mDY=vSsh>~;B~C8!@;nNi{`Nw!?2s^|7%1Ml=kA{m_^OZ zhBl!d^PzbEc+`NiFNnxSQ_bzcAe+b}DpFkNMRjVebs=a(O{;a$OAqDR_d-tAXer*TXHmO{#}0 zdA@qdUG1}$DGV1w5i7%2f{Ip@RX3#X=pVw=+bCHsD`Gk1+rpwBI{tCJ;Q zYWSx7WF)gD?+xZA)?$QbWjSfwEyCKP9+7z%9NSQ1EgBZ*a&zpO72n}xOTqL2fwe8I zQ#!G$$h^UE$}+AojLIcA@mlGGTg_#0u8dh3t74Y45mb!v8e&JhLqaB3Xj;r3j3rCR z%EWh-2}L6dW@!J=!NgG;LmO=YBLHZ{!D;0CED96f(?xguL3 za(qi>gbrH;iA=VayW(}6X|Jq$h<#~%P(%og_03k;5?a%uGzSTpnz81rouC4QwrSOj z+E)x|Kq8=Q-cA=RPaknD%t^*z&!UYW5o$mjJfFrdV)Y^J4VRj+Dp_R2SI~f+^g>@v z-J6L`8WGVW+Qh(I_IajO@Lya~#&!dlf*R!#P@E|W2q`^v5AIt4C^>^}<8fp#W9fe{lhg1iu6t2UJy zZWA)Pj2RZ-tlC*@w*9JEjMh}OnsjUv>HyIShK32r;ZZHz6!Pb%H>6dg9x)+Cg{%mx zQF0Mtjn*+NE3&@vR!s%s-Pxw>7!hW5APS3C+gaF9Ut-3=3)@ar-URZElqOUi++M37 zmzWyEb(sp|L-yOx-d74CK7$f z#lM5CyeV}J-;uhpU1>H#wt-t|Cn}3rD-y=YM*17w!cKK0Qr95oQ_TEhPRP&OUkmP) za!B28yS2C9g7|b2>Kl;23Jce6Wg$IgwWkB6(6X@(*_7!v-f6TQp}wrc*E&`mwGA(@#9Jct#3uKo5psc}?Q90M zg#6KL>Kx*sZRPDy6Fdtq|VcC(}zlC_C!&8Bo>== z<%}SjNd5L)$>UR$a7-1IBB7diYrL)&n-;?X+HY^_-9{H}-{Fb}$z|Ud@w9I(tr|?Y zKMM@sDblFE_OHq6b6idZUKdXYP5+S?7UkF2C-IpQ3pK5FAm$BgZ^gp1RG^GXF)TWz zvLEBVTwCys0mS-~HAi9%*kk}>6wpD(Pi+@D8*VZ@ItDek`nCDtGOrP~!-;Z<3kTeY zFSrF0s}QjP(}6IPLn7^Cj82N-J}xBb8q8vgTRagPhpvSc068^&znvknmDhMLjr>i7 zA~@of*iPmZN8w;W=|6aru9CVMKdms|m=>iDoP};58AD z_IV9I%*D4R==#AXf#8CGd3At6RR0`gYsW@rT0{XN5WNCQiC~Fna7L45*@^YSh{0xr zIX#JZ@gQL25RI1=k9?+X)~4r8)H{$F75>>MXeA{Z=Z zj*V<{;!)8#F!%9-Fcq^^Y(FLi>UZfs0dTAfb3x@lo+#SPn#&hi}E|_Cg;@C10o>W(eY$< z3JHiRS4Gm;$SDT31yrNNhm2Oej6FjxEMEzagjC{DUrdsJ#4Ns?Lx9mK*Xecfqe+BJgcF=;zzSl9ycY zXY2S|-t*)C^4fLxxZw9YRQq4=hrcxO+lwyvou&zV>wc5G>$iK+MI|oy{^#lV_n+*A z?=thT*In>M4+wl>fuDZTZ*F;}3;v}O1-|rY|M=he->>Jm;J3O`@elL!j~=}%w{gM$ z~F8pO}0@0dd{&qXP{zMo2FZpzu;lG>w^MA!Fuk>=kpQ7~JveG~P z3(opvPZ#_}3g33KAOCj09KMGOzS}m^{pJ!s{~t4=KZS3}0e|v`gO<49OHLB}ZO{1eum0<{{ax_muhRan_QRL2EV;r3 zzwI*u-}1R1zIyiDi(K&Mt{3>yXZ`Rsz0d3Gf?t2D!jJTypTkc(?Kv0x3x_HEZT|gx z?|;Va?t*_!``>nlAAZ-li}PIYLw^+f#W~==uIqZP3;t|f|K>aW_+Oi_%i}Ki-Od;M z&2#+o-}?3|pSs{@D17QmKm5g=#vS2;-(#iXztMmGjlF2QOI`3^EB&@??uWnpoE5b$ z_#ZiYJ9)EnP3x2>uI{y3o>vz$WM?2-;u?nBM-w%IU z|5u&**Erq3t+jsnb^l>Qo$}Ax52XJsW&ZL1_`$5hUE^=o`ERcC<3H^5>zwpce6rv# zuJ^-VyKbK+T==J5E%2p_{r&&?ts#%N;F}eH;sO8sfBKg*8eQ=BS84wr^ur%{$89^g z;D`4T_|!4}{rBjK<34u5pS82Vx8$JzWBQiA=7Rr3<(IY`@NL`N^PLNRoaz7O{_}V1 zZFh3=uVRHS%>n<@rq9 zW04EK#Ed@&{Hl>Xo%Vyf%=mM_S1z3YfD8XFY9MOM0l(9~Ryq0a7fL^=E&bzv;g<`} za^ZhwnC{;k@H1ZSe2@$Nk?BhRIp7;!{_Q9i{1XcVzAXp*t4}o)yWn5Z{--+m$G>ph zf1o%DCBksluNpCA3&_T1Ce|FwGlCmQ|uU%$6=R~P&p+W*wUe*E{|m)gMv-{}I~ ze|!1oKXJF@vatHyS7!JqSo;7@Jkr@!}G@2+yeUuov=Uw-&q&hE0& z1z)&I@V7qYpTChu%yROtHl_d4zxm;}y?O6nUHHFI_}0Ds^Z(G{Kkw~=|4ipURqmIc zCiGZ5+66yY*S|E!{Qop!qmzFDG|K%R#A1xLB`Fn7A`F$?@Q@#=m#jXDS|K8>M7hLeA zI{vob{OkYf#JSG%=Y8Ejt&jQfKmP3*PWk(x&67NUmK^Kfb;$ldy88dU*?&*?@%MhN z{7e`8tTU! z%Q1gFejIJeflqz!reA}rVn-n)dIXLH{gwuHRQWf2BG4ztdMYT;RfAb&cR}*~-8EneT3K+J9Sg{abR- z@6O*3UF5?5vpK((_{V?m>8p}1_#1B5^*`9Z{_DQkzK09`y(0y_EeHM&_I~^r7yNxX z{^AY({rBM7Q6ISA?^gP0%K`u9DZ9V#g5Rk4o1gUKAAHCSb6xNo3WR?(AM2;zS9*S2 z>4N`2=fC(kKm1l3*8ax@KX4bpU;4Da|BY44&vC(zepcx>2mKeHw%dy?_?EeCvZ%jLlmFeR^Vhc6zkcJ}wj1W^e>W3#aH4;e~j#p{B<`A`1&ySw4THW&P{2LCX>|9syu)13CxPj&yMe)ZGeU!VHA#fASU z-9OF4{o{Y+wI`kO=kU{I{D}(x`hEV+k)4z@(=Z_Nj;urn+JC8isX}`Kg@we>j zpT9+?JkiUA|9hpsmK^hc&HlGs>w=%MNc!J;njim$D|bq`;Qy`b*Op`dj^E?$&qZI>W#IpPhGdvkQKz;%~_TU%29p z&0O#&oB4m)KmH3Je%Y!2{dBa9zjVI8|2uWQ(n<+%j+1o$Pxkl!(=GCy`p=uk==}Y| z4}b19=X7-8?{U4rH^1tK-@5U6r~EVId7b~W{p+`GX}!~aQT?%w{{=t%(IaG7PmJ`#-@W5iQ(W*{)Cqjc7Jm3w8Y>36;19i6@xSYbU-!yy zPW|gzUB9-I{rm5d``>W-KbqGH{Qj0uRp^D|GUzEX^!!a>GJhOF8FRQ z2>#X_1^<$vzl;6+W9-C-E^)yRd`t1a=ih(FJ#pT?F8D#Z zeyJw^{9j*D;pE?UCH4HtK|lB1bhtDA^K)JQ)I|UM9lz=Tr~dPi&R_9*Km3R5PH_6q z#{E<2_f!A)AMf&<)Bibmdl`S?c0c_r+H6sO*ZdFJRp3(-{P5d+IqxnP{4|4qtbhI2 z5BU8z7yNI11b^E-{_$@-WshH6@Hci9_?8^>`}>7QIQjPrND+=ahZ>91`s|N3u!^qTQ5__Gu~kpusSN6d5T&wCEg`OiUr_kN!5 zj2~F4^j~_0fBdCITTgfO|6rw`($oC(^V!4^PWkB^<)4W$e*Cv>Rpq4rew*p~<$xb~ z$8`s~`d=_o=Wneaf98sjpS$2U8z%5Ad;8b_sY5#NZpZ`2{sx$uRVqO2% zzW)9HYT>(1|MLTees=edfBnukI_3ZClz!TBoPUp;aHDhokImEZ=fK~1)R#{A>Ea#& zU)s+<{@-r@_aN8&H|?eC_pG0OKV9E%kqdrzUB6Uk|NM>bva?fvzV<&VzrEy_U(U*V z>JAtFJs%VJmK^xE`|cNK{OuY&zf)cO{ogKgwljXC>Jq`4zF7?Ad{P?vGy5Rqz@?Y!ke*NLmlaJ}*f;1;MZO7zZm@~2mIGRO?KXYnW_6Hb-923-Wq>iwG01Zv;T6y?|bKB zXZ-q_8-#wEFYxoP%?6(DoWHXazW72v{Kv(6-tOvu*NuWd@n=8$^e_7D>VhAr@U1!E z2X}kK89zGYZNXpqfq(s140-%%7yfi+BM-+#?rs-5TG_VtQC2mJ8DyjBO27Q@{{4Ty+J%2l#ov|#|K4A3{N4q>zrrUz^v{3Z+v}Y6g9*p# z{O9@SfB1-%PWj;qGyWX#gKHm|=<0vVI>F!4;@`jT{$9S!1>daWZ@$z||5x6&cBu>g zCB@(NvVZ;7{c}I({p%-n{B5iJ@HG$B%yi*5_vcC%xW_NElSo|t?%6{DpB4YvVRxy~ zngjl{bN71N1^0mWZu<-a+mT*jZe&fottmR>W! z1%IZlf6FWW`M>i1r=9ZKlY0IpuJrT2?+!b{IsfPWs_UPl|CikR^;NF^ckL|tSL%BI z_#a*T_a9yGuYD@`+g|p=pIZBo)BbU@(r@eMe)@awg`#6z`2VTrUu%x}>-)z04KDaw zl>S?$`1Q|?qi*`i1z&QO&i@Vm@ejFtn;l*79gkD^p8oN7+48J@F8Dt$7x=_DKm4h? z-Qu+0-K6wW{G}iM`Pp|K;KKhmJwHnS?jQfsXIA{z1^=wsKY#JVH{JhPPZ#`q3ZJ^s z4?l6M^_#oklb7lI=YSve?zf+~;0qK!b(0_eVZUAdh70~<n^+B8Nau4g^WM7-oO5vpH0VqHvin9`zO`c5C8oiCzJe=#ea9}sr=_=|NJGo zrQdbIUoubnUwoaPe_p%7egE-(-G8O8`0@XG_rA{fmD~QJ^Ox_Jzu$QMN2mVssDU5v zhaY_8x(8h2|3>*w;tfCjTzSujPXE`)&!qo}YyJH1yXOyZ^1q2s2z<+Ne*DKbtp3&2 z|JQZ>N^{I#=X3hZaKTsV{%gJ7zy9Ce{Lv^EeBx~Be_IazcgVAEI_<}4rQhbS{Ph3o zQEyIh;U76l=)XC~`hR@XJ%_pApEu|C*M9uve?Q1cf2(x zhSUD}w!#}jjzYh)nddt6l z`6Kq(!UaD<@i%|xU%wFxYn}H87ASmang9H$E;x3B3;#_@KdE*8@!$LG!|%A@cfDWd zF9-jfFml6|F8DnaKJ{P!_-l`P;@>X#hqeE$_xkClskQPiF8HbclKvOJ>tDajLA7lz z_}Z<7|F-2g{}&u^#bg)!J>LobRDb{YlTVE9<$^EP^QSe(`aimRzqKy-%{xf{OV9ML z|1ZBb-t2;3sPotMzJLCHJAQ!Ee%Yw-tvS|z!HF-8cj2G?uFPL+n;-wken&g?*QE;I zmVkU&{x6{BMoeqMHkTj)CvzpZ{0to;bw?f9mBj{zDaW`rp#u58pQ7{oh^VKUUYT^g2KM>PJV6 zbHUHJN%6nphd=z5yGVh_(m!^*Lg9b#&)<8OZ6fBqgZ_k*Wh@cSGu<8S+izyBLA z-nzdF{^9=$eDh|0{A*XdbBPOnzV5%)9OFOw@*}=*!T(`tE|MXuw6}j+lJyGD>a=;JTu(vaQbd5j+Cy*Gy6}&m zuk>Hww_jY}@rXaW;7?QfX~_YcgbRMx zr*-_N`RDJZc~8FWf*KjV34|JUgJmF9py?(?Tsy6~s|B=gsj z1HSXmkL~D!|Gk&aUk>;`_4(5aF8Jv`2!1<%y*>ZOU08603x3~1<$c@u&yR)2o$8Fg zJikfsCr*g#FE;*r&i4JY$>A!8L z|NQ#jY(-~IG| z^Sf_1y6`{n55ZshqW}E=cy^0({>R)Z@VVlDzq|epr~UENt7U{O!~E;F@%5s8UH!j$ zh4w#3{9Nz(1HN{he-CK?i~sIFe-1tUixwCD&8h@{>c9T}Z*|NLzq;UGGX1~Jzklx7 zZ|7fJ@F!j+_?uVw`+wDjzYcW4x16N#7sTn$rr-K$mzTKU``jk*tu=A{hHlMo!}Fa`T zQ24|p{{3G!=FkgV@F#t#^Eb;+Kl|J{!Fm2aalXJeTlwql{wE5*n&HBKnc`37`{j?+ z+DW^);CH`T@Z0&%ZTz>+IPMD<{8`hr|1ZYr$A%wt&Q-%*@Fgb;ydA%4!;jzgpF>^n zO9l$Ooj=@$PZxJ20Xj?nA^E=*`a^1SKm85pH2GK;{0_qeznwqa#y|eSPcC-BKe)HR zx8%V8m)7^kx!?;Ge_IatyFS{N5`bil|4GGf=MT60e@LgUPWgY78UGgk`Ma-t)=4h> zFPrh_fIl&_@*)@fd>xUUKiuwr|38-e%?1C^&NBb0E&cufa{5PGy5R3p`Y+7^U(&I; z-Ua`h!rS?~?fx%2ci7G@_}2~oPX7LntKDms3x0!+-_GA{G~f4`T~Z%04= z-`{^@nG2rI@8)Nd2|NF{jeo^^7j5H$|EKcLwio^QzyJNJU0m>=D*f8;AK3W!?Qr$= zF8GV}{IK(P+wf!WX@1cKzw#NGzhWzYw+(;FghQPB?;OLwKl6{j^uglWT=;K(Rq!`k z`M+)apRJknr3?On4+P%M|82upPWtNv7yM(2zj&4Z{Mhj6D}^rjRy{xL`x`d?p@$t( z<$^!iwZ0Is0)6Yjz4jXfBhcc?yTQj@H<|k{r}i6KmWAq{^wlq zb&9`ujUWHo4fo#eg1`JVo&RI}^56RhfAgpd{&UseQcL{uck=gJNC3_{e_!n{`d@RE zfBx?|`IXTw_~M^*{;d47HvQC{bK{*Z_(KW)4fG*L{`=~ZA@8~5cZNq3t*`s%|AhxO zKh1@I9oD}Y_)|Z{_n*-l%x}7ByI)-R37-Bde#4Ldi^o2j=)!;PR|22`u(_FzH|QntLxwLOB}zwewnRT*Sh*YQ}MT0`Acp1Z>t}7>faMS(*8f| z-+vE1{mdj6{^nB!zV%uE{102$d6f(PRkQ!C_c!eRw|=;Jr3-$^-voc+6hHp1oga42 z--bH`K3D$FFPghK;}3r}^!K(Of4|E<`_a{ZhJQPmXtnZ(+T$<1GV{6%e$LU-|F#$X z>-V?uXTI-(U##$U{zV)A>20;kUGU2lzWF%+`M3UsE1l=h>_s~N&-v;9;hr}*$G^pM zI{vYK{@bI|aHs#{v}*;vxY*DCd;M+sldka>JtFX}@5I;N@GbLu`Elnv@1H%Z`D;s& zNKP$*+@OIozu%uQ{#Y0PyG8q-*gOtzuU}jDmp^p%fA>43|0yf~q7A>{!vAJm@V`wE z_?Gp4`^T48_c_xApZ;3lOCR;~&&dOd7Q5hAEBz#L*#BC44PM}aKS0Od(%VmeN1k+- zlYTBY`zJ^K%meT3IK;Jn=j-^}j*gGtth@O=ZP4kDyWqbaE>zQEt-paYzq{e&V z5ctx1|NeX6%Z1%t_}?|-{~*r4?D?C&!)Z?Y!2`(^}M-?Z_6 z`{-8>xcYzCMLK`~@SlIZhZh&P;J0rTcsqZljsL+*FFMZ!-@Q)YTj%@v$C##}&hz)i z=LO!*zi8v{y?5an7ybk9*8W@fFKqY?XO{i!fnx9#CS{~H?TZ0&--ZH&&}OMd!Iy#CLByWqdP zUf}Kgm-hU>^w_~p|83h^fp7W6&p*DLf6RIp{%3ZP^|SLo+V~e9aCUDOe5KA`; M z*8jhkIQ_3LnEaF0{Usa!;g{U-stbQ&os7TqpZ@*ZG;nLD{rB681wOdHJ9hArrrPpB z^$m56bq(ny)#>uaqM2ni>B3a3XhynmXx>FP)wtBHfls+-cf z`dL5r_?KMpfK&eHn&z%&0a2(zq{~xD3`~06BKW5`!+pX+D z7yL8Ie_C(#)8DD*?tG{Ve%59({$?xxu#La;rlXzq^TW*iS@|1n`1MA&L7{o~K;_q#Lx>!yDK_}|dKbKpN`?(e&~*)pC%Wcu z#beZa%z>3Z%AUXTCvLa73;uM4xARBY@E3jZ|qE*Jdm%D?UW zJ2w88?yc_Pf8 zzc*e!WQ42#rOH22BmL|5%2Fd^fz{Jy1E)ia#eXzZB?dmQd7f<^n$_V z4XbfV538zeOgGe)RS%<2>GGnIkt0W!)S+}C&hP&d+?cWdUvQ(w{r}+`GjfFDQ*txs zs`;Hc`v9kYf8Z1a$RVF?-|;}Ff8!3l-)raRu<7I6As_GWTAzb26a0350~>zjO+Bx5 z!LR&G;lJ_I*W-ELeCvW=@s7YZ=a6rbdw=ZI59WO*@Wpfe`pLcrU3|9-|HDe(ZD;%G zyZ6T<{&2x>W$vfm=(n$&^T7?HT<}-jC;e}+?swbs|Ci0rJi!Hj>=QcvQonqE_^O4@ z_^Nq>>Jb=Yp>>>%ZQ= zekUd0e$fU0l*%`yyZGV94DNf43;rt|f9i36|2sW4qs;|>ztVrpF8=lV^MxCoCE7mSg=6KKh%zT<}w068x=y_K$z_xg}2fet(5;zT4mbJ1ZwS z_4AK){@Tv)<3IhwA#b|+f7n2kkFEUJHvR8*(ZtVP@b%h%`+mC(|LhNI|KWn4ru?({ zKL7Yn*?G5pUGSGF{kJXl)6a!hz5Qnw{7KsXmV7_`Z+xZWGcNcyd&>L;`6b2<&NMbO zl{co2PEAcU;pnb!Y#5)KKRm9UTbg%DwKSn6`d@qgMm;vpDc>HpL13Ey>X&b?8QwN@!{MY=j?|2vdH)jj};-sH` zo||_!Adg=#4OyKkytHIpf;Oh+uMn+P~3-LRsnJQtvKFbs(w8*Gv-L|1Fd z>WdaPl`l&-E?~3o%BqHR(affr#p#BHF+1>-RgLM|42C#&b$!~5aq!}*%A#qtjYCr5 zUket}VKuHWH7G1If4MLk+w+v#rW!>&cu7@tx&kKWA}SQ~v1@Yp%a9b%;eTrCtBY!4 zYf(sF;$t+(Xb|!7%}CqJF;3R8ybiiFcIYJe9g@PaTvc0XelgD4G=HrflH#3Rm{3UW zQax$i=>}Ab{u2|%|Kv^2OEs-_NgYA9bLdAq&crA1SUv&-)$Jj@&9>>!D62m(z1q3{ zsl|15)rAH$w%iU+K(H1Ol2xpO)8!RQi%J@*R+KfS8Jm_gEv~LAM*)VfbP-I_9-B^k z7A+_Cl(7aaw)=+zt-{6z8xF|wT+FF!YA8=nuPZO3&28|;V5Le)S>w`Nu=Z9nOG;B6 zr$u|bxb_#f{3#g4jgoniKD8nXm+|x&Xe|m8>=%#{vk%Tjt?oMs0u8wxO5*DV0)kWAM!XGjdSIagAa681z6Byw%jMTJG zTaz)j101c#fOc!CH61paRcFK$}0=YYkl8`GH~BZkz~Hx8-AWbZw#VhDd7H6V3l zrml9+0Vt@e!4%ZgH?AJgVY9jQSguA|Wh;ql3x#PK@HlcMHEiQpdAMJLkt_Cq@Q0)V zrXVKKqB&KSwdn>N(-{X>*t|o|R|EX0dsPW|imH+OV zOm=wV9nmxQKVxr>XInw{BbOx;W4Dp2c?x0VCey%smGx;PDBo|#?6~=<7XJN#zjzbiKl*vse*wO;4Syr>H#^|%^`G?aYZqbtx3Jg0gvP%K z@NW;@a2DXVw&Cxh@i%6V-^PFLA(`h~^tTHt7H_|?fG9n^w9Hwf7?I58}I+SG=2wsI3gLr{#R^$JN94l z4U2xiBfhgDtZl|^@SESMgAe@$^S`H=f5SgsJs;x-d@1OV{xk4li&8#*{0{rL_WwD5 z;QQ)i;?G2f_|L%G^SA%dOB!AKXYd7>zoW9@O~0kpMBq=-X8y>cqZiP`Ck7&6jy8@d>OZ}2*1QSu=|wLsaKY32X04k5|L%1y z%U$sFK3VbA+5NZY@33#iT{u1_ZB z6vx-k-hV?&x18sqKYCxN`G#a-g2n;l$ub6c_4J>KYxlnU2p2rP?@)Xj=(jG~l2IF#fFbd#Cvr|8-j=-W=y2{|6WU@-G*D$`4uGnoPX6AdcVe|Mxww`PBt~ z+VPk_2fXRO`MvI;5w~{k)M=zG|1DMjN8%%~-|I0FtiORDS39|<3x3}JWZcaqBG;OJ z8#wd(@Y2`bga2Zbp(i7MuEhA|KY?u9Li%Cg%x}fXUAnvAyEew*O`Zb-XMT%+yf};LG=q_rJaU zv*?hE$bXy#e~N{_w4MD|`poYXf0YG)vF;x;{`TO{DOs`51>damZ`QA+9sIAa&ELue z|Eigtf=_Gz&H3Hl_}{PE<}WVzNe3wYPQ^Te_Tc|F|Ku%Q@bA4M z@U4Sn-?j(;L9d}VxZpQdDtxaA6uYYf|W8}B> zQ;8!o>t=qZJ-!9SuVm5x%F+Liwl{&Zx%&Ud-!o%hN7fK;OAMhw$b{ws_A7ji0mwa+KQ1^uN*23vk?x;4~4)@i{X z=vT*2SLee2w_2!wXD;a>{DD>;v0TnSw8TG0=`ZrXs~^qdf&ZQKdiN-x$IBPr3Cww*K(u-cbIHF}(jP=NJ6R z>F@Tt$v?_{JN@nbMBmL^{D;c^Tc4wJbT;Gluhtc3H_m_e<)Qu^TgVO|-9XoDxITvS z|JJ%t|JbJ#{y@)Vyv6#zQ}n-*BWf<=^{@Zdf4g$wpU~v*Q2V?fTyS^PeQYS#{`Kt- zx--VOvoU?Cx1WJ?byt)1T=<Hx-{$=P^HXr>hT)o`=7HL_Um8wKOP$wf)jz=CaeA{tq8c;iKJWr~lVRC;i0v|7@S~|2oY-wDa$6p8Fl=e{n69ZfbuM zJOA%J^etO{eS4I`$NnaE{>Qfb@GCC-FGc^abnd$--`e@Fw&lJQ&i|wBiGS>`VdsCx zZ;x-}{C}$AkNq|5{BMf?$mIMNszBl6d}noM>3_KM`&(;r`uFZ%6o2@052gHX+^bDC z^3A>QPq*otEoNtk2?f5%6n(`UGBE|m_sl;tLHTFAiAiAcX|ONr)CA-^(3jfgP2u>j z_;)D(*k=O%KyO(R{~YK4)(^-(${**GeEa3!nB`kJ|HF$xazwEX3E_g)-I&DM-;y;n z|7x8u{DGbu+)}QOwAiob%ZB=QSLfSr>wo-5uD`JO&s6?_VrEl5M!2Ax*Ug^G`JZ*2 ze8Ru6m$$z|8~xOa^S|OY_$2E6o-cn^6y7(S^Z#m-Q2%bVP91!MzVyW2*E#}>nAMoYtj`y6>ZMzPm$a!a{Z6R|N55X4=9FB{k7b{E}5MF;uYbOsCO67 z|C&lS)Vijpm^`*>pzDl9%JQqQQ1%AKbMXCW_G`4 z2^ap3rlH}x)jD~kJLsK1#$V?A*XRJwiMnj!U*^DJxxb@De%Dp{fq&<7y!{Fb7x z-=kl-$2k9OH2Y~6e(u^)T{!>UT7`yhC%;u?8lB+$&+ZiJ-%fvPFI}*T^IyGqsDGRj z0=a=cy6T6IIsX|N|5yhMf1u@_t$hpU|IXOZ@Uc$~{DJm-dC(Qke}7H??80Av{5vP- z|CidK;k*Ci>n}s*b(ZUIE%v`fvrzxoCk1?i&K|w_4bK0b-l6{8JNWw7=|!#O{!Ete z=f8yz6pq&Z#@lyaKg6d0hPz^Y6<~1Tw5h+1soZrY7ydV@{tEwg@_Xa^g%ddc-8K7V zmf-XM#@rVVaQ;8i>OXe%*E=5hNUp!N$nQ~AfA{mR>d$EZgiOH38UTG_wpv6Zr|_fw z1G$6#boAK=x$t{ne-ZRwt9`EE4>WDr7i|4uhL(TKhxqzmm$e(4ap5Qb9@_r##`F3= zVbp7K{|JlxmTUYQUh2O9-=OI`ZYs;QU;jq>y+P#;X`^9jzxFJ?;6={=1=ug;->&^U z?!NVG|J&%~)-uW|A3sP@l*f2;#Vyg?hMJ%XUwHo;Ptr~`) z2jwDb|J6@-4XwfP|6Xor``tmJIdp>CcB> z`lWLVxbVBH^WlJEmg4Q-$a0Twwn=N>!^|Lpp%ZIvE|>xYWxoVJ)KDZjQgnn zCnSXeYZbL5=hnzM>?Uy7t={rK?q!Yo41w3PHww#ut5{D~{n zaYEOT_xPm1FRDrr@3nb38To)%eU+IsE~|~H zv_EvcDjrTV+L0`}8@wBkDi7b@K+Gr2Odbz?KC#9ri-xn@*SH?DA} zq>1Cg!iH39;#q01o8pBvGm^0Mg6o~?vsSSU*We= z^ZRgqwr3O7FHldl0ILUyiY6#}>{8QFlK*(czgOWO>P#PC-W>M1kA#nW1zLDz;itL! z#doI_0|rS1`2gdEc&k(3g02|*HamYQNzLDiQSBd$!($$)j*ENXf_i)2^A*Sc|Kgx2 z#6RX~L{@^=v08r1Q-D8u!x_=GM(mt-f?Ajhq|Nju>J2}$-g61#BtZj1tK1==Kppp;d z4?C3K{57-NT9d<<=hwTwic!`_jMEpQbOlB1bc%EZy|VI+4IKV|%D#br8v$Nkz0w|^-4AET|m-DShS?jJayCVnWo_U#uJNc=oi z{z5*#+TiQ{H8|t)O`%UVyfCeUuYA|!e`pYW=PaV^jXEb_I0P07ows_?Vkw`=TKZO1_>Kuwt{7h{ zYKz3b7_s}GhdKP5>GZwlE$X*$M2oK(Sl6PjQc4smRL-lV@9I&6Z>se5V4pBlD|mJd zm-c*NZSOCVe`7{y{{2wlW8S&3o8%Ko|Bc6{=xqG z;Yn5h9NU#X@Rx_$`XlAtLLAzYjt8g7{(V0_?EfRcSNYeW>@)I>2IIfQd(bua+_ayQ z&zq|M)^DFx{U3Vj2h@I))$XTko3~1qUm2Qxn4$RB%Xi(s2Ip_zga4XilXpw`SoXhx zd{n&(?Z*h_%`jDfz<;&X{U1vF+2zT;q5hnQ`hRB{-*GAX90^~yfAjC_D(8Qfo3HSZ zzU@@`;_X7?Hl8T)!8hdQeE#N{(mtd95B%8=(ii^pRQ5R%{|NwA^o_sjwU+o!Eq!0M z!7r@&*KZx#gC|D)>XG{6*6^3u=#TDSgR|5RKX1B;U4QU}fBgdG0Oz2#zLtC>`=grs z{$T4&J#(+*KS$$#xss2r|GIxakotlAi09AFtW!qf>-!(AXiZ<}__}}KfI@#jj~yu? z&o8jlpF3*hqd7S``2ZL6v&GLXf(C$oT~Km3e^))j_J6#2QKKk zdBx@avzGL&s?Jx0zBr@A*X`S#6($aijg9ro2ll6CH{uBC=}`4g@CAN#>QE0rlOE_H z=WqD&ovQrZ_5*$Bct-W#eiL2)4{$-Jo;e!F;g?YBd)!s2-eYWu4&Oy=`Tw`R?WPcX z$Y<_#`ULCG99yHqcPM1gQVpxg`lm%c!x}67DXq${DDja#pyt=_%l>VP{?xgb@S#6Q z2j@1j6N*g>0WRo6zs_doXFY2A@m&%G^(^Ew3$S|N&|bXMW#6e_`9S{P)u9j39(6@o zze2qb^wz2u)&=7)%B23usoMzOU0RJxZ=>`@uGZM}-y(m3K5+AY#Uy@)Hoh=S>8Dr8 z+oSY962AUEukTYgWcjjRYyZ|&>&x`=MfdM#T>U7jJ@|LfT~A2-UNb}6kGI?4>;5%3 zqqz2<&$IhlN_>ab{%vi8ulv{FEcJ)^w=ZYsAH1dVuc3PQV3(msIxg-V>IZ0{5{u>j z*p~eJxLP0SHdX(C(jVj-;OP{&peJ&tw&d_{sQzbfW2%3;3W&e|?UxU7_`gCvYF(usHFpZvwY3E$~Y3Hs4#$db|0zUMp@T7JyBpWf@`lkQ)Gv)qpQ z%(uUUrT_Q5l8}(IKfl`OkM3WCv(yjH&gykP zr~i*=`4{W6Bk4cVAN0t;4YfG@UsU}V`3v<}Pfu0f)EQUzzy&vv;;jur^DpW( z`Ne;|oR?icIb5xO*ZGH>Y}mKRzsZ_iCph_xRr><~-~Bzc6Z0$oey3mfmc#F*;Y0rJ zzf^t1CISxi9CX6@UG)UM#Xd|{@-fR1->&bXtKT495q#$5^(DFTcca*USUSkVqw=rr zpS}wGcd4JC6Wjcl9n3%aM{Zp~A0j;+QS$HaA0zcM%ABYb6O5mmMeVDU_XyvSLFKL| zN_+=-GeCc+KfPZtKJ4?;pV5b2ZT>_g`RM(h(`NkTmi8w@vp*~EA$-03()}xT{lrwi zswg^O;Saw_{u3&beQT-uN8WmXK0vz}{o|4BC-4=#;ht|i#nq25sq)KRmh8W4Z*=B(Q0kwOFcK@=o z!7d-Z#{V12zBxQppLHmFjXe!b+^T#F`epfzH%ol&HkC{UJCo2Ap$B2L9 zCl!w%DE24t)yrk?Wjq&*kM?IL$VW?G7YiDAn4o@w?irFk(I+3Iud<)(Kc^3M`xeRm zlnMmp`_*CXfmk{Jz^V1`Jd{Hpx{fLRQSyn?{Oh+TwGN;=u6b5U{ym!hf2r()p1=IV z3OX?EwF+pNC%3Pc`12tjb-u@MHu(MtUBJ^R^j|%XZFEUi3{ zSJf-=c+-?Mjb!=a)#P*Y6#7ChUv&S#0oBA~{MfqIgOY!}e*Vl6^5J+)mA@)|Bb6^6 z1f=M-jn55~`0>w#+PCM_{$}PVRiD~N`Af_G8k%9aH2E+6=Gh|>-_Y=@s{LzRsbn7< z3O^G6EwvC6^EOP*Mc2-kIf zufZAm`^WkfI_J|*Eq%}1$VbngI==qiOnmpe#MkrhHV651D)}2q{*afBi+ji&^!kR0 z?D%?Zxxd!Wvh_vjfO;tAIRno^5dlSa9_e#j@(=sm@=+>(OEy%vSE>Hy_*s?15h4J- z5$^hG7EZ}o=}zMg+||B6jN0pBk5WX~gYW&cdMyql@~ z+NSuQ@;-gw8m`7~6#o&_(Yy zk^JlFTTuI>=a0^}7MsK6uL}-hM3=wrUt`zss0XkUy-NI7jk9lURsKT0H8w|Q-}L(9 zeOGEe<7$OQe0ajIZ6Yk|K)o-K+En<4C$(a1UJ2 zer3LIz~LAEi+sRdLQZaF?|`RM;DVk@zRK=jaf=N;$}=4o_rL{Rv$pCJ9RGLP;KSYl zPp7~I?bBq@cn<$*Reyl|3o4)SgAe}0;lE~spI`aZs`NU$|Ii0E_>tsOK@-@Mk1sqc z_1~q{pL_PA55X_$Cz1L$Aa~GiEgoR^-&i2lS4#)^yHz{Sv5V?k6uR|4a6v2N4gQOh z|6iBMuOGiH_47r_Umg`C?9a?+*X0R(|M&vxSJl3y4?PD|z4^E3?2m%?lbe=a@b#bQ z_P^bi^ocpAt*-^(QTTq3Ha{R2&`}Q!xP_BX`CCvEAq(O9mH3Y&AK-#kn)1R&9R42J ze(^cN_eN>o9Lg6+yMt+Gg5{6;Pq8cXg>w_xXUD@DKfugb%rZR$16$h~VE+zMoO^J2Ah_JC*b_ zzxiuf)+IK7_15yQX%-Cso;`Ef{mI5TNfM|(IO`C;yA@F-UJHR-Ks%hB_B$iDY`|;P_#E{nHX8lPYNnzck6)q4rmcq@OPJ!5BrI#lD^sY#-(;`>=4m!cSN8XSDs> zz@JXRKWNgBeeC>%N@{;t=)W_A+VPR(?@$4PepJHqS}^~xpN{?N!;4BE4@YO;z&Gg7 z-nX;+Uu;zUW2is4PDaN+a6vE3KEuv`EwAE;LjehF> zl@$G?wEq|Vn0jesdx@VhCv<#aMjv{w>%Z<_gR{&(nX|FK?0>V^&;6=?1^N5y=f%Ry z2XY4;Jm*1Kf3x6MQ~NIi-|QP*{SdgIPwsrG4Tpb9)lZPV;2%_%3+{mn`pF5`uN?j_ zYWxNK``dMDA9>*E6u6-OTk+dB9Dd~(G9bVQ-`FQ#$HhHxabL1!Okr;ROz&y*g=bJ( zU;WlN8eRU?>nFu_#Sa$z`|IcEe>>+?_^RIx{R5HgC(;Z2SGfJr0VTxx9DV&*wX5`n zYcuJiCrbNlDqz%qw)OfkCzyZif3*EA`p~;q^=}^``9$I$_(+GuWf$f8UWU+;e&WrME`-|OsK`o}Ic-QFQMebIg? z)q%YF=N%r4E`LEjpmSd6$L@c5k7hqzs{D;qzI(M8oq6t?iky8|x0pV3Usd{ZykPuS z`{rKOejdCz)V^W=+(`A$>KgwyyE?|o@-bJdA7=HX5B2g<_piYj4(-9!ji+w}r!U&S zhn0MsYTsbTiGs;z)~Q1SME-3G{fGT5ae^2@y$$IbDgWyB`R}xZO2PaC|9$Ac(i@MW zk?^6HpheCtzasE0<@+D1eT4E0=d(mgU*Lj%b-k}#KWV`)sm>n&KK7r^FaDBeyA|c| zZ}iplQ=QL(b6zwx@!x`P&^4XkS;OJ)>reP7@BI8%SM%Zgh@n4#3);7N?AIKAm!wes zA%E=C9*P>c11{+AAD&6#@K>nwLm+?jFXb2ie3_V%9DccfdH%7_e}LoAU*H?`@|s42 zIQ$3I`4Kw*`Nbc&^5MN4{>LYH{&CJsDA$2I@C`b!-u;(3{9)?+0iFN+;-Ae zzo2TU{9zybcF2zy`UALly7gdsIXOOp@)6~)Q|(`mb3YxwQ~3*f3jaCL+mg z|Li|siQ)nNz4PB#`yPwB)=kPaQ55j=a>J@({5qMr-lv>#fN-w zj*`wd?!hxuF2>j|4eB*hIp9}luSLpd` z^)K{=_Z!l8R{`_aE7e=D^Xnc}=f6OIz`x_A{N=AsLpNk_^2yQdkBUcr^H+(KwFZYj z>VZ)CqyI3!^`E0JH{8PEzo_Xa(jmY2e;+>iFNgnxP5lt(AVEKL3jG1SHTP9Ee`Wa3 z_aZqVee;X|zwHNBar{qH_FvZ@znpZ&)jjwIJ$-rJBo04MtG_|+`K|vK|KVs84u8E? zfAiz#vw!uLlHVk9_`hoQ2Yh24wvBi!{lh71?`6lou4?%g`1#FWUh^E=KOE->&0pXf z;Y7>-?B&bObMl#?>bL&-LJrjn^NYXut&#mX{FN<2%SXT7t8k*_f5YSR+4|?P8k&66 z_y-WijI-{@@&W4c31PT+kCm{$ksYWm<&t5BcMq zE&)pWO5CBEi4E{~7bE<7yH<&TaLm@*R9>u>M<&Z-Rc3QN=fZ03UcJ(fo&h z(ZBR2jc+8A(3C1)W-A zAUl4#Su5Xh{$76ZA8E9Xwa;Jq&zB@Uh2BTPNBV+3etoH|pZnzx{eM*1H}LI=QvME= zzM${5O_TEX<70gMGgUt~Uu)~@7cfpor$4|2ZTIQC>l}W?Ys84_4Z`)Di4NaI-VD&{ z*{6@m@guAc!upO@-_wU)RUdJvc~}@XQ!rMdeUOt-=d{Gf`WLj{y-UceXM!4E_=EU& zSrJ2?Gz+;ij6r=rO_Kfpp1Gmpaa}A$+g0 zZ{E4&(>qzs-%$KV+MkP*ArR`T+nlAPeDw8|-VyYTTb1h$wZ6#=cx8VjYENfm4*N>V zr@HxYyLjh1UMq4iyp5PtSf=najT~{7xU5^VIlnl=v9mQNb9; ztDZb9`^R#%{r8J^q%XXMRr_7-|D})b0tXcG2fg6BSB_s;<_CWAIQcMFD*G1Y_`6F5 z1iIjp^UEZ@y9VVi*k{l43V#*hyP}kjL*awgd-d_{ocv!_>FZcSdgC~oKmCCoE!ppp z`^Q=8Cr_yQ73N=|{SvAC0xszG8TbCijSpT`<(Jt^^_M9AmHARquoB?njXeK`)Bl2= ze^Va7ik`iE#U<@e;=EA%e0zWTK)27je+|ykKK=LP18n=Kymmg2fBwuKrLQ`$x`%u~ z3txHjKQ4Vcsr{E@ltBl+dv$nx-Tu#bdqo${{+FplDe3r=?1TF+(of_|8}>R&zrQ)-hDI0M`P1}`;`9|{rI!a%;%;4xHbKGa3sCg z^+)%w!5Qte2Zvu=y+-2aX!wuV=%?;qgELI^05mVVH7Lp*Ko= zhr$QVN_5>6j1T#rQ~bLpko=wJqT?U9plffh8?rtE_^ZAqM$E4W-#lM1{E0F;3 zR{H6#NAh`ZolD^*`ApSjz6#o|r#(&Kd-dP-e%qhb6KBx3QN_>F zYjUfQ`9GH*q5hexihuJ0*<vUo(y@J?bYopF6+(^YgvGKFr})Yiom_&-qIkU&pci=c76jKFUKs{}J$! zzM%VlxLK}0wdm*9xugKDPbgj81x(*^mli+H$)`zcUOth=r@%Mpn%if{{%s5YKP&z{ zihpkb`G2+V0d{=wTz8&-_kXIrLE^Lghu(t@{By@IoP6%;Ws|=7#INwsks=(vw>fE! zU;lR~I~qZMz&B{cJu}|n@W~Yw*SsZOt(p{?vi=CH5 zf0xGpi#Gi0{xvwmXsn(ny7T5jzWuc_!2e^!e|yEhyR4GG;@@cj)E;OH^ge4pbE%Zi ze2xFXz^_B~XK$4F8oY7%P$Sc~|B1H$i@_750Tc_IJD@z^vAJvoc`|_L?1fU z_>L>e{geG2a4MYrLlWxw_}BLT*_K5gm>U0)_NVe{11OJ`ef%FO|HK8M{fDDE8;19) zSpTl@vCc*f8){Mr+%5|I^!?g*M~OU%@6hmTii~7lv*JhUpX{LFm#8uKNhu%w{NS-l z{$8zr9)>Ee@PMRo6I0q|WTt1QkC-^Bb?s59lT${vxTDb>jnXr+8>JElzgQ^sdxPpKVOsD1j#l=cCf5mT~LvKqArpd^d;3ZzkbT1xsT zK>1z-kc_T&M|zB!n3kN7oSv4QGC8|Rd!miZ5$WmU8u(86&|aC-jBX8mep1J0jBApS zo+^B1HZnu+8v1S}51E}(Q^t+#nl>t3eKS5Kb9742jO^6(w5$ekMZ2eDWhIRc8^`hV zi6$#N4a8B2y;DG3laew8dySe0K=wxp5wb_q>e4Ly4s&KLF{DqE~rtUf>V z+vNiPSgi4D-BA20Hxa)3Xc@!hu&zc1-w1d`jo-c(_(gU6E{_<7`?x*6A@CiwBjeXO z`_&5qzm$%D`aOaFc$~55R>^-rt}(*E-cZiFs}R`qQ=R{jT}s#C@auhU7|v6%Vexy- zRFy10x>f#FJQvS%`1=I^=JfFVd!pdK=jA#@1->PH|CeJJuG8Q@pg%}ouTj)6u!nRQ z{?EQpa|6f!*HZrfgy%mo3jWO(n@<+_7X2yPTj*zAtg&CDXR!W*f245`>%O0Q`nH_A zd=Mv}`TNBFD}RT_H($|rd$OkQU9F9KIsAvk{xs(KSfl7;q58R~T0lQNMJwy0mW_!iw*LV2gQEW4WwGG@vK8NNp9OyWcq_in|07Q%N&UCv-{oR`t$8KZ zxZw;3pAr*eIIddpk-rji>lpD%t@tR15Ra)(EQ#gH zuN!X({r@-C*w}#QKlh(nhGTIp3;!1UryQvHwt`5?lY@6{LPz$ z{So+E2T1D^u%GE7NxkJ`4d;T}jEoAmS@iis$aUTc&dQ zlOyMM6pAz2ig^+;&mi5di*TiUq0W!Sw7B)U%;oY^Mypi(&2saYG zUr_4DfEuFzCMM?Q$(ntu)+O}I_-_e6^r`g@e1o?6Y{p2A|DROK5lNb$dVcuh7J|78FA7pl==9zEt;M=Rf5uWUHW;m7Y3 z?GNFg-_Fx&9=KUu z#s^6Az`skK>uLUvaHHkF%-)SlIsAY35?|0i3`T_VqHfXCH-?!M8>0S8z zkMX2v@n8LItlU4xf?t1lD89EX<^TNR8x3A%=VyL@S13O07tX(nmj8Y87W~NZKkWX{ z{O?u$te|%IC_g}3Jz89j|5k7+`-uIic8UHG*CYx}&uXV;} zcX0Tl)BqXsFY=W+D}VWSY3hbd4*wTtsC?XWmA$!`KmMD&;vLH2_lPCC2L8?G3x?mS z$Mt78{9c22{vG?(e3~fj=ZIy`zsTXgq4wv2eqw()>|+#d`qsa@s@$K}Vt;b|`~Q%f zU>_WpNd9*D7kUrcW$9n6eb}e=w*>#FpMg4`ZWmSgQZ;YHK92tn{O1QzI_UcgMa%zp z6E?Nu@OLQv0sokXhNaLDY|3 zYW)||HCp*sJ8+iWe($S*{8v@;p9A_y{clE&nvbZ;<4EPprkn>4 zaq?N-B2@m!x4`#PEdZn|=!I#g+48HBfBu!SKan%)nS*J!1yFp9e@M8L?QCTV3 zzCp^&lu_eSlCzui&CZ;dob4NO6wjNPc;0VHMv6HN=>~ew$y?vz;{WHsQ2sD~(LbLn z%JOf`v9^af{PNdB(+~Kd2uD*t|M&p-&sy|Da}NJwH9r;dbwmHuey;xX>lu)5MrP9J z@kvd3r1wu7n=&P3tH82x!D+Zy{8ks4XndzAgfH-8RFNj8= zTnzAyq5DD?gX=T~Jw7QjYfREOj4+!Cey@H+!Hv)obE?_N=QSfcQz%O!c^83CO34&) z_vuxro(1$NNY8w+4u=?pn)-tAha3(O@|Ozj<8XXZ#*pBLL%E^%d?5y-`7#lY7+1Vq zW>Q-6n64wUg2u?H_oI2E%#;k8=HUNG>#hhq59+Vz9niq-R>Pi2Wq9 z;p96LTQzAf(kpdTYI0Jx$m2etG*oFW;%y6QnZqD7(3cMWDGgk_8-#-l)t07y>l36c zK7snaBbAX8Bg|=W#oK452=+&|&F&KDNm8>Hng+U(lJS)$%)s-2Fyo5%&lqWkd1nA~ zBEHfv1J47PMjy)GA*P_y#Bt+#h#4&^Z$6TmnbM@k#PK6iGKEA#zU(+TJ0&ekO#G1A z>(AkR8BCS2Lwu`eKH-H-B4KPoT!~(p=_4m5r(|{=+0}>Qn}$Q$86;5gN`0lpKIlbI z^!urqFKOA$n+bD6WXRA_spC>creq~I>6kWgd?PdHfijZ~LRplbbr9cYreSq%<{J5Ofd4VgHxijjI+SamOQ(OZzId@>EigWW z{cnprNF}3ri0V}@i(6TuqTeN6Ow@C2jxllul=WTowH3emwazXMzpI*`=)Ok%k{rHU zjB~l?mi1kB_-_sDR++<>^Lu>m3##{oo983v`oKXhp!d~U-kZa}5~Y;5Se?C{-;&;lSK`A!GUkkQ#o&~u<1chTn-`}X*^ z^-ps6!=%9x4*l5$<^Rr-5AWsh&8G?9C`9dP!VlQbgdrp!&&V={yx<^r&<=B2)aUTa zd`3RJACms)_>08Qy_9>eE2Ry2!2uU^Sji5%IQ*CuF}|n^B+8qG?;(jf_`vfcXP(6EB~WLS@3~C;2vvdoDdXSm0Me z{Ri{UwkZDH=ShEb{yjoeRE0a zbBldTXs~i2hhMWhd2nwg`=j&UwHfh0U(6wu7aZgcx_j=^!#VuS%jCm*g6xBiKfY{0 zK2k<@_=(rb+`-`&QRi>EH}d$i>W5EX@PA`ji{Ci>3rhaxM?8Mtp2WX%Sezj*IN*XF zdSKT<4!?8}%81S}ynTq4|H=)HOy%$=o+XZ)TX}qss1i!K!`bmatKFR49Db>N%7=@_ z_4V|v`aa?3eH>%R3l4Gto&M(f<{bX^itKDPMP1-86w@LT6x zoxtJ$sqnq2q@Q;98MhQS(47CKVs`| z<<=9vE064RwDaWA5(EEV{MNmsnBOK!YsGH{t-q7_rkHaJ(a}aj~h-t+;;`z2lNx|JA`3}f8&39 zHgfp2DyZ^h59vRxgRtV~6sc^;3l4Gzb$b8#hr^faE2Q%%{Ry|uLdJo!r|Yx zihQ_BQ~5>sf&5jsgm~|YY(IC-d2IoQFW0w7=h_^ef4R;@UU1+WbaJ1=t2unRzC}9k z=J5D(or}ESfD1a|*Dggk{ORCdovW(Lf02AYGR|)!?C{49TeXA3m+NPwb9@z^f4PoE zUU1+Wbk5PI%W?R-lzsD5qWZtif0Ahbdb&nV-&J?aX8Ye-Um=d%KT!VF@$0`Do&Egc zqa7tV{%_4Ae6tnVPaPlj(})+ck(Y9i3+U&Se!9rv=Ys!*RR7fRu9B@Ie{yMZ8$G==3C7s(we;^-^&>eZf0T;C8 zrynon@a6g_pZl8h^M=z1v7f+~>!job2VBr!iZ%U)!>?MK@V(!W{O$02{Zz-07aVXw zPcJF{0f+zPPV(VuOZM3g-@8Yw;}91da6vPU4z0)G%k^E-Ic?;F_Pbo?B`>(@_@QXa zig$b?)^AwOXPlWXY{LSvMorZZF+T+UWqhQI)IYQ8rU{R8{Qsfq5AN2KzwG2Q|A#t; zyx<@g&<`E67IXOX)cJ|0=EF@Q17OJ)Pf&*PlG0JMw}9E@-*6 zGoIq`<@!45JSu&|t+SJB?cjh5+AU?@F%Dm@uanOFhVqvkzFcP~FF4?W7OAn0tzXIY zb<(*MezY|50^*0rtDH!_R&HHbY);s0jhT!-mC$x%QF7cl;M< zABDq@9~Zy}F6ipw<+C{c`>68^ya&lXFL)q^wQupe#rT)F;D8Hy@0e1>IDEPOP&%)Y zf4FssaxJ2rTkej#DCC1}FAVfg?)^oi?dvh3entDv==&FaA>t#QZXfh;Iu@JxlUP4l zPG4U%Rq*c-_#QPr<vcrd5K%LH3n>hK%^^?*$wvhgZTSqC^Qo;cj^!X27>%rl_ zv0C|9LiS(B|EmSHAHAZVKwfa7TQ|f#<+Gl;b9Q2IILHO` zY}Y!IIQ%IJ->u}Y%V(J|neHg$bKB&K28ZukUoDt&EBg~}opreWjgNX%dx^uB>#Kck zE7`Yj>#XHkYdFXSG_U`{XF2?u9m$7tH|4KB6GHVL?F;YCrXepl;DT1Ycp#C(Z@-3o zn5Rkqjd`K?rSB5AaXb?$PlI~?Q=I&wigJHA%z0QvB= zqw?#bI8P$jz9D^cKQ3p;3l6xTul}}$ZNK~0&kIi;#ecYU^l~jd9B@H<$JAikM{@nV zbmlhF|8VQ*FcgR`Af%N zEQT~CvZI;U$3t9j;2ZRd#p9AW{2yK9!?TU_bJnuZ{3X-ZtRnuM6t-Vp$^jSj)t_%V z&*49kLLRU`t&X3r>i>`t@J;+sbkbutR>}EAdD{6(p4~#fKNovw6(Rk>`CNsRzquFa z2kPs91>c~zUvaVZ&ppupGL*g&Pv$V-Z8J&!o+7sx@`9VJet=$I^lEd-zv~&=KQnJK zjn7JaPw6H;VS>_?P&OvZDUB zK*|3K^>aj$zlnepy*}vjbxuETi2V~>Vf53j)?Y%OG+6&_<+z=F1n_!_)X*E6^`C;y{ug=_@Aoqd>9nd(P6|B0dO8(nj+ z#!7ts{JxUy1n&%f5#`?wzl(-HwtvZACI0-`q4IAo@C}cZe_{50&JG`T4fM&s9=OEi zFS&n{bY4|HM!Sy_a6$VnXv@~0XP;L1v#5ST`#1&aCvyI(wEa0^k0p7*0T;C5f%{r< z{LB5Jq;qU1`yXzfD7jY@9B@IaJU5QU)1_*=T^#Jo*g77^8khC zQu~?28}p4S@GK~BLG!9iPv+LAu2B11#VLc}E=2fVWiND!Ab<<{=F4xi&HD^3(e$oJjl+%WN}| zLR7n>h~AMcZ9ARiw7ecmyFUm-*BgZ+P6+(r26b0e_|LMXB)`@1(`P50k~${F|3{Ne9Dz4mPm zKMDG&?3&S+aGl5UhrjZt@-7bl`Msg?_q;^>o5%BqUu0X6R1UxFI>JZ$+Ak-CU*$Kl zM}^{ZLi8Vc1G>KUeWN-2+6v!~tL&WngvNiNoUrzx{iVy2|K`N4VW9llbdYo!_6_^b zV7$|AA3HsNmG9AUy1=*O-~N9hM51}s`272TXs60`9&nHgXosTf*K+dN)|&h{cM-0) zjIy7vBhR0*;8&|2 zh_j4){4G5GcJa;|2LJ2CxkowtBg#HVZ0Ry=@LP(ZFLy-*{0zhO1xwcB)HL4*wN}ZGhyTJQlBgqt_(grn z{RiC}m8rdB##D(3C!dQW|C-FfOaA&$)6Wc(&tJ=GiTo8tKQH~cL7op~(a-gzDSh2#mEK&S z^4I+r@$a|)#WKR`kE{2>JPtoWtxrMu;#K{k$ftEJB_CD3JJdQDufq51PlWcx@5_g-=J0>IO!{M@e!GME zH{9nm`BcdZ%YUEGsy@%*w}s8>^MvoW4~4>~@6xr6+5N9Zwjue%7@{F69Oegl zReYS^lD1$pf`TO;!O0Tf()A;SrXL0!57Looy4&d9X@croCjx$(aqT*D_$T)f|G+iW{&h|nU^&D2<_9Y?WX?5;ZOT3lz-1|vO``SKOr}4`ljrh>EQ4is`<};`CL@>!+-O~ zf7UXlkFZ9QX{Q}>jpQVqJ56>Wy zFVflkkJ8s)|Bqi3*8aDBJ9QF=|Iu57??$@|<$%KX_b+*e5tA#djm!jGRz^~35hm&5XZaKvp3So}?){QKo^ zP(9smf3)&lufH9Crx4peb6VL?3PtSy+>p|lw8~JWj$wS(Dt!Iz&9@qV$ML^V&EG@0 z?p{pzUd6w^{uZJAo;tjBTMoZ<9l_~IalW3?AJ?0z|0IT}A3rfC26<4%RhQ2rf9*;W z_?G(Z;AW5nNvPLtynIfihnLSC-4WGVfw}4jYJYVi#YSI5+ zx)MJ0#&JrO?{OM_1pTk@{J2{={3;I;zTThVRrr4SM@ZiV+uwhL!~ae73qwBUYp_Ea z|62K|r|)a4s_YT?mh?S+cWC-1Hs;f}u$WgS_bGwX@uxlZkvu=$g8%&Oq4@J{@OzI4 zuRjy_Hd({TXLtS3^mV;K>FX>UUOvzp(Azs7mHopO{n@aZV(eD+W!N{f2;uwdZxPz> z6Rwmz#o@<(rSMVzQTf=b@cs5J)*aG51>c~b*KNu6-~Lfm$$uF1M%n42#J|6MiFb#! z&kK7!^&ZE62{r!h)bO3f@`pdLV)8W(|5It-gmcF$zLlKJ;)EY<`CEKSr}F~eQa{-~ zobb_p!8~8oBit)VZjtIgmomo>TLvS?&L9x%b7^TK_z=v(Hl;{~yH? zzVn3YA5i<^I!hA&e)&|14=KOEH)v+c&9yoHi>dxwq%YC|)M!cJMoQo7A8f71;s19% zR6f}E8T&Isk0Rl}`TBaeC4B$e z<;)jl{ludGf3zU^V|>=NR_T9L!jHCo_~@zCi2~nJKOFrZ;m4_-0G!K$a?JAy^>g4} zRevn=uO57}Zw!ZD@esACbbN$^dFi;f!@u;=Wm!M5$Y-xszPLV7?cZu7pJ>zfCcKB{_D*NALS#)Y2DQ|{v+7`Gfsy*|I3oTZCYyb zpHBG;=RQQ6zI$)9miEDdzvVN+hi%8X5}*hN>1>z2?>v4!iIYzaHNOb*@#Ed1$tObo zz4%tC?HvA)ZlUtWKE7rR4S!5V9O5YBfN~48U!|Sw_;@$Pzh8fPD*L1G{rWQ|H!j@x z?-QN=_?qK?v(g{f1<1)=llb?~pA_?3!i`@qKE8(?A334vC&F=>ntU|<)ca3vuU$^I z?=1Z%=T!X-dXalC-#=6NZPCWOgLF-PtK+|P-+ABpcl!Ld!>arRe&T&Reu`LE65RiT zbOo)l>c+>M{9lB9P<9#mY1Y!@FX|`ZJJIU=7;5f z@Gb2!IR1;P`L|fV<19+$yxA~+_)E^mvE!%r?g^ET6XO>OKU(<=J$7gT$N#PG5WcDU z#X#M+5&!=3Jx0yH8fbSWLc^r-6EYH8HEkjecS#cm6p6Dhd|0yd$pJ|6U1iuNK;t*G|efs!} z^t6<;?5-Uwz(I#YBnLjzfP>!zfDKzwh|@BBQJ3fV(1| z^kP)% z)S+iU)RtqOh3-;L?V#k`NMx_{QMJv7v(nRA*A99e5O!Rtz7t1eW&5l^*A77miDQ(~ zGqULzrL3Uuv~&!46~HzI+a+W}%3)(tl18RvHt9P~oH*^1cyP{am^31_i8^Gext1k` zT`JKbC0m#?d1OtmfK1epH9?09jr4!U3MJ@ufbqCez0$K%vr{Lf^i3U|*24lHe0)#P zhniF}f?ox|jfVnKDd>@B?Iwwikmll|*RJKZduMK{;q2bHl33rt)Z-?&*!guuM3BApUL7emTGn-xGxIDIoslrOEek`0=SiKc@ur z)9lO3XJiqnUH0|2Vl9Wf$KiXP68Mh>@Le|eR|bX0f4}IvPl){!EcMUZUKak+0{Y{P z5+C(Y^iN*CyT@6v|3;PhYW*+PC!YA9;D2hIAf7eB}9J-rocLvhIGo{NHmE9>NC&|8XZPwdeR>_@m(eu{cAX zyA#Ym_NDT~h;yNyH;lbP4}#CR3P_Z~9d&g2y@LN@`;~mKzenrO1^yGj59r6X$|7E3 zJ(HA4;yba%SN8_wV~Ts-O<46*Urs&;#QHMF)Brc0{=9r-{G@|i=q~VoM$+pgIsC>) zM7*a3@J)4&P{1esiiCf8!5il}{M9+azbk<6iV{EIgTk+{=7n{f{7dW*^^+Npe_-Dt z?3>n0q_3G<$oTi6KzcaEJ@f|jk0VciA@s*GJ|)jra{VdOi#WphP3S9k7oq;*S@lId zMx3+c`AD><#D#PK{?sF5W^?-4Rq*eg3H}55%delYMU9+!R{bQY1pYVp<^GGD{NF7v z+DHEe?2n=5=?8q$ulkP?1>gGn!Qb7J%i&*tU&wVvp#I>r!I$U4NC$kK7Om$!A>>oR zsqH^-d8+UokmnX~_Q72; z!I+;`*ML4b#2FhIAb;0`eEyZ;O9%exF7W^TimU2#@*noI zz+V)=_ZATU{tdNn~U;zAQ%57LGqJpXq4a3h>=y8guWpUCpv zTpp0W(+2-5VaKJjOW)0hs-)VL?~auL{yhc6pLFWZ(wuza?h^Jb2;Y2&m(QSIL-|KM zK&S3m)r-r&hTOk&RgBTH2IXIu4SvfS;qg1PdEyZc|Ci08d?qBZvEgj@RcY*(}4EV4zhcEZ{b_U_Qhw}2*@nwk=?A9$w zaFvaXEw1mc{>^HUe^`*vGnp|@ha0_tqYZ@Aa-7uWr$)G*~s6{rxqXP7G6W@-ZPCy*!S? zKi*N`e-LN1>mHiF77KYJFXc|IX*}~<;NF;0)1O}WvC=W-MJ|1Z|8NLoQg? z0lmRJ(iga(?HUY~`+HdAb7(N}5BUQp5(O^k@YgEK{V^=~PpkBWeB6^szQ8wEX!kbq zKUVd+oWEqjzxb~ve{Ee5!qL|Wfp5^E_rGwM!}qB9v5=3qu*#>3nt!YHPUnewH+Jx8 zGH^k^X?-ez!@s*d<=bfSF~7_h78tzl=1D9 z`=BA<;dT-5%>-)Tn}*QP7ciJq^L5lzgl1;QOJBr7Vh}Q+A}9*cOsEK*uwgf?!f6+U zhM3_*RI%Emds1fBn51z%eZ%EhzKJE_<6tD&hJe{*V!lk)#PKPa60WH>b*w|mI5Bl1 zbBZs$ee-1C3va}98QUQK57T9kVlt^B1`&m>2IKj}7RsBLg;J(Z%BYmgl(giO2U5qU zW(OrVG&X3$g@6nCR+|!`y$on=HbjqWF?N8NNjKJ!~S>V|0qrI*}ZMPqb=gnwZEI zd@H8D`EHZb#cUy8hU=O(DxI=wa1wrgnuy z$&$g1a>=z;;L4kzY*@jtD(vq9>6dGq0 zzs4)YDHkOn$`+>W-a=G ze$}mFKMAKp)rqXZ`|G&~Klb(cEx7P^%K5R$f$)v-(S?upFcY-z5z0-_G5h{t&!;k` z6M|zo)f=mcCDlwRq3C`%U{YxI;6i-$idTIJ)~D5 z{}C?eKG&AzT=*Z#_>T;PZ=^>TKKe&O0u8!BxS+3W+4(FN{^V@Ka0G?#iZcBC>feSH zFKyt`f29atIG{eCwW|IQBz&nYp+%Z5t-3|{_{ zFX@o}%Y;1$-Vc!82L40uLDv`AKAVgGR2jZ-o;NA~JuI4w!SR>-p31m78kaESwO+iJ z;r6<%gzqBX*8d0>bYiVr+4EWM7)^eiE5nBmdCTy9`>?hsVHonVaR?Xm+XW3za`FFT z4*|HlQu@nzh%#3p-Qw#AJ9~4i;U3e_cfBg)Ve}OJIFlRtE}P&j?dLB>d{&qXKW~OY z=uh#d@B`yqMK227tQ6>nd{^{KO8WvCe5hM0;;m7<#26j=ht8L!R-x;=WzDtmOsP?qhmz8sr_qA>R=cO>Fn>7B2jGUP5rZ6F&UB+6jid z5Po8v1VdhS4&j16+;k;-KK&{cKIXNN{#)a3)=Mzth47u?x4i5e!Ugp+e9$qktYGW^-~CBG+<%kZvx~p;^*BRb`HerqKeaJ)1}FdhO8(vxRR6RK z-w{{TkXJ#&-?Dtdom}{*RsJ)-qwF+${G&mQRVF_WXQ|TA>Meu;nNShaOwZR zLiNR$WdHQ=*9stn9sgUbv7}7k-gCgd{6qMlMY|uIz{OwAPxZO}!Ra5+zuwh)91`cCsLbGY!2EB!Oi@!`w!TV*)jHR23caY6nb@mpSY4&j1!@A<(oF8qvH zgkXL^`yS}>FW;2HcZzw2@)})FP;nlp<3u6f6)AkYe|Xa_dH$Rw|2KbAeeo#Se?9z5 z-2>&Vb49H2{p7&CA@1!Q;tjfI^@n*}{O=O@(s@7U?avMoUs>KKiZxd9!g+Px(S;0o z**Sy@+Mr$g9$fhQRQ~hkGymm^yeBU^hj2lU_o&~P3;#A1f7g$E{BwnV$oS7c73aG~ zP9gi7C+_8C=MXOFx|i>}mkVFcPnHhzo+=+*{Y_(yJ{ z64rY!um5u1a&Ucbyy$Y4;ldI3*8hk%=y+rO!(8~a%TV~{6+Zv>?HL-L&W|-@dV+94 zm%O=;ZGX!7)zUcz28SPL|Dm4Y5%a9&6>a&0dJpJ>qpuF&>OT%KKiV@rMyx+j{hv<} zAE@_$O1+Q{^&jX3J+=Nvyg{=wkCo))pC#shOJ}BrFMplS3A-n*XycD?L7OgfFXO_W zuflg<<>mi}sNzUn%NP=8$ZM=xCy^t5%gfFoT+pnA(BA$c-9ew9@cCFS{pX1EcRUqiG_J4Ge-@wqjYU3`4(WfsnYh_) zA3ov@diXxiaxVVsMflRWzNPwy3@5n#^H_0V?}GYYXDfLaRmBT=**Js?y13fa&$#eA zs&xhKe<|K_oq>!MQ^?)Xy{zw&<&UpC68DMXvU3O*wB2t%@8QCqH;fR>XDEER z4k0-H-IV@G9gq(B&i%hihP>BK<{chaCFYw=uKk;tS z7`AZ;7xek|$!!1cjxQ8IQ%Zk5eAvHSPbEWM+r{VdoU@Egm3)^?@Rt7n_U)$p!^!`V zm4x6f6&(LS`pf#CZ0|TumiJw#|50j0U;q53Zr&SQ_^xLueD4mje|r2^YUSO0@jb$p z)Gq$eU(oHIu4TCVpCj-b&&3$~<5d2Cj?e#+FX^CH`gscUHt-+eg6=){{Oer!oyLp& z6coNOC%W+SJN~x#k%iki`FoW7-NmW?Me+}%|0OYFPRiN&LIp!!{RF@AKKJVihP>L1>8%74*@pS!cJAul_Ja6z{md?JMlzuyKzaO@@fN8tzbuapQv%GqN>$ z?VG)s3%~MCLU1>y{AU;cob@6+aUp!?)_R7#>>TtSwBCn~Azc1zB*OR1ixKPVl>X1> z^Pl8PI_Q6-{(r<9ba|T!ZMpc%^?lM|-Jq_2DF5U-KY5}2m+SoGW#wmA?>l^Yy__D@{^$HD^iNy}-+if`Aul_Ja6zjr>|2Nn|7C;1H#5V_ zKevR4uecDtQANaEUN#Qlf_^wCX*C-@>|ccNoj-{DCN6}Z`*S@*UUm-Qg2w%QtF5-5npj3d}rbMhP>Md$yFc4rC};OCutreN_4z=ghi#e?7K@cH{^4u<+J*{}VvnvuOp zfFEp5^%03*050@n-#6+{?GN=PWx(@Sgz=9hQz?*kV0_*-)OE%{*)HO{loaX@Sk(So z_H9S#@cH|64*2ffFa2|ZRQ^a1|IACM{Uh-U zz=gi-&K}R{@cH|74)`wK4?prL)juS_H>p3!;unAmz3h|hB|3cmzMTWUn=k4+cmCGh z{hd2M2PKOCRE>t(`M<+|l6Np_%J&Zvzi|2o-)ksXkpANRhQbyf0_gWaug)F)vabIZ zd5+?~B8k55SN%V=zMr%Tmqi(v7YFqJOnUWgE%tx@0WS2kD&4ft-;Zpp$|^EI{31MvG#5W=YKkB{q+{(ofFM8~nhTa#`oGa!2o|3JyF)js z`u8ik^nai7U*LfxvAw^vzj?pj{_wv5yWV;orGFED`y<}apLF?i7U6dQUDW@VW>ES+ zNNLbk#vk9a`mLY%++dj_5ii`&tAPuhWW9X14*#mN2%GSuyX5#+sFo~;e(N8eE`GP3 zJ16PzSGOhqq^|fEw?1N`_^=Q3@yo_0>C%6|4yyaDB$3uvrT+u^^iS(6?T+*xUzXDU zEdTTeF7)ebdQa2gk0$)E3tv2#IDWLTKR(hOI=Ria|LDr!#~WqNF(R`6m5~!a{`}ku zYMbiOy9bId%jYy6!}~$nX7LNah5o5!1#SI5mhdmT=??w+Ejg=n z>2KXi@py#lpZjF{BOcPH|MvSN67t`vjz7%)>C7K>@eh(cIRsY8a?d!NtHApyvOn8C zn3o|~9_uOh&1D&a#V^1#(05hXt$qHP%Jm-wqnxb&B)-%BTh~jx=%ft6g72$Cuwf6tt!C zN0O}CV}qU~So{Jk10B8d#SeA)?}r^!|G50qnCg3SnJP~I2mWc0|H^hG{5G6Z^Z|B< zZq#o}Q=R>Ht(CurUzt<&1EWVTynf9;tE-jQ;j@1jJB*O!?!UsndrS76I(+sY!vX8B z{#*D+cj$Xl7pLgbf9D`7`)iX#w|c7mdsJWlbgLKN{yj)tFRO_32QGBUh8srd@GbIf z7gW_KVKFU3G znFWu&qs#x>?w9cjeJkt#GM91v>&!nwJrgWnU$9i8^K5sMwpsiFaG{64{8m35zHz&{ z!*_0cr~Scmo>8s7VBz=ijGte%zAb+Eusifme}3CQXa6AK2cAe0zs*zWzfPb2zo~W_ z>Az$eAusgLe~35q_xlY)7yl19|5LE8mHjWqaoZm_1g?{v6e3Wdv?jKmNdl9`$9-iaPvH2|w(@HxtDF>=g00jy(Gt z9e&a(ipP_#_&$2$2|wV%HxtA+2tV8=rEtQlBgl8qT^pCx zj(?p{`7iLW?0=55%fD0p`1@DRZ;|gB+JgL;_kBab;unza(EDodyH6MY7FFr__o*Z? zvWsf}*6Zy*vP*pXhjCaxe8d~N%b^)Hb>*+bEAkG;lM>g@k6FfK@>xc5n6fjl?ei7kW+i`9JCK%l;zoV0~OPzQ`pk65vN@o5e2x7y91U#)ozI z?7xl!{Nnk=pZ(ae0H6KXvG@hxLa)DKrFQ;(YlUw;U3C77l3zO(;OA%86D)qgoB#Gr zTU$bx{}|tRn!fFLw|M-_lz9BiWPg0b8~VKU3$*jEmadaAu=0z>59Uz*BSHKPN(&ah z;En&xM#p&ksZjZ2d?Ua3_%n8XT0DM!sy{yB4L!!1p`Cxo{tY<Looiou^j_$0s&&ZP7p@e5x2Zz?x(xX%8JZ;^k;XbCy~=~w<3 zJF|8?enu^Se8d~N@5WG7UHNDKj~uLG?9YB6SrC8r1IgkSfD2t`&iUPS_`SIQK_PTN zU;nM5W)EX;tk+Qc?B18ZF8m+3(3#bYd>wvcRsR~#>C@lu{X=*H)rTa0!JGaQ^Gj>z zzcRk{tbh8u@uSz*jm^Jd?93YyZ~w+-_SVk-V*i|W7$xIhl%GzvyW3AE@B76cc88u+ zqchKc>VWI<{^9yv)W3Q$E%yG$d_+D6SV>aH)|bxAPfDd9!~Z7wRk)v50~fmOqT1ti z>A(M=`sG%c|M>py@wa#TQr@KZT;`w-wv6H~|9!>#-vB@8no+AB#lMjMr_@}k`?k>h z*9%quZ<9<1+1qo*zYuTaE9(ZTw=X}1=Z_ODZU56=|5H_tlKoxyVsm2n-2Xh4=l{Rj zR1E3j-{4icj|<;S5Wgvn{Tm$;kAI{_=s6w!2merdZguQ0o=+_P%g>{HQN;KI(j9vB ziAy)?@OwN+>F>ff6U66yc`E6j{B-_U9sVG~H(mJRg~a0DEQ|2zJ3zmHatB@TM%$-! znP`2#NWu!{Ay^Y4uX65nVj$6tM8&9h{^RF0^WOIKhgLv zvxe5y#sAY!Hji~cP&@r zKU?(apRrs5q5k3L;=srL>F=dA_PmNEN^91Kys{%|I{AwnAN<}=Nq&~k`U+k=q&sv4 z@mocm|JFk)4yjb@+ri^sIC`&ahhn;N{Cp@cF7|;7z31`c`*rx)9VKoIKVRP8>+jZg zf1KZv$8v$=-dU3;XWL5~H=o@h^PJW_oQ06xs~p=a^y-&Hw%s{4L%g67FX)QrTslY> zzuc2DeGxzS^DRzez8Ubm8o1C4)|{QL!(Y5rjuE8@sRJL%dA4GaEbpNlxeq?ZT{8cl zD*lx>cKuX`KjLGFi}=Uzf0O-v@UU)IxGPT&|E+sk^7`uSU?=piR>u4j%Y5d=M|`a` z$tPxqYb6id&#Pf~=z(poI;g`>|47C^O~`x@!&ml4ypayZX~y5Eb#RKVe(g;2dF;?z zrZ;c9$CtVLhq|2g&P(F=?cZwtA>PohE&sfh4*#3s5cwUcx+fT9e&*r65m+z-{SY^T&AK9f1tvT{>S*qlU~#MS6Hm@t)>5N z{E>dpw=R71BFg`T`uA(|=>@(k1b4`CB};`+wGv%G^FYGy(YzL#k72x@EPlu#3f%*^ii&a~;b5;pe@4O)UKRAD?_3!y(j{K~ve}44Tf4IMOy~HHvV_yP? z)LBz!PU$jtRL+En)3aNTpFVMH>sf7D+jr?fj+wDqz50#gquT3hdx(RWsITpK_v*eL zx5WfM<4GU!M$_@xt;wT$PF8DjwBFK?T@BkEv+eDCYSxU_)3b8PY4)KOEix)i?J<3(I^fy;sw zFU!pu>t4WpZ0=CUiV7{$fty+Aau1y50vBA#o}*@rVqffI9T1f{+BlhGth%Vk?14KW zcf@|=z=EyuI{r z?dTtUP!-w?suqnZ$->aAZzhxXfKaEWi{W{C%lfZ60en0Xf$-%Jy3-K#GKe1nd-OQs} z@%Y~lXf;HKA6ZB@9Ow8i4Ex~2e5SA4T9oZ+!Gnnht+C&5t!FJNV%Q z@u##T-d$+bq27`Q>;#Q=9s84S_$r6izbfPP-`0FP{r*q6J}38S!1vZ4oPKQd@l>%b z;Oytq{$`p>h<|dY1AG^)@emSsLZ-4%-h=XDO7lP+C2i{E!2u@jVl8{j^cGr*?h3nhj|F#-9%Vz*{o@-us*k@mRi7 z{~&(^_cs)Q#~XStFSLK?&4mqh_20-Aw4UzY4u1F)@e2q)vbivRl7~U|i4pAxKjp(u zWWO2fJNGP^B#e@&^!-p$T>i)U0A^kbk)Pf|WYbV3=XYZn?WeVfmAf$Q8zl;V$K%D% z3H`E1hrj=2%Kt^+7d+iUWR!RC^YUAWKq&`5a|7|AeQ)sMzx?rnWF3C+W6Hm!{No>? z@03ER4t~yB+D~@yGuE{b5!&|#ZPe28cUTxF`>8h{uo{Uuh)xy zpX&TRtnj_J<8c>v`9r%Ktzn4Bp?coS3)Me^NM@$Xy5xS<|J$dJ{}LMK z;b7SRg|OcreUL1Ee~auu+8dDW(C7Wq%!5yK08Y5!}{GBv^m){?re+Tim-t~He4baq!La`ef%Q2tpFtgtDd0jkKXdhF9sblZR8wpwxm1oL z1m4r9Kh~cF{?!jqxyecqb$3y{NV>RCX;Q{}y8Pdke_zJ=eOTdp@5k?t-T9y2pQ1lt zeiM5wANv{N4c$5I67BoT^A}M5+nywr1y%gt*T;WZkZeT3u>XtLJQBa}7=a6YR^{Pe z>g>OU@P+IBRoDj~@2`N5@{fM7q7_r<_d#2Kt~g6KzOPnC+jN?x8{aE=Z+eU~Z{+Wn_D7Ez+Pl8zLp083(m3N)YbpPb zPN_tX>r-i+!HKhI!9X>FGRzrnkYgHcogod)<(@GO-4)I#LrMjEHMTjurp=s~Gldpp z>oaz^7p|i-xM8oi=DrxC9NE0`Ax1L_U*!ObY`C$Aj*56ENh{Pj*Y(Sq(`z;xetZ_a!E7dn2MG~2HsS|lo9EIJbdzbd%!%VC%xHb# z^z50uhF%*Z{y2>f@^EZhXH2S{fze1Bgv^>gZq%48$^;mVq;#y%KWpmv851s}rQ)W~ z7)2M&8R?i9iwC-FJlT6W3?7$P3t#0j>oh;Jy58R^TNQfG>lhG*rZ>I5W<@;3G(Wp0 zI?!!jM}?kJn9N8vE_TSfa-S(VqsGk08tbYAatqZ0=Qx!PK@_@P85bE;dx^`kx&Lc4 zW8?Ym6%#48?d8g?ZUb~M_+lF3oGFttmT~=;J5=im#=k7U!Rsg?i@k>t%en*`yE?w8 z@c8Sfv16zApO`Bbne`lKYuMFa?ws776Gu%}i5VM`A4|t*6qttP?P$kWo@ziB?I!er zN0-gfy&tS;$bNzKkZccmoK`oElF_e>V8J*_K5esL93?;#Qdkgx3ti#hIbZAWUsLm1 z%wF>S6OYrn@i9&t-jN|#V&kBM-*g7q zf0!%&pC=aowUtgS{`;cG%jocv-=+Fvge(3D;-6~#e@uEwYyX+wQjQ(z;EThF#lJXw zlv|XC7Srl<;^$ZI_+fR5zeV^6W`g*;VgHi){O`rzGWmzKI{aHH{(+E#FTO}D{>9Sp4d^17(*N2>1`OAD_Ap1Wlg#SLpKbq~}izA7} z|5Wi`tebqN4*z?$|1_uknF->bYWdsr*^#ok{Qm>heC)bF2%0I8a zYE4Hki`xGL@t;Ebr{-+}2O8xMx^?~X+V8*Hk^RH2`2*q`8GkT>_VzzEPy|hyH?g0l zw^{6zzOvl+!(Xtg2e1E8!~6XSuYYRHNO9VKg^&6h+KXRF^?wbuULtUz(eHwuShv;l zy8d7Olkyj4P`=k<9C!bZiipYo&*87 z(3S`+VEY$Tk#^%75(d%XmNC7M{1n{s_be6jzcL|SOQ4ri>%#8P)w+MK^}n`ni{xx=l=<(4 z)$z}Nz{&ijoL~W7h_+dPoAYZq!Ge&fHo&)OsgPa&;d~%h+CTFqO5fon#eqgD{y*sL z&+Afh!2Nol{J*TeXOO33|AT5Ppmfe%!_MLK#|5UsZ%F0er~oU`*&h?bzp%gL8@^AU z|2rul=#*z){lblZx5BUVFkSe$lW)xg@n@*@qO8yL;~&6d6nix&jWb>nZrMO1IjOLgM^OJecQQ}wkK*2f>|4{g3Y|2kd%Hwm9ZG%U-JH~lYbBGWfC zR|uA-lT>?8>rVzrMyT^SbA({=3-b$F9ZjeFzu1%huWlpzA5C`R|7&9LNBSG(6D$8` z{t?x-|5ZPij4g%hjsJ%FGQOEf$%17<8M&V)XbpN2ld?SL|BPfBgCs$K-LZe7#Ou8N zQH?xL{2AZ))yaS2x5VQAdpTA9AJEtTUi@-LdVHYEf2BFi=DF7YOAx=pDUSbkxS*_d z{mq)4WJxt%bLT&&{{{b_q0ZzZg#`XTBj=r2UN@iRHh0Zku4~%HJzbOM)oJ-uyR@qQvvxSbs=dul?tud>^A{B9e79Z=3Cq z`G*iJ4TsBpleSq93dR50uCGz~tKf})y*>21`KiJxA>$E<$ay?yznBl#DjDj=CkIG8 z=D=Ybbvfjg{15!W*igFb_ci-+`7gLJzWwF(PmLQK`SV+qB*ae55jOc1|gP~wNu6RUs!`67CQF8%rY z4GvND-AGa2ahUWi2kg(^aj?Mt{2d1i0^$$-?36Lu`hR{<{=$sN{O84A(=NVz+JtC+282o*k2?`JD~lC_NM=-+W*ADxew{^D~zQ2Ki$DM|0Dc~ zH(Xvxhu@RzZ`E}0Me=_W|2@~=R$qr-dkUr4&1p{lPZ0l9%U|jHQnmj7a#a40PL};| zZ~nvhXJAn!!GiJ6$SsuwOKkj;&gGCGpxuYQvHY<=b?tu&`P&FDalYR(Q>6XT?n8U? zAIb&F1IhvLk?)}g-jI5>uKaCP<ztb zT$lgT?hztzoAdpinWis)_ZTm^dBkfE&LuD`3^cXqP*7s+`Q}LFU&jSIMzn`6x`ka zpWj-R?}F#*3zk@aYh!(pLo$=jbN?%k&aof>7kc;LsqgB_AAdi|A^Mgqe?@&q$=_1C zzoX=DDZz)oqhvt6@a}i zQ(m&~cTB*Ae*VKD*X!^*mZI->?|1Oc1o8R%&1lPH+aDsY!#ArGEZUcG`ZPan_k?znxJg{H;{`InrlCk-j#O3w(+~p7L zJlb4-T@)Saj0bj7^KWt98-L)}e&Isx{0m`sYvB9eP}awTpG>f87xpeMDx(C_HIKh`HeIj~96 zKh(R3|LU!^y1MIM^go_$N%`-=B=Ou}^&DSTAAhWShxk{oAnV`2H~Qy)FaB$D{w}4% zuRM?Je@m(;0spr?_$4lkkAJcn|Ht=sh&MFsj`+{*S&#c)h34NpL;2sL92Z;vOs#|E zO@FL^hWH;#Q_r71=?`4!$Pj5Ee=WF``X7%b ziNOctanlEX@Bw*m;N$&Uc$ohA-+2=uf7fG9#^)S=@BG^iUs1i4;kr6QpZ|GXEDpe* zg8o-Gz5S8y(Bk&XKhU**jL*SR@n)P9s&$Zm;YR`W+dMV?i~af?_0J#py}Y{+CCZ++ zgX2HJ^ZtKTGL8RMaK*nuV(|~F{%M^yuRcy{yCE z{Fbzk^{^a&;dRF7tzOLj@N;dps3ce}r6!Ko{eu1BMtIE}g7{~AT2Zhd!0ymsgb!=JlT{vvvc_@SRG3Krl;XqyEAxX}Mx zIAE#{|A|fV7giM+|8p;kfBwO9o>)UII>{By>H3A_r*d6&Ti#dunRJc?0l3iVfB(@= zhab3I;j8t}{O|)0R;P7(9em@V>VgIMIdqN%AyaJ_N>^C-*;(%X#{~8K$?>-;r;2kg zQ|(_>eg0=&9GXfcM)i`{TZ*?j98+HWKOgD8Q-^;y;RlvG_-2CmQ>Q6>m2NR$wSoE{ z+L(O&O~Nnq{GU3X`jJmK{zF7H8UGY@A87awLHv;~kROl^;DL09zW3v&wd?PFqT2P) zb@Dl$aoqiX;AGrTL9o0LA_U5R0orE4xI9gOdPVg8SqVE?0Jza|xQ>EC{pBKU}mf7`L~@gJq; zTZP8g5iD~liP09b#`=um33X^am^!goqufDvdHjX#T>ib|kGp=R^8b{K8~@m>sgFO_ ze`~4`($(`%qW(jEGyd43!|z>{zW*$VQcgForN@W=9N;%l^X1LQ_46+>6;E7$=#oiC z89!W4rhin;KhMmg{{QL{>S~I=4?g_o;C>IO{zr5{V&i}BU0$b)F8#0FETKa)RXi?@ z?|-lIr1$Ty$n+1UoF!P=kslw<2S%CJf&~HT4*k{fU(eRnzZ-v{^xsVWqm=(3v$nK9 zQUrPl@#28^7w0d!q#^=+akp0Y>*9ajL3ttkAG4nzcljSYi~76teKW_A!$-~H^Z$6y zc?DZ&{>wRMoAzQ6ckHZ2h5(e8IhB=|{A!E6ykTIAtbe`fk9=;d=qOm=A3dw(!W;;C;moa@y{?+`|DHxA>Po#rr+2=7yqjC{k*J4cK2Bo}81D-V zrudU!+%H1gEC|4bE^*eh-8%f%pUPi^PP+4-Gyf9fujY`Bf@OGCeEGxpt1*<)hXet* z(0i?S>ge!)WB+M(aL3B8qbp;F7W6q&-EC_fK0e+LAfw=xZ z>Yrs~Ppd&mG4ofIpBm`%AM@hSR4Vbl8h;I|`I_o*Oc}8)x$#$rQYX0o>Fs|#L+Ky7 zBVAav)HrTKJ-$^dzWihSTV&|R-+~_e+g_aa7USpK9N+&l7Et_OND)WS{`uhZx=0)l z|D9LJ`(WK951cSO2WE}k^o%b4lU|@c$K~l_Q8g9+M*8?KsuqtQP~(4Q1%3Q8J@~Je zpSPFsgP#8Xb%bwS;ozI6h#&RA@9n|AtHu6j89#4vy#4bCKRnpM7mZIX{(*}6_9$(y=Da`&3zD4_C+6R8lZJ8qPA_pJk9{SEl|M{Ek@11{{ z(uCf>G)s$(zne|;_V*iq_nUtUT{UTzG(X2#6PvtMfUu6Z~9j~H%SCqy5j#I;a|Mtp^tU( zpH+_h-?;Eav;QXkzYjjKRfpfIIX!>2a>f5Y!rynnjlFdE+bI7TtsQ*P{J)9+x~%GF z>imZWOHqe{LK@Y29PmC9>*GXs$?+Zd5rzLyocH<>O(_*y0A`Bgq)_>tZ0q=ev{!}U zWn$o)Q0sa!cCUEHlg^JF$9gH1q?g1Cre{wXlr??I#Hphuw;AJ5fS*Jc2k8MZ?gwC_ z@st>UodYbcmd^Et*{i{HYAN0D}fRnK^aJsOhvE&E$)7W=zbUnoHjH?2Db_GiT(?jIC2cG0q+{imwb#&mKK$^u)>J zIn}j73u4^H9p%Em&_`KwofGAh(gU++P9KxSG0JvKtWw$Ki842K8BnyzEIo|Iu7xW_ z*RNgJm0j!J44OD4i@cCd$;m3jqK#{1nkiYMa%WD@VlS_;Uw}|tN^384u*F1f*eBSHyd1*CC3!1s<6VEoSy;&Z3(X2ccIkBfWvET)+CNYEj`|mc#@EMN zbm3@ceVR~fS-;?o8#Mbpsv=1HP4A}szauF& z4vPCg&pq$ieLDMp^ep`@&zWBvYOA+D=C{KBtJA4pv@Jz!BQ3V4h{J;RNgpRIUUK3A zJKX=iM6OTa&VR>hIpd0XHJy2t;*J*dJx&WzmCIYBWMR?1s6lfp z>D7kOSdIfncwZSFdc}f0t#$Dq(T1LH?sDcAhT7@lkNK5|e|3J9a!azkPE3e2o&(`8 z9=OnFEdP!DI~1yazG^}JYuEhF=qccb6~1w6@%R_MS3g&WfBTt~UiY}--#+p9n}qu| zRZ7tW@HgHu@@^e|DVpDBy5oNe_<`FbzD2q?`?r~RrMCWAM)NDhy{`CoNG$#wZ!<4h z?4$XQBMbjAPd#NyBS z-?&5C-y~fe{*gYHzof%YqWQ(*J_kRVAU@mQS|Q^vRu+#x`sQy2=_?vXm5ZE{qFqbHFfyWA@TUZb7cI13tb$(QAzUh z!(V;lHPdzY+ts`Q8CyXUD=jmM9iCVqID93S__A9hV&|N3D!KKj4=yT{`P&po~PTmQtzKmM*XKfmLxx0a^< z|A(Ibf2E=ES4MpBdp{-n$JWsJ@$8yq<#8h|zFc_6m$!cW{2%W4V|@Dp4}S1Gef<6K zKk}L94t(f$u32zy9KM?0cJ*bR`1{}&SN_6Z#oHhG0O`N}-rPo|UE|A0|1}=`V3$*i ze_u7vK3XE){-}4LH&^<~F8_m-e@E1REjprxkxV0}h<{%Lnf{1B;%lf4;P-j-yI@VJqFMnSA=Wcwbu@3(=4}Rn{@y%lJ8*VzUh7SLz2S3>LG~=({ zb0Xh)=` zc>Ks|;s-qV$oJ4!-e0kV4*y8|c>G|u(~H0HtDK*O^an0<-+}jN+ut7E{?F;+S17vw z^T-XKysV4=lf6Ch?|y3W?}+}_H2HqiFaDkCEbghpZ`vasKXRJ*Rz*F&ss_dHjdpcr z{0TK=eTn-2Cd&We2OR%`!5;ef?^6Ecte@lC-?A$HQPut;{#xZuL%%8z1>^ ziMRecUHq4ej{o%g-oD6QvnxF5-$x(+;_$_{MdROp^^1FS_(#e9?hrXeeAK_j?UJ`& z{k!P-AO6wd&+_@DIk#QzlWk^X^D(fBj!%%Y^*e>cAVMZE|8d+LVWZhXXl@b8}Vzv%ShFY=4V-#%__ zA07UdZt?h$)5OPjE-3$EzTZ@Y!b`)pkqeA^PP9}jkV4aJ6ZaGZ*QABGwMuD4M_T5T zR#{w_^sg)`d9HE6@NAS> zh30{r?aVo{SLcmgiU}av87c91#e@{k4O|mLZbV-ZgcU@C)3aw}t3^KTn-_Vy zozZ;U#K~D>vvS9@?mlzkWSYrDKWcBN2~ctYPUKVQ=EG`zsGEQP0?&V?V0D(ycRUZp z{hk=}P$D$(o(1z!!WWehESQ%P98gBEV17ygZL|0V@PgiW=*u-aeoHNR2XliQfAr%Q z8eE3fXLR@#3?Y0H@H2*$5iH=Bb7dL9;upXRy55AJ-qi71Hdx)Evuq!D9t}U5qJPBm zRoE|9!C~^(N^+3q)9`m3IY-J1mao-*;H&b2y>v+27L0}!vf)_Ic3)b@tZpjcVv+0v^Uf+~CbKv(Yb(0LRVAJEKL^V80kt;tO1g}Vo{`L+6%`6b2p`Hd%F-br9ubrA}o^#lt?gCBIW zJKsvv<-f6?$=`(f%JRYUnB4gf^Qgi%H4`kDPZe3*Ot4^Hl~_a{_K{$IRVHn-_yzES z{{BeKi|PGmq3`Po77Ag|`es(DOed@t6#YcjH*3}Vnv9H$BuYA32aM-oIrH1nf1}@1 zd621j^5m10UpRg9vYOkHD8G#D<(}2q?*mF-4uKbowqM@hW`YIwiw?ekh?O1#Q><0b#Z#_2Z_{}>*mH?w)(fq>0DSb)6&m7rIu*A}L1aTn&zf9U@@eAMu zU69)EN*zC5zm|g$mE%)>`7dX5Gr#t^yWW~cGdB_SJi)_Pto;DbQbX= z0YCF<%6}v=eza|n#Q4#6ki;*57j*YWwrKMouOH39DkgpN35x~%!n3J9ApySvI>!Qj z2AyN^3*ZHPahpSr>+H8feYY4Y#(v>B#D@g@LUXBpApt)@+brOhN!u)b0lc8UtUExv z{^p3r(thGG*{|{|A9;ku0)EkJD7{I*FGA;7z)#RQTYLzD7j)>Kvbj3@ovYqohl{aa z-gU%}1pG4Rk$p&F{ODYSB*u@<2^OCKUeJryrD?yP=Jmrl7@rqiK0<`W0)9F3sXZnE zKa0+>fM0~RS^NTcK@S#t zbVrd}LdTESALn2kF4}(P^~8q+{2~jSq$a0AA47yio0kj^94jewfABPb?=a67aKVn+5y=w9Nv3Ike5<7r+a8eA=NcI(}EF z^tJjI-9LyB77O@^m4r~ipgOt7`;Fm+&EPesJplkk6VYH6l9V-7>#n>ylb(w7AM3f5A7BLTl4onrw% zi?&((0(e1>I(M12e%Ykb*X&pH^QH9!;gNt}@JZrB0)A0C#{zyC>nT1YegV9ocb#b0 zS(m<-zbNluoh&;4iKhvR1pLAqsJ$ZrzW|+M0lz%jX7LN)1wCNfRU>r#TC4tx=wEdC z4bj2|EZ`?L5jF|fL{S^v-kz@g8sPrV}I%Rtwa6tMbY^$ zGfeg(0l(nOl)fb3mqX`Rz|W#>7QX;q(7Q^O(ys3|6y;-U(fLp8AS@E_3%x@2Bmutw zonryNJlbaQ3*ZGk?uFl=+{rh6<7kriMMFM^~uaUh-z%P%^v4CHgwpsiFctJ;Q z`c~^7xW$v|4i^=j|BT(#zLJ2Sv4{3az%NASSimojwpsiFctJP6>&^#t_FJLKN4S{s zYraA4D@lyso5YU<{K9mO1^fzVo5e4H7j*N^N3`Q>VO2f?!;5ZzgT#de{DN=OJ_-2c z(K#0Ii_$iWUjQ%Y`;LfM1ZdS^NTcLH~KfH^1xneXs0i94R{gna8O7l7L^{pOha-z%NYaSirA< zwpsiFctJ0X?A6vUmni!M))X^7`4{ma0l&aM)LxK)Uxd!FfS>rAxUu*I@Pgj`&I?-q z@%O9p5iN#a@HnLx3HXVVgiQi|d325i{KB-&;upXRI_3px@C(v87VtA^o5e4H7xelwCm+}GON+`o7+)2g|1y)C3l`YVOd)&{@XMid zEZ}F+Hj7^XFX$VtSox!l-`A+0FDjZ}FqP~>0)7Rw%>sUTw9Nv3VcKT#3*ZHP_Pay1 zq8Ln6_DB{AfEw65~hPc_e-TyrAD~y7dwrzjsytC0Y!>0>WYezr0d}PXd0Kw9Nv3 zA=+l~3*ZGk>6z=b&*xX8{u@wq{tFWp3;2af6Fv#}3EE}>zf9U@@eAMuJ?V{#Cv^7v zTG`JkhF>0Gv4CG@8Nw$4zX+XU0Y5?KZ1EuoUeLEce9nbBe#aF*adFZ13lSa*_=z(J zp9K6YI>!Qj5!z<)3*ZI))~n;S?>}lsH zxHF#qOlQBe@8lhw6 z)wAct@9!d)_LzIc`pAU%{Y3d?HMwh-E`5)a|9B48cd~r^N%J4w^G~hoZJ=7_Q%Tp(fAk#dH2HqVK?Z>eV)|Lk8L?o{x+<>%SnV^l;)>} zYNXo&eirSsFh9vm{x8f-9sw`tj1t#Ap|jt?)$;nlCfPqd&?w%1-_v|l+YVXeNS@@p zbg~cev&NURh5c!}`SAQ$-Vcr|Cs_OfctPKB{Uh4(zZ!SSI~ae<=ij><$Ip-5^t!~$ zT$4iU2c?L+&R2XNP7#7+HSIIs;G-$FOi=tXXw5tpzW`p)J?h>1r_O#$w#hpL=E(Bl z<+qwl!1l;1n<7}M)09oyKIMoHNtd#cpGoIf4ygQSlux1Zo;bgU4?dyo9|RXke)uld z%MbYZt5XHbB?M{neK=L*k?bY|@P3%ivGiyn_cQ1mi(i1of~D&KiEp$g`;bKFylqc97bMwC_GUk8X2%p;66M!*{e{}~E$Z!2{Eo@` z#cRKliVt((0DH>4lP4D{dt!fFdC3?1#qq=W%I$xcM)s@f^-njDC+JeJ4EcSPmtSr2 z{{yTj`TcqBOj-Z&u{@er`{r zKZfkfkcxB6k0JXq#QN;)$B+fr4nztXTE`Bz$;Br2Cw-(4<{ z^&nNVc7U#|GIA$%9P3J9J%PS-VTkIPcgbW{cgN4Ay1bA=xqyD`=ZntQ+3&o`>Zg0; z_%r)CbhmGq4=%o{B3NLr@V8Y23+!cnQ$?^~y@l`*I#1#kzzh1|6={`p{65_-?_f;U z^TYQap>0(K%M7v;`y&-ERka1*R|LpUBMZK-$at&@y-!S>-?%ofoTuZ*{u?=%ZDhJi z`#JuvU_bWb$P%+3`*kFN{n(Eqi`S2%ynEsQup9K5!4pEq?}RG9Vz8`V{L(l2Qx(C2 z@?ri==}7{(Hsr(jN|LQ@)Gk+ofw%5w? zYu+f+SGEI;O!3I{BsgJ#_p&KTP!* z@hhpm-!^X2^D7yO=a-@UR#>y+`CZNx(jNN0VQ6(xa0PWHd;)kuZ#>>?jIRDm?LjxV z-SICPR{T)!LBqc&>c8^zJFf5i{LAfqOrH0l7xTZ0{CDM?CI9I1-}i6GJA`s&`^G%n z->2~UmEk_g)DLK4%Vl54{Xkw5!Lo{;M*`O;(_9zYC#iCs%zvTfO$3Wy059kYkA!d0 z@iX6)cd*iAx=Mb9{q$x=8wnPa*Zf0`1PjV*fVNpsKU;Jyi(ddQ=#)~CEFHfYAIUpJ z1G4;j?FT=xW`(AL1^!~WjB+?kC5ZjT%Ds~(;XgK7v8iD33*ZGkcIpJ}^T+W5c?WZ^ zY(M zuTI~;8I_Yo&N~fld7tj*zTUpM<{x-LkNsr83LU@s1J#e0%k>Hb?IAqo{XGPR`M!wA*ZkN{awzjs=mFwCE2N^Xg5gi=Phq3Sh~}A zf<@owWvpmv%OeEH`5)^QaU&qw=^2p;uj2~%B zzCKB^r~|?K2pErv(m58t0AA3yl)Ar#&VE&Q$~#yU!t1&7^G5KZiniQMT|VX-89?hfllTSXJLr8?&Z?u!e_21%9o8m^ZuO-9 zl;~~x{D<|uQ9ed@6T+OCET)i-l3q)G;H_CS?#7g^PL|&VllBX+8}#A5-L>}Xze(O9 zV9ENAdARNOQ7KxV<}4Zus733qlg#~!_|SeqH#54EB1(LXV4;qSfO{HvFydXUB$tb>Lv ze*DmL1;0)^KI=^RFV^9P|5N4{%1fnpfAag^Q{flgZrI5Fj;V^?*-g7uj#+GfG}%sH>p`sgG^Jxbp;DMI8@ z3bObF@Pa!nrU_w^E+G3EZBs<**R;RZzkUWU*l*My^-6I0$W!0rqx{yQ`xvhEp^cUL z^1WR=as*HSsm*1-L2Y7v(Li{o}Q+l}gh5sdf zp{weNND=&CH|TfnnEr|`|NTw*jYH^r*+2MlU3~tVLG=%pjqvRH^gU?(*m|zv<+M+- zpX`dV!#e%)_HFW&?ejV%sRb3(b@0gGO~pT^_2GG^^4v0 z^Sga1f3_t1-Ph5Uk_Ppo40@itzoRXqm@lnwYpm*M%dApzKSKK~egSra9<}VZ`*r-1 z*2_DD+Q{*j3LTlB)4$(*g-oyf6AcB+5~@eULaN_RHngSht8zc{*M@>6gXeS6d8-tS zZ;b4)oSAScefv$|G`WnMqk%@6sX*H2}6ik>&bTQuHA+bsM(I?#*Klh#jVSxe`cUw8nm zZ%X19V7Hh~o_ns&e)jsRbQ7x>e!RXa3;6N+sx08g>#MSWU!))LC-Dn0Uh0BK$0rBt z_&s=3U2sH}Uui$*`E3)OXM32vX#H1`*DsX&8RumRmiN>?U&A3w`Ev^P&J-+u!OL&i z4&M)^%4UHZOgNPgk}V}AEG8>=0kWdGfEP=2#{JC!8EK1jMNwQn@uhy2x_ zhUBr$`Zp>9?)|w}#_y}!6jI*u@$0RVn(6E}u8HJl?)$$@-{F_^(TCmi(dwfEXjxO*pD}9U)U4@!#$M%kV;ntaMpkai_Kq{gB7UYkGs5d) zQCGTLFfR3V!8kfQd$R5IFwW_rz4~fTa$-1rV$O_gc4637F5Q|vZd`8G4BBsJz(L}` z8PjKunPLCJc6Es3>~fM0bdWzJqO-E5&&ZlCT_DEgsrei8O6k@otV!k1I7rXK2&-i~ zie2a%>c_83j^~(+e&h$Sa+%n;d_L_PRm#N1Sr<4RBho2{Ji&m zX~X<*K_|s;1@$*97r(&6(th9tohZLs)Os&rwcdmuKOBd?^797$*?->z_52F|>p#Ch z{hJHYM8D25-ccWZ>=%(k!2U19GWGs8{8W5?sEzl!2jzQR)KltbF=ePN=!a73+-2LZ zQhfS;X_5UtbMl}0h~9oH)%^lWPgU#Ec+)psrF(Jd8&vnfc*2%i`~P;QZ-GkRYlaZN zoD?xh`CBv|)$^NFLf#PkS|~e3tH(e85{Dk_B2;~;q%kT9edVUe`D=E|6kDvE=lgv7U znBOtQ5B@j#`>XIYho6-ozr)~HB0m59(n|4G{9vD$;naqg-|lJ?58C-ptuF6_EJ%DxU z{p^SQ2Rm-~b?t zp7b3RB~B9@e#Ya8@$*aH4QQ7W%zxl{;AEWxy7V1N^@de8jr^v{_j}<4`L*$B-zLnI z`OmCYbo&Ng(7!Cm`i1xvdjI_w`QHqa{lG8ugtVV(E(Eluz}G z?{!w?CZyUG;H#g-6!^i8N4I>*^Y?1xDSl{wEB`_H+{MpS{Y@~2j=U#t9Z(3*qy9^c zub+peOZx?0ExP>$FA&bCl7DM?N?-5%^k;`s`j$%*W6}S6TA#jSRY3;76Doa?j=-6% z_!-K6e(4LlLcjM({?+dOJ>K8$C4OQ`QjA|XL4H@LdN``;VeqT!IqtO+t~1mI_>J81 z)8m}JIFJ0dm-3%k-mzaOKQa3aJ4>bG6gh5y``)1JC*Fu(4+rO=!3+BL{aI0+{k~d3 z<>T9wnEk|t#Q5bY9?^2~{OFHqH4X_fQpZT5slG5 z7$$iGALpUL8}@zsiRF{r`49C=-i_3McJYfQ$PfL4Xr1`^%dacDTE+BVXj)}lxcA$` zUAX-ySyiSB`p-N2QU06jvgx#A%6Gd%px zxSIH7q{aA!|0RCjdfQ9T%kTNp@0`v2GClkvl>bCUhhIpg7t$5_-?m?-B5Wvq;Im6^ zaF-8^ukG7H{lD*>{*_SQQGyrr3#;Xg0_uL>t8yCNDeGZ%n7)6J>5k**2jD#PY_*}X zjcC>HHGBR=MA}R}?7{7)6WjU~Zh_C

                    2. Iqi!`wHT^{dn3l}LnZ z5=T6fUn1P)S9jvmB=95k+}Y6tdl|{aFy*vPp}2~2I#n)&k04&fc$Ns8*rGX~ZWGVI zrKXQ_##Jr{3pn}zLk6bqKP9--PYMqGGPx2y%-8x4eOGgP_-b^`^3=pK>1Ta5U%FlO z=TjG(X5Os`WxMWZzb;Yd4U%h~JL^sF%v=E2CZC=AC}m^7y7@`^2IXVCGd#!6CD8vw z-MYaC;B$#8wJr?(jF|ggX}#3X#mZv5nj0sGV*s=0{r&R)#9Kz%p={n{w9maJS1oU`U? zbS7J?)8QV|pT8;nlHQtk=&kmusbTtkv(G~CE zj27%(gO#m#6Q^&gO|u7vccxq~<*<>ioM~U>3ft#doPO-upL@FYfo0(Kg$zu!D|&Ob zCS2m%8fb|@Q${w^+Hai;6s3*0p3Q`3$( zXW-GEKepJmkmFmBqi~p6C{K+yGx#CXwxCR>)5eUD$sO_RpCAACzu)uh8ztj2e7^^~ z6zv4Zu2A;tqNfvjy0D*{c-9S#0bBjh`|>unUu8E@wj0{18>e6A^aPuPoQ$4`4@uw{ zzY&?5b7pui-X}S;0XuK@6tQP3&-)>3=Ph1A9R5LPv7`60=W+T%F+8`ZOu+spkyjG@ zq}z3zbyIKqYOyxWxPWX^^f%c|#T-&=u${7lbNOM{G&TtT!dMD6%#WpDZxgb0=!?#> zC>%qi6P*EGU>D4K^|_1#3uxniG7h|%^71vb2B!H2{lc7er8&lO&Tr9KTROjGDd)Gu zS{WzW!MRcR`Fxr{ImPg!VPwqnznuGO4}Cp%o{Q+r#e$%<-Nu5n4kaEHaID_qmW?O!CwDRE&EG?2hIb z$u;oA(yKjrMxN4>_WT&A`I_`WcGl=cs~rQI8M}gGAY}{>fMdo$?p>_rf!*LtdFiWZ zqnWX9kvI6*SlWnVw9oZj zA@d&Fs`n<}2%2Ni%y^uQg
                      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·-9S11@`to{c#Lxwl;^Is3;Lyh{{3d-vwl-{ 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

                  3(+I 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 M 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

              2. Iqi!`wHT^{dn3l}LnZ z5=T6fUn1P)S9jvmB=95k+}Y6tdl|{aFy*vPp}2~2I#n)&k04&fc$Ns8*rGX~ZWGVI zrKXQ_##Jr{3pn}zLk6bqKP9--PYMqGGPx2y%-8x4eOGgP_-b^`^3=pK>1Ta5U%FlO z=TjG(X5Os`WxMWZzb;Yd4U%h~JL^sF%v=E2CZC=AC}m^7y7@`^2IXVCGd#!6CD8vw z-MYaC;B$#8wJr?(jF|ggX}#3X#mZv5nj0sGV*s=0{r&R)#9Kz%p={n{w9maJS1oU`U? zbS7J?)8QV|pT8;nlHQtk=&kmusbTtkv(G~CE zj27%(gO#m#6Q^&gO|u7vccxq~<*<>ioM~U>3ft#doPO-upL@FYfo0(Kg$zu!D|&Ob zCS2m%8fb|@Q${w^+Hai;6s3*0p3Q`3$( zXW-GEKepJmkmFmBqi~p6C{K+yGx#CXwxCR>)5eUD$sO_RpCAACzu)uh8ztj2e7^^~ z6zv4Zu2A;tqNfvjy0D*{c-9S#0bBjh`|>unUu8E@wj0{18>e6A^aPuPoQ$4`4@uw{ zzY&?5b7pui-X}S;0XuK@6tQP3&-)>3=Ph1A9R5LPv7`60=W+T%F+8`ZOu+spkyjG@ zq}z3zbyIKqYOyxWxPWX^^f%c|#T-&=u${7lbNOM{G&TtT!dMD6%#WpDZxgb0=!?#> zC>%qi6P*EGU>D4K^|_1#3uxniG7h|%^71vb2B!H2{lc7er8&lO&Tr9KTROjGDd)Gu zS{WzW!MRcR`Fxr{ImPg!VPwqnznuGO4}Cp%o{Q+r#e$%<-Nu5n4kaEHaID_qmW?O!CwDRE&EG?2hIb z$u;oA(yKjrMxN4>_WT&A`I_`WcGl=cs~rQI8M}gGAY}{>fMdo$?p>_rf!*LtdFiWZ zqnWX9kvI6*SlWnVw9oZj zA@d&Fs`n<}2%2Ni%y^uQg
                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·-9S11@`to{c#Lxwl;^Is3;Lyh{{3d-vwl-{ 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

            3(+I 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 M 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

        2. Iqi!`wHT^{dn3l}LnZ z5=T6fUn1P)S9jvmB=95k+}Y6tdl|{aFy*vPp}2~2I#n)&k04&fc$Ns8*rGX~ZWGVI zrKXQ_##Jr{3pn}zLk6bqKP9--PYMqGGPx2y%-8x4eOGgP_-b^`^3=pK>1Ta5U%FlO z=TjG(X5Os`WxMWZzb;Yd4U%h~JL^sF%v=E2CZC=AC}m^7y7@`^2IXVCGd#!6CD8vw z-MYaC;B$#8wJr?(jF|ggX}#3X#mZv5nj0sGV*s=0{r&R)#9Kz%p={n{w9maJS1oU`U? zbS7J?)8QV|pT8;nlHQtk=&kmusbTtkv(G~CE zj27%(gO#m#6Q^&gO|u7vccxq~<*<>ioM~U>3ft#doPO-upL@FYfo0(Kg$zu!D|&Ob zCS2m%8fb|@Q${w^+Hai;6s3*0p3Q`3$( zXW-GEKepJmkmFmBqi~p6C{K+yGx#CXwxCR>)5eUD$sO_RpCAACzu)uh8ztj2e7^^~ z6zv4Zu2A;tqNfvjy0D*{c-9S#0bBjh`|>unUu8E@wj0{18>e6A^aPuPoQ$4`4@uw{ zzY&?5b7pui-X}S;0XuK@6tQP3&-)>3=Ph1A9R5LPv7`60=W+T%F+8`ZOu+spkyjG@ zq}z3zbyIKqYOyxWxPWX^^f%c|#T-&=u${7lbNOM{G&TtT!dMD6%#WpDZxgb0=!?#> zC>%qi6P*EGU>D4K^|_1#3uxniG7h|%^71vb2B!H2{lc7er8&lO&Tr9KTROjGDd)Gu zS{WzW!MRcR`Fxr{ImPg!VPwqnznuGO4}Cp%o{Q+r#e$%<-Nu5n4kaEHaID_qmW?O!CwDRE&EG?2hIb z$u;oA(yKjrMxN4>_WT&A`I_`WcGl=cs~rQI8M}gGAY}{>fMdo$?p>_rf!*LtdFiWZ zqnWX9kvI6*SlWnVw9oZj zA@d&Fs`n<}2%2Ni%y^uQg
          =e^sT9PRfaAOBnMZKMqSC*Dl|TFn1T_`k*XA2i1? zu#tNbyXfMGva`ltP#@vB=Jm#3z5h;Z_9b!&beyto&1~jbza21*SOGiN9A>nM+R5$aX!im@J7B>9JtcAZ~P7P7U9XB zpS;%dEq*~=lbV)%bC$;y>%Axv(ke2*#USs3=a=V52p+yhT+da=vwJz zljx_`&l1R_lkZ9zf25+s$X+=xikGN7^qKMWCDE_(l(WN)??G8dYoemQCQ)v3%ogao z7zVCr14a@U&Js6psF#CNUT^e9u_}ifbEqFHKEb&a29}%4Jx7^3 z#$d_x`~1&5>&J=G3B&EoQNi<}F6MBeQ}cfZKe`gRt`21%T1gHwy5)R!`ofdudmabu zTF{h+><=b3WcQy>e(`QEo7ux$doMhsFJD|n2=X=>zv>Sy!(fPaIGY`dv#jwHu zqWHs1&fy1M3vswG-y>YecL^K#CSkG{zW0GwKk(3L*>;`r>Eh(cxr_nxWDET7$tu@1 zSq<%*k=f?J8ClKT(?^ms>uZw8LgSgnyl6A{&IOG2MHiwpWi(*|sJvf9f&gI=1J=#r(cc93ioWw$?HhcK~Y%uv)+i zdwgOAI&_XSr)kTqo1#C0zrT%jQ}pMTqSwZz4873iVo`BuOcc;~iD=w!4A$QH4WyhBh+fl49N}2uGS7#HnZYw;o zBmVpv+{G*3N0?}IJ}#Nh^v9oEdF_RsYoEoH+JD z_MqXP$fKgoR&1-Wf&SR^P2sFQY07+sGR=M&Gam_zRlwF*X6B@gfjVK}F8m^P<`L{n zH*|0Ivhl6RBh3GGfjKxdj-#&*K82an*g5zGg2{cN8@}DW?6r7>&mZwjA05_T#jlRQu??=60sc0^ZRdTw9vcYThOLr)#dwDrmRgFi^YKshs7_ zI66DMY@&<0n`mb~|IhR3G;K*PR!%+OsQICM1lP9w%Q*LmPD^Jw^{f2%*g;%TGjqKn`eoolyMYg{ z_5lA$a;(0|@09*J1D*m?Yl`v!_iQefaIHu3EkN-}jZ$B9O$xoOwMf1To=KW*( z{n*%q0dk?XEb9y_Cu&Q3hksq(#eS4U$Q1q87&ivZvQ_e(;^1odg`Es|!fyT;)fri=Pfy7q63En$#Ak#l-Aiiz#K)izb=&8;xkZg>vitJ;^ z)y=K_J~F}B0MjPz85s#5+Gy}fBEshv(g$GuAjBDD^tBi^rx=WAnJ=?1SeZRlARqC| z#BV2`8Xpm_q`$Hm@xz?efIZNnheUvIAp zXa8z2pVuV)CNIe35#E5`XZobzIGf+)`#Fw>r@-IdVA@%}!@u6XyCHi+0RGMFDQz=n zLtPwcyN&VsfS2v%T!LWy-{{(Acu9Q5mHpvr%5DxB-Tn>Fdjq*Rm%>-&;-n7HuXoTN z>=_$lovde_gnsCWlmD08fll)+hjwp9cfItbKKR)W?c4BwwgamZ zf20fEZsK_#&wKf;<^K+zhq*TT=X#xvM~_U`diHxFSBTEx)6m)N)9K1?6`kG1>3or# zCqw5jxb=*uQ?x%q?%$&yVm*v+EGK)=S=O7{y|TzB&xO{N(6ky_*92(Y$Nxh-ujN{I zW?Iv$?pRVl~Ix-8o>%5W^G2-Yk-nq81JKFc0qdPjC^_>E`#gAgL z5byt*abMRJjQhIY!MLBSmx$#RnmuQ-fyMc z)=>69WoY2pE9(b_uWcCE|E};rrfTZI=-l%Lj?JGokX~?p?!0%67jE5J=kEMu4}7sve z&H*?rtl%LQ9ouao6-=I8^Re6D|w3g=CKj+Vln(tA(CGYz( z)+iRL7=^w=5v{Yf{Rnu6EkBQfccbNJBAmTOc-wfxdGJ#By>A`Q&_l^KiVnu;E56Ta z*L57+V*$9w18`pnXJ-m7aU$`0j?Cy*`^+gzadi?=PktvP;XBU~gpWgsW^!hJH29#$or; zjg&(th8VxU$N2qy@^Q(dH$DmL+T;~rThJ@F1`uCCJVgAmdSl`X^ij>VW5kCztD{Eq z*ur^^VqwO{2{+o?Pn=u0$;QQq(H7PjXXEG-A1vVEF3ZE2n+Vmvmjq{v}q#PT6~db637^3Fj9q&e1?$l8H3>VAsz^ zFA`40*3TvnytoGbmaMC}`NPa}FYr#hh#&G|hp_>-X`ITvUw=!@%_X51^v=or#g6)# z7dy?mhViSlz7s6}B4mT7>H#-0m&p z#t`Q`54>C0Z`Ib$c*u3>iZJ-1bKpG=-_@4yHxU!2pS)=A7hMp_zV9Mny^*t5(DPrR z=Pxz}-oKak^}N5H_bt3{-rdakJMf6Sal|M@V%dP%bSpBcMKKljjPd|hHzu_G8 zpZ&e3=)e45eTyv(-_W`IXn2B@A-CcM?l8G@n!T(<8x=} zfb9Ql<&L6LG3eDgz1B!Mn=lf?-nn(O)-YoPJdMFmjS-gg=KB}YbiorPnB z$tOj(Gr&0s9G%ZV{ZqcB+eQ7iQ9sSt?(%?B?5T=VuZ4PMjDc_FY-;pF`7PM}o!+-O zYX+OIv(J9?dt!C)UHv&)&b7kIV91YUy8dG3B=nh&SzfBoX#GcLQs(S4Yd(tK-t=c$ z|0!5sJ__svxMdidj)BW@#)((J{Z;hwBz=2~cwOm~nz6A92FAcgz7D$c{GI;1@A;4U z^Sm8yTG8tXOZ#a}4#jc3vQFQA?bgQo9JhL}P`_o4odB1~lJ3`s3 zt_clX{ipQ#K=k$0jVU&Y$j zoz}kYH1>5hyjtVr;KvyMin?`E{j~wbX9On-j$dj(=eB#+F#mUnR^MqRCuMOTM_ z5%T-fkPoAd@lgKJm9~DY^hPr$*O+lRKkWOKwzW58|FZ_aV+b4$c;>re!c%4B6S96` z*7$YCX9;Wkb>H(oq4z-+jPD|rCs z>=^m_>$E2r9gSts(_>bb#?Xb6{Q8h@zo#+r$s~B)bWvzjA#u~&r3xMzMg-r@N?@{`ZU2mL#tUYY^Q&qADzUjcz&B%U)zT~ zc@_iaEMT%9D);@lXc1kJUTo1hIF@JT+e@8g10&31Mtb2F{!zuf-hi%CS%aEd0?qJL zJWL&jH`pHWlDMGZXXaJ*J1jYKo5A{pbp>zAU!1xA7vRCizOeCy2k-j2csW-*)BflT zyu5=L`IM6PM#j7;XXWL!mY30f=xD{Zz_&5x2jZpH@S?kY{w@XPEWTq9w|S5EoQ0=x z_>qDi3G^!sKVtAI39oLLmglpH1r_OcPwPDR@S)MPZrbm67;(T zeTFyA4#_qhsi)ue`22a4wq~v4+Z>iZ?>Y;AlJF-3e^T&g1pa8RFLCN@L*v=`!+D%r zys!A*QCfBu{y6_uwCU&Wu_I@-q32RYzQj`Urz$E>&F^z-spH~t;gTBpl8=4Y_c7eK z7+hN&7l#Yi*Ze8*x5D|D;lZ_UGV`%|z9&^|K6awi&mX+W_$wFZV?@>t#?hw)wm-R+ zv9*J-kvV&MEpl0dOggwCd--%D$UYY@U5uQntsgj-GV=;z3DvxBre1TQA2=C5una$N zith(5LZ8tmV+ZgD6D#N+*w_^P;elQGxPs{;*g?gSjIUSf&vzutaq&{x+b>@a+)TWb z^0{?4TW6eaG6TA2LU%blKpvqp$V2mCK$yam!WAy+!R7W1BYs2k9c)jEkTEA63h5XKV z72hpDhS3%98y-IsqTeD{<(|mztD^6^Z!F1gEZnd8f5_pH-+6r?HW5;6!q%58;`5?Et7Jd^J`|2WQ{ z^y6p#d}n+Xlu%;H?>3iiCoX3mGU z1H{380PW8b7u%2ToT1(bbjWW@Q+I4^@_=}ohPShf9ehKsex^#L~prT-;85%k)d~?fCvnjhhom2b43!*|>f` zvHtk|;M1_KE)wEf_3r=o@_#XVCEnf_;H~_1*(D|~zW#?Te~mqvnYSn4qvV`*JRbhGg`?^Y6d- z|8)F&dlCM9!}3q@fq}D~@3aTrF^4p~fOm-^ypunk%fE*g3CoM9)uotx70xhrIxK%q zb|wa|;^GxPZb*8zH_xZUUiNS8Baa+DCE-)T$|SLm=iub*bgUdc!K>&V%cs)ueEM>L zPyJ`$Q}XG2A9i}C{_oj8KYr)y+thQ_H^Ya?1JXBRBMl$&eeo)*L)r(sfxeugeA?-r zzGI5+XqV1R#%&%nQji|}uE z0slvWd+hc1mQWgU6OORx2q`Bb=6@q%&Z1t|8pmK>W|rJmw=Tb4D3 zbNk?RzqGM5`?PHQ!mA=n@jpBVYf*7n%Y(3*3t%;uW*^~uPu}b|Mb=N?{D60z>?wxN zVqj<-s;wk8yyk`+KDuvPGuc1C|Euqf)DsW?`Eg5IOL2Tc0esq8!@0e|hPKvH#S(V5 zEov~=rOp0z+2RJZy=CdpWOH41V6x#`F#kq;o0G?L%hG)}VfR|teHM1Vh23RgZz>MEF9^G{0CuN^O-`6}aVa@r zx-KIp%;;dhg}tpf?7s`b?kj-ZcNW+~7WRSSus;!my{`cFzO%qiSlF53us;%neY61f zQ44#o<;gzFlOe;ColAY&uya|NiGOY>?3dvn?6CsaV;1(Xg?-S%K4f7te!};i%NPe_ zn+joHork@1X$AfZILI$noi@fxV^5A)*hekwgoPcpup5iReq#`JT>)(T83X&6g?-$@ ze#OFWx3E_fhy8nU46IGvxfK6*9Nw)K_DKtS%)%};eSYWCE(?28aoCw4?9Kw%ofh^q zYfq+Idoshq?zgbF6^H$N5O!Yy>^=*-+`_J~u&XTWAq)FJaoB@F*!v1#@8kT7y|48c zo|l_-cjWC~msKrPZr)2vhbNosvV+BK_@frS$}T&QAIEgx#+YLI`CK1n`#k@;e7+C6 z{fG~HIksMU7@VtV?0FE_mzNT=16KRt8?sepz8;#k4qMo@7IvM59k#HKS=h&m!(J1F zohg9LcxCWjWMMa3*o!UflNL7PNHM%W8if670qj>T>=p~V)xvJKu&0$7dY4c4ZAu|e zt`EX4YaGv$GQZz1TWMjhwy@V&*yR>>MRC|~55k^V0DGo|-C<#OTG(9{_FM~lUUAqn zgRrX$U{_n%-4^y{3wx`DU29?26^HEwVJ|3vy}-imwXpjv?0yS-k%iq{9QG(V8aW+o zEP&l;VQ;svcUaiFE$kKxyR|s%7lN>t6u@3$VehrD_gUCO7WPUDdv$TxdxNl76u@3# zVGmo_2QBPF7Iue)-B}#=V?o$!3t+Fcu#Z^SM=k7xh23poZ!Qk|^Fi2~3Se)tu#Z{T z$1UtvEbLwjyRSIxzYW6fDS+KmCZBt!_w#Eb&){>9{mS~>?ZtiWc3|b^6XXS4Zf#SG zeCidYS>`4?y)B#_$G4{)C zVio?GP>TJ9h$(6Rx_QSOG{Jm&HdnkM<@}&&9XZzWk49pNnVY^JWw)7G0)gi6wESCO?ii%+rXu@AVwz{4fj-4* zgy(YbY!_`6v?tu*M;p(U^33h?NK|N_jA!_wHNiOaEWJFxAK%3+W)XL5;MYoA&g5>< zzQ#L8ue+WL-QWLqp6>mY?wmaT0D3D$ujc&FtaEjA{=g}+26rQCu0>_7_fFQ*3ny#- z56b$TR@RD(Yi;mTLd?KK?QItvL&R$KE*}zuG?lzk!1MH}P+$__qN5bxs&a5a$iUKjn() z{|@-q2LIHjm#JUCI~R*Ae*}KQcg2{Z@G=H(%^HZ!f!kMr?{tgrFC0JneSXdg@KgJO zgZvyd_~!G6h3`wkw@&h&Frf3KSWkRX`w#VhFZk-*v-RMsv(UQGTeo*hxt|Gez2*>j z6BCo2aQa~IW#zSW`MpDUpMl@) z1$ghac>n*+@04e-0=zf=5&XW>=u3XQlfK*~eL>!`4~oY(pf4K3^nVNb5<*|< z(HEx+-xt1&2{CNkI6D#c^8 zT=PfZJLiwEzx#dzU(aBFcNgGUYVnLYzE+*x{*D%$$7k%t1murAl_wl!JP#p%?S<6; z<;efPgqIx;+#0NJ4}2f%^96YQ;$M7wkZ^btf~fMb;@Q-s1a>$ZLV|In}=41Jl%Xeu(NiKSXu$(JoY7a6ZKk;hFI} zd#&Hub*kTayXBw!&VR9T46ac)9Ug0CePt%`7cVpzr(Mn*9>o7!3BI>!ub|%P`K*cS z1{?UfcRF(@_ijpPuz{a@r~Kx?yDaar@+qU_eUtxVa1Z9S2YoEjC7euNL3@$?=v{uk z#hi;ZCn$1$WG8&>Le}tC>!Zm|U&cCrLgVVjO3otI_&OUobwC^M6J4DBPyU(7HS54; z0wWF#S7$@WKX+voxW$1ZdmBd13(*15=JsyH!_;%{$#-i2rtI`5sh4Q=eEUp%*?YPq z@)tG!cQVv>CvrBva?Rs)zzQS#R*Q=rCz)?ODZUta0Kb+xmjhdPRMJj8^(&Q2=iY%^ z6}Zg;w|G1JSOHBd^Ym<_?q2GyqwZt;QseUSCYhW&wHKWUUg95oO2H#NBiGQJQ~P%Q z@Atgn%lV~BONS@DzVX5J-lXo}8nxqJVSD1U(GOq>wsZqNnK_%)-he|<{aQ!kk zAL054_?mAxm^?z|6Ha{M5#I%6CY;b<-jbF368Xn&-K_f%3OE4d&-P@#)Bu zvHShD|2co^fr--HH|PBSAnplh_jQ-t333>8PE{{-kJH;l;Mff8#lHNE-ZD1CL=XO8 zvI4$VagRS7ujRgqd+`K)GWiSTHV4(NE4%R`NXG|?(DD3f#)CNpeZLubp$lyle&08|DlIdKWA((U>`?TZ(egI^WT z#P9f8@Uu28$@^a32X*Om{a@cAh&g!TE$!7q&s2C2hn`vV6Xc97n-IASdbC$9Mqc6s z-kZL&1Ago#S6Sy>uump_)IU=wu^XJQg$e8udw6T&M|h6COSJQRKF_7ItnB|VV)oKOiuPg!lhs13g?k?c7yiLir><^D7M1r9`6g!Y=~_G=5}c8=XXdj zfqjH)FVFiz+1N1m2f07Q{b9-+;Tio_XQ3p*JU__uVSbJLkByUFDJMIq6FFHG8yB1$ zy}-Dz64~A8ign+X1eQ{yp69<$fPD4nhBcP|kiQ zs(HSb=X>~_f&M5olp~AaI68rE%#`x2n2sWQ0pCInk>aH4%PvM*!aj{09BioKWXjc< zKptKx`#p-mDRXe(Z4M6SfalVHc2l>@!~gK@hZ&djKmAQU ziRoM2=o`;o|8;I$dS2sF@=x>Ql5A;mk3Sae51t3sRciKwj9#hpTPBVFz8i9gA%{3J zN+2Wcx8!`2=RNNYkxR9YW(nU+K@Rn$R@N<)r!U8s*f}WQ*Ab6`YeVu~|CKx%@j67` ztt|6tsONh+f)xUmr!k=rR;3TC@H-RREvzs$$*sH9&jtthEE^LA7y5VP(h~1s*%$iC zg2~um^=tLj%dulETq~(xkL*pKm5yOAv{%V9-+R3{@;C2)tw*u9IKOB=@3+y$cK8CE z4(gMuo?T{jE4WTAdhZ8E#m|=mf3~H!&F%pbOxMOoX~X1#*)|fik)(|jZS19ue)R4! zt9OMwz0X>!H0YKbFTb)%5Q+DuAQrc`0$SJ8yS2)J8e8Z zvx4{l)14nFd~&d%<$h@DLT_U2@N)(DuFSVx=(k7@RX5q^WgoxD+wyo@Z6wu9`Ndu~ z+6;`v*3a#lWc;RE=`+pzn)uzq&+mtCh^#mJw5CPA@?UxTS?JeCzICc!|5a;OJ^SbU z)lsuvb*g{Al(Q{oJ^kiL4EbVHA~znRJ^3WWqa-Kkv~0`rN@4`qr=;YCUb*LO^uwjt zP#5=A{GijW>lnWb{X53m1#|ZW@(;A16Zrb(TW$?w^{*H+PIeBAS>JzU!F{yMW37rd z89#0d(EM!BA1{bcI(*_5Uze9jtg1%yC&fkND=D_Ez4j^k?6b?*D+V7b*i&WV0+cm) zg~!J-+?+&l8n=(&?E$>p94k2!xaFbjVel-J$4w>U^D|>zUZk?pi+uaI? zG|vR~%NB-{=d)&hGd`ZA*n;|M?KR}wSHm;<(3eWJf73I2*A%~alswQ`H@+v5{ws8c zJ|wvt8UyhfwfWm8ecd{3yv^*b·-9S11@`to{c#Lxwl;^Is3;Lyh{{3d-vwl-{ zOJh@dSIT%ziqPU(Pel zT`PDV=6Mr%Ex)_+DOcX?(V+eb@8q)4a<-FLv_Dcku4W`3L^7t+%Wf{uw)~eI1WuS2qyTX!j;|Cuq;$7=T$xnRZ~} zqYk=v#-`K$hP!Wn%C)UnndnfNB<~oT2XDW7woe!E3|-Ko^S4z-u|&yK{C4ARkms?| zyLVj*Uv(|#`c{7L80DK}+|RVn-^jJ1vh*jeKbwApuC-cSQ(RDeXGM|z@~nwZ&oJ{=JwK&7VMa#U;EfvtsG5^QQuPr-f`NFQnuWby|5K+)n8E@|2%DTp8M(dPb6EhC+&>+E4ZTXe1q?s zxj9wX&$rj}cndTw*7y4+9J>jf{0y{+{%9@r=!bFoVWJhewxd%kB(F()^M3LZHA}H? z6(u#57kCSdjxrv}wzqq?*66J5gu9=}{Y>tupP)VYsloHMKSWzG-kI1AxVTu^UsycM z{8e>@1MM3>1iX^qCBH*+Y9lY{)q=dd{*?N%#fk^%DjU7*j%C;JUGSPX`(eyEnE^Z- zF1haz@1KfuCVgUNea$j&LU&wvTRL*@Iiub^O9E#ZdahWN^g;EK&7r}CcUL`SbQ@ZA z)<9y0d2amE6z|iELW7UZAM?@f+s{gr-Hl%(yH$-WJfipg-WoqBOQh`uN~CPxTGlc%*%X zAF+Ds#*;s0{i#KJKIwy}UH|7h3$EV_w|0jcIGA<4s@-D$?V@%>-p+gKkqkp8N* ziJ8X`-b>evt+IXB*&pE&a=6e>Q{dzHai=-&?9}!Yf6=}h`9UfA zoB6H`?aFqvGR`H4El1iFK0(d?T&1yRxD~G-=$F zf2}=Jiu=lrv;Qu4?)?=!zu)t^W$)q(h-U#S2b*=6IJD=@s7HL$R+23AFV{@h4#%I!(*vc9C`01Uxb zJYDN7sYTe?G5Qkt=$td7v#vb6z25RQd=7kl@C}AtS=wIL}n9`pf7~(||qQ z%f@HW4mz5qFJ-V}BUQjdPIE8t9uE2%uKyPL;m-CgIs@&peM1HGpXl<(=K+%g_NM$A z2(-ppz^fG;8JCkQz;h)!23_)nJmyZ`x=E1^_G=aMGvAGzboQ*~85%3izEk!_#-Lwg zv&Qk%3iO~Ao~#UIH7}X1bBP!$-8zZ(DJs6Ierx9PjG^+e_5A_aKf_;mD?eU&I2yxz zz485p)A34uujCATa_h6c|1#P4U(EM(r;Lx!O)tsDW|UxCO0dBt_{t^OR8!dcYoKK<<*5@}1FdVJ$?`r5uMAD$ zDP~TT))}~h*XErFVIMyMym&RwI3u?;`GKM@j^SE{@GN4@S73#c-?7=MwZt3Ib?JMZ*tH`Sh9o>YE zcJmy3GvJ%<;8`d4UEFV?TsP0)O$OeKz#G{Got4SH0=ijC z%_hM;1@38ZSKKSr2cG@VC7Pi<4c)2D+;8Q1kKXfqiD%+2nh%-y7x!)qNcQr6b3x2$ zNhq6G433M@W!^KF%dVpjxH?(`NuuZ4>z_bRlITeaJu%;)L#BylavHA9>&PQI@8RjI zBK6E+)3N`Vj);FouE@9*y%Vo+l8v975MMZBL%fkr4D)B z{K|+|$d!HAS;m%Z3f`vSZ3f<^peqes8R$~`(y`VHeYi|YeLo$zu~Ou1;U1ljU*6*l z=J2ib%g1f`h6_3KpYPCY;5#%My!#$%W9}D)1_Q&=@FT(48h~MGIp|d z8R$FaWxpdBn*%UxU;4I#acuy`M2p8^3*!hdj(XXz3PyJT#;rar0}cjyny2L+ACF-R z;~+2&dD&jU*c5&_E`MBKg;I!r8 zY?x?yvfIMg1B|_1_HM!G48X9uwA#VAD*$7P<;gY+V>>W*c-a+#(cukh?Oc1~6Fs59 zL<=@xD_712N^IuZ&b6EC3a*>DuH@Rqbv4&cu4}k4|g z;IA(s2M^m2m2I&4w$S3JGnS05SbV}3AC>1jOW9VdZ|*FZqWV_Amv=h8I2cynsvKX6 z>05z(W(fxJ85^4T+Sn3HA9J}R^b#)}OhG?3XfO@EN3fMcv%SIZUFi*e|7xEH8k04? zXnYtKld$82Z0Zzp-L$V@vbo;3YofV!?3$qKwEK2>x-tg+p4_DM=+f(4V~iKS)s_0M znfrTp{kOT^x9d0d`OD_MW7kXO{@z``Huv}J`W4rT!WhR4?8r>)M>)2&Lbm6!CoccS z>HS{$D3{wf?zsG@xt#ei4_%xO{R`mROnx)?P3JcazRiPQb3=oVVIPQ}52hBF|DR*7 zGPohMVTP`$`Sv|9h^wpYb4g%sxRv)@Pg}q3%=OnV-!MbC;eQM=7aWX%7iSI(;-i6U zXb>N7FqmIuoX>#&Imh_-1>YAA0|Q>PAbWBb1{3_RF|+-P#Ha4L;ZTEDI*iYgFB4r@ zL+*o_^GrYw&HO7&Jz`sYlVfGPhdGjsGscNCez(+*gG4D419mO2$tf7b*I%i5S1^|` z_@4Eh!CBsf;aT^5=1|EO{qJJCoJahz!IDb&0K9VGRq$S8k?+5H#(!aMzr|Z;V*FcX zd2fpB$mHk8;+yp2A9q^)m=PL0<$Q!8n;)`B=jRpVhm5JOGxn6>k4hKx$`&Olmy#bv zxrg@&lJC_gqP&tW!>}4(_ZAHct^}t@huh# zE*@e0oAUbKJ(%&PbZ1t8(@K7;sYBZt;V4@Gj`CHestrB2&jh2y;+>(MbVD-9;ESlt z2xX(pt1C+UIO}g1|MhMJe`OS3W#ky`FlLXwLK`jozr@RSTOYx-4{iBao#m^0mwDZb zWM04FP-ZT59Y4_341A)VnQKbda_`W=k-6Xotyg+azo7HXGU%?#8@!oY9=N)IzeVcE zH&&e8!5v{edL%kAH;*^4EdRuV5qL4>($GUOZ_03NzGvpVTKm+#9?4dIkBjwP@8~~@ zz9ry)hU@%LHjW-7(Fvz7?{>ZvJdDA^I6REPgUnI*n!pdt;4`ttohElKR$9h-?vy85 z&><(IC@^E_r`jF?2jN^nZk}X%Ik557hUbv)_hRXk;qzX95dAo>J40Kev^Ao(R9`fL z(+Ic)>tA%b`p`5AO(W2hIR>8iccb#}=vO1?{V4q^1MVZxFbe)7^sx;7;Hdn3Xw!Ll zQ)Yz*r(EPk<{-Zc&WDse`I~?&euIwp2ENDgEpos#S9E$ig3e6&UFX)!$c^1rf3{|- z;i3A=o6Cly(p%ToGhRe(jwU~I$n}~3R9od`!)32;da$gdtUI#?n%45`fTlxS5A!?1 z|B^er8HG0^2e=>R`9WYGhOWh|g_V@$*1t2{JGo>I@cvMUJ~zdD8*K{hB^D#kW@Ow9 z&v_r^{W``&S4Z=@BtOmVQvC2|m@`ohI?$7cHHT7v%ph;cdK8(D?&W?T_zZF7{Rs6( zsWY;J``zHWhj;t9UsQlA_paT<4%*#o)?@OxE~5QLaBT!v-bZ==fdH;rr<6^Kft$vK zI6embX}A)5?%Q(TcFOk1u6_CpvaNHn1(xhu#@aX2|IoEGGEJjzY3W-(*KPc^^M6n_ zJ>2&~Zy)q-gWhlfz1%x`Gd;ZTFOW?bdh4LK4tjYX<^5X%^g0`HM%*m^Nu#^|+%%vi+weA zHWRS3b4t$Z9z}*47mb}2j8^UgIx84sHaA;y{5jZaAI4N;tET{C-t9VpYbDBdfpSiCC@Cz|F7BWf17LB6B8*jtx!(u z-V|v9WN($GZ*-}o`3D-<`?Z&wXFu{zC41 z1NRqm-xIihGxrAq_m^-#l)ra)bj`+}- z8$*Hnz1%Mh-0$K3M&R_*)&cO{OMAORgP&J>w8449gK^qS&~|h;_d95BJMC@D!&vve z{Qs#Pz`HeYzn%Nr0{7dv{}6EcXm5!2_R!vr(BLPE(bunXwAV{}J$V@GKAQhO)d#$` zz7RL-e%ID>;$eU*F`&>w9`R5Ybn=7J4N*X4)1mEsUM6U z%fnrNEA3|T_xCTS-2^Z;hX%`v(X)njR@2T(%B-LrVoOT{l9{Vc-x``Y)YLU#RcxwA0G_7TQ@tJMFa7OgoEcXLX>RkJ8SeJly*ig8#w% zeb=YdcK(ZX4+XqJB_qM+>7}BV7!rbRw{;3lAVa${qc3GnJ3FH zt$3Sf@^L<|zS|O_ehB)}@2=3`U@>~av{OerwY0N`7sKHd+Bpu4W5CD&qd*T09g>Oo2`_FdhDQPzM}ct!7>9vTpkqd^l8N{UFT%y} zI0THD*v%Q(&FR?9R_-NNt3R?k(w8Zmv9I~qC-8mZi=vQqFU}P?1tm5zU z7*pr-TS6S8IbZHkTTW{fF=F}gYQ|r9oH+=7bAdSz|7<=sj(Ka!%v+~0Z=L$Yy_3lA zc5T|2>gO!1n~34RSUPq1X6AG^m)!S|@qM%g0v=ii8Kn*3F(N!{-40v#dg_jrP8yy= z-8s}PEt%S#fQBUar@%jr>@vgPMl3g0Rd3caJ`%*m#%6DKxDcDo<8rT$i{J?tV2)az z7+h>!oD35)xt_XtT<-O85gpK=wVX6MklF3?DF&b7@M%F1myjQW|8s}SwEgI5v?kRjhmohuX^X1|oF1Px)%yhVf0=Sgib7sESx|1C))Xm{SU4u)IFW9ck z_VIierb5U0C*oDMjg+VVKvJn1ZYW9xp);X_@A&m8KW!XIpErhhzt27tCoY+^`K)Kv8(Tl*@S(oL=RxWh)f;RzF@|yW=FfvT z?euYCzGrO4O^@Vpn#Q@{Ih;;sb8LM+jN;oI>N}jyqkayjVE3PE|86#FwcTUN)?ontN!7jguT^_}s*1W%Z zmiSaMNY28b*8Y-=7pZFE-;8UHZ^J8*l8@7Rhf_3<)6G-QVwY^)yBt2$b@@S9DP)mG-;($N zF~t<{p;GuY!TN8e{^QhfIVaWpzn}Uh?*v`QSbrdiUZwB@((;#@@evjSn^=Z&SW@U- z8r@5VdEUtLMJ1+-d&%!*KV%s z(X9vUb(5Z#-Lq?>y>{t2eRjRQc5*G@{$6|S&~t3xr|oquSACP^Z|rrAuB;t@!d_SF z${O;=?R6zrttH=SuPgMNHRapwwOv=%mY3RVt9gF!uD`U`7Oo#L|KGRkLtKeTJ#S-* z?0=XU>5raUOzMGwGsmR<@}xcAe<=99kc;y9Z^T>Kmy%@;on@~nDWZ6Y2>RUEjMw(H#fky117jF!>%G}@j{of(v!N&RyE zXI=JPXW(h>dm&x^e%71bclQ0P#JsYpVPe_`iGLm9-5QsRt>F!Q+K zP&PWmUVsaI+kT<-tE0Wprny=l^62-n4_`&jNS$9kq4Je}`3bgs(cF~+7+r!<8-Q`G z597G?4H_x~IX#}u3o3x|Nx@hUfB_F1h;jYg!MHX6!{tg9z*s66^8+w$^UnujqiSE>Ncp9{|10GzvgIA3zOwB_OCa-|AjTq79F z%Oy)An{_@6=XW>U6@cM#r3zqNA{d(2A4VSz=Jnwoi$|e8T&VI({PGEvxB9Tk;eBDC zO_w`Y(B{}2U??_2n+Ar}hZYCp9Q5JWf}z-qgJJdIMhD{@^x+qRL7Zv~yQ{G_iJk1b zG7$f&3k}BS;kPkwi{cAp|C>15TE_S_w7Z(v3UQ_AtK7fBJu#aEF`Fp;FQ)#2jwIj{ z_Kvs~Fqm&CUNa&X)QeF+4jko|MKjzdxIfB0F&h)FQGc1sJ$xb;c`(l08oN6fWiD{I z7#@cycZfO%sWS`=`g?2v_vlBWng8blqXihuZx|B>_ZP$C0Of|LvyVD^fq|VMFM)d8 zFXDgE0v_VUw~FDghcdePmk;)Up#$Nggdms}+i@e^Kj6~ki_<+`ZTNu3U0 zh!=I-&*dI|I(;#Fn9(1_zqFUW?jC;+$z$kKd>?&kPrgt6GtX47uumx_c^|r{@=2Aq zeQL8UFB?nT%lM6t)2G(4AMq3z@blwA7`9K{<6zLI@-Xf#4g-FEGzi1?sXHAE`cw`E zHnu1p@N-cRhPAODbTF{7IT+a3qA<{pcL!m#`F2g~uHv6;tb_4c{66-HJy;YDI&x(Y zj}eS;h|`N2DM#sB>pSNXl$b&tP0V4mN%Yn!>hch}?Q zdf%>ouF)BxT@iDC&#pdQ@rVD}+~2#a*Ie)0^$+ISv8zW{+WC83X=f`}wd3kb&>_bI zooO9D-|jIR^7AI6WuaXYk!iHFbJqlO4ej#Gwc?52?=Z64^}4RS|E;-(cD-h<6;J%P zeg7MKeVOYSb%SvtgMF1=EI5;1Fa~9?-}l))MX@sYF#~?gq))+@H2le+Gf$lF?Yz09 zHnN@T%JsF8-+1c=KmPN(ANp#^gzk@D5_;$Ze3$9IfzbOxqiwfr7#X|e@Az$4=l%Fs zKM39O!;#P}pWFDaP3ty1()8$tN1ML8;Y&@44gF2$Uvl-TYc9EFRnsMJU$y#@d8+FnUT)7SX@h~II3Q#O9JY0k#4HQl`N>rE>+?kLh; zHSJZ?UN!Ai(_S_0RnuNI?NzUS1p1zVzBu%CLEm&}x*8g9fyPzPSV-T^w6T&lr_kmc z+T00UKZdTCp>r#APJ*T@_%-rd&TkSlUBR!B-*SH5hR2&`ZTNCi!-j25?He9zI(}*8 zs?S|IYt`2-y?oV=F0ESixdQsm-d;8BRnuNI?N!rWHSJZ?UN!AiuYPi}_v8O_V(iIV zk@3UGS2FcB>;#8zfWt0u*xmF+EBDut`!A6Dh7I3rdVIr^P5U=|t0}W#541i7t%LCR zU!Z+&)8{sRyXk8izti+1U>)DMuj#_;);C>r_xh&yU)R;N`0lQzhp*e%^!ImfZ2IYS zo0<;ay{YNVH4iks<a8uli2KHLHGE z@%B|?74ufTM|I!e(RaMTzLE*Y{#SbJHl2|nJM8|PJ-*YN7mz=%m^o4wpUXdQ72BG? zHsiZxV-?Jg>7xzR>t6WJQh&d2h#Z9Tu|EmQwZAkmk|_7G3Cb?z{}{1=XgPhHc+wA5 zo;|l(x0W9;#{a%QWzRqjmyC-i$d=50JU_<#1e@{u>BaXLkClPzG}^^>Oyt|k3%!Zk z+q{y0iO%rMeFOK)xM$zPKgOmDC+HDw)Kl!@cL~lZWsg}Qf6k>n_U9a3CG@?wtB z&Tlzq>1V9x51*~AV(>+W=$UX&Nw0U$Grb0`#W^mVc^??d17Dk@H>1sLHnS z-A->^S>&zPA`4_%c-F@;^0JgyTX7}uk#h__DWB8G9r;#HAl8IDqrfu$O+aRn*He%A z@+v$(-T(f>spsj$n~~XK=mnnkh$b8TGp=-A>ukH!@K^(0YoWOVdck?Db24!& z&Y@Xt>1(76y7*b0ea5pEXiktX6z2T7IL~#jJ`-Ppe}vDNYT?=n%noF-CX`j4FtM7f z;&<^d{!>dR`zU)GWALq&JaENaN~zCWC_9y_i4nqs4eKtBe7FwTQCII&SMBJ1q8fbh zpOXBKk29RC4ROwHX*Y8_{IyV)yo&7msU5lY>ada)o zc@m$ym6!v(Jmt(Ir%&pa)1Z4gJe$D}nqKMm`$SN0bWTi8U%Dok{KjW16#tw!KEJUC zc)h^u16Du!QZAjDGLY;8p9(LV?6LiYv!?ny?}YMYS0Oj|d>zlle|Ntjsyur3iZC~1 z9p$!PQdabSnOxOO>131tzQHT&P9ncF@=GJXWEa;>{JQy{cGJE1X#HH*a^FE5wo~u9 zM{oMr52HOL(y=7>xm-2$GTjy841qv?F}h;TIzey9$;rkj^ECFy)rs;xitgobhn5YT zvCs$ZYU3j5C-iqfPhpwmoF^#%TVs*9c z!;>ovUnb@Gf-KT~=mxTIZT8WY``__bu*Ab8yiLMK#p9#kS`Mz!HOLgbayD!eI_YRO zaz$P#@Jh|)OtkYu4{;{*aIDJ9?Jv0;*m3X`-mXu7jAyRRT)%VetsdXrO4`#HemdGU zpX!J1xA9AJF7)KrKl^{VdmH$wsx#kz=LG_SqJl+>H9%0LcrQBG#x!j?NmOd-l+NHx zW}4m!5NvcZa~X&JZ_LCtXs}e$7LN2zW}2A`HX;p7in&iRox>a-WT6#4I>L*6W{A48zs5D43)sV6q#BI4)}&I%bOqK zJDsuPLIX?FRJVVY<0ksliQeml-r4%g$$KFlqo4oycdvIp%kL?E2l#2e{|wLa0`qO@ zjP#er>x`cfzwM7N;qw>9pN}LS<6Psu$=BBOO<7Remz-VFmo6{uJGF39Un%F$X)Py- zPU|6``egOS+eDKf{UOpdhT3<_*UJLEp>-9*Z`JS?a_-U})+M~y0OvxnuB9`*f5_Nu z@f1UU;+u>nnu?;W*bx3W;E%xx%C61Bg>bMdgoAH|^rh~TI&Jnpj<;9UcfqBfu?z5T z$aYC+y$u=qUklLRvw;`diyup!Z#=eX^yE*Iqw$}XI;C6IamJ_YSbekgte(r+9MD+4 z5>ppG71j0K{JPd%_t-kl6dhMSl2@Mos{FHgbbAUc|iF*)#n>#GPW%iwOJEix;_bzb^?m=I#f0#8H=4zfv z>t}5h9q>VPE%w7K#c#%lcd$P1wZZyLjF<=`FT_PCX7ra8$lU?z*b1)AIlbk3biev% zMXUYbWgq?T<++0=up66)x?R;xd$nrMt_|S}&z*@7tT*Phmr#4u>9)fcjFW0p?GY>C zw+Ae-8NfJ=eYxOA?cvAwD$wudEI;t1SPr$Hw6Pok9M=QK!}!4k!}UD` zjY6Lho*~*bIYnLK?@?$lQgKPNqr>SF{PJ7KKmSdgySABfUHp^=Z~T+eHt^mWq`?CR zl-9_56F-i9lUo2X_Wnn(pq?5AEZ(C%Sx-~y#d@~SFF9#*EbJc;Xjj`vFo}R zgI8j|tOEWG@MlNF*uHLO#QO)8UrzZId~4)e3*V^6T_5qjrf!!E-I8jco=WPe z_Q&buV#+KhztM%|d!A8TIJk-HX@5$Z?8s?*7=L)qI zARlAA;UCsSriJTk
          jk$AxcY*Z4L~$)11K*>b>V)@){zz6AMH8gROseH(ENeUSYd zQ(0jB@f#r+>M6TQ-*_UMwhU`eX5MRIk25ZPPvwBy^l>H66_lf$7`j0`B%adG=o{Ig z>mAxd4{xAe+Ww3AtWT1+C&;@|HfxLWU^^rU)mv^b@iFcqH*F77ax1Qd(K>E z+v=Hf&#hnf?=CQTX5W#$zd-M6W>50vuG3#Llg+#t7{d2y zT7RB@#${oD-e?DB72$76NT0)VjT`+KG5IJsyX|>r-P=sep98FRY*Cp+BfQW=8SxZ+ z5<`c^;WI;@x`00B{F4RIue{SgH_z|^e3fKQqq%Sr{uSRR;UD930EX0h{4K3KD@m)y zX916B%2f+Ud ze#F8WI`n{Za3ea@aOSL`!|ouh#`g-q_pfj{g0iVvB z7~Bt?w?pS0?8Dy+ehxtA&G^klXX=o>nP>+GEx@zh@x)(4tr2e+o;lM9Pc?D2b~EYl z%Fue!>Pc(h9bOrNzlNJh1201>$+wDn>Vc(!HZRb>G5iym9{pH8|2Wg5^}in9V-@90v|g7uSyJkh0T@RF{8kHFctoHEX~hOfYr(oS;Lk>;$^prO(- z;8AIe6DA%+w9QbT)+o}|j<<++A6JUi#s_g5_q@yo$Nc1faLFgVDw%bmf&9DD<0jsk z`sMo;EmH8Bd}z|MV|kQuva;Wrj z$3O2!a`0{Zs|$=Dcarhrx~v6hoY7n%wFLMnqw)#LhxN?ocgvQP?`86yPW~>WPoyjU z>2JsDime6g1@>1!%Zbm+{W*7wYV9uxY}}RdnDBKwKIN+UHy_>n1Du_xH6g;@}SGH#YJMr)6gMmG??y7NAwD`ji ztUn20H1fonlFrY#Z;sZNCXZcTdJ%k`0H%}F;eyu;d@+a&3?oNp(Z}b|$0O+DQS>qM z_?MZ_kJd@~dXO92#64}kMS%n2hB&|%TeSVIe!T`AH+BMGCtDqexx+`PlJm?_&v>hm3MR29CQ;-t-Rwk{s;i z30+5f`Ekdi3;&DH#A7jdopVvV#J-64FQ=e2dEz~^i7ceW`^S0q(5D^zeH5G=$Q zoc4e(*BaYWs&|=V_&K$Vy6bc<+GI0lzKr%`yqmE?`G7?{{{ies*(wKvdrdTt-o?3M zDeBW5IaY>7%AHp6#3FLNnRUn{VG`Y`lr>bvq_s%zRrs@K)#0-xfc^_u2RdXjo_t9V;V!8hkhdo}UT+ zXG8Nj$ZI)#TmioOtN#FH)?J>_y2>d^s?!uyc+Ae#o~#m!2>FYJB{+$fdE5>wJHa zA5$3+c=24g2}X@=xP?{TU6fE#~ywdR!&`0YynqMW50e_z1`<>1wGn#w6 z=K?f%GHjoe`1VQPBKe2%?2{w3f0Xu*!8gajF?bpsE$d4jgNJ}Cb;OUw*>w}Tm;R@D zKSAFPABt3E(C5b9xHfV;L;48m8P*a~vnKbX=$E|{Q?V9&^l?6G zAPqd{vaV4>48dG@%EDyJJ_JubJeRS20kChS58I({H+Tr@euO&usbeE`JV9RZrTz9$ z_)gJI%5J7?*ZIrFw0`EyipCb;GvAQQt3H%!9}ap;up8NGr9Nyix1DE4E^j_entzXh z3pmvu)nV#c4*#s6j+GPCf&6KXVPtMUbUHv^`g3_7;=bgEi7l(Ha9+8GHHC@UBAPj<&6hn%YXZ%4=GyKv5->lEUV0fJ}o8WiN8&i#ZYvR`u@sdk(@>fECQoLt*qyb)S z&g1o^5zk!$ex$GX9^-penAiD!K3-o+8yCatcc7PCc(5H_Sc9yt1O6u9k1ZT4JJ$(j z@`*>A@Bt_;^ht2o3l3dkBun1x+@jb((QX~ILw3yilV~?gd{71We1f_c1hne~pKb+x zoa5^^#Ufd~9M&&?2QBvU+rzJrttZ`k;;+V!e@_NBn#MQ9%Plf%u@n2>Y&=4`UhtHd zyGRqufo}!4SO(w57;hHBv*?96;GmT8Ok<4UW%>}gT<7?{Em|shgKipgQs8hB>)wU< zc@H=tzMp&9b9b(nvL-HiH&DL|KG^S;dtV6;t)foGxZ8=byMtJ{Lb(1yfa}}Q85Y;< zi_6u6oYx^6ww=ZYOZ%v2%zfv;JgW{_`D9R+WV;br%a(a_QsFYt_s_y*ps~s%;PpEE z1Wg;~MzyY;sBjo(p*Qq5v>x#NkQW+b*A$?0*f;P<)}9IWAJmQAe{c(Nmxs*V=+{QS zSaGgf{SM!IuC>zJfnR!t`N>mjR^I8&3;0#DaMImFi!;;q7|9vbytk#+TXbr;RJq8kE`b(W=;yymos1v}~Cpk*e6yyga+fLs~Y^ zQSt=vUS{FlN1lUzIpxdtW3Qhsn#T_M<+AnIKDEESYLxnvXOwnKUieD&>2HJA){j=j zgLmv1lO6|-IQ^*!&ev6&qd}fg(oH?|$Kb8w?NwJnuiJ0%*L*jQYY{AfGb-EU%eO5X^2)}*6}FnemF4Gz z>qM8UY~|RpngbQ0)2uL^8uIAWFxeAt?5iR+lyR)+^^W87rV!_dFJ?{iBrjIh@${Dq zecQmdX_2QNFZ8WrlBx5H_S*wNeO-QiU&v4I_Urn5etNI+N1pzSO}{s&XWt}muI4K5 zt&YxP&-2Dyl`kvj{$X`1Nkagy&b!DKT`&uj^^*n&*!r&#x`73&ZpLn(`9W^_264%cAp` ze^uMMDhk)NBV5acsmte^AE(=u*dX9Ti4>kb$vEm*OI)tmX!E-`pC`H^{J!pSJ zR3GkBWnP~uOZ>WSe7~tHX6vdhT-WWPx>hf%%f?EH)@zoP1U>=ZUnAS|y?@ENc!BdB z{P?ik{tT_*?z|M5JJr$ldB}5xY#_&boV0n)v|yhwX|u75u>E}BgKrn9o%ytLI&)ToU;q2- z-Cw6Z>#Nn%&IhJmF557-fAXEe7y5b3*tsLHGaAv!)r?>LIengxT>_5G_{IIk;J7LR zzh}o?Tecx6yFXX7feB;X22W9u>%08#E&>>uQCubLqE4wNv%bL0!OP*0# zJB|b}kFjqo%(AQ0-;iDPq{?E)huhsavp~DeLD{3ZcDq%UIZ?Rm&b+cQ>^W>N)2@X# zG2lc$qq4!AD{f&1wnF^zdtv^l&*P8!fIou$Et098=&EPpR@D*aC94cx25wxvR{qLgwSVg32Fw}-0j}Z7<%hX2b{@~u? zDicSEzfbcG@wk<>L~n6)l58w^G+xb}_26I~vZPpA`IOx{=A76>E;f~0T~p;QBMV+-T6=oq-Ru zx3=o$>2DYtC{BB8;ddARpw2aaWV*9$moq7vmVHir#HMYV_mOL(Z%$NKfTNec;NvKK zf3Vr#b{_oiQ!K?r;QwEPy2s<+zYlNGt%?W9yAQ9otV;VT5~JXYb>JlHz$w;&)2st$ z*pqUKJt?QzlcM#8)4j{9POmSj;%xLijgOYx&wil0p8>Dt{gIOUBfS4E@6x}D5ji!& zdc$bM+rnJsgAdJ(mKR+zs66rqXmNPR?Z^7*8dZ%o2J<7;<84ndz85&!^`MiS@__6^TAs)bZx<3fp1g3 z8N*NTk5A_^!@pN+ztiY7eTk;YQTZAh(C=DjOauR&zCYusk262u@2rpKzY%+LJ^KAl z`0<7^U$5W6SfH}%i&^uekIAj@;&w-4@-`=SxjB>4#i#tOAHY{ffbA%K7LVt_v<&3blX$TA1pKTjpr`V57`RwX^b~B7;k3M_H1nLIjk#`BM%kmn1$edvBsk7_RQPv zkCpLh*k&`p{Y-E^8(hypH^zW?IGnkh-710k~=i4GCU&vP^8k@C5>;jwj zKoxo658vCmyeKyjsTLso*7!oYgRPZe*V6L`tJ?T*2P9mE;4D*8iHQr%VHV32+fJ zvAv~xj{W2<;sO}7Hqj66cH!sG$BW?9TrP`S@}Cd46XL53c=LE$e7ycK@Lfio)9Bv} z+7I~n_fU9#JVLO4?gsH|Xur|^qPEdt&b5IqqobUaw7;e;iJy-1Gxi)Ton`E=`QXyL zPoHAmr`z|^DaL*fE^pwsgYU8@^nMdR@#dBM{JJjBew$;{rsvY6`*zTtEw6G`_Vs+h zmMOj3z`%SVfGJl-X*>9?I^+jex#vnYK9;0^s$cI1`T2brn{QK)Pv=#b@0ZWLzm|F~ zvF}&UHSOAZp9u2nyZWoTcU(KywA~xLuM6_%o53r-Q@?E=uZu~yxWPU$v0nar4v!jt z{4#!;Z9j=$Pq7Q^KcLS!JjxHD_Vml*J`c}+8#%oBw9CEE57nW1-p9|B0ViYO^l_;E z%eM33%%#cR*g=^vJ)U4LB)G5Tn}u_MEjw#$-Xy+L<<)*SQ#UjS*OkP7s_&9@i+iob zs9x#Nb?91s*SmN-HXNynqtAVPHg@lrg(dtP?U>4%WpPw795LkLr!%B;kw3=bYUF%A z_Cu|6Nfdl(?)+5PUn#nMn)ns@R<1_}*){LET92fBgSFwMdt^^G@@xw1$(=Vw*Wh!K ze*583#>hI_MBiFDwYoAzf6}Hu4!W=i{X2>AfAW|;apC^hzq9>9U#egKq<%4GXx-;x z`t^~C`bGI{ztF>`U)4Mr2h7|g)UTdjvtO~9PMh@JEm8E|%t+gj3E~GIy-NCSeEi_( zU{2?yni%UF`GJEJIJuMY<9_J(ZSKn?X7kx67ys1@huivoO1x%^_)ol>VvPGVbELzp zzbcMX>2}WPKmGY;4Bf-GO3Rl%YFhoMc77*Vq<{vBkcA-nj|iKI<2f*VOlZy?)sBdhzyOY|D-5EAstaB~#4) zo4)rd-tCgH`)_7WYKyPHpMp*q?U>#-(mU1c^>A1CXSA#%o@x!T3^nk%Y|G?6`m$^zEGB8g*5Nu-;OS;|HHS>TY*6qi4#W=4c&KV%FbLgTGe{Nq!nG)pC zZFZi00y%sRIpoX|BZuNm_ZnRfr#)Ja)ekc+nXSs&+XcW!)Perf3a5bsk$?-Aao=iVh#n$wuO3Bf@U z9Q-|L8Y^_(!aT;e*dTo!cD$;)@F6S&4~wCrOIn8UZZP7N2lE~20e4vWH4bYJUCEx? zfA;fk(dP1?Uk3h-GozCQ|FIDK$9(v6@Gx!$@W5YLJM31$!2L(@3Sc+^3@0xPL&XFz zq}~n;M}YyH85|y+7zXTsEDTEo1Afgoe$Ci%V0dvX3_6=zI1nx@9*P4PWbdet77xz} zh9kfLoeT^|CWb-fR`Rp@Pw!R_SpR_9^XFif7~iC9^-bvb=g{$%FRv#}vb6wN*o2P1 z7}-*+vf2}0Dt=SvZ_JxQ|2ohEo#0@z}a1zqL(&%sAmWJ=84y|`<;X< z*`ta_Efqb{ZD$v8-)5f=!RHgsT@39R+=Ffy5Y*WqAHHJU> zdEY+Oy!^_r|7gHpuUd3vo_)HZs7-!t@r+CR(r=@z;b{#kj-49YP}AmUPsLJTt0Z4F z&vM2w$N9Q!%ouq-tF<)nDL;+M#=&QzE@J#Ei6!t(Q>4wve_%T$z>(IW8#TVqW_&;3 zRMk?ScqT!6jnk*!pCBFH%f`PY4scfi_?}4~?jn0O!Mdiku__op(8q0x^=v?vn)J?i zW8Z~C^)JC40SWpjUzx?PU~!uxW}l9`f^Xnec9!zvk9MS=1TGt1IJqW3&~JF zlk^ikP$~G-SIveL|~g&k6nW{X>`d=LLTNd$Ml&SbK6S zI*$2sYHN-0Z#{|q$QiQCmC%3KhREGBU#9Q7G+*Lgox{K1`9k{c$FuV#6X(3N#+y7t z^M#`G&lg5~Tv}V;kk%i*aCP+YX=CRL)4qe9y`J%P1LG?=l<&~sxNf=`(>j6Y&Tl^a z!VT}(m7TY|owO8otL{Nuj=h!Hcx6=QBS1T|_u$EEBYj_9P{X;VS8}fD%s%?#rFxN< zU>(5R2glyeQIi(T?*e$m9}D@d7C~9_jdhfiuV-uQ9tsThOQ@g9-+U7q3e_W+-O_=+~{|Smswcicu%6YZz%I+ zaX0>qf^`sQjZb7;9W}NN+R4_TSn7(JobLepF^O(SVngaKY-Hnk=fTC%$C)!~j`i6i z=cm2ZCF-|+_I;!x=zEBd9|w+_U>=l)4rU${nG{_={akk%+>eM{yZqfJO~@0 zD%A{4TcGU`$4eh&JQ$5srOuLmgmLUBbX!6?x;k~1bbJ9CqwZub5MSckJ7)faPMM2; zI93loH^9%qJOaLa<_hvol3a1uRK6c#E`3X}K7=3QsSElc&iQg>{i<3^N}*qk-ueF0 zXwB5I^0o8=IDUz?^ZgQxI|d&765B55mk8kb6lFxC81Tf<^>g6EB5X$o9y4b=VqYz| z6I*&ExLE~mMv(PU_=R2@+Zf0%iB|r7&6eU6Zi+EZ-xJmUbr@j@`cb59j zUAVqEdG*QOvi04n`j$~&9rX=T-|*P_rju8&2}TQFSx{eT0H1JBAF5ODTC1oAA7l1H zVG9~wVLm?M`sY!`dB#uBF7t8apG%&3*o$`Fv0$1%kBXo0>-!St4Ai3g<|F5Gh@;Q< zTmAttHU<5bly5NfVf;SHxGcY=%QF-B_g;B>G#>aZdk>#qM*ooh<@=R>mo)M74aTo_ z0l!kfKa9gH^A#Yp8E}6pK_*L z8J$Ngn{?lAUjR1Clj0x!?7Q%qmds-_rm-2v^x;6z2W*-&w#}UZ?D_it1!8}$2lff$ zQThYe5Aqx^zOh%FzX87iPh58a*vG(x4@JCY>1J(?iSW7?*v^Yr=HiB5nU5#&4H(+r zN~{dD7hcbO`~3VWznpBU|K8>MT@l;A-QZ~4H!H6R?$$l_@C3q`QTsraUSpl^!4JheaoqraVDa> zScn-rpgJo|o^A6sUKJ%T`YFOV>$g#;{*O}sJnFxl_7?>8*T9=e<_{^#^#hyA<@3dd zD5rf_Pa=1AOn-v$KS`M+~#d@y6k7p$!KzL6X(qWifmKHbCTjrW=MbMda`>=MS*YVaiAM>|iQ<++x>x%`D=tb9D#C~YtF?Ysv%<79{vm}mz6ZUs}O7Lw4zAoUyo|!{`blyf5zKYUl)i=n~ zOP<}1m%zvB_CoXB(7O@(H_=z(>0ETR+ems7>8nVuC;eQc%EcanzfGK-Vi~lq*2ErL z&b*G6Gq;mnE?;N7!*Blv#VGFJ?*LxKI*gfL1^cH*d(@vR`(pG(`<4^OBVOxv%90-6 z4xHVz-vccDJiCEwJHP$>eSlv-=?(f@Y5bP)cO5dpm?7JHw3<5Xe0nK$K~KTq)5zby z?aYw>_}1u;u7bbYIS)I~r{R5Z;=L01qK){IiV|Ozx&H-x`FxXX@O41`_;Ek^C2RLk z){Y1^ZN`%ic;pIh>;cFo1kpC#{eLb7G&&hHFl%%3m&{+s*WCY_%< z-=Up-KWq1~764!Dl)hvCs(3WBfISVBoFBkCLr2E!h1}LO=#10z@^igTEQjnb=Pe7YZ(B^C4 zOyg*Z_N?DeW!D5WS{u+PEQg}e))4;gp*<^$Dk~bPP6N|O024SiFrB+FOrH&45)KyN zi!6Cy!2<@SfTn9Fpy?lnU}`ErQ^6#fn0+D8Zae(!`%L_?MSTBX9(}$01EI0R;h*^3 z#E+Z%{4Qd@cdugZi~Tb+bq^W((%2s8f!{ffoG(Ndm7{km;GcyN&lMk4z(3dm$;CcT z2~Kwof0LK>y=|K|{^w|NChxP+7c;4EcA#_fYz8aC*_c1q-#4(3e#OctM_;TwC#l24 z`MHs*BcVPU`R?@NrA`~0?#f(zUn{V;1A7OsbfWJzBMV*F)J>&Tit*FAB3g5fwbB;4 zJkb&HKJqd8jLgK589V;Fb@UayBv(?;Dt?vxjjUK58bi-1{?p(}IBB}w$cKDbI`cc( zMctj8-+3FcbI71aj|1MUqkbe0(Z zS-6eqm7z8o$lpl*dfKQDwZY$}4bro1G*Un56Sa}Ack^lXkDoa|&Hgg1kAH*ox_b1@ z|84a8-2VZ3?R@wD9eREEEzm1xzvuSbX&pXZ?RW`fWwfKDuSoY4%w->+__HG7y?e65 z9bb-Z++(c`P}|OD_4?P z?KPCoE+M@{yAH59t7k-SQTtYgX45_}_&T+4`;+q8*L;xU^A6vgEV?v%j=jzVx4O)nSJuFKCg*n7 zVBaWiMm(swocPh$rF`GT7;MWVfvpD`=qK0|H<4x!a2mMMf-8Xit5cc30sqcRsRzBD z>1D6LK6q^_vFE$lGq9g_wiAQC*FW?7U#?-?BF=AT5kBKU=O@-fTW}Iz4m>LY8kdx2 zX`Gb-=$6&9@NGCAKL2dGj|OxsIA)fQjg1eV*}f^DyKD#j^X=slv%a)whSrxRja^^b z2i*IC`vAPy4}1q1TL!?<5#T#Yy#6ub^^db>;zjmMoZyVQlhA&pbcD{Og9pIXI38$# zrs9D{o}&9^o?ZO5^7lZ*8#)LN9O2o{dj~wwsqegl!!bO-yQSxucD_TiF+5NQZI%H$ zyrA(u#`gsw9>|AHym$s4(0S}S_s+~!i7n84)#e?;570hy6n=OSemDR>9D^TD&}KjU za2$R($(f^9U=K9F6O9qv`WmzE;w}^Ux~t)l*M1?X=J~Jf?Y`wNW(2`#NvZuf=cQ`1EBx z`byD^@7eDk<@>+fH}^KvCiQ=161o^TV&F{vg)zDiSdA|1;MtjLYYgwhml<^4OYnUH z{yeo0-tUM1;N#Q#;r)ZaeN9Lg!qbY+ONgf@!VA1Co)(PmO89wIZq6#axV+2Xqh}Jl zuy_A9cLX0t9sbM9!3%uv(wBC0y6v}Ya@)VAdsp9<8mXz`-q9>xw3gi&oZ+f^&HM{E zgqPTQ^u`AIhpfqNmp>$d4Eplq>u;SKv3o0Vh&*=%&)(qqIL|^pjEmLr@kf3&nHwLE z>Yu;3X!eEujma0`?-S7dB>e5d-x>IO5dI#9zt6(o=iqH{pg2**ubw#p|GtPmIw@Wk zZP7=_##`d?9TV{Qk+D4fX=pV>+C)75Am1nA@iRePk{Kfdf>pX6c+Uvl?dsE&^y!K| z+s3h}_yx#+=u-FqJ)d#m_hIy^D1C_sm|>_VK=-_XFhXC#{vVcJd*U zXOO$0eWZ1gwwd=Z4QTHS?G4l3=qmnR>C2PiyR>GmcyOy{6u%%}k%&12(oT@J3wg>QPrID5tUM{k>)ZBBWa>AuSim89O0@z*J9zA% zU3f@m31&8cmrn4u8C*7jpJwv5fbaF-c|$OE1-@g+*!PLq((`-4^E<)wFwgP={=$ou zwaLGttldbz>{ybsr+j&vdbP%ryz@?v!4JpbhZpJh3HpnirCeymT~aPGr1RoBE_YsC z!`=w-Db-^~y{(V))hGu}UgSQe5$3=Lsb_$C;2q;D9{`63`8Dzm9*vJ2zH#emqk;EE zzBTb)$$K^L4ZPR$Tf*N<9dE(q!9A(?NY2%cbn9LR({3g0R!6-5p>vA%(dPbKo3Z_T zgAd~?q1h^a2l$&d?OKbqL9Bm8d-CJU`O#*KHotj^-=<^sST2das=Y3q#wR-FoI2U_ z#+D}T-RAwH#pG>{n6bj{u@oOk_b2P%uVoSM9@e>76MH`FAJkgiW@4|5pPu=b^$nVP zfGO`T#=lA(`k8U47kt5QNpwUKxpZ53w)5-YZ|IdgL0c|Q_}N_#EjQ>p?{jqiW$2D- z-mR_b!r#eOe{8F<^OZTYJsaH420wh4kE)IF!ewj3ztO?E(Jn)V)1a zPJgQ$>82d-@t%lxS5OXLI{xA-qeb!wIPZ_vk$yf|)SUL6n>qJG3|pk`@!)6@ZHZ7IdYLBcO`$XQaXS4N4&&x zzOUeYCGV?vU&ebK@5qtPI+1@rv6R@>oE$ynY`i5}o|B`e!s}Xja%A#;R(H%bUz8j@ zl`luneD?pc93dl`^GMFlCr7&(8w$(OZReFEjn@g}$VFZ*Mvfl&$G0X&lA#!~)Ebn_ zm!tbhzmOdLLFdGBbPIB1iOPu zp0R=N#4dY3Wem&m^g`&+VaEn|x*R%GFgBD!ql#c`81UyS$yQ)#2aXNo*$~q4`dd1l zbm7hTOGtbES)Zr#dGmXuUx+uq_VC2K`O!efTmSB&^Z84O)2L=VR@~t{8)G+<{>=#H zVtM}3?LoWp2fXF_u?a5Zk8Lkd|96c)Hg{iXYW?)5-c{G#-9DsPpB} z*k|oY`AZ%(>wDwlSrU>h_}@Rrq7<8LQeP5T>H%Nj^USrzZ^w}*=0?1YifM&U;!EIz zrSJp1l7wgC$YKInHt|7oc!%c`i^26AYm58qk+CwqP2(FhaG{0z@U8;%etv@f`0+V~ z*B7KCbdI0a8FXIPxW1rQ_25WZ1braAUflNvw2qXp zP9h$F{&DEP)2#Vl9lczA0FSYyw7?nS2 z<4w`-(VrXLBRo6+9<;Ydeb>J%y;#fm<%|%2)zQ!8w6_9YMP{^bB~{NHw1GKjBYuu1 z{2a~rIa=^@tjEu>fw^;Qjt{j)E*j2*-xLof9g%2&2OELYej~0|b1HpjzZCl?OZV(l zzGm`ar;N$hR3IPv)@{wp$G9`DzLn%#70QQBOd{X;`9w1-6Y)x)mWq?IYjhfKC0m=c ze~s@dFIlqVik(|%?je0vP^OS0@o55@Y21+xNx?s9XqthyPQhEJE5U0ucwGiwp@V#z zqTM3#@J!mC4G%zT*XST{w-7%8ZD!!VQ}E$wV0)<=e+x4IGBC>z`ssk?WBk3G0XaJA z^v!1;QoH(wXrhcc7cy7tygizj=6JC(+L{JWh5W#lU+yz^8HLst_iJBQai2rHyyLt( z`a$*_NPY_1AN1YWA3@#&=A6*6_DA`H#eE6-Cs}En!g=(;-|qfM8?jhzde@k34v0BCRMPmPSa80=zil-5Ydcne{~x_Tf8O>M`qO!V{FS<_$I zkc~A;9_?)k=M(Ju_y1@5c^$t7{dNTO>j~)B`~OY){c=WLi~;)9>Mot%6~Vrh9WMEb z;AfJ5&GPy$dRcD^Z1WR}y&I|Z^jtGqi!S#0Gn^;PFNN;c)jFOzlXgkO#8EiJQHXcd zuEs3!t7FbfTN+imc=ZirGi&Pv@*&+2qpmn`C&b?)9etL+1((LAhXdOFuRM9Q{9I^1 zfwfs%_n|8|TNt=1rwbqGqaP>@U1aU;apP%V0mHcS(Fu~!sBB0h2%TND#$V`z28hUgk^z!ucLX7;puUxmh<+~d2s$k6_3KsuG)}Vz@-X|Q)8xG)@c-&tKfJZ;^4d1?+@E6Kcz#_e;3t2jDG+wAn)G<$~!>I^(8qwgA9`o)9XC-B#=!Gq24e2dS631F%T`YT_g<;6eY?@93D zL3mMl)XxNPoBoFS_j{ygVF>jz?Za$*+~fL4efhAf&w_U<^{J0(>N){l4ja5oZZZ9x z0LQngOt|er_?;EtS8eCjWAQt#ZOWLl6Bdq#*W%WkBT+ z;gI{Tva!mNfjBadKnBb=c-X9Y!|ThDJ=Gnj?u6Q@BkywZuCO*wiEn=*zb_GgWaT$r z7o7k7sbD;;i&R}1$g$OzQ_cK2WXmj}Zsw-@6@tEWY%$ zbk=HYI6c>t`_Hx5vE#;;P}{11^=BAIXk+cRiSycV@X#lHnugCSf3+?+AH&37=k`|^ z-s&u_5^uQ;%mo|4StawRX3lzmuRf=JAt4-@`7?ZG?+Q)8gGqQ!cWug+6@S`!VPmkC zrgJo8e@Gv%ePHbalxdR>LH>p0VxI6-Vkz|m^wRh)U6X~QGJ<_?&lmK4Sqb#MJ3Dt~ zh0dAO9KnSrO&itN>&qf-NzNZd|C>31>SUauuE^7I^^bae-t+4;uv3RQM*?2RAP*)D z*i9OJ{I2A!3_d}A5;Gh_bFEivJX{;#9iIW;fJI{y_3aGg$_f5SzFsYvY~uIso3Hqe zDP!aJ*rOe1&-!S`6k;3R(U)Scvl#gE;Q%=7cf43T z_+o$RKMp}V&d7`pg5P1r#}3Nt-k)K3NMn5~{b(nDJx^$lP2t;ufetaaDVbvQN18T` zzQuk_L-RY4am}#=qhvfwADf@{mH!C&zk|Jb7`spB!)ILl3>o;Pn!hXg`y};2d*L}< ziT?l|(HRn&=Y3vjOZmQ!e59x0!}Pw0cZB-BL%pig`hn8Td<)teVue`)yZB=VR+ zZZjFD3Yd+}DY(-s{BPMYm+uCKOhoxA*QjsYMLl`~SfN3zG2+FWz;koN`-exsE9n-m z?g?l;0{+2k61*nQ^7lD@BcuZdd-F)+x01hC`Fr26=fK@H(D&_}i8(o{*h2Yk{&eK$ z{=T{$zVGT`#)aCAbL`&oZTY^)ZxRC`Uu6E7m^OAKwH-WkL;J1z<@Oio?_Je5#gYhch9}AP^yD@xp5Z)P}Uq_(L68>Jy-v=XJdZFXV z_Fk>FZsd$^_DNs*cj&_Nv}1i%mgg2yK8bre(BB` z^Bp-b-;p25g89DG@w9Ge^wKoiMi(u6Fc{aT0Y~U8PpKfIe>(m3#i?3f?95wVgkR!4 zq9=8Uj=SNVy=o6!?*|75z&mRe33x>GuKgSIBeK;B{5lKO#1VH)>r2!XM-#2kwYHXb#y_q#qi-m-kW%D=2^#cd9Lo=2jG`F>RBG~V(?xZo-+Esv()H+(c8itPPaT4 z9t%@*;FWUvSwXwBDSqr}&+%h;Y)s9GkT*hJ!58uV5Izq3hvh#wg#W>DZi#CCANB)_ zm-Wx*XWzd0ZvK5W_4K8IzBU2}eb4PFo6?tZi=y&-_ro`e^UgGK-bKKR&72jmJakq- zGc>-T#4+b#EG+YR@kw~mlx?7FJ!J!)%P;!}wk$lCEh~LVeG}MVGwDNohVrv!fln5nW*hNHZJe2BY%kgSG3+k*y6P7$KBf}i zwpQO&&iW=_0zScD<_)2IKBfKt!}Pwd0KK&aseKHoisGow3ray7(MjW#&Y+S$P0?rB z6FP^1x!N<6fJ1+qF_CmT{-nT#p)vRnk50rNCyD7O#2*RDXK4(6li)yhuHyM3I=lDg zitKqFzoqj$mVxg&i;Eo0jG&V||;TgJ5W`~}+KTzI#Vvj)qHbdKQNk~c#)&d_%^`{|aa-SQgE zUn_44XsLWnm(Ts73%yt4>nfk+?@xF?-v_Q^jE=k`+C<#2JEy1$JGM<{S8fdD`z`W4 zN4`zu+eE(P?4l~Iqb~ag=heG_9LOVi=oHIoE$xfErwoqub}^i9+yu*k02jD7M~vE8$*vj@#*m{;W0#yn|Tk@qeAp} z{rwlDM*>c$=@t~T^jBydhERXTDl-wKS5trU-{KOKS-_&KWq%~1K&3y zpEi&7;27B?&lq0#Op%dIjoV>fkgq1p3!RKnP2AaeA=w-xCZ~4##uxsLXB@g83!eYN z)5uX7HUwkWHKIWoev1$dEdC!g@nj*}1bNlkQ5-v|nz5|lxowPhamGr!o@K_Mz_!qs zr#9bwz;81hv}xPB%bYiq=ig+E)>?$t5EOT#J9&C&drVxG>>})K`LmuN4ny%5)+W>V zD|ieXb^cgr$6jkA3#JzXm=xP!?ctyN?|?5HH-=qvvGDEtKLy`{Uk!hoF9N=|#822s zb4ACC;HP^h;HT4upYrqvwy5IXWQ%F-wHDu%Z0$IF#yIWYs{~!lx-4rjPGoZQiE}^i zRt#u@G0l$IiD2xKk5zVIjCoVo-m<)26Tp^#ew7)ojC_racN}fN-p5uPCtu8E4L%yN z#mQsZ>Kq&Yctg;Z;wP*wEohHY2YbtWo4#qH{ha>%ZK@el^Ze7R94}FiJQ}+mzXSHX zVyPGt4gNGoUIT6;!r!6E(YwK)i8T!2&-$39$F*LS=*NGHY@0bwAn%EO{I&;44`e$5 zU0m>dM|M@^4d};>oDZsX%HJv>z6e`g`Y8dupq2as&*%H-eoV~Byb|UVz&IbB zq%opMaddT*!)|t0`o4?OE9ASF8P)kyswdxfahQ7MQ_nj5p4NA%;Ix48+_D~(f0U4NV9TDKH;rp052)-N>#{~TGX}~@MxY1*~T7BJW_1Nd& z1*=~dnfRab+*vP_i4#Yo7%9yslkjn>Lb}_J4Zv^SR&=w|mVJlEHIFI2sW4t2ws^${ zm&NPNq5334<&?j*aQQ#CIc@C z#Gg95wHQ9qd4P(gEh6@F-o`2ZnIGUHJTBRGUFvR!ch-T&CSa)Z{anx6xKOnrTjvJw zr9D`6=mzVLyB$B*xO%{66F$+pt9`uZ*E7r3!`PXv=h|F7jRC#Gl8)H=lXV+ z*6|vH{gPViGHXNBsq;BR&oO?ozy|07?yw#7;(znyh6%R6-=i+r&km1V^nUiOz7P7j z+a2%QA1JIdo(=l`TqLJ61|rBFWqY7`sypI6@?Pmy)|yu6Iiqj16a4fai;-%?x6(vlZzAd8+?VkYFpP-ZOECC*TF>!b{u{7cx(wMygxLT3> z7M|;QHdD449T@m^v}R-WNsykE7y92IeYu`Cl{et|e4Tq=fWO<}d8>2l;CY>&Z+NI8 z;Gqg&UYN&2yvr_31Z{|xwCFY^BAm0!v2Z;^if<^SW$*dgi&+b7b;_P)`+>GFAvy>E0Bn$Dqr#rVyD z@fmy;v&=g@z}-on3lAq6(1U!tTYcp`acq!hFJHX4H%FwMzqnV8Ddkrz3v2F7{lP-CaTk6NcU zxU}V`IIl+V8(f!P9=X!oR&voG8f#3MGTq$IIF-DnUTY5*sJ9TTh0-j{_G#=k;7=?? ze<0su=(q9x(J%eox$bk&%G$D@59s%W0`wC|805<`N*zW zclz@*n>S7ww-S329$e-)gRIrwZRiZovY$3vr@LKuS(F^bANE7V(64ohkJdiexILkE zOCESywz{pe(J6fu|IOXvcaz39tBa&d3_r{nt3&1~FKtM#)Y6W|^F+z~J#`O8wwrdk zbFc_z?YmJNeyua35zGdLkS=9tF_R~}|zZyG#(Og?=L^a5w#_c)Nzxl?z(*T%~)DMi1)!>c03v&JgdfA;#N}@9ZscW)c5am2NGrvfnZTHHJ5q z;bTI7-2GSN$;@(oc&eoA=pvp|e$lag4}QxjMVD+j>`duOA0@u~nB!%RGj1LTVm6TP zlh}-DVh7V*#af3p{^4|MZPm$-IN5Z|kLj*j69XaNQ2HqA9>-XlJI;7bKQen+)7wYg zluZZyaW~Xf#daf4dy%z$@FDRaDI2fTd8rx4ia0Ae-cJ9~oiX6rp}3+Aju+=|qi@iw zqSxDt;d#=emt<$wlAhqM0++iA=>IeI^q;h66T8v3D{G{0SsQ$3^vG-I+pW~c9RwP0 zwdP6wuiLx7MCaJ58c+Ah#W)LHZ6?(>ehK=Q;+Lk6IveChbYGlxSgoOcgZm<^9%w0tDvIi9^PXYc zJVX974f0zMvs*Bb*qj#IDN8KUf0;ol+7 zkxy`r{C3h(f*<}-p|o-F6qfS?g>~<8Ty)}pDFq& ze7M5LbYHG}0(`i@pCV3x7*u$eUpcVPrVn#?E};)gNvjO?p(C#ke9!O0_tgi=#)Goi zKD5(^j!++#1btXc8|{7{zO6oxp5(3_-SrdhgA32N@Li0!E8WM@4h@=++10Yiw^MgF z^Fa8XLeBc0Rz zdwd4`yKK(T56MjOMPE0(1nyHO(0}xGP&A;gidi#f#X*~|T;by>0Ux+sHU3#~)EkFS z6Y!|p4$V7&3qBlz4~OB&GrdLL(C#8{crWSgq<4_kL)s4BdwJhYzP+R!M5hcOV@HtL z9i;d08|Lq`j`v}7;crUEJOW)aqE(lgiVvpQS$H3XZa#bM!Rh`qVcc-SVh2wd*uG zR%bP8EVpB`%G>cuW0l6N3~i4fdl|;cINt?BOftyd((4*Omi{83!{*{D#r9=-sCRR1 zRc0&iJ-pZRzLj^zXyG-hTLarcHp6czT{Z)2n>806p#{N4&r*F@z2u-^iO|{SBjop z#+afx%d^1E8A-;L)Yv=R5b>6=Myzj4QfD2z!l@c+X3Qr&UUXTP;Me?8{32Vx^7|9y zRln|{+)n;p37?L$2litR96(p~qq7bKHo!c_<-qWHr049H>1m2 z=tsS1P~*MQ$e7Z}IKr5bVa!M{Hn@xp$!_wLfx~Iwa)#r*=M`kug|->^bI|dU2hbh; z=$8EvZ`F0s9eNG5*H&HTT((8$jGmn2yb8bm#(2--)D7{%oB*dTG80E;63C3zO|t9n z85!-4AB2aHY4-?xwVOP9k*$5?M|Z^E!kpp5#IOAxzYplja3Bj~mLfkn|?C{S_My?1Lq^g$Ffa6viRkk^M#M)F6O#%aCVM*gwvn#e3RclI_4{j-~$m%j#SCG`@|##TGf5E}3+6@|&OD;yRPNT<~Rm=jPlG$|orA`%?Y2x=%wt z^*h1Y*6rt^<=6jgJT14v3r_IQ(6jRjf4@qn{2epL`a4>SJ?8daqNCWu#%E4c?4`Pj zz4X>%Y_?+WRClpweI7cWFx6V?&+o8T?qGcVede>H!=nFn-1AWD{nZ=jy(V+dkFmpc zfP>MBVsE743S+B}&gSod%gx`SSFF9(i+9vA@2d6IXg?Zx;|qajG4PN#IR|*kc`mFa z?z0wN;t0sLJ>2;(7 zcj_$shP;h5`7kBvLl5@YBiMlt1%8bw^dYspNNdzjIgzsH-r=8jYfcystx?Bk(8kPS z;}0_TVXi2yO3eVSnZVaf+bw)wQCpQ-NqSvz75DSKkR}f}H2XNUMwbE~2P4j_DQx5v z-^61oqdYh9w+n1$o`(IQr@jkEF7qZAJh{TtF#LZOemn=yp9CK+_{e|{aFha9!c*!v z?=O;mLf^s14u?Ig{#`YiODB1^e4aec_mlX1oJl#^*nw>HAR9f%2H#_Re`iQG=26E; zg^$nJc4!MsE-=Nrp%HMcd={S7m{JCvr-7G!z`URLM&6sC{|I%D8lT8BTCcPGr#(5z zQR+H?{PZLH2dQ%a*+I|yewUenzbdzHl~`qX&-ZU6z+VG+%lf8{GRHgS`=(Y|-&D8r zZ2V}AACKTHj?R4r-&8lS9l-|armgM1Z|X0BOZeAs=oq|!?J%^MA8p7U`a!<^1f52q zk+GkkQ#N1NeuDRn{RICH!T*v8Y=o@e<;K8wG&B;}Pouz8lB+9g%N)d(87T4wH`jVE zchxd~g$B^xg$I(*|I`RJ&L}oc3A`YALbfu8nVuC%u7mWO^8xex(yUtwe_`Cv62!=si>hUZ(LB z+`xRYsMy%Q9JFKT6$gePV33Z+mv6~_p3poF z&6Cg^yqmeuAAz%b@Vlp$c5@(r^V23vIAnhr0s@>_QI#YW%zV+ z9-s2v@G0LdKm0lTptA9xtl)6@?smebn>FqPzT)11Pj}EpCwxl(TZoHwNl)&s@lty! zvxM<=DR5LOkIw^^mQMuujro zW#d8FY#-X`Lr16&+k-xArHyvK5AUH5FOfdTJoe=t#s>N@NFQFN528Q*Cd1EKYdIzP zrC;KQ)9A`DPsHIR$%najBSde(aua>GzRKSV={GZe&W0c7@RKeoG=73F;)(t76MSX! zg~w0$#*Clv?GSt;+=s_ct5b(67>B{V9RqA#+3|BTIP4lbex8D-PcKAP;O`W?mWJ0d z@LdA>i%*gzx$(35WyZW087oep15Pr2&JKJkm!jwA)Zo9szt@}_SBFn%ymY)DAe*{} z2Y=l&mw=xWmmd1!x_+kz-_cRcZzi&%!!~qs730E6Vzlu$eeTVRw5O|)@nyvxcIjAq zdI@Puk-tjPtLgVL`dwE$)}CHM`cl#>NoVX$mBF)&y~%d|?%?lE{)S&t@Q=pT)Oy}G zklw2AHD0PU&-Ucq+Mb#9=$7^xe7aL|wr4Bj@&@p_0lwvXjPG5#v<=j zGq9~^o>S!Sch`8D;oZWKsporB9_;IZy#?4?-~+zJ$@8%g>>22mX>`0>sY|?@9eant z)mdcq9C)LDMyKu0(+7OdAA8?71${u-cu>~p1IlY(u)8}n_6`U7V30O?!7H?SH*mS6 zC(lBobMQDaW9>HikCFq}5l7%jos}Q5!(Dt2T0;)o;~CjZ@b{_4h@qu?teP9gcsKS` z3Alo9r%cMlY%o^NIu*p}$ybnJOcidsH&yD9Z`9?fumFC5t|2e)jz8jkW+J^ns7lT9j%5q7- z%@65`&q=(RHInmBnfM_S51)(2RqSSRDSWU5*@FM#Q#lj%wbJO9fNAAb zv_ZSseYZher+i`SXn$~=zr^={oi=CEye;SdLUt9Sm_Yxy=&2;*>gcHM-I~_NnJb>w z&CGZTugK4De2^O=p7oi<-Qs9#je}d09C6N z>1xrcotZn6v{Wcipj?CI_xYZC&&eG+*9?Ru* zYV}7SBrfli>i=DV`k(J8HU6~myX8+iYq&oRU774Vt41-oDRg2ZV_Lr}YT{oMH)_+O zq{SWu$IyXjz{l-b#($BdoKFkHU~Mk)I(2R<_lalIqZ8r@?9_XnA|2Y0y`cSS3$?HJ z#Y^Lh*mr(KH{YH`uZfx8^WCAuz{5bXjx*>^PDb$ZN<+|yAyV~m^ALEkZ zr+M+czj>w0eqV*3?8+C9tKl(KLN2+9te*E=g{@AeY@O+ZGm{-(TK5{qtdw9ijrp*rY7Hu!?L|)UUG<~vp2OE4}i$7QP z@oe;b81Cq}_~(J!&4(L(?xO$k!9MS@F7MI@_b56Yz3!qD(&z;B#a%;sDe03*@2348 zczO-#D~f6s>&z_5H2|mRSFz=yP2ESJvzaTjR=q)I$3>qk1f%IIcyFc5LXAE4U~)CG zVGaKD7lyL3B|%z}v_dp647b>n2OkBuhp5M8TnCD>^W@60zW$SKZRS=>k!8qhjg`*3 z!}hGna8JAOy#muP-|Mni%}%G-KckOtDw6>>%A<89(avsYI$8qV7&`KKf&I46HBUM{ zzKZi|{smtbaP_hl*gM#8X8eXyr+2X9%=qG|{+|BS!6L8SoT)uMp5%M-FuuiBV4%K6 z@MHLM1@G9j{+iF(@o$5p(fC7pL+c$nb5j0=Ka6pva1KI^(zVV~M{J1Fe@!}PF4a6% zG4_GXL8m1{n>%Q8%`rfv2A!jHC_%0D%4{`?JAdN0A_Wq!*^YP)GAJkQ$^Fe~Xh>o;&ZO#W-#&bD#n9ewOYErzi zBy>JV6SAn;$C)o<{XOxC$XIhe*Kdgd$#h412R8V$bz_-NTT7~(-VFLWlSfAukjPFT*rBq8asGD2HlwT3#ET3m!2Kd4Y~1G zn#s$!?Hm*RmrS)k{$YN*P;CVLz6Y6qFXNP)N8jiBGQ2@NcS%V+&EEgJ{z|-z5nkrz z;bjhW&&}aw@AIScocfy8eeh2Yypu-8OHPW1MC0jN&R4AX!joDzNgwdPS$yCps!4-4 zbf#JR$>w*yn9FZuD)oRn<->;aWe~o|a`6MPxovI86`qPIOwitY1>0<3sSfi&*@%2_ z&nJC8csKa9v@1Tag6;YhXH`Yush=B5<#>ZC-qcb5F2$?uM6~a*Wak8ry>J^BLzGq;M&q|g0v)Qh4ge*kI4p_0Pet944m!TgT9^% zzUDz&^O-ZDy9Xn_T{GC{KeJ^er%GshE^Xrv(O%)nFT#(MvHITa;VhFu=wpaB4q>yn zF)uw3^R$-evJRVO9X8bytHB3cWBqgTvAQLsPXKqN;E;9M)CTak2|RA5Uz^E~eUK`_ z?-G&kg|s$*d^N`(BnD#<^zHI&CKg;aqIexcZAuK=0-tM*?1Ib2LL2n$B)dC8T3~l? zQ*6+2-cLYV1?>OyCTIw|zGqU@tf5Z{@qUHs56TY1*%0^*Z0c^+AM~MM{q(aN-L~py zy3338X5{!r>^JFQWQ~d2l#EUz&wGd$w6e{}J!F^Uk?m6qAN`>Cp%Bc2^eKS(-(Cx5 zwS`X6Ijxe7u|TJoKCsWhrdv9cT$H?3UyS^;I0GJ&H)K;t-YTDLc`FxszFm~Hv2EI_ z0=hmhjqUN=*iL_~u?3Im zb=bMcDe35Iz~c|`B}-Pffk)A7oW2^_4$kCT(3)ckyr;mK@UA`@c=UY(HY7Ne4S6}V z&KU?bSDd5sLVT4XpYU+OFj_#K?QpzLXxx_5mleZg z$`j4-VtNv12N;<$#>kXEFkY3CDV$d>nNl?pY}<3Ned{$~+en?NOZ-|o(%9_Gjm?){ zV{8mPL0`gA6?KaaTKDBSbE!`QS2J@dV7XK=hZa6Fk98f**`HYC&)uK6p)=;a>ow{x zL|^koE0)iKc0WwJ%uQ;N-9o!V^{S4x!L*UTw?$JT*diRhx~oOx=&AMRxr02c4mcSC3Amo3h`w+H$Ziz z@u{xbdP#gS^D4I+yJIzan0mSy^9(e+5gNX;0z2>@*dv91dBeoWYSkOQ$5Qp)IX&wA zW!WoT=Lhw6Os78Takt=)2x!RQ_#irXOH6ZN{MBRQ8O5cHqBpa64CK{m;8F5QXWPqX z)rQ;>y-uVLf+rd9b$L;aHVg4JYnG-%Am6bil z$Fwac6DPgK7+IWM8N?P@p825s=cDjq7Ebw&x6ob)&dLAhuT`CN{&*g7K@UGw~`cC54oyNU<_3f9$f8@fyI!?_o-E0v2+4YLv zLicU;abE*>qG^4n5gF_9H2U@1#GI5X<479PuaufiubndelyK2hYaPxQsGOQPNn zz0vc9;r~(y{`~s`pYQP3+palFX99%Q+ZNDvBmHbbKQuFMq)+C)%>}*;Tg90on!mg^ zkm>rKualFrC_fuG%599OzkW5uz3bYSBUuP<8DD6-{7jADpb36#=6pDOdRjj=_^P9x z2Ih+3NU_^mvq{b69enBhfMhlAwY&#)+H-3+(#QTP&Zc!v+j}QIMEl+L-S~zMIW@9p zwHHDCZ^ow3c>r3Qv+EF=;|S+k?^7Px8;|@nZ#{x~tUN%U8lS!5XI+WIgfVzce^+R-M(wQ@uvyM)s-H@F$V!J^<6;ChU!ASWGT}=Sr zrO*ZRsddK}76<$_fwHB*%UY&AKgFIGa*es8a`<^6$)(h@j5?N!w#M`(mxR_~=W|}y zPU;nJEaw~*r^xJK5Dt{rtTQ7c%-UUWZpX0l^BnKGQ29z?PQ**Y@<2n$sfrsM7k_xy zE4thC3GInLU2(_Im{~(!8r59Y*l79w=dHK;=aWUC-74gbk(=0a?wr70pl+R~u6OO3 z(0a8Cj2hpC^3y=mk^{!Za?Xx_V>j@Mp5eU|yk}`A32kexXvZXp4AB}i`%Cdp7Z1Zh zq4D`rf${k!YqtLWgd($^dZbMJU*Nte_LgK;_&lmJpz%dNJeM)pRf;bX+juAO_zA`l zTXXA4wlOdSwz0{3@dRvRcwBhOw~beQBCxf|*ND{ub@G zHDktFpVqhJ8)MA2$}TQfyqRbPT1qe`8Y6!_**}XWqkarIHS9ro;HuzUbhWp0ZIQ7v zM9;#9#c@A+^8VY-s2LZe5C7I?z70#G{`)_5MvX1M@wPLvamOYfw3CUnJ(z)hGMx9D zf#!6^cLJEi=ZalOH*miazU_ADdC?#6NWNx}2^nZD2`{Fg$>eOF(6L~G4lY$6jV=S` zVYJxc!)|Hh9ioxuQ=^d$r;kh{gN%={$D2=$Mjj;|q9Ba~<^L8M*+QMeXoR{>qLC)> z6rz!@A03@W!n(SrIgq8;D(8e^V`Q@U{OarL-U8>hC;K=j1b$5}2;`{fm2p4!Ti91Y zS|w?s)uFc2dXt>rBiT|5zait+*6*5Z?n}{oYHrlnnA&e}mK1s`$sOUMzhob0oX~bgdl8^L(U#?tPkocIo*9K_hT8|97$H53r|Uy_ z3g6eH_@po9-A}$2ef0h!=iz8c)JsfYe`pVMr1PSJvuvcpDyi=|@O@S>=iY5_;yuM@ z9bNgCq3d3(a^l!=p7!_+lb7bq_X6?~Jd_Ea7Y1iUt-rD+wU2Xs@J-1+5DqzeYJVN` zj3hcd$v1y#(yd2T*{_o zoELq){mDw{LGiS$@0^%NyXHKu6lsmL(QsbOt0z4L&$>&@o|}iiL|f+km}=*dBs3p2 z=f_+eua;eoOh`6KHbjlR2drjqr{K~rh0e1&&9*zO!e1w=m`?jPj-Nit4z_)K3uWaW zjRNbiv%FLvayfxqGB_Eb{6DCCa6SX}Q*K_P@}fidz?8?^Cq5b)S^?K5WA(`Vowe9g}*}bynQ8`&hfE!cVro z)T~d8NCV(eF<>fFc}H=#=8XX zzB||>+YaB_bI9!6Yv~O+d3H%bdFI<67nK&UKU$%wHrnbyUX}SWE34<)uQlu9_y@DP z^WM9OeZPxyB)$>zq;E3NZVLL>8fm7H|Dn$QJIK1uHdWrYjH^1I;8MP{Y>-|U}Rpt%ZX*ho)Gp0#2pp{uOjkmh>^yQjY?>fQK_ zBJZZViKEH0K{Sr%5$`5_bt5p?HQ~i~;g?gJRkRu4z{L1r`)a*6EF(0hPeV7|@bIvC z75z!6jt=Hk$R#tcqCUpROThjV-=-%a@tCLS3k{ccLam~kbXR`K)HYnFh zeQoU%YjnP(Xe2osTvjs<&}j-f&yGU?x5h!ZUlri~{$cnY=f_uGPJCtG>BHkIn~*(` z2{nrSaTQlXOpWdl8)`eFH`5fHJr&FmSo^{cIM>9a#E{?e;S+na)>-?8_)22AURukz zmr-B2Ux)Nma+%{T>w@RtEyX>hmId_Fce?R?*f#FDk}+xoHsX8|wCgTq+?U0?t?Qk; zY@UsQe2{!A<7dy=QvQ!?uX8i)(Y|5~C;tTEQ5$(yun~KXh*I&>{ZczlXHMN|3q+|bR1?YUZL zO8LWcUd>gGlRvc~5;ry={iuSL1h+|Ju50viq&WV_*L*v0C1bDeI84 zGM_O!9`($=?-M-hcqdLr`_#{Q>zv@Pz?<{N~SVY(VE4pr?d?1gcE7D7N58|ehtEqpD zFOSr=-M?bnwz8>Wl(x-WpT2U==<3vL`psA-#czz6%h+kGpi#4*`u+Uh%sgQ_zYP1S z$G&>!mpB`Bwd8&px$h$Pl^;jkRPkmVu?;59dO?wi!83k=V63g}Yvww9w|vU}D>L6Y zU+`GE&{*$qyw4p5A05Eo>95xt`8|od{#c)6y&l_4F+l!$eI@11di{LX>#1ih=jd3y zlGsKa+rb@h8$B3|(XWwBBk361Kb<>j@hkoIlTpfO?V=dpq1GQ_j!&`OhXCzDBpmMCHp}6yWztd(I+>dPnwbApJxu=;m6so z&DRnC_A%e*(INd);>&wvn3tlS3f&!nAFz`CSE9GJ-5t!WBmR1Y`uraH{2OS+pFc;8 zebLK$!;2kbhuas7Rg&>f?F807`U#I28;|gJ*0-Vhd>^j# zN@_msEP#GU6FsZ~hU7fp*yGO;a=dVMul!kx2h?090p54xFZ@)XkCVWd0>(^r)XUV; zhfTb1=DD2b3esyyr+-QMr*)i{!RJW*J2uL<{P~0Bi6{R#;0fqE%oB?PyH>t4{fYig z#Xt1mf1KGbbJ`{{|c)oHf<9S7a@jU+&$J5kbXnh!1!t292Z@C`3 z)x@j;TLNCV<8J)vGk||4_?pafsuRqIec33yYQ0V4TcMbQD(*@BKD1m)Uh2@Amuy_= zeAPEedj^DOa2us9(|59$?*3I&z6rQnzmKjd@xU5 z@1!q%jOiZH>sa<;vM#qX3jKWc!S8C0#aL_X)mJl*B9DtaN=Yt(7x__)9-eLIMZS#E zIe1x|taiNr)g8NYsB125!7tXf-3(reiPftApWF6ZoAy4^BJ8!PuZTQg&vX1wrLkv* zv)~^{f#asAAKNRRp!!>Mdi#^_Vm*CmXbLdAt~XURHZHlEsET?Eeg{t=!(@9lGENQX zxn}Ma$L~~-|2E%LIIcfK`5lzMit>+BUU!6xe{bTx+^a(CLb_}9>(p^U#MiT@O(cKC z?D+lK*An!>@MD|!vF*Wh2hUD$tUFOJdc}9cyH*$7 zmSK##c<=VdPkKoDX|%BszG9P{c#X!lnzHc0u<@;>JhVDm9VzM%E~BD(M5lU@ZhwMlCK091N}8E;6vYDI?Z37t&_bpZn(XqeFD~p!CWCd zgSjX38LjPT9mwdK@)+_scUJz>%s)30mzNpz*CY>J?8hnV%pt8&9wOcj-_3Qif_KrT zcvm#{81%Z)IX9k}2Oi+Xer)l_7hWFkhX%C1_#x^}Q3pPIv$knt{o08kblT5|U#dMa z@UdA3qHJaR+s*ou)OhScVx@Hld|fcemC(m za7^*xxWv9s^8570AYYQR2Wp`~J3oPjO}z20Qti`!XMDWc!v~NUg1*$=uG(yS!UwSe z=*+VCkoLiu zgm={TX4>9l`OAInyXDtUT$+VPaIZg8_<3V| zxAGk&-$0Phxh$Jceg73dJ?(EcFqv_=+#i?Kd^7Kt`tR@K-Sqd8;jsGcO^a_-d;4f_ zZ_r+}CfnW*Y+33OtTjQqql_{5yCS|;b-L7f$kv&Ibp~~;H+X(q{PW7!;dndPgLqPm z12QE^oUhG$ycpYNf$x9Hk8yYp{IB)va_-;Cboes4A38h;9X^g9=+H#&nyBvikNX!o zHTs@8=y;Da29GCdva}(5el~zla2gz5=EH6IbR+#Ve7c8r`hq&3Y0Iadpq#-qVDOX-w@3Mq;o0I)eDtVRdld>tH{19H5TKwG>4C5Di$gE*4;ru}IxunbP)B4br?4e!7 zTGlsTW}GNz=bfrg`OLb~40Id+o3$)-omtCjLO)eS(JwLYtI+MRd1+YZpzpgGW1T~g zsPpHI$jln>TYWBVq-VrD{F?q*F{VBIgru1=nr~9S&f?RWR94?oXNJ1cv!S7C!93RZ zVoYorFzK8de_d&uZ_mO*G2(^3e*&AN6Bt+1chVZ^mx-@zB&{>*>1?~%E_v4QzE1U? z)|<5#W}=H{fqQIGwG*yixXS+}f;PL=W>DX-Hd|=}TO@@o@_Mxy^vkqKUtIc<8l_E* z-_MBKI>}y`?BKrvFJ->%Fu8HK?O^>unu9&}=Ul9-!=JyNR$}aln=g?)KYqA95%{lD z_^;i$*b!Btvom@v?8&;of4lIExb&iN(tQ%L#C@CPm25H-(5o1h73R(=3) zE%YaPS_a(9t-U|qjGs%rt&G(|)jLT3y7ot0e%#R+KcO>rkNWg9FVKs&AC=_yZPz#U zCYwv*$rGWuGV){^HhL}f>a0}B?tH)2E@D0k`h6Ba2MxvXFRbzB%CYnPxpIPjPSzO& z!FU6=IU_ae!v=l}?+-_T*Y@AUXSmG&i3_%AX8zwLyr0YbpY@zWA(-0Vnu7_uwh&CK zM}n!2zA^usAHcNxjXq4a-D#6zUgbpO33RGEfMNk`#HVNBID(Y&bEn;-8p8Wf6fHot-Q$`jhepPLf*j*{&}^w%>Bf|+(Rsk z@S(c;dmQ;ZIqzhA{0qN%xvReinnoYmy0nJZk9^d6kJ+P7I~im}KXNX^IzvBe5Na=T zjPwD=v`asyXb*g*f%OymUr)ckL7Mn3gUy@4@1pgq6l;Wo5x;+;#nc4kH)~fqJ0yuO zX6-A;8E~L;SX0=^8Dx28Deue+Qp^i9hshvwN>VQN|^yF#)E2U=u8ww+pr={?}RUGx!~joVHhYag8gAesv@F za0%W4VC@Ii!@zx5W7|L)GD&AoTRhvR#Yc*ET-wvw)54ALacv=dpd+>BoT>sJOTfnr z-dBJRmT$#?d%D7t1oK!D*=D~_b7F28s*#iQN9WPYgi*lfYbLOBa%F?e>z#O z+(voSNcQhk{i*+qeDn3Ge4?ia%BUHxv-D$+`PC70-8@jpv)}5HHsL)j0b; zOdEZx()Zy z7<2D;n*O--XUa(Z>7>mD>Y2mcDa`j)wO4SSufN_VJ5w|?#yovnOtj@vhIv#?suP}B zKza5+qz>}FfcLq)ALRXj9|!qE@@wB!BRH&&$}i_sZw{xiK5V{ygR<3Tt>Yo#SM3N# zD<|TwdkOsH;WzP>!uXX;jUsn+zpCoUwtaEb$Xn?N<6{l#zMw$eKN+F!)2PqJ7|Qpc z`t?gvS1s^WY()uM|Jxk~6V) z0z6y1MY(et+vACRd+HYYRT*)-Xa(zFCBFYMRzaVry9``7+;zn`m@^K>gCm=s#S7y> z%w@cYd#u%O`@M*A4t2`cC|}V{BaFqu5z_6L*gEC!{SN0^us3V1vltsP()!>pJ5T1< zYe%Th(%{`X8zYYf>qaS~Im#N!B({$*(W z_qF1m{{$`O%j4vNQ?~rIK@HeA65&awhR!_CB%m!E97e~a3ld2-vA|MhKS?`iCd>PBzd+JEY^{a@uY2H)dc!=a(l-jo}Or0h4HniUI z#W?FNqu?r00!_lNGvG7%`rnN05%%x@q+(?MzV_=_--2Cd)EHYI#HWFm{;YMLyDYv4 z+v8iGr;QWP(;)N`_JbTE?F2M8$oYSNfaZ?zejI$y;R%gSLT@DCDbZ!v|6%>86^}++ znESSzc7U>N$a(1SNAx328{Ob(<*QNea}F`IW3a#X(e{2|K0y7Tl6rwm-7d_i%r79NkJEYRPBj z&ub)yruHWL#>TZisdQ+By~Q(fx)nRBkPh2HtV%)MiX2H)6~#MN`?_^EcW8?)%$ngA z+UpowlVsg6x!rHC?p3F^4nMBi2**%rjY)Bw{~5HSI+!bZ$?d=oe-E{t*E@8S=MZ=L zz{5iy1#d3j2f!QYF5{YJT$3(18i;!CQOb4jt&?x7Ne{+Xb2i<>k?bH}C;3*BZwdL9 zl5ZLLm^%tW3?>mi3Sx5^1O5*x>-J$ z6#bL`F4MsK5bv5p(oTwYVzeV$&ZS%{Mo`>nJuIut#IY0=Wn z%BzXjz7|@0KeX0G-QB>|YXj#15e^l%X@Dfp^SEiec7RP!sq`Aeg7BuBVXTVu0KV6-#5mO2QQbu@U-Fn!b9{8+Dr}5zoXD> zndp|ig@>ZvHQGxEy(OVH$qD(T_1(hz5`1K0fEZt`>ze-coo42T$$_Ysgm$2nhh#U{ zdJm6QhBn3L6_O|09q*&WmnVa?O48)JQcPd6f&aIKWkO9(CP2@HWWx7|kr+)TeD+Je zOjv}D6`hEVet0TF zgBNKjX~_WyCl2eL5hV?(~x5ZhP7nEGe-+Op=%UhZDs;^V-S#eb)~ zR<9FdSA##$l$F2Gj;lGZyTkF`p|U&Z^G^EQM|?;SYyBqj7O~b{cU=&lN*&occScQp zuM=MBOO5b7k2>c2_%`#wR^HpFvpnjhLbQ9;C^)zEYn>)Rxdi3J6E&lhk+1)k&{!5O z#YJ=zA1%1*xaR}>gf&dQw! z&$#H^`62cr3I_co(~S(!Is$lmioG%kzJnukellwlPXucdPb}KR*p!1aXx*1R5#KjO z9j($!s$)6dt67WScY_ms@c&dF`!!YHQrjlqV%&=zSG_aSu;C(}d2Qg->#}bQ&=Q z&_-syetx{C><<0U`NSsO(rKm%nMYsy`8I$JcE4{QZw<#K$v*y9VpL{C9PfV0Ur^%D z&o^NorzkI2g@0q$;Tw`~DlNG$o0K?>m7Iw#8+q4Pu#v0je{C+d#`eR)Ul4aQC^OTC z+05ArjGN-)6f;){zv|oV0gX$KUKP;w$4GNRf4)8L)7v!#_9L1-)7UAs8e7>Ca~!Yl zEAVZQW^7O3HgPw7?5%DH=^5vYoSs=~^vu?L|H*maxS*Z^etgF9^cQ?RbI*8R&m?HK zjJ`OmrHCel%Xjkok6QdX(1Ub`<}H!vx1QV(-S|S4v+ITC%lHOeB%zTMG~!Z6+W37U z4`htrXUqfr_<*!d?sEU-{Da6E@@OvpDebWc=r~21#yxtsBb~W*A#rT<;ZpTMV|3&r zfiGx%$QQI8ID$UQ|6Eitwq}|7`d9R47X8t9+Ioua#y3P8;tA2#p)X=rzyrx@Yd89Q z{hJZe?YwOFd|%eJg=peb<=g#hPL^+9roK~=Z}M+*_7<}3+?;F!j-jFA-upfVZUWj* z0Z$?S9CGI_OY@1TjB8mS&sgiTv7Vy&F9z_r1>n0m?>-OhXAwT-dsRP@;8X1@R&(-5 z?KR}ulf7#62<tY<1dShmW-Ufhqq(e98voFfk=g zJ8RSMaH-PPaEEKdc>j#}4*!|rJyly|WCZ@EtJ{ZMP6oPFZWhyDt5Za3vBequUD1SI!OZyl5$e*kl6E|hh%~e4=N{bO=o2-R4 znihK=HQ`D>OP^*9q^ih!<=?@*rCF_kY=&-v_4XuBt;>oQ z(IK2g@~)h|++29<-%lS4>PvJ~!YzuQ6O3Q-;^BNbtpfUDO+jlgsU9=WG`t?egS<4@wd$>JhBXv|_^&=6_^qmZT%;HW(b|Whrv!9c9|0fGa8$PH0_0L7@-WB~toNKGSDyQD zzaOj_Z*lW1xiuX%jhz*Z7!%?=H_)`p|qad(d>IUa;;HF5kr5NB5_g zv(Aw9s!ukC`~q2=N*@e4-rekdNlexmlH7+vUeO>v7_+{pwLg5MPdGomJf6g7d;LoC zo+6yz8v#!B!?Y2C*Y?*9`YL#b^>fhiJ{j~=w3DraeolLXQyu0Tt3U1w)gii#frHPG zmXK_As^Wjp9);yankUv|+md~Hlz1%B*>Yss{G6_-AkL?fcpvLm)V=rYU));XUL5cK zT#lyIH_aPVz8K%uH0lrc&)C3+SdaU%-$o^K?PO_D&0yqoUl%m^&m`~iC)mDC1BOay zCbfsOz0gY^&psb6Gf&}vGfyGi;wQ5Y833*H^KD@7$n%uBj8&m|N~V;1FeVh$^i$74 z>eL{t=$WLtbVu$o-%$R z$~Jw~xy$0Q5`R4L0WJ2u>eZ+>9sm3J_}|@Q^yN77zZ3Lz4SsvdCfSqFxyHFGJcicp zsCWuFu#>$p=yO|N_S^sQZ3prFe6!=B`pN`9W9iUW$xiuzhLAIbbb>cR`tcFcpBW(? z+heWn(Yr^n>AS9oyOQx05&yi;3BX#)oCdq|=kJG(OX$~xsPSFgNG#;3+Vc;>Gx`3C zZ&Kf>+Viiq{`wyU>R)+^^*`U?&rioQ2MnLr7X#LMU`@^f2gv+bDgW2x1)EP82t+7Djtk}pg1^;&4C(40TpPwWrP z=X|@AdS#m};MvGibz-NTNqwSef6M|u4m5BvINg>v-_U$({Mh01E#WRX6&wkFlX(hv z;4A^ox_7+Xr8Vt@@CfYX;t$|bY_xoW$#Q?~ME)Q32mX+LUYl>jpHD23Y)#iGn-zyDprG> zuhG1KvkS82r`<;WPmv#-iaxXXCBK%2>b({_;{D{kj=a#YD|&^7ZT@MC`TjA!-@OZvjWGe7ei*B>u z+JS8ZpS0$l*?iziXMH7gwp#&zb7eU1t}BfXTE6CN`RQYG_f)nzUWzl~Q*Asu=w~y} zCH&ymVP&p6wKC!nOK;isE)3)Wu~sqc3hCeVoNehuiBnwWcyA5&EexBFBXcHgwk~jl z4e(?>o~XC_4b&6W-XZpnJ@{MMD`p z@%itfN$_7JkN-Luqt%Sh8tPex{_R5lb|X(pqR3ZdEA(&n$s$i074y90DsRGL*ao6; z=vncx%)7697k#b^)-V?H|7qA&haPpzUY)n|Zp$uw^iN$w;8AAD)Z}hJ${F=TjETVu6cPYlk%sW_fbDPZ^ z=^^<#QU`o~s&B7n4uo9eo5eN0Ei*4Vn|#Jk-yVr;{krtC^!pHV1s9)N(01w&_N0q{ z0=h7<1K?QxSHn9I|J-<;?_}F+K*nB)tgT1RruP?l?g8eK2dNKQaTkzpKXoxS;?2|o zaNbB9CNWA{<9dhE7@Jg^KmTlSs0W^RS5s~czv`1=6-?rP`6!!SjXa-X{ZO!)`a^Ig zxI@Ev%0G+!SD*RY;1un;w4-x$bhcs&xUHN?0f$KgPR(KKqkIR>J&d<0H`Mc_g;RK^ zKTkMmKmPE$e`9|V2jD66?eo9DH{S{`w$XM6PiP_*oWp76y^mfHPnLf6!LI+8?d;h{ zJ3G0b^782ZCiW{{&6sI^Z_cGsI{ynF73_0&*mtJbO5#5r_{m}H!adLe@9tin``E8c z-@BpbcJ%g2=s2+gx@#@+rcHy#ck+K9zFPA9T5WFQeLFO8lSN8 z2*xD7;}p2p9h2N&=DCz_<=YLH5tDSeZwKc4I5!Z(Aw9Mj{+M3k)6Swx>1)uoyN5jt zd)YU!FXm0h-*!IxCCs#}>1~wX&K{2))bW1DyWqOQ_1tLd!N$wh zb8T>jC})p+=P7WEkHX-1ehA0Rn+=ZTk7^3x_#@zWVPV|7$Kv=yIovGzP_ECeaI-Ln z8y6bWxM@soL}oQ3zpCy7=5PD;=i4H03t*{QPdFdUvWOB+>W5! z&Y)c1@N(iG@%ECR!`pj-bsutTKTqVAFFRfzm)y|0!w&}VsbY_D=d(Ao89A^8S^&OA zaMOg(Fm_4M5BxT<&>G~AiE+}p$(86!%OlYX>30`nvkv{=&67IQ)Y(s+L-Y7H*XPMJ zc0vX_L3fA>@A!kJD886Ga=i_=FTUN~?zANKM(KByesliT&w!&7`xG0xn!FkMw}bv| zyo5bx$jQtM_N1Ych~4$~q+yqt?^B}QPUo{Pn7v{l{hUE>y*pUbogS+1-b))pLGw`ArFJNI@j1PJ~ zeSub43(M)bQgD8fo(pi^Q2{Sb_i>&tQ{EWheC2t}PXn3Kj*n2d{qShGC4W@~xSbAe zXM?+Ha9f+h?fgQxZHCXdt24!2oy^s|)Xu*hw+CJX-kIQbR*~2KH{w<_n$Iuw@QHjx zM_aK4)=_^Kw9yTG;IftRUvxY2{|+CQ;Wa+#te+C!A-=!yQ#txw_^BNIwj$4NjKs`1 z5&)8ITj@8EuIG{x|M@ZEWH-^)w}ZCAzG1bsg|;rBtxdEwBN(^)Lv0Ohc03E)JrBXR zTYXtByXj8$GjkS8_Wtim-fiBE^q|e}vPW zA)YmSj+~ZEK}Kck3d@s3IeQ|j!1D~~XEOg!<^MAHnZ1fP?VIDDn>|PNcab?KQu_$B z-&Jcd%F|39WX}_lJ)h}^E~rD_Rfqax^SBL;=Q7vQ`(nzNa|b5Jy!J7ipc#z$)2%K1cS`0o$ggpYhCG>Ryu%BSe z2H}e#)+Yt~p#b)}JlM&Tg`GSW_A3NCb(r{j>d3-Q9=8_Q>jKz$H?W_G`mi78TWtXQ zK_B+nVc5x+8ANXlVW*4&`{^UVu6{_K6ierBV{Enq?+$;jvgq*;-;1C}WJ1eegMSWn zVn?*)%umCEtI5BH{OG9U>KJpe80!hh5bpg=qN}ilYm!ao4%6y?4%)eRZ%!u+b>{R! ziaM?A-_Szcd`kwhUvU|nhsir_xcomzn?ro(USO>kCx=KMueH0Wz<>@&EP$Ncp}@wYy`i=#=6nll7iB2ZzX2c7CeB24ioDJ-MaD)7%Ua3(w=xdrGY+4B zH5U(g=c_p#qx#Y-7;k7TyzMWXZq)Zwa9-oX?Xk;{F#J5Q|Nk~SDGvd<`c-oSYX2_p8AvW9Uuqncj=1!^^2E2 z7{nk^)~-udAWuavwp`sR?#x4`3?W+v8_qCmzzN#CN_&|}Pm<2P;OKDvXU@nSyQJ}) z$8$4dy@mhxK?9lxwDEr{&v`sW57^kLef$`+Bs3zvmygSBL)J28if8fhIm!5Pb(eS} zG%Vj`E6>HuUz_nUG@zRWU%vhIL*Nr%HQbh)3tf2|DZ30%wwQlIX2U&s*oH|B+cqDy-^fjcf zBfX1sc*%uV((nrRq=P%s4w43+89CStzK)R&52fLu6ujc@fbMpZj{J1tp|p6Zk96c^ zdN1klpnH%XxD>xJCo#BOI|42<&A!d6^T-C9gE+bsz{&se*VKYvcx-EZ^!#j`NhJ07`c=guY#*{FInZiU9@ddfKNwcoZxpe-TX88mA?Y;oUF2&esPMDc5dgT28IOqb0-M;;7 zVm$(!zH5ZGEj>1`ze;n#>i5u>B={BV6_=wI@u9utC-6%Xu^Xg0n&-@Af5cJ65YTQT zKl(1+Ex&1U0ly{uzqH8kwEEy4bl6ADx;%EQ6Foit&p&>-%RNXw=0=i*hG&~7(+ph! zGwVJ0>fRpAx5qs2i(8=MHIA9*Yd)(w6Tl_DD;WW6!WYZL zAH4VR16CJUrTav;KZUjm$(W%I+FA;%%aHNL?!Dr*&q<&RzQmeTN6bs@q&&70=c?DF zcJjUiye#2;p7G&VpT(W;T7MT#9y<-(b%MLqzKzSL2F4(hZ&S<%ewx=(2ep%0t{RMkBzS_2K_l5M;KYd};-hoApYS{{DBs^&#-bXHyJW7Vxq8-$wLXyQ^uK3u+X#I#PpC)s$!<^0;eCPst~^>x;4CDQ zCVEV9Pk{1g%Qx{3|ERpuo)LXl6}_arOm$UC!AX*##gd-7F~gzhU}4l(#p#npD8RmhT$o=-{T%&c`;HlEKXzl z2ZHzw(qC-A7AdLo;K26+=(X~!U*E+}^TduU;b0^eu7mcx{PAdO#TRvY`+w$;Mp>{uF%c1kEZ7_}b zRkq#M!sXs)%OS_IW! zgS=cOy*r#PUpE3>Cd@go74d7HWd3`|G4O}|YvS?50s5#tLqXo}Jwx6DzW&HxTRY9t z+@WCpJOa)Ao|ub*G-u1b2F?B4md~d-TYdzZ+iALOV!MbNIUkx!5Z|i*r}6)Kr~OI&U#@h{f7k!#nLK{} zH<)xk|Le{Fe)?qde>v+sV;-1f@_**R3-k=ynPAfVa^v{lwlh}gK|94Jk6+&q_|=)) zs_#|vzn|`z|NVAe*8e4+d2k}->^z&;MCQrZeTx6NO5efN1nk*T=J&7q^KKhI+H3At zDa-EHiYadu<3;{NIb&Ca&k@-f!+uoU`CHCqOsA4w=Fb!4%T1RfTd==Y!Lxea`6+)r zXw~ibh@mO1eQ6G2_zYOqht5Z}`pJxQLoR0Uxp%+Pbs!Y8Wa3NuCi>@n-id#p@66%; z0p^e<&I8+bXuEtAQ+tP)dz<^jI0yd-^Tb;0^NTKmcl8|GP;&(Rc}<{uwbpl1o`1!^ zUF1A}g!s3MilR>{zx2=%bgjzCPi4-rEzq9k4{7H43G8XjBQnSo%_I5`GN%9+hxr+p z`_43T{3EX4zo)Tl-&7f?vG0`+N4<-_oAa|Di8xc}OH18Z6aPiFf!2_s#?Ln;UiwR9 zSF>*$)6W`wnPx7gK5Jfegu0I`<+-fLdz$td!NWDb=e+WyFB_M#<~TRB=D3--pUQ~i z&HYW(n;FRT*l*Z_DI8Fj>U|o#s-E|}IqEV0d-(5(lLU2t^$pP5Ug&L~p|^+rp7jqg zXK`tx6`E~^cJ*8g?TUsMLc2+HmHadv$kT<2D7qxX-qCH) z0dwyoJMeQgIo{KazTQ6481&3$P5#FE1zjaN^&9@)n&bFtaYcuX|$2Kk+ zzf`m+yVKAZ?Mb&9UZLDYW1aXB)ek>s=>}UFda1q)TU~zCT5xXeQfn&mZhZ_Hz6o3- z$K|KcIlKBkjWMd6PF$3okHHHUAe#>It#5J6d-P*5@3C7Ln_wQ7VV;=4KV|)KgVVG> z*Vxq6#AZxM)2_xkUv9OB#{NF!mt-b@VU7H|~Eek=D6{_y1lrHH?R< zi@duZEzCoeAESQ@951neCv-h+7CeFPBkSjdU()!NGWeGIWfyaHq90>B2A!4LOP`LE zu*ZJf0~h@Ngr}^GFn&k;Z<7T79-l6CrpOR}C_C0~LRZba2)XpuJQ+A288wd>C*_yi z{5$CNzgIm+<{^LQ=VbCU`k3TBg-nj#zUcPEHm7C3Xd8PQ+4j7N+4p6gIp5|;TTUlD zy(f^}XCO<9#veU`uR*p=zD~-@b8wfH=d@|$Ik-9)mgn<)d44JV%F0z_XAgZb@j%pn zB|N9~Cd;2X2Tgj?wwp$ulBZg*73A@m@c1nFdv+d=D}HGvJU$B^pB?i)AUv$|d0cx7 z6z|)LyjXl6Yt8GCdEZ7}bW+D^Z@Q53vtK$6mv#jV5?N6)) zAM6jw-ND--_#NYuP0mKvcYprLAHDp87wVrl_`(g%hhM0_Bi3F2>Ic`wUR}92g$!$? zeEn0=N4Q&lb&@(4n!RkVkALD9*q{@TCmqmcCvtB!c5qqjkz)KS5!N`yoZ~!#A7X3R z=Odb!bgge|7SkuYCWj7S-V(B5OVK^pojN-_HI=ao#`T87#LxWEm(%&NrGJ_m#Hglo zYuAg?)C&&?2Nl?M+Ou$1hBb+1(vf+ZuT&U#ro?~od*-6ez``%l3S4cp-C@?&*E-JG z@wW-yLCUp4du`B92m4C{SPQ}V>!3d+z-eP_1n0mYu@dx$|ECNLv7P{&ha;@9m0+I* zI_kog9PdJ}us+&Fy)&ebp3mu{8P8KMW2JhN_=QsEFdq14lE)m@sTuDR=mGGMMh|58 z>Hd|QmSJxr_iQZH0N-8Y{;Kh;H?JBWe>d~*e)9V9jM5J!=!fzLUi}2+_EYWvbswZ% z%BkIi@LTP8w+O#W_`cL(4Ki4F1CN6p{{IPJoca#x2;taW4v(&2tr6TF2DeAR?Z94e zvJaf>Cw)2TD@f}jZ4d9PfgENH#B z9C|v6JOXCzuk8osvCz|L@Q&yyKZc^7ao1Y!Sm?>dHzK#av_mFpkuP3!Hw;)b>qTb;RQEVG<3jVBpV{sIo+lFytajALmsn|l>IgiVo z11{%AJ*{IXR`mk<W|rq- zaWfrGOZGh)Yat%)?SdReh>0(7q)f+*i+!dod^EsgKO~iwDedfF-0f11EMq9l3@>b<^*>_9Os?A+L<=q zkMqviyo%RTjH1;aZd4MW-x{`9pCo1{VgGF z0<;BfTobszK$a@2`uQX;_8%wPzYDv+a-n9lRzieVntYyv$wNL$4Ut{;^9&^QI_QTHu*mH+xAU8erH<10i_PPPtsVUr{G@#?sXAm=74QV@UB8RHz{th$_{o>2*vFU9 zoyM>45Jwhy-2*A={VDfi>8_ENN;u<`d@qs~URM(Ts-1LIy?5o+8sCPRG&q!9Dn8O0 zT^iWCfz|pA6kC=?w;5X(TRJnrl+uzQi*V=?bu((0W_@h>c9Y>qO{ z$3`D#Ti>eu`qAsAe$K>8EMtt()#3VYQ~fUW4~$-a5?t1TOCy8ZC)U_^7ra*ygO%hN z0}o#U4+&uVXWdzJkb05-n!}GopUPWu26^|B_rU0R?HH{L?>%;bM|)5Pcpin0s82fc z*$LFSmpb>ITAe++#?;vQv-E<`g0X%0Lcs+5@8T?(ml`IW>VBur4~BQFjMBba6YE+HkJlozwjrao`)duF zgGvvk=qq>m7=0V=^OAr@P-NNIoY$g}pDGq*1MP1bz0YY=%u;nrFroF z>R3x=KDPJ*<`s?TpQf1SHph_pG3GNd@8%%x+x8oMwDuPKh1joIf8mF&_U(xqK9if@ zF8mB*3apLrS9CqHy#YCjJ@IDt&zLiJ!!}N!ckLOESJ(NrZtdH z|Ak%~a(M-F{@kQ2fVl&kz^>)D6O-Ule=GGilaBrMuzW_@G~}B3hO9Hs>ogZ|p3mw_ z?%h!t$tUC63F^9mx*Dl7HN)|0b@$qWtGxAQO}H}tF6QVF&K+e^ zQfH4chjz|;TYNX~ALGs%`5la}r<`Y%wGI6`>^T483V)oxfKBLx{`~dObIo{v@jor(Cy(aI^mkWxTWYa`;IPWUx|bKj`IJp5qQ7vJcGNT zHI&~Fr5y8RZ1j!olj3dcTSSg$@BCnX%e_tI?2Ys9{ZL$TqP)1qT|=AjtXp1RA0;{SuA;lDY842tCNKUnOghl-I+4Wu{Z z@IO@VB?kGO3jSAPn*)>f3>*fgaVyV`A9BVO#J~JL;->-12><=7k&(^CUOzbNujReD z-s?Y(T&d+9{9gqg=L_$a29YlY|JTM0j<3)+aICcS@jynA=ktuuDtPav%h+pvxuf~o zNqfkhIsP7o@Lu#AFGbeawoZ}WU)KFKBhh;!_-z8e>!5G^u-ndK?@7R%2LZ)`tjcMzm_&Dn0vApwk63J>%9^<^?WDo#3G!nBl~wVFm6Hrb;6U- zbqcz6&D?)Vye{u9AuCrDgKhK#Wei<+Lf7*Gx~_(<=Rw!4&~Mr~D}#rI7{95-HHuMBGlm()u%9t}9RE#^b6P>!B!9NXFhd!QVY&mJWj>KcHl=6t zUQ549sBbp!$R^FTKO)|dKZmw5jNJ~#PG`h#gg*P1Lz^r3fm@~DE5Ao=QHzToA+enC zSkd4u)BSQM=xdw&+P*$bo&fihxq1@cNKeAgiZxHS(I4hGX=F(TS(3)i&tT`LtLYc; z(l0MFiyvc~MrYzXGwXP&OK00$@^>EF?`s}5lH9|8l*WIQm3!s9dfG`Wi+I`>rM*%sb@rokS-gX1GxpZgnwMjXSUSlxLhs9X zXMcN&GX#R@<8re1F8OBO!&mzD6du36L&HK=9C;n384a0my|3plv{7T=s zCh9#iAAQSx)k*HEPR&H8%xXaPGsH=&( znyG6Ebp>$V^8v@Z_j;cXKf!$ZeWCgEsw@5ZbnknKM<{_`!NL0XayKc@qu`>|`VVH~ zKcGJIPG63eMZE0$S=gWC8|EJx#s{L_h1a9k4i$R?Zn1ZG0C|2C zemVxP9Y=)`v+MNu zn>pjPe@VS*BiqM$*vj)mcdgU^%shBxK61_F+W;~NI5IPfYZ3!WZH(j?sIR+V9O}~y{utxs9?Y2bmaMV z=wb&lc_;m!6>AZ`&;KuIVFq?L@?5q|W(G7rlk&*zer%b{e)@ZW^qHhrk$!;m{rvjq z(;i3jl&me2#251CUsGQnEplqI z@AT)nw>vEti4L~~bjX;Sc}Fev)#Y@p;tv&v_?F%g`d=0FzghjH|9dE374*LuxYYln z^#9oK{tJKKQU6D=^CdHmAtMCCi$)(z8Kw_@g{+Z2IEFqrwyoHEW!9^6^l*2*H_%g0OhCPNWK+HO^yYeEiQm)m$8GiA3!jvo%NTah-%jY0 zdLH>c{L@zKt-;1QR#X~4wwm-cj(3c9hQ1j27x{MNUui!R{%C)5{G*SNzqJ^CYiD~O zb+!6yoGI$kxf6O%Ru?h1b)KtlFO8?DPk!wzFG)T^$0nY5MX~p;AAp}(;Bz+P;re_! zgr2chQq3_>_pfMgb7}|Uxs!DGBL#n$GrzX+4qd6A+Ne6-IULxX(~&E(J;Q67 zvOV|I`?lx#^vBws)38-D+u*G&{Gbn=y%FXw(f9eUK_40V0so$w&9fXkbY{rrab{<2 z9{Dd$vR#`Pn@!+gGw|+!CU%~h&2usETK)3UuZFtpIs7Tk-%s@w`+iwuQ7iac3_hCS zJN$G7@zw&~rbmXa9o!KL~6PT*3kkj@=QF$a<#ahEx3@|^h3eh4l{Y17mJ@BcS- z7@yI9jf*eBXY{1*@ffWf^Wr1mL;ll&;F$@YF3<9ch&g{=F$uG3$X7zlSwj%-g)NZfKlI&TN5G2>{9hIP z4_^=V`S{)3 zj>ooKz;_FOkp8o=T5~!%{pZyG%sk{EI#qgCezF1RA~hLVFctnPL*6hKIRcF*%VXZZ z-|F0TjInrb0{5ksBA>vkx$9{evIV@Rkwcm0BCj934$Q~@wt)33@cQ%|*16^ud4B}2 z&(zZIx+3owczteGk@x&;-jPwqn8Q4`EapAC51G8*@t!+Ce;Y|hjy;DQdv*h5Hc@6X z`R9>7pY#Q!cah#rdJpLhq|YIJF6paDUqd={_-r-l=)LFaNN*#(gY-_)ks-%skv^OB z<)p75y_Ixq$7B0}^FWmP=}$NP>7hRx$iIpFo5_!kJcgcsZYk+qq<53vL;42NH<7-X z^wp%VA$=X`%Sc~N`U=w9NbexMlk_d5ZzFv>>B~u9L3%6ct)#b+-XUMkIou&|7H3kk zpNu=X^2b;7!@T6-cOnA@w#Q7&;{blhL1fFH@YT(UFjnI2EsP`lo!*8n*^FL6zbK9} z5n7`^sXTU=Dc?m|<`=0R>Qeq4j#*;K2G-}_0oI=ue``j_;9KJxD2H&VMJz&fnm0opxEyDs&(p?3M-v`c!n z-J`Tg`T#iU2S<|a{d;{_ALnkP{zIe(@4K<9li0nfHQ>1uoFmIKtHIeJ=0CfJx@^A3 zxxc3WU|u=w=Tsl%c2I5)<#tl;VAOjXX+ozOBSDv0^`|_T_SSf%{8) zOSJZTPHydY4m3QOyJF@9FnlQL9b%3&z&vW8tf)q|!s&w1en*#@@r4$Yub+JQ@w0QO z{<2t2f4M1FtvO(}9Qs$~_E7G}(8S}+9R_9-FIo-Uwfyqx?<3!%;K?hMCE&vd-Z zEXHUyv{w!7)pDLn7jSZ~5NG*i+fS6oY7)TX$9)W6EA0sI@Zj2=I#itP}cymVb88e%}M>gB05nH`iJ!Rcv``-(-_=kMjyQP+%Zp6hj}ilF%Y7>F6mq2KMqTfU}=| z4$$Aj^tHd6{5`<7LElLSzQe#~Wt`&V2YPsiPls4f5#9xZ_%_=gWZXcv=&d9N13c=& z---uG@;$-#AB+G)zxoy$hkQEQ1ugG})_!y;^>n}soz%M;c}HK<^f^O+r+ytifiAQb zsD3G4T|6av{Ns~`r=D>BSQ1b2KIyNdM?))z0=^1l;GXr!vip!_-v;&-;I9=J+W6Ug z0gv}xjx39Ui)F~M<;a8;;G-2DZlmAm_PhZ8!3)r)@nOXuF=ar+wedeTJQ-BHno?aY8zmTld`9eKl1N z(U+0xyOP+%tEux^_RCyJIbvX$i=I^PbX%|5F7fqbRg`|yzmNWfu?WWLbo@~+X|43N z8Qo)^?B`6=em7~W(4oZoFBM;e<;(5iz%E zGRuDy3=9>Og~ia&ut0HLYiD;+G&CqEs;vMQL!*9VRLI3-X;JFZ4JNvmd)sPJP+aK- ziCyw;wdi`q!ouVh6%{k{nb}3LfHZL~)_k9@^ZA^a&&+;i7pnVxe1H3R%wzWRne*p; z-v7`0yw5pHPESYn=##ymDc~@D;=7n{@_54f{s4U&-8Q`Xh6MNuG{C+R?{XW*0)?D6uzZ*`sU&kL0 zZM)e z^gd)|4f194SR_})_UWzDH{>exz(Dd3{k%uV|1f;md7szFrkuh~4?r zBH*j1Kk#0#=cC#4ReS7R@!#wGLzlipOTW$MoX0MYjYIc+xQ{kfH-+s;&*vL^>{c_r z8ua97{;%YNeRjusI@+zI%xL9Qdi$$1Zg(udV|Uz{?E5U&Sr<{_65tCy6Mj}X{Y;L9 z;F8_AextXCN;oPt9*Za0RhRzEJ}SXOAB|CR4}s^m+CQaxV;<&?Sa4U_$2i3UiJ`zX zoOVV+N7_qwI#r5Qt(ofaMPev48y@9%Z=C7QXcdW?-hP_qfnL7k#fo1IE{tChA4w1& zNfIA%iJNHuP-2=NM;1Odp$DG9uB``#jh-EseT~CYnll()=Dz4Xk@>$k74h$n?i}Rp z#n}|iSf2lgVzK^wI5~#C#`38o-ZQZ_mq+1_;dw02EsU|1v2I~3+ZfYwo>$UeEAX`N zSahbUG={@(E# zo{8BUUq)P{hG+7iW}`pY1Uu?Dcv8$|4ClFxdXn{KcR<1V!Vl07T3WN zaN4Af%AfVFXy)wqL^H$RM?CBRahQX|UJg0Nk4U)CvYT-qW&FqB@0X()6Bjsz|C+@& zkJM&f99Wwk)U|oj4Pd_8xK)>^}J~-m&adhEv#wVXc ze5$pFF3KIkzHv@t<|+KY|H58stthn*9@`H*$br2p>@#uV!E@MW&pD80eoR}!8#zT) z$|ExOCqi@ir8hhWy`>*+92{HC^T!(DQ|PXIyfEHL0Y?h_r@)WwcC+#pM^YYIG-*H2 z<|#4OJKHJ6n-TIy9 zS=!I!-D4GDY%b4Mrrmax_x4u`hh{!A3w+H4?=#^`eoyfGZs>07NS+E~8lJ4g!IS31 zuX8Vw;#CR8u6UK=SH!~Ezce5=_l+z{d>e0)E~3Jfnj(cT8bt+!;KBa~nfR)Pw&TK9k}9 zDFNLuhUc+1$K2a5sXJnl6RA51o(I=!xI=h8b^%`Mk!!6paKz){1LBWW$yvZ&P5t(0 z6>BGW^`Uze0c6Y`?Z7v=;8_ zz(F1I{Tc9*;9WKEDrA%3JF|bur!}%@?#ff$0vvVvz6bQueYoPgH9EhTXM-nnSpxdW zXGw^z@LZw>TEbrm_)C0~<11*Km>A%z(L94o&zJN1NsRU9sy_Vn_>j}_A?xt1wYI5q zAw~1zGa%Mi`*T%zBR8iU#l2eG=k36o2Y99ZbjWWiGeT{;l|VyOI? zA#I6lfOnQTnYD^TE}`7g06pjN++gWB(D*YR{?Cgo7yjW*+s;(<*`J#G7ufnIkz3jN zam*bOZocdl@W5N(fywZ|@3&#+w`1pbAcwmsw;NowgVPRlSts^rFLr((F_-;boa%*x z#Lo^9A6r(x;w3kl`PCip?sD2*36HLV9`M;p=&+Er@LS;*(XyBaUc1)I7rPBw+O_iq z&{95g`enYsO*?Ho$e6T-p3Pp^X5Vd=tZkvMmx1q?udlJg-}hdl)-CT)X%*DSR5`le(MWu@>5E&5u!Q-M1khvPteb zeqYb;8~MG3=UJNTd49cYwrseyzvdj4O`hK$X0sFP7$d*`82Z^d;+aA{;=veZZ@0d+ zr@fsQ;Mw5*w6;MZ`_smNbLLm<$J(%9$qkviw&7z<1c#G6yj{U~ve^M`aqLwBd-e4% zaIVc*exC+zs~P`T#$U;E4bSyFV*}jLJWu9%ir0q5r8SG>XnsS_rTFL$%jE9XueA<} zo^bcJeyz@l{J0Juu0Q20ERR1F*c(P&%?V}yG_TRzC_#PpdRE29L_IxN@99C=%VcEP zqqh8f`bf}6SXnFY@A2{YSO9kpe+GZtiBZ#U#L=5RfV_vC2auRaZpJL~wdUw-fH$-y zXDN5b$?O@1|LIh*2fp7U7d(4%li>x?+t&>#{Bc`$^Kfim6S)tR9Ud$TZ@chz>KNa& ztDOGy9KJ`>A34}*a>BD~`K_7HX!3=SOO3y)8983-#f=qL?&Mu+6}VrFkIQ?-OSO;k zUS#Y(=ALT?Av>ptv1WOX{>qN*NB#hNz*aeJ+Si&yP9-CTHnVQXT<{RGM;UuJNNOZ7 z;V-9#0^e}{p9XBz{dk95outib-jidWKFt5Fmsf9c8E0^|tn5Gc2?b-Uar8}8YnbFE z>yDr&DdUnG2yEtFwgkTYxc`1z?3rJY%QzoDy|FBF=K^G5DCLKfGly&@kYi&X{XLwT z!yH1_*u68_Q*+qA8w(tba`|2QOndh9y#T%0h~9jHb3Vs4Rm8?}XO(=k>EvOX-=&`# z$}*d7dEMyqOS0eux+f-arUP_VZd77YeN|#I&+B zQ=P*N&Xas6XEIk=%3Aae^#2TaWhQ5S0$0TBqZwn)&MB z+B5tQk3Y>BGF`|<7kvKo0{%xfu0_7P!1p2g(0(EF-Bed~1G-1_c!E#v+y{Qw-r#LJ zq3bbt>}6#5&Yvps4@>}%HJ8Id zmYrqRp%imU^6Va{%`Cj@*4Gj*J0_pv#t~U_ALL8?_9f02eTgMOSuziC6Gb56`f zHzv`I@r_Y*q;ETY9Vyunk97rT=0G#6GxwqopGGfsO(EZDT3H6U`R>!yd3r?j@vi;O z+^e8wEdCw$|cg3+Gp7{r8cvdxnMUsRO^^}FFz@c{_(!OIc|JnB)7(R8Nct~ zv-r#RKEL*p-&T8*g6+*1?ri9G-hSHcX@BO|_^e&h{QTb3wp@D~c_;W5lmFMe?+748mA9yC-b(aZYS3EarkmH`kxq2nz)$#-PZlJ z>PC=Ne2xUZM-soo7)B)+U&?Qiql4^;`xCi~#pklDLf=cj_Ry`=*FLg8nR8i&7U<+p`E_#Vvg`$}eLZ2n zRF8{8;H}~bnj?MCgeb#suq8G-~et~VTM3+HlHy~#d7{Bmw8)Iqb`ypiQ zL1gWEbbxrN_?(CP$-8+I@*X@Z>jw0T+Aw&Y=-c>7d{4%gP<*B0EwM5`zxMaH_ip1g z&gyVwgrkYsQw_eTVu?E)*6p#6bxAdH+T*g|G=U8oN>B%|SI6xCs2XJg2s^NB#E3Yq-O!ihY7rDb88qj-@-LXZuq| zJmhK(kv=8otDLf)zX3~mpseM8^=IyP297xXfrYn`vuEq^wI-@L8a&!?mlJ#IJ-Qd$(BE9``M#@%;Xe)Z#@~d!luoJ! zU*qYk@YAN}O^}vK5=eEGZOX1Pw zdWQ|0$@|^BZ|D7T-g8$1chK^V&m7*(b4*-Y@Z7;C&HV{!?vK+sw1?M3%zm}E@ZLOs zA#&$Uz$1T5_(;PS*rREc=6}ylJ%A3{3=chs-&yKD`RT~W8f1GAa;f~^?|?XkJvxIAEUr$l*=jS8&AIsAF{ zH{!*!&yoG@Ul`9uH)@`moydoCmy|OpJ(`=>qEBn_FE0k(Ec#RaQE{1TRVD(@V{a-H z)1jQ!^2NL2`vmfz*a&Yj7fCGR{c@gH@;`k_Uua!2F_!n0*pi8MzS7^5n<99|!-JLL z5qQ#FOC9u~;xO4U{6Cui*V5KV&n_fJ)Akt6O+A^z?u|--BgKzjX^v)IS>Vv-MR+>M!=;6*LF1SrT=!ny@|<|BUx3$^(4Tlqf8wufp2C%KBu5hOuWVJP)*k~PgVm@VTOzMODzh;p0v#v<_zNfkSlNiER9&`q* zOEX60OWF4A-h&5*l3%f40QcrbAH8-nc!UOH!GY|de0udY7Fm@&LgyHskB78VzwcD; zjJIUHCnEzXFFY60F27!&^?t2mtP0>9KlQu9oB53~Cn%$}ivP zUoZ0gD?ZPeXZ&Zr$5uqlo9+w127EE;U`(^mG?9`C!F=K=C;r8A8eu;<&HX?zg) z4gud`H+C1Q7+An7R^{E-= zdr@{q<`8h+hVSs|7vU+N-_8?W8Rz-^=zBeNH}>AQ%HE)|Ybm>~_p&)06yvcIoa`-u z$2~)1{}P7BcItEl@W|K=9(8u}E@0WsnA^c)2licfT*bTQ-r=*pRT7yW&$-PS+acZe zxSYBxd#|gq&x%KvQg&J2W#6qcpBGbhN#AAvIEb?IDcjh0*;zv1o6+L*XDE1h(WP&==cF=+UAwf6^A)X1-n1j zw)qp<#O^%jyyoS2o_PNm!pZrUUF>sY>}Ksxbn7t|at~ETcDZXb|3~^L&;AmXG36ut zKd_JT+9OCAQ+^=-56zdC{pkVEm8`wMhljCqCI^=CrtVPc4)3Eb_Mo6Hih8~^MH_-C=@pHE&MyPthL>rR(0*aX>zy~O8ods)#DN6;%> z=#^qz6zpY1N2JgZY4nQb$I4YpHbyhIe*vC=eo<)r58yL*2Nt?mc5)5-M6r!mS@^}P z(>(Y$*nOf6eZZe<6Zq9;!THYUmo9Wt3Z0ZI=l9*L^PRc3BVG@@Gk|v{KDo}>L2u;B z;v=*|>oh)1nsHb=o}7aIL9SQQUn6Cd4`cio%2*qggkS3zcW`WurOnhg#%iI>gg(Zm zerV&niWzGj+CYCU@0jEE*hBL-fpDE~S0+Y#Vyk&R>7jU%K_e ze6A=m$a#}(N$h~eR)=mi-|&F&<;^#W=8BOr&;PY`p7Q9^TiFC13>y}qpNxWFINvw^v}ou8kG4EN$ccPajJPNDzL+PU^> zrzZOMUC?jp0Q~7c--}LZ2fil!&8_%yHm;z%tC|$+*$Yhj;DP-m>VPkmOYNgwWW_N# z!{xDScM*eFT9%o>Sw!U|QR&<|_0v%v_ZYxXRNvV86RZ}%2^+KG3%#G$}(0q(+52tdo#YQ6CD;Cz6~Gy zAma=A*yJqf+z<X3A$7b`V7 zaB{yDL6=#Y_;EAmPb2U%l09k}RE@r(7xaaWW4*VbK8x1t zTzsry3H2~lggp<-4dqo$Dok+30C}-NWaQQ@W0F>nXnxoNTHk|CU_bR?g=^X8O7d zb^lQ6PevYWKeVrLjc45BQsnS)r(!2}D%NwSVk37dHr^d=Y2;4D#@CznS@~N7E?TIw zhPxHnAG~fpHupw+%?BA@C3h$0+6D&(XW&3~`l~-;&OV2}@jH||p!tN=VS^t->Cq+)a!H49#X7hk5wSD{I{GDHxPwki=!u~&q|C2t3kN>i#UnNsrL79r46&sFB zbrs80H+7B%aDX0H%+0p_0C2D#O5X8RvBV+x=Pa+yn5%6{rf1w~A;rk7zBHo$lc6=JQ_2V`u?$JzpYiXChT>5gG zYcr{}$X_@7e3WP8E`{8=hk15+?&kR@&r9L6Wx(VjYlr!)=l_kp^OVkT*F3{rhQEb8 ztZ8~j-+SYz!`|MiU&s1#vW9$M<_G#+@6qRG{Q{+w!&${B_-{^G=AQk3-W2bEFFMOI zE9aswc97cv4H7$|D-zrEKY0g}dEUlz3wKQd1M3|I2J3Ulm;4ZTFuvr4<4vroX>RX6 z*D2St8FAXnNPqe;aK}bfq62z&)?$y?kHOvu1H&ZVa|S{!wEv{W0sf8sMnA`Am1Raf zNdLPTM?32ryRb>VEfT!(-L%zSn^~uR_|3{%Vi)hV_rcm5a*>ndA}81bkys9IkawIU z|2Vmu|JxliA2e$T^sTjou^RJkXx|PD$Yrq~pX1Nv;rzMf3ZFlrMUFqohl*4FQqg4x z=MVmb?=8T*4SCpJmho)Mxv`Y?64daX@j>GiIv-c~(A`5WwkCzGsU+8J0{k8(8*BW& zFTrQH#L5QwacSCVrycQ4x}IE8c&KXz-!sV*Ms7~=TQ@pQ-(An5`<^rH?=0RU@NwF| z1lc?COg^tQ{fv{jj$A>j>-Te38-Dsu=Nj&p9C-JmFVE?nXN*3B*Pfu>X4N}h6MKTQ zvD1CkV|5zZ2c&H#}j`4j*<3Wby zgBGkiMZ9>5?0Webb0)3yFfTA;G5QZ)kp4T|f&S}-Pc5Cs1?Q*OkQG~~ zH_fxVU#0IcjK3e_&*1_e+~P#ID5lF3^o!m&?reU8iCd)Kb9(Zke1!Tv_!Ge2K%e#8 zk81zV^$o1*d(i~)aj`9p`2N?=W}iLz`{>b~#XiQ{$d{Rbo~yq(ufwO`jIZMN(WBif zX?H5^UPHU=FQ{J--tL9A-S-FDWq(1*c8NpWM%l&>(eCZE`|x`cxT<%a^sMLYWQ!w=ngH%Er{ZS;ENB(){n$5 zZ}sB_TZkLrH*j}?xyMzpPnWz;#R#-lDKQ0qVH)4nwZw1eZwfxuH2%kLH~D%kz=y3u zCuWix`84uBb`O2^U84h=`5oQd#l00xvb8r)i`^e-dVYvxjkXiCt+cz*Hj-p6wU z*vGKnZ16?V%#d->%%Dry)3e0MyvUsB$TB|u?}MJGts>53)*nZp)4F+oiZRELALeSg zd6?qqDQK4FyNl1Sl`lYh%0EofUKw?5o6g&*o8>p=@^&sYopsVR8_tiV$r0E2$GSuC z6KW%X%Yyo+sE!WoXkHDsEuX@UXKrS%*k}W zOndWauL1ne2fmZULD9u);#bDfoUi##wYi)!D;du!+JKLQzd^NwVn>eV+bp9G?e}-_ zbyF+h<5jf9oH!X-_2^mKvzzP~1_>57UoQvCAz(RN1dHp#GUBZUmWhI824!Xf%d7w_ ziT<%82lH(jSPlTo3}BfFEVF>+pa;u~j{u7u!#U9mG&c7fC3q(}t%whe#rNaa-VGm3 z_H3Hsxp984#kYGS{3aVKx^}@6hp6*3JfZI=SvN~E-x3Z~-r^wv4mK=sz8YGd_^#kI z<$YLHeiY?xKQ9P2aBl9m+2>?lpkMP0{Q9osd&0T+{pUl&4kwf9#P8pWe+wMl(Bg<_ zu`lY~Uo+vYvE<0;qti9NY6O>yy)ha;fPUl${8ne}H$qQ*nJ}GD08e`#@azDdUBI&& zco=6lV>}{ywEOUE_TZ`L1)j(IfXDKdk+1EAJQOBh|9nd?^0f_k12SdfEs}Fr^~NCk zW6^7soGA|-BnxG?u%7X5&)(g^-s+nId#f*gvzH&=@231-4(BGVQ4T1KL)3fv*4nF4 z<2-xyzM#G8^zy;YeFL3E`QXq!yNdJsI(%OXd*vc4+3dNTtu!k4{#NXMBevIVL55mA zeQNy0`Q-4In|Skc&YrVkH*S7)lg`_51M%kE{#59gz&;&QY!CV-pl=eqx!~U20pIVU z-aPQw!1FeqxAQ!U=Q%vj<5{|963@t&$)yxORP%q0$BQQBTgmf8-xhWD_iWJ?cxVzl zG?_IgVlsnP4`W|wA9t}*Cw|JQ>e_<7n@Rms(W)-;)wa6Ee@BfZ{XOC^Bdlm1R`G6Z+|FF#uIO$Zy*G7p= zp@Y^lcH}XItZh09{-!X_X#p7&Zij#F(bvDP-}rwTxT&N}5iU}cYXLsR7u)%M2spIQ z?}-_9E9YMpc}I7rc^+Lk|}cZ%oQcdL2#`SXaM zUkGf=p!;%Yx)L1IPCGhF`%m=${mfVQF$Vm4)=r6)j$HNVv03mme4^NX*qB`UT}i+8 z9&BUhX-jk8?|E$b@|QI zg-=u_2*V~1hMmszA?BR&_C8<;>tF4wUF8-8`!#v7{AP8&>-Vp?pz!&vg?W1rtf#i{ z@$zGZHfF3k-J=wdaoF%aIf(SzG~njE_B?PKGo!j z%E`15 z22MoI_VTrFQNG5A!ubU2VA)l}+qC8-94&B=>wVzIe{Li{O|+cK7{>5>Kjx|pd@C0l z`Whc)IcKr`sk!I=>#^7vv-f46=fmXo08w{5{h0mN)N65^5r01RjM9+>r^iAy0VdxaJL;hSyFv2 z2_J;)F&{+U&;<0kVh=XnyNLODpZNCYXQBAsb9U^VVfe<^Vco{~kiz!~Vpk>c{W4=a z3H~j9`>zPDY8-G>L(63e;Qi{CrPa(bzmzd@(iD#i>Lhz`MgeZ z(V5VF7Jbd3E`H+}aOrTCf4sG9MPerPm>;-vID6y)a7f!)CwPpyRu?9yQ%#);)oCeP zv11+O#&9OpQu_1t826=C>0GMBQgj`@R&pP>*-yWfydTN?<-EuKGVjc|=q=d_Gna#Q zn#+Amcm4IkpXrhHRUPatPLqq4_FyzIWYIajg#5E%~+~a7mx?#nWq}nXYx{fAEnQ2T)x8!)6YT{p#zlZgLM(E?_fLE_J%;7yc%naf8D> zg-Om6duJ_tyovWMeb_vFmjb`ax9>*I;eqEKFXVw&Ztk52R8Riclhl(Ouopfjvz|Xz z9@~F^@4Rc<_>S5@mzms5U+%p&hQxl@R~yjgg*WB*0Z3{Ga;Q))BZm7RIN z^4I1trg`Xs2Kt@lwcCm8J%#Nu=aY{{R@_eEQwQr%w`}_H~y1eL!td4EH2sJq6EY;e|-8Vz@ikM7_A_ zuWkgE8el{>CDBc`jj|6AxB9S?sb*h%aop;Ymw0ij!SBuAC+@r#y%~fTJ!GE?;6)$3 zh`u?3zOldO;63PMx(|UD^i$FW-frMMYT~>**L>20_umC?HDzj`bvz6D%ef$*B%YY7cUd%ZWM97CpmV(T2J=1STyT6oIPL)EPRi`f zmm9#?2Y!IxKMXJL0`A@X)=qyN^w&v$=p5;wh2VPJ&WmEneofE+p%q>W$fB{uz%N_8 zR_C@ahA)>;Zwlj^Rw$n@P_7zYFmc`;*e7spo`F-}1##XjPA0Vto46fWVEo;T|A@xF z!-r?s#Ri@q_X1C2AMjY&d|I;HN1`sQ_m_-`?B(;0!d>2u_ER79N2lXvIirhD!ViJLO7+!LAq3+Ywa z<+m`VCix;0u8xhvhj`CSbUC^;fo=`Mx$4OdRZuT63)-L;k~4sHCi%JM{Gb7`D>g&7 z-r5)lPhdB;jq&WpXZ-ysCptZQanlXhi_Ri@u}b^52em0Tt^plXhrLLG%iJ@*x_mkI z(vHd^yQj8zYj6(d>p7h1^~;CI7eZeos9#O}ag^8hc;W_?SF+A{IXp-HPh^lM-@$XZ zn(9zkIuX4*jD$1P}M&cy^3-SMt0F9eW#b9}}D7?4s*OdF>XjpWjNm z6KJ;{y=>dnxrn)T;RUtV$URr}oWGTO@AtQ85Pjgw)L$6h{yS~^6@m6EoQyd$5!fI7 z1GJK^!}cWMv1Cmx{yhC-Lv-(h)=FJ?H7PwI-V{&5n?3gU&fvG1Hva7K7`Wf*G!2Ta z5bojab2+>8mGzuQf(*8Br-t}Ah-Z@ri;VsWS&jNdL^?;g|-s36$Xptr`-JU5I8yvjwbtSig&%i%pWJOrJY%f zcMg5c^M3#Jze1OT@E*MKpffy{Zs7fV_-aaRRR?Ek;Umt~{Wno_R_qnAdql_m4)WRb z6=XD%*ze<&zBpISJd;nGsiVERCeDVYy#(!9c{^3<>21qL_0YE#-B`<*AEqC-)zKc0 z4bGksu_gcZsyTzpto_6P%B8UUV)pRtb29JJ8DnF4Uy1#|S3R}GyHm;1r>h~#oB^4b zgKeG<-_N6+vCzG;Hgja6=WE9Ct>ptbWz1J;!`mkUjlg+I^czX}(df%DwZ?8H=kZ$u z?=6qXMjCraxp|ahz9K(Y`5EpK#?PE3i9a0VH8Xei>3co&)&315SKvZx-)8PSls<;j zHtW;Dx$|nxoiBV_Y}b>_ojYlNuao)EP1xGrcmzIeN6xw$!NX#Fqb0=3uvrhE=h>BF zf8#OogS0-j4f;$RD0;Jp3p=N{KpG$4;@9$CPM5W#mpV%6vU6gu!f!ov*)HnrrfpxJ z8(p>o-0gyHyQBE8zAj^q{$|B*su?q5l|3`MtcGXbm$!K);wP=EB#_-wx=j8?!5rS# zS*6}HhvsaNNbD1v^5=)j&-ujpo}aU~$Nbp4f8(+W&5w)j-{|&yx2|q~eH8uO1+2Me z`IrZIp5f0IZ{)n*o0%`pX1=%=9~0j1LJn>DoR10a(}pL&+dg<7`P3ZX*&FaN1F~On zw#IT^>>sxx&(KV^I=E-gtVt~fuf$Aj*^?cVg?GdY!Lv!z?LKcIXWhuz5oBx|yz;Q` z6BYB;MV7bV^&D^E6R929>GVvk(_he*1~=l_9B=u2LcGnhlgL=kPVPA;Heb92e;3%v z?cfMrvTYgO+6HfJhqrcsqnYR)*-7T98;P5kb0g4)$wSncL|c==K?Be8`G(Il|H|>! z6rQJ{FN0@iLE`Q!KZuYT;}WVXTJU+Xtfc&y@`HXXmd+6lR)Qb z?p8*;G}j*f>>+USba{Q%UMKo|H@4;m=JC?6x`X-%{9@*Ym-*kH;Vh~$=fn~6U5`*! zv^#=5x{*3>(f`0<%D)}Dt%tAt=YsibGjqYU{I)Ltdv5-^(#dG8Uv@INmNBf0X5#Dp z`Rlg^$F65C@#pD3+?brDx3X+w=9yw*9g0?nsMdr}C1H=iMis`eVHl|D)X- zWMb)zQL*%Upw(urc^@AgTg`m-ff?Yh16*_>BQyA(>CZ_lToyO*h4Q?0#+JL$;KA5~ z9Ne>`kMsMT<}3<+xAaSHWDk~)H|fBF^5xE3O?iILmG^NKg!$bb%p07|)#i?{&-4Ma z^`R=rOTf2U@xmtb5WGh2$%zE;k3-HAz$iX8xk+}6O-1x88V7Xo&IY5r{K!eb)f?^< zhpCqQ$Oox*GV}hEJ;U|jnEHA@p8hJ=Fqi%UvW}i|(Nl?5KJbEmf0KL#eDzE5)w|ZA z7o<4$%=LqE)+oq5Pr13ca?J|Eo{r{7yY$ZtF+ zpm`FSYu!B|ebWI9o&1lSYwnW3f71RW#eb8_`ON44#(*#FuJjGv0`+#{Oq0H$5QyBpk1!?vA*m$&e48}GI| znT=VVYk2lys36bX{-5K+3!{&Z|E2S|ZC`uTYv2>h$2r^N(_|cc&OYw9CRno)4_Us= zwF|$GXFi6Fe@=I(-S+@CzL|dg`r|Kz<`vMK`L4Y~4PW88;JjY(lS_R(l;OvW8|e9q z^kwXV!KcO)vWM{ki$8eI#z(Y=QT8OU7#W9d=PNI4DesnfwpX&2;(ZHrD!yB7&0WxK zv6uVBUS@K~9oC!5AKA=WlpT8y|IXJP>Pz-vAv}W4+3CFQ<=NbOL+?6Ax;-%zn&Jz- z_(sYO1oolP%({S%x979m)UW6HEQv|tcg|p$6wUn4L|};c=YEc+-7(-`INu{}Y&3sf zitY0!fj+we=Ovo+Ob3Mbmz)f|Q?O^#9NnMC`qz-yK+&E)u>l*#MJr-_XA;1aoD5E< z;4h8#aQ=B>XwA?_^ejHB`yq0H#zpv@_<*J7YUYLFcUzzPJu)tBxf&beO^#vAW)Ja* z*vH=YmrY(iP2o6`;J^h3Dc}>HHw4C<98Oy!z4i;wGxher{b;CgP*ba?37bm0nkzzLX-9x(m#jC6o)l;!_uets%|>zZMDs#Wn^!!7>p#R62Io|Nt+rsM2?g_u_z@}pOy94k?r}hbdV=wTJ2!n$; zU@;yS0>@{H;cx?RI9K)wM{O@~{DHQ6;L+dLX=%BTb)&h(FdPoR5PeIZFjVvc!%xCs zz>XK=;(l=PwqiIA1>kTl>l2Q@kjtQTp2`rO+8zeSnx1gfG7lM149CF$9D6GJgyT28 z!12W}I2KGdylrXn#Mq{<9Gg`nUk3s(G>z>OhW1`yxIGMpxCeuY4N1mX-~A~tNWLWR z`}n^HFKz9KzeMEjNB0!NzCQrF^Ts}5|57ioSB1g8;Ch2U3wtfFw+3MUdKm1F^@M#P zb~08B`@S6PJL`yBkC&~_>$M(xYCqfy>_fs}-_sM0)xfc|7>>OGILP1b3y$hu;5ZV7 zk7s+ru@G6fr5KLR036YNeZp~mFK|2^2FKVS-2piE^w6z6_-VNN(YI8{^uJAF~6W2LDxSTy6vJxA4A|&wT!G^!yZ^b#MJA zcRqf8BlSk&6OZ=%cdXPwdC^R|ffx$D zJ?nPzoqDt}-L`?xmurK0Lt}GtefTN5Q+W%mT)?l98ldCmQ!&!e!`NpYDz}f<=z<<3rZ|MQ+`97@IPMn)_vn=ZkgB7n7Cn4s*tO=8T#rCMSXe=8mb! z-~j(w^r_|i=fqNHh2};B;f36L;xzTd#_EWTCF-d+gF4K=R4x@+`Kb0w+db~*yq<-J zhPEYKZ(b=|f?Y))U7FVg^e4I(=bJoD&P}L)Lq83MH~n_21F{{xq|bJD_R{W$gY8ZW zwA&Q$gG#{rwO-ntEc_|{FxHbh)?24qt6+F3sT+!>f}4mRZ_wfUl;j( zb%)H)zgR9=xFA12hrUJ@7=!q|{&H}9DdW2m7#Nd_OeB#B=~fq*Ow7T=dK9bn&i+y! zkYYYAJh70ozlhteh);u`fzOoZH*?MxZRpNkgP-O?{2V{WligpODSj>lKNa9-LQniG zFM*$*`+bGs=SL>KR!DDyA8d)ahsxzXEXI+O;ika65gigH!#}^Egbc$kp9jWVyWlt1 z?w%|1GF+nFj$YdRc!{z9i$C_K0=%ImE3;k|@z0kUEFLL5U#fsdUV%rBL(|vb5%ivm z-b>EP^N7~+lHe4!h>gaj=EFZ=g+hFJ*ZzI{+OquuXSZ zDb6WA^=$8yypDkPQs@b-@%E-8J_XJ~b;M%$2YL($;aS01M=qSkq;sqd|3(URN7Tpb zw~P4qO!dc)Zw}WVm-_7o^~VX{zP&J{gndJ9jZEVoPERq0m%tIU(q8o>xaPJj<0BiC)Svk}u|VI*%vk@eW@mjSrSYPE5R2 zdSs^ac-E(57M|%r%cg7dv_xN|h+(CnY1d5p^L73W70%;fzR{n_*9fKQQjex>;MCXv z+Ik27TfQ_p2^<*uHbGx-u*cH3zL37pjPUf+14Z<0E1|z_EP6&|^l|C(G`Q$O$9C5{ zkIPOZz_HPpjPsTfG~e#`nWj%0|LoIVFdz9m`w*Jhhfr)Urj+O>=Jyk(4+k52QF#8m z(FNcto9)+@*n&PpE_}U3Y~0D~E%+u(AI6|ps856ZzRAKEDYOr_`!N2x2>*TJ}K49KI z{TbxAoise6Gcu-gPp$mG8@&0_hT=KbYvg4Zod9gX`I6}y`P)k0 zz3Bn1JB9g(PY?I>z*e6RWjpm}<@2TxeNa0T+#n0}=vL+#D^hdFSA`Zqzwu^E=lVjv zf5h+aNQwT=P(GP+4DXX4+rV8Z`Fx*+vxpy?d^pcoKEIEA?m<4E>M5TCZC^z=xy|qE z@1Uo+v*-Gz{Qc`n;G<9fn;7Nvo$$-|;CIjS|rXX<}90Gr|Q z)9}AX`0y6{-)GEU6<}Eqa`Fy&| zJJCq&9Gdy|a6?_wMR|Nc2N!#iI3tTYc5s zFSnK|KKz=Gx5rB8kIN!G=Y#d=D>DZb&oMUb7u3ADoX-T{UgKP#T!K-SKNU04d@sRz zvtl0STN*YO>ayiNED2z-`tpqV%Nd`?X9@mVQ3{XPjLgu`KxJCpZH9Wn^4L=ez^obzvsgj)L-JSKJj@M`1~~Zy!&s*=fN9KAD>?; zfzLkW;dbQVO@B*WX1Rn%>qY{qF3AegiCwMe=ZC3HtSkkN1O* z4}p&bJ@K(0dW6LaulRf7W6#xn;^T^5@bPO4V-Y^eOW>nVex40K-wZ#`{oDDu@(lR- zm&5)}`oRgT-<7aGzasailzzCc1U`5A@D=NaJ9?Ra$FXNxr~knW&7*qE#hH5s);mkU z`t4p|Z72cjy*{i513rbd=QkODqA-3MjAu7b_s;kz=~MVVhvthWPU8C%}SriXdABm$>oLTS+wG_5z{jBPwoNKnWTziXpe?`xACvwryVEv^)-C9 z`S^H^{I;0#_(O_oCFX;B;ySWV3H-Vweq9Y`f9o!c^YsotEwPGntF(`fw(uLrF&9;g zQ|p-8gOXrASjqhtTBp?7(>SN!x^X-U4%04enrHe{JL8B!s?QW-&8`#d=a4HlqD_0w zZ-14XTHYnr)7D1(wr0w$<#`>jt*76OQIl_*T+VMRdEd@}{xN~PB$Frz6iT)--vnkZa7u31mMz?jA8-G-1 z7o-_u7h}HP8L&?|fr=BSYZPnr?r^u~-Tu62+m?QQstcQ3+{YWjv2iA}H%P%PHG9 ztbCvLpu3F4o>yNC`*nT5Zr}taGZ$eT2f(i#3-`}wQoxz+MAyHnxE6%EAiZ)nqbeS@;_JMVNKj`q3Ry;j;6oP_6Hcs{X| z-lik~u0#C}daJM19+rh&|aI%SaExc>xc?-|m zpyzhpRr9Wfa`n7#<$VjEIs89QeB|$0=rHGhn)#yHqf|q^$<$*!E8%m)cauE6GkY8; zZ+NN0+xz76;d9QQ3uDUX`P#L;%aG=!s^4RumM>%f3BKC+Jj}=Hg~U)`9u7<+`Jf|C z4DobCVkocNEmw9DQnK>InxD4Kp zCtD^tF|j80lFtRN@(G*!Ve^q&_JDBK##!VTje6uKI;G#~!@(MSB-*|8eSfc=eCHj83=xQ{L2F@9kZb4i=5HzuVA1GTO7Dlazbrok3v6 zOrCp!xUt5pvC0>VK$}KlR_=~6gI9N#_Pcxcd8L4(g>kgL-oLGwhT3DQJGB$!Q(OY= z1W)s&;MgDgss-g$rQp&T1PSuNbZ*BA;lzXI>gzNP_5{WSXG>Y^9^u@l%a#0=-XC4j z@p{CZ)1bD~^wkc0UF4!YM1Rc+7-b}!*u^0=C2>@Kj!p?d+%Psx6cZ8P-l92mPz^ah89 zZ~b=7o`FES=c!%z(eNc@EN>^8YpZJElTvg%)$HF<*y(>qJigJGweKve{3YyPoO1E? zW#)`b@lkL;ooFx@+$Ade#k7~IAAW+h-FjDs9IHLk#yZYGxbNhq#5(WX6!!Z(?zQb? zO2HUE1^%+wF7oz%=i>t2zxty(Tj`LqBCGQq{M^7e_)6?5i^Yj^2p>V5nOti9UO6Z> zLhT@f_IHaf?qD=}pcE_#{E4VJZ+aYgl4Y?EvWFj>pHZE+ay}09G`Mu3KRjQRI>fr! zF=s`Z`C!MFoI7vA_dQ$Z+3NXn@A(_x&^(Xwp6B|{?4Ox>5&s*S?UiqIep{R|CMpNS zei77<;6pmY;9)N~-3LzhM>AjaapB?1YsW>WVOvY`%|DepqgsK3_U1~iP2bDPs7#Wo5DVhz=Id=)PS4f-f>K_HDsu>11@H-#_OPy6~}J5N!<1ex3V+btt30`=Xnb z|J1VDs@8Jn&J_Dg7jf3nA#kkv;LyYErQVp7yJyD4`6_l#kilv5pxA2lAJF5uF_CAQ z;M^76**jG@1vYQ&{+Q79z2P()0jJPfIAt%j=|87m_K;h-68!=WKKw`YOA$_`59}Bl ziN|S;T0X1GINc(=_67sakLg!q{{$byZ&8om>g@AW55^qNG5^rn=mtMqBC)Dc_|aTs zB|Nt(nt4fO&JaKM2tU9g{N(!Hp}ybf_1)M%c0sAWchL7P`o>TH$zRd;0QweACR!Za z=)oa9q4(C#HZSO3b%T}L50xkrFRyw#Wm=JQjYa!|3)-mQd~0&Zb^nHKcXgDx)N*o_ z8={5>&SMOh2WX}G`fzrJN3)$C&ENs=`C;#Qntk5t^?jLNFQ{Yh^>HY^R^EU1m~ect zkK=){CxW^)DAUKl@yp=&WHj?>wE>TMa^k_pnRLDK|F3{O%*M6?yYSQl*P91a9rfWS z-sX+-TVB~5e=x_*t{UdS?)Hm)R2W4}au|3t z##{Lq{q$_%n6l*cpNjZCvuuVtC^ky{`1ID8mhcH1lW8yIwKthE>PPzslE~s__C`BR zqp(~39(n!#lbc**QMrKe1I)1w_RFLW^~+eFb&FG$*;?0%Fu6_gGq=8;_cJ%Y z9*}k3=W^UQyDQ1rUG993Ht#ALht}`I#&Jo!^?CMyFA;stwd1gJ63$akEc4p?@o~?V zh}M!XYeQ1_C5!OKN0w+`cnSNcjd+MpyI%LqYVV71$)1dl`*c^o5%o)*lO=rYIQuFR z?5ogSbRWr&|LPA3w))75>_N%+n6@}{PBagQEo8kQ=To4A)Q9mO^!t_pu?IC~&J#8| zz}Qi5ENSd>8hOJPFnlk+HhqXVAGGhlmYQ?a`Ca2qBa14h@rL2w^1%boF?V@}xy!RX z=Pm}{jJuq(EY>uQjBSFa)V6yNzN)WZp}xBglh@B2X3(gC>$;DuJWzi7#Jl<16%3_Xa;LF>ags%hSwz>GX{(SF&FMyXO@Uo^Cyy%{C&UtvZ zj~C*AKTEmM73FtT=I3*37|$2N$1~ZEhkkP7Y4XPN(-OQkPh$+&f+sabXs$8J&&}>* zjMx#*CW-AOR%6FFL1VOI`yON4$=Dt%JvQd6J2hXuz|wqQ$XxX?#`eANvAstAf}s`t zjm?`Ac(O!1G`nh4TXs&_o>*m z9IF%8NIsnE*n2D;>uWO;%FEWJ>0f8ruQ~p?18WvIKO5+juS*jv>>|bxM#H!CMMKta zZuQo0dg#)zmWIHZqao`z!soY;rJFe~C%z*;uh^Z}c~`$jcx{(I#JNz+OA?*^V+SQG zmcBu|)J_{6_(PrCN95Zs5BDBk-9F}xI%7&}cZwZ;?c1EOxugvL3ZDUeq!{L{53_Ew znYFU5>|ZL1pILl+`sfX@S6e-~k*+Nt5n0#x(%lErOThWk+RT06SvW4XIX@>?Lh-}$ z+Z$iAcpo3gqsM^H)?KjK!!g09(J#wy2+SKl62P&sIS0|l%sCU= z%VLdM3-a-5Y|cS!PItiO+zsD-8os-$G~bo`Hs`Sb9#Y*!Hs>zJ!&&BGxcG`45B=oE z^J#B9rEJcBYK(!{!6n6GJj@uI@m<=>Vs9=U<6*{lG%&`wjFJ442WR&>#tmzlhQ?O< zV|0&(*q+&pajqHT&SH9hz>blAa$~%?_c5;4827^Ge$445UlwFnKP*{UPVA^z^1^yQ zaVzG!vCiqx6C2UP_UQLWd2DP6+aq}i#`BHu*G%7Qk&|`I|NVN>p~m0pBi7|EH}lr3 zG;h%UE-P1!)4jPG@f35fQkWlT^AIGPyZ)UygD;Z{r-$RVpT%u7fZJ$(ZqUU0)$|Kq z$Z_D@;-Q>dTrnUf|9SV_tn>Lkm*hGO9*y^#$kj#0A9wJ_9sF_pLw~KXE7EhV@HTc* zDgWg}=KycLsZRMOg9_K1m~$z2L}x20S4VrH71u8~-^YJfaJ~<9x+@)%JE3~^45j2m za0||I=lgUHGV39)kRQ_$SU37D_%eIiwN6X>4fI)ev$v*V=uY|jIalYocfd>huY97P z@V{s&T;%G^F08YVGh{jgb@qhSnd{Y2j6`ie!5Jt2LAg_v-ad83nG=U{xzao9qUYyx z)qoZK(PKaK=gId8&8?#S$u%KxbMIiCo!@ADoD=fT0l2>s1~)vUy?)g5&Ob7Ex%<(z z#jrE4ss^9nYG!-!sB_(2#9vx{KhoRZ3781@BVXbPNDQi7L`ksDNsm%bhb zL+~6Wcw!uQ=vNE_>kE0FDC-jsKkWsEm0>Von~QmKHE_h=UL;qYIXK7z4CE}9z{R(E zf#U;Va5!~^JOMpAiecyoz!0tO6Bp}xf#I4k7(U(;7YjL4>Knyy;Ai?YVgJ*#KH<2d z7dYM+fFpZK_INBgNyL8PhmrIf=UpP}uoj1Z`7(CtB+sXSGb??~9Ai7b5tDa!@!pRG zvxm~$FP+#Gwn6s9ZDbC&n0lk>Z;V5p81*YD zkBuY^R0{mtb8b_uj1By|C&ANjXvI2~wROsWO0@uED=^~I>zotWqT+EL zCg()s>~YQs@w+bk)pR5CuEp4H@YIf-C}r1Amwxt~lm9C7d=M8O#qs}){}J)eJ2|Vw z{{2d98h%RsaK<%K`~e?Mf@da!3;3l07<1>Hz)$Ww1j=RA0;ntCd&tKGeCqvj9OdM!hK=z_n`pwj}SD>-{9giJVAgyz@r9HTxv%?#U@Zz7CuvFp)7)FL>Ta82#t_^e^Uf^{w+p zh5|3Xf$^if{Ds0j*m?!~6(%qSbct~1!Z*sr-cq8kGQY3C&;E_TIg;>c7>|^d;t}ZfFBZl~ zAwGWTcrw!?zdi)t!F=`Ax0l|}GT-)9g!>=(eTCw~^jCO3s@bbJ(&NQC>}s-x{lPWS z71HA`R{Qh~oRKQ}ZuR>prtcZ=cZ$~JWwHdm9~@jlCc*c6EDnnBefM9BZ{h-<$H!?V z7E#Q95!+W0z8Cg_@38Y|gZQrfYAv`%kAUm-C2)O{-~LhLG^lSSPd_sIGYa=RnD(*7 z(x-L!t(=XrA~6ekB1500kKB1L$XCuUY3iS+!)U|zJ@$vzm!bph9=EU;;pPG#_WusR zt}$4B^SA6@YAw;{pR>f+&{<*p-zPnyd3sE;?HBQW+HXIM9%s(~L-Tm|_`e6<(}PO$ z|5q%GMg0GLAI6}*IpN#qJ4&6egDn=%)HCm!P7I@t_|gB``8w!z?cbFTV9#Lac_zz< zfUgHE*z7biZ_i^vH*YBRiM|G|!hAnt6XDYvz?X?DjA4AlTD6zvbn=I9_wo6+<`4hz z+HiY0+i(AG)~Bq0k9Rz|RxY`4RD9mYyL;iMzgYN+`03IRevoKXN<2s z{#ozHWhr|8c3^4!@F@#t5j`LC;SB1B)AG+Q$39+(eVp3UK33blig5C8eqY7<_(by% z6R#Zn5$%5(Rv53`MEtacIZ-QfqbJhM{-t^Ew$_yAt!4KbF87% zVNRtx&tKV8n|X!#uI`VNECkmOO^!VC1KpM3;)}2I@z~tY%aPw~?vy;6dFiM}Zswjk za~3Fmb!r+p@;jntohcaW+~mWP=C_U}r!Y@G2;WlrTZaByj$hlTdG9@s{x|dbc!M8H zpYP>FnEfljFP&VgJbChHRsI}eb=+(1#oZ}ueSCL5arMT0PNvC|r~XRnFI1j9b5+$> zp8O}HUK=JKnL5&mZX@*<=j#{ruRQsz2k#|ESbMbnQ{L2FOx-0V>PCrsp7QD@HBMWX z@}}+*>Mku&_eScT^y+R4)}_3uyR40X)> z#V?=TD0{>nFVTfP1%D8(4USo7_3J7h%$(!1ENb>F-miASp~0o0p*QDBGz4NGyl>;Y`L$+#`O-vH9E^iu1YS1IXv@BnB8M%ID@?E}vU%9CR{wt|XuP zVAS|}CZAjH=XmQu!QA(y8i&VwS3jU!zjkuBTNUFO<>k7QFZ?OdfU%l2A0Hpy`VBct z!6M5V8^U{}!^0rT-PUn}&+dkmoOzSPg zi>gxX|1Q{Nnm@*htJ!`~1lJ^m2a2=&QWpR9?NAp|`4=FJ1hbGHB2UJ9*udpv$8aV61FV-?-L!AJJF zSogL93uWf!a#{U$Ygrpf?DOTNsI7l2(Uu+O3Vt`dU!2Qp+ujVEd%dvS@S&ZyB9iYHooBs?l7A`FkY`kRRv zc2K{=t3TYwoz=CXM}f`W1D@MGT+9|O{tCUUFc>w=!noypDA$ zo zdDOYq1_rH@1^OSyoglAW6^Q#nn_U0Vi~H>Vzk2EaQ(^r(ft(j$tR+9-m-O%9V(cS7 z=YI=x*xJ!Q`MBQ_h@n{i=rdl-*gwx2VKeJU#qs-*me%!!w7%2tuQ)#OSH-uQ3eN`& zT`!!o_0GoWVr}!wck zedF&2;n(kOzgTlG@aN`QA+WeBqbuB1&WaRghqe~asjKCK3}n7XADv~fkEsv(HZTB- zd`>gpt7a@UjHN!BxyZ+d2dl4}!3R3o^9w^@(3$kvRfF5&^r1cZQ-fm(_A`TiX420r z?$1>}F1R%~@%jR z@r!&FSnxOGbHum6_uJt6?f5CQ*A9GJ&SMWB_bi9$;1NEITd@}w#?7OsPu&*kt`6Ff zWlqkw5+A(Rr;TWD_XY>|Bz+_ByJSdZI0vDJ41~QCK7yZV@~??y5exL=l%D*A`P_$J z>*;ep>E9Wgv!7KmfdE2oCfF9y@!|Kj}Ox#BtGRlpdUr?&imcYZO(=d0lS;zxbuzbx?dG`u}Z zIT;CLuRr+8KaYK+jAzM!@q;=&ezS9$-<|YiP-i4Mfj=vMKN_aoxWf5E0(+grUc0h2 z+nlN-^3;G1a*-*mHKoztf%#hx{Qj043$x~pKVfwl`rNE*n|rdUuXS$uQCf4)ZbugZ zx7MAmz6M^{?c1~VfIZXi+nv}u_4}^;?>V2K9Xr!eWM{^JFL0*$-iKtXsb}mA<%BQd zR{67T7-!BWsQ2^%`KMKh9gH8ngRPvZ*oCPFKB~b-4fo0q;T`wSo4BIZw}QV*PgYPy z?~Kl*kKp`5@AVOmi~A1Kr|W!L24fgs_UZcns(x9GtQF`NX#C!{mC!GH0(0jQ`sD_A ztCW5jYV=mm_{E90{@>Lv7y11Ee>;8=@%baDU%dE0$o*#6Fv)Z+_ZKB5a;6e;T@785 zqdi%#y^!~n-utTzy~^7XmGT7xbM@fdje7VsJ?z1+$%6=`7yT^_wu>&1Od-!3>Y{;r z^-8q+R4?t`8Eh9llWTWRAhuAV-Ea5OZUgNa`E4%r7w&!4)3IUkfy??!zlPrzB>dOS zjy{fVxyr<5m|rP2@g4Xz{QTl^`Pj(taD3lW3Vzz21pHQCnsG$_4}0$eUS)CS{XgLl z!at1)7TZVz21ScoY;ha2X*VZ{ik5bWAs=+Z6qO}CVd^`N1p7+W}{yV-5F z8)_P9!nU}fu61b_Z7OJKD@wcWzHH0+9}p=b_~%))c|YHIo;i8W$qAsgefwV5FV}Uh zC(q0?Gxyy8=AL`*naS_RBEKI`p;PSmaN77Z;7?S-C+OL&z-{U+7=zyD*IO(;?X>tca@Lgw^coN3nZpO0+WtKB`u5gGaA@*Z|7f&Mj zE1c`=zA^9178l|k_Q5Jb+{~=hG?@ifFl>OBW4T zao2H=$3Im>|GlC0s_-rmTWqdJX1HKs6Y3%-kOTd?b8<=0u{)6j$e7@QJ2T#A#r&nV>UtQtX|K|4}yydj~ z^sZCz(=RQ2p?vtp7vU%I`+B3_i|9+sOX!fRnbS1Pf_}c8{6_B+pABqWX{@&A6o zlhZeSpJ74#zj&^24EhCe6h-I!$mczy;PX2^d_nmnd9>d zMeunnRO;QYQ^$NSRF=PgV9?=weRRN4^v7{@2QlX-I1jBeFyDI+J~X!3e!e@59yv;% zj-xxaQf8aurnfWS8)R;_B{$!DV8nb6`#pv4HregCtv($B^SzDEnm;!4z4!hD^F8L0 z)*pLf%gFg&%!emK-p(ru=6gZ-nrM?bTRNh-18dal^dyF8rR;asDVg^@g6|<0w;qhi zRemZIyO6bkU~I6p84C9Rn0ZhX+oBD;tixaLmoxJq;@%_=se;&lV`r$Hs!;6h!FEQ8 z_cv`c(MB_EL^%H^*haB9e`uMTSA@#UdXL~RI(7whtPH!~QyqRRJ2am3_Qe``*Dc|=L^B% zBKp5L?B1dNE8aQ~nRm};{|OuipJx;wnJlLcdG4TG;XBr`Lw+t?7qvk{W@rD*B*o~ z`_tUp%xU2X&nEJC^UpQc4YYT@+Vkk%rN;zrYxbw}#N*ou3H&x%X$wr8aIYxl&EEScqKjyb}Hxt>@avwlxI zc0K7P*3s2Zb4FSbo>yMH1)Qz|r>$Z4zkQlpAHhy=ARSyNxA6cEJULv(i^pvjEzcz$ zm;DTloF}#)ACZ+upYKgP?grM#>dqh@w@CXryj}rbF9omI`=jBNcwF#W8#~{}YpNam zC?1#gvztbZ$ITlv#3RRuQId@~^4vT^DBG&{%WF-&>%i zYzh3b{KD>1<{QhH>qN#=R~zNA2~x<9*}pxFbk5;S(YElKqMitQpLK?c%0}=3s~!38 zEo>2B)BSsqv7z>~UmpICrKdp43)we4&v9>>%w2Q-dD}Cfzv98PW*uJvZLmdBEyQQA z&*?hGvR7$$8U6#sj3~w}vjUl!5_WgJdc!8xbImu$_~!nxh56TQs$(yO>KIi1`2763 z$zI+sl{cAq6zc4m>^zmJ5Dc_IJ3VTHI1$zHG~YdTPN0qo!9W{Rz5K^j&(!?D`IA!gbX7&_C9Pd0H z%SYgN3-p(K4MP7c^v{U?bNPP`|3m-GY>#F(&Ss}G&d~o8w57f9nJs*`g>y-v{}$-q z1N{eAQNES*C{JjZz^2l9M+VnEJ-(p6K#NQ(dHy$9zUdJze0qGAZytjlh2L0uv?yQn z@axYm_wfNugpb?E-vupZ^E(Jm#=jQbG`>{$7~h`R2ET0wzK4LblmEN;znlMoC%cM1 zM0sxDeG_>dne8o^I<{?>$Op+Jpn{P9= z<;wVd-wa>J8$CR!4};)AasuxjRzKdu|Cc(YdmiH_-pYnb_l$e>^Y>((aqZb=bJq7$ z*$A*M_h~g3JR)Bi=qTFsAYY>62IR}?74hZZ%CLJ79@>I`;G4v8q8~Rd-?!l5`NTd5 zMvWD>5W{jw$T75?UFOvf-CSGGo6$uTUaV~YTlM7Zts%wB5JT~rc~GBp5gu@=2_Wym}ljT;kz)akDBk@uMv~x#ZNfi z{OvONJl`@L@3k0OG(k6Tn*y)I-PWX`iDGEGkhKNSM7U9U&Yo!V?wzlYE!`A$$ADAr zr8GD#oG+gXT(iI_a~N|MnrO|we>4AJoy5eHNmtBbza@IGCi1;c?$g{v^;$hqLEhS_ zN@->?7SNx=|B51tBt34J$* ze)@W1KV>71j|1`)Yiad^bm`i$J`QZ2udAO>-gqAe^T2`MetI4_K;DD{U>g+&j3W<6 z_>OVuVZo$!GxI!L#6zKXRB~sl=2hROoo>h3b1}bcC}iYvEpn-~P|05kTnG-1`9j)7NE?lI`hGOpeMoth zc5|H^9pq0H9oQT94&5~@{9nVj8iS=LvGu1mg5QgcjtuSD1#j*e8~(DPM>Tk>1&4L; zDEQltoIc94$W!WbU2RQN|syyC#?IVeD}SMv>te;8!v{5RhTw#$EU<2k)u) zW(w_`j&F<%0h_Uvz`Np2%=`|$|KIVnI#uznLHqZ>5tV^H zlbC~*huzc^?1Di2@9*RK=+Eg-aD7zgXZBt?%KGSHk2YUc ze0}s9+KWe!&E?>81w6#qlV)9reU0&YW6y^pHlMmJl|AsHp@BJHq_kU#}k-uR%t#}ZoV>h66?y^;3_ed*u4@bF^xGn5XaGb9gdBukiJfraVbDq3> z-{K?WonQF``1p1C)M0xBzTm7!{EF~K3%mhrnO5{z6x)=39$e?RhuR(YS#Wk3d-b^v z$34>NxWDRh+@sz2kW)?`p3e92lpH*B7Tj zkFz!JdJlfy^ZSyGq1eA{dZ|Noy*SMqA5V}L^mDKB+mru!31=G^KWPQ~9H6JcOKA99 z$e>Qq9!|}pvX%6+ihjcAn_F z#xm9=%Ha=ak%Sg$XrcYXN%|nabrSf+Z-wiH8Y302oZQBDz^M2$oq^lPxRP5pgr?~Z z(mUxRIFN0jJEdhWXdO~MW%=Qg-JGqn)my_1LC?sVw-2u$(r07C&}Vyo+5RH?t^bl( z7wHDIZT%sQjDzu=$l%tn`%Y+f0^fCzzIUNdj1Fx9Ci0S7f-sC5hJo=wbv40XC$_V$ z(e1b&4m&Zy5wu?v-}Pdb;WPHy_s_~*^SAHOa?Z&+Se`ML|*H#AcJ z3h)9CHe=I%02@R4#kAGt@qGili2d^5T+(%yg<>i$2j0T7>}UJ^OE!XI_&|6xbavjF z!|{m~;1wSFF!Eazuka-Dn}^p&zYJcf^920#B0MNQ4dQj3#Vh#+uaaTlOu$oL22SZ! z!`rmoaCv@T6zkz$GO{lx;4|@z=?nPJ^<~Z3Z>ld}I!#}09IY?NU~`}^LHfwoC*88{ zu&1x@vihOXqyPGGqW_d(`mc1{Ms$PbjweF-vhuHfzf+{kHy~YWbZ_{)obEjlfrijY zI=E0qjcmYIg*3c@eyh$C(9i1OAPwJQd58Q4WW(s;mCz8H&ZOU_zm3CsSp8k#_xCZ| z-;mee>x-S=C|%g(xDDviMs(`cwdle|_`UyiAevck9cjll;bV+Jz5-G0ArW zgGa0U_=LFMMlgQjn9rYwituNH=mmeq#RK?Up1T+sE#TEjRz^t|3_097({s4BygI7B zDZ;BgG4#zTcy)!95%8STH-Zyh{Zg*~`8eL}_x}ezjxBz@c=r5w{Hy7^IVT?dRnJfQ zw-Gwdv2_Dma12=Q*Ig{0eZuRc-+8u;#{4!uS&V*do_&1iJnWAm=aVEl;f*fjp&R*H zr+D&wd-$vHvl*A$`K}XL>%s=;4!cR@()toiJbA4bUm%$%j4v>;l4VoWF@GBKJCM!{bW0@D~K-$!UwOVs%VojZYWyX zJ2VeIO%ZQRTtVMEm@BpW@yEpOGUxa2ZX_R^j=P+E=Er8uoP0Yrr8eZpa$}QEjYD_M z(dAdz>z4~T;inbzE!a~9G2GIM=DV@)?VB`P^k~da+`pb8@ z{@Quc3h;&8>mJx!g)gtndzhzjAC!25*b~MCt(kfEN`_)T-Nzd3IzMKj-D^X>c$1Hh z_N!{UZ8+cZM`pCU>3mo+oBZ`});Bh5odf%Lv^B}A{d1GHuJzANTIH|PwlW8a7GI|= zls(~O9Wh55k4CK10*ma1o3W*r;GZfsmVJh@^8YObR%^%K#N1Bx8a@Eu-Zm!oap%!?EwiUdnbWI@Tu=9?suoo z+f&F);l1as1B=GIdWXFUZIbmdvG<6-Rt@*d=m~fy1uhzCLvTvBf z?po(NQ>HBt3sZ#mTd5=J$G=SHf73tobnq;QLD9hCxHZ7*=vTW}!tgtC;NilnC)IlD zwr#wP+GKuV+MbU5ui_UE)ZOOOSbSp6FT>Ugo*}XCX>di`Mi=|=nRtl>*kaIjCpa;8 z=8~6_Ltw+F>*>HEc*)7(mB=Cbt>=o<%i$AkHa4K7J;Iq~k(;RJf z^-I>cd|3*Pf#R8-W1g?Kl=}-WW-cJSjMe>xRt|}kSaM}?Is7}y8aV{koE#Egp*j>V zp=Z1qdPR`E<;<^#acX!;KHt21+N^E_4(V;_>$?sP>+7!u{jI+J*E@CO{A37Q+3eNg z+=UD}b_aakgRTJg51t21HZ5;`k1~VU<{8Fgo!1Z?Kl5V^JliZqz0y-=Eq@9)ItQB* zdzN+k2kg52yP-{@0vX{KhbI#7xP0_=@P_>HTI0=>-PvENb$fU(Q;iOtlD}?$E8m!P z`@H<&b^E_izSfBY`F7p@!^&gbK9^VL*)3YHZ=n4J+6l=As?9q{1%1X%rx=8x0Ws$%krL+fkyfWPb$A27&LyR zrhy~uBC|$Bew_RY?6F)Kzs)T88Kj>F>4#m{WqjCMxUTy=u_{H^b%kHb4^ln@y|tb< zc!uj?gaj<{l4DJHBWI~ z0k)pziqg}H{U|)IKz$GTFeT6bLf_3iFEBQuyIt9@^4B$wwnpjO>hfX0&geq-o^S|8|!z1F?hbRVEh6w%GSPX zGV^m^=iJTuUEcbSokM{4>jHQ!wC7g)I1c(mzgYy|zmMxPe?`B7>obqyPpZFYl=T_s zZF%c6!fVj4D7?Pg$7>b#g7!m0e zqo2?hilNJ(zwLP{#pu5toD|hhluuDUO?m4RGIM11^xFAx68}Pc=kWeqY_s9{akmqD zN%@?!Qf&V&v3xljRTO6c5mi9 ztJgA~90%p&H*%iU{{!~qKY`!V+LNI>{(pON8oH#wo?OSc^G5B-kN)bnV^5yv#q9OJ zLjAHQUoy{d{|WP~?0bP{(4PEbpZ7?O$b{;r_qoX=z?) z>;8M%(|tjmom;Q-{pr6?=QBJ=UxN1SUD&tlD@U6a zW)zPJX zCn~@=KjXEX<_dOqqAjL7q>` zPs{UZQD$%jKADyBhjFh8KDY$y4%)++=hF&}H*10^>M-^y^M_Oux>Yg4;8iixHg74u zzGdu>ir|~f90%twlXsGD@DHW&6Qzz*c7f*uOf7^yi-zN9ae_=u;gd`~!*|aV?5pXZ zd?)E$JZW3&+HLqSBjbUA_Km$vT_#?Xwp2cXO|G`G;LxmtLnDLd;Ix68D844@3hu%AD&H7iUS9sNFK?sr<;x4?TVLKf z`F|h(`|aLOyIYuJ_OO3#a3^^Kc+Q;NXy?so;cM$lp0r>6*mMz+o%390de)0|g zdkT50<^O8MXnSiIIan&ibMTb!V}6+Y`-8BOZ()5vd1C|pD1eo6uMbvq!xnUd)-48) z1K-QQdJ_-;qRo~w4sZyF= z@&9)Ie~ABSE4zulw)5-eeGBPZ`E4hCcENrs-gA7tjr{HcS(uG1R3Qsh$N~8Y^8XxL z!j{qcvf+L89oW@3=|t#kc>hZN?_rsf`SGuQ0iGXkcwVrJ=k>kzd6@lE&_sCd zL5GSa|A-E?{4aen*oL1S`3m^iA1L&*zl9j8qJDO(EAT;Y!5680bJ^wKZ3S(vgdfge zEZU>^EapT{m}j_un|W6DealZD@Y8$!^esHi`bq6DPhG11@}Auvb|3r9vd^%NvD)%Q z&wH=iXJw>{@ABlC`^KfJD-rh?^_AaeoKwG zFUX4re&Pnj;}paL!|Ms;GKs!V4M4vICHSp8-&T4D{D|((4qzAHYre%>XB@FFyPX&y z?I~FXPuO)v#bc)^n_7%-jPXh1#yIe)`g8NhHZNvX<3ozJEM5L=4D&(lkJ3DnJi%e- zkvEWM_Sk6un9cL&k@JE`gmT~264{h7ewkGJm<9PDFDAx{>@ zG`KLb>5sXWs7=Nqv#*S&_LXgchU{Iv$LuWww^?wT2Dh3IN73DB&RtJ0H0$o)kq$8H zWIn9yw=#Q^QoC8_=Nq+^S{PXOE`mR;>1YozK09O6OuB>pSG=n(Y-V@F`Tnfke1m=E z_;5$e!!Cf9TKDb74zTMCn_2I%JYn`;V<$wg5z^@H47!`RBSUM$FW@H~<-Lu(b@UtE zCfiZ_t*q^k;@#>#oduANdVLmc3@#Rijh&fX0Q}@9$UmF8LavPR;VbnInhyI1ir^;B zHzR20>(zf{yq<|pUCU4OD}D8I_uRsMz$`RN_%ur+3qf1+BhVv3+v3Ml@wC-HowO0T zb=g&xxBr&+AHv&h_(AYnuO0!LZ%eG_yNemG*7C~&o7oeFEfHalUJCd!mZ!FcSIfsd znrvyj#P_{A>UjHqNBd6SEPZeNzVtR{^%9;p^Ls@6#CaI2TH&W{+y}~!d6&z1pKiJf z7{JXA?C|ax@YAf~{Ir&sEW=OOIXQmfObp%IVRa6 zxMt6#(v8mW_hXyApBCraN5}aQXnQ6&H#psXdYmTtCc!W4@Ato0c;r3JFWyA|o55qm zapNugzl#4`dHS$tBu9*^DSuo|V;iLF*vAXM%chbIF8kWbL}od9x}{+4y)MjJFS?zv zDNbI3Z{Ew8Vao_labS_HARRB<+x?-v{J$$_bFc>;o5R>kI~ePCqSFS3>A&;U(q44Q z##`8feXYL-yOi?xV=p?;Uv`A*)>*uIYEQjzcnvWd=tJ*)k>l<>9lceqiLt=9fA6F$ z^W>TY=~<=w^!_yI?4PW8Y({Bc<{{|qm&->Ub&OfDY)7Nfv$rkF_I*hOTu%S z(8ZjW(nAbT4>3UF&{2ck*l=6e541JxKF-+ugf}+l(Liv1gBY9H;D6k$%U-#p%)@`# ztrx#yW%ujE^xQ`rP$B(P_HQXG*%cja+0D>U_>9w6(Zb@?@{RU~?kdJN;M2yO2rp6W zBk`ZnrO-33yGYRA#?Rv01@-XGRf_4vj{0Ns4EN76&&s}wc-HuN)qdV|Kd*vksu6ja z?~N;x7u}5$=RIBx{IqNA4WExLC$E^^m_>RHPw1!~bl6&7kHCXw->q!O?$6BljIA?g zANV{b8&W#l*atk#zH_6;*>{dCS=&H3k^jN?K+uhQ!Oy=F6Q#ZnL5HkjrSN^F&9kyE zX`a#kSN!x}`sx48^Ef}*k;hEho&C?~i5>ZK^B(QrXP)8yr+8NSF)fAuthXKTY{{TM z>#wjYP5kWdp+EXuXdd)OC(6V9nYWJOkA9?bczwUa_@g%###{Ucu_qV7`^Egxoo_4d zkG_lcevAI-ygiMQ&u;OpCmnK+?SDZsF-;&OKkNI~kNM9Aw?6%QpM*VMrW`#an z&6&b}Uvxf~!nktlqbR`=f7%k9T^$b)73<+qGvXpBqfOmDtER=+rsr zR?2@jP*(I*-0Tpr56}6$SO)1kTW|du+MVsSe`2>6e_`7fzr-sTCo03nfASU9g5tzW zDBto+ocnR&wBd~%Uj4<|)PA@^Js1DQNIlo-^Md7vV{P94vEFH-QT~2O`M-vSw3n;2 zH-n8PdpOT`@2BPY?kO|KIFzZSEal7`rJDZLGA^-SJk8JROUU!xQ%5WHns`*?Y3T*t zKA!&$oI#kDRVk9lYY+fH^& z2L8*7YvtYYm(DFwytU3ys<(60+29zNNmjv|W_?Kj|8Le3tJI%9_YN~eOu zmjT5>G|ULs(CO;e7dkuWB z)+xQ`4B~q?7RL8(geJ0!ipKW>S8&`D-`xNoiSOQH`0BI$SL%r^`fl?c?Z3i2!~O5% zY5A>CN3Z(tkve)w!Fc^dk@KvzwrTHYyvf{uIX3pd@|R2;8+fVFm?isydE@Z^(rY$d zdd&Y{dPs55(w!OPUi#vccQv+o|Q)z}4$QPSl}^p|Xg6#7zgwj{b${Hrl5 zfiA_Ca}$erU(7e?Q^iy2tOw&e#a|a+zz@7>oDVbam;D;A;2oSAo(Xwlo!0Sf1j`j0+Yjv@$v59Az`wQkdX2r8zuz|4hcvht8Y<~^Ca?$O zo9~Iu9J}V}n6E2m% zzTmvgXJ}_XxIF+oje-eUil)#LJAm^Mrp6LwcbGd!*MFM+L$4I?@|UKdS!%y;OI#6N z9buhBe2p)uCIQ`&&@Y&8{V5gr)j0p6CjLy={aF+C*%n~f%FmX8-l|7F(FVrHv-p15 zc<;PFt+`p><+b=Ovz?5~UC2*2Fh|epO?J{|7jyM)_+v|$dc*F(Ebz)0r+t{o4!)fi zb|rI(-MsJN*~~NIxb^T+Iqe4VfS=#ZM5wQta<$L}-WA_!eLo2g8lGtzXY4BO*#VDU zjC11+?5DmFJNYcmlUXxE=d2xuPmP~V^X{?YS9mVTPkl{NHhz*ZZ3FcVP|wM5O>&6$ z0p1t#KE(UWjyb<)o63T_&joNd1RjQlreHUo*PD{uAR}q;DO<$i;jCM*b@?sIMaC{iHFGBLEcW%H<8{!+BVX*^ZpR;JNRxVY0F7l!FMZ3-%k2Ae&8_y z9--Nr!sF(%bne^5u|K;7-P%H(=#s=d?%F24LpmVGm)NK2zs5eDOWXYN`qtv{rS3*v z!urGx_H-AHJ;#W#kw5Adbb|Fqq1UnZu+M03kUCDH&l1ed2KgqqhODta3!jhnt>tx{ z@0Nwv%Rx9VceBgo^%7KOJj<#&iPIxpjl&dXR+9&{$O4??qp&@2nh2HW_5 z9sjp`a1Nq#53U5hRlK*77v-CEyw8CjeE*_+yE@0z+LGB-zCFNx!mnp1vrQ4b3|;R0H|IYY-{GX0^Eqwq78uK&;CZR`S5$}t^XA|F5@_z+Ca47vQ zx~D7XW2M%cymb`CJ4t7!!L9Z++=YF9H|ybTtcNGyd7bm?ji3HFhVL+5=Z#^eKI&S_ zSsZEFQu(#4)oXlEyi>Z?FT)y}%4n>U-bo=p8Uy3d(vG=yOw}BG)bSA9T~dI%et#S^ zX#+xGNMI{F4&u;KSpMvAeU5tUcbN1+`pbNa!#=F+`WF!338t@E06W}v7 z0G@V&zui1n@!smVnJ9IE;}m^P!M`bRX7B<|GvGQ8&*+NucJQ>l0MF1c3I5HQ5Q_tN zhUbMROE-gO+ERIgXWBA&wq=B8%8bDC3gBN!8!ePw2wd=k=7HHQylLCM`h0EAw_*=OE#p8j{qR@+m9HPJ&)HKRe_wV%k@$!1(wf8$ z+BrUEwc;PryXoH^c$0RuXFbz>P0h}Yq1$B(oDH6bz}ZlAa<6zfJAjVe!?T+*ThOsv z$phxhJbv9_SLdky1!Ypl8&*drPrki@IUX4IZy>(i+LcZy5Ph_B(@Jb&CGXt$X3ChCOGA{ zq4szi-_53<@cqx=?G)+hc3{{*nP%`40gmNfJ(+4h&ZwF+`q85puepxVw{N!OYQMvkg=&!;5_Q@S62LX>)V~ZH`O+} zdfr^u2o1m={r33wEYA<>m%o|v_+xTD&9g%II9LacPIhjuN5&>opECiQ^b1bxQO2Z~ z%dlITfUCLW%mkzZ8&59@tt+U>*^yo+{;FUrLt9aiiQds<8^2WO4g{^j8FNiaA_Sva9O_m0qu$BB%2BG7QCqU zI`AzW^j-4hyUMWU?Tr<8a@KHZdm4U~?oV#wR~L4}v}5Lv0lY7z9o@TN>ht4hx~cDC zXUv`@{JN>v)~$FNQ*R6P`toY%&OGt;^!H@j#8@=y^b$k7dVHDlmG~lPxfmYf{Eft- zdN;Ya-c4-beJkml!;#<&7|v3usb{_EW?+l&sCO^<2zqV-`3vF2`6cej0k6&^b;cJ^ zeqp`)wQ?i)W_$cd*d_VW@*RZ>3w*%N4hha~kBQ*a^p$F2NJRXgA)VrLoZtR~p z-{$(#2+SMw?)POKeQD=?1L+;W-%k2EetuuzlLya~A5V5qF!UL!3&7Ta{si{FzYEx_ zX{VO<$WMXWG`LMx*Atsk@22Z$vz7EH>20I~UkY3&TS!~QJ9ukCRyg~GaiZSMwAFKu z8nGkZ9C2^q840(7$EpzLfWoJ<$~?a3Y;8BWih5i4(Z3|LYJ462Q$K#Get^%-Yj}2w z_SDnuxXgX`YVP~hCCq*2(NEy51zyp33Gp!CF?T0HJ+Nv1TE!f}#zM^?ZX?wN4Hq%* z)!BRt%zQa_&d3G-i}7Fq^yMc!rodwwJZ5Oe=n(4C6S*^Isu$y}D!<)t1aPt$oTO=NYN ziyxd1J{zG=W7tiQA1D9U#Kzh(=4>y<$6SA$@ait#K3hVanop-&hWo!v{ZX6|>55Ia zzJiaD&Usoj-yjwhyK%KGmudC!;rqir#CM7@>fxt73pUPZty9)6yF9y!ezx+276)FZ zZcOj=$EHs)|NIQ|&pYUIioOrRSBD)p&iz#@<#+PWF_H~wb)WLCx|%%Bh0-0?Nn|sH zY$jHrLpkqBwz%eR$rYrpB%QOL5}a+6Xd)f_NmsDP-T05RPAh*>DngsgQ#tG2U&Hjq zZtcOCp)vXLxv@vNi}t*6ryi3njLF@e{D*Jg%)=X@<$lLa9B|xguNet<8o1M(E2X(w zdNJ@tfO|Q-6(t?GWp~M+{d(XQk7ZZZ*Bn?Ix;;ybQr5$xIoE5P&HKV|p81|JXb@RB ziL7vsO%3}~esnEk(V6N~@sZ|}R{nO<&Mu$-7*r?bu{DYU7XJy}P^NjYt&rh%N(`Wkc)&Bc*o>!Xx@9cj! zPg5S;Pcv!J{`1W<+&{%UEBnsnSvkYIXUEKm%F$m_oV+>FM}7`0W#D{L*tK^<*g4Vn zUk#i$W7ghIah^&AGD%#M?lIFklIEtO=`O}nbi;%4C)zamn;%Cmz*h-;Rqz7%ANJvvn0b@I|BMnd7y8avXgC{s&H;`9OzGM1&m78wgA6z* ztk;`|dG!@rYdgCLo*uUTm&P*hzM@Lzi;WZV=Zolt1a?z0Xxm_CWwFBtvDXhSEO8Gl z()_WkS25!!SSRcZ+(j!|+OuLc7vPSY*raoQ-ElJH>7OBZJHh`6G-MgeMKh z|JBuFE7W6?c`{xYQ}#3B9<<&)A`XytZlj%{=-XMtspK5zvKaDgY*qXM4@4fBkUMKQ z#XKU-93#UV<7(Qu23;c^S7^IFOk2iw#gCk`UD1gNbc6c!LA5t@VeimU@lXZpprP2( za@L3#>l2636{M#a8`CNNAA~OsL(ik|MF;7fq<4{ifbL*uXpYom-?iWygA>|hVALmml`V9(61RhHCKC1We2gvdv-l8@1@LY0$7jJW$cA zSexWR@)rT~G=I)h!JLPBjBk7{b%BEUD-x0gzCi%9BZ}qPA$+TjJck|rixafn8jx!}zFMoY#Y~QN0@kN3& z*^PF*&>C-MiwBFb?f9SA88=C~>P&2dCrO(@pI$@GC&IfL3l*cJG4%jxighT|71rOB zt#sVMDsu6i?d0JDt8r?6x z)B5r^pygW5f>Rx7l?6BASCvaZCzZXz!d(zw@+BYc!uS%iz7z7}7tI+C#n;DDE%3%F z`q2t6Mxjj`GK}m<@1~=}aLU(d<3?u4j+lo(^waPUW#nrzu=9NP-tS`68XaC(+)aG>+vIe;pomsLe1Ded^3q}%E9#%+MNatpr_?e z@xWF@B^L_^j&Ljo{pIsJNpxXb#?G+V=aJ5c26Rh;h#3#|OG<{k|Tv`_19OTFR2EGwLjWKd2z4(ps z?7{ijg|R1JE9f`vnE5aG^z5SI{Z?Nee|n@&+vD>}A-`N^Y{=91&#t{c3*DNSqg-E# zJox>KlP0=}X2Acz+O^fOjOHJKes-!qfj$_#_+?bylsob6SO!}>Snd$#+1^`#i)X93 zi>Q{ni0Ww5pFiMN29Fb&2TTH&lYKwH=s1cN!O_3v$&;tQCQKd~f1PNB|Ij@tbWeI6 z^3)CwKo`ZhX&#-E9r&PBd{7JRTEP){sVIDae##IJo7c~ge6V-zIq!&lP<>xS`Ngz} zjOA<`WVizPsYkA6B3HNPaZBDtUC5C9E{Sy>oHL~_+xZ4sX{}## zG3icY*EI88gm%#xsfED3V0c|EW8e*;1ND6={45?GM;&FRtZXLX!PHOL)739Mk!R1e zomy9l&(AJGLpx8>{jK74{YgJ+Jnc1O(FMbI&!AJRu9hz}4URLy@f`FcJZbGd=||aq z@%e^NpI`gxgxEF6@wL+T(u>GJ65f79F-dF6Vpo0)zbrJzhS@m25oux*|1}g@cXY%jnpF+zgr9Nd#usBf8%=gloY$4 z&c@Z*IYFk|ajz?5T!oLXgFe@nhu!y2;T@hk1kXLY96I&1-N$3;ydWG=u^lc^p$T>a&xeQx;m++i#z8OCu8_{eBX?c zy8qBvud?IcN_rD`qYcZy4*Bs`>WM=0Hel^mAFvDHaq-CE1%^lVuD#+N=rYN;gKWsZ zG2ZB=gGNp!_AQpbWhM2rP|qsI4f4PGYhrL3ff1g|+n-Tzrg@J z)QH!#mY0~#cko4G zBz2BfHfO78?Hb%3+Z&Jx)~j_cz11)4&3>vtJnts%g23-GwAiU(y=*mbuO=S8uj?k~ z_UrMJ&H@+a{i9AU)5QO{Rob|C6ti41fFc zj|t~!{2n>~7-ApbPzU&24n9{k$z7R2L+GhyO5^96}h92DBn5MaxzWe1Jv{gqN@VcdUVOwfP?b)_| zUeH#OGZ4?Dt$k_>8Ir78Jy_UQVZZ*Zu&uJs_Mb^xkE<8zs{-R!a6bgGRyF#WeLWE;Hq_>L{!Hu$`}gbe={bElG)cOw zq_^Vj&c>S#&v*5_`Kb3?a(uoUCqIDC@splT`c;7cW$&y%lls=w#eQ5+-*-o;k2P7~3+OjwW{7@iPf8w) zkJQB;DyXyDuk%PiU!Gxo__3T=cR_s{iqz-b-B#QmZewwcFPt$g%NUgf_T8+1?|OB9 z`!1f3zFNP@(2B8Zkg=tC?B`9)mGyDScVx#jQy#iL@@oCQIQ3}E8>HMp%84iI#$Id6 zYOg?M?6rGl@yoIfJMPub-xDg~JQei2_2Fo|N=Tm|=ic1T({FDlw(xv@m4)jC(0rla zf4fGoGr-SA|FwDZm+OhIE!;m^Z2pqnfd6F^c2fs7O(*=i4!zS3Ty5w&{2Pm=VXvSc z6UepfCu56k;+qcchRNAaWBWEUcBkow>{R26VQdcCPi9`>>%1g-R`d|QG(R$9@HDMK zjxq78I#VM-UA5FTleLLBbBO=H5Z}| zYwP9Bh33(B^r!p|abOJ2=M265xFq6ki3@Y~FrIS0Psp6_a}9A$y30go5^0{1iSYk& z{$Ifleo4;*Zum#@k5m)+&C2H;e#<+1g?Br4D7H`j1nn8AXIzrMGzA~!VqM9Plm83& z$CgRZmf_!NtZO?Z?Fn$7>-!tPZ?5dA@D`x8@br23)Z=k)EL=wX-w6Ijp6oot`os>R zYjmHn^xejv25hi$`iy;G=Ou+c+xPkU<`^;Nbz{ys{KSRKPX@~J*Mo+@1Mwh9)+JM{ z-K6o|XYk!;Spyhk4d5W_7Kd23cy@M)dw5QX+g;9D%Zy1ety7r)9sWmlQmhGxe(Bj- zS0J`VcbPzMPdBnh3fsT_HmzL%FF(a#rq=O&J3O_U|M&3!lU_YqXUMP?lHS4lPIzK~ zygihIhw^xWcT3;Y4)S*w@WjHfn_2+hE`avr6Mx};B)}7KU^e!^I=*YCe4DSoe186W zpPw&=pR@3@^w(NqQqu>3DFtkUz_pG4xAXr){M2{WaWZpwcJsc4ysdn*ox0~2z|MOP z_HOdG6~I0}?B-%>$d8kMSpfDSU>J(BHnmS<(A#?BlUOGzuV<`fokw$X@)N*l;!^k~ z{S2_|2c{Hl4Tjy!0e&64caqn|b06u?khY(850iG3?~jw-L3$_YU8JudeI@BFq#q{z zDCx&ZZzerL`f_MFr0*DCz~!M$;5`H`Rx&<-<764QXPR(v?X*!>s+Igzz!T+3e^Y*cHILSsl;kg2OPM;w zZF*-qRVa;j`7iVo4wl@y;9!Tb^HS|(qy zA9vq6<0{h@^_jb0X+LS@exS_QQwyJYx#LgxE#vokOmp0@*<1GZ*bhE}AE(0LZR5=FJmX_C<8+0$&V~PF#Cagg{=@UXG_odT zY4ZE>Upal{-)Cy>Q!ltLvWxnVt>hNUO16CY%Ra;y zzJoD*C%iI%4`nxZzwcokwG6s0=Gz@StNDI6{4vkhPjmBm@2&8j)-coj(wvbv!djz_QT7$^L_<5 zSP2fI{NKj^>x2{P7{GVDhi41#tH^8R8)Wrx9r58M6LWiKp5@)b@hmcXI9dQZ{4KeX zOeM&VlV1{qy^H*<$mas|0J5Cu20z=7U;2{V0{*rm!}RGZ_^u3342(6hu^AqEqcYL^ z?x6#wiM{YCz(tv#6&q&PiY&O~b*jKBQb(({Z>5GmX-fLps$4@psj!Do* z^tz8Rv*D(5W65chr>wD|3g+_`*UiL5hM}!=lgj4o3}RF2oeQc}=Vt12)|AK2(q57Z z)d!ET?kQhMP`>zXqjOVvEEM?e>zq?n_?_C(kFk2MzkbeK%ZYt1 ztc{frJq#R;;2k}Y=6kb;g)(Lj3-YYFKms|cVjPjZuliCOJeZ`fl7gp|@=^Y8bKErj zxf#1GQRn3LE*O}|H+yQxxA2S;Je0M*UIP#Ll6j4xs>{IB>cfLBF}h%9*d0QK&3KGX z$h1)g9HoIrwto(f{+{{o-9kI)E3;>Q1<#eV*-al>8dl#XUTJaM5HX0F6J*dE@-f^p z2c3ehOsqhkZ1vJ^of~$aZ4SH1mFTK%UfRduxg(LV`#)yAhM3{pn)T$q=kQ&n%v$!O zzQduj`qs#|O&h9Hb>w_Ei+!2$^%L`5BMZrLV1;i-v(+_LOJ2UQXINgu>!-5UHBNsZ zz}r?I9UBO)ZwLI%>O;VtoI z5}x_@PTYvSjHt)QL^~KJ6XbY`Q3c$@>5>?gn4fBY%FLjv>$J z81l3S)ynj_qB~_1epw^af1|ITLb<_tR2{#6wZ9Y6(X#<{1yo_Bz z{9}rA&8;%%M(K?-@MM4|#XKm&eFJIcLb{hi^T{PV<-Zul@tD4^3CFe6!O!Z+bQ|yt z^4`|C`g+Zy_V}{UN;`*rSpZju;P*rnSvcy;!a`&L`AD`Q3&(v~ScEJfA7?5HX8uNb z=}x=1>>n5h3|`=`L_7W80KVy;+CIv6&-1Q@}Hss9=3 z-%tGqsDB+iuoxcS1fNB)*So^d9zJb?-#Xy4c z`{p_Bp=!r{w$?H8h36U__sD#{MgKng1hU+ST{sQ6DuBNdc&mVKHvO0b+;f3*9{s5X z{#xLzqhF2mV?O>;KejM8-nDu5+-;n3b^=}fwg0K>?Hc366n7k7ggpljok%%(ammlo z2NRdP5Z$;~I(AZTa#6!-+0&XU$wzoMXPh(;?fnu11RC9Ptk*Tx;NENYeR@v z>%^=69H!X(&&I#qX4X$n5g%3|{weKE1FwAkpTkbw!E+7%k3<(#CSU6Y**fA1XK_Z+rH1yI*|tt;gw0 z8Q)I|n|Z8k`%f0J-!(tJexlZ*P9J}jZARBd(6!5vhZV>goYl|KZ_%ou2(3n2H!=RwfiPvm?#3eYJm$w&95OT=8DEivX0nab&@33= zt#hdkwL{Yl(6n*P>gPHbKRX@wS6z;Kv>RMQAH{#?XhHm^Vjqq#ffnk+I2fMuY+nT9kA$4?n?;npaX8ZH$UzzpBvc98!T-WpdoH|XsSB6;B zLDo(W5|4U_`Sr7*vzcd?_c>#jXVc!ObH0Mu1uJi7Lgypk?^o!QqmAGQnm@LCq2lQ|G4blG>n$IjkMo&e5cq)(n@K+xF;kEx)=zq;`nf|g*i^W&H zF8LoATO;|m@t#MJ)tzTezWqpb*H@41FVT61xxLRv2ClBz84KNhgniM<)7W`re|^o7 z10^*dBnFH91yhf#;|!h>=h%_5uCIQpB>c4U>^OhqKz+?wlfC^^wl4XaY=Y?`l|e^*?>1~hbW#GHRKd7B23sQq3~6*vMs@jdVxF%}anfT= zoP^}RmhVp)BOTz?QDG8Jz8Eq-b2ApgubtEzhfj-+g=bLb8_})f3S?_Ecs<>2;+Y

      3(+I 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 M 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

  • Iqi!`wHT^{dn3l}LnZ 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·-9S11@`to{c#Lxwl;^Is3;Lyh{{3d-vwl-{ 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